[
  {
    "path": ".dockerignore",
    "content": "target\ntest_module/target\nnode_modules\n"
  },
  {
    "path": ".editorconfig",
    "content": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\nindent_size = 2\nindent_style = space\n"
  },
  {
    "path": ".gitattributes",
    "content": "# Auto detect text files and perform LF normalization\n*        text=auto\n\n\n*.ts    text eol=lf merge=union \n*.tsx   text eol=lf merge=union \n*.rs    text eol=lf merge=union \n*.js    text eol=lf merge=union \n*.json  text eol=lf merge=union \n*.debug text eol=lf merge=union \n\n.yarn/releases/*.js linguist-detectable=false\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "github: [napi-rs, Brooooooklyn, forehalo, messense]\nopen_collective: napi-rs\n"
  },
  {
    "path": ".github/publish.js",
    "content": "const { execSync } = require('node:child_process')\n\nconst commitMessage = execSync('git log -1 --pretty=%B', {\n  encoding: 'utf8',\n}).toString()\n\nconst [_, ...body] = commitMessage\n  .trim()\n  .split('\\n')\n  .map((line) => line.trim())\n  .filter(Boolean)\n\nconst packagesToBump = body.map((line) => {\n  const pkgNameVersion = line.split('@')\n  pkgNameVersion.pop()\n  const pkgName = pkgNameVersion.join('@')\n  return pkgName.substring(2)\n})\n\nfor (const pkg of packagesToBump) {\n  execSync(`yarn workspace ${pkg} exec \"npm publish\"`, {\n    stdio: 'inherit',\n    env: process.env,\n  })\n}\n"
  },
  {
    "path": ".github/renovate.json",
    "content": "{\n  \"extends\": [\"config:base\", \":preserveSemverRanges\"],\n  \"ignorePaths\": [\n    \"**/node_modules/**\",\n    \"**/bower_components/**\",\n    \"**/vendor/**\",\n    \"**/__tests__/**\",\n    \"**/test/**\",\n    \"**/__fixtures__/**\"\n  ],\n  \"packageRules\": [\n    {\n      \"automerge\": true,\n      \"matchUpdateTypes\": [\"minor\", \"patch\", \"pin\", \"digest\"]\n    },\n    {\n      \"matchPackageNames\": [\"emnapi\", \"^@emnapi\"],\n      \"rangeStrategy\": \"replace\",\n      \"groupName\": \"napi-rs\"\n    }\n  ],\n  \"postUpdateOptions\": [\"yarnDedupeHighest\"],\n  \"lockFileMaintenance\": {\n    \"enabled\": true,\n    \"extends\": [\"schedule:monthly\"]\n  }\n}\n"
  },
  {
    "path": ".github/workflows/asan.yml",
    "content": "name: Address Sanitizer\n\nenv:\n  DEBUG: 'napi:*'\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n\npermissions: {}\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n\njobs:\n  test:\n    name: ASAN - ${{ matrix.os }}\n    runs-on: ${{ matrix.os }}\n    permissions:\n      contents: read\n    strategy:\n      fail-fast: false\n      matrix:\n        os: [ubuntu-24.04, windows-latest]\n\n    steps:\n      - uses: actions/checkout@v6\n\n      - name: Setup node\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: 'yarn'\n\n      # Linux-specific setup\n      - name: Install Rust (Linux)\n        if: matrix.os == 'ubuntu-24.04'\n        uses: dtolnay/rust-toolchain@stable\n        with:\n          toolchain: nightly\n          components: rust-src\n\n      - name: Install rust-src (Linux)\n        if: matrix.os == 'ubuntu-24.04'\n        run: rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu\n\n      # Windows-specific setup\n      - name: Install Rust (Windows)\n        if: matrix.os == 'windows-latest'\n        uses: dtolnay/rust-toolchain@stable\n        with:\n          toolchain: nightly\n          targets: x86_64-pc-windows-msvc\n          components: rust-src\n\n      - name: Cache cargo\n        uses: actions/cache@v5\n        with:\n          path: |\n            ~/.cargo/registry\n            ~/.cargo/git\n            target\n          key: ${{ matrix.os }}-asan-cargo-cache-${{ hashFiles('**/Cargo.lock') }}\n          restore-keys: |\n            ${{ matrix.os }}-asan-cargo-cache-\n\n      - name: Install dependencies\n        run: yarn install --immutable --mode=skip-build\n\n      # Linux build and test\n      - name: Build and test with ASAN (Linux)\n        if: matrix.os == 'ubuntu-24.04'\n        run: |\n          yarn workspace @examples/napi build -- -Z build-std\n          yarn workspace @examples/compat-mode build -- -Z build-std\n          LD_PRELOAD=/usr/lib/gcc/x86_64-linux-gnu/13/libasan.so yarn test\n        env:\n          RUST_TARGET: x86_64-unknown-linux-gnu\n          RUST_BACKTRACE: 1\n          RUSTFLAGS: -Z sanitizer=address -C link-args=-Wl,-z,nodelete\n          ASAN_OPTIONS: detect_leaks=0\n          NODE_OPTIONS: --max-old-space-size=8192\n          DISABLE_V8_COMPILE_CACHE: 1\n          CARGO_PROFILE_DEV_OPT_LEVEL: 1\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n      # Windows build and test\n      - name: Build with ASAN (Windows)\n        if: matrix.os == 'windows-latest'\n        shell: pwsh\n        run: |\n          # Build the examples with ASAN enabled\n          # Note: -Z build-std flag cannot be passed through napi CLI on Windows\n          # The CARGO_UNSTABLE_BUILD_STD env var provides similar functionality\n          yarn workspace @examples/napi build --target x86_64-pc-windows-msvc\n          yarn workspace @examples/compat-mode build --target x86_64-pc-windows-msvc\n        env:\n          RUSTFLAGS: -Zsanitizer=address\n          RUSTDOCFLAGS: -Zsanitizer=address\n          RUST_BACKTRACE: 1\n          CARGO_PROFILE_DEV_OPT_LEVEL: 1\n          CARGO_UNSTABLE_BUILD_STD: std,panic_abort\n\n      - name: Test with ASAN (Windows)\n        if: matrix.os == 'windows-latest'\n        shell: pwsh\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        run: |\n          # Set ASAN environment variables for Windows\n          $env:ASAN_OPTIONS = \"windows_hook_rtl_allocators=true:detect_leaks=0:print_stats=1:check_initialization_order=true:strict_string_checks=true\"\n          $env:NODE_OPTIONS = \"--max-old-space-size=8192\"\n          $env:DISABLE_V8_COMPILE_CACHE = \"1\"\n          $env:RUST_BACKTRACE = \"full\"\n\n          # Find and set the path to the ASAN runtime DLL\n          $vsPath = & \"${env:ProgramFiles(x86)}\\Microsoft Visual Studio\\Installer\\vswhere.exe\" -latest -property installationPath\n          $asanDllPath = Get-ChildItem -Path \"$vsPath\\VC\\Tools\\MSVC\" -Recurse -Filter \"clang_rt.asan_dynamic-x86_64.dll\" | Select-Object -First 1\n          if ($asanDllPath) {\n            $env:PATH = \"$($asanDllPath.DirectoryName);$env:PATH\"\n            Write-Host \"Found ASAN DLL at: $($asanDllPath.FullName)\"\n          }\n\n          yarn test\n        continue-on-error: true\n\n      - name: Upload ASAN logs (Windows)\n        if: failure() && matrix.os == 'windows-latest'\n        uses: actions/upload-artifact@v7\n        with:\n          name: windows-asan-logs\n          path: |\n            asan.log*\n            *.asan.log\n\n      - name: Clear the cargo caches\n        run: |\n          cargo install cargo-cache --no-default-features --features ci-autoclean\n          cargo-cache\n\n  asan-done:\n    name: Address sanitizer\n    runs-on: ubuntu-latest\n    needs:\n      - test\n    steps:\n      - run: exit 1\n        if: ${{ always() && (contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')) }}\n"
  },
  {
    "path": ".github/workflows/cleanup-cache.yml",
    "content": "name: Cleanup github runner caches on closed pull requests\non:\n  pull_request:\n    types:\n      - closed\n\njobs:\n  cleanup:\n    runs-on: ubuntu-latest\n    permissions:\n      actions: write\n    steps:\n      - name: Cleanup\n        run: |\n          echo \"Fetching list of cache keys\"\n          cacheKeysForPR=$(gh cache list --ref $BRANCH --limit 100 --json id --jq '.[].id')\n\n          ## Setting this to not fail the workflow while deleting cache keys.\n          set +e\n          echo \"Deleting caches...\"\n          for cacheKey in $cacheKeysForPR\n          do\n              gh cache delete $cacheKey\n          done\n          echo \"Done\"\n        env:\n          GH_TOKEN: ${{ github.token }}\n          GH_REPO: ${{ github.repository }}\n          BRANCH: refs/pull/${{ github.event.pull_request.number }}/merge\n"
  },
  {
    "path": ".github/workflows/docker.yaml",
    "content": "name: Docker nightly build\n\non:\n  workflow_dispatch:\n\njobs:\n  build-alpine-image:\n    name: Build alpine image\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v6\n\n      - name: Setup QEMU\n        uses: docker/setup-qemu-action@v4\n\n      - name: Setup Docker Buildx\n        uses: docker/setup-buildx-action@v4\n\n      - name: Login to GitHub Container Registry\n        uses: docker/login-action@v4\n        with:\n          registry: ghcr.io\n          username: ${{ secrets.GH_CONTAINER_UNAME }}\n          password: ${{ secrets.GH_TOKEN }}\n\n      - name: Build and push alpine\n        uses: docker/build-push-action@v7\n        with:\n          file: alpine.Dockerfile\n          platforms: linux/amd64,linux/arm64\n          push: true\n          tags: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine\n\n  build-debian-image:\n    name: Build debian image\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v6\n\n      - name: Setup QEMU\n        uses: docker/setup-qemu-action@v4\n\n      - name: Setup Docker Buildx\n        uses: docker/setup-buildx-action@v4\n\n      - name: Login to GitHub Container Registry\n        uses: docker/login-action@v4\n        with:\n          registry: ghcr.io\n          username: ${{ secrets.GH_CONTAINER_UNAME }}\n          password: ${{ secrets.GH_TOKEN }}\n\n      - name: Build and push debian\n        uses: docker/build-push-action@v7\n        with:\n          file: debian.Dockerfile\n          platforms: linux/amd64,linux/arm64\n          push: true\n          tags: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian\n\n  build-debian-aarch64-image:\n    name: Build debian image\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v6\n\n      - name: Setup QEMU\n        uses: docker/setup-qemu-action@v4\n\n      - name: Setup Docker Buildx\n        uses: docker/setup-buildx-action@v4\n\n      - name: Login to GitHub Container Registry\n        uses: docker/login-action@v4\n        with:\n          registry: ghcr.io\n          username: ${{ secrets.GH_CONTAINER_UNAME }}\n          password: ${{ secrets.GH_TOKEN }}\n\n      - name: Install latest libc++-dev for cross build\n        run: >-\n          docker run --rm\n          --platform linux/arm64 --user 0:0 -e GITHUB_TOKEN\n          -v ${{ github.workspace }}/lib/llvm-18:/usr/lib/llvm-18\n          node:lts-slim\n          sh -c 'apt-get update &&\n          apt-get install -y wget gnupg2 &&\n          wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - &&\n          echo \"deb http://apt.llvm.org/focal/ llvm-toolchain-focal-18 main\" >> /etc/apt/sources.list &&\n          echo \"deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-18 main\" >> /etc/apt/sources.list &&\n          apt-get update &&\n          apt-get install libc++-18-dev libc++abi-18-dev -y --fix-missing --no-install-recommends &&\n          rm /usr/lib/llvm-18/lib/libc++abi.so'\n\n      - name: Build and push debian aarch64 cross\n        uses: docker/build-push-action@v7\n        with:\n          file: debian-aarch64.Dockerfile\n          platforms: linux/amd64,linux/arm64\n          push: true\n          tags: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64\n          context: .\n\n  build-zig-image:\n    name: Build zig image\n    runs-on: ubuntu-latest\n    needs:\n      - build-alpine-image\n      - build-debian-image\n\n    steps:\n      - uses: actions/checkout@v6\n\n      - name: Setup QEMU\n        uses: docker/setup-qemu-action@v4\n\n      - name: Setup Docker Buildx\n        uses: docker/setup-buildx-action@v4\n\n      - name: Login to GitHub Container Registry\n        uses: docker/login-action@v4\n        with:\n          registry: ghcr.io\n          username: ${{ secrets.GH_CONTAINER_UNAME }}\n          password: ${{ secrets.GH_TOKEN }}\n\n      - name: Build and push debian with zig\n        uses: docker/build-push-action@v7\n        with:\n          file: debian-zig.Dockerfile\n          platforms: linux/amd64,linux/arm64\n          push: true\n          tags: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-zig\n\n      - name: Build and push alpine with zig\n        uses: docker/build-push-action@v7\n        with:\n          file: alpine-zig.Dockerfile\n          platforms: linux/amd64,linux/arm64\n          push: true\n          tags: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine-zig\n"
  },
  {
    "path": ".github/workflows/memory-test.yml",
    "content": "name: Memory Leak Detect\n\nenv:\n  DEBUG: 'napi:*'\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n\njobs:\n  build_and_test:\n    name: Memory leak detect job\n    runs-on: ubuntu-latest\n    timeout-minutes: 40\n    continue-on-error: true\n\n    steps:\n      - uses: actions/checkout@v6\n\n      - name: Setup node\n        uses: actions/setup-node@v6\n        with:\n          node-version: 22\n          cache: 'yarn'\n\n      - name: Install stable\n        uses: dtolnay/rust-toolchain@stable\n        with:\n          targets: x86_64-unknown-linux-gnu\n          toolchain: stable\n\n      - name: Cache cargo\n        uses: actions/cache@v5\n        with:\n          path: |\n            ~/.cargo/registry/index/\n            ~/.cargo/registry/cache/\n            ~/.cargo/git/db/\n            .cargo-cache/registry/index/\n            .cargo-cache/registry/cache/\n            .cargo-cache/git/db/\n            target/\n          key: stable-memory-leak-detect-cargo-cache\n\n      - name: 'Install dependencies'\n        run: yarn install --immutable\n\n      - name: 'Pull docker image'\n        run: docker pull node:22-slim\n\n      - name: Build in docker\n        run: yarn build:memory --use-napi-cross\n\n      - name: Memory leak tests\n        run: yarn test:memory\n        env:\n          RUST_BACKTRACE: 1\n\n      - name: Clear the cargo caches\n        run: |\n          cargo install cargo-cache --no-default-features --features ci-autoclean\n          cargo-cache\n"
  },
  {
    "path": ".github/workflows/release-crates.yml",
    "content": "name: Release-plz\n\npermissions:\n  pull-requests: write\n  contents: write\n\non:\n  push:\n    branches:\n      - main\n\njobs:\n  # Release unpublished packages.\n  release-plz-release:\n    name: Release-plz release\n    runs-on: ubuntu-latest\n    if: ${{ github.repository_owner == 'napi-rs' }}\n    permissions:\n      contents: write\n      id-token: write\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v6\n        with:\n          fetch-depth: 0\n      - name: Install Rust toolchain\n        uses: dtolnay/rust-toolchain@stable\n      - uses: rust-lang/crates-io-auth-action@b7e9a28eded4986ec6b1fa40eeee8f8f165559ec # v1.0.3\n        id: auth\n      - name: Run release-plz\n        uses: release-plz/action@1528104d2ca23787631a1c1f022abb64b34c1e11 # v0.5.128\n        with:\n          command: release\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}\n\n  # Create a PR with the new versions and changelog, preparing the next release.\n  release-plz-pr:\n    name: Release-plz PR\n    runs-on: ubuntu-latest\n    if: ${{ github.repository_owner == 'napi-rs' }}\n    permissions:\n      contents: write\n      pull-requests: write\n    concurrency:\n      group: release-plz-${{ github.ref }}\n      cancel-in-progress: false\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v6\n        with:\n          fetch-depth: 0\n      - name: Install Rust toolchain\n        uses: dtolnay/rust-toolchain@stable\n      - name: Run release-plz\n        uses: release-plz/action@1528104d2ca23787631a1c1f022abb64b34c1e11 # v0.5.128\n        with:\n          command: release-pr\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n"
  },
  {
    "path": ".github/workflows/test-release.yaml",
    "content": "name: Test & Release\n\nenv:\n  DEBUG: 'napi:*'\n  RUST_BACKTRACE: 1\n  # https://github.com/nodejs/node/issues/51555#issuecomment-2290742072\n  DISABLE_V8_COMPILE_CACHE: 1\n\npermissions: {}\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n\njobs:\n  lint:\n    name: Lint SourceCode\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v6\n\n      - name: Setup node\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: 'yarn'\n\n      - name: Install\n        uses: dtolnay/rust-toolchain@stable\n        with:\n          toolchain: stable\n          components: rustfmt, clippy\n\n      - name: Cache cargo\n        uses: actions/cache@v5\n        with:\n          path: |\n            ~/.cargo/registry\n            ~/.cargo/git\n          key: lint-cargo-cache\n\n      - name: 'Install dependencies'\n        run: yarn install --immutable --mode=skip-build\n\n      - name: 'Lint JS/TS'\n        run: yarn lint\n\n      - name: Cargo fmt\n        run: cargo fmt -- --check\n\n      - name: Clippy\n        run: cargo clippy\n\n  build_and_test:\n    permissions:\n      contents: read\n    strategy:\n      fail-fast: false\n      matrix:\n        node: ['20', '22', '24']\n        settings:\n          - host: ubuntu-latest\n            target: x86_64-unknown-linux-gnu\n            build: yarn build:test\n            test: |\n              yarn test:cli\n              yarn test\n              yarn workspace @examples/napi test:leak\n              yarn tsc -p examples/napi/tsconfig.json --noEmit --skipLibCheck\n              yarn test:macro\n              cargo test\n            toolchain: stable\n          - host: ubuntu-latest\n            target: x86_64-unknown-linux-gnu\n            build: yarn build:test\n            test: |\n              yarn test:cli\n              yarn test\n              yarn tsc -p examples/napi/tsconfig.json --noEmit --skipLibCheck\n              yarn test:macro\n            toolchain: 1.88.0\n          - host: macos-latest\n            target: aarch64-apple-darwin\n            build: yarn build:test\n            test: |\n              yarn test:cli\n              yarn test\n              yarn workspace @examples/napi test:leak\n              yarn tsc -p examples/napi/tsconfig.json --noEmit --skipLibCheck\n              RUSTFLAGS=\"-C link-args=-Wl,-undefined,dynamic_lookup,-no_fixup_chains\"\n              cargo test\n            toolchain: stable\n          - host: windows-latest\n            target: x86_64-pc-windows-msvc\n            build: yarn workspace @examples/napi build\n            test: |\n              yarn test:cli\n              yarn workspace @examples/napi test\n              yarn workspace @examples/napi test:leak\n              yarn tsc -p examples/napi/tsconfig.json --noEmit --skipLibCheck\n              yarn test:macro\n              cargo test\n            toolchain: stable\n          - host: windows-11-arm\n            target: aarch64-pc-windows-msvc\n            build: yarn build:test\n            test: |\n              yarn test:cli\n              yarn test\n              yarn test:macro\n            toolchain: stable\n          - host: windows-latest\n            target: i686-pc-windows-msvc\n            build: |\n              yarn workspace @examples/napi build --target i686-pc-windows-msvc --release\n              yarn workspace @examples/compat-mode build --target i686-pc-windows-msvc --release\n            test: |\n              export NODE_OPTIONS=\"--max-old-space-size=3072\"\n              yarn workspace @examples/napi test -s\n              node ./node_modules/electron/install.js\n              yarn test:electron\n            toolchain: stable\n        exclude:\n          - settings:\n              toolchain: 1.88.0\n            node: 20\n          - settings:\n              target: i686-pc-windows-msvc\n            node: 20\n          - settings:\n              target: aarch64-pc-windows-msvc\n            node: 20\n    name: ${{ matrix.settings.target }} - node@${{ matrix.node }} - toolchain@ ${{ matrix.settings.toolchain }}\n    runs-on: ${{ matrix.settings.host }}\n\n    steps:\n      - uses: actions/checkout@v6\n\n      - name: Setup node\n        uses: actions/setup-node@v6\n        with:\n          node-version: ${{ matrix.node }}\n          cache: 'yarn'\n\n      - name: Install rustup (Windows 11 ARM)\n        if: matrix.settings.host == 'windows-11-arm'\n        shell: pwsh\n        run: |\n          Invoke-WebRequest -Uri \"https://static.rust-lang.org/rustup/dist/aarch64-pc-windows-msvc/rustup-init.exe\" -OutFile rustup-init.exe\n          .\\rustup-init.exe --default-toolchain none -y\n          \"$env:USERPROFILE\\.cargo\\bin\" | Out-File -Append -Encoding ascii $env:GITHUB_PATH\n          \"CARGO_HOME=$env:USERPROFILE\\.cargo\" | Out-File -Append -Encoding ascii $env:GITHUB_ENV\n\n      - name: Install Rust (Windows 11 ARM)\n        if: matrix.settings.host == 'windows-11-arm'\n        shell: pwsh\n        run: |\n          rustup install stable\n          rustup target add ${{ matrix.settings.target }}\n          cargo --version\n\n      - name: Install\n        uses: dtolnay/rust-toolchain@stable\n        if: matrix.settings.host != 'windows-11-arm'\n        with:\n          toolchain: ${{ matrix.settings.toolchain }}\n          targets: ${{ matrix.settings.target }}\n\n      - name: Cache cargo\n        uses: actions/cache@v5\n        with:\n          path: |\n            ~/.cargo/registry\n            ~/.cargo/git\n            target\n          key: ${{ matrix.settings.host }}-${{ matrix.settings.toolchain }}-${{ matrix.settings.target }}-cargo-cache\n\n      - name: 'Install dependencies'\n        shell: bash\n        run: |\n          yarn config set supportedArchitectures.cpu --json '[\"current\", \"x64\", \"ia32\", \"wasm32\"]'\n          yarn install --mode=skip-build --immutable\n\n      - name: Check build\n        run: cargo check --target ${{ matrix.settings.target }} --all --bins --examples --tests -vvv\n\n      - name: Build tests\n        if: matrix.settings.build\n        run: ${{ matrix.settings.build }}\n        env:\n          CARGO_PROFILE_DEV_OPT_LEVEL: 1\n\n      - name: Setup node\n        uses: actions/setup-node@v6\n        if: matrix.settings.target == 'i686-pc-windows-msvc'\n        with:\n          node-version: 22\n          architecture: 'x86'\n\n      - name: Unit tests\n        if: matrix.settings.test\n        run: ${{ matrix.settings.test }}\n        shell: bash\n        timeout-minutes: 10\n        env:\n          NODE_OPTIONS: '--max-old-space-size=8192'\n          DISABLE_V8_COMPILE_CACHE: 1\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Electron tests\n        if: matrix.settings.target == 'aarch64-apple-darwin' || matrix.settings.target == 'x86_64-pc-windows-msvc'\n        run: |\n          node ./node_modules/electron/install.js\n          yarn test:electron\n\n      - name: Electron tests\n        if: matrix.settings.target == 'x86_64-unknown-linux-gnu'\n        run: |\n          sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0\n          node ./node_modules/electron/install.js\n          xvfb-run --auto-servernum yarn test:electron\n\n      - name: Test build with profile\n        run: yarn workspace @examples/napi build --profile napi-rs-custom\n\n  build-and-test-msys2:\n    strategy:\n      matrix:\n        sys: [MINGW64, UCRT64, CLANG64]\n    runs-on: windows-latest\n\n    steps:\n      - uses: actions/checkout@v6\n\n      - name: Setup MSYS2\n        uses: msys2/setup-msys2@v2\n        with:\n          msystem: ${{ matrix.sys }}\n          update: true\n          install: >-\n            base-devel\n          pacboy: >-\n            rust:p\n            yarn:p\n            ${{ matrix.sys == 'CLANG64' && 'gcc-compat:p' || '' }}\n\n      - name: Cargo test\n        shell: msys2 {0}\n        run: |\n          cargo test\n  # Because dependencies use napi-rs itself they use older versions of napi-rs to install the package, this will fail automatically during build, uncomment when bootstrap issues have been solved\n  #    - name: Install dependencies\n  #      shell: msys2 {0}\n  #      run: |\n  #        yarn install --immutable --mode=skip-build\n  #\n  #    - name: Build tests\n  #      shell: msys2 {0}\n  #      run: yarn build:test\n  #\n  #    - name: Run tests\n  #      shell: msys2 {0}\n  #      run: |\n  #        yarn test:cli\n  #        yarn test\n  #        yarn tsc -p examples/napi/tsconfig.json --noEmit --skipLibCheck\n  #        yarn test:macro\n\n  build_only:\n    name: Build only test - ${{ matrix.settings.target }}\n    runs-on: ${{ matrix.settings.host }}\n    strategy:\n      fail-fast: false\n      matrix:\n        settings:\n          - host: ubuntu-latest\n            target: aarch64-linux-android\n          - host: ubuntu-latest\n            target: armv7-linux-androideabi\n          - host: ubuntu-24.04\n            target: aarch64-unknown-linux-ohos\n          - host: ubuntu-latest\n            target: riscv64gc-unknown-linux-gnu\n            setup: |\n              sudo apt-get update\n              sudo apt-get install -y gcc-riscv64-linux-gnu\n          - host: ubuntu-latest\n            target: loongarch64-unknown-linux-gnu\n            # TODO: Switch to gcc-loongarch64-linux when available\n            setup: |\n              sudo apt-get update\n              sudo apt-get install -y gcc-13-loongarch64-linux-gnu\n\n    steps:\n      - uses: actions/checkout@v6\n\n      - name: Setup node\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: 'yarn'\n\n      - name: Setup OpenHarmony SDK\n        if: ${{ contains(matrix.settings.target, 'ohos') }}\n        uses: openharmony-rs/setup-ohos-sdk@v0.2\n\n      - name: Install\n        uses: dtolnay/rust-toolchain@stable\n        with:\n          toolchain: stable\n          targets: ${{ matrix.settings.target }}\n\n      - name: Cache cargo\n        uses: actions/cache@v5\n        with:\n          path: |\n            ~/.cargo/registry\n            ~/.cargo/git\n            target\n          key: stable-${{ matrix.settings.host }}-${{ matrix.settings.target }}-cargo-cache\n\n      - name: Setup toolchain\n        if: matrix.settings.setup\n        run: ${{ matrix.settings.setup }}\n\n      - name: Install dependencies\n        run: yarn install --immutable --mode=skip-build\n\n      - name: Cross build native tests\n        run: yarn build:test -- --target ${{ matrix.settings.target }} --release\n        shell: bash\n        env:\n          TARGET_CC: clang\n\n  build_for_test_in_docker:\n    name: build - ${{ matrix.settings.target }}\n    runs-on: ubuntu-latest\n    strategy:\n      fail-fast: false\n      matrix:\n        settings:\n          - target: powerpc64le-unknown-linux-gnu\n          - target: s390x-unknown-linux-gnu\n          - target: x86_64-unknown-linux-gnu\n          - target: aarch64-unknown-linux-gnu\n\n    steps:\n      - uses: actions/checkout@v6\n\n      - name: Setup node\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: 'yarn'\n\n      - name: Install\n        uses: dtolnay/rust-toolchain@stable\n        with:\n          toolchain: stable\n          targets: ${{ matrix.settings.target }}\n\n      - name: Cache cargo\n        uses: actions/cache@v5\n        with:\n          path: |\n            ~/.cargo/registry\n            ~/.cargo/git\n            target\n            ~/.napi-rs\n          key: stable-ubuntu-latest-${{ matrix.settings.target }}-cargo-cache\n\n      - name: Install dependencies\n        run: yarn install --immutable --mode=skip-build\n\n      - name: Cross build native tests\n        run: yarn build:test -- --target ${{ matrix.settings.target }} --release --use-napi-cross\n        shell: bash\n        env:\n          CARGO_PROFILE_DEV_OPT_LEVEL: 1\n          TARGET_CC: clang\n\n      - uses: actions/upload-artifact@v7\n        with:\n          name: ${{ matrix.settings.target }}-example\n          path: examples/napi/*.node\n      - uses: actions/upload-artifact@v7\n        with:\n          name: ${{ matrix.settings.target }}-example-compat\n          path: examples/napi-compat-mode/index.node\n\n  build_musl:\n    name: build - ${{ matrix.settings.target }}\n    runs-on: ubuntu-latest\n    strategy:\n      fail-fast: false\n      matrix:\n        settings:\n          - target: x86_64-unknown-linux-musl\n          - target: aarch64-unknown-linux-musl\n\n    steps:\n      - uses: actions/checkout@v6\n\n      - name: Setup node\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: 'yarn'\n\n      - name: Install\n        uses: dtolnay/rust-toolchain@stable\n        with:\n          targets: ${{ matrix.settings.target }}\n\n      - name: Install dependencies\n        run: yarn install --immutable --mode=skip-build\n\n      - name: Install ziglang\n        uses: mlugg/setup-zig@v2\n        with:\n          version: 0.15.2\n\n      - name: Install cargo-zigbuild\n        uses: taiki-e/install-action@v2\n        env:\n          GITHUB_TOKEN: ${{ github.token }}\n        with:\n          tool: cargo-zigbuild\n\n      - name: Cache cargo\n        uses: actions/cache@v5\n        with:\n          path: |\n            .cargo-cache/registry\n            .cargo-cache/git\n            target\n          key: stable-${{ matrix.settings.target }}-cargo-cache\n\n      - name: Cross build musl\n        run: yarn build:test -- --target ${{ matrix.settings.target }} -x\n\n      - uses: actions/upload-artifact@v7\n        with:\n          name: ${{ matrix.settings.target }}-example\n          path: examples/napi/*.node\n          if-no-files-found: error\n      - uses: actions/upload-artifact@v7\n        with:\n          name: ${{ matrix.settings.target }}-example-compat\n          path: examples/napi-compat-mode/index.node\n          if-no-files-found: error\n\n  test_in_docker:\n    name: Test - ${{ matrix.settings.target }} - ${{ matrix.node }}\n    # Node.js on qemu segfaults on s390x and arm64v8 when using 24.04\n    # See also https://github.com/actions/runner-images/issues/11471\n    runs-on: ${{ contains(matrix.settings.target, 'aarch64') && 'ubuntu-24.04-arm' || 'ubuntu-22.04' }}\n    permissions:\n      contents: read\n    needs:\n      - build_musl\n      - build_for_test_in_docker\n    strategy:\n      fail-fast: false\n      matrix:\n        node: [20, 22]\n        settings:\n          - image: 'node:{:version}-slim'\n            target: x86_64-unknown-linux-gnu\n            args: ''\n            arch: 'x64'\n            libc: 'gnu'\n          - image: 'node:{:version}-slim'\n            target: aarch64-unknown-linux-gnu\n            args: '--platform linux/arm64'\n            arch: 'arm64'\n            libc: 'gnu'\n          - image: 'node:{:version}-slim'\n            target: powerpc64le-unknown-linux-gnu\n            args: '--platform linux/ppc64le'\n            arch: 'ppc64'\n            libc: 'gnu'\n          - image: 'node:{:version}-slim'\n            target: s390x-unknown-linux-gnu\n            args: '--platform linux/s390x'\n            arch: 's390x'\n            libc: 'gnu'\n          - image: 'node:{:version}-alpine'\n            target: x86_64-unknown-linux-musl\n            args: ''\n            arch: 'x64'\n            libc: 'musl'\n          - image: 'node:{:version}-alpine'\n            target: aarch64-unknown-linux-musl\n            args: '--platform linux/arm64'\n            arch: 'arm64'\n            libc: 'musl'\n    steps:\n      - uses: actions/checkout@v6\n\n      - name: Setup node\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: 'yarn'\n      - uses: actions/download-artifact@v8\n        with:\n          name: ${{ matrix.settings.target }}-example\n          path: examples/napi/\n      - uses: actions/download-artifact@v8\n        with:\n          name: ${{ matrix.settings.target }}-example-compat\n          path: examples/napi-compat-mode/index.node\n      - name: Install dependencies\n        if: ${{ matrix.settings.arch != 's390x' }}\n        run: |\n          yarn config set --json supportedArchitectures.cpu '[\"current\", \"${{ matrix.settings.arch }}\"]'\n          yarn config set --json supportedArchitectures.libc '[\"current\", \"${{ matrix.settings.libc }}\"]'\n          yarn install --immutable --mode=skip-build\n      - name: Install dependencies\n        if: ${{ matrix.settings.arch == 's390x' }}\n        run: |\n          yarn config set --json supportedArchitectures.cpu '[\"current\", \"wasm32\"]'\n          yarn install --immutable --mode=skip-build\n          yarn workspace @napi-rs/wasm-runtime build\n      - name: Set up QEMU\n        uses: docker/setup-qemu-action@v4\n        if: ${{ !contains(matrix.settings.target, 'aarch64') }}\n        with:\n          platforms: all\n          image: tonistiigi/binfmt:qemu-v8.1.5\n      - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes\n        if: ${{ !contains(matrix.settings.target, 'aarch64') }}\n      - name: Setup image name\n        id: image-name\n        run: |\n          node -e \"console.info('docker-image=${{ matrix.settings.image }}'.replace('{:version}', ${{ matrix.node }}))\" >> \"$GITHUB_OUTPUT\"\n      - name: Setup and run tests\n        # Node.js on qemu randomly segfaults on powerpc64le\n        continue-on-error: ${{ matrix.settings.target == 'powerpc64le-unknown-linux-gnu' || matrix.settings.target == 's390x-unknown-linux-gnu' }}\n        run: >-\n          docker run --rm\n          ${{ matrix.settings.args }}\n          -v ${{ github.workspace }}:/build -w /build\n          ${{ steps.image-name.outputs.docker-image }}\n          sh -c \"export NODE_OPTIONS=--max-old-space-size=8192 && export DISABLE_V8_COMPILE_CACHE=1 && yarn workspace @examples/napi test\"\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n  build-and-test-linux-armv7:\n    name: stable - armv7-unknown-linux-gnueabihf - node@22\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v6\n\n      - name: Setup node\n        uses: actions/setup-node@v6\n        with:\n          node-version: 22\n          cache: 'yarn'\n\n      - name: Install\n        uses: dtolnay/rust-toolchain@stable\n        with:\n          toolchain: stable\n          targets: armv7-unknown-linux-gnueabihf\n\n      - name: Cache cargo\n        uses: actions/cache@v5\n        with:\n          path: |\n            ~/.cargo/registry\n            ~/.cargo/git\n            target\n          key: stable-linux-armv7-gnueabihf-node@22-cargo-cache\n\n      - name: Install dependencies\n        run: |\n          yarn config set --json supportedArchitectures.cpu '[\"arm\", \"current\"]'\n          yarn install --immutable --mode=skip-build\n\n      - name: Cross build native tests\n        run: yarn build:test -- --target armv7-unknown-linux-gnueabihf --use-napi-cross\n        env:\n          TARGET_CC: clang\n\n      - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes\n\n      - name: Setup and run tests\n        run: >-\n          docker run --rm\n          --platform linux/arm/v7\n          -v ${{ github.workspace }}:/build -w /build\n          node:22-slim\n          sh -c \"yarn test\"\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n  build_binary_crate:\n    runs-on: ubuntu-latest\n    name: Test cli build binary\n    steps:\n      - uses: actions/checkout@v6\n\n      - name: Setup node\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: 'yarn'\n\n      - name: Install\n        uses: dtolnay/rust-toolchain@stable\n        with:\n          toolchain: stable\n\n      - name: Cache cargo\n        uses: actions/cache@v5\n        with:\n          path: |\n            ~/.cargo/registry\n            ~/.cargo/git\n            target\n          key: stable-cargo-cache-build-binary\n\n      - name: 'Install dependencies'\n        run: yarn install --mode=skip-build --immutable\n\n      - name: Build and run binary\n        run: |\n          yarn workspace binary build\n          ./examples/binary/napi-examples-binary\n          yarn workspace binary build --profile napi-rs-custom\n\n  check-all-features:\n    strategy:\n      fail-fast: false\n      matrix:\n        settings:\n          - features: 'napi1,napi2,napi3,napi4,napi5,napi6,napi7,napi8,napi9,experimental,async,chrono_date,latin1,full'\n            package: 'napi'\n          - features: 'napi3'\n            package: 'napi'\n          - features: 'napi3,compat-mode'\n            package: 'napi'\n          - features: 'napi9'\n            package: 'napi'\n          - features: 'napi3,serde-json'\n            package: 'napi'\n          - features: 'napi9,serde-json'\n            package: 'napi'\n          - features: 'async,compat-mode'\n            package: 'napi'\n          - features: 'compat-mode,strict,type-def,noop,full,default'\n            package: 'napi-derive'\n          - features: 'noop'\n            package: 'napi-examples'\n          - features: 'snmalloc'\n            package: 'napi-examples'\n    name: stable - ubuntu-latest\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v6\n\n      - name: Install\n        uses: dtolnay/rust-toolchain@stable\n        with:\n          toolchain: stable\n\n      - name: Check build\n        run: cargo check -p ${{ matrix.settings.package }} -F ${{ matrix.settings.features }}\n\n  test-freebsd:\n    runs-on: ubuntu-latest\n    name: Test freebsd target\n    permissions:\n      contents: read\n    steps:\n      - uses: actions/checkout@v6\n      - name: Install ziglang\n        uses: mlugg/setup-zig@v2\n        with:\n          version: 0.15.2\n      - uses: jaxxstorm/action-install-gh-release@v1\n        with:\n          repo: rust-cross/cargo-zigbuild\n      - name: Setup node\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: 'yarn'\n\n      - name: Install\n        uses: dtolnay/rust-toolchain@stable\n        with:\n          toolchain: stable\n          targets: x86_64-unknown-freebsd\n\n      - name: Cache cargo\n        uses: actions/cache@v5\n        with:\n          path: |\n            ~/.cargo/registry\n            ~/.cargo/git\n            target\n          key: stable-cargo-cache-build-freebsd\n\n      - name: 'Install dependencies'\n        run: |\n          yarn config set supportedArchitectures.cpu --json '[\"current\", \"x64\", \"arm64\", \"wasm32\"]'\n          yarn config set supportedArchitectures.os --json '[\"current\", \"freebsd\"]'\n          yarn install --mode=skip-build --immutable\n      - name: Build\n        run: |\n          yarn workspace @examples/napi build --target x86_64-unknown-freebsd -x\n          yarn tsc -p examples/napi/tsconfig.json\n          rm -rf examples/napi/__tests__\n          mv examples/napi/dist/__tests__ examples/napi/\n      - name: Test\n        id: build\n        uses: cross-platform-actions/action@v0.32.0\n        env:\n          DEBUG: 'napi:*'\n          RUSTUP_HOME: /home/runner/rustup\n          CARGO_HOME: /home/runner/cargo\n          RUSTUP_IO_THREADS: 1\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        with:\n          operating_system: freebsd\n          version: '15.0'\n          memory: 12G\n          cpu_count: 3\n          environment_variables: 'DEBUG RUSTUP_IO_THREADS GITHUB_TOKEN'\n          shell: bash\n          run: |\n            env | sort\n            sudo pkg install -y -f curl node libnghttp2 npm\n            sudo npm install -g corepack\n            sudo corepack enable\n            echo \"~~~~ node -v ~~~~\"\n            node -v\n            echo \"~~~~ yarn --version ~~~~\"\n            yarn --version\n            pwd\n            ls -lah\n            whoami\n            env\n            freebsd-version\n            export NODE_OPTIONS=\"--max-old-space-size=8192\"\n            yarn workspace @examples/napi test-js -s\n\n  test-node-wasi:\n    runs-on: ubuntu-latest\n    name: Test node wasi target\n    timeout-minutes: 10\n    steps:\n      - uses: actions/checkout@v6\n      - name: Setup node\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: 'yarn'\n          cache-dependency-path: 'yarn.lock'\n      - name: Install\n        uses: dtolnay/rust-toolchain@stable\n        with:\n          toolchain: stable\n          targets: wasm32-wasip1-threads\n      - name: Install dependencies\n        run: yarn install --immutable --mode=skip-build\n      - name: Check\n        run: cargo check -p napi --all-features --target wasm32-wasip1-threads\n        env:\n          RUSTFLAGS: '--cfg tokio_unstable'\n      - name: Build\n        run: |\n          yarn build\n          yarn workspace @examples/napi build --target wasm32-wasip1-threads --profile wasi\n        env:\n          RUSTFLAGS: '--cfg tokio_unstable'\n      - name: Test\n        run: yarn workspace @examples/napi test -s\n        env:\n          WASI_TEST: 'true'\n          NODE_OPTIONS: '--max-old-space-size=8192'\n          SKIP_UNWIND_TEST: 1\n      - name: Browser test\n        run: |\n          yarn workspace @examples/napi playwright install chromium\n          yarn workspace @examples/napi vitest\n\n  test-latest-bun:\n    runs-on: ubuntu-latest\n    name: Test latest bun\n    timeout-minutes: 10\n    permissions:\n      contents: read\n    steps:\n      - uses: actions/checkout@v6\n      - uses: oven-sh/setup-bun@v2\n        with:\n          bun-version: latest\n      - name: Setup node\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: 'yarn'\n      - name: Install\n        uses: dtolnay/rust-toolchain@stable\n        with:\n          toolchain: stable\n          targets: x86_64-unknown-linux-gnu\n      - name: Cache cargo\n        uses: actions/cache@v5\n        with:\n          path: |\n            ~/.cargo/registry\n            ~/.cargo/git\n            target\n          key: stable-x86_64-unknown-linux-gnu-node@18-cargo-cache\n      - name: Install dependencies\n        run: yarn install --immutable --mode=skip-build\n      - name: Build\n        run: |\n          bun run build\n          yarn workspace @examples/napi build --features dyn-symbols\n      - name: Test\n        continue-on-error: true\n        run: bun run test:bun\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n  release-npm:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: write\n      id-token: write\n    needs:\n      - lint\n      - build_binary_crate\n    if: \"startsWith(github.event.head_commit.message, 'chore(release): publish')\"\n    steps:\n      - uses: actions/checkout@v6\n      - uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: 'yarn'\n      - name: Publish\n        run: |\n          yarn install --mode=skip-build\n          npm install -g npm\n          yarn build\n          node ./.github/publish.js\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n  done:\n    runs-on: ubuntu-latest\n    needs:\n      - lint\n      - build_and_test\n      - build-and-test-msys2\n      - build_only\n      - test_in_docker\n      - build-and-test-linux-armv7\n      - build_binary_crate\n      - check-all-features\n      - test-freebsd\n      - test-node-wasi\n      - test-latest-bun\n    steps:\n      - run: exit 1\n        if: ${{ always() && (contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')) }}\n"
  },
  {
    "path": ".github/workflows/zig.yaml",
    "content": "name: Zig-Cross-Compile\n\nenv:\n  DEBUG: 'napi:*'\n  TEST_ZIG_CROSS: '1'\n\npermissions: {}\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n\njobs:\n  build:\n    name: Zig-Cross-Compile-On-Linux\n    runs-on: ubuntu-latest\n    strategy:\n      fail-fast: false\n      matrix:\n        target:\n          [\n            'aarch64-apple-darwin',\n            'x86_64-unknown-linux-musl',\n            'aarch64-unknown-linux-musl',\n            'armv7-unknown-linux-musleabihf',\n          ]\n\n    steps:\n      - uses: actions/checkout@v6\n      - name: Setup node\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: 'yarn'\n      - name: Install\n        uses: dtolnay/rust-toolchain@stable\n        with:\n          toolchain: stable\n          targets: ${{ matrix.target }}\n      - name: Install cargo-zigbuild\n        uses: taiki-e/install-action@v2\n        env:\n          GITHUB_TOKEN: ${{ github.token }}\n        with:\n          tool: cargo-zigbuild\n      - name: Cache cargo\n        uses: actions/cache@v5\n        with:\n          path: |\n            ~/.cargo/registry\n            ~/.cargo/git\n            target\n          key: stable-zig-${{ matrix.target }}-cargo-cache\n      - name: Install ziglang\n        uses: mlugg/setup-zig@v2\n        with:\n          version: 0.13.0\n      - name: Install cargo-zigbuild\n        uses: taiki-e/install-action@v2\n        with:\n          tool: cargo-zigbuild\n        env:\n          GITHUB_TOKEN: ${{ github.token }}\n      - name: Install dependencies\n        run: yarn install --immutable --mode=skip-build\n      - name: install MacOS SDK\n        if: contains(matrix.target, 'apple')\n        run: |\n          curl -L \"https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX11.3.sdk.tar.xz\" | tar -J -x -C /opt\n      - name: Cross build native tests\n        env:\n          SDKROOT: /opt/MacOSX11.3.sdk\n        run: |\n          yarn build:test -- --target ${{ matrix.target }} --cross-compile\n      - name: Upload artifacts\n        uses: actions/upload-artifact@v7\n        with:\n          name: compat-${{ matrix.target }}\n          path: ./examples/napi-compat-mode/index.node\n          if-no-files-found: error\n      - name: Upload artifacts\n        uses: actions/upload-artifact@v7\n        with:\n          name: napi-${{ matrix.target }}\n          path: ./examples/napi/*.node\n          if-no-files-found: error\n\n  test:\n    name: Test Zig Cross Compiled ${{ matrix.settings.target }}\n    runs-on: ${{ matrix.settings.host }}\n    permissions:\n      contents: read\n    needs:\n      - build\n    strategy:\n      fail-fast: false\n      matrix:\n        settings:\n          - host: ubuntu-latest\n            target: x86_64-unknown-linux-musl\n          - host: macos-latest\n            target: aarch64-apple-darwin\n          - host: ubuntu-24.04-arm\n            target: aarch64-unknown-linux-musl\n            docker-platform: arm64\n          - host: ubuntu-latest\n            target: armv7-unknown-linux-musleabihf\n            docker-platform: arm/v7\n\n    steps:\n      - uses: actions/checkout@v6\n      - name: Setup node\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: 'yarn'\n      - name: Install dependencies\n        run: |\n          yarn config set --json supportedArchitectures.libc '[\"current\", \"musl\"]'\n          yarn config set --json supportedArchitectures.cpu '[\"current\", \"arm64\", \"arm\", \"wasm32\"]'\n          yarn install --immutable --mode=skip-build\n      - name: Download artifacts\n        uses: actions/download-artifact@v8\n        with:\n          name: napi-${{ matrix.settings.target }}\n          path: ./examples/napi/\n      - name: Download artifacts\n        uses: actions/download-artifact@v8\n        with:\n          name: compat-${{ matrix.settings.target }}\n          path: ./examples/napi-compat-mode/\n      - name: List files\n        run: |\n          ls ./examples/napi\n          ls ./examples/napi-compat-mode\n      - name: Test\n        run: |\n          yarn workspace @examples/napi test -s --verbose\n          yarn workspace @examples/compat-mode test -s --verbose\n        env:\n          SKIP_UNWIND_TEST: 1\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        if: matrix.settings.host == 'macos-latest'\n      - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes\n        if: matrix.settings.host == 'ubuntu-latest'\n      - name: Test\n        if: matrix.settings.host == 'ubuntu-latest' && matrix.settings.target != 'x86_64-unknown-linux-musl' && matrix.settings.target != 'armv7-unknown-linux-musleabihf'\n        run: >-\n          docker run --rm\n          --platform linux/${{ matrix.settings.docker-platform }}\n          -v ${{ github.workspace }}:/build -w /build\n          node:lts-alpine\n          sh -c \"set -e && yarn test\"\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n      - name: Test\n        if: matrix.settings.target == 'armv7-unknown-linux-musleabihf'\n        # Docker issues\n        continue-on-error: true\n        # https://github.com/nodejs/docker-node/issues/1798\n        run: >-\n          docker run --rm\n          --platform linux/${{ matrix.settings.docker-platform }}\n          -v ${{ github.workspace }}:/build -w /build\n          node:18-alpine\n          sh -c \"set -e &&\n          export NODE_OPTIONS='--max-old-space-size=8192' &&\n          yarn tsc -p examples/napi/tsconfig.json &&\n          rm -rf examples/napi/__tests__ &&\n          mv examples/napi/dist/__tests__ examples/napi/ &&\n          yarn workspace @examples/napi test -s --verbose\"\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n      - name: Test\n        if: matrix.settings.target == 'x86_64-unknown-linux-musl'\n        run: >-\n          docker run --rm\n          -v ${{ github.workspace }}:/napi-rs -w /napi-rs\n          node:lts-alpine\n          sh -c \"yarn test\"\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n  zig-done:\n    runs-on: ubuntu-latest\n    needs:\n      - test\n    steps:\n      - run: exit 1\n        if: ${{ always() && (contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')) }}\n"
  },
  {
    "path": ".gitignore",
    "content": ".idea/\ntarget/\n*.log\n.DS_Store\nCargo.lock\nnode_modules\n*.node\nbuild/LICENSE\nnapi/LICENSE\nnapi-derive/LICENSE\nsys/LICENSE\n\n# Created by https://www.gitignore.io/api/node\n# Edit at https://www.gitignore.io/?templates=node\n\n### Node ###\n# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\nlerna-debug.log*\n\n# Diagnostic reports (https://nodejs.org/api/report.html)\nreport.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n*.lcov\n\n# nyc test coverage\n.nyc_output\n\n# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Bower dependency directory (https://bower.io/)\nbower_components\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (https://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directories\nnode_modules/\njspm_packages/\n\n# TypeScript v1 declaration files\ntypings/\n\n# TypeScript cache\n*.tsbuildinfo\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n*.tgz\n\n# Yarn Integrity file\n.yarn-integrity\n\n# dotenv environment variables file\n.env\n.env.test\n\n# parcel-bundler cache (https://parceljs.org/)\n.cache\n\n# next.js build output\n.next\n\n# nuxt.js build output\n.nuxt\n\n# rollup.js default build output\ndist/\n\n# Uncomment the public line if your project uses Gatsby\n# https://nextjs.org/blog/next-9-1#public-directory-support\n# https://create-react-app.dev/docs/using-the-public-folder/#docsNav\n# public\n\n# Storybook build outputs\n.out\n.storybook-out\n\n# vuepress build output\n.vuepress/dist\n\n# Serverless directories\n.serverless/\n\n# FuseBox cache\n.fusebox/\n\n# DynamoDB Local files\n.dynamodb/\n\n# Temporary folders\ntmp/\ntemp/\ncli/src/api/__tests__/tmp/\n\n# End of https://www.gitignore.io/api/node\n\n# Created by https://www.gitignore.io/api/macos\n# Edit at https://www.gitignore.io/?templates=macos\n\n### macOS ###\n# General\n.DS_Store\n.AppleDouble\n.LSOverride\n\n# Icon must end with two \\r\nIcon\n\n# Thumbnails\n._*\n\n# Files that might appear in the root of a volume\n.DocumentRevisions-V100\n.fseventsd\n.Spotlight-V100\n.TemporaryItems\n.Trashes\n.VolumeIcon.icns\n.com.apple.timemachine.donotpresent\n\n# Directories potentially created on remote AFP share\n.AppleDB\n.AppleDesktop\nNetwork Trash Folder\nTemporary Items\n.apdisk\n\n# End of https://www.gitignore.io/api/macos\nscripts\nlib\n\nsys/.node-headers\nbench.txt\n.pnp.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/sdks\n!.yarn/versions\n.vscode/\n.claude/"
  },
  {
    "path": ".husky/.gitignore",
    "content": "_\n"
  },
  {
    "path": ".husky/pre-commit",
    "content": "yarn lint-staged && cargo fmt --all\n"
  },
  {
    "path": ".npmignore",
    "content": "target\nbuild\nsys\nnapi\nnapi-derive\nnapi-derive-example\ntest_module\n.yarnrc\nCargo.lock\nrustfmt.toml\n.github\n.dockerignore\n.eslintignore\n.eslintrc.yml\nCargo.toml\nalpine.Dockerfile\narm64v8.Dockerfile\nyarn.lock\n"
  },
  {
    "path": ".oxlintignore",
    "content": ".yarn\ndist\ntarget\nbench/**/*.ts\n"
  },
  {
    "path": ".prettierignore",
    "content": "target\nnode_modules\nscripts\ntriples/index.js\nexamples/napi/index.d.ts\n.yarn\nyarn.lock\nexamples/napi/wasi-worker.mjs\nexamples/napi/example.wasi.cjs\nexamples/napi/example.wasi-browser.js\n"
  },
  {
    "path": ".yarn/patches/buffer-npm-6.0.3-cd90dfedfe.patch",
    "content": "diff --git a/index.js b/index.js\nindex 7a0e9c2a123bc9d26c20bb3de4a3c4e49b24ee40..b1a53729c2900ddfca88a0f312a785c51a5aac80 100644\n--- a/index.js\n+++ b/index.js\n@@ -8,19 +8,17 @@\n \n 'use strict'\n \n-const base64 = require('base64-js')\n-const ieee754 = require('ieee754')\n+import * as base64 from 'base64-js'\n+import * as ieee754 from 'ieee754'\n const customInspectSymbol =\n   (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n     ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n     : null\n \n-exports.Buffer = Buffer\n-exports.SlowBuffer = SlowBuffer\n-exports.INSPECT_MAX_BYTES = 50\n+const INSPECT_MAX_BYTES = 50\n \n const K_MAX_LENGTH = 0x7fffffff\n-exports.kMaxLength = K_MAX_LENGTH\n+const kMaxLength = K_MAX_LENGTH\n \n /**\n  * If `Buffer.TYPED_ARRAY_SUPPORT`:\n@@ -616,7 +614,7 @@ Buffer.prototype.equals = function equals (b) {\n \n Buffer.prototype.inspect = function inspect () {\n   let str = ''\n-  const max = exports.INSPECT_MAX_BYTES\n+  const max = INSPECT_MAX_BYTES\n   str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n   if (this.length > max) str += ' ... '\n   return '<Buffer ' + str + '>'\n@@ -2104,3 +2102,10 @@ function defineBigIntMethod (fn) {\n function BufferBigIntNotDefined () {\n   throw new Error('BigInt not supported')\n }\n+\n+export {\n+  Buffer,\n+  SlowBuffer,\n+  INSPECT_MAX_BYTES,\n+  kMaxLength,\n+}\n\\ No newline at end of file\n"
  },
  {
    "path": ".yarn/patches/node-inspect-extracted-npm-3.0.0-f661b6c334.patch",
    "content": "diff --git a/dist/inspect.js b/dist/inspect.js\nindex 8a323f4df754c11beffd03bb63c5d24c0ea43724..da0515280b09ea8d7bcd2c3aeb5f1a48649be80a 100644\n--- a/dist/inspect.js\n+++ b/dist/inspect.js\n@@ -1 +1,3831 @@\n-!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.util=e():t.util=e()}(this,(()=>(()=>{\"use strict\";var t={165:(t,e)=>{function r(t){return r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},r(t)}function n(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,(void 0,i=function(t,e){if(\"object\"!==r(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,\"string\");if(\"object\"!==r(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(t)}(o.key),\"symbol\"===r(i)?i:String(i)),o)}var i}var o=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t)}var e,r;return e=t,r=[{key:\"hexSlice\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1?arguments[1]:void 0;return Array.prototype.map.call(this.slice(t,e),(function(t){return(\"00\"+t.toString(16)).slice(-2)})).join(\"\")}}],r&&n(e.prototype,r),Object.defineProperty(e,\"prototype\",{writable:!1}),t}();e.l=o},777:(t,e,r)=>{function n(t){return n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},n(t)}function o(t,e){var r=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if(\"string\"==typeof t)return i(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===r&&t.constructor&&(r=t.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(t):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}(t))||e&&t&&\"number\"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,c=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){l=!0,a=t},f:function(){try{c||null==r.return||r.return()}finally{if(l)throw a}}}}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function a(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function c(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?a(Object(r),!0).forEach((function(e){l(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function l(t,e,r){return(e=function(t){var e=function(t,e){if(\"object\"!==n(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var o=r.call(t,\"string\");if(\"object\"!==n(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(t)}(t);return\"symbol\"===n(e)?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var u,p,f=r(541),y=f.internalBinding,s=f.Array,g=f.ArrayIsArray,d=f.ArrayPrototypeFilter,b=f.ArrayPrototypeForEach,h=f.ArrayPrototypeIncludes,v=f.ArrayPrototypeIndexOf,m=f.ArrayPrototypeJoin,S=f.ArrayPrototypeMap,P=f.ArrayPrototypePop,x=f.ArrayPrototypePush,O=f.ArrayPrototypePushApply,A=f.ArrayPrototypeSlice,w=f.ArrayPrototypeSplice,j=f.ArrayPrototypeSort,E=f.ArrayPrototypeUnshift,_=f.BigIntPrototypeValueOf,F=f.BooleanPrototypeValueOf,L=f.DatePrototypeGetTime,R=f.DatePrototypeToISOString,T=f.DatePrototypeToString,I=f.ErrorPrototypeToString,k=f.FunctionPrototypeBind,z=f.FunctionPrototypeCall,M=f.FunctionPrototypeToString,B=f.JSONStringify,N=f.MapPrototypeGetSize,D=f.MapPrototypeEntries,C=f.MathFloor,H=f.MathMax,G=f.MathMin,W=f.MathRound,U=f.MathSqrt,V=f.MathTrunc,$=f.Number,Z=f.NumberIsFinite,q=f.NumberIsNaN,K=f.NumberParseFloat,Y=f.NumberParseInt,J=f.NumberPrototypeToString,Q=f.NumberPrototypeValueOf,X=f.Object,tt=f.ObjectAssign,et=f.ObjectDefineProperty,rt=f.ObjectGetOwnPropertyDescriptor,nt=f.ObjectGetOwnPropertyNames,ot=f.ObjectGetOwnPropertySymbols,it=f.ObjectGetPrototypeOf,at=f.ObjectIs,ct=f.ObjectKeys,lt=f.ObjectPrototypeHasOwnProperty,ut=f.ObjectPrototypePropertyIsEnumerable,pt=f.ObjectSeal,ft=f.ObjectSetPrototypeOf,yt=f.ReflectApply,st=f.ReflectOwnKeys,gt=f.RegExp,dt=f.RegExpPrototypeExec,bt=f.RegExpPrototypeSymbolReplace,ht=f.RegExpPrototypeSymbolSplit,vt=f.RegExpPrototypeToString,mt=f.SafeStringIterator,St=f.SafeMap,Pt=f.SafeSet,xt=f.SetPrototypeGetSize,Ot=f.SetPrototypeValues,At=f.String,wt=f.StringPrototypeCharCodeAt,jt=f.StringPrototypeCodePointAt,Et=f.StringPrototypeIncludes,_t=f.StringPrototypeIndexOf,Ft=f.StringPrototypeLastIndexOf,Lt=f.StringPrototypeNormalize,Rt=f.StringPrototypePadEnd,Tt=f.StringPrototypePadStart,It=f.StringPrototypeRepeat,kt=f.StringPrototypeReplaceAll,zt=f.StringPrototypeSlice,Mt=f.StringPrototypeSplit,Bt=f.StringPrototypeEndsWith,Nt=f.StringPrototypeStartsWith,Dt=f.StringPrototypeToLowerCase,Ct=f.StringPrototypeTrim,Ht=f.StringPrototypeValueOf,Gt=f.SymbolPrototypeToString,Wt=f.SymbolPrototypeValueOf,Ut=f.SymbolIterator,Vt=f.SymbolToStringTag,$t=f.TypedArrayPrototypeGetLength,Zt=f.TypedArrayPrototypeGetSymbolToStringTag,qt=f.Uint8Array,Kt=f.globalThis,Yt=f.uncurryThis,Jt=r(364),Qt=Jt.constants,Xt=Qt.ALL_PROPERTIES,te=Qt.ONLY_ENUMERABLE,ee=Qt.kPending,re=Qt.kRejected,ne=Jt.getOwnNonIndexProperties,oe=Jt.getPromiseDetails,ie=Jt.getProxyDetails,ae=Jt.previewEntries,ce=Jt.getConstructorName,le=Jt.getExternalValue,ue=Jt.Proxy,pe=r(216),fe=pe.customInspectSymbol,ye=pe.isError,se=pe.join,ge=pe.removeColors,de=r(186).isStackOverflowError,be=r(581),he=be.isAsyncFunction,ve=be.isGeneratorFunction,me=be.isAnyArrayBuffer,Se=be.isArrayBuffer,Pe=be.isArgumentsObject,xe=be.isBoxedPrimitive,Oe=be.isDataView,Ae=be.isExternal,we=be.isMap,je=be.isMapIterator,Ee=be.isModuleNamespaceObject,_e=be.isNativeError,Fe=be.isPromise,Le=be.isSet,Re=be.isSetIterator,Te=be.isWeakMap,Ie=be.isWeakSet,ke=be.isRegExp,ze=be.isDate,Me=be.isTypedArray,Be=be.isStringObject,Ne=be.isNumberObject,De=be.isBooleanObject,Ce=be.isBigIntObject,He=r(87),Ge=r(361).BuiltinModule,We=r(659),Ue=We.validateObject,Ve=We.validateString;var $e,Ze,qe,Ke,Ye,Je=new Pt(d(nt(Kt),(function(t){return null!==dt(/^[A-Z][a-zA-Z0-9]+$/,t)}))),Qe=function(t){return void 0===t&&void 0!==t},Xe=pt({showHidden:!1,depth:2,colors:!1,customInspect:!0,showProxy:!1,maxArrayLength:100,maxStringLength:1e4,breakLength:80,compact:3,sorted:!1,getters:!1,numericSeparator:!1}),tr=0,er=1,rr=2;try{$e=new gt(\"[\\\\x00-\\\\x1f\\\\x27\\\\x5c\\\\x7f-\\\\x9f]|[\\\\ud800-\\\\udbff](?![\\\\udc00-\\\\udfff])|(?<![\\\\ud800-\\\\udbff])[\\\\udc00-\\\\udfff]\"),Ze=new gt(\"[\\0-\\\\x1f\\\\x27\\\\x5c\\\\x7f-\\\\x9f]|[\\\\ud800-\\\\udbff](?![\\\\udc00-\\\\udfff])|(?<![\\\\ud800-\\\\udbff])[\\\\udc00-\\\\udfff]\",\"g\"),qe=new gt(\"[\\\\x00-\\\\x1f\\\\x5c\\\\x7f-\\\\x9f]|[\\\\ud800-\\\\udbff](?![\\\\udc00-\\\\udfff])|(?<![\\\\ud800-\\\\udbff])[\\\\udc00-\\\\udfff]\"),Ke=new gt(\"[\\\\x00-\\\\x1f\\\\x5c\\\\x7f-\\\\x9f]|[\\\\ud800-\\\\udbff](?![\\\\udc00-\\\\udfff])|(?<![\\\\ud800-\\\\udbff])[\\\\udc00-\\\\udfff]\",\"g\");var nr=new gt(\"(?<=\\\\n)\");Ye=function(t){return ht(nr,t)}}catch(t){$e=/[\\x00-\\x1f\\x27\\x5c\\x7f-\\x9f]/,Ze=/[\\x00-\\x1f\\x27\\x5c\\x7f-\\x9f]/g,qe=/[\\x00-\\x1f\\x5c\\x7f-\\x9f]/,Ke=/[\\x00-\\x1f\\x5c\\x7f-\\x9f]/g,Ye=function(t){var e=ht(/\\n/,t),r=P(e),n=S(e,(function(t){return t+\"\\n\"}));return\"\"!==r&&n.push(r),n}}var or,ir=/^[a-zA-Z_][a-zA-Z_0-9]*$/,ar=/^(0|[1-9][0-9]*)$/,cr=/^ {4}at (?:[^/\\\\(]+ \\(|)node:(.+):\\d+:\\d+\\)?$/,lr=/[/\\\\]node_modules[/\\\\](.+?)(?=[/\\\\])/g,ur=/^(\\s+[^(]*?)\\s*{/,pr=/(\\/\\/.*?\\n)|(\\/\\*(.|\\n)*?\\*\\/)/g,fr=16,yr=0,sr=1,gr=2,dr=[\"\\\\x00\",\"\\\\x01\",\"\\\\x02\",\"\\\\x03\",\"\\\\x04\",\"\\\\x05\",\"\\\\x06\",\"\\\\x07\",\"\\\\b\",\"\\\\t\",\"\\\\n\",\"\\\\x0B\",\"\\\\f\",\"\\\\r\",\"\\\\x0E\",\"\\\\x0F\",\"\\\\x10\",\"\\\\x11\",\"\\\\x12\",\"\\\\x13\",\"\\\\x14\",\"\\\\x15\",\"\\\\x16\",\"\\\\x17\",\"\\\\x18\",\"\\\\x19\",\"\\\\x1A\",\"\\\\x1B\",\"\\\\x1C\",\"\\\\x1D\",\"\\\\x1E\",\"\\\\x1F\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\\\\'\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\\\\\\\\\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\\\\x7F\",\"\\\\x80\",\"\\\\x81\",\"\\\\x82\",\"\\\\x83\",\"\\\\x84\",\"\\\\x85\",\"\\\\x86\",\"\\\\x87\",\"\\\\x88\",\"\\\\x89\",\"\\\\x8A\",\"\\\\x8B\",\"\\\\x8C\",\"\\\\x8D\",\"\\\\x8E\",\"\\\\x8F\",\"\\\\x90\",\"\\\\x91\",\"\\\\x92\",\"\\\\x93\",\"\\\\x94\",\"\\\\x95\",\"\\\\x96\",\"\\\\x97\",\"\\\\x98\",\"\\\\x99\",\"\\\\x9A\",\"\\\\x9B\",\"\\\\x9C\",\"\\\\x9D\",\"\\\\x9E\",\"\\\\x9F\"],br=new gt(\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)|(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))\",\"g\");function hr(t,e){var r={budget:{},indentationLvl:0,seen:[],currentDepth:0,stylize:wr,showHidden:Xe.showHidden,depth:Xe.depth,colors:Xe.colors,customInspect:Xe.customInspect,showProxy:Xe.showProxy,maxArrayLength:Xe.maxArrayLength,maxStringLength:Xe.maxStringLength,breakLength:Xe.breakLength,compact:Xe.compact,sorted:Xe.sorted,getters:Xe.getters,numericSeparator:Xe.numericSeparator};if(arguments.length>1)if(arguments.length>2&&(void 0!==arguments[2]&&(r.depth=arguments[2]),arguments.length>3&&void 0!==arguments[3]&&(r.colors=arguments[3])),\"boolean\"==typeof e)r.showHidden=e;else if(e)for(var n=ct(e),o=0;o<n.length;++o){var i=n[o];lt(Xe,i)||\"stylize\"===i?r[i]=e[i]:void 0===r.userOptions&&(r.userOptions=e)}return r.colors&&(r.stylize=Ar),null===r.maxArrayLength&&(r.maxArrayLength=1/0),null===r.maxStringLength&&(r.maxStringLength=1/0),Ir(r,t,0)}hr.custom=fe,et(hr,\"defaultOptions\",{__proto__:null,get:function(){return Xe},set:function(t){return Ue(t,\"options\"),tt(Xe,t)}});var vr=39,mr=49;function Sr(t,e){et(hr.colors,e,{__proto__:null,get:function(){return this[t]},set:function(e){this[t]=e},configurable:!0,enumerable:!1})}function Pr(t,e){return-1===e?'\"'.concat(t,'\"'):-2===e?\"`\".concat(t,\"`\"):\"'\".concat(t,\"'\")}function xr(t){var e=wt(t);return dr.length>e?dr[e]:\"\\\\u\".concat(J(e,16))}function Or(t){var e=$e,r=Ze,n=39;if(Et(t,\"'\")&&(Et(t,'\"')?Et(t,\"`\")||Et(t,\"${\")||(n=-2):n=-1,39!==n&&(e=qe,r=Ke)),t.length<5e3&&null===dt(e,t))return Pr(t,n);if(t.length>100)return Pr(t=bt(r,t,xr),n);for(var o=\"\",i=0,a=0;a<t.length;a++){var c=wt(t,a);if(c===n||92===c||c<32||c>126&&c<160)o+=i===a?dr[c]:\"\".concat(zt(t,i,a)).concat(dr[c]),i=a+1;else if(c>=55296&&c<=57343){if(c<=56319&&a+1<t.length){var l=wt(t,a+1);if(l>=56320&&l<=57343){a++;continue}}o+=\"\".concat(zt(t,i,a),\"\\\\u\").concat(J(c,16)),i=a+1}}return i!==t.length&&(o+=zt(t,i)),Pr(o,n)}function Ar(t,e){var r=hr.styles[e];if(void 0!==r){var n=hr.colors[r];if(void 0!==n)return\"\u001b[\".concat(n[0],\"m\").concat(t,\"\u001b[\").concat(n[1],\"m\")}return t}function wr(t){return t}function jr(){return[]}function Er(t,e){try{return t instanceof e}catch(t){return!1}}function _r(t,e,r,n){for(var o,i=t;t||Qe(t);){var a=rt(t,\"constructor\");if(void 0!==a&&\"function\"==typeof a.value&&\"\"!==a.value.name&&Er(i,a.value))return void 0===n||o===t&&Je.has(a.value.name)||Fr(e,i,o||i,r,n),At(a.value.name);t=it(t),void 0===o&&(o=t)}if(null===o)return null;var l=ce(i);if(r>e.depth&&null!==e.depth)return\"\".concat(l,\" <Complex prototype>\");var u=_r(o,e,r+1,n);return null===u?\"\".concat(l,\" <\").concat(hr(o,c(c({},e),{},{customInspect:!1,depth:-1})),\">\"):\"\".concat(l,\" <\").concat(u,\">\")}function Fr(t,e,r,n,i){var a,c,l=0;do{if(0!==l||e===r){if(null===(r=it(r)))return;var u=rt(r,\"constructor\");if(void 0!==u&&\"function\"==typeof u.value&&Je.has(u.value.name))return}0===l?c=new Pt:b(a,(function(t){return c.add(t)})),a=st(r),x(t.seen,e);var p,f=o(a);try{for(f.s();!(p=f.n()).done;){var y=p.value;if(!(\"constructor\"===y||lt(e,y)||0!==l&&c.has(y))){var s=rt(r,y);if(\"function\"!=typeof s.value){var g=on(t,r,n,y,tr,s,e);t.colors?x(i,\"\u001b[2m\".concat(g,\"\u001b[22m\")):x(i,g)}}}}catch(t){f.e(t)}finally{f.f()}P(t.seen)}while(3!=++l)}function Lr(t,e,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:\"\";return null===t?\"\"!==e&&r!==e?\"[\".concat(r).concat(n,\": null prototype] [\").concat(e,\"] \"):\"[\".concat(r).concat(n,\": null prototype] \"):\"\"!==e&&t!==e?\"\".concat(t).concat(n,\" [\").concat(e,\"] \"):\"\".concat(t).concat(n,\" \")}function Rr(t,e){var r,n=ot(t);if(e)r=nt(t),0!==n.length&&O(r,n);else{try{r=ct(t)}catch(e){He(_e(e)&&\"ReferenceError\"===e.name&&Ee(t)),r=nt(t)}0!==n.length&&O(r,d(n,(function(e){return ut(t,e)})))}return r}function Tr(t,e,r){var n=\"\";return null===e&&(n=ce(t))===r&&(n=\"Object\"),Lr(e,r,n)}function Ir(t,e,i,a){if(\"object\"!==n(e)&&\"function\"!=typeof e&&!Qe(e))return Wr(t.stylize,e,t);if(null===e)return t.stylize(\"null\",\"null\");var l=e,u=ie(e,!!t.showProxy);if(void 0!==u){if(null===u||null===u[0])return t.stylize(\"<Revoked Proxy>\",\"special\");if(t.showProxy)return function(t,e,r){if(r>t.depth&&null!==t.depth)return t.stylize(\"Proxy [Array]\",\"special\");r+=1,t.indentationLvl+=2;var n=[Ir(t,e[0],r),Ir(t,e[1],r)];return t.indentationLvl-=2,cn(t,n,\"\",[\"Proxy [\",\"]\"],rr,r)}(t,u,i);e=u}if(t.customInspect){var y=e[fe];if(\"function\"==typeof y&&y!==hr&&(!e.constructor||e.constructor.prototype!==e)){var s=null===t.depth?null:t.depth-i,d=z(y,l,s,function(t,e){var r=c({stylize:t.stylize,showHidden:t.showHidden,depth:t.depth,colors:t.colors,customInspect:t.customInspect,showProxy:t.showProxy,maxArrayLength:t.maxArrayLength,maxStringLength:t.maxStringLength,breakLength:t.breakLength,compact:t.compact,sorted:t.sorted,getters:t.getters,numericSeparator:t.numericSeparator},t.userOptions);if(e){ft(r,null);var i,a=o(ct(r));try{for(a.s();!(i=a.n()).done;){var l=i.value;\"object\"!==n(r[l])&&\"function\"!=typeof r[l]||null===r[l]||delete r[l]}}catch(t){a.e(t)}finally{a.f()}r.stylize=ft((function(e,r){var n;try{n=\"\".concat(t.stylize(e,r))}catch(t){}return\"string\"!=typeof n?e:n}),null)}return r}(t,void 0!==u||!(l instanceof X)),hr);if(d!==l)return\"string\"!=typeof d?Ir(t,d,i):kt(d,\"\\n\",\"\\n\".concat(It(\" \",t.indentationLvl)))}}if(t.seen.includes(e)){var b=1;return void 0===t.circular?(t.circular=new St,t.circular.set(e,b)):void 0===(b=t.circular.get(e))&&(b=t.circular.size+1,t.circular.set(e,b)),t.stylize(\"[Circular *\".concat(b,\"]\"),\"special\")}return function(t,e,n,i){var a,c;t.showHidden&&(n<=t.depth||null===t.depth)&&(c=[]);var l=_r(e,t,n,c);void 0!==c&&0===c.length&&(c=void 0);var u=e[Vt];(\"string\"!=typeof u||\"\"!==u&&(t.showHidden?lt:ut)(e,Vt))&&(u=\"\");var y,s,d=\"\",b=jr,S=!0,P=0,I=t.showHidden?Xt:te,z=tr;if(Ut in e||null===l)if(S=!1,g(e)){var B=\"Array\"!==l||\"\"!==u?Lr(l,u,\"Array\",\"(\".concat(e.length,\")\")):\"\";if(a=ne(e,I),y=[\"\".concat(B,\"[\"),\"]\"],0===e.length&&0===a.length&&void 0===c)return\"\".concat(y[0],\"]\");z=rr,b=Zr}else if(Le(e)){var C=xt(e),H=Lr(l,u,\"Set\",\"(\".concat(C,\")\"));if(a=Rr(e,t.showHidden),b=k(Kr,null,null!==l?e:Ot(e)),0===C&&0===a.length&&void 0===c)return\"\".concat(H,\"{}\");y=[\"\".concat(H,\"{\"),\"}\"]}else if(we(e)){var G=N(e),W=Lr(l,u,\"Map\",\"(\".concat(G,\")\"));if(a=Rr(e,t.showHidden),b=k(Yr,null,null!==l?e:D(e)),0===G&&0===a.length&&void 0===c)return\"\".concat(W,\"{}\");y=[\"\".concat(W,\"{\"),\"}\"]}else if(Me(e)){a=ne(e,I);var U=e,V=\"\";null===l&&(V=Zt(e),U=new f[V](e));var $=$t(e),Z=Lr(l,u,V,\"(\".concat($,\")\"));if(y=[\"\".concat(Z,\"[\"),\"]\"],0===e.length&&0===a.length&&!t.showHidden)return\"\".concat(y[0],\"]\");b=k(qr,null,U,$),z=rr}else je(e)?(a=Rr(e,t.showHidden),y=kr(\"Map\",u),b=k(rn,null,y)):Re(e)?(a=Rr(e,t.showHidden),y=kr(\"Set\",u),b=k(rn,null,y)):S=!0;if(S)if(a=Rr(e,t.showHidden),y=[\"{\",\"}\"],\"Object\"===l){if(Pe(e)?y[0]=\"[Arguments] {\":\"\"!==u&&(y[0]=\"\".concat(Lr(l,u,\"Object\"),\"{\")),0===a.length&&void 0===c)return\"\".concat(y[0],\"}\")}else if(\"function\"==typeof e){if(d=function(t,e,r){var n=M(t);if(Nt(n,\"class\")&&Bt(n,\"}\")){var o=zt(n,5,-1),i=_t(o,\"{\");if(-1!==i&&(!Et(zt(o,0,i),\"(\")||null!==dt(ur,bt(pr,o))))return function(t,e,r){var n=lt(t,\"name\")&&t.name||\"(anonymous)\",o=\"class \".concat(n);if(\"Function\"!==e&&null!==e&&(o+=\" [\".concat(e,\"]\")),\"\"!==r&&e!==r&&(o+=\" [\".concat(r,\"]\")),null!==e){var i=it(t).name;i&&(o+=\" extends \".concat(i))}else o+=\" extends [null prototype]\";return\"[\".concat(o,\"]\")}(t,e,r)}var a=\"Function\";ve(t)&&(a=\"Generator\".concat(a)),he(t)&&(a=\"Async\".concat(a));var c=\"[\".concat(a);return null===e&&(c+=\" (null prototype)\"),\"\"===t.name?c+=\" (anonymous)\":c+=\": \".concat(t.name),c+=\"]\",e!==a&&null!==e&&(c+=\" \".concat(e)),\"\"!==r&&e!==r&&(c+=\" [\".concat(r,\"]\")),c}(e,l,u),0===a.length&&void 0===c)return t.stylize(d,\"special\")}else if(ke(e)){d=vt(null!==l?e:new gt(e));var K=Lr(l,u,\"RegExp\");if(\"RegExp \"!==K&&(d=\"\".concat(K).concat(d)),0===a.length&&void 0===c||n>t.depth&&null!==t.depth)return t.stylize(d,\"regexp\")}else if(ze(e)){d=q(L(e))?T(e):R(e);var Y=Lr(l,u,\"Date\");if(\"Date \"!==Y&&(d=\"\".concat(Y).concat(d)),0===a.length&&void 0===c)return t.stylize(d,\"date\")}else if(ye(e)){if(d=function(t,e,n,i,a){var c=null!=t.name?At(t.name):\"Error\",l=Mr(t);(function(t,e,r,n){if(!t.showHidden&&0!==e.length)for(var o=0,i=[\"name\",\"message\",\"stack\"];o<i.length;o++){var a=i[o],c=v(e,a);-1!==c&&Et(n,r[a])&&w(e,c,1)}})(i,a,t,l),!(\"cause\"in t)||0!==a.length&&h(a,\"cause\")||x(a,\"cause\"),!g(t.errors)||0!==a.length&&h(a,\"errors\")||x(a,\"errors\"),l=function(t,e,r,n){var o=r.length;if(null===e||Bt(r,\"Error\")&&Nt(t,r)&&(t.length===o||\":\"===t[o]||\"\\n\"===t[o])){var i=\"Error\";if(null===e){var a=dt(/^([A-Z][a-z_ A-Z0-9[\\]()-]+)(?::|\\n {4}at)/,t)||dt(/^([a-z_A-Z0-9-]*Error)$/,t);o=(i=a&&a[1]||\"\").length,i=i||\"Error\"}var c=zt(Lr(e,n,i),0,-1);r!==c&&(t=Et(c,r)?0===o?\"\".concat(c,\": \").concat(t):\"\".concat(c).concat(zt(t,o)):\"\".concat(c,\" [\").concat(r,\"]\").concat(zt(t,o)))}return t}(l,e,c,n);var u=t.message&&_t(l,t.message)||-1;-1!==u&&(u+=t.message.length);var f,y=_t(l,\"\\n    at\",u);if(-1===y)l=\"[\".concat(l,\"]\");else{var s=zt(l,0,y),d=function(t,e,r){var n,o=Mt(r,\"\\n\");try{n=e.cause}catch(t){}if(null!=n&&ye(n)){var i=Mr(n),a=_t(i,\"\\n    at\");if(-1!==a){var c=zr(o,Mt(zt(i,a+1),\"\\n\")),l=c.len,u=c.offset;if(l>0){var p=l-2,f=\"    ... \".concat(p,\" lines matching cause stack trace ...\");o.splice(u+1,p,t.stylize(f,\"undefined\"))}}}return o}(i,t,zt(l,y+1));if(i.colors){var b,S,P=function(){var t;try{t=process.cwd()}catch(t){return}return t}(),O=o(d);try{for(O.s();!(S=O.n()).done;){var A=S.value,j=dt(cr,A);if(null!==j&&Ge.exists(j[1]))s+=\"\\n\".concat(i.stylize(A,\"undefined\"));else{if(s+=\"\\n\",A=Br(i,A),void 0!==P){var E=Nr(i,A,P);E===A&&(E=Nr(i,A,b=null==b?(f=P,(p=null==p?r(132):p).pathToFileURL(f).href):b)),A=E}s+=A}}}catch(t){O.e(t)}finally{O.f()}}else s+=\"\\n\".concat(m(d,\"\\n\"));l=s}if(0!==i.indentationLvl){var _=It(\" \",i.indentationLvl);l=kt(l,\"\\n\",\"\\n\".concat(_))}return l}(e,l,u,t,a),0===a.length&&void 0===c)return d}else if(me(e)){var J=Lr(l,u,Se(e)?\"ArrayBuffer\":\"SharedArrayBuffer\");if(void 0===i)b=$r;else if(0===a.length&&void 0===c)return J+\"{ byteLength: \".concat(Hr(t.stylize,e.byteLength,!1),\" }\");y[0]=\"\".concat(J,\"{\"),E(a,\"byteLength\")}else if(Oe(e))y[0]=\"\".concat(Lr(l,u,\"DataView\"),\"{\"),E(a,\"byteLength\",\"byteOffset\",\"buffer\");else if(Fe(e))y[0]=\"\".concat(Lr(l,u,\"Promise\"),\"{\"),b=nn;else if(Ie(e))y[0]=\"\".concat(Lr(l,u,\"WeakSet\"),\"{\"),b=t.showHidden?tn:Xr;else if(Te(e))y[0]=\"\".concat(Lr(l,u,\"WeakMap\"),\"{\"),b=t.showHidden?en:Xr;else if(Ee(e))y[0]=\"\".concat(Lr(l,u,\"Module\"),\"{\"),b=Ur.bind(null,a);else if(xe(e)){if(d=function(t,e,r,n,o){var i,a;Ne(t)?(i=Q,a=\"Number\"):Be(t)?(i=Ht,a=\"String\",r.splice(0,t.length)):De(t)?(i=F,a=\"Boolean\"):Ce(t)?(i=_,a=\"BigInt\"):(i=Wt,a=\"Symbol\");var c=\"[\".concat(a);return a!==n&&(c+=null===n?\" (null prototype)\":\" (\".concat(n,\")\")),c+=\": \".concat(Wr(wr,i(t),e),\"]\"),\"\"!==o&&o!==n&&(c+=\" [\".concat(o,\"]\")),0!==r.length||e.stylize===wr?c:e.stylize(c,Dt(a))}(e,t,a,l,u),0===a.length&&void 0===c)return d}else{if(0===a.length&&void 0===c){if(Ae(e)){var X=le(e).toString(16);return t.stylize(\"[External: \".concat(X,\"]\"),\"special\")}return\"\".concat(Tr(e,l,u),\"{}\")}y[0]=\"\".concat(Tr(e,l,u),\"{\")}if(n>t.depth&&null!==t.depth){var tt=zt(Tr(e,l,u),0,-1);return null!==l&&(tt=\"[\".concat(tt,\"]\")),t.stylize(tt,\"special\")}n+=1,t.seen.push(e),t.currentDepth=n;var et=t.indentationLvl;try{for(s=b(t,e,n),P=0;P<a.length;P++)x(s,on(t,e,n,a[P],z));void 0!==c&&O(s,c)}catch(r){return function(t,e,r,n){if(de(e))return t.seen.pop(),t.indentationLvl=n,t.stylize(\"[\".concat(r,\": Inspection interrupted \")+\"prematurely. Maximum call stack size exceeded.]\",\"special\");He.fail(e.stack)}(t,r,zt(Tr(e,l,u),0,-1),et)}if(void 0!==t.circular){var rt=t.circular.get(e);if(void 0!==rt){var nt=t.stylize(\"<ref *\".concat(rt,\">\"),\"special\");!0!==t.compact?d=\"\"===d?nt:\"\".concat(nt,\" \").concat(d):y[0]=\"\".concat(nt,\" \").concat(y[0])}}if(t.seen.pop(),t.sorted){var ot=!0===t.sorted?void 0:t.sorted;if(z===tr)j(s,ot);else if(a.length>1){var at=j(A(s,s.length-a.length),ot);E(at,s,s.length-a.length,a.length),yt(w,null,at)}}var ct=cn(t,s,d,y,z,n,e),pt=(t.budget[t.indentationLvl]||0)+ct.length;return t.budget[t.indentationLvl]=pt,pt>Math.pow(2,27)&&(t.depth=-1),ct}(t,e,i,a)}function kr(t,e){return e!==\"\".concat(t,\" Iterator\")&&(\"\"!==e&&(e+=\"] [\"),e+=\"\".concat(t,\" Iterator\")),[\"[\".concat(e,\"] {\"),\"}\"]}function zr(t,e){for(var r=0;r<t.length-3;r++){var n=e.indexOf(t[r]);if(-1!==n){var o=e.length-n;if(o>3){for(var i=1,a=G(t.length-r,o);a>i&&t[r+i]===e[n+i];)i++;if(i>3)return{len:i,offset:r}}}}return{len:0,offset:0}}function Mr(t){return t.stack?At(t.stack):I(t)}function Br(t,e){for(var r,n=\"\",o=0;null!==(r=lr.exec(e));)n+=zt(e,o,r.index+14),n+=t.stylize(r[1],\"module\"),o=r.index+r[0].length;return 0!==o&&(e=n+zt(e,o)),e}function Nr(t,e,r){var n=_t(e,r),o=\"\",i=r.length;if(-1!==n){\"file://\"===zt(e,n-7,n)&&(i+=7,n-=7);var a=\"(\"===e[n-1]?n-1:n,c=a!==n&&Bt(e,\")\")?-1:e.length,l=n+i+1,u=zt(e,a,l);o+=zt(e,0,a),o+=t.stylize(u,\"undefined\"),o+=zt(e,l,c),-1===c&&(o+=t.stylize(\")\",\"undefined\"))}else o+=e;return o}function Dr(t){for(var e=\"\",r=t.length,n=Nt(t,\"-\")?1:0;r>=n+4;r-=3)e=\"_\".concat(zt(t,r-3,r)).concat(e);return r===t.length?t:\"\".concat(zt(t,0,r)).concat(e)}hr.colors={__proto__:null,reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],blink:[5,25],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],doubleunderline:[21,24],black:[30,vr],red:[31,vr],green:[32,vr],yellow:[33,vr],blue:[34,vr],magenta:[35,vr],cyan:[36,vr],white:[37,vr],bgBlack:[40,mr],bgRed:[41,mr],bgGreen:[42,mr],bgYellow:[43,mr],bgBlue:[44,mr],bgMagenta:[45,mr],bgCyan:[46,mr],bgWhite:[47,mr],framed:[51,54],overlined:[53,55],gray:[90,vr],redBright:[91,vr],greenBright:[92,vr],yellowBright:[93,vr],blueBright:[94,vr],magentaBright:[95,vr],cyanBright:[96,vr],whiteBright:[97,vr],bgGray:[100,mr],bgRedBright:[101,mr],bgGreenBright:[102,mr],bgYellowBright:[103,mr],bgBlueBright:[104,mr],bgMagentaBright:[105,mr],bgCyanBright:[106,mr],bgWhiteBright:[107,mr]},Sr(\"gray\",\"grey\"),Sr(\"gray\",\"blackBright\"),Sr(\"bgGray\",\"bgGrey\"),Sr(\"bgGray\",\"bgBlackBright\"),Sr(\"dim\",\"faint\"),Sr(\"strikethrough\",\"crossedout\"),Sr(\"strikethrough\",\"strikeThrough\"),Sr(\"strikethrough\",\"crossedOut\"),Sr(\"hidden\",\"conceal\"),Sr(\"inverse\",\"swapColors\"),Sr(\"inverse\",\"swapcolors\"),Sr(\"doubleunderline\",\"doubleUnderline\"),hr.styles=tt({__proto__:null},{special:\"cyan\",number:\"yellow\",bigint:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",symbol:\"green\",date:\"magenta\",regexp:\"red\",module:\"underline\"});var Cr=function(t){return\"... \".concat(t,\" more item\").concat(t>1?\"s\":\"\")};function Hr(t,e,r){if(!r)return at(e,-0)?t(\"-0\",\"number\"):t(\"\".concat(e),\"number\");var n=V(e),o=At(n);return n===e?!Z(e)||Et(o,\"e\")?t(o,\"number\"):t(\"\".concat(Dr(o)),\"number\"):q(e)?t(o,\"number\"):t(\"\".concat(Dr(o),\".\").concat(function(t){for(var e=\"\",r=0;r<t.length-3;r+=3)e+=\"\".concat(zt(t,r,r+3),\"_\");return 0===r?t:\"\".concat(e).concat(zt(t,r))}(zt(At(e),o.length+1))),\"number\")}function Gr(t,e,r){var n=At(e);return t(\"\".concat(r?Dr(n):n,\"n\"),\"bigint\")}function Wr(t,e,r){if(\"string\"==typeof e){var n=\"\";if(e.length>r.maxStringLength){var o=e.length-r.maxStringLength;e=zt(e,0,r.maxStringLength),n=\"... \".concat(o,\" more character\").concat(o>1?\"s\":\"\")}return!0!==r.compact&&e.length>fr&&e.length>r.breakLength-r.indentationLvl-4?m(S(Ye(e),(function(e){return t(Or(e),\"string\")})),\" +\\n\".concat(It(\" \",r.indentationLvl+2)))+n:t(Or(e),\"string\")+n}return\"number\"==typeof e?Hr(t,e,r.numericSeparator):\"bigint\"==typeof e?Gr(t,e,r.numericSeparator):\"boolean\"==typeof e?t(\"\".concat(e),\"boolean\"):void 0===e?t(\"undefined\",\"undefined\"):t(Gt(e),\"symbol\")}function Ur(t,e,r,n){for(var o=new s(t.length),i=0;i<t.length;i++)try{o[i]=on(e,r,n,t[i],tr)}catch(r){He(_e(r)&&\"ReferenceError\"===r.name);var a=l({},t[i],\"\");o[i]=on(e,a,n,t[i],tr);var c=Ft(o[i],\" \");o[i]=zt(o[i],0,c+1)+e.stylize(\"<uninitialized>\",\"special\")}return t.length=0,o}function Vr(t,e,r,n,o,i){for(var a=ct(e),c=i;i<a.length&&o.length<n;i++){var l=a[i],u=+l;if(u>Math.pow(2,32)-2)break;if(\"\".concat(c)!==l){if(null===dt(ar,l))break;var p=u-c,f=p>1?\"s\":\"\",y=\"<\".concat(p,\" empty item\").concat(f,\">\");if(x(o,t.stylize(y,\"undefined\")),c=u,o.length===n)break}x(o,on(t,e,r,l,er)),c++}var s=e.length-c;if(o.length!==n){if(s>0){var g=s>1?\"s\":\"\",d=\"<\".concat(s,\" empty item\").concat(g,\">\");x(o,t.stylize(d,\"undefined\"))}}else s>0&&x(o,Cr(s));return o}function $r(t,e){var n;try{n=new qt(e)}catch(e){return[t.stylize(\"(detached)\",\"special\")]}void 0===u&&(u=Yt(r(165).l.prototype.hexSlice));var o=Ct(bt(/(.{2})/g,u(n,0,G(t.maxArrayLength,n.length)),\"$1 \")),i=n.length-t.maxArrayLength;return i>0&&(o+=\" ... \".concat(i,\" more byte\").concat(i>1?\"s\":\"\")),[\"\".concat(t.stylize(\"[Uint8Contents]\",\"special\"),\": <\").concat(o,\">\")]}function Zr(t,e,r){for(var n=e.length,o=G(H(0,t.maxArrayLength),n),i=n-o,a=[],c=0;c<o;c++){if(!lt(e,c))return Vr(t,e,r,o,a,c);x(a,on(t,e,r,c,er))}return i>0&&x(a,Cr(i)),a}function qr(t,e,r,n,o){for(var i=G(H(0,r.maxArrayLength),e),a=t.length-i,c=new s(i),l=t.length>0&&\"number\"==typeof t[0]?Hr:Gr,u=0;u<i;++u)c[u]=l(r.stylize,t[u],r.numericSeparator);if(a>0&&(c[i]=Cr(a)),r.showHidden){r.indentationLvl+=2;for(var p=0,f=[\"BYTES_PER_ELEMENT\",\"length\",\"byteLength\",\"byteOffset\",\"buffer\"];p<f.length;p++){var y=f[p],g=Ir(r,t[y],o,!0);x(c,\"[\".concat(y,\"]: \").concat(g))}r.indentationLvl-=2}return c}function Kr(t,e,r,n){var i=t.size,a=G(H(0,e.maxArrayLength),i),c=i-a,l=[];e.indentationLvl+=2;var u,p=0,f=o(t);try{for(f.s();!(u=f.n()).done;){var y=u.value;if(p>=a)break;x(l,Ir(e,y,n)),p++}}catch(t){f.e(t)}finally{f.f()}return c>0&&x(l,Cr(c)),e.indentationLvl-=2,l}function Yr(t,e,r,n){var i=t.size,a=G(H(0,e.maxArrayLength),i),c=i-a,l=[];e.indentationLvl+=2;var u,p=0,f=o(t);try{for(f.s();!(u=f.n()).done;){var y=u.value,s=y[0],g=y[1];if(p>=a)break;x(l,\"\".concat(Ir(e,s,n),\" => \").concat(Ir(e,g,n))),p++}}catch(t){f.e(t)}finally{f.f()}return c>0&&x(l,Cr(c)),e.indentationLvl-=2,l}function Jr(t,e,r,n){var o=H(t.maxArrayLength,0),i=G(o,r.length),a=new s(i);t.indentationLvl+=2;for(var c=0;c<i;c++)a[c]=Ir(t,r[c],e);t.indentationLvl-=2,n!==yr||t.sorted||j(a);var l=r.length-i;return l>0&&x(a,Cr(l)),a}function Qr(t,e,r,n){var o=H(t.maxArrayLength,0),i=r.length/2,a=i-o,c=G(o,i),l=new s(c),u=0;if(t.indentationLvl+=2,n===yr){for(;u<c;u++){var p=2*u;l[u]=\"\".concat(Ir(t,r[p],e),\" => \").concat(Ir(t,r[p+1],e))}t.sorted||j(l)}else for(;u<c;u++){var f=2*u,y=[Ir(t,r[f],e),Ir(t,r[f+1],e)];l[u]=cn(t,y,\"\",[\"[\",\"]\"],rr,e)}return t.indentationLvl-=2,a>0&&x(l,Cr(a)),l}function Xr(t){return[t.stylize(\"<items unknown>\",\"special\")]}function tn(t,e,r){return Jr(t,r,ae(e),yr)}function en(t,e,r){return Qr(t,r,ae(e),yr)}function rn(t,e,r,n){var o=ae(r,!0),i=o[0];return o[1]?(t[0]=bt(/ Iterator] {$/,t[0],\" Entries] {\"),Qr(e,n,i,gr)):Jr(e,n,i,sr)}function nn(t,e,r){var n,o=oe(e),i=o[0],a=o[1];if(i===ee)n=[t.stylize(\"<pending>\",\"special\")];else{t.indentationLvl+=2;var c=Ir(t,a,r);t.indentationLvl-=2,n=[i===re?\"\".concat(t.stylize(\"<rejected>\",\"special\"),\" \").concat(c):c]}return n}function on(t,e,r,o,i,a){var c,l,u=arguments.length>6&&void 0!==arguments[6]?arguments[6]:e,p=\" \";if(void 0!==(a=a||rt(e,o)||{value:e[o],enumerable:!0}).value){var f=!0!==t.compact||i!==tr?2:3;t.indentationLvl+=f,l=Ir(t,a.value,r),3===f&&t.breakLength<or(l,t.colors)&&(p=\"\\n\".concat(It(\" \",t.indentationLvl))),t.indentationLvl-=f}else if(void 0!==a.get){var y=void 0!==a.set?\"Getter/Setter\":\"Getter\",s=t.stylize,g=\"special\";if(t.getters&&(!0===t.getters||\"get\"===t.getters&&void 0===a.set||\"set\"===t.getters&&void 0!==a.set))try{var d=z(a.get,u);if(t.indentationLvl+=2,null===d)l=\"\".concat(s(\"[\".concat(y,\":\"),g),\" \").concat(s(\"null\",\"null\")).concat(s(\"]\",g));else if(\"object\"===n(d))l=\"\".concat(s(\"[\".concat(y,\"]\"),g),\" \").concat(Ir(t,d,r));else{var b=Wr(s,d,t);l=\"\".concat(s(\"[\".concat(y,\":\"),g),\" \").concat(b).concat(s(\"]\",g))}t.indentationLvl-=2}catch(t){var h=\"<Inspection threw (\".concat(t.message,\")>\");l=\"\".concat(s(\"[\".concat(y,\":\"),g),\" \").concat(h).concat(s(\"]\",g))}else l=t.stylize(\"[\".concat(y,\"]\"),g)}else l=void 0!==a.set?t.stylize(\"[Setter]\",\"special\"):t.stylize(\"undefined\",\"undefined\");if(i===er)return l;if(\"symbol\"===n(o)){var v=bt(Ze,Gt(o),xr);c=\"[\".concat(t.stylize(v,\"symbol\"),\"]\")}else if(\"__proto__\"===o)c=\"['__proto__']\";else if(!1===a.enumerable){var m=bt(Ze,o,xr);c=\"[\".concat(m,\"]\")}else c=null!==dt(ir,o)?t.stylize(o,\"name\"):t.stylize(Or(o),\"string\");return\"\".concat(c,\":\").concat(p).concat(l)}function an(t,e,r,n){var o=e.length+r;if(o+e.length>t.breakLength)return!1;for(var i=0;i<e.length;i++)if(t.colors?o+=ge(e[i]).length:o+=e[i].length,o>t.breakLength)return!1;return\"\"===n||!Et(n,\"\\n\")}function cn(t,e,r,n,o,i,a){if(!0!==t.compact){if(\"number\"==typeof t.compact&&t.compact>=1){var c=e.length;if(o===rr&&c>6&&(e=function(t,e,r){var n=0,o=0,i=0,a=e.length;t.maxArrayLength<e.length&&a--;for(var c=new s(a);i<a;i++){var l=or(e[i],t.colors);c[i]=l,n+=l+2,o<l&&(o=l)}var u=o+2;if(3*u+t.indentationLvl<t.breakLength&&(n/u>5||o<=6)){var p=U(u-n/e.length),f=H(u-3-p,1),y=G(W(U(2.5*f*a)/f),C((t.breakLength-t.indentationLvl)/u),4*t.compact,15);if(y<=1)return e;for(var g=[],d=[],b=0;b<y;b++){for(var h=0,v=b;v<e.length;v+=y)c[v]>h&&(h=c[v]);h+=2,d[b]=h}var m=Tt;if(void 0!==r)for(var S=0;S<e.length;S++)if(\"number\"!=typeof r[S]&&\"bigint\"!=typeof r[S]){m=Rt;break}for(var P=0;P<a;P+=y){for(var O=G(P+y,a),A=\"\",w=P;w<O-1;w++){var j=d[w-P]+e[w].length-c[w];A+=m(\"\".concat(e[w],\", \"),j,\" \")}if(m===Tt){var E=d[w-P]+e[w].length-c[w]-2;A+=Tt(e[w],E,\" \")}else A+=e[w];x(g,A)}t.maxArrayLength<e.length&&x(g,e[a]),e=g}return e}(t,e,a)),t.currentDepth-i<t.compact&&c===e.length&&an(t,e,e.length+t.indentationLvl+n[0].length+r.length+10,r)){var l=se(e,\", \");if(!Et(l,\"\\n\"))return\"\".concat(r?\"\".concat(r,\" \"):\"\").concat(n[0],\" \").concat(l)+\" \".concat(n[1])}}var u=\"\\n\".concat(It(\" \",t.indentationLvl));return\"\".concat(r?\"\".concat(r,\" \"):\"\").concat(n[0]).concat(u,\"  \")+\"\".concat(se(e,\",\".concat(u,\"  \"))).concat(u).concat(n[1])}if(an(t,e,0,r))return\"\".concat(n[0]).concat(r?\" \".concat(r):\"\",\" \").concat(se(e,\", \"),\" \")+n[1];var p=It(\" \",t.indentationLvl),f=\"\"===r&&1===n[0].length?\" \":\"\".concat(r?\" \".concat(r):\"\",\"\\n\").concat(p,\"  \");return\"\".concat(n[0]).concat(f).concat(se(e,\",\\n\".concat(p,\"  \")),\" \").concat(n[1])}function ln(t){var e=ie(t,!1);if(void 0!==e){if(null===e)return!0;t=e}if(\"function\"!=typeof t.toString)return!0;if(lt(t,\"toString\"))return!1;var r=t;do{r=it(r)}while(!lt(r,\"toString\"));var n=rt(r,\"constructor\");return void 0!==n&&\"function\"==typeof n.value&&Je.has(n.value.name)}var un,pn=function(t){return Mt(t.message,\"\\n\",1)[0]};function fn(t){try{return B(t)}catch(t){if(!un)try{var e={};e.a=e,B(e)}catch(t){un=pn(t)}if(\"TypeError\"===t.name&&pn(t)===un)return\"[Circular]\";throw t}}function yn(t,e){var r;return Hr(wr,t,null!==(r=null==e?void 0:e.numericSeparator)&&void 0!==r?r:Xe.numericSeparator)}function sn(t,e){var r;return Gr(wr,t,null!==(r=null==e?void 0:e.numericSeparator)&&void 0!==r?r:Xe.numericSeparator)}function gn(t,e){var r=e[0],o=0,i=\"\",a=\"\";if(\"string\"==typeof r){if(1===e.length)return r;for(var l,u=0,p=0;p<r.length-1;p++)if(37===wt(r,p)){var f=wt(r,++p);if(o+1!==e.length){switch(f){case 115:var y=e[++o];l=\"number\"==typeof y?yn(y,t):\"bigint\"==typeof y?sn(y,t):\"object\"===n(y)&&null!==y&&ln(y)?hr(y,c(c({},t),{},{compact:3,colors:!1,depth:0})):At(y);break;case 106:l=fn(e[++o]);break;case 100:var s=e[++o];l=\"bigint\"==typeof s?sn(s,t):\"symbol\"===n(s)?\"NaN\":yn($(s),t);break;case 79:l=hr(e[++o],t);break;case 111:l=hr(e[++o],c(c({},t),{},{showHidden:!0,showProxy:!0,depth:4}));break;case 105:var g=e[++o];l=\"bigint\"==typeof g?sn(g,t):\"symbol\"===n(g)?\"NaN\":yn(Y(g),t);break;case 102:var d=e[++o];l=\"symbol\"===n(d)?\"NaN\":yn(K(d),t);break;case 99:o+=1,l=\"\";break;case 37:i+=zt(r,u,p),u=p+1;continue;default:continue}u!==p-1&&(i+=zt(r,u,p-1)),i+=l,u=p+1}else 37===f&&(i+=zt(r,u,p),u=p+1)}0!==u&&(o++,a=\" \",u<r.length&&(i+=zt(r,u)))}for(;o<e.length;){var b=e[o];i+=a,i+=\"string\"!=typeof b?hr(b,t):b,a=\" \",o++}return i}function dn(t){return t<=31||t>=127&&t<=159||t>=768&&t<=879||t>=8203&&t<=8207||t>=8400&&t<=8447||t>=65024&&t<=65039||t>=65056&&t<=65071||t>=917760&&t<=917999}if(y(\"config\").hasIntl)He(!1);else{or=function(t){var e=0;(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])&&(t=hn(t)),t=Lt(t,\"NFC\");var r,n=o(new mt(t));try{for(n.s();!(r=n.n()).done;){var i=r.value,a=jt(i,0);bn(a)?e+=2:dn(a)||e++}}catch(t){n.e(t)}finally{n.f()}return e};var bn=function(t){return t>=4352&&(t<=4447||9001===t||9002===t||t>=11904&&t<=12871&&12351!==t||t>=12880&&t<=19903||t>=19968&&t<=42182||t>=43360&&t<=43388||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65131||t>=65281&&t<=65376||t>=65504&&t<=65510||t>=110592&&t<=110593||t>=127488&&t<=127569||t>=127744&&t<=128591||t>=131072&&t<=262141)}}function hn(t){return Ve(t,\"str\"),bt(br,t,\"\")}var vn={34:\"&quot;\",38:\"&amp;\",39:\"&apos;\",60:\"&lt;\",62:\"&gt;\",160:\"&nbsp;\"};function mn(t){return t.replace(/[\\u0000-\\u002F\\u003A-\\u0040\\u005B-\\u0060\\u007B-\\u00FF]/g,(function(t){var e=At(t.charCodeAt(0));return vn[e]||\"&#\"+e+\";\"}))}t.exports={identicalSequenceRange:zr,inspect:hr,inspectDefaultOptions:Xe,format:function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return gn(void 0,e)},formatWithOptions:function(t){Ue(t,\"inspectOptions\",{allowArray:!0});for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n<e;n++)r[n-1]=arguments[n];return gn(t,r)},getStringWidth:or,stripVTControlCharacters:hn,isZeroWidthCodePoint:dn,stylizeWithColor:Ar,stylizeWithHTML:function(t,e){var r=hr.styles[e];return void 0!==r?'<span style=\"color:'.concat(r,';\">').concat(mn(t),\"</span>\"):mn(t)},Proxy:ue}},87:t=>{function e(t){if(!t)throw new Error(\"Assertion failed\")}e.fail=function(t){throw new Error(t)},t.exports=e},361:(t,e)=>{var r=[\"_http_agent\",\"_http_client\",\"_http_common\",\"_http_incoming\",\"_http_outgoing\",\"_http_server\",\"_stream_duplex\",\"_stream_passthrough\",\"_stream_readable\",\"_stream_transform\",\"_stream_wrap\",\"_stream_writable\",\"_tls_common\",\"_tls_wrap\",\"assert\",\"assert/strict\",\"async_hooks\",\"buffer\",\"child_process\",\"cluster\",\"console\",\"constants\",\"crypto\",\"dgram\",\"diagnostics_channel\",\"dns\",\"dns/promises\",\"domain\",\"events\",\"fs\",\"fs/promises\",\"http\",\"http2\",\"https\",\"inspector\",\"module\",\"Module\",\"net\",\"os\",\"path\",\"path/posix\",\"path/win32\",\"perf_hooks\",\"process\",\"punycode\",\"querystring\",\"readline\",\"readline/promises\",\"repl\",\"stream\",\"stream/consumers\",\"stream/promises\",\"stream/web\",\"string_decoder\",\"sys\",\"timers\",\"timers/promises\",\"tls\",\"trace_events\",\"tty\",\"url\",\"util\",\"util/types\",\"v8\",\"vm\",\"wasi\",\"worker_threads\",\"zlib\"];e.BuiltinModule={exists:function(t){return t.startsWith(\"internal/\")||-1!==r.indexOf(t)}}},709:t=>{t.exports={CHAR_DOT:46,CHAR_FORWARD_SLASH:47,CHAR_BACKWARD_SLASH:92}},186:(t,e,r)=>{function n(t){return n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},n(t)}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}var i,a,c=r(541),l=c.ArrayIsArray,u=c.ArrayPrototypeIncludes,p=c.ArrayPrototypeIndexOf,f=c.ArrayPrototypeJoin,y=c.ArrayPrototypePop,s=c.ArrayPrototypePush,g=c.ArrayPrototypeSplice,d=c.ErrorCaptureStackTrace,b=c.ObjectDefineProperty,h=c.ReflectApply,v=c.RegExpPrototypeTest,m=c.SafeMap,S=c.StringPrototypeEndsWith,P=c.StringPrototypeIncludes,x=c.StringPrototypeSlice,O=c.StringPrototypeToLowerCase,A=new m,w={},j=/^([A-Z][a-z0-9]*)+$/,E=[\"string\",\"function\",\"number\",\"object\",\"Function\",\"Object\",\"boolean\",\"bigint\",\"symbol\"],_=null;function F(){return _||(_=r(777)),_}var L=R((function(t,e,r){(t=D(t)).name=\"\".concat(e,\" [\").concat(r,\"]\"),t.stack,delete t.name}));function R(t){var e=\"__node_internal_\"+t.name;return b(t,\"name\",{value:e}),t}var T,I,k,z,M,B,N,D=R((function(t){return i=Error.stackTraceLimit,Error.stackTraceLimit=1/0,d(t),Error.stackTraceLimit=i,t}));t.exports={codes:w,hideStackFrames:R,isStackOverflowError:function(t){if(void 0===I)try{!function t(){t()}()}catch(t){I=t.message,T=t.name}return t&&t.name===T&&t.message===I}},k=\"ERR_INVALID_ARG_TYPE\",z=function(t,e,r){a(\"string\"==typeof t,\"'name' must be a string\"),l(e)||(e=[e]);var i=\"The \";if(S(t,\" argument\"))i+=\"\".concat(t,\" \");else{var c=P(t,\".\")?\"property\":\"argument\";i+='\"'.concat(t,'\" ').concat(c,\" \")}i+=\"must be \";var d,b=[],h=[],m=[],A=function(t,e){var r=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if(\"string\"==typeof t)return o(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===r&&t.constructor&&(r=t.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(t):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}(t))||e&&t&&\"number\"==typeof t.length){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,c=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){l=!0,a=t},f:function(){try{c||null==r.return||r.return()}finally{if(l)throw a}}}}(e);try{for(A.s();!(d=A.n()).done;){var w=d.value;a(\"string\"==typeof w,\"All expected entries have to be of type string\"),u(E,w)?s(b,O(w)):v(j,w)?s(h,w):(a(\"object\"!==w,'The value \"object\" should be written as \"Object\"'),s(m,w))}}catch(t){A.e(t)}finally{A.f()}if(h.length>0){var _=p(b,\"object\");-1!==_&&(g(b,_,1),s(h,\"Object\"))}if(b.length>0){if(b.length>2){var L=y(b);i+=\"one of type \".concat(f(b,\", \"),\", or \").concat(L)}else i+=2===b.length?\"one of type \".concat(b[0],\" or \").concat(b[1]):\"of type \".concat(b[0]);(h.length>0||m.length>0)&&(i+=\" or \")}if(h.length>0){if(h.length>2){var R=y(h);i+=\"an instance of \".concat(f(h,\", \"),\", or \").concat(R)}else i+=\"an instance of \".concat(h[0]),2===h.length&&(i+=\" or \".concat(h[1]));m.length>0&&(i+=\" or \")}if(m.length>0)if(m.length>2){var T=y(m);i+=\"one of \".concat(f(m,\", \"),\", or \").concat(T)}else 2===m.length?i+=\"one of \".concat(m[0],\" or \").concat(m[1]):(O(m[0])!==m[0]&&(i+=\"an \"),i+=\"\".concat(m[0]));if(null==r)i+=\". Received \".concat(r);else if(\"function\"==typeof r&&r.name)i+=\". Received function \".concat(r.name);else if(\"object\"===n(r))if(r.constructor&&r.constructor.name)i+=\". Received an instance of \".concat(r.constructor.name);else{var I=F().inspect(r,{depth:-1});i+=\". Received \".concat(I)}else{var k=F().inspect(r,{colors:!1});k.length>25&&(k=\"\".concat(x(k,0,25),\"...\")),i+=\". Received type \".concat(n(r),\" (\").concat(k,\")\")}return i},M=TypeError,A.set(k,z),w[k]=(B=M,N=k,function(){var t=Error.stackTraceLimit;Error.stackTraceLimit=0;var e=new B;Error.stackTraceLimit=t;for(var n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];var c=function(t,e,n){var o=A.get(t);return void 0===a&&(a=r(87)),a(\"function\"==typeof o),a(o.length<=e.length,\"Code: \".concat(t,\"; The provided arguments length (\").concat(e.length,\") does not \")+\"match the required ones (\".concat(o.length,\").\")),h(o,n,e)}(N,o,e);return b(e,\"message\",{value:c,enumerable:!1,writable:!0,configurable:!0}),b(e,\"toString\",{value:function(){return\"\".concat(this.name,\" [\").concat(N,\"]: \").concat(this.message)},enumerable:!1,writable:!0,configurable:!0}),L(e,B.name,N),e.code=N,e})},132:(t,e,r)=>{var n=r(541),o=n.StringPrototypeCharCodeAt,i=n.StringPrototypeIncludes,a=n.StringPrototypeReplace,c=r(709).CHAR_FORWARD_SLASH,l=r(790),u=/%/g,p=/\\\\/g,f=/\\n/g,y=/\\r/g,s=/\\t/g;t.exports={pathToFileURL:function(t){var e=new URL(\"file://\"),r=l.resolve(t);return o(t,t.length-1)===c&&r[r.length-1]!==l.sep&&(r+=\"/\"),e.pathname=function(t){return i(t,\"%\")&&(t=a(t,u,\"%25\")),i(t,\"\\\\\")&&(t=a(t,p,\"%5C\")),i(t,\"\\n\")&&(t=a(t,f,\"%0A\")),i(t,\"\\r\")&&(t=a(t,y,\"%0D\")),i(t,\"\\t\")&&(t=a(t,s,\"%09\")),t}(r),e}}},216:t=>{var e=/\\u001b\\[\\d\\d?m/g;t.exports={customInspectSymbol:Symbol.for(\"nodejs.util.inspect.custom\"),isError:function(t){return t instanceof Error},join:Array.prototype.join.call.bind(Array.prototype.join),removeColors:function(t){return String.prototype.replace.call(t,e,\"\")}}},581:(t,e,r)=>{function n(t){return n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},n(t)}var o=r(364).getConstructorName;function i(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),i=1;i<e;i++)r[i-1]=arguments[i];for(var a=0,c=r;a<c.length;a++){var l=c[a],u=globalThis[l];if(u&&t instanceof u)return!0}for(;t;){if(\"object\"!==n(t))return!1;if(r.indexOf(o(t))>=0)return!0;t=Object.getPrototypeOf(t)}return!1}function a(t){return function(e){if(!i(e,t.name))return!1;try{t.prototype.valueOf.call(e)}catch(t){return!1}return!0}}\"object\"!==(\"undefined\"==typeof globalThis?\"undefined\":n(globalThis))&&(Object.defineProperty(Object.prototype,\"__magic__\",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__);var c=a(String),l=a(Number),u=a(Boolean),p=a(BigInt),f=a(Symbol);t.exports={isAsyncFunction:function(t){return\"function\"==typeof t&&Function.prototype.toString.call(t).startsWith(\"async\")},isGeneratorFunction:function(t){return\"function\"==typeof t&&Function.prototype.toString.call(t).match(/^(async\\s+)?function *\\*/)},isAnyArrayBuffer:function(t){return i(t,\"ArrayBuffer\",\"SharedArrayBuffer\")},isArrayBuffer:function(t){return i(t,\"ArrayBuffer\")},isArgumentsObject:function(t){if(null!==t&&\"object\"===n(t)&&!Array.isArray(t)&&\"number\"==typeof t.length&&t.length===(0|t.length)&&t.length>=0){var e=Object.getOwnPropertyDescriptor(t,\"callee\");return e&&!e.enumerable}return!1},isBoxedPrimitive:function(t){return l(t)||c(t)||u(t)||p(t)||f(t)},isDataView:function(t){return i(t,\"DataView\")},isExternal:function(t){return\"object\"===n(t)&&Object.isFrozen(t)&&null==Object.getPrototypeOf(t)},isMap:function(t){if(!i(t,\"Map\"))return!1;try{t.has()}catch(t){return!1}return!0},isMapIterator:function(t){return\"[object Map Iterator]\"===Object.prototype.toString.call(Object.getPrototypeOf(t))},isModuleNamespaceObject:function(t){return t&&\"object\"===n(t)&&\"Module\"===t[Symbol.toStringTag]},isNativeError:function(t){return t instanceof Error&&i(t,\"Error\",\"EvalError\",\"RangeError\",\"ReferenceError\",\"SyntaxError\",\"TypeError\",\"URIError\",\"AggregateError\")},isPromise:function(t){return i(t,\"Promise\")},isSet:function(t){if(!i(t,\"Set\"))return!1;try{t.has()}catch(t){return!1}return!0},isSetIterator:function(t){return\"[object Set Iterator]\"===Object.prototype.toString.call(Object.getPrototypeOf(t))},isWeakMap:function(t){return i(t,\"WeakMap\")},isWeakSet:function(t){return i(t,\"WeakSet\")},isRegExp:function(t){return i(t,\"RegExp\")},isDate:function(t){if(i(t,\"Date\"))try{return Date.prototype.getTime.call(t),!0}catch(t){}return!1},isTypedArray:function(t){return i(t,\"Int8Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"Int16Array\",\"Uint16Array\",\"Int32Array\",\"Uint32Array\",\"Float32Array\",\"Float64Array\",\"BigInt64Array\",\"BigUint64Array\")},isStringObject:c,isNumberObject:l,isBooleanObject:u,isBigIntObject:p,isSymbolObject:f}},659:(t,e,r)=>{function n(t){return n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},n(t)}var o=r(541).ArrayIsArray,i=r(186),a=i.hideStackFrames,c=i.codes.ERR_INVALID_ARG_TYPE,l=a((function(t,e,r){var i=null==r,a=!i&&r.allowArray,l=!i&&r.allowFunction;if((i||!r.nullable)&&null===t||!a&&o(t)||\"object\"!==n(t)&&(!l||\"function\"!=typeof t))throw new c(e,\"Object\",t)}));t.exports={validateObject:l,validateString:function(t,e){if(\"string\"!=typeof t)throw new c(e,\"string\",t)}}},790:(t,e,r)=>{var n=r(541),o=n.StringPrototypeCharCodeAt,i=n.StringPrototypeLastIndexOf,a=n.StringPrototypeSlice,c=r(709),l=c.CHAR_DOT,u=c.CHAR_FORWARD_SLASH,p=r(659).validateString;function f(t){return t===u}t.exports={resolve:function(){for(var t=\"\",e=!1,r=arguments.length-1;r>=-1&&!e;r--){var n=r>=0?r<0||arguments.length<=r?void 0:arguments[r]:\"/\";p(n,\"path\"),0!==n.length&&(t=\"\".concat(n,\"/\").concat(t),e=o(n,0)===u)}return t=function(t,e,r,n){for(var c=\"\",p=0,f=-1,y=0,s=0,g=0;g<=t.length;++g){if(g<t.length)s=o(t,g);else{if(n(s))break;s=u}if(n(s)){if(f===g-1||1===y);else if(2===y){if(c.length<2||2!==p||o(c,c.length-1)!==l||o(c,c.length-2)!==l){if(c.length>2){var d=i(c,r);-1===d?(c=\"\",p=0):p=(c=a(c,0,d)).length-1-i(c,r),f=g,y=0;continue}if(0!==c.length){c=\"\",p=0,f=g,y=0;continue}}e&&(c+=c.length>0?\"\".concat(r,\"..\"):\"..\",p=2)}else c.length>0?c+=\"\".concat(r).concat(a(t,f+1,g)):c=a(t,f+1,g),p=g-f-1;f=g,y=0}else s===l&&-1!==y?++y:y=-1}return c}(t,!e,\"/\",f),e?\"/\".concat(t):t.length>0?t:\".\"}}},541:(t,e,r)=>{function n(t){return n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},n(t)}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&u(t,e)}function i(t){var e=l();return function(){var r,o=p(t);if(e){var i=p(this).constructor;r=Reflect.construct(o,arguments,i)}else r=o.apply(this,arguments);return function(t,e){if(e&&(\"object\"===n(e)||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\");return function(t){if(void 0===t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return t}(t)}(this,r)}}function a(t){var e=\"function\"==typeof Map?new Map:void 0;return a=function(t){if(null===t||(r=t,-1===Function.toString.call(r).indexOf(\"[native code]\")))return t;var r;if(\"function\"!=typeof t)throw new TypeError(\"Super expression must either be null or a function\");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return c(t,arguments,p(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),u(n,t)},a(t)}function c(t,e,r){return c=l()?Reflect.construct.bind():function(t,e,r){var n=[null];n.push.apply(n,e);var o=new(Function.bind.apply(t,n));return r&&u(o,r.prototype),o},c.apply(null,arguments)}function l(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function u(t,e){return u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},u(t,e)}function p(t){return p=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},p(t)}function f(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function y(t,e){for(var r=0;r<e.length;r++){var o=e[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,(void 0,i=function(t,e){if(\"object\"!==n(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var o=r.call(t,\"string\");if(\"object\"!==n(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(t)}(o.key),\"symbol\"===n(i)?i:String(i)),o)}var i}function s(t,e,r){return e&&y(t.prototype,e),r&&y(t,r),Object.defineProperty(t,\"prototype\",{writable:!1}),t}var g=function(t,e){var r=function(r){function n(e){f(this,n),this._iterator=t(e)}return s(n,[{key:\"next\",value:function(){return e(this._iterator)}},{key:Symbol.iterator,value:function(){return this}}]),n}();return Object.setPrototypeOf(r.prototype,null),Object.freeze(r.prototype),Object.freeze(r),r};function d(t,e){return Function.prototype.call.bind(t.prototype.__lookupGetter__(e))}function b(t){return Function.prototype.call.bind(t)}var h=function(t,e){Array.prototype.forEach.call(Reflect.ownKeys(t),(function(r){Reflect.getOwnPropertyDescriptor(e,r)||Reflect.defineProperty(e,r,Reflect.getOwnPropertyDescriptor(t,r))}))},v=function(t,e){if(Symbol.iterator in t.prototype){var r,n=new t;Array.prototype.forEach.call(Reflect.ownKeys(t.prototype),(function(o){if(!Reflect.getOwnPropertyDescriptor(e.prototype,o)){var i=Reflect.getOwnPropertyDescriptor(t.prototype,o);if(\"function\"==typeof i.value&&0===i.value.length&&Symbol.iterator in(Function.prototype.call.call(i.value,n)||{})){var a=b(i.value);null==r&&(r=b(a(n).next));var c=g(a,r);i.value=function(){return new c(this)}}Reflect.defineProperty(e.prototype,o,i)}}))}else h(t.prototype,e.prototype);return h(t,e),Object.setPrototypeOf(e.prototype,null),Object.freeze(e.prototype),Object.freeze(e),e},m=Function.prototype.call.bind(String.prototype[Symbol.iterator]),S=Reflect.getPrototypeOf(m(\"\"));if(t.exports={makeSafe:v,internalBinding:function(t){if(\"config\"===t)return{hasIntl:!1};throw new Error('unknown module: \"'.concat(t,'\"'))},Array,ArrayIsArray:Array.isArray,ArrayPrototypeFilter:Function.prototype.call.bind(Array.prototype.filter),ArrayPrototypeForEach:Function.prototype.call.bind(Array.prototype.forEach),ArrayPrototypeIncludes:Function.prototype.call.bind(Array.prototype.includes),ArrayPrototypeIndexOf:Function.prototype.call.bind(Array.prototype.indexOf),ArrayPrototypeJoin:Function.prototype.call.bind(Array.prototype.join),ArrayPrototypeMap:Function.prototype.call.bind(Array.prototype.map),ArrayPrototypePop:Function.prototype.call.bind(Array.prototype.pop),ArrayPrototypePush:Function.prototype.call.bind(Array.prototype.push),ArrayPrototypePushApply:Function.apply.bind(Array.prototype.push),ArrayPrototypeSlice:Function.prototype.call.bind(Array.prototype.slice),ArrayPrototypeSort:Function.prototype.call.bind(Array.prototype.sort),ArrayPrototypeSplice:Function.prototype.call.bind(Array.prototype.splice),ArrayPrototypeUnshift:Function.prototype.call.bind(Array.prototype.unshift),BigIntPrototypeValueOf:Function.prototype.call.bind(BigInt.prototype.valueOf),BooleanPrototypeValueOf:Function.prototype.call.bind(Boolean.prototype.valueOf),DatePrototypeGetTime:Function.prototype.call.bind(Date.prototype.getTime),DatePrototypeToISOString:Function.prototype.call.bind(Date.prototype.toISOString),DatePrototypeToString:Function.prototype.call.bind(Date.prototype.toString),ErrorCaptureStackTrace:function(t){var e=(new Error).stack;t.stack=e.replace(/.*\\n.*/,\"$1\")},ErrorPrototypeToString:Function.prototype.call.bind(Error.prototype.toString),FunctionPrototypeBind:Function.prototype.call.bind(Function.prototype.bind),FunctionPrototypeCall:Function.prototype.call.bind(Function.prototype.call),FunctionPrototypeToString:Function.prototype.call.bind(Function.prototype.toString),globalThis:\"undefined\"==typeof globalThis?r.g:globalThis,JSONStringify:JSON.stringify,MapPrototypeGetSize:d(Map,\"size\"),MapPrototypeEntries:Function.prototype.call.bind(Map.prototype.entries),MathFloor:Math.floor,MathMax:Math.max,MathMin:Math.min,MathRound:Math.round,MathSqrt:Math.sqrt,MathTrunc:Math.trunc,Number,NumberIsFinite:Number.isFinite,NumberIsNaN:Number.isNaN,NumberParseFloat:Number.parseFloat,NumberParseInt:Number.parseInt,NumberPrototypeToString:Function.prototype.call.bind(Number.prototype.toString),NumberPrototypeValueOf:Function.prototype.call.bind(Number.prototype.valueOf),Object,ObjectAssign:Object.assign,ObjectCreate:Object.create,ObjectDefineProperty:Object.defineProperty,ObjectGetOwnPropertyDescriptor:Object.getOwnPropertyDescriptor,ObjectGetOwnPropertyNames:Object.getOwnPropertyNames,ObjectGetOwnPropertySymbols:Object.getOwnPropertySymbols,ObjectGetPrototypeOf:Object.getPrototypeOf,ObjectIs:Object.is,ObjectKeys:Object.keys,ObjectPrototypeHasOwnProperty:Function.prototype.call.bind(Object.prototype.hasOwnProperty),ObjectPrototypePropertyIsEnumerable:Function.prototype.call.bind(Object.prototype.propertyIsEnumerable),ObjectSeal:Object.seal,ObjectSetPrototypeOf:Object.setPrototypeOf,ReflectApply:Reflect.apply,ReflectOwnKeys:Reflect.ownKeys,RegExp,RegExpPrototypeExec:Function.prototype.call.bind(RegExp.prototype.exec),RegExpPrototypeSymbolReplace:Function.prototype.call.bind(RegExp.prototype[Symbol.replace]),RegExpPrototypeSymbolSplit:Function.prototype.call.bind(RegExp.prototype[Symbol.split]),RegExpPrototypeTest:Function.prototype.call.bind(RegExp.prototype.test),RegExpPrototypeToString:Function.prototype.call.bind(RegExp.prototype.toString),SafeStringIterator:g(m,Function.prototype.call.bind(S.next)),SafeMap:v(Map,function(t){o(r,t);var e=i(r);function r(t){return f(this,r),e.call(this,t)}return s(r)}(a(Map))),SafeSet:v(Set,function(t){o(r,t);var e=i(r);function r(t){return f(this,r),e.call(this,t)}return s(r)}(a(Set))),SetPrototypeGetSize:d(Set,\"size\"),SetPrototypeValues:Function.prototype.call.bind(Set.prototype.values),String,StringPrototypeCharCodeAt:Function.prototype.call.bind(String.prototype.charCodeAt),StringPrototypeCodePointAt:Function.prototype.call.bind(String.prototype.codePointAt),StringPrototypeEndsWith:Function.prototype.call.bind(String.prototype.endsWith),StringPrototypeIncludes:Function.prototype.call.bind(String.prototype.includes),StringPrototypeIndexOf:Function.prototype.call.bind(String.prototype.indexOf),StringPrototypeLastIndexOf:Function.prototype.call.bind(String.prototype.lastIndexOf),StringPrototypeNormalize:Function.prototype.call.bind(String.prototype.normalize),StringPrototypePadEnd:Function.prototype.call.bind(String.prototype.padEnd),StringPrototypePadStart:Function.prototype.call.bind(String.prototype.padStart),StringPrototypeRepeat:Function.prototype.call.bind(String.prototype.repeat),StringPrototypeReplace:Function.prototype.call.bind(String.prototype.replace),StringPrototypeReplaceAll:Function.prototype.call.bind(String.prototype.replaceAll),StringPrototypeSlice:Function.prototype.call.bind(String.prototype.slice),StringPrototypeSplit:Function.prototype.call.bind(String.prototype.split),StringPrototypeStartsWith:Function.prototype.call.bind(String.prototype.startsWith),StringPrototypeToLowerCase:Function.prototype.call.bind(String.prototype.toLowerCase),StringPrototypeTrim:Function.prototype.call.bind(String.prototype.trim),StringPrototypeValueOf:Function.prototype.call.bind(String.prototype.valueOf),SymbolPrototypeToString:Function.prototype.call.bind(Symbol.prototype.toString),SymbolPrototypeValueOf:Function.prototype.call.bind(Symbol.prototype.valueOf),SymbolIterator:Symbol.iterator,SymbolFor:Symbol.for,SymbolToStringTag:Symbol.toStringTag,TypedArrayPrototypeGetLength:(\"length\",function(t){return t.constructor.prototype.__lookupGetter__(\"length\").call(t)}),Uint8Array,uncurryThis:b},!String.prototype.replaceAll){var P=function(t){if(null==t)throw new TypeError(\"Can't call method on \"+t);return t},x=function(t,e,r,n,o,i){var a=r+t.length,c=n.length,l=/\\$([$&'`]|\\d{1,2})/;return void 0!==o&&(o=Object(P(o)),l=/\\$([$&'`]|\\d{1,2}|<[^>]*>)/g),i.replace(l,(function(i,l){var u;switch(l.charAt(0)){case\"$\":return\"$\";case\"&\":return t;case\"`\":return e.slice(0,r);case\"'\":return e.slice(a);case\"<\":u=o[l.slice(1,-1)];break;default:var p=+l;if(0===p)return i;if(p>c){var f=Math.floor(p/10);return 0===f?i:f<=c?void 0===n[f-1]?l.charAt(1):n[f-1]+l.charAt(1):i}u=n[p-1]}return void 0===u?\"\":u}))};t.exports.StringPrototypeReplaceAll=function(t,e,r){var n,o,i=P(t),a=0,c=0,l=\"\";if(null!=e){if(e instanceof RegExp&&!~e.flags.indexOf(\"g\"))throw new TypeError(\"`.replaceAll` does not allow non-global regexes\");if(n=e[Symbol.replace])return n.call(e,i,r)}var u=String(i),p=String(e),f=\"function\"==typeof r;f||(r=String(r));var y=p.length,s=Math.max(1,y);for(a=u.indexOf(p,0);-1!==a;)o=f?String(r(p,a,u)):x(p,u,a,[],void 0,r),l+=u.slice(c,a)+o,c=a+y,a=u.indexOf(p,a+s);return c<u.length&&(l+=u.slice(c)),l}}},977:t=>{function e(t){return e=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},e(t)}function r(t,r){for(var n=0;n<r.length;n++){var o=r[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,(void 0,i=function(t,r){if(\"object\"!==e(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,\"string\");if(\"object\"!==e(o))return o;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return String(t)}(o.key),\"symbol\"===e(i)?i:String(i)),o)}var i}var n=new WeakMap,o=function(){function t(e,r){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t);var o=new Proxy(e,r);return n.set(o,[e,r]),o}var e,o;return e=t,o=[{key:\"getProxyDetails\",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=n.get(t);if(r)return e?r:r[0]}},{key:\"revocable\",value:function(t,e){var r=Proxy.revocable(t,e);n.set(r.proxy,[t,e]);var o=r.revoke;return r.revoke=function(){n.set(r.proxy,[null,null]),o()},r}}],null&&r(e.prototype,null),o&&r(e,o),Object.defineProperty(e,\"prototype\",{writable:!1}),t}();t.exports={getProxyDetails:o.getProxyDetails.bind(o),Proxy:o}},364:(t,e,r)=>{function n(t){return n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},n(t)}function o(t,e){if(t){if(\"string\"==typeof t)return i(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===r&&t.constructor&&(r=t.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(t):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}var a=r(977),c=Symbol(\"kPending\"),l=Symbol(\"kRejected\");t.exports={constants:{kPending:c,kRejected:l,ALL_PROPERTIES:0,ONLY_ENUMERABLE:2},getOwnNonIndexProperties:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,r=Object.getOwnPropertyDescriptors(t),n=[],i=0,a=Object.entries(r);i<a.length;i++){var c=(p=a[i],f=2,function(t){if(Array.isArray(t))return t}(p)||function(t,e){var r=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null!=r){var n,o,i,a,c=[],l=!0,u=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);l=!0);}catch(t){u=!0,o=t}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return c}}(p,f)||o(p,f)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),l=c[0],u=c[1];if(!/^(0|[1-9][0-9]*)$/.test(l)||parseInt(l,10)>=Math.pow(2,32)-1){if(2===e&&!u.enumerable)continue;n.push(l)}}var p,f,y,s=function(t,e){var r=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(!r){if(Array.isArray(t)||(r=o(t))){r&&(t=r);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,c=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){l=!0,a=t},f:function(){try{c||null==r.return||r.return()}finally{if(l)throw a}}}}(Object.getOwnPropertySymbols(t));try{for(s.s();!(y=s.n()).done;){var g=y.value,d=Object.getOwnPropertyDescriptor(t,g);(2!==e||d.enumerable)&&n.push(g)}}catch(t){s.e(t)}finally{s.f()}return n},getPromiseDetails:function(){return[c,void 0]},getProxyDetails:a.getProxyDetails,Proxy:a.Proxy,previewEntries:function(t){return[[],!1]},getConstructorName:function(t){if(!t||\"object\"!==n(t))throw new Error(\"Invalid object\");if(t.constructor&&t.constructor.name)return t.constructor.name;var e=Object.prototype.toString.call(t).match(/^\\[object ([^\\]]+)\\]/);return e?e[1]:\"Object\"},getExternalValue:function(){return BigInt(0)}}}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}};return t[n](i,i.exports,r),i.exports}return r.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(t){if(\"object\"==typeof window)return window}}(),r(777)})()));\n\\ No newline at end of file\n+var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n+\n+function getDefaultExportFromCjs (x) {\n+\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n+}\n+\n+var primordials = {exports: {}};\n+\n+// back-patch in primordials in user-land\n+\n+const createSafeIterator = (factory, next) => {\n+  class SafeIterator {\n+    constructor(iterable) {\n+      this._iterator = factory(iterable);\n+    }\n+    next() {\n+      return next(this._iterator);\n+    }\n+    [Symbol.iterator]() {\n+      return this;\n+    }\n+  }\n+  Object.setPrototypeOf(SafeIterator.prototype, null);\n+  Object.freeze(SafeIterator.prototype);\n+  Object.freeze(SafeIterator);\n+  return SafeIterator;\n+};\n+\n+function getGetter(cls, getter) {\n+  // TODO: __lookupGetter__ is deprecated, but Object.getOwnPropertyDescriptor\n+  // doesn't work on built-ins like Typed Arrays.\n+  return Function.prototype.call.bind(cls.prototype.__lookupGetter__(getter));\n+}\n+\n+function getterCaller(getter) {\n+  return (val) => {\n+    return val.constructor.prototype.__lookupGetter__(getter).call(val);\n+  };\n+}\n+\n+function uncurryThis(func) {\n+  return Function.prototype.call.bind(func);\n+}\n+\n+const copyProps = (src, dest) => {\n+  Array.prototype.forEach.call(Reflect.ownKeys(src), (key) => {\n+    if (!Reflect.getOwnPropertyDescriptor(dest, key)) {\n+      Reflect.defineProperty(\n+        dest,\n+        key,\n+        Reflect.getOwnPropertyDescriptor(src, key));\n+    }\n+  });\n+};\n+\n+const makeSafe = (unsafe, safe) => {\n+  if (Symbol.iterator in unsafe.prototype) {\n+    const dummy = new unsafe();\n+    let next; // We can reuse the same `next` method.\n+\n+    Array.prototype.forEach.call(Reflect.ownKeys(unsafe.prototype), (key) => {\n+      if (!Reflect.getOwnPropertyDescriptor(safe.prototype, key)) {\n+        const desc = Reflect.getOwnPropertyDescriptor(unsafe.prototype, key);\n+        if (typeof desc.value === 'function' && desc.value.length === 0) {\n+            const called = Function.prototype.call.call(desc.value, dummy) || {};\n+            if (Symbol.iterator in (typeof called === \"object\" ? called : {})) {\n+                const createIterator = uncurryThis(desc.value);\n+                if (next == null) {\n+                    next = uncurryThis(createIterator(dummy).next);\n+                }\n+                const SafeIterator = createSafeIterator(createIterator, next);\n+                desc.value = function() {\n+                    return new SafeIterator(this);\n+                };\n+            }\n+        }\n+        Reflect.defineProperty(safe.prototype, key, desc);\n+      }\n+    });\n+  } else {\n+    copyProps(unsafe.prototype, safe.prototype);\n+  }\n+  copyProps(unsafe, safe);\n+\n+  Object.setPrototypeOf(safe.prototype, null);\n+  Object.freeze(safe.prototype);\n+  Object.freeze(safe);\n+  return safe;\n+};\n+\n+const StringIterator =\n+  Function.prototype.call.bind(String.prototype[Symbol.iterator]);\n+const StringIteratorPrototype = Reflect.getPrototypeOf(StringIterator(''));\n+\n+function ErrorCaptureStackTrace(targetObject) {\n+  const stack = new Error().stack;\n+  // Remove the second line, which is this function\n+  targetObject.stack = stack.replace(/.*\\n.*/, '$1');\n+}\n+\n+primordials.exports = {\n+  makeSafe, // exported for testing\n+  internalBinding(mod) {\n+    if (mod === 'config') {\n+      return {\n+        hasIntl: false,\n+      };\n+    }\n+    throw new Error(`unknown module: \"${mod}\"`);\n+  },\n+  Array,\n+  ArrayIsArray: Array.isArray,\n+  ArrayPrototypeFilter: Function.prototype.call.bind(Array.prototype.filter),\n+  ArrayPrototypeForEach: Function.prototype.call.bind(Array.prototype.forEach),\n+  ArrayPrototypeIncludes:\n+    Function.prototype.call.bind(Array.prototype.includes),\n+  ArrayPrototypeIndexOf: Function.prototype.call.bind(Array.prototype.indexOf),\n+  ArrayPrototypeJoin: Function.prototype.call.bind(Array.prototype.join),\n+  ArrayPrototypeMap: Function.prototype.call.bind(Array.prototype.map),\n+  ArrayPrototypePop: Function.prototype.call.bind(Array.prototype.pop),\n+  ArrayPrototypePush: Function.prototype.call.bind(Array.prototype.push),\n+  ArrayPrototypePushApply: Function.apply.bind(Array.prototype.push),\n+  ArrayPrototypeSlice: Function.prototype.call.bind(Array.prototype.slice),\n+  ArrayPrototypeSort: Function.prototype.call.bind(Array.prototype.sort),\n+  ArrayPrototypeSplice: Function.prototype.call.bind(Array.prototype.splice),\n+  ArrayPrototypeUnshift: Function.prototype.call.bind(Array.prototype.unshift),\n+  BigIntPrototypeValueOf:\n+    Function.prototype.call.bind(BigInt.prototype.valueOf),\n+  BooleanPrototypeValueOf:\n+    Function.prototype.call.bind(Boolean.prototype.valueOf),\n+  DatePrototypeGetTime: Function.prototype.call.bind(Date.prototype.getTime),\n+  DatePrototypeToISOString:\n+    Function.prototype.call.bind(Date.prototype.toISOString),\n+  DatePrototypeToString:\n+    Function.prototype.call.bind(Date.prototype.toString),\n+  ErrorCaptureStackTrace,\n+  ErrorPrototypeToString:\n+    Function.prototype.call.bind(Error.prototype.toString),\n+  FunctionPrototypeBind: Function.prototype.call.bind(Function.prototype.bind),\n+  FunctionPrototypeCall:\n+    Function.prototype.call.bind(Function.prototype.call),\n+  FunctionPrototypeToString:\n+    Function.prototype.call.bind(Function.prototype.toString),\n+  globalThis: (typeof globalThis === 'undefined') ? commonjsGlobal : globalThis,\n+  JSONStringify: JSON.stringify,\n+  MapPrototypeGetSize: getGetter(Map, 'size'),\n+  MapPrototypeEntries: Function.prototype.call.bind(Map.prototype.entries),\n+  MathFloor: Math.floor,\n+  MathMax: Math.max,\n+  MathMin: Math.min,\n+  MathRound: Math.round,\n+  MathSqrt: Math.sqrt,\n+  MathTrunc: Math.trunc,\n+  Number,\n+  NumberIsFinite: Number.isFinite,\n+  NumberIsNaN: Number.isNaN,\n+  NumberParseFloat: Number.parseFloat,\n+  NumberParseInt: Number.parseInt,\n+  NumberPrototypeToString: Function.prototype.call.bind(Number.prototype.toString),\n+  NumberPrototypeValueOf:\n+    Function.prototype.call.bind(Number.prototype.valueOf),\n+  Object,\n+  ObjectAssign: Object.assign,\n+  ObjectCreate: Object.create,\n+  ObjectDefineProperty: Object.defineProperty,\n+  ObjectGetOwnPropertyDescriptor: Object.getOwnPropertyDescriptor,\n+  ObjectGetOwnPropertyNames: Object.getOwnPropertyNames,\n+  ObjectGetOwnPropertySymbols: Object.getOwnPropertySymbols,\n+  ObjectGetPrototypeOf: Object.getPrototypeOf,\n+  ObjectIs: Object.is,\n+  ObjectKeys: Object.keys,\n+  ObjectPrototypeHasOwnProperty:\n+    Function.prototype.call.bind(Object.prototype.hasOwnProperty),\n+  ObjectPrototypePropertyIsEnumerable:\n+    Function.prototype.call.bind(Object.prototype.propertyIsEnumerable),\n+  ObjectSeal: Object.seal,\n+  ObjectSetPrototypeOf: Object.setPrototypeOf,\n+  ReflectApply: Reflect.apply,\n+  ReflectOwnKeys: Reflect.ownKeys,\n+  RegExp,\n+  RegExpPrototypeExec: Function.prototype.call.bind(RegExp.prototype.exec),\n+  RegExpPrototypeSymbolReplace: Function.prototype.call.bind(RegExp.prototype[Symbol.replace]),\n+  RegExpPrototypeSymbolSplit: Function.prototype.call.bind(RegExp.prototype[Symbol.split]),\n+  RegExpPrototypeTest: Function.prototype.call.bind(RegExp.prototype.test),\n+  RegExpPrototypeToString:\n+    Function.prototype.call.bind(RegExp.prototype.toString),\n+  SafeStringIterator: createSafeIterator(\n+    StringIterator,\n+    Function.prototype.call.bind(StringIteratorPrototype.next),\n+  ),\n+  SafeMap: makeSafe(\n+    Map,\n+    class SafeMap extends Map {\n+      constructor(i) { super(i); } // eslint-disable-line no-useless-constructor\n+    }),\n+  SafeSet: makeSafe(\n+    Set,\n+    class SafeSet extends Set {\n+      constructor(i) { super(i); } // eslint-disable-line no-useless-constructor\n+    }),\n+  SetPrototypeGetSize: getGetter(Set, 'size'),\n+  SetPrototypeValues: Function.prototype.call.bind(Set.prototype.values),\n+  String,\n+  StringPrototypeCharCodeAt:\n+    Function.prototype.call.bind(String.prototype.charCodeAt),\n+  StringPrototypeCodePointAt:\n+    Function.prototype.call.bind(String.prototype.codePointAt),\n+  StringPrototypeEndsWith:\n+    Function.prototype.call.bind(String.prototype.endsWith),\n+  StringPrototypeIncludes:\n+    Function.prototype.call.bind(String.prototype.includes),\n+  StringPrototypeIndexOf:\n+    Function.prototype.call.bind(String.prototype.indexOf),\n+  StringPrototypeLastIndexOf:\n+    Function.prototype.call.bind(String.prototype.lastIndexOf),\n+  StringPrototypeNormalize:\n+    Function.prototype.call.bind(String.prototype.normalize),\n+  StringPrototypePadEnd:\n+    Function.prototype.call.bind(String.prototype.padEnd),\n+  StringPrototypePadStart:\n+    Function.prototype.call.bind(String.prototype.padStart),\n+  StringPrototypeRepeat: Function.prototype.call.bind(String.prototype.repeat),\n+  StringPrototypeReplace:\n+    Function.prototype.call.bind(String.prototype.replace),\n+  StringPrototypeReplaceAll:\n+    Function.prototype.call.bind(String.prototype.replaceAll),\n+  StringPrototypeSlice: Function.prototype.call.bind(String.prototype.slice),\n+  StringPrototypeSplit: Function.prototype.call.bind(String.prototype.split),\n+  StringPrototypeStartsWith: Function.prototype.call.bind(String.prototype.startsWith),\n+  StringPrototypeToLowerCase:\n+    Function.prototype.call.bind(String.prototype.toLowerCase),\n+  StringPrototypeTrim: Function.prototype.call.bind(String.prototype.trim),\n+  StringPrototypeValueOf:\n+    Function.prototype.call.bind(String.prototype.valueOf),\n+  SymbolPrototypeToString:\n+    Function.prototype.call.bind(Symbol.prototype.toString),\n+  SymbolPrototypeValueOf:\n+    Function.prototype.call.bind(Symbol.prototype.valueOf),\n+  SymbolIterator: Symbol.iterator,\n+  SymbolFor: Symbol.for,\n+  SymbolToStringTag: Symbol.toStringTag,\n+  TypedArrayPrototypeGetLength: getterCaller('length'),\n+  Uint8Array,\n+  uncurryThis,\n+};\n+\n+// Node 14\n+/* c8 ignore start */\n+if (!String.prototype.replaceAll) {\n+  // Lifted and simplified from core-js for the moment.  Will remove when we\n+  // drop node 14 support.\n+\n+  function requireObjectCoercible(it) {\n+    if (it == null) throw new TypeError(\"Can't call method on \" + it);\n+    return it;\n+  }\n+\n+  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n+    const tailPos = position + matched.length;\n+    const m = captures.length;\n+    let symbols = /\\$([$&'`]|\\d{1,2})/;\n+    if (namedCaptures !== undefined) {\n+      namedCaptures = Object(requireObjectCoercible(namedCaptures));\n+      symbols = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\n+    }\n+    return replacement.replace(symbols, (match, ch) => {\n+      let capture;\n+      switch (ch.charAt(0)) {\n+        case '$': return '$';\n+        case '&': return matched;\n+        case '`': return str.slice(0, position);\n+        case \"'\": return str.slice(tailPos);\n+        case '<':\n+          capture = namedCaptures[ch.slice(1, -1)];\n+          break;\n+        default: { // \\d\\d?\n+          const n = +ch;\n+          if (n === 0) return match;\n+          if (n > m) {\n+            const f = Math.floor(n / 10);\n+            if (f === 0) return match;\n+            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n+            return match;\n+          }\n+          capture = captures[n - 1];\n+        }\n+      }\n+      return capture === undefined ? '' : capture;\n+    });\n+  }\n+\n+  primordials.exports.StringPrototypeReplaceAll = (str, searchValue, replaceValue) => {\n+    const O = requireObjectCoercible(str);\n+    let IS_REG_EXP, flags, replacer, replacement;\n+    let position = 0;\n+    let endOfLastMatch = 0;\n+    let result = '';\n+    if (searchValue != null) {\n+      IS_REG_EXP = searchValue instanceof RegExp;\n+      if (IS_REG_EXP) {\n+        flags = searchValue.flags;\n+        if (!~flags.indexOf('g')) {\n+          throw new TypeError('`.replaceAll` does not allow non-global regexes');\n+        }\n+      }\n+      replacer = searchValue[Symbol.replace];\n+      if (replacer) {\n+        return replacer.call(searchValue, O, replaceValue);\n+      }\n+    }\n+    const string = String(O);\n+    const searchString = String(searchValue);\n+    const functionalReplace = (typeof replaceValue === 'function');\n+    if (!functionalReplace) replaceValue = String(replaceValue);\n+    const searchLength = searchString.length;\n+    const advanceBy = Math.max(1, searchLength);\n+    position = string.indexOf(searchString, 0);\n+    while (position !== -1) {\n+      replacement = functionalReplace ?\n+        String(replaceValue(searchString, position, string)) :\n+        getSubstitution(searchString, string, position, [], undefined, replaceValue);\n+      result += string.slice(endOfLastMatch, position) + replacement;\n+      endOfLastMatch = position + searchLength;\n+      position = string.indexOf(searchString, position + advanceBy);\n+    }\n+    if (endOfLastMatch < string.length) {\n+      result += string.slice(endOfLastMatch);\n+    }\n+    return result;\n+  };\n+}\n+/* c8 ignore stop */\n+\n+var primordialsExports = primordials.exports;\n+\n+const ALL_PROXIES = new WeakMap();\n+\n+// Wrap Proxy's to remember their details.\n+class Prxy {\n+  constructor(target, handler) {\n+    const p = new Proxy(target, handler);\n+    ALL_PROXIES.set(p, [target, handler]);\n+    // eslint-disable-next-line no-constructor-return\n+    return p;\n+  }\n+  static getProxyDetails(obj, getFullProxy = true) {\n+    const deets = ALL_PROXIES.get(obj);\n+    if (!deets) {\n+      return undefined;\n+    }\n+    if (getFullProxy) {\n+      return deets;\n+    }\n+    return deets[0];\n+  }\n+  static revocable(target, handler) {\n+    const p = Proxy.revocable(target, handler);\n+    ALL_PROXIES.set(p.proxy, [target, handler]);\n+    const revoke = p.revoke;\n+    p.revoke = () => {\n+      ALL_PROXIES.set(p.proxy, [null, null]);\n+      revoke();\n+    };\n+    return p;\n+  }\n+}\n+\n+var proxy = {\n+  getProxyDetails: Prxy.getProxyDetails.bind(Prxy),\n+  Proxy: Prxy,\n+};\n+\n+const prxy = proxy;\n+const ALL_PROPERTIES = 0;\n+const ONLY_ENUMERABLE = 2;\n+const kPending = Symbol('kPending');\n+const kRejected = Symbol('kRejected');\n+\n+function getOwnNonIndexProperties(a, filter = ONLY_ENUMERABLE) {\n+  const desc = Object.getOwnPropertyDescriptors(a);\n+  const ret = [];\n+  for (const [k, v] of Object.entries(desc)) {\n+    if (!/^(0|[1-9][0-9]*)$/.test(k) ||\n+        (parseInt(k, 10) >= (2 ** 32 - 1))) { // Arrays are limited in size\n+      if ((filter === ONLY_ENUMERABLE) && !v.enumerable) {\n+        continue;\n+      }\n+      ret.push(k);\n+    }\n+  }\n+  for (const s of Object.getOwnPropertySymbols(a)) {\n+    const v = Object.getOwnPropertyDescriptor(a, s);\n+    if ((filter === ONLY_ENUMERABLE) && !v.enumerable) {\n+      continue;\n+    }\n+    ret.push(s);\n+  }\n+  return ret;\n+}\n+\n+var util$1 = {\n+  constants: {\n+    kPending,\n+    kRejected,\n+    ALL_PROPERTIES,\n+    ONLY_ENUMERABLE,\n+  },\n+  getOwnNonIndexProperties,\n+  getPromiseDetails() { return [kPending, undefined]; },\n+  getProxyDetails: prxy.getProxyDetails,\n+  Proxy: prxy.Proxy,\n+  previewEntries(val) {\n+    return [[], false];\n+  },\n+  getConstructorName(val) {\n+    if (!val || typeof val !== 'object') {\n+      throw new Error('Invalid object');\n+    }\n+    if (val.constructor && val.constructor.name) {\n+      return val.constructor.name;\n+    }\n+    const str = Object.prototype.toString.call(val);\n+    // e.g. [object Boolean]\n+    const m = str.match(/^\\[object ([^\\]]+)\\]/);\n+    if (m) {\n+      return m[1];\n+    }\n+    return 'Object';\n+  },\n+  getExternalValue() { return BigInt(0); },\n+};\n+\n+// eslint-disable-next-line no-control-regex\n+const colorRegExp = /\\u001b\\[\\d\\d?m/g;\n+\n+var util = {\n+  customInspectSymbol: Symbol.for('nodejs.util.inspect.custom'),\n+  isError(e) {\n+    return e instanceof Error;\n+  },\n+  join: Array.prototype.join.call.bind(Array.prototype.join),\n+  removeColors(str) {\n+    return String.prototype.replace.call(str, colorRegExp, '');\n+  },\n+};\n+\n+function assert(p) {\n+  if (!p) {\n+    throw new Error('Assertion failed');\n+  }\n+}\n+\n+assert.fail = function fail(message) {\n+  throw new Error(message);\n+};\n+\n+var assert_1 = assert;\n+\n+/* eslint node-core/documented-errors: \"error\" */\n+\n+var errors;\n+var hasRequiredErrors;\n+\n+function requireErrors () {\n+\tif (hasRequiredErrors) return errors;\n+\thasRequiredErrors = 1;\n+\n+\t// The whole point behind this internal module is to allow Node.js to no\n+\t// longer be forced to treat every error message change as a semver-major\n+\t// change. The NodeError classes here all expose a `code` property whose\n+\t// value statically and permanently identifies the error. While the error\n+\t// message may change, the code should not.\n+\n+\tconst {\n+\t  ArrayIsArray,\n+\t  ArrayPrototypeIncludes,\n+\t  ArrayPrototypeIndexOf,\n+\t  ArrayPrototypeJoin,\n+\t  ArrayPrototypePop,\n+\t  ArrayPrototypePush,\n+\t  ArrayPrototypeSplice,\n+\t  ErrorCaptureStackTrace,\n+\t  ObjectDefineProperty,\n+\t  ReflectApply,\n+\t  RegExpPrototypeTest,\n+\t  SafeMap,\n+\t  StringPrototypeEndsWith,\n+\t  StringPrototypeIncludes,\n+\t  StringPrototypeSlice,\n+\t  StringPrototypeToLowerCase,\n+\t} = primordialsExports;\n+\n+\tconst messages = new SafeMap();\n+\tconst codes = {};\n+\n+\tconst classRegExp = /^([A-Z][a-z0-9]*)+$/;\n+\t// Sorted by a rough estimate on most frequently used entries.\n+\tconst kTypes = [\n+\t  'string',\n+\t  'function',\n+\t  'number',\n+\t  'object',\n+\t  // Accept 'Function' and 'Object' as alternative to the lower cased version.\n+\t  'Function',\n+\t  'Object',\n+\t  'boolean',\n+\t  'bigint',\n+\t  'symbol',\n+\t];\n+\n+\tlet userStackTraceLimit;\n+\tconst nodeInternalPrefix = '__node_internal_';\n+\n+\t// Lazily loaded\n+\tlet assert;\n+\tlet internalUtilInspect = null;\n+\tfunction lazyInternalUtilInspect() {\n+\t  if (!internalUtilInspect) {\n+\t    internalUtilInspect = requireInspect();\n+\t  }\n+\t  return internalUtilInspect;\n+\t}\n+\n+\tconst addCodeToName = hideStackFrames(function addCodeToName(err, name, code) {\n+\t  // Set the stack\n+\t  err = captureLargerStackTrace(err);\n+\t  // Add the error code to the name to include it in the stack trace.\n+\t  err.name = `${name} [${code}]`;\n+\t  // Access the stack to generate the error message including the error code\n+\t  // from the name.\n+\t  err.stack; // eslint-disable-line no-unused-expressions\n+\t  // Reset the name to the actual name.\n+\t  delete err.name;\n+\t});\n+\n+\tfunction makeNodeErrorWithCode(Base, key) {\n+\t  return function NodeError(...args) {\n+\t    const limit = Error.stackTraceLimit;\n+\t    Error.stackTraceLimit = 0;\n+\t    const error = new Base();\n+\t    // Reset the limit and setting the name property.\n+\t    Error.stackTraceLimit = limit;\n+\t    const message = getMessage(key, args, error);\n+\t    ObjectDefineProperty(error, 'message', {\n+\t      value: message,\n+\t      enumerable: false,\n+\t      writable: true,\n+\t      configurable: true,\n+\t    });\n+\t    ObjectDefineProperty(error, 'toString', {\n+\t      value() {\n+\t        return `${this.name} [${key}]: ${this.message}`;\n+\t      },\n+\t      enumerable: false,\n+\t      writable: true,\n+\t      configurable: true,\n+\t    });\n+\t    addCodeToName(error, Base.name, key);\n+\t    error.code = key;\n+\t    return error;\n+\t  };\n+\t}\n+\n+\t// This function removes unnecessary frames from Node.js core errors.\n+\tfunction hideStackFrames(fn) {\n+\t  // We rename the functions that will be hidden to cut off the stacktrace\n+\t  // at the outermost one\n+\t  const hidden = nodeInternalPrefix + fn.name;\n+\t  ObjectDefineProperty(fn, 'name', { value: hidden });\n+\t  return fn;\n+\t}\n+\n+\t// Utility function for registering the error codes. Only used here. Exported\n+\t// *only* to allow for testing.\n+\tfunction E(sym, val, def) {\n+\t  // Special case for SystemError that formats the error message differently\n+\t  // The SystemErrors only have SystemError as their base classes.\n+\t  messages.set(sym, val);\n+\t  codes[sym] = makeNodeErrorWithCode(def, sym);\n+\t}\n+\n+\tfunction getMessage(key, args, self) {\n+\t  const msg = messages.get(key);\n+\n+\t  if (assert === undefined) assert = assert_1;\n+\n+\t  assert(typeof msg === 'function');\n+\t  assert(\n+\t    msg.length <= args.length, // Default options do not count.\n+\t    `Code: ${key}; The provided arguments length (${args.length}) does not ` +\n+\t      `match the required ones (${msg.length}).`,\n+\t  );\n+\t  return ReflectApply(msg, self, args);\n+\t}\n+\n+\tconst captureLargerStackTrace = hideStackFrames(\n+\t  function captureLargerStackTrace(err) {\n+\t    userStackTraceLimit = Error.stackTraceLimit;\n+\t    Error.stackTraceLimit = Infinity;\n+\t    ErrorCaptureStackTrace(err);\n+\t    // Reset the limit\n+\t    Error.stackTraceLimit = userStackTraceLimit;\n+\n+\t    return err;\n+\t  });\n+\n+\tlet maxStack_ErrorName;\n+\tlet maxStack_ErrorMessage;\n+\t/**\n+\t * Returns true if `err.name` and `err.message` are equal to engine-specific\n+\t * values indicating max call stack size has been exceeded.\n+\t * \"Maximum call stack size exceeded\" in V8.\n+\t * @param {Error} err\n+\t * @returns {boolean}\n+\t */\n+\tfunction isStackOverflowError(err) {\n+\t  if (maxStack_ErrorMessage === undefined) {\n+\t    try {\n+\t      function overflowStack() { overflowStack(); }\n+\t      overflowStack();\n+\t    } catch (err) {\n+\t      maxStack_ErrorMessage = err.message;\n+\t      maxStack_ErrorName = err.name;\n+\t    }\n+\t  }\n+\n+\t  return err && err.name === maxStack_ErrorName &&\n+\t         err.message === maxStack_ErrorMessage;\n+\t}\n+\n+\terrors = {\n+\t  codes,\n+\t  hideStackFrames,\n+\t  isStackOverflowError,\n+\t};\n+\n+\tE('ERR_INVALID_ARG_TYPE',\n+\t  (name, expected, actual) => {\n+\t    assert(typeof name === 'string', \"'name' must be a string\");\n+\t    if (!ArrayIsArray(expected)) {\n+\t      expected = [expected];\n+\t    }\n+\n+\t    let msg = 'The ';\n+\t    if (StringPrototypeEndsWith(name, ' argument')) {\n+\t      // For cases like 'first argument'\n+\t      msg += `${name} `;\n+\t    } else {\n+\t      const type = StringPrototypeIncludes(name, '.') ? 'property' : 'argument';\n+\t      msg += `\"${name}\" ${type} `;\n+\t    }\n+\t    msg += 'must be ';\n+\n+\t    const types = [];\n+\t    const instances = [];\n+\t    const other = [];\n+\n+\t    for (const value of expected) {\n+\t      assert(typeof value === 'string',\n+\t             'All expected entries have to be of type string');\n+\t      if (ArrayPrototypeIncludes(kTypes, value)) {\n+\t        ArrayPrototypePush(types, StringPrototypeToLowerCase(value));\n+\t      } else if (RegExpPrototypeTest(classRegExp, value)) {\n+\t        ArrayPrototypePush(instances, value);\n+\t      } else {\n+\t        assert(value !== 'object',\n+\t               'The value \"object\" should be written as \"Object\"');\n+\t        ArrayPrototypePush(other, value);\n+\t      }\n+\t    }\n+\n+\t    // Special handle `object` in case other instances are allowed to outline\n+\t    // the differences between each other.\n+\t    if (instances.length > 0) {\n+\t      const pos = ArrayPrototypeIndexOf(types, 'object');\n+\t      if (pos !== -1) {\n+\t        ArrayPrototypeSplice(types, pos, 1);\n+\t        ArrayPrototypePush(instances, 'Object');\n+\t      }\n+\t    }\n+\n+\t    if (types.length > 0) {\n+\t      if (types.length > 2) {\n+\t        const last = ArrayPrototypePop(types);\n+\t        msg += `one of type ${ArrayPrototypeJoin(types, ', ')}, or ${last}`;\n+\t      } else if (types.length === 2) {\n+\t        msg += `one of type ${types[0]} or ${types[1]}`;\n+\t      } else {\n+\t        msg += `of type ${types[0]}`;\n+\t      }\n+\t      if (instances.length > 0 || other.length > 0)\n+\t        msg += ' or ';\n+\t    }\n+\n+\t    if (instances.length > 0) {\n+\t      if (instances.length > 2) {\n+\t        const last = ArrayPrototypePop(instances);\n+\t        msg +=\n+\t          `an instance of ${ArrayPrototypeJoin(instances, ', ')}, or ${last}`;\n+\t      } else {\n+\t        msg += `an instance of ${instances[0]}`;\n+\t        if (instances.length === 2) {\n+\t          msg += ` or ${instances[1]}`;\n+\t        }\n+\t      }\n+\t      if (other.length > 0)\n+\t        msg += ' or ';\n+\t    }\n+\n+\t    if (other.length > 0) {\n+\t      if (other.length > 2) {\n+\t        const last = ArrayPrototypePop(other);\n+\t        msg += `one of ${ArrayPrototypeJoin(other, ', ')}, or ${last}`;\n+\t      } else if (other.length === 2) {\n+\t        msg += `one of ${other[0]} or ${other[1]}`;\n+\t      } else {\n+\t        if (StringPrototypeToLowerCase(other[0]) !== other[0])\n+\t          msg += 'an ';\n+\t        msg += `${other[0]}`;\n+\t      }\n+\t    }\n+\n+\t    if (actual == null) {\n+\t      msg += `. Received ${actual}`;\n+\t    } else if (typeof actual === 'function' && actual.name) {\n+\t      msg += `. Received function ${actual.name}`;\n+\t    } else if (typeof actual === 'object') {\n+\t      if (actual.constructor && actual.constructor.name) {\n+\t        msg += `. Received an instance of ${actual.constructor.name}`;\n+\t      } else {\n+\t        const inspected = lazyInternalUtilInspect()\n+\t          .inspect(actual, { depth: -1 });\n+\t        msg += `. Received ${inspected}`;\n+\t      }\n+\t    } else {\n+\t      let inspected = lazyInternalUtilInspect()\n+\t        .inspect(actual, { colors: false });\n+\t      if (inspected.length > 25)\n+\t        inspected = `${StringPrototypeSlice(inspected, 0, 25)}...`;\n+\t      msg += `. Received type ${typeof actual} (${inspected})`;\n+\t    }\n+\t    return msg;\n+\t  }, TypeError);\n+\treturn errors;\n+}\n+\n+const { getConstructorName } = util$1;\n+\n+// From https://mathiasbynens.be/notes/globalthis\n+/* c8 ignore start */ // only needed for node 10\n+(function() {\n+  if (typeof globalThis === 'object') return;\n+  Object.defineProperty(Object.prototype, '__magic__', {\n+    get: function() {\n+      return this;\n+    },\n+    configurable: true,\n+  });\n+  // eslint-disable-next-line no-undef\n+  __magic__.globalThis = __magic__;\n+  delete Object.prototype.__magic__;\n+}());\n+/* c8 ignore stop */\n+\n+function constructorNamed(val, ...name) {\n+  // Pass in names rather than types, in case SharedArrayBuffer (e.g.) isn't\n+  // in your browser\n+  for (const n of name) {\n+    const typ = globalThis[n];\n+    if (typ) {\n+      if (val instanceof typ) {\n+        return true;\n+      }\n+    }\n+  }\n+  // instanceOf doesn't work across vm boundaries, so check the whole\n+  // inheritance chain\n+  while (val) {\n+    if (typeof val !== 'object') {\n+      return false;\n+    }\n+    if (name.indexOf(getConstructorName(val)) >= 0) {\n+      return true;\n+    }\n+    val = Object.getPrototypeOf(val);\n+  }\n+  return false;\n+}\n+\n+function checkBox(cls) {\n+  return (val) => {\n+    if (!constructorNamed(val, cls.name)) {\n+      return false;\n+    }\n+    try {\n+      cls.prototype.valueOf.call(val);\n+    } catch {\n+      return false;\n+    }\n+    return true;\n+  };\n+}\n+\n+const isStringObject = checkBox(String);\n+const isNumberObject = checkBox(Number);\n+const isBooleanObject = checkBox(Boolean);\n+const isBigIntObject = checkBox(BigInt);\n+const isSymbolObject = checkBox(Symbol);\n+\n+var types = {\n+  isAsyncFunction(val) {\n+    return (typeof val === 'function') &&\n+      Function.prototype.toString.call(val).startsWith('async');\n+  },\n+  isGeneratorFunction(val) {\n+    return (typeof val === 'function') &&\n+      Function.prototype.toString.call(val).match(/^(async\\s+)?function *\\*/);\n+  },\n+  isAnyArrayBuffer(val) {\n+    return constructorNamed(val, 'ArrayBuffer', 'SharedArrayBuffer');\n+  },\n+  isArrayBuffer(val) {\n+    return constructorNamed(val, 'ArrayBuffer');\n+  },\n+  isArgumentsObject(val) {\n+    const cond = (val !== null) &&\n+      (typeof val === 'object') &&\n+      !Array.isArray(val) &&\n+      (typeof val.length === 'number') &&\n+      (val.length === (val.length | 0)) &&\n+      (val.length >= 0);\n+    if (cond) {\n+      const prop = Object.getOwnPropertyDescriptor(val, 'callee');\n+      return prop && !prop.enumerable;\n+    }\n+    return false;\n+  },\n+  isBoxedPrimitive(val) {\n+    return isNumberObject(val) ||\n+      isStringObject(val) ||\n+      isBooleanObject(val) ||\n+      isBigIntObject(val) ||\n+      isSymbolObject(val);\n+  },\n+  isDataView(val) {\n+    return constructorNamed(val, 'DataView');\n+  },\n+  isExternal(val) {\n+    return (typeof val === 'object') &&\n+      (Object.isFrozen(val)) &&\n+      (Object.getPrototypeOf(val) == null);\n+  },\n+  isMap(val) {\n+    if (!constructorNamed(val, 'Map')) {\n+      return false;\n+    }\n+    try {\n+      val.has();\n+    } catch {\n+      return false;\n+    }\n+    return true;\n+  },\n+  isMapIterator(val) {\n+    return Object.prototype.toString.call(Object.getPrototypeOf(val)) ===\n+      '[object Map Iterator]';\n+  },\n+  isModuleNamespaceObject(val) {\n+    // TODO: this is weak and easily faked\n+    return val &&\n+      (typeof val === 'object') &&\n+      (val[Symbol.toStringTag] === 'Module');\n+  },\n+  isNativeError(val) {\n+    return (val instanceof Error) && constructorNamed(\n+      val,\n+      'Error',\n+      'EvalError',\n+      'RangeError',\n+      'ReferenceError',\n+      'SyntaxError',\n+      'TypeError',\n+      'URIError',\n+      'AggregateError');\n+  },\n+  isPromise(val) {\n+    return constructorNamed(val, 'Promise');\n+  },\n+  isSet(val) {\n+    if (!constructorNamed(val, 'Set')) {\n+      return false;\n+    }\n+    try {\n+      val.has();\n+    } catch {\n+      return false;\n+    }\n+    return true;\n+  },\n+  isSetIterator(val) {\n+    return Object.prototype.toString.call(Object.getPrototypeOf(val)) ===\n+      '[object Set Iterator]';\n+  },\n+  isWeakMap(val) {\n+    return constructorNamed(val, 'WeakMap');\n+  },\n+  isWeakSet(val) {\n+    return constructorNamed(val, 'WeakSet');\n+  },\n+  isRegExp(val) {\n+    return constructorNamed(val, 'RegExp');\n+  },\n+  isDate(val) {\n+    if (constructorNamed(val, 'Date')) {\n+      try {\n+        Date.prototype.getTime.call(val); // Throws for pseudo-dates\n+        return true;\n+      } catch {\n+        // Ignored\n+      }\n+    }\n+    return false;\n+  },\n+  isTypedArray(val) {\n+    return constructorNamed(\n+      val,\n+      'Int8Array',\n+      'Uint8Array',\n+      'Uint8ClampedArray',\n+      'Int16Array',\n+      'Uint16Array',\n+      'Int32Array',\n+      'Uint32Array',\n+      'Float32Array',\n+      'Float64Array',\n+      'BigInt64Array',\n+      'BigUint64Array',\n+    );\n+  },\n+  isStringObject,\n+  isNumberObject,\n+  isBooleanObject,\n+  isBigIntObject,\n+  isSymbolObject,\n+};\n+\n+var realm = {};\n+\n+// This is a snapshot from node 18.11.0\n+const builtinModules = [\n+  '_http_agent',\n+  '_http_client',\n+  '_http_common',\n+  '_http_incoming',\n+  '_http_outgoing',\n+  '_http_server',\n+  '_stream_duplex',\n+  '_stream_passthrough',\n+  '_stream_readable',\n+  '_stream_transform',\n+  '_stream_wrap',\n+  '_stream_writable',\n+  '_tls_common',\n+  '_tls_wrap',\n+  'assert',\n+  'assert/strict',\n+  'async_hooks',\n+  'buffer',\n+  'child_process',\n+  'cluster',\n+  'console',\n+  'constants',\n+  'crypto',\n+  'dgram',\n+  'diagnostics_channel',\n+  'dns',\n+  'dns/promises',\n+  'domain',\n+  'events',\n+  'fs',\n+  'fs/promises',\n+  'http',\n+  'http2',\n+  'https',\n+  'inspector',\n+  'module',\n+  'Module',\n+  'net',\n+  'os',\n+  'path',\n+  'path/posix',\n+  'path/win32',\n+  'perf_hooks',\n+  'process',\n+  'punycode',\n+  'querystring',\n+  'readline',\n+  'readline/promises',\n+  'repl',\n+  'stream',\n+  'stream/consumers',\n+  'stream/promises',\n+  'stream/web',\n+  'string_decoder',\n+  'sys',\n+  'timers',\n+  'timers/promises',\n+  'tls',\n+  'trace_events',\n+  'tty',\n+  'url',\n+  'util',\n+  'util/types',\n+  'v8',\n+  'vm',\n+  'wasi',\n+  'worker_threads',\n+  'zlib',\n+];\n+\n+realm.BuiltinModule = {\n+  exists(s) {\n+    return s.startsWith('internal/') || builtinModules.indexOf(s) !== -1;\n+  },\n+};\n+\n+var validators;\n+var hasRequiredValidators;\n+\n+function requireValidators () {\n+\tif (hasRequiredValidators) return validators;\n+\thasRequiredValidators = 1;\n+\n+\tconst {\n+\t  ArrayIsArray,\n+\t} = primordialsExports;\n+\n+\tconst {\n+\t  hideStackFrames,\n+\t  codes: {\n+\t    ERR_INVALID_ARG_TYPE,\n+\t  },\n+\t} = requireErrors();\n+\n+\t/**\n+\t * @param {unknown} value\n+\t * @param {string} name\n+\t * @param {{\n+\t *   allowArray?: boolean,\n+\t *   allowFunction?: boolean,\n+\t *   nullable?: boolean\n+\t * }} [options]\n+\t */\n+\tconst validateObject = hideStackFrames(\n+\t  (value, name, options) => {\n+\t    const useDefaultOptions = options == null;\n+\t    const allowArray = useDefaultOptions ? false : options.allowArray;\n+\t    const allowFunction = useDefaultOptions ? false : options.allowFunction;\n+\t    const nullable = useDefaultOptions ? false : options.nullable;\n+\t    if ((!nullable && value === null) ||\n+\t        (!allowArray && ArrayIsArray(value)) ||\n+\t        (typeof value !== 'object' && (\n+\t          !allowFunction || typeof value !== 'function'\n+\t        ))) {\n+\t      throw new ERR_INVALID_ARG_TYPE(name, 'Object', value);\n+\t    }\n+\t  });\n+\n+\tfunction validateString(value, name) {\n+\t  if (typeof value !== 'string')\n+\t    throw new ERR_INVALID_ARG_TYPE(name, 'string', value);\n+\t}\n+\n+\tvalidators = {\n+\t  validateObject,\n+\t  validateString,\n+\t};\n+\treturn validators;\n+}\n+\n+var constants;\n+var hasRequiredConstants;\n+\n+function requireConstants () {\n+\tif (hasRequiredConstants) return constants;\n+\thasRequiredConstants = 1;\n+\n+\tconstants = {\n+\t  // Non-alphabetic chars.\n+\t  CHAR_DOT: 46, /* . */\n+\t  CHAR_FORWARD_SLASH: 47, /* / */\n+\t  CHAR_BACKWARD_SLASH: 92, /* \\ */\n+\t};\n+\treturn constants;\n+}\n+\n+var path;\n+var hasRequiredPath;\n+\n+function requirePath () {\n+\tif (hasRequiredPath) return path;\n+\thasRequiredPath = 1;\n+\n+\tconst {\n+\t  StringPrototypeCharCodeAt,\n+\t  StringPrototypeLastIndexOf,\n+\t  StringPrototypeSlice,\n+\t} = primordialsExports;\n+\n+\tconst {\n+\t  CHAR_DOT,\n+\t  CHAR_FORWARD_SLASH,\n+\t} = requireConstants();\n+\tconst {\n+\t  validateString,\n+\t} = requireValidators();\n+\n+\tfunction posixCwd() {\n+\t  return '/'; // Fake for the web case\n+\t}\n+\n+\tfunction isPosixPathSeparator(code) {\n+\t  return code === CHAR_FORWARD_SLASH;\n+\t}\n+\n+\t// Resolves . and .. elements in a path with directory names\n+\tfunction normalizeString(path, allowAboveRoot, separator, isPathSeparator) {\n+\t  let res = '';\n+\t  let lastSegmentLength = 0;\n+\t  let lastSlash = -1;\n+\t  let dots = 0;\n+\t  let code = 0;\n+\t  for (let i = 0; i <= path.length; ++i) {\n+\t    if (i < path.length)\n+\t      code = StringPrototypeCharCodeAt(path, i);\n+\t    else if (isPathSeparator(code))\n+\t      break;\n+\t    else\n+\t      code = CHAR_FORWARD_SLASH;\n+\n+\t    if (isPathSeparator(code)) {\n+\t      if (lastSlash === i - 1 || dots === 1) ; else if (dots === 2) {\n+\t        if (res.length < 2 || lastSegmentLength !== 2 ||\n+\t            StringPrototypeCharCodeAt(res, res.length - 1) !== CHAR_DOT ||\n+\t            StringPrototypeCharCodeAt(res, res.length - 2) !== CHAR_DOT) {\n+\t          if (res.length > 2) {\n+\t            const lastSlashIndex = StringPrototypeLastIndexOf(res, separator);\n+\t            if (lastSlashIndex === -1) {\n+\t              res = '';\n+\t              lastSegmentLength = 0;\n+\t            } else {\n+\t              res = StringPrototypeSlice(res, 0, lastSlashIndex);\n+\t              lastSegmentLength =\n+\t                res.length - 1 - StringPrototypeLastIndexOf(res, separator);\n+\t            }\n+\t            lastSlash = i;\n+\t            dots = 0;\n+\t            continue;\n+\t          } else if (res.length !== 0) {\n+\t            res = '';\n+\t            lastSegmentLength = 0;\n+\t            lastSlash = i;\n+\t            dots = 0;\n+\t            continue;\n+\t          }\n+\t        }\n+\t        if (allowAboveRoot) {\n+\t          res += res.length > 0 ? `${separator}..` : '..';\n+\t          lastSegmentLength = 2;\n+\t        }\n+\t      } else {\n+\t        if (res.length > 0)\n+\t          res += `${separator}${StringPrototypeSlice(path, lastSlash + 1, i)}`;\n+\t        else\n+\t          res = StringPrototypeSlice(path, lastSlash + 1, i);\n+\t        lastSegmentLength = i - lastSlash - 1;\n+\t      }\n+\t      lastSlash = i;\n+\t      dots = 0;\n+\t    } else if (code === CHAR_DOT && dots !== -1) {\n+\t      ++dots;\n+\t    } else {\n+\t      dots = -1;\n+\t    }\n+\t  }\n+\t  return res;\n+\t}\n+\n+\tfunction resolve(...args) {\n+\t  let resolvedPath = '';\n+\t  let resolvedAbsolute = false;\n+\n+\t  for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n+\t    const path = i >= 0 ? args[i] : posixCwd();\n+\n+\t    validateString(path, 'path');\n+\n+\t    // Skip empty entries\n+\t    if (path.length === 0) {\n+\t      continue;\n+\t    }\n+\n+\t    resolvedPath = `${path}/${resolvedPath}`;\n+\t    resolvedAbsolute =\n+\t      StringPrototypeCharCodeAt(path, 0) === CHAR_FORWARD_SLASH;\n+\t  }\n+\n+\t  // At this point the path should be resolved to a full absolute path, but\n+\t  // handle relative paths to be safe (might happen when process.cwd() fails)\n+\n+\t  // Normalize the path\n+\t  resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/',\n+\t                                 isPosixPathSeparator);\n+\n+\t  if (resolvedAbsolute) {\n+\t    return `/${resolvedPath}`;\n+\t  }\n+\t  return resolvedPath.length > 0 ? resolvedPath : '.';\n+\t}\n+\n+\tpath = {\n+\t  resolve,\n+\t};\n+\treturn path;\n+}\n+\n+var url;\n+var hasRequiredUrl;\n+\n+function requireUrl () {\n+\tif (hasRequiredUrl) return url;\n+\thasRequiredUrl = 1;\n+\n+\t// The main use case is browsers, and I rarely test on Windows, so all of the\n+\t// Windows-specific stuff is removed.\n+\n+\tconst {\n+\t  StringPrototypeCharCodeAt,\n+\t  StringPrototypeIncludes,\n+\t  StringPrototypeReplace,\n+\t} = primordialsExports;\n+\n+\tconst {\n+\t  CHAR_FORWARD_SLASH,\n+\t} = requireConstants();\n+\tconst path = requirePath();\n+\n+\tconst percentRegEx = /%/g;\n+\tconst backslashRegEx = /\\\\/g;\n+\tconst newlineRegEx = /\\n/g;\n+\tconst carriageReturnRegEx = /\\r/g;\n+\tconst tabRegEx = /\\t/g;\n+\n+\tfunction encodePathChars(filepath) {\n+\t  if (StringPrototypeIncludes(filepath, '%'))\n+\t    filepath = StringPrototypeReplace(filepath, percentRegEx, '%25');\n+\t  // In posix, backslash is a valid character in paths:\n+\t  if (StringPrototypeIncludes(filepath, '\\\\'))\n+\t    filepath = StringPrototypeReplace(filepath, backslashRegEx, '%5C');\n+\t  if (StringPrototypeIncludes(filepath, '\\n'))\n+\t    filepath = StringPrototypeReplace(filepath, newlineRegEx, '%0A');\n+\t  if (StringPrototypeIncludes(filepath, '\\r'))\n+\t    filepath = StringPrototypeReplace(filepath, carriageReturnRegEx, '%0D');\n+\t  if (StringPrototypeIncludes(filepath, '\\t'))\n+\t    filepath = StringPrototypeReplace(filepath, tabRegEx, '%09');\n+\t  return filepath;\n+\t}\n+\n+\tfunction pathToFileURL(filepath) {\n+\t  const outURL = new URL('file://');\n+\n+\t  let resolved = path.resolve(filepath);\n+\t  // path.resolve strips trailing slashes so we must add them back\n+\t  const filePathLast = StringPrototypeCharCodeAt(filepath,\n+\t                                                 filepath.length - 1);\n+\t  if ((filePathLast === CHAR_FORWARD_SLASH) &&\n+\t      resolved[resolved.length - 1] !== path.sep)\n+\t    resolved += '/';\n+\t  outURL.pathname = encodePathChars(resolved);\n+\n+\t  return outURL;\n+\t}\n+\n+\turl = {\n+\t  pathToFileURL,\n+\t};\n+\treturn url;\n+}\n+\n+var buffer = {};\n+\n+var hasRequiredBuffer;\n+\n+function requireBuffer () {\n+\tif (hasRequiredBuffer) return buffer;\n+\thasRequiredBuffer = 1;\n+\n+\tclass Buffer {\n+\t  hexSlice(start = 0, end) {\n+\t    return Array.prototype.map.call(\n+\t      this.slice(start, end),\n+\t      (x) => ('00' + x.toString(16)).slice(-2))\n+\t      .join('');\n+\t  }\n+\t}\n+\n+\tbuffer.Buffer = Buffer;\n+\treturn buffer;\n+}\n+\n+var inspect_1;\n+var hasRequiredInspect;\n+\n+function requireInspect () {\n+\tif (hasRequiredInspect) return inspect_1;\n+\thasRequiredInspect = 1;\n+\n+\tconst primordials = primordialsExports;\n+\tconst {\n+\t  internalBinding,\n+\t  Array,\n+\t  ArrayIsArray,\n+\t  ArrayPrototypeFilter,\n+\t  ArrayPrototypeForEach,\n+\t  ArrayPrototypeIncludes,\n+\t  ArrayPrototypeIndexOf,\n+\t  ArrayPrototypeJoin,\n+\t  ArrayPrototypeMap,\n+\t  ArrayPrototypePop,\n+\t  ArrayPrototypePush,\n+\t  ArrayPrototypePushApply,\n+\t  ArrayPrototypeSlice,\n+\t  ArrayPrototypeSplice,\n+\t  ArrayPrototypeSort,\n+\t  ArrayPrototypeUnshift,\n+\t  BigIntPrototypeValueOf,\n+\t  BooleanPrototypeValueOf,\n+\t  DatePrototypeGetTime,\n+\t  DatePrototypeToISOString,\n+\t  DatePrototypeToString,\n+\t  ErrorPrototypeToString,\n+\t  FunctionPrototypeBind,\n+\t  FunctionPrototypeCall,\n+\t  FunctionPrototypeToString,\n+\t  JSONStringify,\n+\t  MapPrototypeGetSize,\n+\t  MapPrototypeEntries,\n+\t  MathFloor,\n+\t  MathMax,\n+\t  MathMin,\n+\t  MathRound,\n+\t  MathSqrt,\n+\t  MathTrunc,\n+\t  Number,\n+\t  NumberIsFinite,\n+\t  NumberIsNaN,\n+\t  NumberParseFloat,\n+\t  NumberParseInt,\n+\t  NumberPrototypeToString,\n+\t  NumberPrototypeValueOf,\n+\t  Object,\n+\t  ObjectAssign,\n+\t  ObjectDefineProperty,\n+\t  ObjectGetOwnPropertyDescriptor,\n+\t  ObjectGetOwnPropertyNames,\n+\t  ObjectGetOwnPropertySymbols,\n+\t  ObjectGetPrototypeOf,\n+\t  ObjectIs,\n+\t  ObjectKeys,\n+\t  ObjectPrototypeHasOwnProperty,\n+\t  ObjectPrototypePropertyIsEnumerable,\n+\t  ObjectSeal,\n+\t  ObjectSetPrototypeOf,\n+\t  ReflectApply,\n+\t  ReflectOwnKeys,\n+\t  RegExp,\n+\t  RegExpPrototypeExec,\n+\t  RegExpPrototypeSymbolReplace,\n+\t  RegExpPrototypeSymbolSplit,\n+\t  RegExpPrototypeToString,\n+\t  SafeStringIterator,\n+\t  SafeMap,\n+\t  SafeSet,\n+\t  SetPrototypeGetSize,\n+\t  SetPrototypeValues,\n+\t  String,\n+\t  StringPrototypeCharCodeAt,\n+\t  StringPrototypeCodePointAt,\n+\t  StringPrototypeIncludes,\n+\t  StringPrototypeIndexOf,\n+\t  StringPrototypeLastIndexOf,\n+\t  StringPrototypeNormalize,\n+\t  StringPrototypePadEnd,\n+\t  StringPrototypePadStart,\n+\t  StringPrototypeRepeat,\n+\t  StringPrototypeReplaceAll,\n+\t  StringPrototypeSlice,\n+\t  StringPrototypeSplit,\n+\t  StringPrototypeEndsWith,\n+\t  StringPrototypeStartsWith,\n+\t  StringPrototypeToLowerCase,\n+\t  StringPrototypeTrim,\n+\t  StringPrototypeValueOf,\n+\t  SymbolPrototypeToString,\n+\t  SymbolPrototypeValueOf,\n+\t  SymbolIterator,\n+\t  SymbolToStringTag,\n+\t  TypedArrayPrototypeGetLength,\n+\t  TypedArrayPrototypeGetSymbolToStringTag,\n+\t  Uint8Array,\n+\t  globalThis,\n+\t  uncurryThis,\n+\t} = primordials;\n+\n+\tconst {\n+\t  constants: {\n+\t    ALL_PROPERTIES,\n+\t    ONLY_ENUMERABLE,\n+\t    kPending,\n+\t    kRejected,\n+\t  },\n+\t  getOwnNonIndexProperties,\n+\t  getPromiseDetails,\n+\t  getProxyDetails,\n+\t  previewEntries,\n+\t  getConstructorName: internalGetConstructorName,\n+\t  getExternalValue,\n+\t  Proxy,\n+\t} = util$1;\n+\n+\tconst {\n+\t  customInspectSymbol,\n+\t  isError,\n+\t  join,\n+\t  removeColors,\n+\t} = util;\n+\n+\tconst {\n+\t  isStackOverflowError,\n+\t} = requireErrors();\n+\n+\tconst {\n+\t  isAsyncFunction,\n+\t  isGeneratorFunction,\n+\t  isAnyArrayBuffer,\n+\t  isArrayBuffer,\n+\t  isArgumentsObject,\n+\t  isBoxedPrimitive,\n+\t  isDataView,\n+\t  isExternal,\n+\t  isMap,\n+\t  isMapIterator,\n+\t  isModuleNamespaceObject,\n+\t  isNativeError,\n+\t  isPromise,\n+\t  isSet,\n+\t  isSetIterator,\n+\t  isWeakMap,\n+\t  isWeakSet,\n+\t  isRegExp,\n+\t  isDate,\n+\t  isTypedArray,\n+\t  isStringObject,\n+\t  isNumberObject,\n+\t  isBooleanObject,\n+\t  isBigIntObject,\n+\t} = types;\n+\n+\tconst assert = assert_1;\n+\n+\tconst { BuiltinModule } = realm;\n+\tconst {\n+\t  validateObject,\n+\t  validateString,\n+\t} = requireValidators();\n+\n+\tlet hexSlice;\n+\tlet internalUrl;\n+\n+\tfunction pathToFileUrlHref(filepath) {\n+\t  // Maintain node 14 compat\n+\t  // internalUrl ??= require('./internal/url');\n+\t  internalUrl = (internalUrl == null) ? requireUrl() : internalUrl;\n+\t  return internalUrl.pathToFileURL(filepath).href;\n+\t}\n+\n+\tconst builtInObjects = new SafeSet(\n+\t  ArrayPrototypeFilter(\n+\t    ObjectGetOwnPropertyNames(globalThis),\n+\t    (e) => RegExpPrototypeExec(/^[A-Z][a-zA-Z0-9]+$/, e) !== null,\n+\t  ),\n+\t);\n+\n+\t// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n+\tconst isUndetectableObject = (v) => typeof v === 'undefined' && v !== undefined;\n+\n+\t// These options must stay in sync with `getUserOptions`. So if any option will\n+\t// be added or removed, `getUserOptions` must also be updated accordingly.\n+\tconst inspectDefaultOptions = ObjectSeal({\n+\t  showHidden: false,\n+\t  depth: 2,\n+\t  colors: false,\n+\t  customInspect: true,\n+\t  showProxy: false,\n+\t  maxArrayLength: 100,\n+\t  maxStringLength: 10000,\n+\t  breakLength: 80,\n+\t  compact: 3,\n+\t  sorted: false,\n+\t  getters: false,\n+\t  numericSeparator: false,\n+\t});\n+\n+\tconst kObjectType = 0;\n+\tconst kArrayType = 1;\n+\tconst kArrayExtrasType = 2;\n+\n+\t/* eslint-disable no-control-regex */\n+\t// Work-arounds for Safari not implementing negative look-behinds.\n+\t// Remove all of this once Safari 16.4 is rolled out \"enough\".\n+\tlet strEscapeSequencesRegExp,\n+\t  strEscapeSequencesReplacer,\n+\t  strEscapeSequencesRegExpSingle,\n+\t  strEscapeSequencesReplacerSingle,\n+\t  extractedSplitNewLines;\n+\ttry {\n+\t  // Change from regex literals to RegExp constructors to avoid unrecoverable\n+\t  // syntax error at load time.\n+\t  strEscapeSequencesRegExp =\n+\t    // eslint-disable-next-line max-len\n+\t    new RegExp('[\\\\x00-\\\\x1f\\\\x27\\\\x5c\\\\x7f-\\\\x9f]|[\\\\ud800-\\\\udbff](?![\\\\udc00-\\\\udfff])|(?<![\\\\ud800-\\\\udbff])[\\\\udc00-\\\\udfff]');\n+\t  strEscapeSequencesReplacer =\n+\t    new RegExp(\n+\t      // eslint-disable-next-line max-len\n+\t      '[\\x00-\\\\x1f\\\\x27\\\\x5c\\\\x7f-\\\\x9f]|[\\\\ud800-\\\\udbff](?![\\\\udc00-\\\\udfff])|(?<![\\\\ud800-\\\\udbff])[\\\\udc00-\\\\udfff]',\n+\t      'g',\n+\t    );\n+\t  strEscapeSequencesRegExpSingle =\n+\t    // eslint-disable-next-line max-len\n+\t    new RegExp('[\\\\x00-\\\\x1f\\\\x5c\\\\x7f-\\\\x9f]|[\\\\ud800-\\\\udbff](?![\\\\udc00-\\\\udfff])|(?<![\\\\ud800-\\\\udbff])[\\\\udc00-\\\\udfff]');\n+\t  strEscapeSequencesReplacerSingle =\n+\t    // eslint-disable-next-line max-len\n+\t    new RegExp('[\\\\x00-\\\\x1f\\\\x5c\\\\x7f-\\\\x9f]|[\\\\ud800-\\\\udbff](?![\\\\udc00-\\\\udfff])|(?<![\\\\ud800-\\\\udbff])[\\\\udc00-\\\\udfff]', 'g');\n+\t  const extractedNewLineRe = new RegExp('(?<=\\\\n)');\n+\t  extractedSplitNewLines = (value) => RegExpPrototypeSymbolSplit(extractedNewLineRe, value);\n+\t  /* c8 ignore start */\n+\t  // CI doesn't run in an elderly runtime\n+\t} catch {\n+\t  // These are from a previous version of node,\n+\t  // see commit 76372607a6743cc75eae50ca58657c9e8a654428\n+\t  // dated 2021-12-06\n+\t  strEscapeSequencesRegExp = /[\\x00-\\x1f\\x27\\x5c\\x7f-\\x9f]/;\n+\t  strEscapeSequencesReplacer = /[\\x00-\\x1f\\x27\\x5c\\x7f-\\x9f]/g;\n+\t  strEscapeSequencesRegExpSingle = /[\\x00-\\x1f\\x5c\\x7f-\\x9f]/;\n+\t  strEscapeSequencesReplacerSingle = /[\\x00-\\x1f\\x5c\\x7f-\\x9f]/g;\n+\t  extractedSplitNewLines = (value) => {\n+\t    const lines = RegExpPrototypeSymbolSplit(/\\n/, value);\n+\t    const last = ArrayPrototypePop(lines);\n+\t    const nlLines = ArrayPrototypeMap(lines, (line) => line + '\\n');\n+\t    if (last !== '') {\n+\t      nlLines.push(last);\n+\t    }\n+\t    return nlLines;\n+\t  };\n+\t}\n+\t/* c8 ignore stop */\n+\t/* eslint-enable no-control-regex */\n+\n+\tconst keyStrRegExp = /^[a-zA-Z_][a-zA-Z_0-9]*$/;\n+\tconst numberRegExp = /^(0|[1-9][0-9]*)$/;\n+\n+\tconst coreModuleRegExp = /^ {4}at (?:[^/\\\\(]+ \\(|)node:(.+):\\d+:\\d+\\)?$/;\n+\tconst nodeModulesRegExp = /[/\\\\]node_modules[/\\\\](.+?)(?=[/\\\\])/g;\n+\n+\tconst classRegExp = /^(\\s+[^(]*?)\\s*{/;\n+\t// eslint-disable-next-line node-core/no-unescaped-regexp-dot\n+\tconst stripCommentsRegExp = /(\\/\\/.*?\\n)|(\\/\\*(.|\\n)*?\\*\\/)/g;\n+\n+\tconst kMinLineLength = 16;\n+\n+\t// Constants to map the iterator state.\n+\tconst kWeak = 0;\n+\tconst kIterator = 1;\n+\tconst kMapEntries = 2;\n+\n+\t// Escaped control characters (plus the single quote and the backslash). Use\n+\t// empty strings to fill up unused entries.\n+\tconst meta = [\n+\t  '\\\\x00', '\\\\x01', '\\\\x02', '\\\\x03', '\\\\x04', '\\\\x05', '\\\\x06', '\\\\x07', // x07\n+\t  '\\\\b', '\\\\t', '\\\\n', '\\\\x0B', '\\\\f', '\\\\r', '\\\\x0E', '\\\\x0F',           // x0F\n+\t  '\\\\x10', '\\\\x11', '\\\\x12', '\\\\x13', '\\\\x14', '\\\\x15', '\\\\x16', '\\\\x17', // x17\n+\t  '\\\\x18', '\\\\x19', '\\\\x1A', '\\\\x1B', '\\\\x1C', '\\\\x1D', '\\\\x1E', '\\\\x1F', // x1F\n+\t  '', '', '', '', '', '', '', \"\\\\'\", '', '', '', '', '', '', '', '',      // x2F\n+\t  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',         // x3F\n+\t  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',         // x4F\n+\t  '', '', '', '', '', '', '', '', '', '', '', '', '\\\\\\\\', '', '', '',     // x5F\n+\t  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',         // x6F\n+\t  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '\\\\x7F',    // x7F\n+\t  '\\\\x80', '\\\\x81', '\\\\x82', '\\\\x83', '\\\\x84', '\\\\x85', '\\\\x86', '\\\\x87', // x87\n+\t  '\\\\x88', '\\\\x89', '\\\\x8A', '\\\\x8B', '\\\\x8C', '\\\\x8D', '\\\\x8E', '\\\\x8F', // x8F\n+\t  '\\\\x90', '\\\\x91', '\\\\x92', '\\\\x93', '\\\\x94', '\\\\x95', '\\\\x96', '\\\\x97', // x97\n+\t  '\\\\x98', '\\\\x99', '\\\\x9A', '\\\\x9B', '\\\\x9C', '\\\\x9D', '\\\\x9E', '\\\\x9F', // x9F\n+\t];\n+\n+\t// Regex used for ansi escape code splitting\n+\t// Adopted from https://github.com/chalk/ansi-regex/blob/HEAD/index.js\n+\t// License: MIT, authors: @sindresorhus, Qix-, arjunmehta and LitoMore\n+\t// Matches all ansi escape code sequences in a string\n+\tconst ansiPattern = '[\\\\u001B\\\\u009B][[\\\\]()#;?]*' +\n+\t  '(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*' +\n+\t  '|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)' +\n+\t  '|(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))';\n+\tconst ansi = new RegExp(ansiPattern, 'g');\n+\n+\tlet getStringWidth;\n+\n+\tfunction getUserOptions(ctx, isCrossContext) {\n+\t  const ret = {\n+\t    stylize: ctx.stylize,\n+\t    showHidden: ctx.showHidden,\n+\t    depth: ctx.depth,\n+\t    colors: ctx.colors,\n+\t    customInspect: ctx.customInspect,\n+\t    showProxy: ctx.showProxy,\n+\t    maxArrayLength: ctx.maxArrayLength,\n+\t    maxStringLength: ctx.maxStringLength,\n+\t    breakLength: ctx.breakLength,\n+\t    compact: ctx.compact,\n+\t    sorted: ctx.sorted,\n+\t    getters: ctx.getters,\n+\t    numericSeparator: ctx.numericSeparator,\n+\t    ...ctx.userOptions,\n+\t  };\n+\n+\t  // Typically, the target value will be an instance of `Object`. If that is\n+\t  // *not* the case, the object may come from another vm.Context, and we want\n+\t  // to avoid passing it objects from this Context in that case, so we remove\n+\t  // the prototype from the returned object itself + the `stylize()` function,\n+\t  // and remove all other non-primitives, including non-primitive user options.\n+\t  if (isCrossContext) {\n+\t    ObjectSetPrototypeOf(ret, null);\n+\t    for (const key of ObjectKeys(ret)) {\n+\t      if ((typeof ret[key] === 'object' || typeof ret[key] === 'function') &&\n+\t          ret[key] !== null) {\n+\t        delete ret[key];\n+\t      }\n+\t    }\n+\t    ret.stylize = ObjectSetPrototypeOf((value, flavour) => {\n+\t      let stylized;\n+\t      try {\n+\t        stylized = `${ctx.stylize(value, flavour)}`;\n+\t      } catch {\n+\t        // Continue regardless of error.\n+\t      }\n+\n+\t      if (typeof stylized !== 'string') return value;\n+\t      // `stylized` is a string as it should be, which is safe to pass along.\n+\t      return stylized;\n+\t    }, null);\n+\t  }\n+\n+\t  return ret;\n+\t}\n+\n+\t/**\n+\t * Echos the value of any input. Tries to print the value out\n+\t * in the best way possible given the different types.\n+\t * @param {any} value The value to print out.\n+\t * @param {object} opts Optional options object that alters the output.\n+\t */\n+\t/* Legacy: value, showHidden, depth, colors */\n+\tfunction inspect(value, opts) {\n+\t  // Default options\n+\t  const ctx = {\n+\t    budget: {},\n+\t    indentationLvl: 0,\n+\t    seen: [],\n+\t    currentDepth: 0,\n+\t    stylize: stylizeNoColor,\n+\t    showHidden: inspectDefaultOptions.showHidden,\n+\t    depth: inspectDefaultOptions.depth,\n+\t    colors: inspectDefaultOptions.colors,\n+\t    customInspect: inspectDefaultOptions.customInspect,\n+\t    showProxy: inspectDefaultOptions.showProxy,\n+\t    maxArrayLength: inspectDefaultOptions.maxArrayLength,\n+\t    maxStringLength: inspectDefaultOptions.maxStringLength,\n+\t    breakLength: inspectDefaultOptions.breakLength,\n+\t    compact: inspectDefaultOptions.compact,\n+\t    sorted: inspectDefaultOptions.sorted,\n+\t    getters: inspectDefaultOptions.getters,\n+\t    numericSeparator: inspectDefaultOptions.numericSeparator,\n+\t  };\n+\t  if (arguments.length > 1) {\n+\t    // Legacy...\n+\t    if (arguments.length > 2) {\n+\t      if (arguments[2] !== undefined) {\n+\t        ctx.depth = arguments[2];\n+\t      }\n+\t      if (arguments.length > 3 && arguments[3] !== undefined) {\n+\t        ctx.colors = arguments[3];\n+\t      }\n+\t    }\n+\t    // Set user-specified options\n+\t    if (typeof opts === 'boolean') {\n+\t      ctx.showHidden = opts;\n+\t    } else if (opts) {\n+\t      const optKeys = ObjectKeys(opts);\n+\t      for (let i = 0; i < optKeys.length; ++i) {\n+\t        const key = optKeys[i];\n+\t        // TODO(BridgeAR): Find a solution what to do about stylize. Either make\n+\t        // this function public or add a new API with a similar or better\n+\t        // functionality.\n+\t        if (\n+\t          ObjectPrototypeHasOwnProperty(inspectDefaultOptions, key) ||\n+\t          key === 'stylize') {\n+\t          ctx[key] = opts[key];\n+\t        } else if (ctx.userOptions === undefined) {\n+\t          // This is required to pass through the actual user input.\n+\t          ctx.userOptions = opts;\n+\t        }\n+\t      }\n+\t    }\n+\t  }\n+\t  if (ctx.colors) ctx.stylize = stylizeWithColor;\n+\t  if (ctx.maxArrayLength === null) ctx.maxArrayLength = Infinity;\n+\t  if (ctx.maxStringLength === null) ctx.maxStringLength = Infinity;\n+\t  return formatValue(ctx, value, 0);\n+\t}\n+\tinspect.custom = customInspectSymbol;\n+\n+\tObjectDefineProperty(inspect, 'defaultOptions', {\n+\t  __proto__: null,\n+\t  get() {\n+\t    return inspectDefaultOptions;\n+\t  },\n+\t  set(options) {\n+\t    validateObject(options, 'options');\n+\t    return ObjectAssign(inspectDefaultOptions, options);\n+\t  },\n+\t});\n+\n+\t// Set Graphics Rendition https://en.wikipedia.org/wiki/ANSI_escape_code#graphics\n+\t// Each color consists of an array with the color code as first entry and the\n+\t// reset code as second entry.\n+\tconst defaultFG = 39;\n+\tconst defaultBG = 49;\n+\tinspect.colors = {\n+\t  __proto__: null,\n+\t  reset: [0, 0],\n+\t  bold: [1, 22],\n+\t  dim: [2, 22], // Alias: faint\n+\t  italic: [3, 23],\n+\t  underline: [4, 24],\n+\t  blink: [5, 25],\n+\t  // Swap foreground and background colors\n+\t  inverse: [7, 27], // Alias: swapcolors, swapColors\n+\t  hidden: [8, 28], // Alias: conceal\n+\t  strikethrough: [9, 29], // Alias: strikeThrough, crossedout, crossedOut\n+\t  doubleunderline: [21, 24], // Alias: doubleUnderline\n+\t  black: [30, defaultFG],\n+\t  red: [31, defaultFG],\n+\t  green: [32, defaultFG],\n+\t  yellow: [33, defaultFG],\n+\t  blue: [34, defaultFG],\n+\t  magenta: [35, defaultFG],\n+\t  cyan: [36, defaultFG],\n+\t  white: [37, defaultFG],\n+\t  bgBlack: [40, defaultBG],\n+\t  bgRed: [41, defaultBG],\n+\t  bgGreen: [42, defaultBG],\n+\t  bgYellow: [43, defaultBG],\n+\t  bgBlue: [44, defaultBG],\n+\t  bgMagenta: [45, defaultBG],\n+\t  bgCyan: [46, defaultBG],\n+\t  bgWhite: [47, defaultBG],\n+\t  framed: [51, 54],\n+\t  overlined: [53, 55],\n+\t  gray: [90, defaultFG], // Alias: grey, blackBright\n+\t  redBright: [91, defaultFG],\n+\t  greenBright: [92, defaultFG],\n+\t  yellowBright: [93, defaultFG],\n+\t  blueBright: [94, defaultFG],\n+\t  magentaBright: [95, defaultFG],\n+\t  cyanBright: [96, defaultFG],\n+\t  whiteBright: [97, defaultFG],\n+\t  bgGray: [100, defaultBG], // Alias: bgGrey, bgBlackBright\n+\t  bgRedBright: [101, defaultBG],\n+\t  bgGreenBright: [102, defaultBG],\n+\t  bgYellowBright: [103, defaultBG],\n+\t  bgBlueBright: [104, defaultBG],\n+\t  bgMagentaBright: [105, defaultBG],\n+\t  bgCyanBright: [106, defaultBG],\n+\t  bgWhiteBright: [107, defaultBG],\n+\t};\n+\n+\tfunction defineColorAlias(target, alias) {\n+\t  ObjectDefineProperty(inspect.colors, alias, {\n+\t    __proto__: null,\n+\t    get() {\n+\t      return this[target];\n+\t    },\n+\t    set(value) {\n+\t      this[target] = value;\n+\t    },\n+\t    configurable: true,\n+\t    enumerable: false,\n+\t  });\n+\t}\n+\n+\tdefineColorAlias('gray', 'grey');\n+\tdefineColorAlias('gray', 'blackBright');\n+\tdefineColorAlias('bgGray', 'bgGrey');\n+\tdefineColorAlias('bgGray', 'bgBlackBright');\n+\tdefineColorAlias('dim', 'faint');\n+\tdefineColorAlias('strikethrough', 'crossedout');\n+\tdefineColorAlias('strikethrough', 'strikeThrough');\n+\tdefineColorAlias('strikethrough', 'crossedOut');\n+\tdefineColorAlias('hidden', 'conceal');\n+\tdefineColorAlias('inverse', 'swapColors');\n+\tdefineColorAlias('inverse', 'swapcolors');\n+\tdefineColorAlias('doubleunderline', 'doubleUnderline');\n+\n+\t// TODO(BridgeAR): Add function style support for more complex styles.\n+\t// Don't use 'blue' not visible on cmd.exe\n+\tinspect.styles = ObjectAssign({ __proto__: null }, {\n+\t  special: 'cyan',\n+\t  number: 'yellow',\n+\t  bigint: 'yellow',\n+\t  boolean: 'yellow',\n+\t  undefined: 'grey',\n+\t  null: 'bold',\n+\t  string: 'green',\n+\t  symbol: 'green',\n+\t  date: 'magenta',\n+\t  // \"name\": intentionally not styling\n+\t  // TODO(BridgeAR): Highlight regular expressions properly.\n+\t  regexp: 'red',\n+\t  module: 'underline',\n+\t});\n+\n+\tfunction addQuotes(str, quotes) {\n+\t  if (quotes === -1) {\n+\t    return `\"${str}\"`;\n+\t  }\n+\t  if (quotes === -2) {\n+\t    return `\\`${str}\\``;\n+\t  }\n+\t  return `'${str}'`;\n+\t}\n+\n+\tfunction escapeFn(str) {\n+\t  const charCode = StringPrototypeCharCodeAt(str);\n+\t  return meta.length > charCode ? meta[charCode] : `\\\\u${NumberPrototypeToString(charCode, 16)}`;\n+\t}\n+\n+\t// Escape control characters, single quotes and the backslash.\n+\t// This is similar to JSON stringify escaping.\n+\tfunction strEscape(str) {\n+\t  let escapeTest = strEscapeSequencesRegExp;\n+\t  let escapeReplace = strEscapeSequencesReplacer;\n+\t  let singleQuote = 39;\n+\n+\t  // Check for double quotes. If not present, do not escape single quotes and\n+\t  // instead wrap the text in double quotes. If double quotes exist, check for\n+\t  // backticks. If they do not exist, use those as fallback instead of the\n+\t  // double quotes.\n+\t  if (StringPrototypeIncludes(str, \"'\")) {\n+\t    // This invalidates the charCode and therefore can not be matched for\n+\t    // anymore.\n+\t    if (!StringPrototypeIncludes(str, '\"')) {\n+\t      singleQuote = -1;\n+\t    } else if (!StringPrototypeIncludes(str, '`') &&\n+\t               !StringPrototypeIncludes(str, '${')) {\n+\t      singleQuote = -2;\n+\t    }\n+\t    if (singleQuote !== 39) {\n+\t      escapeTest = strEscapeSequencesRegExpSingle;\n+\t      escapeReplace = strEscapeSequencesReplacerSingle;\n+\t    }\n+\t  }\n+\n+\t  // Some magic numbers that worked out fine while benchmarking with v8 6.0\n+\t  if (str.length < 5000 && RegExpPrototypeExec(escapeTest, str) === null)\n+\t    return addQuotes(str, singleQuote);\n+\t  if (str.length > 100) {\n+\t    str = RegExpPrototypeSymbolReplace(escapeReplace, str, escapeFn);\n+\t    return addQuotes(str, singleQuote);\n+\t  }\n+\n+\t  let result = '';\n+\t  let last = 0;\n+\t  for (let i = 0; i < str.length; i++) {\n+\t    const point = StringPrototypeCharCodeAt(str, i);\n+\t    if (point === singleQuote ||\n+\t        point === 92 ||\n+\t        point < 32 ||\n+\t        (point > 126 && point < 160)) {\n+\t      if (last === i) {\n+\t        result += meta[point];\n+\t      } else {\n+\t        result += `${StringPrototypeSlice(str, last, i)}${meta[point]}`;\n+\t      }\n+\t      last = i + 1;\n+\t    } else if (point >= 0xd800 && point <= 0xdfff) {\n+\t      if (point <= 0xdbff && i + 1 < str.length) {\n+\t        const point = StringPrototypeCharCodeAt(str, i + 1);\n+\t        if (point >= 0xdc00 && point <= 0xdfff) {\n+\t          i++;\n+\t          continue;\n+\t        }\n+\t      }\n+\t      result += `${StringPrototypeSlice(str, last, i)}\\\\u${NumberPrototypeToString(point, 16)}`;\n+\t      last = i + 1;\n+\t    }\n+\t  }\n+\n+\t  if (last !== str.length) {\n+\t    result += StringPrototypeSlice(str, last);\n+\t  }\n+\t  return addQuotes(result, singleQuote);\n+\t}\n+\n+\tfunction stylizeWithColor(str, styleType) {\n+\t  const style = inspect.styles[styleType];\n+\t  if (style !== undefined) {\n+\t    const color = inspect.colors[style];\n+\t    if (color !== undefined)\n+\t      return `\\u001b[${color[0]}m${str}\\u001b[${color[1]}m`;\n+\t  }\n+\t  return str;\n+\t}\n+\n+\tfunction stylizeNoColor(str) {\n+\t  return str;\n+\t}\n+\n+\t// Return a new empty array to push in the results of the default formatter.\n+\tfunction getEmptyFormatArray() {\n+\t  return [];\n+\t}\n+\n+\tfunction isInstanceof(object, proto) {\n+\t  try {\n+\t    return object instanceof proto;\n+\t  } catch {\n+\t    return false;\n+\t  }\n+\t}\n+\n+\tfunction getConstructorName(obj, ctx, recurseTimes, protoProps) {\n+\t  let firstProto;\n+\t  const tmp = obj;\n+\t  while (obj || isUndetectableObject(obj)) {\n+\t    const descriptor = ObjectGetOwnPropertyDescriptor(obj, 'constructor');\n+\t    if (descriptor !== undefined &&\n+\t        typeof descriptor.value === 'function' &&\n+\t        descriptor.value.name !== '' &&\n+\t        isInstanceof(tmp, descriptor.value)) {\n+\t      if (protoProps !== undefined &&\n+\t         (firstProto !== obj ||\n+\t         !builtInObjects.has(descriptor.value.name))) {\n+\t        addPrototypeProperties(\n+\t          ctx, tmp, firstProto || tmp, recurseTimes, protoProps);\n+\t      }\n+\t      return String(descriptor.value.name);\n+\t    }\n+\n+\t    obj = ObjectGetPrototypeOf(obj);\n+\t    if (firstProto === undefined) {\n+\t      firstProto = obj;\n+\t    }\n+\t  }\n+\n+\t  if (firstProto === null) {\n+\t    return null;\n+\t  }\n+\n+\t  const res = internalGetConstructorName(tmp);\n+\n+\t  if (recurseTimes > ctx.depth && ctx.depth !== null) {\n+\t    return `${res} <Complex prototype>`;\n+\t  }\n+\n+\t  const protoConstr = getConstructorName(\n+\t    firstProto, ctx, recurseTimes + 1, protoProps);\n+\n+\t  if (protoConstr === null) {\n+\t    return `${res} <${inspect(firstProto, {\n+\t      ...ctx,\n+\t      customInspect: false,\n+\t      depth: -1,\n+\t    })}>`;\n+\t  }\n+\n+\t  return `${res} <${protoConstr}>`;\n+\t}\n+\n+\t// This function has the side effect of adding prototype properties to the\n+\t// `output` argument (which is an array). This is intended to highlight user\n+\t// defined prototype properties.\n+\tfunction addPrototypeProperties(ctx, main, obj, recurseTimes, output) {\n+\t  let depth = 0;\n+\t  let keys;\n+\t  let keySet;\n+\t  do {\n+\t    if (depth !== 0 || main === obj) {\n+\t      obj = ObjectGetPrototypeOf(obj);\n+\t      // Stop as soon as a null prototype is encountered.\n+\t      if (obj === null) {\n+\t        return;\n+\t      }\n+\t      // Stop as soon as a built-in object type is detected.\n+\t      const descriptor = ObjectGetOwnPropertyDescriptor(obj, 'constructor');\n+\t      if (descriptor !== undefined &&\n+\t          typeof descriptor.value === 'function' &&\n+\t          builtInObjects.has(descriptor.value.name)) {\n+\t        return;\n+\t      }\n+\t    }\n+\n+\t    if (depth === 0) {\n+\t      keySet = new SafeSet();\n+\t    } else {\n+\t      ArrayPrototypeForEach(keys, (key) => keySet.add(key));\n+\t    }\n+\t    // Get all own property names and symbols.\n+\t    keys = ReflectOwnKeys(obj);\n+\t    ArrayPrototypePush(ctx.seen, main);\n+\t    for (const key of keys) {\n+\t      // Ignore the `constructor` property and keys that exist on layers above.\n+\t      if (key === 'constructor' ||\n+\t          ObjectPrototypeHasOwnProperty(main, key) ||\n+\t          (depth !== 0 && keySet.has(key))) {\n+\t        continue;\n+\t      }\n+\t      const desc = ObjectGetOwnPropertyDescriptor(obj, key);\n+\t      if (typeof desc.value === 'function') {\n+\t        continue;\n+\t      }\n+\t      const value = formatProperty(\n+\t        ctx, obj, recurseTimes, key, kObjectType, desc, main);\n+\t      if (ctx.colors) {\n+\t        // Faint!\n+\t        ArrayPrototypePush(output, `\\u001b[2m${value}\\u001b[22m`);\n+\t      } else {\n+\t        ArrayPrototypePush(output, value);\n+\t      }\n+\t    }\n+\t    ArrayPrototypePop(ctx.seen);\n+\t  // Limit the inspection to up to three prototype layers. Using `recurseTimes`\n+\t  // is not a good choice here, because it's as if the properties are declared\n+\t  // on the current object from the users perspective.\n+\t  } while (++depth !== 3);\n+\t}\n+\n+\tfunction getPrefix(constructor, tag, fallback, size = '') {\n+\t  if (constructor === null) {\n+\t    if (tag !== '' && fallback !== tag) {\n+\t      return `[${fallback}${size}: null prototype] [${tag}] `;\n+\t    }\n+\t    return `[${fallback}${size}: null prototype] `;\n+\t  }\n+\n+\t  if (tag !== '' && constructor !== tag) {\n+\t    return `${constructor}${size} [${tag}] `;\n+\t  }\n+\t  return `${constructor}${size} `;\n+\t}\n+\n+\t// Look up the keys of the object.\n+\tfunction getKeys(value, showHidden) {\n+\t  let keys;\n+\t  const symbols = ObjectGetOwnPropertySymbols(value);\n+\t  if (showHidden) {\n+\t    keys = ObjectGetOwnPropertyNames(value);\n+\t    if (symbols.length !== 0)\n+\t      ArrayPrototypePushApply(keys, symbols);\n+\t  } else {\n+\t    // This might throw if `value` is a Module Namespace Object from an\n+\t    // unevaluated module, but we don't want to perform the actual type\n+\t    // check because it's expensive.\n+\t    // TODO(devsnek): track https://github.com/tc39/ecma262/issues/1209\n+\t    // and modify this logic as needed.\n+\t    try {\n+\t      keys = ObjectKeys(value);\n+\t    } catch (err) {\n+\t      assert(isNativeError(err) && err.name === 'ReferenceError' &&\n+\t             isModuleNamespaceObject(value));\n+\t      keys = ObjectGetOwnPropertyNames(value);\n+\t    }\n+\t    if (symbols.length !== 0) {\n+\t      const filter = (key) => ObjectPrototypePropertyIsEnumerable(value, key);\n+\t      ArrayPrototypePushApply(keys, ArrayPrototypeFilter(symbols, filter));\n+\t    }\n+\t  }\n+\t  return keys;\n+\t}\n+\n+\tfunction getCtxStyle(value, constructor, tag) {\n+\t  let fallback = '';\n+\t  if (constructor === null) {\n+\t    fallback = internalGetConstructorName(value);\n+\t    if (fallback === tag) {\n+\t      fallback = 'Object';\n+\t    }\n+\t  }\n+\t  return getPrefix(constructor, tag, fallback);\n+\t}\n+\n+\tfunction formatProxy(ctx, proxy, recurseTimes) {\n+\t  if (recurseTimes > ctx.depth && ctx.depth !== null) {\n+\t    return ctx.stylize('Proxy [Array]', 'special');\n+\t  }\n+\t  recurseTimes += 1;\n+\t  ctx.indentationLvl += 2;\n+\t  const res = [\n+\t    formatValue(ctx, proxy[0], recurseTimes),\n+\t    formatValue(ctx, proxy[1], recurseTimes),\n+\t  ];\n+\t  ctx.indentationLvl -= 2;\n+\t  return reduceToSingleString(\n+\t    ctx, res, '', ['Proxy [', ']'], kArrayExtrasType, recurseTimes);\n+\t}\n+\n+\t// Note: using `formatValue` directly requires the indentation level to be\n+\t// corrected by setting `ctx.indentationLvL += diff` and then to decrease the\n+\t// value afterwards again.\n+\tfunction formatValue(ctx, value, recurseTimes, typedArray) {\n+\t  // Primitive types cannot have properties.\n+\t  if (typeof value !== 'object' &&\n+\t      typeof value !== 'function' &&\n+\t      !isUndetectableObject(value)) {\n+\t    return formatPrimitive(ctx.stylize, value, ctx);\n+\t  }\n+\t  if (value === null) {\n+\t    return ctx.stylize('null', 'null');\n+\t  }\n+\n+\t  // Memorize the context for custom inspection on proxies.\n+\t  const context = value;\n+\t  // Always check for proxies to prevent side effects and to prevent triggering\n+\t  // any proxy handlers.\n+\t  const proxy = getProxyDetails(value, !!ctx.showProxy);\n+\t  if (proxy !== undefined) {\n+\t    if (proxy === null || proxy[0] === null) {\n+\t      return ctx.stylize('<Revoked Proxy>', 'special');\n+\t    }\n+\t    if (ctx.showProxy) {\n+\t      return formatProxy(ctx, proxy, recurseTimes);\n+\t    }\n+\t    value = proxy;\n+\t  }\n+\n+\t  // Provide a hook for user-specified inspect functions.\n+\t  // Check that value is an object with an inspect function on it.\n+\t  if (ctx.customInspect) {\n+\t    const maybeCustom = value[customInspectSymbol];\n+\t    if (typeof maybeCustom === 'function' &&\n+\t        // Filter out the util module, its inspect function is special.\n+\t        maybeCustom !== inspect &&\n+\t        // Also filter out any prototype objects using the circular check.\n+\t        !(value.constructor && value.constructor.prototype === value)) {\n+\t      // This makes sure the recurseTimes are reported as before while using\n+\t      // a counter internally.\n+\t      const depth = ctx.depth === null ? null : ctx.depth - recurseTimes;\n+\t      const isCrossContext =\n+\t        proxy !== undefined || !(context instanceof Object);\n+\t      const ret = FunctionPrototypeCall(\n+\t        maybeCustom,\n+\t        context,\n+\t        depth,\n+\t        getUserOptions(ctx, isCrossContext),\n+\t        inspect,\n+\t      );\n+\t      // If the custom inspection method returned `this`, don't go into\n+\t      // infinite recursion.\n+\t      if (ret !== context) {\n+\t        if (typeof ret !== 'string') {\n+\t          return formatValue(ctx, ret, recurseTimes);\n+\t        }\n+\t        return StringPrototypeReplaceAll(ret, '\\n', `\\n${StringPrototypeRepeat(' ', ctx.indentationLvl)}`);\n+\t      }\n+\t    }\n+\t  }\n+\n+\t  // Using an array here is actually better for the average case than using\n+\t  // a Set. `seen` will only check for the depth and will never grow too large.\n+\t  if (ctx.seen.includes(value)) {\n+\t    let index = 1;\n+\t    if (ctx.circular === undefined) {\n+\t      ctx.circular = new SafeMap();\n+\t      ctx.circular.set(value, index);\n+\t    } else {\n+\t      index = ctx.circular.get(value);\n+\t      if (index === undefined) {\n+\t        index = ctx.circular.size + 1;\n+\t        ctx.circular.set(value, index);\n+\t      }\n+\t    }\n+\t    return ctx.stylize(`[Circular *${index}]`, 'special');\n+\t  }\n+\n+\t  return formatRaw(ctx, value, recurseTimes, typedArray);\n+\t}\n+\n+\tfunction formatRaw(ctx, value, recurseTimes, typedArray) {\n+\t  let keys;\n+\t  let protoProps;\n+\t  if (ctx.showHidden && (recurseTimes <= ctx.depth || ctx.depth === null)) {\n+\t    protoProps = [];\n+\t  }\n+\n+\t  const constructor = getConstructorName(value, ctx, recurseTimes, protoProps);\n+\t  // Reset the variable to check for this later on.\n+\t  if (protoProps !== undefined && protoProps.length === 0) {\n+\t    protoProps = undefined;\n+\t  }\n+\n+\t  let tag = value[SymbolToStringTag];\n+\t  // Only list the tag in case it's non-enumerable / not an own property.\n+\t  // Otherwise we'd print this twice.\n+\t  if (typeof tag !== 'string' ||\n+\t      (tag !== '' &&\n+\t      (ctx.showHidden ?\n+\t        ObjectPrototypeHasOwnProperty :\n+\t        ObjectPrototypePropertyIsEnumerable)(\n+\t        value, SymbolToStringTag,\n+\t      ))) {\n+\t    tag = '';\n+\t  }\n+\t  let base = '';\n+\t  let formatter = getEmptyFormatArray;\n+\t  let braces;\n+\t  let noIterator = true;\n+\t  let i = 0;\n+\t  const filter = ctx.showHidden ? ALL_PROPERTIES : ONLY_ENUMERABLE;\n+\n+\t  let extrasType = kObjectType;\n+\n+\t  // Iterators and the rest are split to reduce checks.\n+\t  // We have to check all values in case the constructor is set to null.\n+\t  // Otherwise it would not possible to identify all types properly.\n+\t  if (SymbolIterator in value || constructor === null) {\n+\t    noIterator = false;\n+\t    if (ArrayIsArray(value)) {\n+\t      // Only set the constructor for non ordinary (\"Array [...]\") arrays.\n+\t      const prefix = (constructor !== 'Array' || tag !== '') ?\n+\t        getPrefix(constructor, tag, 'Array', `(${value.length})`) :\n+\t        '';\n+\t      keys = getOwnNonIndexProperties(value, filter);\n+\t      braces = [`${prefix}[`, ']'];\n+\t      if (value.length === 0 && keys.length === 0 && protoProps === undefined)\n+\t        return `${braces[0]}]`;\n+\t      extrasType = kArrayExtrasType;\n+\t      formatter = formatArray;\n+\t    } else if (isSet(value)) {\n+\t      const size = SetPrototypeGetSize(value);\n+\t      const prefix = getPrefix(constructor, tag, 'Set', `(${size})`);\n+\t      keys = getKeys(value, ctx.showHidden);\n+\t      formatter = constructor !== null ?\n+\t        FunctionPrototypeBind(formatSet, null, value) :\n+\t        FunctionPrototypeBind(formatSet, null, SetPrototypeValues(value));\n+\t      if (size === 0 && keys.length === 0 && protoProps === undefined)\n+\t        return `${prefix}{}`;\n+\t      braces = [`${prefix}{`, '}'];\n+\t    } else if (isMap(value)) {\n+\t      const size = MapPrototypeGetSize(value);\n+\t      const prefix = getPrefix(constructor, tag, 'Map', `(${size})`);\n+\t      keys = getKeys(value, ctx.showHidden);\n+\t      formatter = constructor !== null ?\n+\t        FunctionPrototypeBind(formatMap, null, value) :\n+\t        FunctionPrototypeBind(formatMap, null, MapPrototypeEntries(value));\n+\t      if (size === 0 && keys.length === 0 && protoProps === undefined)\n+\t        return `${prefix}{}`;\n+\t      braces = [`${prefix}{`, '}'];\n+\t    } else if (isTypedArray(value)) {\n+\t      keys = getOwnNonIndexProperties(value, filter);\n+\t      let bound = value;\n+\t      let fallback = '';\n+\t      if (constructor === null) {\n+\t        fallback = TypedArrayPrototypeGetSymbolToStringTag(value);\n+\t        // Reconstruct the array information.\n+\t        bound = new primordials[fallback](value);\n+\t      }\n+\t      const size = TypedArrayPrototypeGetLength(value);\n+\t      const prefix = getPrefix(constructor, tag, fallback, `(${size})`);\n+\t      braces = [`${prefix}[`, ']'];\n+\t      if (value.length === 0 && keys.length === 0 && !ctx.showHidden)\n+\t        return `${braces[0]}]`;\n+\t      // Special handle the value. The original value is required below. The\n+\t      // bound function is required to reconstruct missing information.\n+\t      formatter = FunctionPrototypeBind(formatTypedArray, null, bound, size);\n+\t      extrasType = kArrayExtrasType;\n+\t    } else if (isMapIterator(value)) {\n+\t      keys = getKeys(value, ctx.showHidden);\n+\t      braces = getIteratorBraces('Map', tag);\n+\t      // Add braces to the formatter parameters.\n+\t      formatter = FunctionPrototypeBind(formatIterator, null, braces);\n+\t    } else if (isSetIterator(value)) {\n+\t      keys = getKeys(value, ctx.showHidden);\n+\t      braces = getIteratorBraces('Set', tag);\n+\t      // Add braces to the formatter parameters.\n+\t      formatter = FunctionPrototypeBind(formatIterator, null, braces);\n+\t    } else {\n+\t      noIterator = true;\n+\t    }\n+\t  }\n+\t  if (noIterator) {\n+\t    keys = getKeys(value, ctx.showHidden);\n+\t    braces = ['{', '}'];\n+\t    if (constructor === 'Object') {\n+\t      if (isArgumentsObject(value)) {\n+\t        braces[0] = '[Arguments] {';\n+\t      } else if (tag !== '') {\n+\t        braces[0] = `${getPrefix(constructor, tag, 'Object')}{`;\n+\t      }\n+\t      if (keys.length === 0 && protoProps === undefined) {\n+\t        return `${braces[0]}}`;\n+\t      }\n+\t    } else if (typeof value === 'function') {\n+\t      base = getFunctionBase(value, constructor, tag);\n+\t      if (keys.length === 0 && protoProps === undefined)\n+\t        return ctx.stylize(base, 'special');\n+\t    } else if (isRegExp(value)) {\n+\t      // Make RegExps say that they are RegExps\n+\t      base = RegExpPrototypeToString(\n+\t        constructor !== null ? value : new RegExp(value),\n+\t      );\n+\t      const prefix = getPrefix(constructor, tag, 'RegExp');\n+\t      if (prefix !== 'RegExp ')\n+\t        base = `${prefix}${base}`;\n+\t      if ((keys.length === 0 && protoProps === undefined) ||\n+\t          (recurseTimes > ctx.depth && ctx.depth !== null)) {\n+\t        return ctx.stylize(base, 'regexp');\n+\t      }\n+\t    } else if (isDate(value)) {\n+\t      // Make dates with properties first say the date\n+\t      base = NumberIsNaN(DatePrototypeGetTime(value)) ?\n+\t        DatePrototypeToString(value) :\n+\t        DatePrototypeToISOString(value);\n+\t      const prefix = getPrefix(constructor, tag, 'Date');\n+\t      if (prefix !== 'Date ')\n+\t        base = `${prefix}${base}`;\n+\t      if (keys.length === 0 && protoProps === undefined) {\n+\t        return ctx.stylize(base, 'date');\n+\t      }\n+\t    } else if (isError(value)) {\n+\t      base = formatError(value, constructor, tag, ctx, keys);\n+\t      if (keys.length === 0 && protoProps === undefined)\n+\t        return base;\n+\t    } else if (isAnyArrayBuffer(value)) {\n+\t      // Fast path for ArrayBuffer and SharedArrayBuffer.\n+\t      // Can't do the same for DataView because it has a non-primitive\n+\t      // .buffer property that we need to recurse for.\n+\t      const arrayType = isArrayBuffer(value) ? 'ArrayBuffer' :\n+\t        'SharedArrayBuffer';\n+\t      const prefix = getPrefix(constructor, tag, arrayType);\n+\t      if (typedArray === undefined) {\n+\t        formatter = formatArrayBuffer;\n+\t      } else if (keys.length === 0 && protoProps === undefined) {\n+\t        return prefix +\n+\t              `{ byteLength: ${formatNumber(ctx.stylize, value.byteLength, false)} }`;\n+\t      }\n+\t      braces[0] = `${prefix}{`;\n+\t      ArrayPrototypeUnshift(keys, 'byteLength');\n+\t    } else if (isDataView(value)) {\n+\t      braces[0] = `${getPrefix(constructor, tag, 'DataView')}{`;\n+\t      // .buffer goes last, it's not a primitive like the others.\n+\t      ArrayPrototypeUnshift(keys, 'byteLength', 'byteOffset', 'buffer');\n+\t    } else if (isPromise(value)) {\n+\t      braces[0] = `${getPrefix(constructor, tag, 'Promise')}{`;\n+\t      formatter = formatPromise;\n+\t    } else if (isWeakSet(value)) {\n+\t      braces[0] = `${getPrefix(constructor, tag, 'WeakSet')}{`;\n+\t      formatter = ctx.showHidden ? formatWeakSet : formatWeakCollection;\n+\t    } else if (isWeakMap(value)) {\n+\t      braces[0] = `${getPrefix(constructor, tag, 'WeakMap')}{`;\n+\t      formatter = ctx.showHidden ? formatWeakMap : formatWeakCollection;\n+\t    } else if (isModuleNamespaceObject(value)) {\n+\t      braces[0] = `${getPrefix(constructor, tag, 'Module')}{`;\n+\t      // Special handle keys for namespace objects.\n+\t      formatter = formatNamespaceObject.bind(null, keys);\n+\t    } else if (isBoxedPrimitive(value)) {\n+\t      base = getBoxedBase(value, ctx, keys, constructor, tag);\n+\t      if (keys.length === 0 && protoProps === undefined) {\n+\t        return base;\n+\t      }\n+\t    } else {\n+\t      if (keys.length === 0 && protoProps === undefined) {\n+\t        if (isExternal(value)) {\n+\t          const address = getExternalValue(value).toString(16);\n+\t          return ctx.stylize(`[External: ${address}]`, 'special');\n+\t        }\n+\t        return `${getCtxStyle(value, constructor, tag)}{}`;\n+\t      }\n+\t      braces[0] = `${getCtxStyle(value, constructor, tag)}{`;\n+\t    }\n+\t  }\n+\n+\t  if (recurseTimes > ctx.depth && ctx.depth !== null) {\n+\t    let constructorName = StringPrototypeSlice(getCtxStyle(value, constructor, tag), 0, -1);\n+\t    if (constructor !== null)\n+\t      constructorName = `[${constructorName}]`;\n+\t    return ctx.stylize(constructorName, 'special');\n+\t  }\n+\t  recurseTimes += 1;\n+\n+\t  ctx.seen.push(value);\n+\t  ctx.currentDepth = recurseTimes;\n+\t  let output;\n+\t  const indentationLvl = ctx.indentationLvl;\n+\t  try {\n+\t    output = formatter(ctx, value, recurseTimes);\n+\t    for (i = 0; i < keys.length; i++) {\n+\t      ArrayPrototypePush(\n+\t        output,\n+\t        formatProperty(ctx, value, recurseTimes, keys[i], extrasType),\n+\t      );\n+\t    }\n+\t    if (protoProps !== undefined) {\n+\t      ArrayPrototypePushApply(output, protoProps);\n+\t    }\n+\t  } catch (err) {\n+\t    const constructorName = StringPrototypeSlice(getCtxStyle(value, constructor, tag), 0, -1);\n+\t    return handleMaxCallStackSize(ctx, err, constructorName, indentationLvl);\n+\t  }\n+\t  if (ctx.circular !== undefined) {\n+\t    const index = ctx.circular.get(value);\n+\t    if (index !== undefined) {\n+\t      const reference = ctx.stylize(`<ref *${index}>`, 'special');\n+\t      // Add reference always to the very beginning of the output.\n+\t      if (ctx.compact !== true) {\n+\t        base = base === '' ? reference : `${reference} ${base}`;\n+\t      } else {\n+\t        braces[0] = `${reference} ${braces[0]}`;\n+\t      }\n+\t    }\n+\t  }\n+\t  ctx.seen.pop();\n+\n+\t  if (ctx.sorted) {\n+\t    const comparator = ctx.sorted === true ? undefined : ctx.sorted;\n+\t    if (extrasType === kObjectType) {\n+\t      ArrayPrototypeSort(output, comparator);\n+\t    } else if (keys.length > 1) {\n+\t      const sorted = ArrayPrototypeSort(ArrayPrototypeSlice(output, output.length - keys.length), comparator);\n+\t      ArrayPrototypeUnshift(sorted, output, output.length - keys.length, keys.length);\n+\t      ReflectApply(ArrayPrototypeSplice, null, sorted);\n+\t    }\n+\t  }\n+\n+\t  const res = reduceToSingleString(\n+\t    ctx, output, base, braces, extrasType, recurseTimes, value);\n+\t  const budget = ctx.budget[ctx.indentationLvl] || 0;\n+\t  const newLength = budget + res.length;\n+\t  ctx.budget[ctx.indentationLvl] = newLength;\n+\t  // If any indentationLvl exceeds this limit, limit further inspecting to the\n+\t  // minimum. Otherwise the recursive algorithm might continue inspecting the\n+\t  // object even though the maximum string size (~2 ** 28 on 32 bit systems and\n+\t  // ~2 ** 30 on 64 bit systems) exceeded. The actual output is not limited at\n+\t  // exactly 2 ** 27 but a bit higher. This depends on the object shape.\n+\t  // This limit also makes sure that huge objects don't block the event loop\n+\t  // significantly.\n+\t  if (newLength > 2 ** 27) {\n+\t    ctx.depth = -1;\n+\t  }\n+\t  return res;\n+\t}\n+\n+\tfunction getIteratorBraces(type, tag) {\n+\t  if (tag !== `${type} Iterator`) {\n+\t    if (tag !== '')\n+\t      tag += '] [';\n+\t    tag += `${type} Iterator`;\n+\t  }\n+\t  return [`[${tag}] {`, '}'];\n+\t}\n+\n+\tfunction getBoxedBase(value, ctx, keys, constructor, tag) {\n+\t  let fn;\n+\t  let type;\n+\t  if (isNumberObject(value)) {\n+\t    fn = NumberPrototypeValueOf;\n+\t    type = 'Number';\n+\t  } else if (isStringObject(value)) {\n+\t    fn = StringPrototypeValueOf;\n+\t    type = 'String';\n+\t    // For boxed Strings, we have to remove the 0-n indexed entries,\n+\t    // since they just noisy up the output and are redundant\n+\t    // Make boxed primitive Strings look like such\n+\t    keys.splice(0, value.length);\n+\t  } else if (isBooleanObject(value)) {\n+\t    fn = BooleanPrototypeValueOf;\n+\t    type = 'Boolean';\n+\t  } else if (isBigIntObject(value)) {\n+\t    fn = BigIntPrototypeValueOf;\n+\t    type = 'BigInt';\n+\t  } else {\n+\t    fn = SymbolPrototypeValueOf;\n+\t    type = 'Symbol';\n+\t  }\n+\t  let base = `[${type}`;\n+\t  if (type !== constructor) {\n+\t    if (constructor === null) {\n+\t      base += ' (null prototype)';\n+\t    } else {\n+\t      base += ` (${constructor})`;\n+\t    }\n+\t  }\n+\t  base += `: ${formatPrimitive(stylizeNoColor, fn(value), ctx)}]`;\n+\t  if (tag !== '' && tag !== constructor) {\n+\t    base += ` [${tag}]`;\n+\t  }\n+\t  if (keys.length !== 0 || ctx.stylize === stylizeNoColor)\n+\t    return base;\n+\t  return ctx.stylize(base, StringPrototypeToLowerCase(type));\n+\t}\n+\n+\tfunction getClassBase(value, constructor, tag) {\n+\t  const hasName = ObjectPrototypeHasOwnProperty(value, 'name');\n+\t  const name = (hasName && value.name) || '(anonymous)';\n+\t  let base = `class ${name}`;\n+\t  if (constructor !== 'Function' && constructor !== null) {\n+\t    base += ` [${constructor}]`;\n+\t  }\n+\t  if (tag !== '' && constructor !== tag) {\n+\t    base += ` [${tag}]`;\n+\t  }\n+\t  if (constructor !== null) {\n+\t    const superName = ObjectGetPrototypeOf(value).name;\n+\t    if (superName) {\n+\t      base += ` extends ${superName}`;\n+\t    }\n+\t  } else {\n+\t    base += ' extends [null prototype]';\n+\t  }\n+\t  return `[${base}]`;\n+\t}\n+\n+\tfunction getFunctionBase(value, constructor, tag) {\n+\t  const stringified = FunctionPrototypeToString(value);\n+\t  if (StringPrototypeStartsWith(stringified, 'class') && StringPrototypeEndsWith(stringified, '}')) {\n+\t    const slice = StringPrototypeSlice(stringified, 5, -1);\n+\t    const bracketIndex = StringPrototypeIndexOf(slice, '{');\n+\t    if (bracketIndex !== -1 &&\n+\t        (!StringPrototypeIncludes(StringPrototypeSlice(slice, 0, bracketIndex), '(') ||\n+\t        // Slow path to guarantee that it's indeed a class.\n+\t        RegExpPrototypeExec(classRegExp, RegExpPrototypeSymbolReplace(stripCommentsRegExp, slice)) !== null)\n+\t    ) {\n+\t      return getClassBase(value, constructor, tag);\n+\t    }\n+\t  }\n+\t  let type = 'Function';\n+\t  if (isGeneratorFunction(value)) {\n+\t    type = `Generator${type}`;\n+\t  }\n+\t  if (isAsyncFunction(value)) {\n+\t    type = `Async${type}`;\n+\t  }\n+\t  let base = `[${type}`;\n+\t  if (constructor === null) {\n+\t    base += ' (null prototype)';\n+\t  }\n+\t  if (value.name === '') {\n+\t    base += ' (anonymous)';\n+\t  } else {\n+\t    base += `: ${value.name}`;\n+\t  }\n+\t  base += ']';\n+\t  if (constructor !== type && constructor !== null) {\n+\t    base += ` ${constructor}`;\n+\t  }\n+\t  if (tag !== '' && constructor !== tag) {\n+\t    base += ` [${tag}]`;\n+\t  }\n+\t  return base;\n+\t}\n+\n+\tfunction identicalSequenceRange(a, b) {\n+\t  for (let i = 0; i < a.length - 3; i++) {\n+\t    // Find the first entry of b that matches the current entry of a.\n+\t    const pos = b.indexOf(a[i]);\n+\t    if (pos !== -1) {\n+\t      const rest = b.length - pos;\n+\t      if (rest > 3) {\n+\t        let len = 1;\n+\t        const maxLen = MathMin(a.length - i, rest);\n+\t        // Count the number of consecutive entries.\n+\t        while (maxLen > len && a[i + len] === b[pos + len]) {\n+\t          len++;\n+\t        }\n+\t        if (len > 3) {\n+\t          return { len, offset: i };\n+\t        }\n+\t      }\n+\t    }\n+\t  }\n+\n+\t  return { len: 0, offset: 0 };\n+\t}\n+\n+\tfunction getStackString(error) {\n+\t  return error.stack ? String(error.stack) : ErrorPrototypeToString(error);\n+\t}\n+\n+\tfunction getStackFrames(ctx, err, stack) {\n+\t  const frames = StringPrototypeSplit(stack, '\\n');\n+\n+\t  let cause;\n+\t  try {\n+\t    ({ cause } = err);\n+\t  } catch {\n+\t    // If 'cause' is a getter that throws, ignore it.\n+\t  }\n+\n+\t  // Remove stack frames identical to frames in cause.\n+\t  if (cause != null && isError(cause)) {\n+\t    const causeStack = getStackString(cause);\n+\t    const causeStackStart = StringPrototypeIndexOf(causeStack, '\\n    at');\n+\t    if (causeStackStart !== -1) {\n+\t      const causeFrames = StringPrototypeSplit(StringPrototypeSlice(causeStack, causeStackStart + 1), '\\n');\n+\t      const { len, offset } = identicalSequenceRange(frames, causeFrames);\n+\t      if (len > 0) {\n+\t        const skipped = len - 2;\n+\t        const msg = `    ... ${skipped} lines matching cause stack trace ...`;\n+\t        frames.splice(offset + 1, skipped, ctx.stylize(msg, 'undefined'));\n+\t      }\n+\t    }\n+\t  }\n+\t  return frames;\n+\t}\n+\n+\tfunction improveStack(stack, constructor, name, tag) {\n+\t  // A stack trace may contain arbitrary data. Only manipulate the output\n+\t  // for \"regular errors\" (errors that \"look normal\") for now.\n+\t  let len = name.length;\n+\n+\t  if (constructor === null ||\n+\t      (StringPrototypeEndsWith(name, 'Error') &&\n+\t      StringPrototypeStartsWith(stack, name) &&\n+\t      (stack.length === len || stack[len] === ':' || stack[len] === '\\n'))) {\n+\t    let fallback = 'Error';\n+\t    if (constructor === null) {\n+\t      const start = RegExpPrototypeExec(/^([A-Z][a-z_ A-Z0-9[\\]()-]+)(?::|\\n {4}at)/, stack) ||\n+\t      RegExpPrototypeExec(/^([a-z_A-Z0-9-]*Error)$/, stack);\n+\t      fallback = (start && start[1]) || '';\n+\t      len = fallback.length;\n+\t      fallback = fallback || 'Error';\n+\t    }\n+\t    const prefix = StringPrototypeSlice(getPrefix(constructor, tag, fallback), 0, -1);\n+\t    if (name !== prefix) {\n+\t      if (StringPrototypeIncludes(prefix, name)) {\n+\t        if (len === 0) {\n+\t          stack = `${prefix}: ${stack}`;\n+\t        } else {\n+\t          stack = `${prefix}${StringPrototypeSlice(stack, len)}`;\n+\t        }\n+\t      } else {\n+\t        stack = `${prefix} [${name}]${StringPrototypeSlice(stack, len)}`;\n+\t      }\n+\t    }\n+\t  }\n+\t  return stack;\n+\t}\n+\n+\tfunction removeDuplicateErrorKeys(ctx, keys, err, stack) {\n+\t  if (!ctx.showHidden && keys.length !== 0) {\n+\t    for (const name of ['name', 'message', 'stack']) {\n+\t      const index = ArrayPrototypeIndexOf(keys, name);\n+\t      // Only hide the property in case it's part of the original stack\n+\t      if (index !== -1 && StringPrototypeIncludes(stack, err[name])) {\n+\t        ArrayPrototypeSplice(keys, index, 1);\n+\t      }\n+\t    }\n+\t  }\n+\t}\n+\n+\tfunction markNodeModules(ctx, line) {\n+\t  let tempLine = '';\n+\t  let nodeModule;\n+\t  let pos = 0;\n+\t  while ((nodeModule = nodeModulesRegExp.exec(line)) !== null) {\n+\t    // '/node_modules/'.length === 14\n+\t    tempLine += StringPrototypeSlice(line, pos, nodeModule.index + 14);\n+\t    tempLine += ctx.stylize(nodeModule[1], 'module');\n+\t    pos = nodeModule.index + nodeModule[0].length;\n+\t  }\n+\t  if (pos !== 0) {\n+\t    line = tempLine + StringPrototypeSlice(line, pos);\n+\t  }\n+\t  return line;\n+\t}\n+\n+\tfunction markCwd(ctx, line, workingDirectory) {\n+\t  let cwdStartPos = StringPrototypeIndexOf(line, workingDirectory);\n+\t  let tempLine = '';\n+\t  let cwdLength = workingDirectory.length;\n+\t  if (cwdStartPos !== -1) {\n+\t    if (StringPrototypeSlice(line, cwdStartPos - 7, cwdStartPos) === 'file://') {\n+\t      cwdLength += 7;\n+\t      cwdStartPos -= 7;\n+\t    }\n+\t    const start = line[cwdStartPos - 1] === '(' ? cwdStartPos - 1 : cwdStartPos;\n+\t    const end = start !== cwdStartPos && StringPrototypeEndsWith(line, ')') ? -1 : line.length;\n+\t    const workingDirectoryEndPos = cwdStartPos + cwdLength + 1;\n+\t    const cwdSlice = StringPrototypeSlice(line, start, workingDirectoryEndPos);\n+\n+\t    tempLine += StringPrototypeSlice(line, 0, start);\n+\t    tempLine += ctx.stylize(cwdSlice, 'undefined');\n+\t    tempLine += StringPrototypeSlice(line, workingDirectoryEndPos, end);\n+\t    if (end === -1) {\n+\t      tempLine += ctx.stylize(')', 'undefined');\n+\t    }\n+\t  } else {\n+\t    tempLine += line;\n+\t  }\n+\t  return tempLine;\n+\t}\n+\n+\tfunction safeGetCWD() {\n+\t  let workingDirectory;\n+\t  try {\n+\t    workingDirectory = process.cwd();\n+\t  } catch {\n+\t    return;\n+\t  }\n+\t  return workingDirectory;\n+\t}\n+\n+\tfunction formatError(err, constructor, tag, ctx, keys) {\n+\t  const name = err.name != null ? String(err.name) : 'Error';\n+\t  let stack = getStackString(err);\n+\n+\t  removeDuplicateErrorKeys(ctx, keys, err, stack);\n+\n+\t  if ('cause' in err &&\n+\t      (keys.length === 0 || !ArrayPrototypeIncludes(keys, 'cause'))) {\n+\t    ArrayPrototypePush(keys, 'cause');\n+\t  }\n+\n+\t  // Print errors aggregated into AggregateError\n+\t  if (ArrayIsArray(err.errors) &&\n+\t      (keys.length === 0 || !ArrayPrototypeIncludes(keys, 'errors'))) {\n+\t    ArrayPrototypePush(keys, 'errors');\n+\t  }\n+\n+\t  stack = improveStack(stack, constructor, name, tag);\n+\n+\t  // Ignore the error message if it's contained in the stack.\n+\t  let pos = (err.message && StringPrototypeIndexOf(stack, err.message)) || -1;\n+\t  if (pos !== -1)\n+\t    pos += err.message.length;\n+\t  // Wrap the error in brackets in case it has no stack trace.\n+\t  const stackStart = StringPrototypeIndexOf(stack, '\\n    at', pos);\n+\t  if (stackStart === -1) {\n+\t    stack = `[${stack}]`;\n+\t  } else {\n+\t    let newStack = StringPrototypeSlice(stack, 0, stackStart);\n+\t    const stackFramePart = StringPrototypeSlice(stack, stackStart + 1);\n+\t    const lines = getStackFrames(ctx, err, stackFramePart);\n+\t    if (ctx.colors) {\n+\t      // Highlight userland code and node modules.\n+\t      const workingDirectory = safeGetCWD();\n+\t      let esmWorkingDirectory;\n+\t      for (let line of lines) {\n+\t        const core = RegExpPrototypeExec(coreModuleRegExp, line);\n+\t        if (core !== null && BuiltinModule.exists(core[1])) {\n+\t          newStack += `\\n${ctx.stylize(line, 'undefined')}`;\n+\t        } else {\n+\t          newStack += '\\n';\n+\n+\t          line = markNodeModules(ctx, line);\n+\t          if (workingDirectory !== undefined) {\n+\t            let newLine = markCwd(ctx, line, workingDirectory);\n+\t            if (newLine === line) {\n+\t              // Maintain node 14 compat\n+\t              // esmWorkingDirectory ??= pathToFileUrlHref(workingDirectory);\n+\t              esmWorkingDirectory =\n+\t                (esmWorkingDirectory == null) ? pathToFileUrlHref(workingDirectory) : esmWorkingDirectory;\n+\t              newLine = markCwd(ctx, line, esmWorkingDirectory);\n+\t            }\n+\t            line = newLine;\n+\t          }\n+\n+\t          newStack += line;\n+\t        }\n+\t      }\n+\t    } else {\n+\t      newStack += `\\n${ArrayPrototypeJoin(lines, '\\n')}`;\n+\t    }\n+\t    stack = newStack;\n+\t  }\n+\t  // The message and the stack have to be indented as well!\n+\t  if (ctx.indentationLvl !== 0) {\n+\t    const indentation = StringPrototypeRepeat(' ', ctx.indentationLvl);\n+\t    stack = StringPrototypeReplaceAll(stack, '\\n', `\\n${indentation}`);\n+\t  }\n+\t  return stack;\n+\t}\n+\n+\tfunction groupArrayElements(ctx, output, value) {\n+\t  let totalLength = 0;\n+\t  let maxLength = 0;\n+\t  let i = 0;\n+\t  let outputLength = output.length;\n+\t  if (ctx.maxArrayLength < output.length) {\n+\t    // This makes sure the \"... n more items\" part is not taken into account.\n+\t    outputLength--;\n+\t  }\n+\t  const separatorSpace = 2; // Add 1 for the space and 1 for the separator.\n+\t  const dataLen = new Array(outputLength);\n+\t  // Calculate the total length of all output entries and the individual max\n+\t  // entries length of all output entries. We have to remove colors first,\n+\t  // otherwise the length would not be calculated properly.\n+\t  for (; i < outputLength; i++) {\n+\t    const len = getStringWidth(output[i], ctx.colors);\n+\t    dataLen[i] = len;\n+\t    totalLength += len + separatorSpace;\n+\t    if (maxLength < len)\n+\t      maxLength = len;\n+\t  }\n+\t  // Add two to `maxLength` as we add a single whitespace character plus a comma\n+\t  // in-between two entries.\n+\t  const actualMax = maxLength + separatorSpace;\n+\t  // Check if at least three entries fit next to each other and prevent grouping\n+\t  // of arrays that contains entries of very different length (i.e., if a single\n+\t  // entry is longer than 1/5 of all other entries combined). Otherwise the\n+\t  // space in-between small entries would be enormous.\n+\t  if (actualMax * 3 + ctx.indentationLvl < ctx.breakLength &&\n+\t      (totalLength / actualMax > 5 || maxLength <= 6)) {\n+\n+\t    const approxCharHeights = 2.5;\n+\t    const averageBias = MathSqrt(actualMax - totalLength / output.length);\n+\t    const biasedMax = MathMax(actualMax - 3 - averageBias, 1);\n+\t    // Dynamically check how many columns seem possible.\n+\t    const columns = MathMin(\n+\t      // Ideally a square should be drawn. We expect a character to be about 2.5\n+\t      // times as high as wide. This is the area formula to calculate a square\n+\t      // which contains n rectangles of size `actualMax * approxCharHeights`.\n+\t      // Divide that by `actualMax` to receive the correct number of columns.\n+\t      // The added bias increases the columns for short entries.\n+\t      MathRound(\n+\t        MathSqrt(\n+\t          approxCharHeights * biasedMax * outputLength,\n+\t        ) / biasedMax,\n+\t      ),\n+\t      // Do not exceed the breakLength.\n+\t      MathFloor((ctx.breakLength - ctx.indentationLvl) / actualMax),\n+\t      // Limit array grouping for small `compact` modes as the user requested\n+\t      // minimal grouping.\n+\t      ctx.compact * 4,\n+\t      // Limit the columns to a maximum of fifteen.\n+\t      15,\n+\t    );\n+\t    // Return with the original output if no grouping should happen.\n+\t    if (columns <= 1) {\n+\t      return output;\n+\t    }\n+\t    const tmp = [];\n+\t    const maxLineLength = [];\n+\t    for (let i = 0; i < columns; i++) {\n+\t      let lineMaxLength = 0;\n+\t      for (let j = i; j < output.length; j += columns) {\n+\t        if (dataLen[j] > lineMaxLength)\n+\t          lineMaxLength = dataLen[j];\n+\t      }\n+\t      lineMaxLength += separatorSpace;\n+\t      maxLineLength[i] = lineMaxLength;\n+\t    }\n+\t    let order = StringPrototypePadStart;\n+\t    if (value !== undefined) {\n+\t      for (let i = 0; i < output.length; i++) {\n+\t        if (typeof value[i] !== 'number' && typeof value[i] !== 'bigint') {\n+\t          order = StringPrototypePadEnd;\n+\t          break;\n+\t        }\n+\t      }\n+\t    }\n+\t    // Each iteration creates a single line of grouped entries.\n+\t    for (let i = 0; i < outputLength; i += columns) {\n+\t      // The last lines may contain less entries than columns.\n+\t      const max = MathMin(i + columns, outputLength);\n+\t      let str = '';\n+\t      let j = i;\n+\t      for (; j < max - 1; j++) {\n+\t        // Calculate extra color padding in case it's active. This has to be\n+\t        // done line by line as some lines might contain more colors than\n+\t        // others.\n+\t        const padding = maxLineLength[j - i] + output[j].length - dataLen[j];\n+\t        str += order(`${output[j]}, `, padding, ' ');\n+\t      }\n+\t      if (order === StringPrototypePadStart) {\n+\t        const padding = maxLineLength[j - i] +\n+\t                        output[j].length -\n+\t                        dataLen[j] -\n+\t                        separatorSpace;\n+\t        str += StringPrototypePadStart(output[j], padding, ' ');\n+\t      } else {\n+\t        str += output[j];\n+\t      }\n+\t      ArrayPrototypePush(tmp, str);\n+\t    }\n+\t    if (ctx.maxArrayLength < output.length) {\n+\t      ArrayPrototypePush(tmp, output[outputLength]);\n+\t    }\n+\t    output = tmp;\n+\t  }\n+\t  return output;\n+\t}\n+\n+\tfunction handleMaxCallStackSize(ctx, err, constructorName, indentationLvl) {\n+\t  if (isStackOverflowError(err)) {\n+\t    ctx.seen.pop();\n+\t    ctx.indentationLvl = indentationLvl;\n+\t    return ctx.stylize(\n+\t      `[${constructorName}: Inspection interrupted ` +\n+\t        'prematurely. Maximum call stack size exceeded.]',\n+\t      'special',\n+\t    );\n+\t  }\n+\t  assert.fail(err.stack);\n+\t}\n+\n+\tfunction addNumericSeparator(integerString) {\n+\t  let result = '';\n+\t  let i = integerString.length;\n+\t  const start = StringPrototypeStartsWith(integerString, '-') ? 1 : 0;\n+\t  for (; i >= start + 4; i -= 3) {\n+\t    result = `_${StringPrototypeSlice(integerString, i - 3, i)}${result}`;\n+\t  }\n+\t  return i === integerString.length ?\n+\t    integerString :\n+\t    `${StringPrototypeSlice(integerString, 0, i)}${result}`;\n+\t}\n+\n+\tfunction addNumericSeparatorEnd(integerString) {\n+\t  let result = '';\n+\t  let i = 0;\n+\t  for (; i < integerString.length - 3; i += 3) {\n+\t    result += `${StringPrototypeSlice(integerString, i, i + 3)}_`;\n+\t  }\n+\t  return i === 0 ?\n+\t    integerString :\n+\t    `${result}${StringPrototypeSlice(integerString, i)}`;\n+\t}\n+\n+\tconst remainingText = (remaining) => `... ${remaining} more item${remaining > 1 ? 's' : ''}`;\n+\n+\tfunction formatNumber(fn, number, numericSeparator) {\n+\t  if (!numericSeparator) {\n+\t    // Format -0 as '-0'. Checking `number === -0` won't distinguish 0 from -0.\n+\t    if (ObjectIs(number, -0)) {\n+\t      return fn('-0', 'number');\n+\t    }\n+\t    return fn(`${number}`, 'number');\n+\t  }\n+\t  const integer = MathTrunc(number);\n+\t  const string = String(integer);\n+\t  if (integer === number) {\n+\t    if (!NumberIsFinite(number) || StringPrototypeIncludes(string, 'e')) {\n+\t      return fn(string, 'number');\n+\t    }\n+\t    return fn(`${addNumericSeparator(string)}`, 'number');\n+\t  }\n+\t  if (NumberIsNaN(number)) {\n+\t    return fn(string, 'number');\n+\t  }\n+\t  return fn(`${\n+\t    addNumericSeparator(string)\n+\t  }.${\n+\t    addNumericSeparatorEnd(\n+\t      StringPrototypeSlice(String(number), string.length + 1),\n+\t    )\n+\t  }`, 'number');\n+\t}\n+\n+\tfunction formatBigInt(fn, bigint, numericSeparator) {\n+\t  const string = String(bigint);\n+\t  if (!numericSeparator) {\n+\t    return fn(`${string}n`, 'bigint');\n+\t  }\n+\t  return fn(`${addNumericSeparator(string)}n`, 'bigint');\n+\t}\n+\n+\tfunction formatPrimitive(fn, value, ctx) {\n+\t  if (typeof value === 'string') {\n+\t    let trailer = '';\n+\t    if (value.length > ctx.maxStringLength) {\n+\t      const remaining = value.length - ctx.maxStringLength;\n+\t      value = StringPrototypeSlice(value, 0, ctx.maxStringLength);\n+\t      trailer = `... ${remaining} more character${remaining > 1 ? 's' : ''}`;\n+\t    }\n+\t    if (ctx.compact !== true &&\n+\t        // We do not support handling unicode characters width with\n+\t        // the readline getStringWidth function as there are\n+\t        // performance implications.\n+\t        value.length > kMinLineLength &&\n+\t        value.length > ctx.breakLength - ctx.indentationLvl - 4) {\n+\t      return ArrayPrototypeJoin(\n+\t        ArrayPrototypeMap(\n+\t          extractedSplitNewLines(value),\n+\t          (line) => fn(strEscape(line), 'string'),\n+\t        ),\n+\t        ` +\\n${StringPrototypeRepeat(' ', ctx.indentationLvl + 2)}`,\n+\t      ) + trailer;\n+\t    }\n+\t    return fn(strEscape(value), 'string') + trailer;\n+\t  }\n+\t  if (typeof value === 'number')\n+\t    return formatNumber(fn, value, ctx.numericSeparator);\n+\t  if (typeof value === 'bigint')\n+\t    return formatBigInt(fn, value, ctx.numericSeparator);\n+\t  if (typeof value === 'boolean')\n+\t    return fn(`${value}`, 'boolean');\n+\t  if (typeof value === 'undefined')\n+\t    return fn('undefined', 'undefined');\n+\t  // es6 symbol primitive\n+\t  return fn(SymbolPrototypeToString(value), 'symbol');\n+\t}\n+\n+\tfunction formatNamespaceObject(keys, ctx, value, recurseTimes) {\n+\t  const output = new Array(keys.length);\n+\t  for (let i = 0; i < keys.length; i++) {\n+\t    try {\n+\t      output[i] = formatProperty(ctx, value, recurseTimes, keys[i],\n+\t                                 kObjectType);\n+\t    } catch (err) {\n+\t      assert(isNativeError(err) && err.name === 'ReferenceError');\n+\t      // Use the existing functionality. This makes sure the indentation and\n+\t      // line breaks are always correct. Otherwise it is very difficult to keep\n+\t      // this aligned, even though this is a hacky way of dealing with this.\n+\t      const tmp = { [keys[i]]: '' };\n+\t      output[i] = formatProperty(ctx, tmp, recurseTimes, keys[i], kObjectType);\n+\t      const pos = StringPrototypeLastIndexOf(output[i], ' ');\n+\t      // We have to find the last whitespace and have to replace that value as\n+\t      // it will be visualized as a regular string.\n+\t      output[i] = StringPrototypeSlice(output[i], 0, pos + 1) +\n+\t                  ctx.stylize('<uninitialized>', 'special');\n+\t    }\n+\t  }\n+\t  // Reset the keys to an empty array. This prevents duplicated inspection.\n+\t  keys.length = 0;\n+\t  return output;\n+\t}\n+\n+\t// The array is sparse and/or has extra keys\n+\tfunction formatSpecialArray(ctx, value, recurseTimes, maxLength, output, i) {\n+\t  const keys = ObjectKeys(value);\n+\t  let index = i;\n+\t  for (; i < keys.length && output.length < maxLength; i++) {\n+\t    const key = keys[i];\n+\t    const tmp = +key;\n+\t    // Arrays can only have up to 2^32 - 1 entries\n+\t    if (tmp > 2 ** 32 - 2) {\n+\t      break;\n+\t    }\n+\t    if (`${index}` !== key) {\n+\t      if (RegExpPrototypeExec(numberRegExp, key) === null) {\n+\t        break;\n+\t      }\n+\t      const emptyItems = tmp - index;\n+\t      const ending = emptyItems > 1 ? 's' : '';\n+\t      const message = `<${emptyItems} empty item${ending}>`;\n+\t      ArrayPrototypePush(output, ctx.stylize(message, 'undefined'));\n+\t      index = tmp;\n+\t      if (output.length === maxLength) {\n+\t        break;\n+\t      }\n+\t    }\n+\t    ArrayPrototypePush(output, formatProperty(ctx, value, recurseTimes, key, kArrayType));\n+\t    index++;\n+\t  }\n+\t  const remaining = value.length - index;\n+\t  if (output.length !== maxLength) {\n+\t    if (remaining > 0) {\n+\t      const ending = remaining > 1 ? 's' : '';\n+\t      const message = `<${remaining} empty item${ending}>`;\n+\t      ArrayPrototypePush(output, ctx.stylize(message, 'undefined'));\n+\t    }\n+\t  } else if (remaining > 0) {\n+\t    ArrayPrototypePush(output, remainingText(remaining));\n+\t  }\n+\t  return output;\n+\t}\n+\n+\tfunction formatArrayBuffer(ctx, value) {\n+\t  let buffer;\n+\t  try {\n+\t    buffer = new Uint8Array(value);\n+\t  } catch {\n+\t    return [ctx.stylize('(detached)', 'special')];\n+\t  }\n+\t  if (hexSlice === undefined)\n+\t    hexSlice = uncurryThis(requireBuffer().Buffer.prototype.hexSlice);\n+\t  let str = StringPrototypeTrim(RegExpPrototypeSymbolReplace(\n+\t    /(.{2})/g,\n+\t    hexSlice(buffer, 0, MathMin(ctx.maxArrayLength, buffer.length)),\n+\t    '$1 ',\n+\t  ));\n+\t  const remaining = buffer.length - ctx.maxArrayLength;\n+\t  if (remaining > 0)\n+\t    str += ` ... ${remaining} more byte${remaining > 1 ? 's' : ''}`;\n+\t  return [`${ctx.stylize('[Uint8Contents]', 'special')}: <${str}>`];\n+\t}\n+\n+\tfunction formatArray(ctx, value, recurseTimes) {\n+\t  const valLen = value.length;\n+\t  const len = MathMin(MathMax(0, ctx.maxArrayLength), valLen);\n+\n+\t  const remaining = valLen - len;\n+\t  const output = [];\n+\t  for (let i = 0; i < len; i++) {\n+\t    // Special handle sparse arrays.\n+\t    if (!ObjectPrototypeHasOwnProperty(value, i)) {\n+\t      return formatSpecialArray(ctx, value, recurseTimes, len, output, i);\n+\t    }\n+\t    ArrayPrototypePush(output, formatProperty(ctx, value, recurseTimes, i, kArrayType));\n+\t  }\n+\t  if (remaining > 0) {\n+\t    ArrayPrototypePush(output, remainingText(remaining));\n+\t  }\n+\t  return output;\n+\t}\n+\n+\tfunction formatTypedArray(value, length, ctx, ignored, recurseTimes) {\n+\t  const maxLength = MathMin(MathMax(0, ctx.maxArrayLength), length);\n+\t  const remaining = value.length - maxLength;\n+\t  const output = new Array(maxLength);\n+\t  const elementFormatter = value.length > 0 && typeof value[0] === 'number' ?\n+\t    formatNumber :\n+\t    formatBigInt;\n+\t  for (let i = 0; i < maxLength; ++i) {\n+\t    output[i] = elementFormatter(ctx.stylize, value[i], ctx.numericSeparator);\n+\t  }\n+\t  if (remaining > 0) {\n+\t    output[maxLength] = remainingText(remaining);\n+\t  }\n+\t  if (ctx.showHidden) {\n+\t    // .buffer goes last, it's not a primitive like the others.\n+\t    // All besides `BYTES_PER_ELEMENT` are actually getters.\n+\t    ctx.indentationLvl += 2;\n+\t    for (const key of [\n+\t      'BYTES_PER_ELEMENT',\n+\t      'length',\n+\t      'byteLength',\n+\t      'byteOffset',\n+\t      'buffer',\n+\t    ]) {\n+\t      const str = formatValue(ctx, value[key], recurseTimes, true);\n+\t      ArrayPrototypePush(output, `[${key}]: ${str}`);\n+\t    }\n+\t    ctx.indentationLvl -= 2;\n+\t  }\n+\t  return output;\n+\t}\n+\n+\tfunction formatSet(value, ctx, ignored, recurseTimes) {\n+\t  const length = value.size;\n+\t  const maxLength = MathMin(MathMax(0, ctx.maxArrayLength), length);\n+\t  const remaining = length - maxLength;\n+\t  const output = [];\n+\t  ctx.indentationLvl += 2;\n+\t  let i = 0;\n+\t  for (const v of value) {\n+\t    if (i >= maxLength) break;\n+\t    ArrayPrototypePush(output, formatValue(ctx, v, recurseTimes));\n+\t    i++;\n+\t  }\n+\t  if (remaining > 0) {\n+\t    ArrayPrototypePush(output, remainingText(remaining));\n+\t  }\n+\t  ctx.indentationLvl -= 2;\n+\t  return output;\n+\t}\n+\n+\tfunction formatMap(value, ctx, ignored, recurseTimes) {\n+\t  const length = value.size;\n+\t  const maxLength = MathMin(MathMax(0, ctx.maxArrayLength), length);\n+\t  const remaining = length - maxLength;\n+\t  const output = [];\n+\t  ctx.indentationLvl += 2;\n+\t  let i = 0;\n+\t  for (const { 0: k, 1: v } of value) {\n+\t    if (i >= maxLength) break;\n+\t    ArrayPrototypePush(\n+\t      output,\n+\t      `${formatValue(ctx, k, recurseTimes)} => ${formatValue(ctx, v, recurseTimes)}`,\n+\t    );\n+\t    i++;\n+\t  }\n+\t  if (remaining > 0) {\n+\t    ArrayPrototypePush(output, remainingText(remaining));\n+\t  }\n+\t  ctx.indentationLvl -= 2;\n+\t  return output;\n+\t}\n+\n+\tfunction formatSetIterInner(ctx, recurseTimes, entries, state) {\n+\t  const maxArrayLength = MathMax(ctx.maxArrayLength, 0);\n+\t  const maxLength = MathMin(maxArrayLength, entries.length);\n+\t  const output = new Array(maxLength);\n+\t  ctx.indentationLvl += 2;\n+\t  for (let i = 0; i < maxLength; i++) {\n+\t    output[i] = formatValue(ctx, entries[i], recurseTimes);\n+\t  }\n+\t  ctx.indentationLvl -= 2;\n+\t  if (state === kWeak && !ctx.sorted) {\n+\t    // Sort all entries to have a halfway reliable output (if more entries than\n+\t    // retrieved ones exist, we can not reliably return the same output) if the\n+\t    // output is not sorted anyway.\n+\t    ArrayPrototypeSort(output);\n+\t  }\n+\t  const remaining = entries.length - maxLength;\n+\t  if (remaining > 0) {\n+\t    ArrayPrototypePush(output, remainingText(remaining));\n+\t  }\n+\t  return output;\n+\t}\n+\n+\tfunction formatMapIterInner(ctx, recurseTimes, entries, state) {\n+\t  const maxArrayLength = MathMax(ctx.maxArrayLength, 0);\n+\t  // Entries exist as [key1, val1, key2, val2, ...]\n+\t  const len = entries.length / 2;\n+\t  const remaining = len - maxArrayLength;\n+\t  const maxLength = MathMin(maxArrayLength, len);\n+\t  const output = new Array(maxLength);\n+\t  let i = 0;\n+\t  ctx.indentationLvl += 2;\n+\t  if (state === kWeak) {\n+\t    for (; i < maxLength; i++) {\n+\t      const pos = i * 2;\n+\t      output[i] =\n+\t        `${formatValue(ctx, entries[pos], recurseTimes)} => ${formatValue(ctx, entries[pos + 1], recurseTimes)}`;\n+\t    }\n+\t    // Sort all entries to have a halfway reliable output (if more entries than\n+\t    // retrieved ones exist, we can not reliably return the same output) if the\n+\t    // output is not sorted anyway.\n+\t    if (!ctx.sorted)\n+\t      ArrayPrototypeSort(output);\n+\t  } else {\n+\t    for (; i < maxLength; i++) {\n+\t      const pos = i * 2;\n+\t      const res = [\n+\t        formatValue(ctx, entries[pos], recurseTimes),\n+\t        formatValue(ctx, entries[pos + 1], recurseTimes),\n+\t      ];\n+\t      output[i] = reduceToSingleString(\n+\t        ctx, res, '', ['[', ']'], kArrayExtrasType, recurseTimes);\n+\t    }\n+\t  }\n+\t  ctx.indentationLvl -= 2;\n+\t  if (remaining > 0) {\n+\t    ArrayPrototypePush(output, remainingText(remaining));\n+\t  }\n+\t  return output;\n+\t}\n+\n+\tfunction formatWeakCollection(ctx) {\n+\t  return [ctx.stylize('<items unknown>', 'special')];\n+\t}\n+\n+\tfunction formatWeakSet(ctx, value, recurseTimes) {\n+\t  const entries = previewEntries(value);\n+\t  return formatSetIterInner(ctx, recurseTimes, entries, kWeak);\n+\t}\n+\n+\tfunction formatWeakMap(ctx, value, recurseTimes) {\n+\t  const entries = previewEntries(value);\n+\t  return formatMapIterInner(ctx, recurseTimes, entries, kWeak);\n+\t}\n+\n+\tfunction formatIterator(braces, ctx, value, recurseTimes) {\n+\t  const { 0: entries, 1: isKeyValue } = previewEntries(value, true);\n+\t  if (isKeyValue) {\n+\t    // Mark entry iterators as such.\n+\t    braces[0] = RegExpPrototypeSymbolReplace(/ Iterator] {$/, braces[0], ' Entries] {');\n+\t    return formatMapIterInner(ctx, recurseTimes, entries, kMapEntries);\n+\t  }\n+\n+\t  return formatSetIterInner(ctx, recurseTimes, entries, kIterator);\n+\t}\n+\n+\tfunction formatPromise(ctx, value, recurseTimes) {\n+\t  let output;\n+\t  const { 0: state, 1: result } = getPromiseDetails(value);\n+\t  if (state === kPending) {\n+\t    output = [ctx.stylize('<pending>', 'special')];\n+\t  } else {\n+\t    ctx.indentationLvl += 2;\n+\t    const str = formatValue(ctx, result, recurseTimes);\n+\t    ctx.indentationLvl -= 2;\n+\t    output = [\n+\t      state === kRejected ?\n+\t        `${ctx.stylize('<rejected>', 'special')} ${str}` :\n+\t        str,\n+\t    ];\n+\t  }\n+\t  return output;\n+\t}\n+\n+\tfunction formatProperty(ctx, value, recurseTimes, key, type, desc,\n+\t                        original = value) {\n+\t  let name, str;\n+\t  let extra = ' ';\n+\t  desc = desc || ObjectGetOwnPropertyDescriptor(value, key) ||\n+\t    { value: value[key], enumerable: true };\n+\t  if (desc.value !== undefined) {\n+\t    const diff = (ctx.compact !== true || type !== kObjectType) ? 2 : 3;\n+\t    ctx.indentationLvl += diff;\n+\t    str = formatValue(ctx, desc.value, recurseTimes);\n+\t    if (diff === 3 && ctx.breakLength < getStringWidth(str, ctx.colors)) {\n+\t      extra = `\\n${StringPrototypeRepeat(' ', ctx.indentationLvl)}`;\n+\t    }\n+\t    ctx.indentationLvl -= diff;\n+\t  } else if (desc.get !== undefined) {\n+\t    const label = desc.set !== undefined ? 'Getter/Setter' : 'Getter';\n+\t    const s = ctx.stylize;\n+\t    const sp = 'special';\n+\t    if (ctx.getters && (ctx.getters === true ||\n+\t          (ctx.getters === 'get' && desc.set === undefined) ||\n+\t          (ctx.getters === 'set' && desc.set !== undefined))) {\n+\t      try {\n+\t        const tmp = FunctionPrototypeCall(desc.get, original);\n+\t        ctx.indentationLvl += 2;\n+\t        if (tmp === null) {\n+\t          str = `${s(`[${label}:`, sp)} ${s('null', 'null')}${s(']', sp)}`;\n+\t        } else if (typeof tmp === 'object') {\n+\t          str = `${s(`[${label}]`, sp)} ${formatValue(ctx, tmp, recurseTimes)}`;\n+\t        } else {\n+\t          const primitive = formatPrimitive(s, tmp, ctx);\n+\t          str = `${s(`[${label}:`, sp)} ${primitive}${s(']', sp)}`;\n+\t        }\n+\t        ctx.indentationLvl -= 2;\n+\t      } catch (err) {\n+\t        const message = `<Inspection threw (${err.message})>`;\n+\t        str = `${s(`[${label}:`, sp)} ${message}${s(']', sp)}`;\n+\t      }\n+\t    } else {\n+\t      str = ctx.stylize(`[${label}]`, sp);\n+\t    }\n+\t  } else if (desc.set !== undefined) {\n+\t    str = ctx.stylize('[Setter]', 'special');\n+\t  } else {\n+\t    str = ctx.stylize('undefined', 'undefined');\n+\t  }\n+\t  if (type === kArrayType) {\n+\t    return str;\n+\t  }\n+\t  if (typeof key === 'symbol') {\n+\t    const tmp = RegExpPrototypeSymbolReplace(\n+\t      strEscapeSequencesReplacer,\n+\t      SymbolPrototypeToString(key),\n+\t      escapeFn,\n+\t    );\n+\t    name = `[${ctx.stylize(tmp, 'symbol')}]`;\n+\t  } else if (key === '__proto__') {\n+\t    name = \"['__proto__']\";\n+\t  } else if (desc.enumerable === false) {\n+\t    const tmp = RegExpPrototypeSymbolReplace(\n+\t      strEscapeSequencesReplacer,\n+\t      key,\n+\t      escapeFn,\n+\t    );\n+\t    name = `[${tmp}]`;\n+\t  } else if (RegExpPrototypeExec(keyStrRegExp, key) !== null) {\n+\t    name = ctx.stylize(key, 'name');\n+\t  } else {\n+\t    name = ctx.stylize(strEscape(key), 'string');\n+\t  }\n+\t  return `${name}:${extra}${str}`;\n+\t}\n+\n+\tfunction isBelowBreakLength(ctx, output, start, base) {\n+\t  // Each entry is separated by at least a comma. Thus, we start with a total\n+\t  // length of at least `output.length`. In addition, some cases have a\n+\t  // whitespace in-between each other that is added to the total as well.\n+\t  // TODO(BridgeAR): Add unicode support. Use the readline getStringWidth\n+\t  // function. Check the performance overhead and make it an opt-in in case it's\n+\t  // significant.\n+\t  let totalLength = output.length + start;\n+\t  if (totalLength + output.length > ctx.breakLength)\n+\t    return false;\n+\t  for (let i = 0; i < output.length; i++) {\n+\t    if (ctx.colors) {\n+\t      totalLength += removeColors(output[i]).length;\n+\t    } else {\n+\t      totalLength += output[i].length;\n+\t    }\n+\t    if (totalLength > ctx.breakLength) {\n+\t      return false;\n+\t    }\n+\t  }\n+\t  // Do not line up properties on the same line if `base` contains line breaks.\n+\t  return base === '' || !StringPrototypeIncludes(base, '\\n');\n+\t}\n+\n+\tfunction reduceToSingleString(\n+\t  ctx, output, base, braces, extrasType, recurseTimes, value) {\n+\t  if (ctx.compact !== true) {\n+\t    if (typeof ctx.compact === 'number' && ctx.compact >= 1) {\n+\t      // Memorize the original output length. In case the output is grouped,\n+\t      // prevent lining up the entries on a single line.\n+\t      const entries = output.length;\n+\t      // Group array elements together if the array contains at least six\n+\t      // separate entries.\n+\t      if (extrasType === kArrayExtrasType && entries > 6) {\n+\t        output = groupArrayElements(ctx, output, value);\n+\t      }\n+\t      // `ctx.currentDepth` is set to the most inner depth of the currently\n+\t      // inspected object part while `recurseTimes` is the actual current depth\n+\t      // that is inspected.\n+\t      //\n+\t      // Example:\n+\t      //\n+\t      // const a = { first: [ 1, 2, 3 ], second: { inner: [ 1, 2, 3 ] } }\n+\t      //\n+\t      // The deepest depth of `a` is 2 (a.second.inner) and `a.first` has a max\n+\t      // depth of 1.\n+\t      //\n+\t      // Consolidate all entries of the local most inner depth up to\n+\t      // `ctx.compact`, as long as the properties are smaller than\n+\t      // `ctx.breakLength`.\n+\t      if (ctx.currentDepth - recurseTimes < ctx.compact &&\n+\t          entries === output.length) {\n+\t        // Line up all entries on a single line in case the entries do not\n+\t        // exceed `breakLength`. Add 10 as constant to start next to all other\n+\t        // factors that may reduce `breakLength`.\n+\t        const start = output.length + ctx.indentationLvl +\n+\t                      braces[0].length + base.length + 10;\n+\t        if (isBelowBreakLength(ctx, output, start, base)) {\n+\t          const joinedOutput = join(output, ', ');\n+\t          if (!StringPrototypeIncludes(joinedOutput, '\\n')) {\n+\t            return `${base ? `${base} ` : ''}${braces[0]} ${joinedOutput}` +\n+\t              ` ${braces[1]}`;\n+\t          }\n+\t        }\n+\t      }\n+\t    }\n+\t    // Line up each entry on an individual line.\n+\t    const indentation = `\\n${StringPrototypeRepeat(' ', ctx.indentationLvl)}`;\n+\t    return `${base ? `${base} ` : ''}${braces[0]}${indentation}  ` +\n+\t      `${join(output, `,${indentation}  `)}${indentation}${braces[1]}`;\n+\t  }\n+\t  // Line up all entries on a single line in case the entries do not exceed\n+\t  // `breakLength`.\n+\t  if (isBelowBreakLength(ctx, output, 0, base)) {\n+\t    return `${braces[0]}${base ? ` ${base}` : ''} ${join(output, ', ')} ` +\n+\t      braces[1];\n+\t  }\n+\t  const indentation = StringPrototypeRepeat(' ', ctx.indentationLvl);\n+\t  // If the opening \"brace\" is too large, like in the case of \"Set {\",\n+\t  // we need to force the first item to be on the next line or the\n+\t  // items will not line up correctly.\n+\t  const ln = base === '' && braces[0].length === 1 ?\n+\t    ' ' : `${base ? ` ${base}` : ''}\\n${indentation}  `;\n+\t  // Line up each entry on an individual line.\n+\t  return `${braces[0]}${ln}${join(output, `,\\n${indentation}  `)} ${braces[1]}`;\n+\t}\n+\n+\tfunction hasBuiltInToString(value) {\n+\t  // Prevent triggering proxy traps.\n+\t  const getFullProxy = false;\n+\t  const proxyTarget = getProxyDetails(value, getFullProxy);\n+\t  if (proxyTarget !== undefined) {\n+\t    if (proxyTarget === null) {\n+\t      return true;\n+\t    }\n+\t    value = proxyTarget;\n+\t  }\n+\n+\t  // Count objects that have no `toString` function as built-in.\n+\t  if (typeof value.toString !== 'function') {\n+\t    return true;\n+\t  }\n+\n+\t  // The object has a own `toString` property. Thus it's not not a built-in one.\n+\t  if (ObjectPrototypeHasOwnProperty(value, 'toString')) {\n+\t    return false;\n+\t  }\n+\n+\t  // Find the object that has the `toString` property as own property in the\n+\t  // prototype chain.\n+\t  let pointer = value;\n+\t  do {\n+\t    pointer = ObjectGetPrototypeOf(pointer);\n+\t  } while (!ObjectPrototypeHasOwnProperty(pointer, 'toString'));\n+\n+\t  // Check closer if the object is a built-in.\n+\t  const descriptor = ObjectGetOwnPropertyDescriptor(pointer, 'constructor');\n+\t  return descriptor !== undefined &&\n+\t    typeof descriptor.value === 'function' &&\n+\t    builtInObjects.has(descriptor.value.name);\n+\t}\n+\n+\tconst firstErrorLine = (error) => StringPrototypeSplit(error.message, '\\n', 1)[0];\n+\tlet CIRCULAR_ERROR_MESSAGE;\n+\tfunction tryStringify(arg) {\n+\t  try {\n+\t    return JSONStringify(arg);\n+\t  } catch (err) {\n+\t    // Populate the circular error message lazily\n+\t    if (!CIRCULAR_ERROR_MESSAGE) {\n+\t      try {\n+\t        const a = {};\n+\t        a.a = a;\n+\t        JSONStringify(a);\n+\t      } catch (circularError) {\n+\t        CIRCULAR_ERROR_MESSAGE = firstErrorLine(circularError);\n+\t      }\n+\t    }\n+\t    if (err.name === 'TypeError' &&\n+\t        firstErrorLine(err) === CIRCULAR_ERROR_MESSAGE) {\n+\t      return '[Circular]';\n+\t    }\n+\t    throw err;\n+\t  }\n+\t}\n+\n+\tfunction format(...args) {\n+\t  return formatWithOptionsInternal(undefined, args);\n+\t}\n+\n+\tfunction formatWithOptions(inspectOptions, ...args) {\n+\t  validateObject(inspectOptions, 'inspectOptions', { allowArray: true });\n+\t  return formatWithOptionsInternal(inspectOptions, args);\n+\t}\n+\n+\tfunction formatNumberNoColor(number, options) {\n+\t  return formatNumber(\n+\t    stylizeNoColor,\n+\t    number,\n+\t    options?.numericSeparator ?? inspectDefaultOptions.numericSeparator,\n+\t  );\n+\t}\n+\n+\tfunction formatBigIntNoColor(bigint, options) {\n+\t  return formatBigInt(\n+\t    stylizeNoColor,\n+\t    bigint,\n+\t    options?.numericSeparator ?? inspectDefaultOptions.numericSeparator,\n+\t  );\n+\t}\n+\n+\tfunction formatWithOptionsInternal(inspectOptions, args) {\n+\t  const first = args[0];\n+\t  let a = 0;\n+\t  let str = '';\n+\t  let join = '';\n+\n+\t  if (typeof first === 'string') {\n+\t    if (args.length === 1) {\n+\t      return first;\n+\t    }\n+\t    let tempStr;\n+\t    let lastPos = 0;\n+\n+\t    for (let i = 0; i < first.length - 1; i++) {\n+\t      if (StringPrototypeCharCodeAt(first, i) === 37) { // '%'\n+\t        const nextChar = StringPrototypeCharCodeAt(first, ++i);\n+\t        if (a + 1 !== args.length) {\n+\t          switch (nextChar) {\n+\t            case 115: { // 's'\n+\t              const tempArg = args[++a];\n+\t              if (typeof tempArg === 'number') {\n+\t                tempStr = formatNumberNoColor(tempArg, inspectOptions);\n+\t              } else if (typeof tempArg === 'bigint') {\n+\t                tempStr = formatBigIntNoColor(tempArg, inspectOptions);\n+\t              } else if (typeof tempArg !== 'object' ||\n+\t                         tempArg === null ||\n+\t                         !hasBuiltInToString(tempArg)) {\n+\t                tempStr = String(tempArg);\n+\t              } else {\n+\t                tempStr = inspect(tempArg, {\n+\t                  ...inspectOptions,\n+\t                  compact: 3,\n+\t                  colors: false,\n+\t                  depth: 0,\n+\t                });\n+\t              }\n+\t              break;\n+\t            }\n+\t            case 106: // 'j'\n+\t              tempStr = tryStringify(args[++a]);\n+\t              break;\n+\t            case 100: { // 'd'\n+\t              const tempNum = args[++a];\n+\t              if (typeof tempNum === 'bigint') {\n+\t                tempStr = formatBigIntNoColor(tempNum, inspectOptions);\n+\t              } else if (typeof tempNum === 'symbol') {\n+\t                tempStr = 'NaN';\n+\t              } else {\n+\t                tempStr = formatNumberNoColor(Number(tempNum), inspectOptions);\n+\t              }\n+\t              break;\n+\t            }\n+\t            case 79: // 'O'\n+\t              tempStr = inspect(args[++a], inspectOptions);\n+\t              break;\n+\t            case 111: // 'o'\n+\t              tempStr = inspect(args[++a], {\n+\t                ...inspectOptions,\n+\t                showHidden: true,\n+\t                showProxy: true,\n+\t                depth: 4,\n+\t              });\n+\t              break;\n+\t            case 105: { // 'i'\n+\t              const tempInteger = args[++a];\n+\t              if (typeof tempInteger === 'bigint') {\n+\t                tempStr = formatBigIntNoColor(tempInteger, inspectOptions);\n+\t              } else if (typeof tempInteger === 'symbol') {\n+\t                tempStr = 'NaN';\n+\t              } else {\n+\t                tempStr = formatNumberNoColor(\n+\t                  NumberParseInt(tempInteger), inspectOptions);\n+\t              }\n+\t              break;\n+\t            }\n+\t            case 102: { // 'f'\n+\t              const tempFloat = args[++a];\n+\t              if (typeof tempFloat === 'symbol') {\n+\t                tempStr = 'NaN';\n+\t              } else {\n+\t                tempStr = formatNumberNoColor(\n+\t                  NumberParseFloat(tempFloat), inspectOptions);\n+\t              }\n+\t              break;\n+\t            }\n+\t            case 99: // 'c'\n+\t              a += 1;\n+\t              tempStr = '';\n+\t              break;\n+\t            case 37: // '%'\n+\t              str += StringPrototypeSlice(first, lastPos, i);\n+\t              lastPos = i + 1;\n+\t              continue;\n+\t            default: // Any other character is not a correct placeholder\n+\t              continue;\n+\t          }\n+\t          if (lastPos !== i - 1) {\n+\t            str += StringPrototypeSlice(first, lastPos, i - 1);\n+\t          }\n+\t          str += tempStr;\n+\t          lastPos = i + 1;\n+\t        } else if (nextChar === 37) {\n+\t          str += StringPrototypeSlice(first, lastPos, i);\n+\t          lastPos = i + 1;\n+\t        }\n+\t      }\n+\t    }\n+\t    if (lastPos !== 0) {\n+\t      a++;\n+\t      join = ' ';\n+\t      if (lastPos < first.length) {\n+\t        str += StringPrototypeSlice(first, lastPos);\n+\t      }\n+\t    }\n+\t  }\n+\n+\t  while (a < args.length) {\n+\t    const value = args[a];\n+\t    str += join;\n+\t    str += typeof value !== 'string' ? inspect(value, inspectOptions) : value;\n+\t    join = ' ';\n+\t    a++;\n+\t  }\n+\t  return str;\n+\t}\n+\n+\tfunction isZeroWidthCodePoint(code) {\n+\t  return code <= 0x1F || // C0 control codes\n+\t    (code >= 0x7F && code <= 0x9F) || // C1 control codes\n+\t    (code >= 0x300 && code <= 0x36F) || // Combining Diacritical Marks\n+\t    (code >= 0x200B && code <= 0x200F) || // Modifying Invisible Characters\n+\t    // Combining Diacritical Marks for Symbols\n+\t    (code >= 0x20D0 && code <= 0x20FF) ||\n+\t    (code >= 0xFE00 && code <= 0xFE0F) || // Variation Selectors\n+\t    (code >= 0xFE20 && code <= 0xFE2F) || // Combining Half Marks\n+\t    (code >= 0xE0100 && code <= 0xE01EF); // Variation Selectors\n+\t}\n+\n+\t/* c8 ignore start */\n+\tif (internalBinding('config').hasIntl) {\n+\t  assert(false);\n+\t  // Can't use node internals\n+\t  // const icu = internalBinding('icu');\n+\t  // // icu.getStringWidth(string, ambiguousAsFullWidth, expandEmojiSequence)\n+\t  // // Defaults: ambiguousAsFullWidth = false; expandEmojiSequence = true;\n+\t  // // TODO(BridgeAR): Expose the options to the user. That is probably the\n+\t  // // best thing possible at the moment, since it's difficult to know what\n+\t  // // the receiving end supports.\n+\t  // getStringWidth = function getStringWidth(str, removeControlChars = true) {\n+\t  //   let width = 0;\n+\n+\t  //   if (removeControlChars) {\n+\t  //     str = stripVTControlCharacters(str);\n+\t  //   }\n+\t  //   for (let i = 0; i < str.length; i++) {\n+\t  //     // Try to avoid calling into C++ by first handling the ASCII portion of\n+\t  //     // the string. If it is fully ASCII, we skip the C++ part.\n+\t  //     const code = str.charCodeAt(i);\n+\t  //     if (code >= 127) {\n+\t  //       width += icu.getStringWidth(StringPrototypeNormalize(StringPrototypeSlice(str, i), 'NFC'));\n+\t  //       break;\n+\t  //     }\n+\t  //     width += code >= 32 ? 1 : 0;\n+\t  //   }\n+\t  //   return width;\n+\t  // };\n+\t  /* c8 ignore stop */\n+\t} else {\n+\t  /**\n+\t   * Returns the number of columns required to display the given string.\n+\t   */\n+\t  getStringWidth = function getStringWidth(str, removeControlChars = true) {\n+\t    let width = 0;\n+\n+\t    if (removeControlChars)\n+\t      str = stripVTControlCharacters(str);\n+\t    str = StringPrototypeNormalize(str, 'NFC');\n+\t    for (const char of new SafeStringIterator(str)) {\n+\t      const code = StringPrototypeCodePointAt(char, 0);\n+\t      if (isFullWidthCodePoint(code)) {\n+\t        width += 2;\n+\t      } else if (!isZeroWidthCodePoint(code)) {\n+\t        width++;\n+\t      }\n+\t    }\n+\n+\t    return width;\n+\t  };\n+\n+\t  /**\n+\t   * Returns true if the character represented by a given\n+\t   * Unicode code point is full-width. Otherwise returns false.\n+\t   */\n+\t  const isFullWidthCodePoint = (code) => {\n+\t    // Code points are partially derived from:\n+\t    // https://www.unicode.org/Public/UNIDATA/EastAsianWidth.txt\n+\t    return code >= 0x1100 && (\n+\t      code <= 0x115f ||  // Hangul Jamo\n+\t      code === 0x2329 || // LEFT-POINTING ANGLE BRACKET\n+\t      code === 0x232a || // RIGHT-POINTING ANGLE BRACKET\n+\t      // CJK Radicals Supplement .. Enclosed CJK Letters and Months\n+\t      (code >= 0x2e80 && code <= 0x3247 && code !== 0x303f) ||\n+\t      // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A\n+\t      (code >= 0x3250 && code <= 0x4dbf) ||\n+\t      // CJK Unified Ideographs .. Yi Radicals\n+\t      (code >= 0x4e00 && code <= 0xa4c6) ||\n+\t      // Hangul Jamo Extended-A\n+\t      (code >= 0xa960 && code <= 0xa97c) ||\n+\t      // Hangul Syllables\n+\t      (code >= 0xac00 && code <= 0xd7a3) ||\n+\t      // CJK Compatibility Ideographs\n+\t      (code >= 0xf900 && code <= 0xfaff) ||\n+\t      // Vertical Forms\n+\t      (code >= 0xfe10 && code <= 0xfe19) ||\n+\t      // CJK Compatibility Forms .. Small Form Variants\n+\t      (code >= 0xfe30 && code <= 0xfe6b) ||\n+\t      // Halfwidth and Fullwidth Forms\n+\t      (code >= 0xff01 && code <= 0xff60) ||\n+\t      (code >= 0xffe0 && code <= 0xffe6) ||\n+\t      // Kana Supplement\n+\t      (code >= 0x1b000 && code <= 0x1b001) ||\n+\t      // Enclosed Ideographic Supplement\n+\t      (code >= 0x1f200 && code <= 0x1f251) ||\n+\t      // Miscellaneous Symbols and Pictographs 0x1f300 - 0x1f5ff\n+\t      // Emoticons 0x1f600 - 0x1f64f\n+\t      (code >= 0x1f300 && code <= 0x1f64f) ||\n+\t      // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane\n+\t      (code >= 0x20000 && code <= 0x3fffd)\n+\t    );\n+\t  };\n+\n+\t}\n+\n+\t/**\n+\t * Remove all VT control characters. Use to estimate displayed string width.\n+\t */\n+\tfunction stripVTControlCharacters(str) {\n+\t  validateString(str, 'str');\n+\t  return RegExpPrototypeSymbolReplace(ansi, str, '');\n+\t}\n+\n+\tconst entities = {\n+\t  34: '&quot;',\n+\t  38: '&amp;',\n+\t  39: '&apos;',\n+\t  60: '&lt;',\n+\t  62: '&gt;',\n+\t  160: '&nbsp;',\n+\t};\n+\n+\tfunction escapeHTML(str) {\n+\t  return str.replace(\n+\t    // eslint-disable-next-line no-control-regex\n+\t    /[\\u0000-\\u002F\\u003A-\\u0040\\u005B-\\u0060\\u007B-\\u00FF]/g,\n+\t    (c) => {\n+\t      const code = String(c.charCodeAt(0));\n+\t      const ent = entities[code];\n+\t      return ent || ('&#' + code + ';');\n+\t    },\n+\t  );\n+\t}\n+\n+\tinspect_1 = {\n+\t  identicalSequenceRange,\n+\t  inspect,\n+\t  inspectDefaultOptions,\n+\t  format,\n+\t  formatWithOptions,\n+\t  getStringWidth,\n+\t  stripVTControlCharacters,\n+\t  isZeroWidthCodePoint,\n+\t  stylizeWithColor,\n+\t  stylizeWithHTML(str, styleType) {\n+\t    const style = inspect.styles[styleType];\n+\t    if (style !== undefined) {\n+\t      return `<span style=\"color:${style};\">${escapeHTML(str)}</span>`;\n+\t    }\n+\t    return escapeHTML(str);\n+\t  },\n+\t  Proxy,\n+\t};\n+\treturn inspect_1;\n+}\n+\n+var inspectExports = requireInspect();\n+var inspect = /*@__PURE__*/getDefaultExportFromCjs(inspectExports);\n+\n+export { inspect as default };\n"
  },
  {
    "path": ".yarn/releases/yarn-4.13.0.cjs",
    "content": "#!/usr/bin/env node\n/* eslint-disable */\n//prettier-ignore\n(()=>{var gje=Object.create;var tU=Object.defineProperty;var dje=Object.getOwnPropertyDescriptor;var mje=Object.getOwnPropertyNames;var yje=Object.getPrototypeOf,Eje=Object.prototype.hasOwnProperty;var Ie=(e=>typeof require<\"u\"?require:typeof Proxy<\"u\"?new Proxy(e,{get:(t,r)=>(typeof require<\"u\"?require:t)[r]}):e)(function(e){if(typeof require<\"u\")return require.apply(this,arguments);throw Error('Dynamic require of \"'+e+'\" is not supported')});var Ze=(e,t)=>()=>(e&&(t=e(e=0)),t);var G=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Yt=(e,t)=>{for(var r in t)tU(e,r,{get:t[r],enumerable:!0})},Ije=(e,t,r,s)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let a of mje(t))!Eje.call(e,a)&&a!==r&&tU(e,a,{get:()=>t[a],enumerable:!(s=dje(t,a))||s.enumerable});return e};var et=(e,t,r)=>(r=e!=null?gje(yje(e)):{},Ije(t||!e||!e.__esModule?tU(r,\"default\",{value:e,enumerable:!0}):r,e));var Ai={};Yt(Ai,{SAFE_TIME:()=>lX,S_IFDIR:()=>KP,S_IFLNK:()=>JP,S_IFMT:()=>_f,S_IFREG:()=>bB});var _f,KP,bB,JP,lX,cX=Ze(()=>{_f=61440,KP=16384,bB=32768,JP=40960,lX=456789e3});var or={};Yt(or,{EBADF:()=>Go,EBUSY:()=>Cje,EEXIST:()=>bje,EINVAL:()=>Bje,EISDIR:()=>Dje,ENOENT:()=>vje,ENOSYS:()=>wje,ENOTDIR:()=>Sje,ENOTEMPTY:()=>xje,EOPNOTSUPP:()=>kje,EROFS:()=>Pje,ERR_DIR_CLOSED:()=>rU});function wc(e,t){return Object.assign(new Error(`${e}: ${t}`),{code:e})}function Cje(e){return wc(\"EBUSY\",e)}function wje(e,t){return wc(\"ENOSYS\",`${e}, ${t}`)}function Bje(e){return wc(\"EINVAL\",`invalid argument, ${e}`)}function Go(e){return wc(\"EBADF\",`bad file descriptor, ${e}`)}function vje(e){return wc(\"ENOENT\",`no such file or directory, ${e}`)}function Sje(e){return wc(\"ENOTDIR\",`not a directory, ${e}`)}function Dje(e){return wc(\"EISDIR\",`illegal operation on a directory, ${e}`)}function bje(e){return wc(\"EEXIST\",`file already exists, ${e}`)}function Pje(e){return wc(\"EROFS\",`read-only filesystem, ${e}`)}function xje(e){return wc(\"ENOTEMPTY\",`directory not empty, ${e}`)}function kje(e){return wc(\"EOPNOTSUPP\",`operation not supported, ${e}`)}function rU(){return wc(\"ERR_DIR_CLOSED\",\"Directory handle was closed\")}var zP=Ze(()=>{});var sl={};Yt(sl,{BigIntStatsEntry:()=>aE,DEFAULT_MODE:()=>sU,DirEntry:()=>nU,StatEntry:()=>oE,areStatsEqual:()=>oU,clearStats:()=>ZP,convertToBigIntStats:()=>Rje,makeDefaultStats:()=>uX,makeEmptyStats:()=>Qje});function uX(){return new oE}function Qje(){return ZP(uX())}function ZP(e){for(let t in e)if(Object.hasOwn(e,t)){let r=e[t];typeof r==\"number\"?e[t]=0:typeof r==\"bigint\"?e[t]=BigInt(0):iU.types.isDate(r)&&(e[t]=new Date(0))}return e}function Rje(e){let t=new aE;for(let r in e)if(Object.hasOwn(e,r)){let s=e[r];typeof s==\"number\"?t[r]=BigInt(Math.floor(s)):iU.types.isDate(s)&&(t[r]=new Date(s))}return t.atimeNs=t.atimeMs*BigInt(1e6)+BigInt(Math.floor(e.atimeMs%1*1e3))*BigInt(1e3),t.mtimeNs=t.mtimeMs*BigInt(1e6)+BigInt(Math.floor(e.mtimeMs%1*1e3))*BigInt(1e3),t.ctimeNs=t.ctimeMs*BigInt(1e6)+BigInt(Math.floor(e.ctimeMs%1*1e3))*BigInt(1e3),t.birthtimeNs=t.birthtimeMs*BigInt(1e6)+BigInt(Math.floor(e.birthtimeMs%1*1e3))*BigInt(1e3),t}function oU(e,t){if(e.atimeMs!==t.atimeMs||e.birthtimeMs!==t.birthtimeMs||e.blksize!==t.blksize||e.blocks!==t.blocks||e.ctimeMs!==t.ctimeMs||e.dev!==t.dev||e.gid!==t.gid||e.ino!==t.ino||e.isBlockDevice()!==t.isBlockDevice()||e.isCharacterDevice()!==t.isCharacterDevice()||e.isDirectory()!==t.isDirectory()||e.isFIFO()!==t.isFIFO()||e.isFile()!==t.isFile()||e.isSocket()!==t.isSocket()||e.isSymbolicLink()!==t.isSymbolicLink()||e.mode!==t.mode||e.mtimeMs!==t.mtimeMs||e.nlink!==t.nlink||e.rdev!==t.rdev||e.size!==t.size||e.uid!==t.uid)return!1;let r=e,s=t;return!(r.atimeNs!==s.atimeNs||r.mtimeNs!==s.mtimeNs||r.ctimeNs!==s.ctimeNs||r.birthtimeNs!==s.birthtimeNs)}var iU,sU,nU,oE,aE,aU=Ze(()=>{iU=et(Ie(\"util\")),sU=33188,nU=class{constructor(){this.name=\"\";this.path=\"\";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},oE=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=sU;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},aE=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(sU);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}}});function Lje(e){let t,r;if(t=e.match(Nje))e=t[1];else if(r=e.match(Oje))e=`\\\\\\\\${r[1]?\".\\\\\":\"\"}${r[2]}`;else return e;return e.replace(/\\//g,\"\\\\\")}function Mje(e){e=e.replace(/\\\\/g,\"/\");let t,r;return(t=e.match(Tje))?e=`/${t[1]}`:(r=e.match(Fje))&&(e=`/unc/${r[1]?\".dot/\":\"\"}${r[2]}`),e}function XP(e,t){return e===fe?AX(t):lU(t)}var PB,vt,Er,fe,K,fX,Tje,Fje,Nje,Oje,lU,AX,ol=Ze(()=>{PB=et(Ie(\"path\")),vt={root:\"/\",dot:\".\",parent:\"..\"},Er={home:\"~\",nodeModules:\"node_modules\",manifest:\"package.json\",lockfile:\"yarn.lock\",virtual:\"__virtual__\",pnpJs:\".pnp.js\",pnpCjs:\".pnp.cjs\",pnpData:\".pnp.data.json\",pnpEsmLoader:\".pnp.loader.mjs\",rc:\".yarnrc.yml\",env:\".env\"},fe=Object.create(PB.default),K=Object.create(PB.default.posix);fe.cwd=()=>process.cwd();K.cwd=process.platform===\"win32\"?()=>lU(process.cwd()):process.cwd;process.platform===\"win32\"&&(K.resolve=(...e)=>e.length>0&&K.isAbsolute(e[0])?PB.default.posix.resolve(...e):PB.default.posix.resolve(K.cwd(),...e));fX=function(e,t,r){return t=e.normalize(t),r=e.normalize(r),t===r?\".\":(t.endsWith(e.sep)||(t=t+e.sep),r.startsWith(t)?r.slice(t.length):null)};fe.contains=(e,t)=>fX(fe,e,t);K.contains=(e,t)=>fX(K,e,t);Tje=/^([a-zA-Z]:.*)$/,Fje=/^\\/\\/(\\.\\/)?(.*)$/,Nje=/^\\/([a-zA-Z]:.*)$/,Oje=/^\\/unc\\/(\\.dot\\/)?(.*)$/;lU=process.platform===\"win32\"?Mje:e=>e,AX=process.platform===\"win32\"?Lje:e=>e;fe.fromPortablePath=AX;fe.toPortablePath=lU});async function $P(e,t){let r=\"0123456789abcdef\";await e.mkdirPromise(t.indexPath,{recursive:!0});let s=[];for(let a of r)for(let n of r)s.push(e.mkdirPromise(e.pathUtils.join(t.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(s),t.indexPath}async function pX(e,t,r,s,a){let n=e.pathUtils.normalize(t),c=r.pathUtils.normalize(s),f=[],p=[],{atime:h,mtime:E}=a.stableTime?{atime:hd,mtime:hd}:await r.lstatPromise(c);await e.mkdirpPromise(e.pathUtils.dirname(t),{utimes:[h,E]}),await cU(f,p,e,n,r,c,{...a,didParentExist:!0});for(let C of f)await C();await Promise.all(p.map(C=>C()))}async function cU(e,t,r,s,a,n,c){let f=c.didParentExist?await hX(r,s):null,p=await a.lstatPromise(n),{atime:h,mtime:E}=c.stableTime?{atime:hd,mtime:hd}:p,C;switch(!0){case p.isDirectory():C=await _je(e,t,r,s,f,a,n,p,c);break;case p.isFile():C=await Gje(e,t,r,s,f,a,n,p,c);break;case p.isSymbolicLink():C=await qje(e,t,r,s,f,a,n,p,c);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(c.linkStrategy?.type!==\"HardlinkFromIndex\"||!p.isFile())&&((C||f?.mtime?.getTime()!==E.getTime()||f?.atime?.getTime()!==h.getTime())&&(t.push(()=>r.lutimesPromise(s,h,E)),C=!0),(f===null||(f.mode&511)!==(p.mode&511))&&(t.push(()=>r.chmodPromise(s,p.mode&511)),C=!0)),C}async function hX(e,t){try{return await e.lstatPromise(t)}catch{return null}}async function _je(e,t,r,s,a,n,c,f,p){if(a!==null&&!a.isDirectory())if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1;let h=!1;a===null&&(e.push(async()=>{try{await r.mkdirPromise(s,{mode:f.mode})}catch(S){if(S.code!==\"EEXIST\")throw S}}),h=!0);let E=await n.readdirPromise(c),C=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let S of E.sort())await cU(e,t,r,r.pathUtils.join(s,S),n,n.pathUtils.join(c,S),C)&&(h=!0);else(await Promise.all(E.map(async x=>{await cU(e,t,r,r.pathUtils.join(s,x),n,n.pathUtils.join(c,x),C)}))).some(x=>x)&&(h=!0);return h}async function Hje(e,t,r,s,a,n,c,f,p,h){let E=await n.checksumFilePromise(c,{algorithm:\"sha1\"}),C=420,S=f.mode&511,x=`${E}${S!==C?S.toString(8):\"\"}`,I=r.pathUtils.join(h.indexPath,E.slice(0,2),`${x}.dat`),T;(ae=>(ae[ae.Lock=0]=\"Lock\",ae[ae.Rename=1]=\"Rename\"))(T||={});let O=1,U=await hX(r,I);if(a){let ie=U&&a.dev===U.dev&&a.ino===U.ino,ue=U?.mtimeMs!==Uje;if(ie&&ue&&h.autoRepair&&(O=0,U=null),!ie)if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1}let Y=!U&&O===1?`${I}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,\"0\")}`:null,te=!1;return e.push(async()=>{if(!U&&(O===0&&await r.lockPromise(I,async()=>{let ie=await n.readFilePromise(c);await r.writeFilePromise(I,ie)}),O===1&&Y)){let ie=await n.readFilePromise(c);await r.writeFilePromise(Y,ie);try{await r.linkPromise(Y,I)}catch(ue){if(ue.code===\"EEXIST\")te=!0,await r.unlinkPromise(Y);else throw ue}}a||await r.linkPromise(I,s)}),t.push(async()=>{U||(await r.lutimesPromise(I,hd,hd),S!==C&&await r.chmodPromise(I,S)),Y&&!te&&await r.unlinkPromise(Y)}),!1}async function jje(e,t,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1;return e.push(async()=>{let h=await n.readFilePromise(c);await r.writeFilePromise(s,h)}),!0}async function Gje(e,t,r,s,a,n,c,f,p){return p.linkStrategy?.type===\"HardlinkFromIndex\"?Hje(e,t,r,s,a,n,c,f,p,p.linkStrategy):jje(e,t,r,s,a,n,c,f,p)}async function qje(e,t,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1;return e.push(async()=>{await r.symlinkPromise(XP(r.pathUtils,await n.readlinkPromise(c)),s)}),!0}var hd,Uje,uU=Ze(()=>{ol();hd=new Date(456789e3*1e3),Uje=hd.getTime()});function ex(e,t,r,s){let a=()=>{let n=r.shift();if(typeof n>\"u\")return null;let c=e.pathUtils.join(t,n);return Object.assign(e.statSync(c),{name:n,path:void 0})};return new xB(t,a,s)}var xB,gX=Ze(()=>{zP();xB=class{constructor(t,r,s={}){this.path=t;this.nextDirent=r;this.opts=s;this.closed=!1}throwIfClosed(){if(this.closed)throw rU()}async*[Symbol.asyncIterator](){try{let t;for(;(t=await this.read())!==null;)yield t}finally{await this.close()}}read(t){let r=this.readSync();return typeof t<\"u\"?t(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(t){return this.closeSync(),typeof t<\"u\"?t(null):Promise.resolve()}closeSync(){this.throwIfClosed(),this.opts.onClose?.(),this.closed=!0}}});function dX(e,t){if(e!==t)throw new Error(`Invalid StatWatcher status: expected '${t}', got '${e}'`)}var mX,tx,yX=Ze(()=>{mX=Ie(\"events\");aU();tx=class e extends mX.EventEmitter{constructor(r,s,{bigint:a=!1}={}){super();this.status=\"ready\";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=s,this.bigint=a,this.lastStats=this.stat()}static create(r,s,a){let n=new e(r,s,a);return n.start(),n}start(){dX(this.status,\"ready\"),this.status=\"running\",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit(\"change\",this.lastStats,this.lastStats)},3)}stop(){dX(this.status,\"running\"),this.status=\"stopped\",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit(\"stop\")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let r=this.bigint?new aE:new oE;return ZP(r)}}makeInterval(r){let s=setInterval(()=>{let a=this.stat(),n=this.lastStats;oU(a,n)||(this.lastStats=a,this.emit(\"change\",a,n))},r.interval);return r.persistent?s:s.unref()}registerChangeListener(r,s){this.addListener(\"change\",r),this.changeListeners.set(r,this.makeInterval(s))}unregisterChangeListener(r){this.removeListener(\"change\",r);let s=this.changeListeners.get(r);typeof s<\"u\"&&clearInterval(s),this.changeListeners.delete(r)}unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())this.unregisterChangeListener(r)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let r of this.changeListeners.values())r.ref();return this}unref(){for(let r of this.changeListeners.values())r.unref();return this}}});function lE(e,t,r,s){let a,n,c,f;switch(typeof r){case\"function\":a=!1,n=!0,c=5007,f=r;break;default:({bigint:a=!1,persistent:n=!0,interval:c=5007}=r),f=s;break}let p=rx.get(e);typeof p>\"u\"&&rx.set(e,p=new Map);let h=p.get(t);return typeof h>\"u\"&&(h=tx.create(e,t,{bigint:a}),p.set(t,h)),h.registerChangeListener(f,{persistent:n,interval:c}),h}function gd(e,t,r){let s=rx.get(e);if(typeof s>\"u\")return;let a=s.get(t);typeof a>\"u\"||(typeof r>\"u\"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),s.delete(t)))}function dd(e){let t=rx.get(e);if(!(typeof t>\"u\"))for(let r of t.keys())gd(e,r)}var rx,fU=Ze(()=>{yX();rx=new WeakMap});function Wje(e){let t=e.match(/\\r?\\n/g);if(t===null)return IX.EOL;let r=t.filter(a=>a===`\\r\n`).length,s=t.length-r;return r>s?`\\r\n`:`\n`}function md(e,t){return t.replace(/\\r?\\n/g,Wje(e))}var EX,IX,yp,Hf,yd=Ze(()=>{EX=Ie(\"crypto\"),IX=Ie(\"os\");uU();ol();yp=class{constructor(t){this.pathUtils=t}async*genTraversePromise(t,{stableSort:r=!1}={}){let s=[t];for(;s.length>0;){let a=s.shift();if((await this.lstatPromise(a)).isDirectory()){let c=await this.readdirPromise(a);if(r)for(let f of c.sort())s.push(this.pathUtils.join(a,f));else throw new Error(\"Not supported\")}else yield a}}async checksumFilePromise(t,{algorithm:r=\"sha512\"}={}){let s=await this.openPromise(t,\"r\");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,EX.createHash)(r),f=0;for(;(f=await this.readPromise(s,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest(\"hex\")}finally{await this.closePromise(s)}}async removePromise(t,{recursive:r=!0,maxRetries:s=5}={}){let a;try{a=await this.lstatPromise(t)}catch(n){if(n.code===\"ENOENT\")return;throw n}if(a.isDirectory()){if(r){let n=await this.readdirPromise(t);await Promise.all(n.map(c=>this.removePromise(this.pathUtils.resolve(t,c))))}for(let n=0;n<=s;n++)try{await this.rmdirPromise(t);break}catch(c){if(c.code!==\"EBUSY\"&&c.code!==\"ENOTEMPTY\")throw c;n<s&&await new Promise(f=>setTimeout(f,n*100))}}else await this.unlinkPromise(t)}removeSync(t,{recursive:r=!0}={}){let s;try{s=this.lstatSync(t)}catch(a){if(a.code===\"ENOENT\")return;throw a}if(s.isDirectory()){if(r)for(let a of this.readdirSync(t))this.removeSync(this.pathUtils.resolve(t,a));this.rmdirSync(t)}else this.unlinkSync(t)}async mkdirpPromise(t,{chmod:r,utimes:s}={}){if(t=this.resolve(t),t===this.pathUtils.dirname(t))return;let a=t.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{await this.mkdirPromise(f)}catch(p){if(p.code===\"EEXIST\")continue;throw p}if(n??=f,r!=null&&await this.chmodPromise(f,r),s!=null)await this.utimesPromise(f,s[0],s[1]);else{let p=await this.statPromise(this.pathUtils.dirname(f));await this.utimesPromise(f,p.atime,p.mtime)}}}return n}mkdirpSync(t,{chmod:r,utimes:s}={}){if(t=this.resolve(t),t===this.pathUtils.dirname(t))return;let a=t.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{this.mkdirSync(f)}catch(p){if(p.code===\"EEXIST\")continue;throw p}if(n??=f,r!=null&&this.chmodSync(f,r),s!=null)this.utimesSync(f,s[0],s[1]);else{let p=this.statSync(this.pathUtils.dirname(f));this.utimesSync(f,p.atime,p.mtime)}}}return n}async copyPromise(t,r,{baseFs:s=this,overwrite:a=!0,stableSort:n=!1,stableTime:c=!1,linkStrategy:f=null}={}){return await pX(this,t,s,r,{overwrite:a,stableSort:n,stableTime:c,linkStrategy:f})}copySync(t,r,{baseFs:s=this,overwrite:a=!0}={}){let n=s.lstatSync(r),c=this.existsSync(t);if(n.isDirectory()){this.mkdirpSync(t);let p=s.readdirSync(r);for(let h of p)this.copySync(this.pathUtils.join(t,h),s.pathUtils.join(r,h),{baseFs:s,overwrite:a})}else if(n.isFile()){if(!c||a){c&&this.removeSync(t);let p=s.readFileSync(r);this.writeFileSync(t,p)}}else if(n.isSymbolicLink()){if(!c||a){c&&this.removeSync(t);let p=s.readlinkSync(r);this.symlinkSync(XP(this.pathUtils,p),t)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,\"0\")})`);let f=n.mode&511;this.chmodSync(t,f)}async changeFilePromise(t,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(t,r,s):this.changeFileTextPromise(t,r,s)}async changeFileBufferPromise(t,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(t)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(t,r,{mode:s})}async changeFileTextPromise(t,r,{automaticNewlines:s,mode:a}={}){let n=\"\";try{n=await this.readFilePromise(t,\"utf8\")}catch{}let c=s?md(n,r):r;n!==c&&await this.writeFilePromise(t,c,{mode:a})}changeFileSync(t,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(t,r,s):this.changeFileTextSync(t,r,s)}changeFileBufferSync(t,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(t)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(t,r,{mode:s})}changeFileTextSync(t,r,{automaticNewlines:s=!1,mode:a}={}){let n=\"\";try{n=this.readFileSync(t,\"utf8\")}catch{}let c=s?md(n,r):r;n!==c&&this.writeFileSync(t,c,{mode:a})}async movePromise(t,r){try{await this.renamePromise(t,r)}catch(s){if(s.code===\"EXDEV\")await this.copyPromise(r,t),await this.removePromise(t);else throw s}}moveSync(t,r){try{this.renameSync(t,r)}catch(s){if(s.code===\"EXDEV\")this.copySync(r,t),this.removeSync(t);else throw s}}async lockPromise(t,r){let s=`${t}.flock`,a=1e3/60,n=Date.now(),c=null,f=async()=>{let p;try{[p]=await this.readJsonPromise(s)}catch{return Date.now()-n<500}try{return process.kill(p,0),!0}catch{return!1}};for(;c===null;)try{c=await this.openPromise(s,\"wx\")}catch(p){if(p.code===\"EEXIST\"){if(!await f())try{await this.unlinkPromise(s);continue}catch{}if(Date.now()-n<60*1e3)await new Promise(h=>setTimeout(h,a));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${s})`)}else throw p}await this.writePromise(c,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(c),await this.unlinkPromise(s)}catch{}}}async readJsonPromise(t){let r=await this.readFilePromise(t,\"utf8\");try{return JSON.parse(r)}catch(s){throw s.message+=` (in ${t})`,s}}readJsonSync(t){let r=this.readFileSync(t,\"utf8\");try{return JSON.parse(r)}catch(s){throw s.message+=` (in ${t})`,s}}async writeJsonPromise(t,r,{compact:s=!1}={}){let a=s?0:2;return await this.writeFilePromise(t,`${JSON.stringify(r,null,a)}\n`)}writeJsonSync(t,r,{compact:s=!1}={}){let a=s?0:2;return this.writeFileSync(t,`${JSON.stringify(r,null,a)}\n`)}async preserveTimePromise(t,r){let s=await this.lstatPromise(t),a=await r();typeof a<\"u\"&&(t=a),await this.lutimesPromise(t,s.atime,s.mtime)}async preserveTimeSync(t,r){let s=this.lstatSync(t),a=r();typeof a<\"u\"&&(t=a),this.lutimesSync(t,s.atime,s.mtime)}},Hf=class extends yp{constructor(){super(K)}}});var Gs,Ep=Ze(()=>{yd();Gs=class extends yp{getExtractHint(t){return this.baseFs.getExtractHint(t)}resolve(t){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(t)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(t,r,s){return this.baseFs.openPromise(this.mapToBase(t),r,s)}openSync(t,r,s){return this.baseFs.openSync(this.mapToBase(t),r,s)}async opendirPromise(t,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(t),r),{path:t})}opendirSync(t,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(t),r),{path:t})}async readPromise(t,r,s,a,n){return await this.baseFs.readPromise(t,r,s,a,n)}readSync(t,r,s,a,n){return this.baseFs.readSync(t,r,s,a,n)}async writePromise(t,r,s,a,n){return typeof r==\"string\"?await this.baseFs.writePromise(t,r,s):await this.baseFs.writePromise(t,r,s,a,n)}writeSync(t,r,s,a,n){return typeof r==\"string\"?this.baseFs.writeSync(t,r,s):this.baseFs.writeSync(t,r,s,a,n)}async closePromise(t){return this.baseFs.closePromise(t)}closeSync(t){this.baseFs.closeSync(t)}createReadStream(t,r){return this.baseFs.createReadStream(t!==null?this.mapToBase(t):t,r)}createWriteStream(t,r){return this.baseFs.createWriteStream(t!==null?this.mapToBase(t):t,r)}async realpathPromise(t){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(t)))}realpathSync(t){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(t)))}async existsPromise(t){return this.baseFs.existsPromise(this.mapToBase(t))}existsSync(t){return this.baseFs.existsSync(this.mapToBase(t))}accessSync(t,r){return this.baseFs.accessSync(this.mapToBase(t),r)}async accessPromise(t,r){return this.baseFs.accessPromise(this.mapToBase(t),r)}async statPromise(t,r){return this.baseFs.statPromise(this.mapToBase(t),r)}statSync(t,r){return this.baseFs.statSync(this.mapToBase(t),r)}async fstatPromise(t,r){return this.baseFs.fstatPromise(t,r)}fstatSync(t,r){return this.baseFs.fstatSync(t,r)}lstatPromise(t,r){return this.baseFs.lstatPromise(this.mapToBase(t),r)}lstatSync(t,r){return this.baseFs.lstatSync(this.mapToBase(t),r)}async fchmodPromise(t,r){return this.baseFs.fchmodPromise(t,r)}fchmodSync(t,r){return this.baseFs.fchmodSync(t,r)}async chmodPromise(t,r){return this.baseFs.chmodPromise(this.mapToBase(t),r)}chmodSync(t,r){return this.baseFs.chmodSync(this.mapToBase(t),r)}async fchownPromise(t,r,s){return this.baseFs.fchownPromise(t,r,s)}fchownSync(t,r,s){return this.baseFs.fchownSync(t,r,s)}async chownPromise(t,r,s){return this.baseFs.chownPromise(this.mapToBase(t),r,s)}chownSync(t,r,s){return this.baseFs.chownSync(this.mapToBase(t),r,s)}async renamePromise(t,r){return this.baseFs.renamePromise(this.mapToBase(t),this.mapToBase(r))}renameSync(t,r){return this.baseFs.renameSync(this.mapToBase(t),this.mapToBase(r))}async copyFilePromise(t,r,s=0){return this.baseFs.copyFilePromise(this.mapToBase(t),this.mapToBase(r),s)}copyFileSync(t,r,s=0){return this.baseFs.copyFileSync(this.mapToBase(t),this.mapToBase(r),s)}async appendFilePromise(t,r,s){return this.baseFs.appendFilePromise(this.fsMapToBase(t),r,s)}appendFileSync(t,r,s){return this.baseFs.appendFileSync(this.fsMapToBase(t),r,s)}async writeFilePromise(t,r,s){return this.baseFs.writeFilePromise(this.fsMapToBase(t),r,s)}writeFileSync(t,r,s){return this.baseFs.writeFileSync(this.fsMapToBase(t),r,s)}async unlinkPromise(t){return this.baseFs.unlinkPromise(this.mapToBase(t))}unlinkSync(t){return this.baseFs.unlinkSync(this.mapToBase(t))}async utimesPromise(t,r,s){return this.baseFs.utimesPromise(this.mapToBase(t),r,s)}utimesSync(t,r,s){return this.baseFs.utimesSync(this.mapToBase(t),r,s)}async lutimesPromise(t,r,s){return this.baseFs.lutimesPromise(this.mapToBase(t),r,s)}lutimesSync(t,r,s){return this.baseFs.lutimesSync(this.mapToBase(t),r,s)}async mkdirPromise(t,r){return this.baseFs.mkdirPromise(this.mapToBase(t),r)}mkdirSync(t,r){return this.baseFs.mkdirSync(this.mapToBase(t),r)}async rmdirPromise(t,r){return this.baseFs.rmdirPromise(this.mapToBase(t),r)}rmdirSync(t,r){return this.baseFs.rmdirSync(this.mapToBase(t),r)}async rmPromise(t,r){return this.baseFs.rmPromise(this.mapToBase(t),r)}rmSync(t,r){return this.baseFs.rmSync(this.mapToBase(t),r)}async linkPromise(t,r){return this.baseFs.linkPromise(this.mapToBase(t),this.mapToBase(r))}linkSync(t,r){return this.baseFs.linkSync(this.mapToBase(t),this.mapToBase(r))}async symlinkPromise(t,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(t))return this.baseFs.symlinkPromise(this.mapToBase(t),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),t)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkPromise(c,a,s)}symlinkSync(t,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(t))return this.baseFs.symlinkSync(this.mapToBase(t),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),t)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkSync(c,a,s)}async readFilePromise(t,r){return this.baseFs.readFilePromise(this.fsMapToBase(t),r)}readFileSync(t,r){return this.baseFs.readFileSync(this.fsMapToBase(t),r)}readdirPromise(t,r){return this.baseFs.readdirPromise(this.mapToBase(t),r)}readdirSync(t,r){return this.baseFs.readdirSync(this.mapToBase(t),r)}async readlinkPromise(t){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(t)))}readlinkSync(t){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(t)))}async truncatePromise(t,r){return this.baseFs.truncatePromise(this.mapToBase(t),r)}truncateSync(t,r){return this.baseFs.truncateSync(this.mapToBase(t),r)}async ftruncatePromise(t,r){return this.baseFs.ftruncatePromise(t,r)}ftruncateSync(t,r){return this.baseFs.ftruncateSync(t,r)}watch(t,r,s){return this.baseFs.watch(this.mapToBase(t),r,s)}watchFile(t,r,s){return this.baseFs.watchFile(this.mapToBase(t),r,s)}unwatchFile(t,r){return this.baseFs.unwatchFile(this.mapToBase(t),r)}fsMapToBase(t){return typeof t==\"number\"?t:this.mapToBase(t)}}});var jf,CX=Ze(()=>{Ep();jf=class extends Gs{constructor(t,{baseFs:r,pathUtils:s}){super(s),this.target=t,this.baseFs=r}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(t){return t}mapToBase(t){return t}}});function wX(e){let t=e;return typeof e.path==\"string\"&&(t.path=fe.toPortablePath(e.path)),t}var BX,Yn,Ed=Ze(()=>{BX=et(Ie(\"fs\"));yd();ol();Yn=class extends Hf{constructor(t=BX.default){super(),this.realFs=t}getExtractHint(){return!1}getRealPath(){return vt.root}resolve(t){return K.resolve(t)}async openPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.open(fe.fromPortablePath(t),r,s,this.makeCallback(a,n))})}openSync(t,r,s){return this.realFs.openSync(fe.fromPortablePath(t),r,s)}async opendirPromise(t,r){return await new Promise((s,a)=>{typeof r<\"u\"?this.realFs.opendir(fe.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.opendir(fe.fromPortablePath(t),this.makeCallback(s,a))}).then(s=>{let a=s;return Object.defineProperty(a,\"path\",{value:t,configurable:!0,writable:!0}),a})}opendirSync(t,r){let a=typeof r<\"u\"?this.realFs.opendirSync(fe.fromPortablePath(t),r):this.realFs.opendirSync(fe.fromPortablePath(t));return Object.defineProperty(a,\"path\",{value:t,configurable:!0,writable:!0}),a}async readPromise(t,r,s=0,a=0,n=-1){return await new Promise((c,f)=>{this.realFs.read(t,r,s,a,n,(p,h)=>{p?f(p):c(h)})})}readSync(t,r,s,a,n){return this.realFs.readSync(t,r,s,a,n)}async writePromise(t,r,s,a,n){return await new Promise((c,f)=>typeof r==\"string\"?this.realFs.write(t,r,s,this.makeCallback(c,f)):this.realFs.write(t,r,s,a,n,this.makeCallback(c,f)))}writeSync(t,r,s,a,n){return typeof r==\"string\"?this.realFs.writeSync(t,r,s):this.realFs.writeSync(t,r,s,a,n)}async closePromise(t){await new Promise((r,s)=>{this.realFs.close(t,this.makeCallback(r,s))})}closeSync(t){this.realFs.closeSync(t)}createReadStream(t,r){let s=t!==null?fe.fromPortablePath(t):t;return this.realFs.createReadStream(s,r)}createWriteStream(t,r){let s=t!==null?fe.fromPortablePath(t):t;return this.realFs.createWriteStream(s,r)}async realpathPromise(t){return await new Promise((r,s)=>{this.realFs.realpath(fe.fromPortablePath(t),{},this.makeCallback(r,s))}).then(r=>fe.toPortablePath(r))}realpathSync(t){return fe.toPortablePath(this.realFs.realpathSync(fe.fromPortablePath(t),{}))}async existsPromise(t){return await new Promise(r=>{this.realFs.exists(fe.fromPortablePath(t),r)})}accessSync(t,r){return this.realFs.accessSync(fe.fromPortablePath(t),r)}async accessPromise(t,r){return await new Promise((s,a)=>{this.realFs.access(fe.fromPortablePath(t),r,this.makeCallback(s,a))})}existsSync(t){return this.realFs.existsSync(fe.fromPortablePath(t))}async statPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.stat(fe.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.stat(fe.fromPortablePath(t),this.makeCallback(s,a))})}statSync(t,r){return r?this.realFs.statSync(fe.fromPortablePath(t),r):this.realFs.statSync(fe.fromPortablePath(t))}async fstatPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.fstat(t,r,this.makeCallback(s,a)):this.realFs.fstat(t,this.makeCallback(s,a))})}fstatSync(t,r){return r?this.realFs.fstatSync(t,r):this.realFs.fstatSync(t)}async lstatPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.lstat(fe.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.lstat(fe.fromPortablePath(t),this.makeCallback(s,a))})}lstatSync(t,r){return r?this.realFs.lstatSync(fe.fromPortablePath(t),r):this.realFs.lstatSync(fe.fromPortablePath(t))}async fchmodPromise(t,r){return await new Promise((s,a)=>{this.realFs.fchmod(t,r,this.makeCallback(s,a))})}fchmodSync(t,r){return this.realFs.fchmodSync(t,r)}async chmodPromise(t,r){return await new Promise((s,a)=>{this.realFs.chmod(fe.fromPortablePath(t),r,this.makeCallback(s,a))})}chmodSync(t,r){return this.realFs.chmodSync(fe.fromPortablePath(t),r)}async fchownPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.fchown(t,r,s,this.makeCallback(a,n))})}fchownSync(t,r,s){return this.realFs.fchownSync(t,r,s)}async chownPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.chown(fe.fromPortablePath(t),r,s,this.makeCallback(a,n))})}chownSync(t,r,s){return this.realFs.chownSync(fe.fromPortablePath(t),r,s)}async renamePromise(t,r){return await new Promise((s,a)=>{this.realFs.rename(fe.fromPortablePath(t),fe.fromPortablePath(r),this.makeCallback(s,a))})}renameSync(t,r){return this.realFs.renameSync(fe.fromPortablePath(t),fe.fromPortablePath(r))}async copyFilePromise(t,r,s=0){return await new Promise((a,n)=>{this.realFs.copyFile(fe.fromPortablePath(t),fe.fromPortablePath(r),s,this.makeCallback(a,n))})}copyFileSync(t,r,s=0){return this.realFs.copyFileSync(fe.fromPortablePath(t),fe.fromPortablePath(r),s)}async appendFilePromise(t,r,s){return await new Promise((a,n)=>{let c=typeof t==\"string\"?fe.fromPortablePath(t):t;s?this.realFs.appendFile(c,r,s,this.makeCallback(a,n)):this.realFs.appendFile(c,r,this.makeCallback(a,n))})}appendFileSync(t,r,s){let a=typeof t==\"string\"?fe.fromPortablePath(t):t;s?this.realFs.appendFileSync(a,r,s):this.realFs.appendFileSync(a,r)}async writeFilePromise(t,r,s){return await new Promise((a,n)=>{let c=typeof t==\"string\"?fe.fromPortablePath(t):t;s?this.realFs.writeFile(c,r,s,this.makeCallback(a,n)):this.realFs.writeFile(c,r,this.makeCallback(a,n))})}writeFileSync(t,r,s){let a=typeof t==\"string\"?fe.fromPortablePath(t):t;s?this.realFs.writeFileSync(a,r,s):this.realFs.writeFileSync(a,r)}async unlinkPromise(t){return await new Promise((r,s)=>{this.realFs.unlink(fe.fromPortablePath(t),this.makeCallback(r,s))})}unlinkSync(t){return this.realFs.unlinkSync(fe.fromPortablePath(t))}async utimesPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.utimes(fe.fromPortablePath(t),r,s,this.makeCallback(a,n))})}utimesSync(t,r,s){this.realFs.utimesSync(fe.fromPortablePath(t),r,s)}async lutimesPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.lutimes(fe.fromPortablePath(t),r,s,this.makeCallback(a,n))})}lutimesSync(t,r,s){this.realFs.lutimesSync(fe.fromPortablePath(t),r,s)}async mkdirPromise(t,r){return await new Promise((s,a)=>{this.realFs.mkdir(fe.fromPortablePath(t),r,this.makeCallback(s,a))})}mkdirSync(t,r){return this.realFs.mkdirSync(fe.fromPortablePath(t),r)}async rmdirPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.rmdir(fe.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.rmdir(fe.fromPortablePath(t),this.makeCallback(s,a))})}rmdirSync(t,r){return this.realFs.rmdirSync(fe.fromPortablePath(t),r)}async rmPromise(t,r){return await new Promise((s,a)=>{r?this.realFs.rm(fe.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.rm(fe.fromPortablePath(t),this.makeCallback(s,a))})}rmSync(t,r){return this.realFs.rmSync(fe.fromPortablePath(t),r)}async linkPromise(t,r){return await new Promise((s,a)=>{this.realFs.link(fe.fromPortablePath(t),fe.fromPortablePath(r),this.makeCallback(s,a))})}linkSync(t,r){return this.realFs.linkSync(fe.fromPortablePath(t),fe.fromPortablePath(r))}async symlinkPromise(t,r,s){return await new Promise((a,n)=>{this.realFs.symlink(fe.fromPortablePath(t.replace(/\\/+$/,\"\")),fe.fromPortablePath(r),s,this.makeCallback(a,n))})}symlinkSync(t,r,s){return this.realFs.symlinkSync(fe.fromPortablePath(t.replace(/\\/+$/,\"\")),fe.fromPortablePath(r),s)}async readFilePromise(t,r){return await new Promise((s,a)=>{let n=typeof t==\"string\"?fe.fromPortablePath(t):t;this.realFs.readFile(n,r,this.makeCallback(s,a))})}readFileSync(t,r){let s=typeof t==\"string\"?fe.fromPortablePath(t):t;return this.realFs.readFileSync(s,r)}async readdirPromise(t,r){return await new Promise((s,a)=>{r?r.recursive&&process.platform===\"win32\"?r.withFileTypes?this.realFs.readdir(fe.fromPortablePath(t),r,this.makeCallback(n=>s(n.map(wX)),a)):this.realFs.readdir(fe.fromPortablePath(t),r,this.makeCallback(n=>s(n.map(fe.toPortablePath)),a)):this.realFs.readdir(fe.fromPortablePath(t),r,this.makeCallback(s,a)):this.realFs.readdir(fe.fromPortablePath(t),this.makeCallback(s,a))})}readdirSync(t,r){return r?r.recursive&&process.platform===\"win32\"?r.withFileTypes?this.realFs.readdirSync(fe.fromPortablePath(t),r).map(wX):this.realFs.readdirSync(fe.fromPortablePath(t),r).map(fe.toPortablePath):this.realFs.readdirSync(fe.fromPortablePath(t),r):this.realFs.readdirSync(fe.fromPortablePath(t))}async readlinkPromise(t){return await new Promise((r,s)=>{this.realFs.readlink(fe.fromPortablePath(t),this.makeCallback(r,s))}).then(r=>fe.toPortablePath(r))}readlinkSync(t){return fe.toPortablePath(this.realFs.readlinkSync(fe.fromPortablePath(t)))}async truncatePromise(t,r){return await new Promise((s,a)=>{this.realFs.truncate(fe.fromPortablePath(t),r,this.makeCallback(s,a))})}truncateSync(t,r){return this.realFs.truncateSync(fe.fromPortablePath(t),r)}async ftruncatePromise(t,r){return await new Promise((s,a)=>{this.realFs.ftruncate(t,r,this.makeCallback(s,a))})}ftruncateSync(t,r){return this.realFs.ftruncateSync(t,r)}watch(t,r,s){return this.realFs.watch(fe.fromPortablePath(t),r,s)}watchFile(t,r,s){return this.realFs.watchFile(fe.fromPortablePath(t),r,s)}unwatchFile(t,r){return this.realFs.unwatchFile(fe.fromPortablePath(t),r)}makeCallback(t,r){return(s,a)=>{s?r(s):t(a)}}}});var bn,vX=Ze(()=>{Ed();Ep();ol();bn=class extends Gs{constructor(t,{baseFs:r=new Yn}={}){super(K),this.target=this.pathUtils.normalize(t),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(t){return this.pathUtils.isAbsolute(t)?K.normalize(t):this.baseFs.resolve(K.join(this.target,t))}mapFromBase(t){return t}mapToBase(t){return this.pathUtils.isAbsolute(t)?t:this.pathUtils.join(this.target,t)}}});var SX,Gf,DX=Ze(()=>{Ed();Ep();ol();SX=vt.root,Gf=class extends Gs{constructor(t,{baseFs:r=new Yn}={}){super(K),this.target=this.pathUtils.resolve(vt.root,t),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(vt.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(t){let r=this.pathUtils.normalize(t);if(this.pathUtils.isAbsolute(t))return this.pathUtils.resolve(this.target,this.pathUtils.relative(SX,t));if(r.match(/^\\.\\.\\/?/))throw new Error(`Resolving this path (${t}) would escape the jail`);return this.pathUtils.resolve(this.target,t)}mapFromBase(t){return this.pathUtils.resolve(SX,this.pathUtils.relative(this.target,t))}}});var cE,bX=Ze(()=>{Ep();cE=class extends Gs{constructor(r,s){super(s);this.instance=null;this.factory=r}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(r){this.instance=r}mapFromBase(r){return r}mapToBase(r){return r}}});var Id,al,Xh,PX=Ze(()=>{Id=Ie(\"fs\");yd();Ed();fU();zP();ol();al=4278190080,Xh=class extends Hf{constructor({baseFs:r=new Yn,filter:s=null,magicByte:a=42,maxOpenFiles:n=1/0,useCache:c=!0,maxAge:f=5e3,typeCheck:p=Id.constants.S_IFREG,getMountPoint:h,factoryPromise:E,factorySync:C}){if(Math.floor(a)!==a||!(a>1&&a<=127))throw new Error(\"The magic byte must be set to a round value between 1 and 127 included\");super();this.fdMap=new Map;this.nextFd=3;this.isMount=new Set;this.notMount=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.baseFs=r,this.mountInstances=c?new Map:null,this.factoryPromise=E,this.factorySync=C,this.filter=s,this.getMountPoint=h,this.magic=a<<24,this.maxAge=f,this.maxOpenFiles=n,this.typeCheck=p}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(dd(this),this.mountInstances)for(let[r,{childFs:s}]of this.mountInstances.entries())s.saveAndClose?.(),this.mountInstances.delete(r)}discardAndClose(){if(dd(this),this.mountInstances)for(let[r,{childFs:s}]of this.mountInstances.entries())s.discardAndClose?.(),this.mountInstances.delete(r)}resolve(r){return this.baseFs.resolve(r)}remapFd(r,s){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,s]),a}async openPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.openPromise(r,s,a),async(n,{subPath:c})=>this.remapFd(n,await n.openPromise(c,s,a)))}openSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,s,a),(n,{subPath:c})=>this.remapFd(n,n.openSync(c,s,a)))}async opendirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.opendirPromise(r,s),async(a,{subPath:n})=>await a.opendirPromise(n,s),{requireSubpath:!1})}opendirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.opendirSync(r,s),(a,{subPath:n})=>a.opendirSync(n,s),{requireSubpath:!1})}async readPromise(r,s,a,n,c){if((r&al)!==this.magic)return await this.baseFs.readPromise(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>\"u\")throw Go(\"read\");let[p,h]=f;return await p.readPromise(h,s,a,n,c)}readSync(r,s,a,n,c){if((r&al)!==this.magic)return this.baseFs.readSync(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>\"u\")throw Go(\"readSync\");let[p,h]=f;return p.readSync(h,s,a,n,c)}async writePromise(r,s,a,n,c){if((r&al)!==this.magic)return typeof s==\"string\"?await this.baseFs.writePromise(r,s,a):await this.baseFs.writePromise(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>\"u\")throw Go(\"write\");let[p,h]=f;return typeof s==\"string\"?await p.writePromise(h,s,a):await p.writePromise(h,s,a,n,c)}writeSync(r,s,a,n,c){if((r&al)!==this.magic)return typeof s==\"string\"?this.baseFs.writeSync(r,s,a):this.baseFs.writeSync(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>\"u\")throw Go(\"writeSync\");let[p,h]=f;return typeof s==\"string\"?p.writeSync(h,s,a):p.writeSync(h,s,a,n,c)}async closePromise(r){if((r&al)!==this.magic)return await this.baseFs.closePromise(r);let s=this.fdMap.get(r);if(typeof s>\"u\")throw Go(\"close\");this.fdMap.delete(r);let[a,n]=s;return await a.closePromise(n)}closeSync(r){if((r&al)!==this.magic)return this.baseFs.closeSync(r);let s=this.fdMap.get(r);if(typeof s>\"u\")throw Go(\"closeSync\");this.fdMap.delete(r);let[a,n]=s;return a.closeSync(n)}createReadStream(r,s){return r===null?this.baseFs.createReadStream(r,s):this.makeCallSync(r,()=>this.baseFs.createReadStream(r,s),(a,{archivePath:n,subPath:c})=>{let f=a.createReadStream(c,s);return f.path=fe.fromPortablePath(this.pathUtils.join(n,c)),f})}createWriteStream(r,s){return r===null?this.baseFs.createWriteStream(r,s):this.makeCallSync(r,()=>this.baseFs.createWriteStream(r,s),(a,{subPath:n})=>a.createWriteStream(n,s))}async realpathPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.realpathPromise(r),async(s,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>\"u\"&&(c=await this.baseFs.realpathPromise(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(vt.root,await s.realpathPromise(n)))})}realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(r),(s,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>\"u\"&&(c=this.baseFs.realpathSync(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(vt.root,s.realpathSync(n)))})}async existsPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.existsPromise(r),async(s,{subPath:a})=>await s.existsPromise(a))}existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(s,{subPath:a})=>s.existsSync(a))}async accessPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.accessPromise(r,s),async(a,{subPath:n})=>await a.accessPromise(n,s))}accessSync(r,s){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,s),(a,{subPath:n})=>a.accessSync(n,s))}async statPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.statPromise(r,s),async(a,{subPath:n})=>await a.statPromise(n,s))}statSync(r,s){return this.makeCallSync(r,()=>this.baseFs.statSync(r,s),(a,{subPath:n})=>a.statSync(n,s))}async fstatPromise(r,s){if((r&al)!==this.magic)return this.baseFs.fstatPromise(r,s);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Go(\"fstat\");let[n,c]=a;return n.fstatPromise(c,s)}fstatSync(r,s){if((r&al)!==this.magic)return this.baseFs.fstatSync(r,s);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Go(\"fstatSync\");let[n,c]=a;return n.fstatSync(c,s)}async lstatPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.lstatPromise(r,s),async(a,{subPath:n})=>await a.lstatPromise(n,s))}lstatSync(r,s){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,s),(a,{subPath:n})=>a.lstatSync(n,s))}async fchmodPromise(r,s){if((r&al)!==this.magic)return this.baseFs.fchmodPromise(r,s);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Go(\"fchmod\");let[n,c]=a;return n.fchmodPromise(c,s)}fchmodSync(r,s){if((r&al)!==this.magic)return this.baseFs.fchmodSync(r,s);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Go(\"fchmodSync\");let[n,c]=a;return n.fchmodSync(c,s)}async chmodPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.chmodPromise(r,s),async(a,{subPath:n})=>await a.chmodPromise(n,s))}chmodSync(r,s){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,s),(a,{subPath:n})=>a.chmodSync(n,s))}async fchownPromise(r,s,a){if((r&al)!==this.magic)return this.baseFs.fchownPromise(r,s,a);let n=this.fdMap.get(r);if(typeof n>\"u\")throw Go(\"fchown\");let[c,f]=n;return c.fchownPromise(f,s,a)}fchownSync(r,s,a){if((r&al)!==this.magic)return this.baseFs.fchownSync(r,s,a);let n=this.fdMap.get(r);if(typeof n>\"u\")throw Go(\"fchownSync\");let[c,f]=n;return c.fchownSync(f,s,a)}async chownPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.chownPromise(r,s,a),async(n,{subPath:c})=>await n.chownPromise(c,s,a))}chownSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,s,a),(n,{subPath:c})=>n.chownSync(c,s,a))}async renamePromise(r,s){return await this.makeCallPromise(r,async()=>await this.makeCallPromise(s,async()=>await this.baseFs.renamePromise(r,s),async()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})}),async(a,{subPath:n})=>await this.makeCallPromise(s,async()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})},async(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"});return await a.renamePromise(n,f)}))}renameSync(r,s){return this.makeCallSync(r,()=>this.makeCallSync(s,()=>this.baseFs.renameSync(r,s),()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})}),(a,{subPath:n})=>this.makeCallSync(s,()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})},(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"});return a.renameSync(n,f)}))}async copyFilePromise(r,s,a=0){let n=async(c,f,p,h)=>{if(a&Id.constants.COPYFILE_FICLONE_FORCE)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${h}'`),{code:\"EXDEV\"});if(a&Id.constants.COPYFILE_EXCL&&await this.existsPromise(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${h}'`),{code:\"EEXIST\"});let E;try{E=await c.readFilePromise(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${h}'`),{code:\"EINVAL\"})}await p.writeFilePromise(h,E)};return await this.makeCallPromise(r,async()=>await this.makeCallPromise(s,async()=>await this.baseFs.copyFilePromise(r,s,a),async(c,{subPath:f})=>await n(this.baseFs,r,c,f)),async(c,{subPath:f})=>await this.makeCallPromise(s,async()=>await n(c,f,this.baseFs,s),async(p,{subPath:h})=>c!==p?await n(c,f,p,h):await c.copyFilePromise(f,h,a)))}copyFileSync(r,s,a=0){let n=(c,f,p,h)=>{if(a&Id.constants.COPYFILE_FICLONE_FORCE)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${h}'`),{code:\"EXDEV\"});if(a&Id.constants.COPYFILE_EXCL&&this.existsSync(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${h}'`),{code:\"EEXIST\"});let E;try{E=c.readFileSync(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${h}'`),{code:\"EINVAL\"})}p.writeFileSync(h,E)};return this.makeCallSync(r,()=>this.makeCallSync(s,()=>this.baseFs.copyFileSync(r,s,a),(c,{subPath:f})=>n(this.baseFs,r,c,f)),(c,{subPath:f})=>this.makeCallSync(s,()=>n(c,f,this.baseFs,s),(p,{subPath:h})=>c!==p?n(c,f,p,h):c.copyFileSync(f,h,a)))}async appendFilePromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.appendFilePromise(r,s,a),async(n,{subPath:c})=>await n.appendFilePromise(c,s,a))}appendFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.appendFileSync(r,s,a),(n,{subPath:c})=>n.appendFileSync(c,s,a))}async writeFilePromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.writeFilePromise(r,s,a),async(n,{subPath:c})=>await n.writeFilePromise(c,s,a))}writeFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.writeFileSync(r,s,a),(n,{subPath:c})=>n.writeFileSync(c,s,a))}async unlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.unlinkPromise(r),async(s,{subPath:a})=>await s.unlinkPromise(a))}unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(s,{subPath:a})=>s.unlinkSync(a))}async utimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.utimesPromise(r,s,a),async(n,{subPath:c})=>await n.utimesPromise(c,s,a))}utimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(r,s,a),(n,{subPath:c})=>n.utimesSync(c,s,a))}async lutimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.lutimesPromise(r,s,a),async(n,{subPath:c})=>await n.lutimesPromise(c,s,a))}lutimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSync(r,s,a),(n,{subPath:c})=>n.lutimesSync(c,s,a))}async mkdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.mkdirPromise(r,s),async(a,{subPath:n})=>await a.mkdirPromise(n,s))}mkdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,s),(a,{subPath:n})=>a.mkdirSync(n,s))}async rmdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.rmdirPromise(r,s),async(a,{subPath:n})=>await a.rmdirPromise(n,s))}rmdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,s),(a,{subPath:n})=>a.rmdirSync(n,s))}async rmPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.rmPromise(r,s),async(a,{subPath:n})=>await a.rmPromise(n,s))}rmSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmSync(r,s),(a,{subPath:n})=>a.rmSync(n,s))}async linkPromise(r,s){return await this.makeCallPromise(s,async()=>await this.baseFs.linkPromise(r,s),async(a,{subPath:n})=>await a.linkPromise(r,n))}linkSync(r,s){return this.makeCallSync(s,()=>this.baseFs.linkSync(r,s),(a,{subPath:n})=>a.linkSync(r,n))}async symlinkPromise(r,s,a){return await this.makeCallPromise(s,async()=>await this.baseFs.symlinkPromise(r,s,a),async(n,{subPath:c})=>await n.symlinkPromise(r,c))}symlinkSync(r,s,a){return this.makeCallSync(s,()=>this.baseFs.symlinkSync(r,s,a),(n,{subPath:c})=>n.symlinkSync(r,c))}async readFilePromise(r,s){return this.makeCallPromise(r,async()=>await this.baseFs.readFilePromise(r,s),async(a,{subPath:n})=>await a.readFilePromise(n,s))}readFileSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readFileSync(r,s),(a,{subPath:n})=>a.readFileSync(n,s))}async readdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.readdirPromise(r,s),async(a,{subPath:n})=>await a.readdirPromise(n,s),{requireSubpath:!1})}readdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readdirSync(r,s),(a,{subPath:n})=>a.readdirSync(n,s),{requireSubpath:!1})}async readlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.readlinkPromise(r),async(s,{subPath:a})=>await s.readlinkPromise(a))}readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(r),(s,{subPath:a})=>s.readlinkSync(a))}async truncatePromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.truncatePromise(r,s),async(a,{subPath:n})=>await a.truncatePromise(n,s))}truncateSync(r,s){return this.makeCallSync(r,()=>this.baseFs.truncateSync(r,s),(a,{subPath:n})=>a.truncateSync(n,s))}async ftruncatePromise(r,s){if((r&al)!==this.magic)return this.baseFs.ftruncatePromise(r,s);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Go(\"ftruncate\");let[n,c]=a;return n.ftruncatePromise(c,s)}ftruncateSync(r,s){if((r&al)!==this.magic)return this.baseFs.ftruncateSync(r,s);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Go(\"ftruncateSync\");let[n,c]=a;return n.ftruncateSync(c,s)}watch(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,s,a),(n,{subPath:c})=>n.watch(c,s,a))}watchFile(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,s,a),()=>lE(this,r,s,a))}unwatchFile(r,s){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(r,s),()=>gd(this,r,s))}async makeCallPromise(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!=\"string\")return await s();let c=this.resolve(r),f=this.findMount(c);return f?n&&f.subPath===\"/\"?await s():await this.getMountPromise(f.archivePath,async p=>await a(p,f)):await s()}makeCallSync(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!=\"string\")return s();let c=this.resolve(r),f=this.findMount(c);return!f||n&&f.subPath===\"/\"?s():this.getMountSync(f.archivePath,p=>a(p,f))}findMount(r){if(this.filter&&!this.filter.test(r))return null;let s=\"\";for(;;){let a=r.substring(s.length),n=this.getMountPoint(a,s);if(!n)return null;if(s=this.pathUtils.join(s,n),!this.isMount.has(s)){if(this.notMount.has(s))continue;try{if(this.typeCheck!==null&&(this.baseFs.statSync(s).mode&Id.constants.S_IFMT)!==this.typeCheck){this.notMount.add(s);continue}}catch{return null}this.isMount.add(s)}return{archivePath:s,subPath:this.pathUtils.join(vt.root,r.substring(s.length))}}}limitOpenFiles(r){if(this.mountInstances===null)return;let s=Date.now(),a=s+this.maxAge,n=r===null?0:this.mountInstances.size-r;for(let[c,{childFs:f,expiresAt:p,refCount:h}]of this.mountInstances.entries())if(!(h!==0||f.hasOpenFileHandles?.())){if(s>=p){f.saveAndClose?.(),this.mountInstances.delete(c),n-=1;continue}else if(r===null||n<=0){a=p;break}f.saveAndClose?.(),this.mountInstances.delete(c),n-=1}this.limitOpenFilesTimeout===null&&(r===null&&this.mountInstances.size>0||r!==null)&&isFinite(a)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},a-s).unref())}async getMountPromise(r,s){if(this.mountInstances){let a=this.mountInstances.get(r);if(!a){let n=await this.factoryPromise(this.baseFs,r);a=this.mountInstances.get(r),a||(a={childFs:n(),expiresAt:0,refCount:0})}this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,a.refCount+=1;try{return await s(a.childFs)}finally{a.refCount-=1}}else{let a=(await this.factoryPromise(this.baseFs,r))();try{return await s(a)}finally{a.saveAndClose?.()}}}getMountSync(r,s){if(this.mountInstances){let a=this.mountInstances.get(r);return a||(a={childFs:this.factorySync(this.baseFs,r),expiresAt:0,refCount:0}),this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,s(a.childFs)}else{let a=this.factorySync(this.baseFs,r);try{return s(a)}finally{a.saveAndClose?.()}}}}});var er,nx,xX=Ze(()=>{yd();ol();er=()=>Object.assign(new Error(\"ENOSYS: unsupported filesystem access\"),{code:\"ENOSYS\"}),nx=class e extends yp{static{this.instance=new e}constructor(){super(K)}getExtractHint(){throw er()}getRealPath(){throw er()}resolve(){throw er()}async openPromise(){throw er()}openSync(){throw er()}async opendirPromise(){throw er()}opendirSync(){throw er()}async readPromise(){throw er()}readSync(){throw er()}async writePromise(){throw er()}writeSync(){throw er()}async closePromise(){throw er()}closeSync(){throw er()}createWriteStream(){throw er()}createReadStream(){throw er()}async realpathPromise(){throw er()}realpathSync(){throw er()}async readdirPromise(){throw er()}readdirSync(){throw er()}async existsPromise(t){throw er()}existsSync(t){throw er()}async accessPromise(){throw er()}accessSync(){throw er()}async statPromise(){throw er()}statSync(){throw er()}async fstatPromise(t){throw er()}fstatSync(t){throw er()}async lstatPromise(t){throw er()}lstatSync(t){throw er()}async fchmodPromise(){throw er()}fchmodSync(){throw er()}async chmodPromise(){throw er()}chmodSync(){throw er()}async fchownPromise(){throw er()}fchownSync(){throw er()}async chownPromise(){throw er()}chownSync(){throw er()}async mkdirPromise(){throw er()}mkdirSync(){throw er()}async rmdirPromise(){throw er()}rmdirSync(){throw er()}async rmPromise(){throw er()}rmSync(){throw er()}async linkPromise(){throw er()}linkSync(){throw er()}async symlinkPromise(){throw er()}symlinkSync(){throw er()}async renamePromise(){throw er()}renameSync(){throw er()}async copyFilePromise(){throw er()}copyFileSync(){throw er()}async appendFilePromise(){throw er()}appendFileSync(){throw er()}async writeFilePromise(){throw er()}writeFileSync(){throw er()}async unlinkPromise(){throw er()}unlinkSync(){throw er()}async utimesPromise(){throw er()}utimesSync(){throw er()}async lutimesPromise(){throw er()}lutimesSync(){throw er()}async readFilePromise(){throw er()}readFileSync(){throw er()}async readlinkPromise(){throw er()}readlinkSync(){throw er()}async truncatePromise(){throw er()}truncateSync(){throw er()}async ftruncatePromise(t,r){throw er()}ftruncateSync(t,r){throw er()}watch(){throw er()}watchFile(){throw er()}unwatchFile(){throw er()}}});var $h,kX=Ze(()=>{Ep();ol();$h=class extends Gs{constructor(t){super(fe),this.baseFs=t}mapFromBase(t){return fe.fromPortablePath(t)}mapToBase(t){return fe.toPortablePath(t)}}});var Vje,AU,Yje,mo,QX=Ze(()=>{Ed();Ep();ol();Vje=/^[0-9]+$/,AU=/^(\\/(?:[^/]+\\/)*?(?:\\$\\$virtual|__virtual__))((?:\\/((?:[^/]+-)?[a-f0-9]+)(?:\\/([^/]+))?)?((?:\\/.*)?))$/,Yje=/^([^/]+-)?[a-f0-9]+$/,mo=class e extends Gs{static makeVirtualPath(t,r,s){if(K.basename(t)!==\"__virtual__\")throw new Error('Assertion failed: Virtual folders must be named \"__virtual__\"');if(!K.basename(r).match(Yje))throw new Error(\"Assertion failed: Virtual components must be ended by an hexadecimal hash\");let n=K.relative(K.dirname(t),s).split(\"/\"),c=0;for(;c<n.length&&n[c]===\"..\";)c+=1;let f=n.slice(c);return K.join(t,r,String(c),...f)}static resolveVirtual(t){let r=t.match(AU);if(!r||!r[3]&&r[5])return t;let s=K.dirname(r[1]);if(!r[3]||!r[4])return s;if(!Vje.test(r[4]))return t;let n=Number(r[4]),c=\"../\".repeat(n),f=r[5]||\".\";return e.resolveVirtual(K.join(s,c,f))}constructor({baseFs:t=new Yn}={}){super(K),this.baseFs=t}getExtractHint(t){return this.baseFs.getExtractHint(t)}getRealPath(){return this.baseFs.getRealPath()}realpathSync(t){let r=t.match(AU);if(!r)return this.baseFs.realpathSync(t);if(!r[5])return t;let s=this.baseFs.realpathSync(this.mapToBase(t));return e.makeVirtualPath(r[1],r[3],s)}async realpathPromise(t){let r=t.match(AU);if(!r)return await this.baseFs.realpathPromise(t);if(!r[5])return t;let s=await this.baseFs.realpathPromise(this.mapToBase(t));return e.makeVirtualPath(r[1],r[3],s)}mapToBase(t){if(t===\"\")return t;if(this.pathUtils.isAbsolute(t))return e.resolveVirtual(t);let r=e.resolveVirtual(this.baseFs.resolve(vt.dot)),s=e.resolveVirtual(this.baseFs.resolve(t));return K.relative(r,s)||vt.dot}mapFromBase(t){return t}}});function Kje(e,t){return typeof pU.default.isUtf8<\"u\"?pU.default.isUtf8(e):Buffer.byteLength(t)===e.byteLength}var pU,RX,TX,ix,FX=Ze(()=>{pU=et(Ie(\"buffer\")),RX=Ie(\"url\"),TX=Ie(\"util\");Ep();ol();ix=class extends Gs{constructor(t){super(fe),this.baseFs=t}mapFromBase(t){return t}mapToBase(t){if(typeof t==\"string\")return t;if(t instanceof URL)return(0,RX.fileURLToPath)(t);if(Buffer.isBuffer(t)){let r=t.toString();if(!Kje(t,r))throw new Error(\"Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942\");return r}throw new Error(`Unsupported path type: ${(0,TX.inspect)(t)}`)}}});var UX,qo,Ip,e0,sx,ox,uE,Qu,Ru,NX,OX,LX,MX,kB,_X=Ze(()=>{UX=Ie(\"readline\"),qo=Symbol(\"kBaseFs\"),Ip=Symbol(\"kFd\"),e0=Symbol(\"kClosePromise\"),sx=Symbol(\"kCloseResolve\"),ox=Symbol(\"kCloseReject\"),uE=Symbol(\"kRefs\"),Qu=Symbol(\"kRef\"),Ru=Symbol(\"kUnref\"),kB=class{constructor(t,r){this[MX]=1;this[LX]=void 0;this[OX]=void 0;this[NX]=void 0;this[qo]=r,this[Ip]=t}get fd(){return this[Ip]}async appendFile(t,r){try{this[Qu](this.appendFile);let s=(typeof r==\"string\"?r:r?.encoding)??void 0;return await this[qo].appendFilePromise(this.fd,t,s?{encoding:s}:void 0)}finally{this[Ru]()}}async chown(t,r){try{return this[Qu](this.chown),await this[qo].fchownPromise(this.fd,t,r)}finally{this[Ru]()}}async chmod(t){try{return this[Qu](this.chmod),await this[qo].fchmodPromise(this.fd,t)}finally{this[Ru]()}}createReadStream(t){return this[qo].createReadStream(null,{...t,fd:this.fd})}createWriteStream(t){return this[qo].createWriteStream(null,{...t,fd:this.fd})}datasync(){throw new Error(\"Method not implemented.\")}sync(){throw new Error(\"Method not implemented.\")}async read(t,r,s,a){try{this[Qu](this.read);let n,c;return ArrayBuffer.isView(t)?typeof r==\"object\"&&r!==null?(n=t,c=r?.offset??0,s=r?.length??n.byteLength-c,a=r?.position??null):(n=t,c=r??0,s??=0):(n=t?.buffer??Buffer.alloc(16384),c=t?.offset??0,s=t?.length??n.byteLength-c,a=t?.position??null),s===0?{bytesRead:s,buffer:n}:{bytesRead:await this[qo].readPromise(this.fd,Buffer.isBuffer(n)?n:Buffer.from(n.buffer,n.byteOffset,n.byteLength),c,s,a),buffer:n}}finally{this[Ru]()}}async readFile(t){try{this[Qu](this.readFile);let r=(typeof t==\"string\"?t:t?.encoding)??void 0;return await this[qo].readFilePromise(this.fd,r)}finally{this[Ru]()}}readLines(t){return(0,UX.createInterface)({input:this.createReadStream(t),crlfDelay:1/0})}async stat(t){try{return this[Qu](this.stat),await this[qo].fstatPromise(this.fd,t)}finally{this[Ru]()}}async truncate(t){try{return this[Qu](this.truncate),await this[qo].ftruncatePromise(this.fd,t)}finally{this[Ru]()}}utimes(t,r){throw new Error(\"Method not implemented.\")}async writeFile(t,r){try{this[Qu](this.writeFile);let s=(typeof r==\"string\"?r:r?.encoding)??void 0;await this[qo].writeFilePromise(this.fd,t,s)}finally{this[Ru]()}}async write(...t){try{if(this[Qu](this.write),ArrayBuffer.isView(t[0])){let[r,s,a,n]=t;return{bytesWritten:await this[qo].writePromise(this.fd,r,s??void 0,a??void 0,n??void 0),buffer:r}}else{let[r,s,a]=t;return{bytesWritten:await this[qo].writePromise(this.fd,r,s,a),buffer:r}}}finally{this[Ru]()}}async writev(t,r){try{this[Qu](this.writev);let s=0;if(typeof r<\"u\")for(let a of t){let n=await this.write(a,void 0,void 0,r);s+=n.bytesWritten,r+=n.bytesWritten}else for(let a of t){let n=await this.write(a);s+=n.bytesWritten}return{buffers:t,bytesWritten:s}}finally{this[Ru]()}}readv(t,r){throw new Error(\"Method not implemented.\")}close(){if(this[Ip]===-1)return Promise.resolve();if(this[e0])return this[e0];if(this[uE]--,this[uE]===0){let t=this[Ip];this[Ip]=-1,this[e0]=this[qo].closePromise(t).finally(()=>{this[e0]=void 0})}else this[e0]=new Promise((t,r)=>{this[sx]=t,this[ox]=r}).finally(()=>{this[e0]=void 0,this[ox]=void 0,this[sx]=void 0});return this[e0]}[(qo,Ip,MX=uE,LX=e0,OX=sx,NX=ox,Qu)](t){if(this[Ip]===-1){let r=new Error(\"file closed\");throw r.code=\"EBADF\",r.syscall=t.name,r}this[uE]++}[Ru](){if(this[uE]--,this[uE]===0){let t=this[Ip];this[Ip]=-1,this[qo].closePromise(t).then(this[sx],this[ox])}}}});function QB(e,t){t=new ix(t);let r=(s,a,n)=>{let c=s[a];s[a]=n,typeof c?.[fE.promisify.custom]<\"u\"&&(n[fE.promisify.custom]=c[fE.promisify.custom])};{r(e,\"exists\",(s,...a)=>{let c=typeof a[a.length-1]==\"function\"?a.pop():()=>{};process.nextTick(()=>{t.existsPromise(s).then(f=>{c(f)},()=>{c(!1)})})}),r(e,\"read\",(...s)=>{let[a,n,c,f,p,h]=s;if(s.length<=3){let E={};s.length<3?h=s[1]:(E=s[1],h=s[2]),{buffer:n=Buffer.alloc(16384),offset:c=0,length:f=n.byteLength,position:p}=E}if(c==null&&(c=0),f|=0,f===0){process.nextTick(()=>{h(null,0,n)});return}p==null&&(p=-1),process.nextTick(()=>{t.readPromise(a,n,c,f,p).then(E=>{h(null,E,n)},E=>{h(E,0,n)})})});for(let s of HX){let a=s.replace(/Promise$/,\"\");if(typeof e[a]>\"u\")continue;let n=t[s];if(typeof n>\"u\")continue;r(e,a,(...f)=>{let h=typeof f[f.length-1]==\"function\"?f.pop():()=>{};process.nextTick(()=>{n.apply(t,f).then(E=>{h(null,E)},E=>{h(E)})})})}e.realpath.native=e.realpath}{r(e,\"existsSync\",s=>{try{return t.existsSync(s)}catch{return!1}}),r(e,\"readSync\",(...s)=>{let[a,n,c,f,p]=s;return s.length<=3&&({offset:c=0,length:f=n.byteLength,position:p}=s[2]||{}),c==null&&(c=0),f|=0,f===0?0:(p==null&&(p=-1),t.readSync(a,n,c,f,p))});for(let s of Jje){let a=s;if(typeof e[a]>\"u\")continue;let n=t[s];typeof n>\"u\"||r(e,a,n.bind(t))}e.realpathSync.native=e.realpathSync}{let s=e.promises;for(let a of HX){let n=a.replace(/Promise$/,\"\");if(typeof s[n]>\"u\")continue;let c=t[a];typeof c>\"u\"||a!==\"open\"&&r(s,n,(f,...p)=>f instanceof kB?f[n].apply(f,p):c.call(t,f,...p))}r(s,\"open\",async(...a)=>{let n=await t.openPromise(...a);return new kB(n,t)})}e.read[fE.promisify.custom]=async(s,a,...n)=>({bytesRead:await t.readPromise(s,a,...n),buffer:a}),e.write[fE.promisify.custom]=async(s,a,...n)=>({bytesWritten:await t.writePromise(s,a,...n),buffer:a})}function ax(e,t){let r=Object.create(e);return QB(r,t),r}var fE,Jje,HX,jX=Ze(()=>{fE=Ie(\"util\");FX();_X();Jje=new Set([\"accessSync\",\"appendFileSync\",\"createReadStream\",\"createWriteStream\",\"chmodSync\",\"fchmodSync\",\"chownSync\",\"fchownSync\",\"closeSync\",\"copyFileSync\",\"linkSync\",\"lstatSync\",\"fstatSync\",\"lutimesSync\",\"mkdirSync\",\"openSync\",\"opendirSync\",\"readlinkSync\",\"readFileSync\",\"readdirSync\",\"readlinkSync\",\"realpathSync\",\"renameSync\",\"rmdirSync\",\"rmSync\",\"statSync\",\"symlinkSync\",\"truncateSync\",\"ftruncateSync\",\"unlinkSync\",\"unwatchFile\",\"utimesSync\",\"watch\",\"watchFile\",\"writeFileSync\",\"writeSync\"]),HX=new Set([\"accessPromise\",\"appendFilePromise\",\"fchmodPromise\",\"chmodPromise\",\"fchownPromise\",\"chownPromise\",\"closePromise\",\"copyFilePromise\",\"linkPromise\",\"fstatPromise\",\"lstatPromise\",\"lutimesPromise\",\"mkdirPromise\",\"openPromise\",\"opendirPromise\",\"readdirPromise\",\"realpathPromise\",\"readFilePromise\",\"readdirPromise\",\"readlinkPromise\",\"renamePromise\",\"rmdirPromise\",\"rmPromise\",\"statPromise\",\"symlinkPromise\",\"truncatePromise\",\"ftruncatePromise\",\"unlinkPromise\",\"utimesPromise\",\"writeFilePromise\",\"writeSync\"])});function GX(e){let t=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,\"0\");return`${e}${t}`}function qX(){if(hU)return hU;let e=fe.toPortablePath(WX.default.tmpdir()),t=le.realpathSync(e);return process.once(\"exit\",()=>{le.rmtempSync()}),hU={tmpdir:e,realTmpdir:t}}var WX,Tu,hU,le,VX=Ze(()=>{WX=et(Ie(\"os\"));Ed();ol();Tu=new Set,hU=null;le=Object.assign(new Yn,{detachTemp(e){Tu.delete(e)},mktempSync(e){let{tmpdir:t,realTmpdir:r}=qX();for(;;){let s=GX(\"xfs-\");try{this.mkdirSync(K.join(t,s))}catch(n){if(n.code===\"EEXIST\")continue;throw n}let a=K.join(r,s);if(Tu.add(a),typeof e>\"u\")return a;try{return e(a)}finally{if(Tu.has(a)){Tu.delete(a);try{this.removeSync(a)}catch{}}}}},async mktempPromise(e){let{tmpdir:t,realTmpdir:r}=qX();for(;;){let s=GX(\"xfs-\");try{await this.mkdirPromise(K.join(t,s))}catch(n){if(n.code===\"EEXIST\")continue;throw n}let a=K.join(r,s);if(Tu.add(a),typeof e>\"u\")return a;try{return await e(a)}finally{if(Tu.has(a)){Tu.delete(a);try{await this.removePromise(a)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(Tu.values()).map(async e=>{try{await le.removePromise(e,{maxRetries:0}),Tu.delete(e)}catch{}}))},rmtempSync(){for(let e of Tu)try{le.removeSync(e),Tu.delete(e)}catch{}}})});var RB={};Yt(RB,{AliasFS:()=>jf,BasePortableFakeFS:()=>Hf,CustomDir:()=>xB,CwdFS:()=>bn,FakeFS:()=>yp,Filename:()=>Er,JailFS:()=>Gf,LazyFS:()=>cE,MountFS:()=>Xh,NoFS:()=>nx,NodeFS:()=>Yn,PortablePath:()=>vt,PosixFS:()=>$h,ProxiedFS:()=>Gs,VirtualFS:()=>mo,constants:()=>Ai,errors:()=>or,extendFs:()=>ax,normalizeLineEndings:()=>md,npath:()=>fe,opendir:()=>ex,patchFs:()=>QB,ppath:()=>K,setupCopyIndex:()=>$P,statUtils:()=>sl,unwatchAllFiles:()=>dd,unwatchFile:()=>gd,watchFile:()=>lE,xfs:()=>le});var Dt=Ze(()=>{cX();zP();aU();uU();gX();fU();yd();ol();ol();CX();yd();vX();DX();bX();PX();xX();Ed();kX();Ep();QX();jX();VX()});var ZX=G((_bt,zX)=>{zX.exports=JX;JX.sync=Zje;var YX=Ie(\"fs\");function zje(e,t){var r=t.pathExt!==void 0?t.pathExt:process.env.PATHEXT;if(!r||(r=r.split(\";\"),r.indexOf(\"\")!==-1))return!0;for(var s=0;s<r.length;s++){var a=r[s].toLowerCase();if(a&&e.substr(-a.length).toLowerCase()===a)return!0}return!1}function KX(e,t,r){return!e.isSymbolicLink()&&!e.isFile()?!1:zje(t,r)}function JX(e,t,r){YX.stat(e,function(s,a){r(s,s?!1:KX(a,e,t))})}function Zje(e,t){return KX(YX.statSync(e),e,t)}});var r$=G((Hbt,t$)=>{t$.exports=$X;$X.sync=Xje;var XX=Ie(\"fs\");function $X(e,t,r){XX.stat(e,function(s,a){r(s,s?!1:e$(a,t))})}function Xje(e,t){return e$(XX.statSync(e),t)}function e$(e,t){return e.isFile()&&$je(e,t)}function $je(e,t){var r=e.mode,s=e.uid,a=e.gid,n=t.uid!==void 0?t.uid:process.getuid&&process.getuid(),c=t.gid!==void 0?t.gid:process.getgid&&process.getgid(),f=parseInt(\"100\",8),p=parseInt(\"010\",8),h=parseInt(\"001\",8),E=f|p,C=r&h||r&p&&a===c||r&f&&s===n||r&E&&n===0;return C}});var i$=G((Gbt,n$)=>{var jbt=Ie(\"fs\"),lx;process.platform===\"win32\"||global.TESTING_WINDOWS?lx=ZX():lx=r$();n$.exports=gU;gU.sync=e6e;function gU(e,t,r){if(typeof t==\"function\"&&(r=t,t={}),!r){if(typeof Promise!=\"function\")throw new TypeError(\"callback not provided\");return new Promise(function(s,a){gU(e,t||{},function(n,c){n?a(n):s(c)})})}lx(e,t||{},function(s,a){s&&(s.code===\"EACCES\"||t&&t.ignoreErrors)&&(s=null,a=!1),r(s,a)})}function e6e(e,t){try{return lx.sync(e,t||{})}catch(r){if(t&&t.ignoreErrors||r.code===\"EACCES\")return!1;throw r}}});var f$=G((qbt,u$)=>{var AE=process.platform===\"win32\"||process.env.OSTYPE===\"cygwin\"||process.env.OSTYPE===\"msys\",s$=Ie(\"path\"),t6e=AE?\";\":\":\",o$=i$(),a$=e=>Object.assign(new Error(`not found: ${e}`),{code:\"ENOENT\"}),l$=(e,t)=>{let r=t.colon||t6e,s=e.match(/\\//)||AE&&e.match(/\\\\/)?[\"\"]:[...AE?[process.cwd()]:[],...(t.path||process.env.PATH||\"\").split(r)],a=AE?t.pathExt||process.env.PATHEXT||\".EXE;.CMD;.BAT;.COM\":\"\",n=AE?a.split(r):[\"\"];return AE&&e.indexOf(\".\")!==-1&&n[0]!==\"\"&&n.unshift(\"\"),{pathEnv:s,pathExt:n,pathExtExe:a}},c$=(e,t,r)=>{typeof t==\"function\"&&(r=t,t={}),t||(t={});let{pathEnv:s,pathExt:a,pathExtExe:n}=l$(e,t),c=[],f=h=>new Promise((E,C)=>{if(h===s.length)return t.all&&c.length?E(c):C(a$(e));let S=s[h],x=/^\".*\"$/.test(S)?S.slice(1,-1):S,I=s$.join(x,e),T=!x&&/^\\.[\\\\\\/]/.test(e)?e.slice(0,2)+I:I;E(p(T,h,0))}),p=(h,E,C)=>new Promise((S,x)=>{if(C===a.length)return S(f(E+1));let I=a[C];o$(h+I,{pathExt:n},(T,O)=>{if(!T&&O)if(t.all)c.push(h+I);else return S(h+I);return S(p(h,E,C+1))})});return r?f(0).then(h=>r(null,h),r):f(0)},r6e=(e,t)=>{t=t||{};let{pathEnv:r,pathExt:s,pathExtExe:a}=l$(e,t),n=[];for(let c=0;c<r.length;c++){let f=r[c],p=/^\".*\"$/.test(f)?f.slice(1,-1):f,h=s$.join(p,e),E=!p&&/^\\.[\\\\\\/]/.test(e)?e.slice(0,2)+h:h;for(let C=0;C<s.length;C++){let S=E+s[C];try{if(o$.sync(S,{pathExt:a}))if(t.all)n.push(S);else return S}catch{}}}if(t.all&&n.length)return n;if(t.nothrow)return null;throw a$(e)};u$.exports=c$;c$.sync=r6e});var p$=G((Wbt,dU)=>{\"use strict\";var A$=(e={})=>{let t=e.env||process.env;return(e.platform||process.platform)!==\"win32\"?\"PATH\":Object.keys(t).reverse().find(s=>s.toUpperCase()===\"PATH\")||\"Path\"};dU.exports=A$;dU.exports.default=A$});var m$=G((Vbt,d$)=>{\"use strict\";var h$=Ie(\"path\"),n6e=f$(),i6e=p$();function g$(e,t){let r=e.options.env||process.env,s=process.cwd(),a=e.options.cwd!=null,n=a&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(e.options.cwd)}catch{}let c;try{c=n6e.sync(e.command,{path:r[i6e({env:r})],pathExt:t?h$.delimiter:void 0})}catch{}finally{n&&process.chdir(s)}return c&&(c=h$.resolve(a?e.options.cwd:\"\",c)),c}function s6e(e){return g$(e)||g$(e,!0)}d$.exports=s6e});var y$=G((Ybt,yU)=>{\"use strict\";var mU=/([()\\][%!^\"`<>&|;, *?])/g;function o6e(e){return e=e.replace(mU,\"^$1\"),e}function a6e(e,t){return e=`${e}`,e=e.replace(/(?=(\\\\+?)?)\\1\"/g,'$1$1\\\\\"'),e=e.replace(/(?=(\\\\+?)?)\\1$/,\"$1$1\"),e=`\"${e}\"`,e=e.replace(mU,\"^$1\"),t&&(e=e.replace(mU,\"^$1\")),e}yU.exports.command=o6e;yU.exports.argument=a6e});var I$=G((Kbt,E$)=>{\"use strict\";E$.exports=/^#!(.*)/});var w$=G((Jbt,C$)=>{\"use strict\";var l6e=I$();C$.exports=(e=\"\")=>{let t=e.match(l6e);if(!t)return null;let[r,s]=t[0].replace(/#! ?/,\"\").split(\" \"),a=r.split(\"/\").pop();return a===\"env\"?s:s?`${a} ${s}`:a}});var v$=G((zbt,B$)=>{\"use strict\";var EU=Ie(\"fs\"),c6e=w$();function u6e(e){let r=Buffer.alloc(150),s;try{s=EU.openSync(e,\"r\"),EU.readSync(s,r,0,150,0),EU.closeSync(s)}catch{}return c6e(r.toString())}B$.exports=u6e});var P$=G((Zbt,b$)=>{\"use strict\";var f6e=Ie(\"path\"),S$=m$(),D$=y$(),A6e=v$(),p6e=process.platform===\"win32\",h6e=/\\.(?:com|exe)$/i,g6e=/node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;function d6e(e){e.file=S$(e);let t=e.file&&A6e(e.file);return t?(e.args.unshift(e.file),e.command=t,S$(e)):e.file}function m6e(e){if(!p6e)return e;let t=d6e(e),r=!h6e.test(t);if(e.options.forceShell||r){let s=g6e.test(t);e.command=f6e.normalize(e.command),e.command=D$.command(e.command),e.args=e.args.map(n=>D$.argument(n,s));let a=[e.command].concat(e.args).join(\" \");e.args=[\"/d\",\"/s\",\"/c\",`\"${a}\"`],e.command=process.env.comspec||\"cmd.exe\",e.options.windowsVerbatimArguments=!0}return e}function y6e(e,t,r){t&&!Array.isArray(t)&&(r=t,t=null),t=t?t.slice(0):[],r=Object.assign({},r);let s={command:e,args:t,options:r,file:void 0,original:{command:e,args:t}};return r.shell?s:m6e(s)}b$.exports=y6e});var Q$=G((Xbt,k$)=>{\"use strict\";var IU=process.platform===\"win32\";function CU(e,t){return Object.assign(new Error(`${t} ${e.command} ENOENT`),{code:\"ENOENT\",errno:\"ENOENT\",syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function E6e(e,t){if(!IU)return;let r=e.emit;e.emit=function(s,a){if(s===\"exit\"){let n=x$(a,t);if(n)return r.call(e,\"error\",n)}return r.apply(e,arguments)}}function x$(e,t){return IU&&e===1&&!t.file?CU(t.original,\"spawn\"):null}function I6e(e,t){return IU&&e===1&&!t.file?CU(t.original,\"spawnSync\"):null}k$.exports={hookChildProcess:E6e,verifyENOENT:x$,verifyENOENTSync:I6e,notFoundError:CU}});var vU=G(($bt,pE)=>{\"use strict\";var R$=Ie(\"child_process\"),wU=P$(),BU=Q$();function T$(e,t,r){let s=wU(e,t,r),a=R$.spawn(s.command,s.args,s.options);return BU.hookChildProcess(a,s),a}function C6e(e,t,r){let s=wU(e,t,r),a=R$.spawnSync(s.command,s.args,s.options);return a.error=a.error||BU.verifyENOENTSync(a.status,s),a}pE.exports=T$;pE.exports.spawn=T$;pE.exports.sync=C6e;pE.exports._parse=wU;pE.exports._enoent=BU});var N$=G((ePt,F$)=>{\"use strict\";function w6e(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}function Cd(e,t,r,s){this.message=e,this.expected=t,this.found=r,this.location=s,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,Cd)}w6e(Cd,Error);Cd.buildMessage=function(e,t){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",C;for(C=0;C<h.parts.length;C++)E+=h.parts[C]instanceof Array?n(h.parts[C][0])+\"-\"+n(h.parts[C][1]):n(h.parts[C]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function s(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function c(h){return r[h.type](h)}function f(h){var E=new Array(h.length),C,S;for(C=0;C<h.length;C++)E[C]=c(h[C]);if(E.sort(),E.length>0){for(C=1,S=1;C<E.length;C++)E[C-1]!==E[C]&&(E[S]=E[C],S++);E.length=S}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+f(e)+\" but \"+p(t)+\" found.\"};function B6e(e,t){t=t!==void 0?t:{};var r={},s={Start:Za},a=Za,n=function(N){return N||[]},c=function(N,J,re){return[{command:N,type:J}].concat(re||[])},f=function(N,J){return[{command:N,type:J||\";\"}]},p=function(N){return N},h=\";\",E=ur(\";\",!1),C=\"&\",S=ur(\"&\",!1),x=function(N,J){return J?{chain:N,then:J}:{chain:N}},I=function(N,J){return{type:N,line:J}},T=\"&&\",O=ur(\"&&\",!1),U=\"||\",Y=ur(\"||\",!1),te=function(N,J){return J?{...N,then:J}:N},ie=function(N,J){return{type:N,chain:J}},ue=\"|&\",ae=ur(\"|&\",!1),de=\"|\",Ae=ur(\"|\",!1),Ce=\"=\",Ee=ur(\"=\",!1),g=function(N,J){return{name:N,args:[J]}},Se=function(N){return{name:N,args:[]}},Be=\"(\",me=ur(\"(\",!1),ce=\")\",X=ur(\")\",!1),De=function(N,J){return{type:\"subshell\",subshell:N,args:J}},Qe=\"{\",it=ur(\"{\",!1),_=\"}\",tt=ur(\"}\",!1),Ne=function(N,J){return{type:\"group\",group:N,args:J}},ke=function(N,J){return{type:\"command\",args:J,envs:N}},be=function(N){return{type:\"envs\",envs:N}},je=function(N){return N},Re=function(N){return N},ct=/^[0-9]/,Me=zi([[\"0\",\"9\"]],!1,!1),P=function(N,J,re){return{type:\"redirection\",subtype:J,fd:N!==null?parseInt(N):null,args:[re]}},w=\">>\",b=ur(\">>\",!1),y=\">&\",F=ur(\">&\",!1),z=\">\",Z=ur(\">\",!1),$=\"<<<\",se=ur(\"<<<\",!1),xe=\"<&\",Fe=ur(\"<&\",!1),ut=\"<\",Ct=ur(\"<\",!1),qt=function(N){return{type:\"argument\",segments:[].concat(...N)}},ir=function(N){return N},Pt=\"$'\",dn=ur(\"$'\",!1),Pr=\"'\",Ir=ur(\"'\",!1),Or=function(N){return[{type:\"text\",text:N}]},on='\"\"',li=ur('\"\"',!1),So=function(){return{type:\"text\",text:\"\"}},ns='\"',so=ur('\"',!1),Do=function(N){return N},ji=function(N){return{type:\"arithmetic\",arithmetic:N,quoted:!0}},oo=function(N){return{type:\"shell\",shell:N,quoted:!0}},bo=function(N){return{type:\"variable\",...N,quoted:!0}},RA=function(N){return{type:\"text\",text:N}},hf=function(N){return{type:\"arithmetic\",arithmetic:N,quoted:!1}},hh=function(N){return{type:\"shell\",shell:N,quoted:!1}},gh=function(N){return{type:\"variable\",...N,quoted:!1}},ao=function(N){return{type:\"glob\",pattern:N}},Gn=/^[^']/,Ns=zi([\"'\"],!0,!1),lo=function(N){return N.join(\"\")},iu=/^[^$\"]/,su=zi([\"$\",'\"'],!0,!1),ou=`\\\\\n`,TA=ur(`\\\\\n`,!1),FA=function(){return\"\"},ua=\"\\\\\",fa=ur(\"\\\\\",!1),NA=/^[\\\\$\"`]/,gr=zi([\"\\\\\",\"$\",'\"',\"`\"],!1,!1),Po=function(N){return N},Ue=\"\\\\a\",au=ur(\"\\\\a\",!1),Cr=function(){return\"a\"},gf=\"\\\\b\",OA=ur(\"\\\\b\",!1),LA=function(){return\"\\b\"},lu=/^[Ee]/,cu=zi([\"E\",\"e\"],!1,!1),ac=function(){return\"\\x1B\"},we=\"\\\\f\",Nt=ur(\"\\\\f\",!1),lc=function(){return\"\\f\"},Oi=\"\\\\n\",co=ur(\"\\\\n\",!1),Tt=function(){return`\n`},Qn=\"\\\\r\",Aa=ur(\"\\\\r\",!1),Gi=function(){return\"\\r\"},Li=\"\\\\t\",ja=ur(\"\\\\t\",!1),mn=function(){return\"\t\"},Zn=\"\\\\v\",uu=ur(\"\\\\v\",!1),dh=function(){return\"\\v\"},Ga=/^[\\\\'\"?]/,qa=zi([\"\\\\\",\"'\",'\"',\"?\"],!1,!1),Wa=function(N){return String.fromCharCode(parseInt(N,16))},$e=\"\\\\x\",Va=ur(\"\\\\x\",!1),df=\"\\\\u\",cc=ur(\"\\\\u\",!1),vn=\"\\\\U\",pa=ur(\"\\\\U\",!1),MA=function(N){return String.fromCodePoint(parseInt(N,16))},UA=/^[0-7]/,ha=zi([[\"0\",\"7\"]],!1,!1),xl=/^[0-9a-fA-f]/,Mt=zi([[\"0\",\"9\"],[\"a\",\"f\"],[\"A\",\"f\"]],!1,!1),Rn=If(),ga=\"{}\",Ya=ur(\"{}\",!1),is=function(){return\"{}\"},uc=\"-\",fu=ur(\"-\",!1),fc=\"+\",Ka=ur(\"+\",!1),Mi=\".\",Bs=ur(\".\",!1),kl=function(N,J,re){return{type:\"number\",value:(N===\"-\"?-1:1)*parseFloat(J.join(\"\")+\".\"+re.join(\"\"))}},mf=function(N,J){return{type:\"number\",value:(N===\"-\"?-1:1)*parseInt(J.join(\"\"))}},Ac=function(N){return{type:\"variable\",...N}},Bi=function(N){return{type:\"variable\",name:N}},Tn=function(N){return N},pc=\"*\",Je=ur(\"*\",!1),ot=\"/\",St=ur(\"/\",!1),lr=function(N,J,re){return{type:J===\"*\"?\"multiplication\":\"division\",right:re}},ee=function(N,J){return J.reduce((re,ge)=>({left:re,...ge}),N)},ye=function(N,J,re){return{type:J===\"+\"?\"addition\":\"subtraction\",right:re}},Oe=\"$((\",mt=ur(\"$((\",!1),Et=\"))\",bt=ur(\"))\",!1),tr=function(N){return N},pn=\"$(\",ci=ur(\"$(\",!1),qi=function(N){return N},Fn=\"${\",Ja=ur(\"${\",!1),Iy=\":-\",q1=ur(\":-\",!1),xo=function(N,J){return{name:N,defaultValue:J}},Cy=\":-}\",mh=ur(\":-}\",!1),W1=function(N){return{name:N,defaultValue:[]}},ko=\":+\",yh=ur(\":+\",!1),Eh=function(N,J){return{name:N,alternativeValue:J}},Au=\":+}\",Ih=ur(\":+}\",!1),Rg=function(N){return{name:N,alternativeValue:[]}},Tg=function(N){return{name:N}},Fg=\"$\",wy=ur(\"$\",!1),yf=function(N){return t.isGlobPattern(N)},Qo=function(N){return N},Ql=/^[a-zA-Z0-9_]/,Ch=zi([[\"a\",\"z\"],[\"A\",\"Z\"],[\"0\",\"9\"],\"_\"],!1,!1),Ng=function(){return Dy()},Rl=/^[$@*?#a-zA-Z0-9_\\-]/,Tl=zi([\"$\",\"@\",\"*\",\"?\",\"#\",[\"a\",\"z\"],[\"A\",\"Z\"],[\"0\",\"9\"],\"_\",\"-\"],!1,!1),By=/^[()}<>$|&; \\t\"']/,_A=zi([\"(\",\")\",\"}\",\"<\",\">\",\"$\",\"|\",\"&\",\";\",\" \",\"\t\",'\"',\"'\"],!1,!1),vy=/^[<>&; \\t\"']/,Sy=zi([\"<\",\">\",\"&\",\";\",\" \",\"\t\",'\"',\"'\"],!1,!1),HA=/^[ \\t]/,jA=zi([\" \",\"\t\"],!1,!1),W=0,xt=0,GA=[{line:1,column:1}],Ro=0,Ef=[],yt=0,pu;if(\"startRule\"in t){if(!(t.startRule in s))throw new Error(`Can't start parsing from rule \"`+t.startRule+'\".');a=s[t.startRule]}function Dy(){return e.substring(xt,W)}function Og(){return Cf(xt,W)}function V1(N,J){throw J=J!==void 0?J:Cf(xt,W),qA([Lg(N)],e.substring(xt,W),J)}function wh(N,J){throw J=J!==void 0?J:Cf(xt,W),mi(N,J)}function ur(N,J){return{type:\"literal\",text:N,ignoreCase:J}}function zi(N,J,re){return{type:\"class\",parts:N,inverted:J,ignoreCase:re}}function If(){return{type:\"any\"}}function za(){return{type:\"end\"}}function Lg(N){return{type:\"other\",description:N}}function hu(N){var J=GA[N],re;if(J)return J;for(re=N-1;!GA[re];)re--;for(J=GA[re],J={line:J.line,column:J.column};re<N;)e.charCodeAt(re)===10?(J.line++,J.column=1):J.column++,re++;return GA[N]=J,J}function Cf(N,J){var re=hu(N),ge=hu(J);return{start:{offset:N,line:re.line,column:re.column},end:{offset:J,line:ge.line,column:ge.column}}}function wt(N){W<Ro||(W>Ro&&(Ro=W,Ef=[]),Ef.push(N))}function mi(N,J){return new Cd(N,null,null,J)}function qA(N,J,re){return new Cd(Cd.buildMessage(N,J),N,J,re)}function Za(){var N,J,re;for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();return J!==r?(re=da(),re===r&&(re=null),re!==r?(xt=N,J=n(re),N=J):(W=N,N=r)):(W=N,N=r),N}function da(){var N,J,re,ge,Ke;if(N=W,J=Bh(),J!==r){for(re=[],ge=kt();ge!==r;)re.push(ge),ge=kt();re!==r?(ge=Mg(),ge!==r?(Ke=Xa(),Ke===r&&(Ke=null),Ke!==r?(xt=N,J=c(J,ge,Ke),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r)}else W=N,N=r;if(N===r)if(N=W,J=Bh(),J!==r){for(re=[],ge=kt();ge!==r;)re.push(ge),ge=kt();re!==r?(ge=Mg(),ge===r&&(ge=null),ge!==r?(xt=N,J=f(J,ge),N=J):(W=N,N=r)):(W=N,N=r)}else W=N,N=r;return N}function Xa(){var N,J,re,ge,Ke;for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(re=da(),re!==r){for(ge=[],Ke=kt();Ke!==r;)ge.push(Ke),Ke=kt();ge!==r?(xt=N,J=p(re),N=J):(W=N,N=r)}else W=N,N=r;else W=N,N=r;return N}function Mg(){var N;return e.charCodeAt(W)===59?(N=h,W++):(N=r,yt===0&&wt(E)),N===r&&(e.charCodeAt(W)===38?(N=C,W++):(N=r,yt===0&&wt(S))),N}function Bh(){var N,J,re;return N=W,J=WA(),J!==r?(re=Ug(),re===r&&(re=null),re!==r?(xt=N,J=x(J,re),N=J):(W=N,N=r)):(W=N,N=r),N}function Ug(){var N,J,re,ge,Ke,pt,dr;for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(re=by(),re!==r){for(ge=[],Ke=kt();Ke!==r;)ge.push(Ke),Ke=kt();if(ge!==r)if(Ke=Bh(),Ke!==r){for(pt=[],dr=kt();dr!==r;)pt.push(dr),dr=kt();pt!==r?(xt=N,J=I(re,Ke),N=J):(W=N,N=r)}else W=N,N=r;else W=N,N=r}else W=N,N=r;else W=N,N=r;return N}function by(){var N;return e.substr(W,2)===T?(N=T,W+=2):(N=r,yt===0&&wt(O)),N===r&&(e.substr(W,2)===U?(N=U,W+=2):(N=r,yt===0&&wt(Y))),N}function WA(){var N,J,re;return N=W,J=wf(),J!==r?(re=_g(),re===r&&(re=null),re!==r?(xt=N,J=te(J,re),N=J):(W=N,N=r)):(W=N,N=r),N}function _g(){var N,J,re,ge,Ke,pt,dr;for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(re=gu(),re!==r){for(ge=[],Ke=kt();Ke!==r;)ge.push(Ke),Ke=kt();if(ge!==r)if(Ke=WA(),Ke!==r){for(pt=[],dr=kt();dr!==r;)pt.push(dr),dr=kt();pt!==r?(xt=N,J=ie(re,Ke),N=J):(W=N,N=r)}else W=N,N=r;else W=N,N=r}else W=N,N=r;else W=N,N=r;return N}function gu(){var N;return e.substr(W,2)===ue?(N=ue,W+=2):(N=r,yt===0&&wt(ae)),N===r&&(e.charCodeAt(W)===124?(N=de,W++):(N=r,yt===0&&wt(Ae))),N}function du(){var N,J,re,ge,Ke,pt;if(N=W,J=Dh(),J!==r)if(e.charCodeAt(W)===61?(re=Ce,W++):(re=r,yt===0&&wt(Ee)),re!==r)if(ge=VA(),ge!==r){for(Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();Ke!==r?(xt=N,J=g(J,ge),N=J):(W=N,N=r)}else W=N,N=r;else W=N,N=r;else W=N,N=r;if(N===r)if(N=W,J=Dh(),J!==r)if(e.charCodeAt(W)===61?(re=Ce,W++):(re=r,yt===0&&wt(Ee)),re!==r){for(ge=[],Ke=kt();Ke!==r;)ge.push(Ke),Ke=kt();ge!==r?(xt=N,J=Se(J),N=J):(W=N,N=r)}else W=N,N=r;else W=N,N=r;return N}function wf(){var N,J,re,ge,Ke,pt,dr,vr,_n,yi,vs;for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(e.charCodeAt(W)===40?(re=Be,W++):(re=r,yt===0&&wt(me)),re!==r){for(ge=[],Ke=kt();Ke!==r;)ge.push(Ke),Ke=kt();if(ge!==r)if(Ke=da(),Ke!==r){for(pt=[],dr=kt();dr!==r;)pt.push(dr),dr=kt();if(pt!==r)if(e.charCodeAt(W)===41?(dr=ce,W++):(dr=r,yt===0&&wt(X)),dr!==r){for(vr=[],_n=kt();_n!==r;)vr.push(_n),_n=kt();if(vr!==r){for(_n=[],yi=qn();yi!==r;)_n.push(yi),yi=qn();if(_n!==r){for(yi=[],vs=kt();vs!==r;)yi.push(vs),vs=kt();yi!==r?(xt=N,J=De(Ke,_n),N=J):(W=N,N=r)}else W=N,N=r}else W=N,N=r}else W=N,N=r;else W=N,N=r}else W=N,N=r;else W=N,N=r}else W=N,N=r;else W=N,N=r;if(N===r){for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r)if(e.charCodeAt(W)===123?(re=Qe,W++):(re=r,yt===0&&wt(it)),re!==r){for(ge=[],Ke=kt();Ke!==r;)ge.push(Ke),Ke=kt();if(ge!==r)if(Ke=da(),Ke!==r){for(pt=[],dr=kt();dr!==r;)pt.push(dr),dr=kt();if(pt!==r)if(e.charCodeAt(W)===125?(dr=_,W++):(dr=r,yt===0&&wt(tt)),dr!==r){for(vr=[],_n=kt();_n!==r;)vr.push(_n),_n=kt();if(vr!==r){for(_n=[],yi=qn();yi!==r;)_n.push(yi),yi=qn();if(_n!==r){for(yi=[],vs=kt();vs!==r;)yi.push(vs),vs=kt();yi!==r?(xt=N,J=Ne(Ke,_n),N=J):(W=N,N=r)}else W=N,N=r}else W=N,N=r}else W=N,N=r;else W=N,N=r}else W=N,N=r;else W=N,N=r}else W=N,N=r;else W=N,N=r;if(N===r){for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r){for(re=[],ge=du();ge!==r;)re.push(ge),ge=du();if(re!==r){for(ge=[],Ke=kt();Ke!==r;)ge.push(Ke),Ke=kt();if(ge!==r){if(Ke=[],pt=mu(),pt!==r)for(;pt!==r;)Ke.push(pt),pt=mu();else Ke=r;if(Ke!==r){for(pt=[],dr=kt();dr!==r;)pt.push(dr),dr=kt();pt!==r?(xt=N,J=ke(re,Ke),N=J):(W=N,N=r)}else W=N,N=r}else W=N,N=r}else W=N,N=r}else W=N,N=r;if(N===r){for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r){if(re=[],ge=du(),ge!==r)for(;ge!==r;)re.push(ge),ge=du();else re=r;if(re!==r){for(ge=[],Ke=kt();Ke!==r;)ge.push(Ke),Ke=kt();ge!==r?(xt=N,J=be(re),N=J):(W=N,N=r)}else W=N,N=r}else W=N,N=r}}}return N}function Os(){var N,J,re,ge,Ke;for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r){if(re=[],ge=Pi(),ge!==r)for(;ge!==r;)re.push(ge),ge=Pi();else re=r;if(re!==r){for(ge=[],Ke=kt();Ke!==r;)ge.push(Ke),Ke=kt();ge!==r?(xt=N,J=je(re),N=J):(W=N,N=r)}else W=N,N=r}else W=N,N=r;return N}function mu(){var N,J,re;for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();if(J!==r?(re=qn(),re!==r?(xt=N,J=Re(re),N=J):(W=N,N=r)):(W=N,N=r),N===r){for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();J!==r?(re=Pi(),re!==r?(xt=N,J=Re(re),N=J):(W=N,N=r)):(W=N,N=r)}return N}function qn(){var N,J,re,ge,Ke;for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();return J!==r?(ct.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Me)),re===r&&(re=null),re!==r?(ge=ss(),ge!==r?(Ke=Pi(),Ke!==r?(xt=N,J=P(re,ge,Ke),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N}function ss(){var N;return e.substr(W,2)===w?(N=w,W+=2):(N=r,yt===0&&wt(b)),N===r&&(e.substr(W,2)===y?(N=y,W+=2):(N=r,yt===0&&wt(F)),N===r&&(e.charCodeAt(W)===62?(N=z,W++):(N=r,yt===0&&wt(Z)),N===r&&(e.substr(W,3)===$?(N=$,W+=3):(N=r,yt===0&&wt(se)),N===r&&(e.substr(W,2)===xe?(N=xe,W+=2):(N=r,yt===0&&wt(Fe)),N===r&&(e.charCodeAt(W)===60?(N=ut,W++):(N=r,yt===0&&wt(Ct))))))),N}function Pi(){var N,J,re;for(N=W,J=[],re=kt();re!==r;)J.push(re),re=kt();return J!==r?(re=VA(),re!==r?(xt=N,J=Re(re),N=J):(W=N,N=r)):(W=N,N=r),N}function VA(){var N,J,re;if(N=W,J=[],re=Bf(),re!==r)for(;re!==r;)J.push(re),re=Bf();else J=r;return J!==r&&(xt=N,J=qt(J)),N=J,N}function Bf(){var N,J;return N=W,J=yn(),J!==r&&(xt=N,J=ir(J)),N=J,N===r&&(N=W,J=Hg(),J!==r&&(xt=N,J=ir(J)),N=J,N===r&&(N=W,J=jg(),J!==r&&(xt=N,J=ir(J)),N=J,N===r&&(N=W,J=os(),J!==r&&(xt=N,J=ir(J)),N=J))),N}function yn(){var N,J,re,ge;return N=W,e.substr(W,2)===Pt?(J=Pt,W+=2):(J=r,yt===0&&wt(dn)),J!==r?(re=En(),re!==r?(e.charCodeAt(W)===39?(ge=Pr,W++):(ge=r,yt===0&&wt(Ir)),ge!==r?(xt=N,J=Or(re),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N}function Hg(){var N,J,re,ge;return N=W,e.charCodeAt(W)===39?(J=Pr,W++):(J=r,yt===0&&wt(Ir)),J!==r?(re=vf(),re!==r?(e.charCodeAt(W)===39?(ge=Pr,W++):(ge=r,yt===0&&wt(Ir)),ge!==r?(xt=N,J=Or(re),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N}function jg(){var N,J,re,ge;if(N=W,e.substr(W,2)===on?(J=on,W+=2):(J=r,yt===0&&wt(li)),J!==r&&(xt=N,J=So()),N=J,N===r)if(N=W,e.charCodeAt(W)===34?(J=ns,W++):(J=r,yt===0&&wt(so)),J!==r){for(re=[],ge=Fl();ge!==r;)re.push(ge),ge=Fl();re!==r?(e.charCodeAt(W)===34?(ge=ns,W++):(ge=r,yt===0&&wt(so)),ge!==r?(xt=N,J=Do(re),N=J):(W=N,N=r)):(W=N,N=r)}else W=N,N=r;return N}function os(){var N,J,re;if(N=W,J=[],re=To(),re!==r)for(;re!==r;)J.push(re),re=To();else J=r;return J!==r&&(xt=N,J=Do(J)),N=J,N}function Fl(){var N,J;return N=W,J=Xr(),J!==r&&(xt=N,J=ji(J)),N=J,N===r&&(N=W,J=Sh(),J!==r&&(xt=N,J=oo(J)),N=J,N===r&&(N=W,J=KA(),J!==r&&(xt=N,J=bo(J)),N=J,N===r&&(N=W,J=Sf(),J!==r&&(xt=N,J=RA(J)),N=J))),N}function To(){var N,J;return N=W,J=Xr(),J!==r&&(xt=N,J=hf(J)),N=J,N===r&&(N=W,J=Sh(),J!==r&&(xt=N,J=hh(J)),N=J,N===r&&(N=W,J=KA(),J!==r&&(xt=N,J=gh(J)),N=J,N===r&&(N=W,J=Py(),J!==r&&(xt=N,J=ao(J)),N=J,N===r&&(N=W,J=vh(),J!==r&&(xt=N,J=RA(J)),N=J)))),N}function vf(){var N,J,re;for(N=W,J=[],Gn.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Ns));re!==r;)J.push(re),Gn.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Ns));return J!==r&&(xt=N,J=lo(J)),N=J,N}function Sf(){var N,J,re;if(N=W,J=[],re=Nl(),re===r&&(iu.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(su))),re!==r)for(;re!==r;)J.push(re),re=Nl(),re===r&&(iu.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(su)));else J=r;return J!==r&&(xt=N,J=lo(J)),N=J,N}function Nl(){var N,J,re;return N=W,e.substr(W,2)===ou?(J=ou,W+=2):(J=r,yt===0&&wt(TA)),J!==r&&(xt=N,J=FA()),N=J,N===r&&(N=W,e.charCodeAt(W)===92?(J=ua,W++):(J=r,yt===0&&wt(fa)),J!==r?(NA.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(gr)),re!==r?(xt=N,J=Po(re),N=J):(W=N,N=r)):(W=N,N=r)),N}function En(){var N,J,re;for(N=W,J=[],re=Fo(),re===r&&(Gn.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Ns)));re!==r;)J.push(re),re=Fo(),re===r&&(Gn.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Ns)));return J!==r&&(xt=N,J=lo(J)),N=J,N}function Fo(){var N,J,re;return N=W,e.substr(W,2)===Ue?(J=Ue,W+=2):(J=r,yt===0&&wt(au)),J!==r&&(xt=N,J=Cr()),N=J,N===r&&(N=W,e.substr(W,2)===gf?(J=gf,W+=2):(J=r,yt===0&&wt(OA)),J!==r&&(xt=N,J=LA()),N=J,N===r&&(N=W,e.charCodeAt(W)===92?(J=ua,W++):(J=r,yt===0&&wt(fa)),J!==r?(lu.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(cu)),re!==r?(xt=N,J=ac(),N=J):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===we?(J=we,W+=2):(J=r,yt===0&&wt(Nt)),J!==r&&(xt=N,J=lc()),N=J,N===r&&(N=W,e.substr(W,2)===Oi?(J=Oi,W+=2):(J=r,yt===0&&wt(co)),J!==r&&(xt=N,J=Tt()),N=J,N===r&&(N=W,e.substr(W,2)===Qn?(J=Qn,W+=2):(J=r,yt===0&&wt(Aa)),J!==r&&(xt=N,J=Gi()),N=J,N===r&&(N=W,e.substr(W,2)===Li?(J=Li,W+=2):(J=r,yt===0&&wt(ja)),J!==r&&(xt=N,J=mn()),N=J,N===r&&(N=W,e.substr(W,2)===Zn?(J=Zn,W+=2):(J=r,yt===0&&wt(uu)),J!==r&&(xt=N,J=dh()),N=J,N===r&&(N=W,e.charCodeAt(W)===92?(J=ua,W++):(J=r,yt===0&&wt(fa)),J!==r?(Ga.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(qa)),re!==r?(xt=N,J=Po(re),N=J):(W=N,N=r)):(W=N,N=r),N===r&&(N=yu()))))))))),N}function yu(){var N,J,re,ge,Ke,pt,dr,vr,_n,yi,vs,JA;return N=W,e.charCodeAt(W)===92?(J=ua,W++):(J=r,yt===0&&wt(fa)),J!==r?(re=ma(),re!==r?(xt=N,J=Wa(re),N=J):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===$e?(J=$e,W+=2):(J=r,yt===0&&wt(Va)),J!==r?(re=W,ge=W,Ke=ma(),Ke!==r?(pt=Ls(),pt!==r?(Ke=[Ke,pt],ge=Ke):(W=ge,ge=r)):(W=ge,ge=r),ge===r&&(ge=ma()),ge!==r?re=e.substring(re,W):re=ge,re!==r?(xt=N,J=Wa(re),N=J):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===df?(J=df,W+=2):(J=r,yt===0&&wt(cc)),J!==r?(re=W,ge=W,Ke=Ls(),Ke!==r?(pt=Ls(),pt!==r?(dr=Ls(),dr!==r?(vr=Ls(),vr!==r?(Ke=[Ke,pt,dr,vr],ge=Ke):(W=ge,ge=r)):(W=ge,ge=r)):(W=ge,ge=r)):(W=ge,ge=r),ge!==r?re=e.substring(re,W):re=ge,re!==r?(xt=N,J=Wa(re),N=J):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===vn?(J=vn,W+=2):(J=r,yt===0&&wt(pa)),J!==r?(re=W,ge=W,Ke=Ls(),Ke!==r?(pt=Ls(),pt!==r?(dr=Ls(),dr!==r?(vr=Ls(),vr!==r?(_n=Ls(),_n!==r?(yi=Ls(),yi!==r?(vs=Ls(),vs!==r?(JA=Ls(),JA!==r?(Ke=[Ke,pt,dr,vr,_n,yi,vs,JA],ge=Ke):(W=ge,ge=r)):(W=ge,ge=r)):(W=ge,ge=r)):(W=ge,ge=r)):(W=ge,ge=r)):(W=ge,ge=r)):(W=ge,ge=r)):(W=ge,ge=r),ge!==r?re=e.substring(re,W):re=ge,re!==r?(xt=N,J=MA(re),N=J):(W=N,N=r)):(W=N,N=r)))),N}function ma(){var N;return UA.test(e.charAt(W))?(N=e.charAt(W),W++):(N=r,yt===0&&wt(ha)),N}function Ls(){var N;return xl.test(e.charAt(W))?(N=e.charAt(W),W++):(N=r,yt===0&&wt(Mt)),N}function vh(){var N,J,re,ge,Ke;if(N=W,J=[],re=W,e.charCodeAt(W)===92?(ge=ua,W++):(ge=r,yt===0&&wt(fa)),ge!==r?(e.length>W?(Ke=e.charAt(W),W++):(Ke=r,yt===0&&wt(Rn)),Ke!==r?(xt=re,ge=Po(Ke),re=ge):(W=re,re=r)):(W=re,re=r),re===r&&(re=W,e.substr(W,2)===ga?(ge=ga,W+=2):(ge=r,yt===0&&wt(Ya)),ge!==r&&(xt=re,ge=is()),re=ge,re===r&&(re=W,ge=W,yt++,Ke=xy(),yt--,Ke===r?ge=void 0:(W=ge,ge=r),ge!==r?(e.length>W?(Ke=e.charAt(W),W++):(Ke=r,yt===0&&wt(Rn)),Ke!==r?(xt=re,ge=Po(Ke),re=ge):(W=re,re=r)):(W=re,re=r))),re!==r)for(;re!==r;)J.push(re),re=W,e.charCodeAt(W)===92?(ge=ua,W++):(ge=r,yt===0&&wt(fa)),ge!==r?(e.length>W?(Ke=e.charAt(W),W++):(Ke=r,yt===0&&wt(Rn)),Ke!==r?(xt=re,ge=Po(Ke),re=ge):(W=re,re=r)):(W=re,re=r),re===r&&(re=W,e.substr(W,2)===ga?(ge=ga,W+=2):(ge=r,yt===0&&wt(Ya)),ge!==r&&(xt=re,ge=is()),re=ge,re===r&&(re=W,ge=W,yt++,Ke=xy(),yt--,Ke===r?ge=void 0:(W=ge,ge=r),ge!==r?(e.length>W?(Ke=e.charAt(W),W++):(Ke=r,yt===0&&wt(Rn)),Ke!==r?(xt=re,ge=Po(Ke),re=ge):(W=re,re=r)):(W=re,re=r)));else J=r;return J!==r&&(xt=N,J=lo(J)),N=J,N}function YA(){var N,J,re,ge,Ke,pt;if(N=W,e.charCodeAt(W)===45?(J=uc,W++):(J=r,yt===0&&wt(fu)),J===r&&(e.charCodeAt(W)===43?(J=fc,W++):(J=r,yt===0&&wt(Ka))),J===r&&(J=null),J!==r){if(re=[],ct.test(e.charAt(W))?(ge=e.charAt(W),W++):(ge=r,yt===0&&wt(Me)),ge!==r)for(;ge!==r;)re.push(ge),ct.test(e.charAt(W))?(ge=e.charAt(W),W++):(ge=r,yt===0&&wt(Me));else re=r;if(re!==r)if(e.charCodeAt(W)===46?(ge=Mi,W++):(ge=r,yt===0&&wt(Bs)),ge!==r){if(Ke=[],ct.test(e.charAt(W))?(pt=e.charAt(W),W++):(pt=r,yt===0&&wt(Me)),pt!==r)for(;pt!==r;)Ke.push(pt),ct.test(e.charAt(W))?(pt=e.charAt(W),W++):(pt=r,yt===0&&wt(Me));else Ke=r;Ke!==r?(xt=N,J=kl(J,re,Ke),N=J):(W=N,N=r)}else W=N,N=r;else W=N,N=r}else W=N,N=r;if(N===r){if(N=W,e.charCodeAt(W)===45?(J=uc,W++):(J=r,yt===0&&wt(fu)),J===r&&(e.charCodeAt(W)===43?(J=fc,W++):(J=r,yt===0&&wt(Ka))),J===r&&(J=null),J!==r){if(re=[],ct.test(e.charAt(W))?(ge=e.charAt(W),W++):(ge=r,yt===0&&wt(Me)),ge!==r)for(;ge!==r;)re.push(ge),ct.test(e.charAt(W))?(ge=e.charAt(W),W++):(ge=r,yt===0&&wt(Me));else re=r;re!==r?(xt=N,J=mf(J,re),N=J):(W=N,N=r)}else W=N,N=r;if(N===r&&(N=W,J=KA(),J!==r&&(xt=N,J=Ac(J)),N=J,N===r&&(N=W,J=hc(),J!==r&&(xt=N,J=Bi(J)),N=J,N===r)))if(N=W,e.charCodeAt(W)===40?(J=Be,W++):(J=r,yt===0&&wt(me)),J!==r){for(re=[],ge=kt();ge!==r;)re.push(ge),ge=kt();if(re!==r)if(ge=uo(),ge!==r){for(Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();Ke!==r?(e.charCodeAt(W)===41?(pt=ce,W++):(pt=r,yt===0&&wt(X)),pt!==r?(xt=N,J=Tn(ge),N=J):(W=N,N=r)):(W=N,N=r)}else W=N,N=r;else W=N,N=r}else W=N,N=r}return N}function Df(){var N,J,re,ge,Ke,pt,dr,vr;if(N=W,J=YA(),J!==r){for(re=[],ge=W,Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();if(Ke!==r)if(e.charCodeAt(W)===42?(pt=pc,W++):(pt=r,yt===0&&wt(Je)),pt===r&&(e.charCodeAt(W)===47?(pt=ot,W++):(pt=r,yt===0&&wt(St))),pt!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=YA(),vr!==r?(xt=ge,Ke=lr(J,pt,vr),ge=Ke):(W=ge,ge=r)):(W=ge,ge=r)}else W=ge,ge=r;else W=ge,ge=r;for(;ge!==r;){for(re.push(ge),ge=W,Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();if(Ke!==r)if(e.charCodeAt(W)===42?(pt=pc,W++):(pt=r,yt===0&&wt(Je)),pt===r&&(e.charCodeAt(W)===47?(pt=ot,W++):(pt=r,yt===0&&wt(St))),pt!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=YA(),vr!==r?(xt=ge,Ke=lr(J,pt,vr),ge=Ke):(W=ge,ge=r)):(W=ge,ge=r)}else W=ge,ge=r;else W=ge,ge=r}re!==r?(xt=N,J=ee(J,re),N=J):(W=N,N=r)}else W=N,N=r;return N}function uo(){var N,J,re,ge,Ke,pt,dr,vr;if(N=W,J=Df(),J!==r){for(re=[],ge=W,Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();if(Ke!==r)if(e.charCodeAt(W)===43?(pt=fc,W++):(pt=r,yt===0&&wt(Ka)),pt===r&&(e.charCodeAt(W)===45?(pt=uc,W++):(pt=r,yt===0&&wt(fu))),pt!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=Df(),vr!==r?(xt=ge,Ke=ye(J,pt,vr),ge=Ke):(W=ge,ge=r)):(W=ge,ge=r)}else W=ge,ge=r;else W=ge,ge=r;for(;ge!==r;){for(re.push(ge),ge=W,Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();if(Ke!==r)if(e.charCodeAt(W)===43?(pt=fc,W++):(pt=r,yt===0&&wt(Ka)),pt===r&&(e.charCodeAt(W)===45?(pt=uc,W++):(pt=r,yt===0&&wt(fu))),pt!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=Df(),vr!==r?(xt=ge,Ke=ye(J,pt,vr),ge=Ke):(W=ge,ge=r)):(W=ge,ge=r)}else W=ge,ge=r;else W=ge,ge=r}re!==r?(xt=N,J=ee(J,re),N=J):(W=N,N=r)}else W=N,N=r;return N}function Xr(){var N,J,re,ge,Ke,pt;if(N=W,e.substr(W,3)===Oe?(J=Oe,W+=3):(J=r,yt===0&&wt(mt)),J!==r){for(re=[],ge=kt();ge!==r;)re.push(ge),ge=kt();if(re!==r)if(ge=uo(),ge!==r){for(Ke=[],pt=kt();pt!==r;)Ke.push(pt),pt=kt();Ke!==r?(e.substr(W,2)===Et?(pt=Et,W+=2):(pt=r,yt===0&&wt(bt)),pt!==r?(xt=N,J=tr(ge),N=J):(W=N,N=r)):(W=N,N=r)}else W=N,N=r;else W=N,N=r}else W=N,N=r;return N}function Sh(){var N,J,re,ge;return N=W,e.substr(W,2)===pn?(J=pn,W+=2):(J=r,yt===0&&wt(ci)),J!==r?(re=da(),re!==r?(e.charCodeAt(W)===41?(ge=ce,W++):(ge=r,yt===0&&wt(X)),ge!==r?(xt=N,J=qi(re),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N}function KA(){var N,J,re,ge,Ke,pt;return N=W,e.substr(W,2)===Fn?(J=Fn,W+=2):(J=r,yt===0&&wt(Ja)),J!==r?(re=hc(),re!==r?(e.substr(W,2)===Iy?(ge=Iy,W+=2):(ge=r,yt===0&&wt(q1)),ge!==r?(Ke=Os(),Ke!==r?(e.charCodeAt(W)===125?(pt=_,W++):(pt=r,yt===0&&wt(tt)),pt!==r?(xt=N,J=xo(re,Ke),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===Fn?(J=Fn,W+=2):(J=r,yt===0&&wt(Ja)),J!==r?(re=hc(),re!==r?(e.substr(W,3)===Cy?(ge=Cy,W+=3):(ge=r,yt===0&&wt(mh)),ge!==r?(xt=N,J=W1(re),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===Fn?(J=Fn,W+=2):(J=r,yt===0&&wt(Ja)),J!==r?(re=hc(),re!==r?(e.substr(W,2)===ko?(ge=ko,W+=2):(ge=r,yt===0&&wt(yh)),ge!==r?(Ke=Os(),Ke!==r?(e.charCodeAt(W)===125?(pt=_,W++):(pt=r,yt===0&&wt(tt)),pt!==r?(xt=N,J=Eh(re,Ke),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===Fn?(J=Fn,W+=2):(J=r,yt===0&&wt(Ja)),J!==r?(re=hc(),re!==r?(e.substr(W,3)===Au?(ge=Au,W+=3):(ge=r,yt===0&&wt(Ih)),ge!==r?(xt=N,J=Rg(re),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.substr(W,2)===Fn?(J=Fn,W+=2):(J=r,yt===0&&wt(Ja)),J!==r?(re=hc(),re!==r?(e.charCodeAt(W)===125?(ge=_,W++):(ge=r,yt===0&&wt(tt)),ge!==r?(xt=N,J=Tg(re),N=J):(W=N,N=r)):(W=N,N=r)):(W=N,N=r),N===r&&(N=W,e.charCodeAt(W)===36?(J=Fg,W++):(J=r,yt===0&&wt(wy)),J!==r?(re=hc(),re!==r?(xt=N,J=Tg(re),N=J):(W=N,N=r)):(W=N,N=r)))))),N}function Py(){var N,J,re;return N=W,J=Gg(),J!==r?(xt=W,re=yf(J),re?re=void 0:re=r,re!==r?(xt=N,J=Qo(J),N=J):(W=N,N=r)):(W=N,N=r),N}function Gg(){var N,J,re,ge,Ke;if(N=W,J=[],re=W,ge=W,yt++,Ke=bh(),yt--,Ke===r?ge=void 0:(W=ge,ge=r),ge!==r?(e.length>W?(Ke=e.charAt(W),W++):(Ke=r,yt===0&&wt(Rn)),Ke!==r?(xt=re,ge=Po(Ke),re=ge):(W=re,re=r)):(W=re,re=r),re!==r)for(;re!==r;)J.push(re),re=W,ge=W,yt++,Ke=bh(),yt--,Ke===r?ge=void 0:(W=ge,ge=r),ge!==r?(e.length>W?(Ke=e.charAt(W),W++):(Ke=r,yt===0&&wt(Rn)),Ke!==r?(xt=re,ge=Po(Ke),re=ge):(W=re,re=r)):(W=re,re=r);else J=r;return J!==r&&(xt=N,J=lo(J)),N=J,N}function Dh(){var N,J,re;if(N=W,J=[],Ql.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Ch)),re!==r)for(;re!==r;)J.push(re),Ql.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Ch));else J=r;return J!==r&&(xt=N,J=Ng()),N=J,N}function hc(){var N,J,re;if(N=W,J=[],Rl.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Tl)),re!==r)for(;re!==r;)J.push(re),Rl.test(e.charAt(W))?(re=e.charAt(W),W++):(re=r,yt===0&&wt(Tl));else J=r;return J!==r&&(xt=N,J=Ng()),N=J,N}function xy(){var N;return By.test(e.charAt(W))?(N=e.charAt(W),W++):(N=r,yt===0&&wt(_A)),N}function bh(){var N;return vy.test(e.charAt(W))?(N=e.charAt(W),W++):(N=r,yt===0&&wt(Sy)),N}function kt(){var N,J;if(N=[],HA.test(e.charAt(W))?(J=e.charAt(W),W++):(J=r,yt===0&&wt(jA)),J!==r)for(;J!==r;)N.push(J),HA.test(e.charAt(W))?(J=e.charAt(W),W++):(J=r,yt===0&&wt(jA));else N=r;return N}if(pu=a(),pu!==r&&W===e.length)return pu;throw pu!==r&&W<e.length&&wt(za()),qA(Ef,Ro<e.length?e.charAt(Ro):null,Ro<e.length?Cf(Ro,Ro+1):Cf(Ro,Ro))}F$.exports={SyntaxError:Cd,parse:B6e}});function ux(e,t={isGlobPattern:()=>!1}){try{return(0,O$.parse)(e,t)}catch(r){throw r.location&&(r.message=r.message.replace(/(\\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function hE(e,{endSemicolon:t=!1}={}){return e.map(({command:r,type:s},a)=>`${fx(r)}${s===\";\"?a!==e.length-1||t?\";\":\"\":\" &\"}`).join(\" \")}function fx(e){return`${gE(e.chain)}${e.then?` ${SU(e.then)}`:\"\"}`}function SU(e){return`${e.type} ${fx(e.line)}`}function gE(e){return`${bU(e)}${e.then?` ${DU(e.then)}`:\"\"}`}function DU(e){return`${e.type} ${gE(e.chain)}`}function bU(e){switch(e.type){case\"command\":return`${e.envs.length>0?`${e.envs.map(t=>cx(t)).join(\" \")} `:\"\"}${e.args.map(t=>PU(t)).join(\" \")}`;case\"subshell\":return`(${hE(e.subshell)})${e.args.length>0?` ${e.args.map(t=>TB(t)).join(\" \")}`:\"\"}`;case\"group\":return`{ ${hE(e.group,{endSemicolon:!0})} }${e.args.length>0?` ${e.args.map(t=>TB(t)).join(\" \")}`:\"\"}`;case\"envs\":return e.envs.map(t=>cx(t)).join(\" \");default:throw new Error(`Unsupported command type:  \"${e.type}\"`)}}function cx(e){return`${e.name}=${e.args[0]?wd(e.args[0]):\"\"}`}function PU(e){switch(e.type){case\"redirection\":return TB(e);case\"argument\":return wd(e);default:throw new Error(`Unsupported argument type: \"${e.type}\"`)}}function TB(e){return`${e.subtype} ${e.args.map(t=>wd(t)).join(\" \")}`}function wd(e){return e.segments.map(t=>xU(t)).join(\"\")}function xU(e){let t=(s,a)=>a?`\"${s}\"`:s,r=s=>s===\"\"?\"''\":s.match(/[()}<>$|&;\"'\\n\\t ]/)?s.match(/['\\t\\p{C}]/u)?s.match(/'/)?`\"${s.replace(/[\"$\\t\\p{C}]/u,S6e)}\"`:`$'${s.replace(/[\\t\\p{C}]/u,M$)}'`:`'${s}'`:s;switch(e.type){case\"text\":return r(e.text);case\"glob\":return e.pattern;case\"shell\":return t(`$(${hE(e.shell)})`,e.quoted);case\"variable\":return t(typeof e.defaultValue>\"u\"?typeof e.alternativeValue>\"u\"?`\\${${e.name}}`:e.alternativeValue.length===0?`\\${${e.name}:+}`:`\\${${e.name}:+${e.alternativeValue.map(s=>wd(s)).join(\" \")}}`:e.defaultValue.length===0?`\\${${e.name}:-}`:`\\${${e.name}:-${e.defaultValue.map(s=>wd(s)).join(\" \")}}`,e.quoted);case\"arithmetic\":return`$(( ${Ax(e.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: \"${e.type}\"`)}}function Ax(e){let t=a=>{switch(a){case\"addition\":return\"+\";case\"subtraction\":return\"-\";case\"multiplication\":return\"*\";case\"division\":return\"/\";default:throw new Error(`Can't extract operator from arithmetic expression of type \"${a}\"`)}},r=(a,n)=>n?`( ${a} )`:a,s=a=>r(Ax(a),![\"number\",\"variable\"].includes(a.type));switch(e.type){case\"number\":return String(e.value);case\"variable\":return e.name;default:return`${s(e.left)} ${t(e.type)} ${s(e.right)}`}}var O$,L$,v6e,M$,S6e,U$=Ze(()=>{O$=et(N$());L$=new Map([[\"\\f\",\"\\\\f\"],[`\n`,\"\\\\n\"],[\"\\r\",\"\\\\r\"],[\"\t\",\"\\\\t\"],[\"\\v\",\"\\\\v\"],[\"\\0\",\"\\\\0\"]]),v6e=new Map([[\"\\\\\",\"\\\\\\\\\"],[\"$\",\"\\\\$\"],['\"','\\\\\"'],...Array.from(L$,([e,t])=>[e,`\"$'${t}'\"`])]),M$=e=>L$.get(e)??`\\\\x${e.charCodeAt(0).toString(16).padStart(2,\"0\")}`,S6e=e=>v6e.get(e)??`\"$'${M$(e)}'\"`});var H$=G((hPt,_$)=>{\"use strict\";function D6e(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}function Bd(e,t,r,s){this.message=e,this.expected=t,this.found=r,this.location=s,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,Bd)}D6e(Bd,Error);Bd.buildMessage=function(e,t){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",C;for(C=0;C<h.parts.length;C++)E+=h.parts[C]instanceof Array?n(h.parts[C][0])+\"-\"+n(h.parts[C][1]):n(h.parts[C]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function s(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function c(h){return r[h.type](h)}function f(h){var E=new Array(h.length),C,S;for(C=0;C<h.length;C++)E[C]=c(h[C]);if(E.sort(),E.length>0){for(C=1,S=1;C<E.length;C++)E[C-1]!==E[C]&&(E[S]=E[C],S++);E.length=S}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+f(e)+\" but \"+p(t)+\" found.\"};function b6e(e,t){t=t!==void 0?t:{};var r={},s={resolution:ke},a=ke,n=\"/\",c=Be(\"/\",!1),f=function(Me,P){return{from:Me,descriptor:P}},p=function(Me){return{descriptor:Me}},h=\"@\",E=Be(\"@\",!1),C=function(Me,P){return{fullName:Me,description:P}},S=function(Me){return{fullName:Me}},x=function(){return Ce()},I=/^[^\\/@]/,T=me([\"/\",\"@\"],!0,!1),O=/^[^\\/]/,U=me([\"/\"],!0,!1),Y=0,te=0,ie=[{line:1,column:1}],ue=0,ae=[],de=0,Ae;if(\"startRule\"in t){if(!(t.startRule in s))throw new Error(`Can't start parsing from rule \"`+t.startRule+'\".');a=s[t.startRule]}function Ce(){return e.substring(te,Y)}function Ee(){return it(te,Y)}function g(Me,P){throw P=P!==void 0?P:it(te,Y),Ne([De(Me)],e.substring(te,Y),P)}function Se(Me,P){throw P=P!==void 0?P:it(te,Y),tt(Me,P)}function Be(Me,P){return{type:\"literal\",text:Me,ignoreCase:P}}function me(Me,P,w){return{type:\"class\",parts:Me,inverted:P,ignoreCase:w}}function ce(){return{type:\"any\"}}function X(){return{type:\"end\"}}function De(Me){return{type:\"other\",description:Me}}function Qe(Me){var P=ie[Me],w;if(P)return P;for(w=Me-1;!ie[w];)w--;for(P=ie[w],P={line:P.line,column:P.column};w<Me;)e.charCodeAt(w)===10?(P.line++,P.column=1):P.column++,w++;return ie[Me]=P,P}function it(Me,P){var w=Qe(Me),b=Qe(P);return{start:{offset:Me,line:w.line,column:w.column},end:{offset:P,line:b.line,column:b.column}}}function _(Me){Y<ue||(Y>ue&&(ue=Y,ae=[]),ae.push(Me))}function tt(Me,P){return new Bd(Me,null,null,P)}function Ne(Me,P,w){return new Bd(Bd.buildMessage(Me,P),Me,P,w)}function ke(){var Me,P,w,b;return Me=Y,P=be(),P!==r?(e.charCodeAt(Y)===47?(w=n,Y++):(w=r,de===0&&_(c)),w!==r?(b=be(),b!==r?(te=Me,P=f(P,b),Me=P):(Y=Me,Me=r)):(Y=Me,Me=r)):(Y=Me,Me=r),Me===r&&(Me=Y,P=be(),P!==r&&(te=Me,P=p(P)),Me=P),Me}function be(){var Me,P,w,b;return Me=Y,P=je(),P!==r?(e.charCodeAt(Y)===64?(w=h,Y++):(w=r,de===0&&_(E)),w!==r?(b=ct(),b!==r?(te=Me,P=C(P,b),Me=P):(Y=Me,Me=r)):(Y=Me,Me=r)):(Y=Me,Me=r),Me===r&&(Me=Y,P=je(),P!==r&&(te=Me,P=S(P)),Me=P),Me}function je(){var Me,P,w,b,y;return Me=Y,e.charCodeAt(Y)===64?(P=h,Y++):(P=r,de===0&&_(E)),P!==r?(w=Re(),w!==r?(e.charCodeAt(Y)===47?(b=n,Y++):(b=r,de===0&&_(c)),b!==r?(y=Re(),y!==r?(te=Me,P=x(),Me=P):(Y=Me,Me=r)):(Y=Me,Me=r)):(Y=Me,Me=r)):(Y=Me,Me=r),Me===r&&(Me=Y,P=Re(),P!==r&&(te=Me,P=x()),Me=P),Me}function Re(){var Me,P,w;if(Me=Y,P=[],I.test(e.charAt(Y))?(w=e.charAt(Y),Y++):(w=r,de===0&&_(T)),w!==r)for(;w!==r;)P.push(w),I.test(e.charAt(Y))?(w=e.charAt(Y),Y++):(w=r,de===0&&_(T));else P=r;return P!==r&&(te=Me,P=x()),Me=P,Me}function ct(){var Me,P,w;if(Me=Y,P=[],O.test(e.charAt(Y))?(w=e.charAt(Y),Y++):(w=r,de===0&&_(U)),w!==r)for(;w!==r;)P.push(w),O.test(e.charAt(Y))?(w=e.charAt(Y),Y++):(w=r,de===0&&_(U));else P=r;return P!==r&&(te=Me,P=x()),Me=P,Me}if(Ae=a(),Ae!==r&&Y===e.length)return Ae;throw Ae!==r&&Y<e.length&&_(X()),Ne(ae,ue<e.length?e.charAt(ue):null,ue<e.length?it(ue,ue+1):it(ue,ue))}_$.exports={SyntaxError:Bd,parse:b6e}});function px(e){let t=e.match(/^\\*{1,2}\\/(.*)/);if(t)throw new Error(`The override for '${e}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${t[1]}' instead.`);try{return(0,j$.parse)(e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function hx(e){let t=\"\";return e.from&&(t+=e.from.fullName,e.from.description&&(t+=`@${e.from.description}`),t+=\"/\"),t+=e.descriptor.fullName,e.descriptor.description&&(t+=`@${e.descriptor.description}`),t}var j$,G$=Ze(()=>{j$=et(H$())});var Sd=G((dPt,vd)=>{\"use strict\";function q$(e){return typeof e>\"u\"||e===null}function P6e(e){return typeof e==\"object\"&&e!==null}function x6e(e){return Array.isArray(e)?e:q$(e)?[]:[e]}function k6e(e,t){var r,s,a,n;if(t)for(n=Object.keys(t),r=0,s=n.length;r<s;r+=1)a=n[r],e[a]=t[a];return e}function Q6e(e,t){var r=\"\",s;for(s=0;s<t;s+=1)r+=e;return r}function R6e(e){return e===0&&Number.NEGATIVE_INFINITY===1/e}vd.exports.isNothing=q$;vd.exports.isObject=P6e;vd.exports.toArray=x6e;vd.exports.repeat=Q6e;vd.exports.isNegativeZero=R6e;vd.exports.extend=k6e});var dE=G((mPt,W$)=>{\"use strict\";function FB(e,t){Error.call(this),this.name=\"YAMLException\",this.reason=e,this.mark=t,this.message=(this.reason||\"(unknown reason)\")+(this.mark?\" \"+this.mark.toString():\"\"),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||\"\"}FB.prototype=Object.create(Error.prototype);FB.prototype.constructor=FB;FB.prototype.toString=function(t){var r=this.name+\": \";return r+=this.reason||\"(unknown reason)\",!t&&this.mark&&(r+=\" \"+this.mark.toString()),r};W$.exports=FB});var K$=G((yPt,Y$)=>{\"use strict\";var V$=Sd();function kU(e,t,r,s,a){this.name=e,this.buffer=t,this.position=r,this.line=s,this.column=a}kU.prototype.getSnippet=function(t,r){var s,a,n,c,f;if(!this.buffer)return null;for(t=t||4,r=r||75,s=\"\",a=this.position;a>0&&`\\0\\r\n\\x85\\u2028\\u2029`.indexOf(this.buffer.charAt(a-1))===-1;)if(a-=1,this.position-a>r/2-1){s=\" ... \",a+=5;break}for(n=\"\",c=this.position;c<this.buffer.length&&`\\0\\r\n\\x85\\u2028\\u2029`.indexOf(this.buffer.charAt(c))===-1;)if(c+=1,c-this.position>r/2-1){n=\" ... \",c-=5;break}return f=this.buffer.slice(a,c),V$.repeat(\" \",t)+s+f+n+`\n`+V$.repeat(\" \",t+this.position-a+s.length)+\"^\"};kU.prototype.toString=function(t){var r,s=\"\";return this.name&&(s+='in \"'+this.name+'\" '),s+=\"at line \"+(this.line+1)+\", column \"+(this.column+1),t||(r=this.getSnippet(),r&&(s+=`:\n`+r)),s};Y$.exports=kU});var Ps=G((EPt,z$)=>{\"use strict\";var J$=dE(),T6e=[\"kind\",\"resolve\",\"construct\",\"instanceOf\",\"predicate\",\"represent\",\"defaultStyle\",\"styleAliases\"],F6e=[\"scalar\",\"sequence\",\"mapping\"];function N6e(e){var t={};return e!==null&&Object.keys(e).forEach(function(r){e[r].forEach(function(s){t[String(s)]=r})}),t}function O6e(e,t){if(t=t||{},Object.keys(t).forEach(function(r){if(T6e.indexOf(r)===-1)throw new J$('Unknown option \"'+r+'\" is met in definition of \"'+e+'\" YAML type.')}),this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(r){return r},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.defaultStyle=t.defaultStyle||null,this.styleAliases=N6e(t.styleAliases||null),F6e.indexOf(this.kind)===-1)throw new J$('Unknown kind \"'+this.kind+'\" is specified for \"'+e+'\" YAML type.')}z$.exports=O6e});var Dd=G((IPt,X$)=>{\"use strict\";var Z$=Sd(),gx=dE(),L6e=Ps();function QU(e,t,r){var s=[];return e.include.forEach(function(a){r=QU(a,t,r)}),e[t].forEach(function(a){r.forEach(function(n,c){n.tag===a.tag&&n.kind===a.kind&&s.push(c)}),r.push(a)}),r.filter(function(a,n){return s.indexOf(n)===-1})}function M6e(){var e={scalar:{},sequence:{},mapping:{},fallback:{}},t,r;function s(a){e[a.kind][a.tag]=e.fallback[a.tag]=a}for(t=0,r=arguments.length;t<r;t+=1)arguments[t].forEach(s);return e}function mE(e){this.include=e.include||[],this.implicit=e.implicit||[],this.explicit=e.explicit||[],this.implicit.forEach(function(t){if(t.loadKind&&t.loadKind!==\"scalar\")throw new gx(\"There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.\")}),this.compiledImplicit=QU(this,\"implicit\",[]),this.compiledExplicit=QU(this,\"explicit\",[]),this.compiledTypeMap=M6e(this.compiledImplicit,this.compiledExplicit)}mE.DEFAULT=null;mE.create=function(){var t,r;switch(arguments.length){case 1:t=mE.DEFAULT,r=arguments[0];break;case 2:t=arguments[0],r=arguments[1];break;default:throw new gx(\"Wrong number of arguments for Schema.create function\")}if(t=Z$.toArray(t),r=Z$.toArray(r),!t.every(function(s){return s instanceof mE}))throw new gx(\"Specified list of super schemas (or a single Schema object) contains a non-Schema object.\");if(!r.every(function(s){return s instanceof L6e}))throw new gx(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");return new mE({include:t,explicit:r})};X$.exports=mE});var eee=G((CPt,$$)=>{\"use strict\";var U6e=Ps();$$.exports=new U6e(\"tag:yaml.org,2002:str\",{kind:\"scalar\",construct:function(e){return e!==null?e:\"\"}})});var ree=G((wPt,tee)=>{\"use strict\";var _6e=Ps();tee.exports=new _6e(\"tag:yaml.org,2002:seq\",{kind:\"sequence\",construct:function(e){return e!==null?e:[]}})});var iee=G((BPt,nee)=>{\"use strict\";var H6e=Ps();nee.exports=new H6e(\"tag:yaml.org,2002:map\",{kind:\"mapping\",construct:function(e){return e!==null?e:{}}})});var dx=G((vPt,see)=>{\"use strict\";var j6e=Dd();see.exports=new j6e({explicit:[eee(),ree(),iee()]})});var aee=G((SPt,oee)=>{\"use strict\";var G6e=Ps();function q6e(e){if(e===null)return!0;var t=e.length;return t===1&&e===\"~\"||t===4&&(e===\"null\"||e===\"Null\"||e===\"NULL\")}function W6e(){return null}function V6e(e){return e===null}oee.exports=new G6e(\"tag:yaml.org,2002:null\",{kind:\"scalar\",resolve:q6e,construct:W6e,predicate:V6e,represent:{canonical:function(){return\"~\"},lowercase:function(){return\"null\"},uppercase:function(){return\"NULL\"},camelcase:function(){return\"Null\"}},defaultStyle:\"lowercase\"})});var cee=G((DPt,lee)=>{\"use strict\";var Y6e=Ps();function K6e(e){if(e===null)return!1;var t=e.length;return t===4&&(e===\"true\"||e===\"True\"||e===\"TRUE\")||t===5&&(e===\"false\"||e===\"False\"||e===\"FALSE\")}function J6e(e){return e===\"true\"||e===\"True\"||e===\"TRUE\"}function z6e(e){return Object.prototype.toString.call(e)===\"[object Boolean]\"}lee.exports=new Y6e(\"tag:yaml.org,2002:bool\",{kind:\"scalar\",resolve:K6e,construct:J6e,predicate:z6e,represent:{lowercase:function(e){return e?\"true\":\"false\"},uppercase:function(e){return e?\"TRUE\":\"FALSE\"},camelcase:function(e){return e?\"True\":\"False\"}},defaultStyle:\"lowercase\"})});var fee=G((bPt,uee)=>{\"use strict\";var Z6e=Sd(),X6e=Ps();function $6e(e){return 48<=e&&e<=57||65<=e&&e<=70||97<=e&&e<=102}function eGe(e){return 48<=e&&e<=55}function tGe(e){return 48<=e&&e<=57}function rGe(e){if(e===null)return!1;var t=e.length,r=0,s=!1,a;if(!t)return!1;if(a=e[r],(a===\"-\"||a===\"+\")&&(a=e[++r]),a===\"0\"){if(r+1===t)return!0;if(a=e[++r],a===\"b\"){for(r++;r<t;r++)if(a=e[r],a!==\"_\"){if(a!==\"0\"&&a!==\"1\")return!1;s=!0}return s&&a!==\"_\"}if(a===\"x\"){for(r++;r<t;r++)if(a=e[r],a!==\"_\"){if(!$6e(e.charCodeAt(r)))return!1;s=!0}return s&&a!==\"_\"}for(;r<t;r++)if(a=e[r],a!==\"_\"){if(!eGe(e.charCodeAt(r)))return!1;s=!0}return s&&a!==\"_\"}if(a===\"_\")return!1;for(;r<t;r++)if(a=e[r],a!==\"_\"){if(a===\":\")break;if(!tGe(e.charCodeAt(r)))return!1;s=!0}return!s||a===\"_\"?!1:a!==\":\"?!0:/^(:[0-5]?[0-9])+$/.test(e.slice(r))}function nGe(e){var t=e,r=1,s,a,n=[];return t.indexOf(\"_\")!==-1&&(t=t.replace(/_/g,\"\")),s=t[0],(s===\"-\"||s===\"+\")&&(s===\"-\"&&(r=-1),t=t.slice(1),s=t[0]),t===\"0\"?0:s===\"0\"?t[1]===\"b\"?r*parseInt(t.slice(2),2):t[1]===\"x\"?r*parseInt(t,16):r*parseInt(t,8):t.indexOf(\":\")!==-1?(t.split(\":\").forEach(function(c){n.unshift(parseInt(c,10))}),t=0,a=1,n.forEach(function(c){t+=c*a,a*=60}),r*t):r*parseInt(t,10)}function iGe(e){return Object.prototype.toString.call(e)===\"[object Number]\"&&e%1===0&&!Z6e.isNegativeZero(e)}uee.exports=new X6e(\"tag:yaml.org,2002:int\",{kind:\"scalar\",resolve:rGe,construct:nGe,predicate:iGe,represent:{binary:function(e){return e>=0?\"0b\"+e.toString(2):\"-0b\"+e.toString(2).slice(1)},octal:function(e){return e>=0?\"0\"+e.toString(8):\"-0\"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?\"0x\"+e.toString(16).toUpperCase():\"-0x\"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:\"decimal\",styleAliases:{binary:[2,\"bin\"],octal:[8,\"oct\"],decimal:[10,\"dec\"],hexadecimal:[16,\"hex\"]}})});var hee=G((PPt,pee)=>{\"use strict\";var Aee=Sd(),sGe=Ps(),oGe=new RegExp(\"^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\");function aGe(e){return!(e===null||!oGe.test(e)||e[e.length-1]===\"_\")}function lGe(e){var t,r,s,a;return t=e.replace(/_/g,\"\").toLowerCase(),r=t[0]===\"-\"?-1:1,a=[],\"+-\".indexOf(t[0])>=0&&(t=t.slice(1)),t===\".inf\"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===\".nan\"?NaN:t.indexOf(\":\")>=0?(t.split(\":\").forEach(function(n){a.unshift(parseFloat(n,10))}),t=0,s=1,a.forEach(function(n){t+=n*s,s*=60}),r*t):r*parseFloat(t,10)}var cGe=/^[-+]?[0-9]+e/;function uGe(e,t){var r;if(isNaN(e))switch(t){case\"lowercase\":return\".nan\";case\"uppercase\":return\".NAN\";case\"camelcase\":return\".NaN\"}else if(Number.POSITIVE_INFINITY===e)switch(t){case\"lowercase\":return\".inf\";case\"uppercase\":return\".INF\";case\"camelcase\":return\".Inf\"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case\"lowercase\":return\"-.inf\";case\"uppercase\":return\"-.INF\";case\"camelcase\":return\"-.Inf\"}else if(Aee.isNegativeZero(e))return\"-0.0\";return r=e.toString(10),cGe.test(r)?r.replace(\"e\",\".e\"):r}function fGe(e){return Object.prototype.toString.call(e)===\"[object Number]\"&&(e%1!==0||Aee.isNegativeZero(e))}pee.exports=new sGe(\"tag:yaml.org,2002:float\",{kind:\"scalar\",resolve:aGe,construct:lGe,predicate:fGe,represent:uGe,defaultStyle:\"lowercase\"})});var RU=G((xPt,gee)=>{\"use strict\";var AGe=Dd();gee.exports=new AGe({include:[dx()],implicit:[aee(),cee(),fee(),hee()]})});var TU=G((kPt,dee)=>{\"use strict\";var pGe=Dd();dee.exports=new pGe({include:[RU()]})});var Iee=G((QPt,Eee)=>{\"use strict\";var hGe=Ps(),mee=new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\"),yee=new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\\\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\\\.([0-9]*))?(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$\");function gGe(e){return e===null?!1:mee.exec(e)!==null||yee.exec(e)!==null}function dGe(e){var t,r,s,a,n,c,f,p=0,h=null,E,C,S;if(t=mee.exec(e),t===null&&(t=yee.exec(e)),t===null)throw new Error(\"Date resolve error\");if(r=+t[1],s=+t[2]-1,a=+t[3],!t[4])return new Date(Date.UTC(r,s,a));if(n=+t[4],c=+t[5],f=+t[6],t[7]){for(p=t[7].slice(0,3);p.length<3;)p+=\"0\";p=+p}return t[9]&&(E=+t[10],C=+(t[11]||0),h=(E*60+C)*6e4,t[9]===\"-\"&&(h=-h)),S=new Date(Date.UTC(r,s,a,n,c,f,p)),h&&S.setTime(S.getTime()-h),S}function mGe(e){return e.toISOString()}Eee.exports=new hGe(\"tag:yaml.org,2002:timestamp\",{kind:\"scalar\",resolve:gGe,construct:dGe,instanceOf:Date,represent:mGe})});var wee=G((RPt,Cee)=>{\"use strict\";var yGe=Ps();function EGe(e){return e===\"<<\"||e===null}Cee.exports=new yGe(\"tag:yaml.org,2002:merge\",{kind:\"scalar\",resolve:EGe})});var See=G((TPt,vee)=>{\"use strict\";var bd;try{Bee=Ie,bd=Bee(\"buffer\").Buffer}catch{}var Bee,IGe=Ps(),FU=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\\r`;function CGe(e){if(e===null)return!1;var t,r,s=0,a=e.length,n=FU;for(r=0;r<a;r++)if(t=n.indexOf(e.charAt(r)),!(t>64)){if(t<0)return!1;s+=6}return s%8===0}function wGe(e){var t,r,s=e.replace(/[\\r\\n=]/g,\"\"),a=s.length,n=FU,c=0,f=[];for(t=0;t<a;t++)t%4===0&&t&&(f.push(c>>16&255),f.push(c>>8&255),f.push(c&255)),c=c<<6|n.indexOf(s.charAt(t));return r=a%4*6,r===0?(f.push(c>>16&255),f.push(c>>8&255),f.push(c&255)):r===18?(f.push(c>>10&255),f.push(c>>2&255)):r===12&&f.push(c>>4&255),bd?bd.from?bd.from(f):new bd(f):f}function BGe(e){var t=\"\",r=0,s,a,n=e.length,c=FU;for(s=0;s<n;s++)s%3===0&&s&&(t+=c[r>>18&63],t+=c[r>>12&63],t+=c[r>>6&63],t+=c[r&63]),r=(r<<8)+e[s];return a=n%3,a===0?(t+=c[r>>18&63],t+=c[r>>12&63],t+=c[r>>6&63],t+=c[r&63]):a===2?(t+=c[r>>10&63],t+=c[r>>4&63],t+=c[r<<2&63],t+=c[64]):a===1&&(t+=c[r>>2&63],t+=c[r<<4&63],t+=c[64],t+=c[64]),t}function vGe(e){return bd&&bd.isBuffer(e)}vee.exports=new IGe(\"tag:yaml.org,2002:binary\",{kind:\"scalar\",resolve:CGe,construct:wGe,predicate:vGe,represent:BGe})});var bee=G((NPt,Dee)=>{\"use strict\";var SGe=Ps(),DGe=Object.prototype.hasOwnProperty,bGe=Object.prototype.toString;function PGe(e){if(e===null)return!0;var t=[],r,s,a,n,c,f=e;for(r=0,s=f.length;r<s;r+=1){if(a=f[r],c=!1,bGe.call(a)!==\"[object Object]\")return!1;for(n in a)if(DGe.call(a,n))if(!c)c=!0;else return!1;if(!c)return!1;if(t.indexOf(n)===-1)t.push(n);else return!1}return!0}function xGe(e){return e!==null?e:[]}Dee.exports=new SGe(\"tag:yaml.org,2002:omap\",{kind:\"sequence\",resolve:PGe,construct:xGe})});var xee=G((OPt,Pee)=>{\"use strict\";var kGe=Ps(),QGe=Object.prototype.toString;function RGe(e){if(e===null)return!0;var t,r,s,a,n,c=e;for(n=new Array(c.length),t=0,r=c.length;t<r;t+=1){if(s=c[t],QGe.call(s)!==\"[object Object]\"||(a=Object.keys(s),a.length!==1))return!1;n[t]=[a[0],s[a[0]]]}return!0}function TGe(e){if(e===null)return[];var t,r,s,a,n,c=e;for(n=new Array(c.length),t=0,r=c.length;t<r;t+=1)s=c[t],a=Object.keys(s),n[t]=[a[0],s[a[0]]];return n}Pee.exports=new kGe(\"tag:yaml.org,2002:pairs\",{kind:\"sequence\",resolve:RGe,construct:TGe})});var Qee=G((LPt,kee)=>{\"use strict\";var FGe=Ps(),NGe=Object.prototype.hasOwnProperty;function OGe(e){if(e===null)return!0;var t,r=e;for(t in r)if(NGe.call(r,t)&&r[t]!==null)return!1;return!0}function LGe(e){return e!==null?e:{}}kee.exports=new FGe(\"tag:yaml.org,2002:set\",{kind:\"mapping\",resolve:OGe,construct:LGe})});var yE=G((MPt,Ree)=>{\"use strict\";var MGe=Dd();Ree.exports=new MGe({include:[TU()],implicit:[Iee(),wee()],explicit:[See(),bee(),xee(),Qee()]})});var Fee=G((UPt,Tee)=>{\"use strict\";var UGe=Ps();function _Ge(){return!0}function HGe(){}function jGe(){return\"\"}function GGe(e){return typeof e>\"u\"}Tee.exports=new UGe(\"tag:yaml.org,2002:js/undefined\",{kind:\"scalar\",resolve:_Ge,construct:HGe,predicate:GGe,represent:jGe})});var Oee=G((_Pt,Nee)=>{\"use strict\";var qGe=Ps();function WGe(e){if(e===null||e.length===0)return!1;var t=e,r=/\\/([gim]*)$/.exec(e),s=\"\";return!(t[0]===\"/\"&&(r&&(s=r[1]),s.length>3||t[t.length-s.length-1]!==\"/\"))}function VGe(e){var t=e,r=/\\/([gim]*)$/.exec(e),s=\"\";return t[0]===\"/\"&&(r&&(s=r[1]),t=t.slice(1,t.length-s.length-1)),new RegExp(t,s)}function YGe(e){var t=\"/\"+e.source+\"/\";return e.global&&(t+=\"g\"),e.multiline&&(t+=\"m\"),e.ignoreCase&&(t+=\"i\"),t}function KGe(e){return Object.prototype.toString.call(e)===\"[object RegExp]\"}Nee.exports=new qGe(\"tag:yaml.org,2002:js/regexp\",{kind:\"scalar\",resolve:WGe,construct:VGe,predicate:KGe,represent:YGe})});var Uee=G((HPt,Mee)=>{\"use strict\";var mx;try{Lee=Ie,mx=Lee(\"esprima\")}catch{typeof window<\"u\"&&(mx=window.esprima)}var Lee,JGe=Ps();function zGe(e){if(e===null)return!1;try{var t=\"(\"+e+\")\",r=mx.parse(t,{range:!0});return!(r.type!==\"Program\"||r.body.length!==1||r.body[0].type!==\"ExpressionStatement\"||r.body[0].expression.type!==\"ArrowFunctionExpression\"&&r.body[0].expression.type!==\"FunctionExpression\")}catch{return!1}}function ZGe(e){var t=\"(\"+e+\")\",r=mx.parse(t,{range:!0}),s=[],a;if(r.type!==\"Program\"||r.body.length!==1||r.body[0].type!==\"ExpressionStatement\"||r.body[0].expression.type!==\"ArrowFunctionExpression\"&&r.body[0].expression.type!==\"FunctionExpression\")throw new Error(\"Failed to resolve function\");return r.body[0].expression.params.forEach(function(n){s.push(n.name)}),a=r.body[0].expression.body.range,r.body[0].expression.body.type===\"BlockStatement\"?new Function(s,t.slice(a[0]+1,a[1]-1)):new Function(s,\"return \"+t.slice(a[0],a[1]))}function XGe(e){return e.toString()}function $Ge(e){return Object.prototype.toString.call(e)===\"[object Function]\"}Mee.exports=new JGe(\"tag:yaml.org,2002:js/function\",{kind:\"scalar\",resolve:zGe,construct:ZGe,predicate:$Ge,represent:XGe})});var NB=G((GPt,Hee)=>{\"use strict\";var _ee=Dd();Hee.exports=_ee.DEFAULT=new _ee({include:[yE()],explicit:[Fee(),Oee(),Uee()]})});var ote=G((qPt,OB)=>{\"use strict\";var Cp=Sd(),Kee=dE(),e5e=K$(),Jee=yE(),t5e=NB(),r0=Object.prototype.hasOwnProperty,yx=1,zee=2,Zee=3,Ex=4,NU=1,r5e=2,jee=3,n5e=/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/,i5e=/[\\x85\\u2028\\u2029]/,s5e=/[,\\[\\]\\{\\}]/,Xee=/^(?:!|!!|![a-z\\-]+!)$/i,$ee=/^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;function Gee(e){return Object.prototype.toString.call(e)}function qf(e){return e===10||e===13}function xd(e){return e===9||e===32}function ll(e){return e===9||e===32||e===10||e===13}function EE(e){return e===44||e===91||e===93||e===123||e===125}function o5e(e){var t;return 48<=e&&e<=57?e-48:(t=e|32,97<=t&&t<=102?t-97+10:-1)}function a5e(e){return e===120?2:e===117?4:e===85?8:0}function l5e(e){return 48<=e&&e<=57?e-48:-1}function qee(e){return e===48?\"\\0\":e===97?\"\\x07\":e===98?\"\\b\":e===116||e===9?\"\t\":e===110?`\n`:e===118?\"\\v\":e===102?\"\\f\":e===114?\"\\r\":e===101?\"\\x1B\":e===32?\" \":e===34?'\"':e===47?\"/\":e===92?\"\\\\\":e===78?\"\\x85\":e===95?\"\\xA0\":e===76?\"\\u2028\":e===80?\"\\u2029\":\"\"}function c5e(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}var ete=new Array(256),tte=new Array(256);for(Pd=0;Pd<256;Pd++)ete[Pd]=qee(Pd)?1:0,tte[Pd]=qee(Pd);var Pd;function u5e(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||t5e,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function rte(e,t){return new Kee(t,new e5e(e.filename,e.input,e.position,e.line,e.position-e.lineStart))}function Tr(e,t){throw rte(e,t)}function Ix(e,t){e.onWarning&&e.onWarning.call(null,rte(e,t))}var Wee={YAML:function(t,r,s){var a,n,c;t.version!==null&&Tr(t,\"duplication of %YAML directive\"),s.length!==1&&Tr(t,\"YAML directive accepts exactly one argument\"),a=/^([0-9]+)\\.([0-9]+)$/.exec(s[0]),a===null&&Tr(t,\"ill-formed argument of the YAML directive\"),n=parseInt(a[1],10),c=parseInt(a[2],10),n!==1&&Tr(t,\"unacceptable YAML version of the document\"),t.version=s[0],t.checkLineBreaks=c<2,c!==1&&c!==2&&Ix(t,\"unsupported YAML version of the document\")},TAG:function(t,r,s){var a,n;s.length!==2&&Tr(t,\"TAG directive accepts exactly two arguments\"),a=s[0],n=s[1],Xee.test(a)||Tr(t,\"ill-formed tag handle (first argument) of the TAG directive\"),r0.call(t.tagMap,a)&&Tr(t,'there is a previously declared suffix for \"'+a+'\" tag handle'),$ee.test(n)||Tr(t,\"ill-formed tag prefix (second argument) of the TAG directive\"),t.tagMap[a]=n}};function t0(e,t,r,s){var a,n,c,f;if(t<r){if(f=e.input.slice(t,r),s)for(a=0,n=f.length;a<n;a+=1)c=f.charCodeAt(a),c===9||32<=c&&c<=1114111||Tr(e,\"expected valid JSON character\");else n5e.test(f)&&Tr(e,\"the stream contains non-printable characters\");e.result+=f}}function Vee(e,t,r,s){var a,n,c,f;for(Cp.isObject(r)||Tr(e,\"cannot merge mappings; the provided source object is unacceptable\"),a=Object.keys(r),c=0,f=a.length;c<f;c+=1)n=a[c],r0.call(t,n)||(t[n]=r[n],s[n]=!0)}function IE(e,t,r,s,a,n,c,f){var p,h;if(Array.isArray(a))for(a=Array.prototype.slice.call(a),p=0,h=a.length;p<h;p+=1)Array.isArray(a[p])&&Tr(e,\"nested arrays are not supported inside keys\"),typeof a==\"object\"&&Gee(a[p])===\"[object Object]\"&&(a[p]=\"[object Object]\");if(typeof a==\"object\"&&Gee(a)===\"[object Object]\"&&(a=\"[object Object]\"),a=String(a),t===null&&(t={}),s===\"tag:yaml.org,2002:merge\")if(Array.isArray(n))for(p=0,h=n.length;p<h;p+=1)Vee(e,t,n[p],r);else Vee(e,t,n,r);else!e.json&&!r0.call(r,a)&&r0.call(t,a)&&(e.line=c||e.line,e.position=f||e.position,Tr(e,\"duplicated mapping key\")),t[a]=n,delete r[a];return t}function OU(e){var t;t=e.input.charCodeAt(e.position),t===10?e.position++:t===13?(e.position++,e.input.charCodeAt(e.position)===10&&e.position++):Tr(e,\"a line break is expected\"),e.line+=1,e.lineStart=e.position}function ls(e,t,r){for(var s=0,a=e.input.charCodeAt(e.position);a!==0;){for(;xd(a);)a=e.input.charCodeAt(++e.position);if(t&&a===35)do a=e.input.charCodeAt(++e.position);while(a!==10&&a!==13&&a!==0);if(qf(a))for(OU(e),a=e.input.charCodeAt(e.position),s++,e.lineIndent=0;a===32;)e.lineIndent++,a=e.input.charCodeAt(++e.position);else break}return r!==-1&&s!==0&&e.lineIndent<r&&Ix(e,\"deficient indentation\"),s}function Cx(e){var t=e.position,r;return r=e.input.charCodeAt(t),!!((r===45||r===46)&&r===e.input.charCodeAt(t+1)&&r===e.input.charCodeAt(t+2)&&(t+=3,r=e.input.charCodeAt(t),r===0||ll(r)))}function LU(e,t){t===1?e.result+=\" \":t>1&&(e.result+=Cp.repeat(`\n`,t-1))}function f5e(e,t,r){var s,a,n,c,f,p,h,E,C=e.kind,S=e.result,x;if(x=e.input.charCodeAt(e.position),ll(x)||EE(x)||x===35||x===38||x===42||x===33||x===124||x===62||x===39||x===34||x===37||x===64||x===96||(x===63||x===45)&&(a=e.input.charCodeAt(e.position+1),ll(a)||r&&EE(a)))return!1;for(e.kind=\"scalar\",e.result=\"\",n=c=e.position,f=!1;x!==0;){if(x===58){if(a=e.input.charCodeAt(e.position+1),ll(a)||r&&EE(a))break}else if(x===35){if(s=e.input.charCodeAt(e.position-1),ll(s))break}else{if(e.position===e.lineStart&&Cx(e)||r&&EE(x))break;if(qf(x))if(p=e.line,h=e.lineStart,E=e.lineIndent,ls(e,!1,-1),e.lineIndent>=t){f=!0,x=e.input.charCodeAt(e.position);continue}else{e.position=c,e.line=p,e.lineStart=h,e.lineIndent=E;break}}f&&(t0(e,n,c,!1),LU(e,e.line-p),n=c=e.position,f=!1),xd(x)||(c=e.position+1),x=e.input.charCodeAt(++e.position)}return t0(e,n,c,!1),e.result?!0:(e.kind=C,e.result=S,!1)}function A5e(e,t){var r,s,a;if(r=e.input.charCodeAt(e.position),r!==39)return!1;for(e.kind=\"scalar\",e.result=\"\",e.position++,s=a=e.position;(r=e.input.charCodeAt(e.position))!==0;)if(r===39)if(t0(e,s,e.position,!0),r=e.input.charCodeAt(++e.position),r===39)s=e.position,e.position++,a=e.position;else return!0;else qf(r)?(t0(e,s,a,!0),LU(e,ls(e,!1,t)),s=a=e.position):e.position===e.lineStart&&Cx(e)?Tr(e,\"unexpected end of the document within a single quoted scalar\"):(e.position++,a=e.position);Tr(e,\"unexpected end of the stream within a single quoted scalar\")}function p5e(e,t){var r,s,a,n,c,f;if(f=e.input.charCodeAt(e.position),f!==34)return!1;for(e.kind=\"scalar\",e.result=\"\",e.position++,r=s=e.position;(f=e.input.charCodeAt(e.position))!==0;){if(f===34)return t0(e,r,e.position,!0),e.position++,!0;if(f===92){if(t0(e,r,e.position,!0),f=e.input.charCodeAt(++e.position),qf(f))ls(e,!1,t);else if(f<256&&ete[f])e.result+=tte[f],e.position++;else if((c=a5e(f))>0){for(a=c,n=0;a>0;a--)f=e.input.charCodeAt(++e.position),(c=o5e(f))>=0?n=(n<<4)+c:Tr(e,\"expected hexadecimal character\");e.result+=c5e(n),e.position++}else Tr(e,\"unknown escape sequence\");r=s=e.position}else qf(f)?(t0(e,r,s,!0),LU(e,ls(e,!1,t)),r=s=e.position):e.position===e.lineStart&&Cx(e)?Tr(e,\"unexpected end of the document within a double quoted scalar\"):(e.position++,s=e.position)}Tr(e,\"unexpected end of the stream within a double quoted scalar\")}function h5e(e,t){var r=!0,s,a=e.tag,n,c=e.anchor,f,p,h,E,C,S={},x,I,T,O;if(O=e.input.charCodeAt(e.position),O===91)p=93,C=!1,n=[];else if(O===123)p=125,C=!0,n={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=n),O=e.input.charCodeAt(++e.position);O!==0;){if(ls(e,!0,t),O=e.input.charCodeAt(e.position),O===p)return e.position++,e.tag=a,e.anchor=c,e.kind=C?\"mapping\":\"sequence\",e.result=n,!0;r||Tr(e,\"missed comma between flow collection entries\"),I=x=T=null,h=E=!1,O===63&&(f=e.input.charCodeAt(e.position+1),ll(f)&&(h=E=!0,e.position++,ls(e,!0,t))),s=e.line,CE(e,t,yx,!1,!0),I=e.tag,x=e.result,ls(e,!0,t),O=e.input.charCodeAt(e.position),(E||e.line===s)&&O===58&&(h=!0,O=e.input.charCodeAt(++e.position),ls(e,!0,t),CE(e,t,yx,!1,!0),T=e.result),C?IE(e,n,S,I,x,T):h?n.push(IE(e,null,S,I,x,T)):n.push(x),ls(e,!0,t),O=e.input.charCodeAt(e.position),O===44?(r=!0,O=e.input.charCodeAt(++e.position)):r=!1}Tr(e,\"unexpected end of the stream within a flow collection\")}function g5e(e,t){var r,s,a=NU,n=!1,c=!1,f=t,p=0,h=!1,E,C;if(C=e.input.charCodeAt(e.position),C===124)s=!1;else if(C===62)s=!0;else return!1;for(e.kind=\"scalar\",e.result=\"\";C!==0;)if(C=e.input.charCodeAt(++e.position),C===43||C===45)NU===a?a=C===43?jee:r5e:Tr(e,\"repeat of a chomping mode identifier\");else if((E=l5e(C))>=0)E===0?Tr(e,\"bad explicit indentation width of a block scalar; it cannot be less than one\"):c?Tr(e,\"repeat of an indentation width identifier\"):(f=t+E-1,c=!0);else break;if(xd(C)){do C=e.input.charCodeAt(++e.position);while(xd(C));if(C===35)do C=e.input.charCodeAt(++e.position);while(!qf(C)&&C!==0)}for(;C!==0;){for(OU(e),e.lineIndent=0,C=e.input.charCodeAt(e.position);(!c||e.lineIndent<f)&&C===32;)e.lineIndent++,C=e.input.charCodeAt(++e.position);if(!c&&e.lineIndent>f&&(f=e.lineIndent),qf(C)){p++;continue}if(e.lineIndent<f){a===jee?e.result+=Cp.repeat(`\n`,n?1+p:p):a===NU&&n&&(e.result+=`\n`);break}for(s?xd(C)?(h=!0,e.result+=Cp.repeat(`\n`,n?1+p:p)):h?(h=!1,e.result+=Cp.repeat(`\n`,p+1)):p===0?n&&(e.result+=\" \"):e.result+=Cp.repeat(`\n`,p):e.result+=Cp.repeat(`\n`,n?1+p:p),n=!0,c=!0,p=0,r=e.position;!qf(C)&&C!==0;)C=e.input.charCodeAt(++e.position);t0(e,r,e.position,!1)}return!0}function Yee(e,t){var r,s=e.tag,a=e.anchor,n=[],c,f=!1,p;for(e.anchor!==null&&(e.anchorMap[e.anchor]=n),p=e.input.charCodeAt(e.position);p!==0&&!(p!==45||(c=e.input.charCodeAt(e.position+1),!ll(c)));){if(f=!0,e.position++,ls(e,!0,-1)&&e.lineIndent<=t){n.push(null),p=e.input.charCodeAt(e.position);continue}if(r=e.line,CE(e,t,Zee,!1,!0),n.push(e.result),ls(e,!0,-1),p=e.input.charCodeAt(e.position),(e.line===r||e.lineIndent>t)&&p!==0)Tr(e,\"bad indentation of a sequence entry\");else if(e.lineIndent<t)break}return f?(e.tag=s,e.anchor=a,e.kind=\"sequence\",e.result=n,!0):!1}function d5e(e,t,r){var s,a,n,c,f=e.tag,p=e.anchor,h={},E={},C=null,S=null,x=null,I=!1,T=!1,O;for(e.anchor!==null&&(e.anchorMap[e.anchor]=h),O=e.input.charCodeAt(e.position);O!==0;){if(s=e.input.charCodeAt(e.position+1),n=e.line,c=e.position,(O===63||O===58)&&ll(s))O===63?(I&&(IE(e,h,E,C,S,null),C=S=x=null),T=!0,I=!0,a=!0):I?(I=!1,a=!0):Tr(e,\"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\"),e.position+=1,O=s;else if(CE(e,r,zee,!1,!0))if(e.line===n){for(O=e.input.charCodeAt(e.position);xd(O);)O=e.input.charCodeAt(++e.position);if(O===58)O=e.input.charCodeAt(++e.position),ll(O)||Tr(e,\"a whitespace character is expected after the key-value separator within a block mapping\"),I&&(IE(e,h,E,C,S,null),C=S=x=null),T=!0,I=!1,a=!1,C=e.tag,S=e.result;else if(T)Tr(e,\"can not read an implicit mapping pair; a colon is missed\");else return e.tag=f,e.anchor=p,!0}else if(T)Tr(e,\"can not read a block mapping entry; a multiline key may not be an implicit key\");else return e.tag=f,e.anchor=p,!0;else break;if((e.line===n||e.lineIndent>t)&&(CE(e,t,Ex,!0,a)&&(I?S=e.result:x=e.result),I||(IE(e,h,E,C,S,x,n,c),C=S=x=null),ls(e,!0,-1),O=e.input.charCodeAt(e.position)),e.lineIndent>t&&O!==0)Tr(e,\"bad indentation of a mapping entry\");else if(e.lineIndent<t)break}return I&&IE(e,h,E,C,S,null),T&&(e.tag=f,e.anchor=p,e.kind=\"mapping\",e.result=h),T}function m5e(e){var t,r=!1,s=!1,a,n,c;if(c=e.input.charCodeAt(e.position),c!==33)return!1;if(e.tag!==null&&Tr(e,\"duplication of a tag property\"),c=e.input.charCodeAt(++e.position),c===60?(r=!0,c=e.input.charCodeAt(++e.position)):c===33?(s=!0,a=\"!!\",c=e.input.charCodeAt(++e.position)):a=\"!\",t=e.position,r){do c=e.input.charCodeAt(++e.position);while(c!==0&&c!==62);e.position<e.length?(n=e.input.slice(t,e.position),c=e.input.charCodeAt(++e.position)):Tr(e,\"unexpected end of the stream within a verbatim tag\")}else{for(;c!==0&&!ll(c);)c===33&&(s?Tr(e,\"tag suffix cannot contain exclamation marks\"):(a=e.input.slice(t-1,e.position+1),Xee.test(a)||Tr(e,\"named tag handle cannot contain such characters\"),s=!0,t=e.position+1)),c=e.input.charCodeAt(++e.position);n=e.input.slice(t,e.position),s5e.test(n)&&Tr(e,\"tag suffix cannot contain flow indicator characters\")}return n&&!$ee.test(n)&&Tr(e,\"tag name cannot contain such characters: \"+n),r?e.tag=n:r0.call(e.tagMap,a)?e.tag=e.tagMap[a]+n:a===\"!\"?e.tag=\"!\"+n:a===\"!!\"?e.tag=\"tag:yaml.org,2002:\"+n:Tr(e,'undeclared tag handle \"'+a+'\"'),!0}function y5e(e){var t,r;if(r=e.input.charCodeAt(e.position),r!==38)return!1;for(e.anchor!==null&&Tr(e,\"duplication of an anchor property\"),r=e.input.charCodeAt(++e.position),t=e.position;r!==0&&!ll(r)&&!EE(r);)r=e.input.charCodeAt(++e.position);return e.position===t&&Tr(e,\"name of an anchor node must contain at least one character\"),e.anchor=e.input.slice(t,e.position),!0}function E5e(e){var t,r,s;if(s=e.input.charCodeAt(e.position),s!==42)return!1;for(s=e.input.charCodeAt(++e.position),t=e.position;s!==0&&!ll(s)&&!EE(s);)s=e.input.charCodeAt(++e.position);return e.position===t&&Tr(e,\"name of an alias node must contain at least one character\"),r=e.input.slice(t,e.position),r0.call(e.anchorMap,r)||Tr(e,'unidentified alias \"'+r+'\"'),e.result=e.anchorMap[r],ls(e,!0,-1),!0}function CE(e,t,r,s,a){var n,c,f,p=1,h=!1,E=!1,C,S,x,I,T;if(e.listener!==null&&e.listener(\"open\",e),e.tag=null,e.anchor=null,e.kind=null,e.result=null,n=c=f=Ex===r||Zee===r,s&&ls(e,!0,-1)&&(h=!0,e.lineIndent>t?p=1:e.lineIndent===t?p=0:e.lineIndent<t&&(p=-1)),p===1)for(;m5e(e)||y5e(e);)ls(e,!0,-1)?(h=!0,f=n,e.lineIndent>t?p=1:e.lineIndent===t?p=0:e.lineIndent<t&&(p=-1)):f=!1;if(f&&(f=h||a),(p===1||Ex===r)&&(yx===r||zee===r?I=t:I=t+1,T=e.position-e.lineStart,p===1?f&&(Yee(e,T)||d5e(e,T,I))||h5e(e,I)?E=!0:(c&&g5e(e,I)||A5e(e,I)||p5e(e,I)?E=!0:E5e(e)?(E=!0,(e.tag!==null||e.anchor!==null)&&Tr(e,\"alias node should not have any properties\")):f5e(e,I,yx===r)&&(E=!0,e.tag===null&&(e.tag=\"?\")),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):p===0&&(E=f&&Yee(e,T))),e.tag!==null&&e.tag!==\"!\")if(e.tag===\"?\"){for(e.result!==null&&e.kind!==\"scalar\"&&Tr(e,'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"'+e.kind+'\"'),C=0,S=e.implicitTypes.length;C<S;C+=1)if(x=e.implicitTypes[C],x.resolve(e.result)){e.result=x.construct(e.result),e.tag=x.tag,e.anchor!==null&&(e.anchorMap[e.anchor]=e.result);break}}else r0.call(e.typeMap[e.kind||\"fallback\"],e.tag)?(x=e.typeMap[e.kind||\"fallback\"][e.tag],e.result!==null&&x.kind!==e.kind&&Tr(e,\"unacceptable node kind for !<\"+e.tag+'> tag; it should be \"'+x.kind+'\", not \"'+e.kind+'\"'),x.resolve(e.result)?(e.result=x.construct(e.result),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):Tr(e,\"cannot resolve a node with !<\"+e.tag+\"> explicit tag\")):Tr(e,\"unknown tag !<\"+e.tag+\">\");return e.listener!==null&&e.listener(\"close\",e),e.tag!==null||e.anchor!==null||E}function I5e(e){var t=e.position,r,s,a,n=!1,c;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};(c=e.input.charCodeAt(e.position))!==0&&(ls(e,!0,-1),c=e.input.charCodeAt(e.position),!(e.lineIndent>0||c!==37));){for(n=!0,c=e.input.charCodeAt(++e.position),r=e.position;c!==0&&!ll(c);)c=e.input.charCodeAt(++e.position);for(s=e.input.slice(r,e.position),a=[],s.length<1&&Tr(e,\"directive name must not be less than one character in length\");c!==0;){for(;xd(c);)c=e.input.charCodeAt(++e.position);if(c===35){do c=e.input.charCodeAt(++e.position);while(c!==0&&!qf(c));break}if(qf(c))break;for(r=e.position;c!==0&&!ll(c);)c=e.input.charCodeAt(++e.position);a.push(e.input.slice(r,e.position))}c!==0&&OU(e),r0.call(Wee,s)?Wee[s](e,s,a):Ix(e,'unknown document directive \"'+s+'\"')}if(ls(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,ls(e,!0,-1)):n&&Tr(e,\"directives end mark is expected\"),CE(e,e.lineIndent-1,Ex,!1,!0),ls(e,!0,-1),e.checkLineBreaks&&i5e.test(e.input.slice(t,e.position))&&Ix(e,\"non-ASCII line breaks are interpreted as content\"),e.documents.push(e.result),e.position===e.lineStart&&Cx(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,ls(e,!0,-1));return}if(e.position<e.length-1)Tr(e,\"end of the stream or a document separator is expected\");else return}function nte(e,t){e=String(e),t=t||{},e.length!==0&&(e.charCodeAt(e.length-1)!==10&&e.charCodeAt(e.length-1)!==13&&(e+=`\n`),e.charCodeAt(0)===65279&&(e=e.slice(1)));var r=new u5e(e,t),s=e.indexOf(\"\\0\");for(s!==-1&&(r.position=s,Tr(r,\"null byte is not allowed in input\")),r.input+=\"\\0\";r.input.charCodeAt(r.position)===32;)r.lineIndent+=1,r.position+=1;for(;r.position<r.length-1;)I5e(r);return r.documents}function ite(e,t,r){t!==null&&typeof t==\"object\"&&typeof r>\"u\"&&(r=t,t=null);var s=nte(e,r);if(typeof t!=\"function\")return s;for(var a=0,n=s.length;a<n;a+=1)t(s[a])}function ste(e,t){var r=nte(e,t);if(r.length!==0){if(r.length===1)return r[0];throw new Kee(\"expected a single document in the stream, but found more\")}}function C5e(e,t,r){return typeof t==\"object\"&&t!==null&&typeof r>\"u\"&&(r=t,t=null),ite(e,t,Cp.extend({schema:Jee},r))}function w5e(e,t){return ste(e,Cp.extend({schema:Jee},t))}OB.exports.loadAll=ite;OB.exports.load=ste;OB.exports.safeLoadAll=C5e;OB.exports.safeLoad=w5e});var xte=G((WPt,HU)=>{\"use strict\";var MB=Sd(),UB=dE(),B5e=NB(),v5e=yE(),hte=Object.prototype.toString,gte=Object.prototype.hasOwnProperty,S5e=9,LB=10,D5e=13,b5e=32,P5e=33,x5e=34,dte=35,k5e=37,Q5e=38,R5e=39,T5e=42,mte=44,F5e=45,yte=58,N5e=61,O5e=62,L5e=63,M5e=64,Ete=91,Ite=93,U5e=96,Cte=123,_5e=124,wte=125,Wo={};Wo[0]=\"\\\\0\";Wo[7]=\"\\\\a\";Wo[8]=\"\\\\b\";Wo[9]=\"\\\\t\";Wo[10]=\"\\\\n\";Wo[11]=\"\\\\v\";Wo[12]=\"\\\\f\";Wo[13]=\"\\\\r\";Wo[27]=\"\\\\e\";Wo[34]='\\\\\"';Wo[92]=\"\\\\\\\\\";Wo[133]=\"\\\\N\";Wo[160]=\"\\\\_\";Wo[8232]=\"\\\\L\";Wo[8233]=\"\\\\P\";var H5e=[\"y\",\"Y\",\"yes\",\"Yes\",\"YES\",\"on\",\"On\",\"ON\",\"n\",\"N\",\"no\",\"No\",\"NO\",\"off\",\"Off\",\"OFF\"];function j5e(e,t){var r,s,a,n,c,f,p;if(t===null)return{};for(r={},s=Object.keys(t),a=0,n=s.length;a<n;a+=1)c=s[a],f=String(t[c]),c.slice(0,2)===\"!!\"&&(c=\"tag:yaml.org,2002:\"+c.slice(2)),p=e.compiledTypeMap.fallback[c],p&&gte.call(p.styleAliases,f)&&(f=p.styleAliases[f]),r[c]=f;return r}function ate(e){var t,r,s;if(t=e.toString(16).toUpperCase(),e<=255)r=\"x\",s=2;else if(e<=65535)r=\"u\",s=4;else if(e<=4294967295)r=\"U\",s=8;else throw new UB(\"code point within a string may not be greater than 0xFFFFFFFF\");return\"\\\\\"+r+MB.repeat(\"0\",s-t.length)+t}function G5e(e){this.schema=e.schema||B5e,this.indent=Math.max(1,e.indent||2),this.noArrayIndent=e.noArrayIndent||!1,this.skipInvalid=e.skipInvalid||!1,this.flowLevel=MB.isNothing(e.flowLevel)?-1:e.flowLevel,this.styleMap=j5e(this.schema,e.styles||null),this.sortKeys=e.sortKeys||!1,this.lineWidth=e.lineWidth||80,this.noRefs=e.noRefs||!1,this.noCompatMode=e.noCompatMode||!1,this.condenseFlow=e.condenseFlow||!1,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result=\"\",this.duplicates=[],this.usedDuplicates=null}function lte(e,t){for(var r=MB.repeat(\" \",t),s=0,a=-1,n=\"\",c,f=e.length;s<f;)a=e.indexOf(`\n`,s),a===-1?(c=e.slice(s),s=f):(c=e.slice(s,a+1),s=a+1),c.length&&c!==`\n`&&(n+=r),n+=c;return n}function MU(e,t){return`\n`+MB.repeat(\" \",e.indent*t)}function q5e(e,t){var r,s,a;for(r=0,s=e.implicitTypes.length;r<s;r+=1)if(a=e.implicitTypes[r],a.resolve(t))return!0;return!1}function _U(e){return e===b5e||e===S5e}function wE(e){return 32<=e&&e<=126||161<=e&&e<=55295&&e!==8232&&e!==8233||57344<=e&&e<=65533&&e!==65279||65536<=e&&e<=1114111}function W5e(e){return wE(e)&&!_U(e)&&e!==65279&&e!==D5e&&e!==LB}function cte(e,t){return wE(e)&&e!==65279&&e!==mte&&e!==Ete&&e!==Ite&&e!==Cte&&e!==wte&&e!==yte&&(e!==dte||t&&W5e(t))}function V5e(e){return wE(e)&&e!==65279&&!_U(e)&&e!==F5e&&e!==L5e&&e!==yte&&e!==mte&&e!==Ete&&e!==Ite&&e!==Cte&&e!==wte&&e!==dte&&e!==Q5e&&e!==T5e&&e!==P5e&&e!==_5e&&e!==N5e&&e!==O5e&&e!==R5e&&e!==x5e&&e!==k5e&&e!==M5e&&e!==U5e}function Bte(e){var t=/^\\n* /;return t.test(e)}var vte=1,Ste=2,Dte=3,bte=4,wx=5;function Y5e(e,t,r,s,a){var n,c,f,p=!1,h=!1,E=s!==-1,C=-1,S=V5e(e.charCodeAt(0))&&!_U(e.charCodeAt(e.length-1));if(t)for(n=0;n<e.length;n++){if(c=e.charCodeAt(n),!wE(c))return wx;f=n>0?e.charCodeAt(n-1):null,S=S&&cte(c,f)}else{for(n=0;n<e.length;n++){if(c=e.charCodeAt(n),c===LB)p=!0,E&&(h=h||n-C-1>s&&e[C+1]!==\" \",C=n);else if(!wE(c))return wx;f=n>0?e.charCodeAt(n-1):null,S=S&&cte(c,f)}h=h||E&&n-C-1>s&&e[C+1]!==\" \"}return!p&&!h?S&&!a(e)?vte:Ste:r>9&&Bte(e)?wx:h?bte:Dte}function K5e(e,t,r,s){e.dump=function(){if(t.length===0)return\"''\";if(!e.noCompatMode&&H5e.indexOf(t)!==-1)return\"'\"+t+\"'\";var a=e.indent*Math.max(1,r),n=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),c=s||e.flowLevel>-1&&r>=e.flowLevel;function f(p){return q5e(e,p)}switch(Y5e(t,c,e.indent,n,f)){case vte:return t;case Ste:return\"'\"+t.replace(/'/g,\"''\")+\"'\";case Dte:return\"|\"+ute(t,e.indent)+fte(lte(t,a));case bte:return\">\"+ute(t,e.indent)+fte(lte(J5e(t,n),a));case wx:return'\"'+z5e(t,n)+'\"';default:throw new UB(\"impossible error: invalid scalar style\")}}()}function ute(e,t){var r=Bte(e)?String(t):\"\",s=e[e.length-1]===`\n`,a=s&&(e[e.length-2]===`\n`||e===`\n`),n=a?\"+\":s?\"\":\"-\";return r+n+`\n`}function fte(e){return e[e.length-1]===`\n`?e.slice(0,-1):e}function J5e(e,t){for(var r=/(\\n+)([^\\n]*)/g,s=function(){var h=e.indexOf(`\n`);return h=h!==-1?h:e.length,r.lastIndex=h,Ate(e.slice(0,h),t)}(),a=e[0]===`\n`||e[0]===\" \",n,c;c=r.exec(e);){var f=c[1],p=c[2];n=p[0]===\" \",s+=f+(!a&&!n&&p!==\"\"?`\n`:\"\")+Ate(p,t),a=n}return s}function Ate(e,t){if(e===\"\"||e[0]===\" \")return e;for(var r=/ [^ ]/g,s,a=0,n,c=0,f=0,p=\"\";s=r.exec(e);)f=s.index,f-a>t&&(n=c>a?c:f,p+=`\n`+e.slice(a,n),a=n+1),c=f;return p+=`\n`,e.length-a>t&&c>a?p+=e.slice(a,c)+`\n`+e.slice(c+1):p+=e.slice(a),p.slice(1)}function z5e(e){for(var t=\"\",r,s,a,n=0;n<e.length;n++){if(r=e.charCodeAt(n),r>=55296&&r<=56319&&(s=e.charCodeAt(n+1),s>=56320&&s<=57343)){t+=ate((r-55296)*1024+s-56320+65536),n++;continue}a=Wo[r],t+=!a&&wE(r)?e[n]:a||ate(r)}return t}function Z5e(e,t,r){var s=\"\",a=e.tag,n,c;for(n=0,c=r.length;n<c;n+=1)kd(e,t,r[n],!1,!1)&&(n!==0&&(s+=\",\"+(e.condenseFlow?\"\":\" \")),s+=e.dump);e.tag=a,e.dump=\"[\"+s+\"]\"}function X5e(e,t,r,s){var a=\"\",n=e.tag,c,f;for(c=0,f=r.length;c<f;c+=1)kd(e,t+1,r[c],!0,!0)&&((!s||c!==0)&&(a+=MU(e,t)),e.dump&&LB===e.dump.charCodeAt(0)?a+=\"-\":a+=\"- \",a+=e.dump);e.tag=n,e.dump=a||\"[]\"}function $5e(e,t,r){var s=\"\",a=e.tag,n=Object.keys(r),c,f,p,h,E;for(c=0,f=n.length;c<f;c+=1)E=\"\",c!==0&&(E+=\", \"),e.condenseFlow&&(E+='\"'),p=n[c],h=r[p],kd(e,t,p,!1,!1)&&(e.dump.length>1024&&(E+=\"? \"),E+=e.dump+(e.condenseFlow?'\"':\"\")+\":\"+(e.condenseFlow?\"\":\" \"),kd(e,t,h,!1,!1)&&(E+=e.dump,s+=E));e.tag=a,e.dump=\"{\"+s+\"}\"}function eqe(e,t,r,s){var a=\"\",n=e.tag,c=Object.keys(r),f,p,h,E,C,S;if(e.sortKeys===!0)c.sort();else if(typeof e.sortKeys==\"function\")c.sort(e.sortKeys);else if(e.sortKeys)throw new UB(\"sortKeys must be a boolean or a function\");for(f=0,p=c.length;f<p;f+=1)S=\"\",(!s||f!==0)&&(S+=MU(e,t)),h=c[f],E=r[h],kd(e,t+1,h,!0,!0,!0)&&(C=e.tag!==null&&e.tag!==\"?\"||e.dump&&e.dump.length>1024,C&&(e.dump&&LB===e.dump.charCodeAt(0)?S+=\"?\":S+=\"? \"),S+=e.dump,C&&(S+=MU(e,t)),kd(e,t+1,E,!0,C)&&(e.dump&&LB===e.dump.charCodeAt(0)?S+=\":\":S+=\": \",S+=e.dump,a+=S));e.tag=n,e.dump=a||\"{}\"}function pte(e,t,r){var s,a,n,c,f,p;for(a=r?e.explicitTypes:e.implicitTypes,n=0,c=a.length;n<c;n+=1)if(f=a[n],(f.instanceOf||f.predicate)&&(!f.instanceOf||typeof t==\"object\"&&t instanceof f.instanceOf)&&(!f.predicate||f.predicate(t))){if(e.tag=r?f.tag:\"?\",f.represent){if(p=e.styleMap[f.tag]||f.defaultStyle,hte.call(f.represent)===\"[object Function]\")s=f.represent(t,p);else if(gte.call(f.represent,p))s=f.represent[p](t,p);else throw new UB(\"!<\"+f.tag+'> tag resolver accepts not \"'+p+'\" style');e.dump=s}return!0}return!1}function kd(e,t,r,s,a,n){e.tag=null,e.dump=r,pte(e,r,!1)||pte(e,r,!0);var c=hte.call(e.dump);s&&(s=e.flowLevel<0||e.flowLevel>t);var f=c===\"[object Object]\"||c===\"[object Array]\",p,h;if(f&&(p=e.duplicates.indexOf(r),h=p!==-1),(e.tag!==null&&e.tag!==\"?\"||h||e.indent!==2&&t>0)&&(a=!1),h&&e.usedDuplicates[p])e.dump=\"*ref_\"+p;else{if(f&&h&&!e.usedDuplicates[p]&&(e.usedDuplicates[p]=!0),c===\"[object Object]\")s&&Object.keys(e.dump).length!==0?(eqe(e,t,e.dump,a),h&&(e.dump=\"&ref_\"+p+e.dump)):($5e(e,t,e.dump),h&&(e.dump=\"&ref_\"+p+\" \"+e.dump));else if(c===\"[object Array]\"){var E=e.noArrayIndent&&t>0?t-1:t;s&&e.dump.length!==0?(X5e(e,E,e.dump,a),h&&(e.dump=\"&ref_\"+p+e.dump)):(Z5e(e,E,e.dump),h&&(e.dump=\"&ref_\"+p+\" \"+e.dump))}else if(c===\"[object String]\")e.tag!==\"?\"&&K5e(e,e.dump,t,n);else{if(e.skipInvalid)return!1;throw new UB(\"unacceptable kind of an object to dump \"+c)}e.tag!==null&&e.tag!==\"?\"&&(e.dump=\"!<\"+e.tag+\"> \"+e.dump)}return!0}function tqe(e,t){var r=[],s=[],a,n;for(UU(e,r,s),a=0,n=s.length;a<n;a+=1)t.duplicates.push(r[s[a]]);t.usedDuplicates=new Array(n)}function UU(e,t,r){var s,a,n;if(e!==null&&typeof e==\"object\")if(a=t.indexOf(e),a!==-1)r.indexOf(a)===-1&&r.push(a);else if(t.push(e),Array.isArray(e))for(a=0,n=e.length;a<n;a+=1)UU(e[a],t,r);else for(s=Object.keys(e),a=0,n=s.length;a<n;a+=1)UU(e[s[a]],t,r)}function Pte(e,t){t=t||{};var r=new G5e(t);return r.noRefs||tqe(e,r),kd(r,0,e,!0,!0)?r.dump+`\n`:\"\"}function rqe(e,t){return Pte(e,MB.extend({schema:v5e},t))}HU.exports.dump=Pte;HU.exports.safeDump=rqe});var Qte=G((VPt,Wi)=>{\"use strict\";var Bx=ote(),kte=xte();function vx(e){return function(){throw new Error(\"Function \"+e+\" is deprecated and cannot be used.\")}}Wi.exports.Type=Ps();Wi.exports.Schema=Dd();Wi.exports.FAILSAFE_SCHEMA=dx();Wi.exports.JSON_SCHEMA=RU();Wi.exports.CORE_SCHEMA=TU();Wi.exports.DEFAULT_SAFE_SCHEMA=yE();Wi.exports.DEFAULT_FULL_SCHEMA=NB();Wi.exports.load=Bx.load;Wi.exports.loadAll=Bx.loadAll;Wi.exports.safeLoad=Bx.safeLoad;Wi.exports.safeLoadAll=Bx.safeLoadAll;Wi.exports.dump=kte.dump;Wi.exports.safeDump=kte.safeDump;Wi.exports.YAMLException=dE();Wi.exports.MINIMAL_SCHEMA=dx();Wi.exports.SAFE_SCHEMA=yE();Wi.exports.DEFAULT_SCHEMA=NB();Wi.exports.scan=vx(\"scan\");Wi.exports.parse=vx(\"parse\");Wi.exports.compose=vx(\"compose\");Wi.exports.addConstructor=vx(\"addConstructor\")});var Tte=G((YPt,Rte)=>{\"use strict\";var nqe=Qte();Rte.exports=nqe});var Nte=G((KPt,Fte)=>{\"use strict\";function iqe(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}function Qd(e,t,r,s){this.message=e,this.expected=t,this.found=r,this.location=s,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,Qd)}iqe(Qd,Error);Qd.buildMessage=function(e,t){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",C;for(C=0;C<h.parts.length;C++)E+=h.parts[C]instanceof Array?n(h.parts[C][0])+\"-\"+n(h.parts[C][1]):n(h.parts[C]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function s(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function c(h){return r[h.type](h)}function f(h){var E=new Array(h.length),C,S;for(C=0;C<h.length;C++)E[C]=c(h[C]);if(E.sort(),E.length>0){for(C=1,S=1;C<E.length;C++)E[C-1]!==E[C]&&(E[S]=E[C],S++);E.length=S}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+f(e)+\" but \"+p(t)+\" found.\"};function sqe(e,t){t=t!==void 0?t:{};var r={},s={Start:cc},a=cc,n=function(ee){return[].concat(...ee)},c=\"-\",f=mn(\"-\",!1),p=function(ee){return ee},h=function(ee){return Object.assign({},...ee)},E=\"#\",C=mn(\"#\",!1),S=uu(),x=function(){return{}},I=\":\",T=mn(\":\",!1),O=function(ee,ye){return{[ee]:ye}},U=\",\",Y=mn(\",\",!1),te=function(ee,ye){return ye},ie=function(ee,ye,Oe){return Object.assign({},...[ee].concat(ye).map(mt=>({[mt]:Oe})))},ue=function(ee){return ee},ae=function(ee){return ee},de=Ga(\"correct indentation\"),Ae=\" \",Ce=mn(\" \",!1),Ee=function(ee){return ee.length===lr*St},g=function(ee){return ee.length===(lr+1)*St},Se=function(){return lr++,!0},Be=function(){return lr--,!0},me=function(){return Aa()},ce=Ga(\"pseudostring\"),X=/^[^\\r\\n\\t ?:,\\][{}#&*!|>'\"%@`\\-]/,De=Zn([\"\\r\",`\n`,\"\t\",\" \",\"?\",\":\",\",\",\"]\",\"[\",\"{\",\"}\",\"#\",\"&\",\"*\",\"!\",\"|\",\">\",\"'\",'\"',\"%\",\"@\",\"`\",\"-\"],!0,!1),Qe=/^[^\\r\\n\\t ,\\][{}:#\"']/,it=Zn([\"\\r\",`\n`,\"\t\",\" \",\",\",\"]\",\"[\",\"{\",\"}\",\":\",\"#\",'\"',\"'\"],!0,!1),_=function(){return Aa().replace(/^ *| *$/g,\"\")},tt=\"--\",Ne=mn(\"--\",!1),ke=/^[a-zA-Z\\/0-9]/,be=Zn([[\"a\",\"z\"],[\"A\",\"Z\"],\"/\",[\"0\",\"9\"]],!1,!1),je=/^[^\\r\\n\\t :,]/,Re=Zn([\"\\r\",`\n`,\"\t\",\" \",\":\",\",\"],!0,!1),ct=\"null\",Me=mn(\"null\",!1),P=function(){return null},w=\"true\",b=mn(\"true\",!1),y=function(){return!0},F=\"false\",z=mn(\"false\",!1),Z=function(){return!1},$=Ga(\"string\"),se='\"',xe=mn('\"',!1),Fe=function(){return\"\"},ut=function(ee){return ee},Ct=function(ee){return ee.join(\"\")},qt=/^[^\"\\\\\\0-\\x1F\\x7F]/,ir=Zn(['\"',\"\\\\\",[\"\\0\",\"\u001f\"],\"\\x7F\"],!0,!1),Pt='\\\\\"',dn=mn('\\\\\"',!1),Pr=function(){return'\"'},Ir=\"\\\\\\\\\",Or=mn(\"\\\\\\\\\",!1),on=function(){return\"\\\\\"},li=\"\\\\/\",So=mn(\"\\\\/\",!1),ns=function(){return\"/\"},so=\"\\\\b\",Do=mn(\"\\\\b\",!1),ji=function(){return\"\\b\"},oo=\"\\\\f\",bo=mn(\"\\\\f\",!1),RA=function(){return\"\\f\"},hf=\"\\\\n\",hh=mn(\"\\\\n\",!1),gh=function(){return`\n`},ao=\"\\\\r\",Gn=mn(\"\\\\r\",!1),Ns=function(){return\"\\r\"},lo=\"\\\\t\",iu=mn(\"\\\\t\",!1),su=function(){return\"\t\"},ou=\"\\\\u\",TA=mn(\"\\\\u\",!1),FA=function(ee,ye,Oe,mt){return String.fromCharCode(parseInt(`0x${ee}${ye}${Oe}${mt}`))},ua=/^[0-9a-fA-F]/,fa=Zn([[\"0\",\"9\"],[\"a\",\"f\"],[\"A\",\"F\"]],!1,!1),NA=Ga(\"blank space\"),gr=/^[ \\t]/,Po=Zn([\" \",\"\t\"],!1,!1),Ue=Ga(\"white space\"),au=/^[ \\t\\n\\r]/,Cr=Zn([\" \",\"\t\",`\n`,\"\\r\"],!1,!1),gf=`\\r\n`,OA=mn(`\\r\n`,!1),LA=`\n`,lu=mn(`\n`,!1),cu=\"\\r\",ac=mn(\"\\r\",!1),we=0,Nt=0,lc=[{line:1,column:1}],Oi=0,co=[],Tt=0,Qn;if(\"startRule\"in t){if(!(t.startRule in s))throw new Error(`Can't start parsing from rule \"`+t.startRule+'\".');a=s[t.startRule]}function Aa(){return e.substring(Nt,we)}function Gi(){return Wa(Nt,we)}function Li(ee,ye){throw ye=ye!==void 0?ye:Wa(Nt,we),df([Ga(ee)],e.substring(Nt,we),ye)}function ja(ee,ye){throw ye=ye!==void 0?ye:Wa(Nt,we),Va(ee,ye)}function mn(ee,ye){return{type:\"literal\",text:ee,ignoreCase:ye}}function Zn(ee,ye,Oe){return{type:\"class\",parts:ee,inverted:ye,ignoreCase:Oe}}function uu(){return{type:\"any\"}}function dh(){return{type:\"end\"}}function Ga(ee){return{type:\"other\",description:ee}}function qa(ee){var ye=lc[ee],Oe;if(ye)return ye;for(Oe=ee-1;!lc[Oe];)Oe--;for(ye=lc[Oe],ye={line:ye.line,column:ye.column};Oe<ee;)e.charCodeAt(Oe)===10?(ye.line++,ye.column=1):ye.column++,Oe++;return lc[ee]=ye,ye}function Wa(ee,ye){var Oe=qa(ee),mt=qa(ye);return{start:{offset:ee,line:Oe.line,column:Oe.column},end:{offset:ye,line:mt.line,column:mt.column}}}function $e(ee){we<Oi||(we>Oi&&(Oi=we,co=[]),co.push(ee))}function Va(ee,ye){return new Qd(ee,null,null,ye)}function df(ee,ye,Oe){return new Qd(Qd.buildMessage(ee,ye),ee,ye,Oe)}function cc(){var ee;return ee=MA(),ee}function vn(){var ee,ye,Oe;for(ee=we,ye=[],Oe=pa();Oe!==r;)ye.push(Oe),Oe=pa();return ye!==r&&(Nt=ee,ye=n(ye)),ee=ye,ee}function pa(){var ee,ye,Oe,mt,Et;return ee=we,ye=xl(),ye!==r?(e.charCodeAt(we)===45?(Oe=c,we++):(Oe=r,Tt===0&&$e(f)),Oe!==r?(mt=Tn(),mt!==r?(Et=ha(),Et!==r?(Nt=ee,ye=p(Et),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r),ee}function MA(){var ee,ye,Oe;for(ee=we,ye=[],Oe=UA();Oe!==r;)ye.push(Oe),Oe=UA();return ye!==r&&(Nt=ee,ye=h(ye)),ee=ye,ee}function UA(){var ee,ye,Oe,mt,Et,bt,tr,pn,ci;if(ee=we,ye=Tn(),ye===r&&(ye=null),ye!==r){if(Oe=we,e.charCodeAt(we)===35?(mt=E,we++):(mt=r,Tt===0&&$e(C)),mt!==r){if(Et=[],bt=we,tr=we,Tt++,pn=ot(),Tt--,pn===r?tr=void 0:(we=tr,tr=r),tr!==r?(e.length>we?(pn=e.charAt(we),we++):(pn=r,Tt===0&&$e(S)),pn!==r?(tr=[tr,pn],bt=tr):(we=bt,bt=r)):(we=bt,bt=r),bt!==r)for(;bt!==r;)Et.push(bt),bt=we,tr=we,Tt++,pn=ot(),Tt--,pn===r?tr=void 0:(we=tr,tr=r),tr!==r?(e.length>we?(pn=e.charAt(we),we++):(pn=r,Tt===0&&$e(S)),pn!==r?(tr=[tr,pn],bt=tr):(we=bt,bt=r)):(we=bt,bt=r);else Et=r;Et!==r?(mt=[mt,Et],Oe=mt):(we=Oe,Oe=r)}else we=Oe,Oe=r;if(Oe===r&&(Oe=null),Oe!==r){if(mt=[],Et=Je(),Et!==r)for(;Et!==r;)mt.push(Et),Et=Je();else mt=r;mt!==r?(Nt=ee,ye=x(),ee=ye):(we=ee,ee=r)}else we=ee,ee=r}else we=ee,ee=r;if(ee===r&&(ee=we,ye=xl(),ye!==r?(Oe=Ya(),Oe!==r?(mt=Tn(),mt===r&&(mt=null),mt!==r?(e.charCodeAt(we)===58?(Et=I,we++):(Et=r,Tt===0&&$e(T)),Et!==r?(bt=Tn(),bt===r&&(bt=null),bt!==r?(tr=ha(),tr!==r?(Nt=ee,ye=O(Oe,tr),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r),ee===r&&(ee=we,ye=xl(),ye!==r?(Oe=is(),Oe!==r?(mt=Tn(),mt===r&&(mt=null),mt!==r?(e.charCodeAt(we)===58?(Et=I,we++):(Et=r,Tt===0&&$e(T)),Et!==r?(bt=Tn(),bt===r&&(bt=null),bt!==r?(tr=ha(),tr!==r?(Nt=ee,ye=O(Oe,tr),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r),ee===r))){if(ee=we,ye=xl(),ye!==r)if(Oe=is(),Oe!==r)if(mt=Tn(),mt!==r)if(Et=fu(),Et!==r){if(bt=[],tr=Je(),tr!==r)for(;tr!==r;)bt.push(tr),tr=Je();else bt=r;bt!==r?(Nt=ee,ye=O(Oe,Et),ee=ye):(we=ee,ee=r)}else we=ee,ee=r;else we=ee,ee=r;else we=ee,ee=r;else we=ee,ee=r;if(ee===r)if(ee=we,ye=xl(),ye!==r)if(Oe=is(),Oe!==r){if(mt=[],Et=we,bt=Tn(),bt===r&&(bt=null),bt!==r?(e.charCodeAt(we)===44?(tr=U,we++):(tr=r,Tt===0&&$e(Y)),tr!==r?(pn=Tn(),pn===r&&(pn=null),pn!==r?(ci=is(),ci!==r?(Nt=Et,bt=te(Oe,ci),Et=bt):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r),Et!==r)for(;Et!==r;)mt.push(Et),Et=we,bt=Tn(),bt===r&&(bt=null),bt!==r?(e.charCodeAt(we)===44?(tr=U,we++):(tr=r,Tt===0&&$e(Y)),tr!==r?(pn=Tn(),pn===r&&(pn=null),pn!==r?(ci=is(),ci!==r?(Nt=Et,bt=te(Oe,ci),Et=bt):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r)):(we=Et,Et=r);else mt=r;mt!==r?(Et=Tn(),Et===r&&(Et=null),Et!==r?(e.charCodeAt(we)===58?(bt=I,we++):(bt=r,Tt===0&&$e(T)),bt!==r?(tr=Tn(),tr===r&&(tr=null),tr!==r?(pn=ha(),pn!==r?(Nt=ee,ye=ie(Oe,mt,pn),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)}else we=ee,ee=r;else we=ee,ee=r}return ee}function ha(){var ee,ye,Oe,mt,Et,bt,tr;if(ee=we,ye=we,Tt++,Oe=we,mt=ot(),mt!==r?(Et=Mt(),Et!==r?(e.charCodeAt(we)===45?(bt=c,we++):(bt=r,Tt===0&&$e(f)),bt!==r?(tr=Tn(),tr!==r?(mt=[mt,Et,bt,tr],Oe=mt):(we=Oe,Oe=r)):(we=Oe,Oe=r)):(we=Oe,Oe=r)):(we=Oe,Oe=r),Tt--,Oe!==r?(we=ye,ye=void 0):ye=r,ye!==r?(Oe=Je(),Oe!==r?(mt=Rn(),mt!==r?(Et=vn(),Et!==r?(bt=ga(),bt!==r?(Nt=ee,ye=ue(Et),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r),ee===r&&(ee=we,ye=ot(),ye!==r?(Oe=Rn(),Oe!==r?(mt=MA(),mt!==r?(Et=ga(),Et!==r?(Nt=ee,ye=ue(mt),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r),ee===r))if(ee=we,ye=uc(),ye!==r){if(Oe=[],mt=Je(),mt!==r)for(;mt!==r;)Oe.push(mt),mt=Je();else Oe=r;Oe!==r?(Nt=ee,ye=ae(ye),ee=ye):(we=ee,ee=r)}else we=ee,ee=r;return ee}function xl(){var ee,ye,Oe;for(Tt++,ee=we,ye=[],e.charCodeAt(we)===32?(Oe=Ae,we++):(Oe=r,Tt===0&&$e(Ce));Oe!==r;)ye.push(Oe),e.charCodeAt(we)===32?(Oe=Ae,we++):(Oe=r,Tt===0&&$e(Ce));return ye!==r?(Nt=we,Oe=Ee(ye),Oe?Oe=void 0:Oe=r,Oe!==r?(ye=[ye,Oe],ee=ye):(we=ee,ee=r)):(we=ee,ee=r),Tt--,ee===r&&(ye=r,Tt===0&&$e(de)),ee}function Mt(){var ee,ye,Oe;for(ee=we,ye=[],e.charCodeAt(we)===32?(Oe=Ae,we++):(Oe=r,Tt===0&&$e(Ce));Oe!==r;)ye.push(Oe),e.charCodeAt(we)===32?(Oe=Ae,we++):(Oe=r,Tt===0&&$e(Ce));return ye!==r?(Nt=we,Oe=g(ye),Oe?Oe=void 0:Oe=r,Oe!==r?(ye=[ye,Oe],ee=ye):(we=ee,ee=r)):(we=ee,ee=r),ee}function Rn(){var ee;return Nt=we,ee=Se(),ee?ee=void 0:ee=r,ee}function ga(){var ee;return Nt=we,ee=Be(),ee?ee=void 0:ee=r,ee}function Ya(){var ee;return ee=kl(),ee===r&&(ee=fc()),ee}function is(){var ee,ye,Oe;if(ee=kl(),ee===r){if(ee=we,ye=[],Oe=Ka(),Oe!==r)for(;Oe!==r;)ye.push(Oe),Oe=Ka();else ye=r;ye!==r&&(Nt=ee,ye=me()),ee=ye}return ee}function uc(){var ee;return ee=Mi(),ee===r&&(ee=Bs(),ee===r&&(ee=kl(),ee===r&&(ee=fc()))),ee}function fu(){var ee;return ee=Mi(),ee===r&&(ee=kl(),ee===r&&(ee=Ka())),ee}function fc(){var ee,ye,Oe,mt,Et,bt;if(Tt++,ee=we,X.test(e.charAt(we))?(ye=e.charAt(we),we++):(ye=r,Tt===0&&$e(De)),ye!==r){for(Oe=[],mt=we,Et=Tn(),Et===r&&(Et=null),Et!==r?(Qe.test(e.charAt(we))?(bt=e.charAt(we),we++):(bt=r,Tt===0&&$e(it)),bt!==r?(Et=[Et,bt],mt=Et):(we=mt,mt=r)):(we=mt,mt=r);mt!==r;)Oe.push(mt),mt=we,Et=Tn(),Et===r&&(Et=null),Et!==r?(Qe.test(e.charAt(we))?(bt=e.charAt(we),we++):(bt=r,Tt===0&&$e(it)),bt!==r?(Et=[Et,bt],mt=Et):(we=mt,mt=r)):(we=mt,mt=r);Oe!==r?(Nt=ee,ye=_(),ee=ye):(we=ee,ee=r)}else we=ee,ee=r;return Tt--,ee===r&&(ye=r,Tt===0&&$e(ce)),ee}function Ka(){var ee,ye,Oe,mt,Et;if(ee=we,e.substr(we,2)===tt?(ye=tt,we+=2):(ye=r,Tt===0&&$e(Ne)),ye===r&&(ye=null),ye!==r)if(ke.test(e.charAt(we))?(Oe=e.charAt(we),we++):(Oe=r,Tt===0&&$e(be)),Oe!==r){for(mt=[],je.test(e.charAt(we))?(Et=e.charAt(we),we++):(Et=r,Tt===0&&$e(Re));Et!==r;)mt.push(Et),je.test(e.charAt(we))?(Et=e.charAt(we),we++):(Et=r,Tt===0&&$e(Re));mt!==r?(Nt=ee,ye=_(),ee=ye):(we=ee,ee=r)}else we=ee,ee=r;else we=ee,ee=r;return ee}function Mi(){var ee,ye;return ee=we,e.substr(we,4)===ct?(ye=ct,we+=4):(ye=r,Tt===0&&$e(Me)),ye!==r&&(Nt=ee,ye=P()),ee=ye,ee}function Bs(){var ee,ye;return ee=we,e.substr(we,4)===w?(ye=w,we+=4):(ye=r,Tt===0&&$e(b)),ye!==r&&(Nt=ee,ye=y()),ee=ye,ee===r&&(ee=we,e.substr(we,5)===F?(ye=F,we+=5):(ye=r,Tt===0&&$e(z)),ye!==r&&(Nt=ee,ye=Z()),ee=ye),ee}function kl(){var ee,ye,Oe,mt;return Tt++,ee=we,e.charCodeAt(we)===34?(ye=se,we++):(ye=r,Tt===0&&$e(xe)),ye!==r?(e.charCodeAt(we)===34?(Oe=se,we++):(Oe=r,Tt===0&&$e(xe)),Oe!==r?(Nt=ee,ye=Fe(),ee=ye):(we=ee,ee=r)):(we=ee,ee=r),ee===r&&(ee=we,e.charCodeAt(we)===34?(ye=se,we++):(ye=r,Tt===0&&$e(xe)),ye!==r?(Oe=mf(),Oe!==r?(e.charCodeAt(we)===34?(mt=se,we++):(mt=r,Tt===0&&$e(xe)),mt!==r?(Nt=ee,ye=ut(Oe),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)),Tt--,ee===r&&(ye=r,Tt===0&&$e($)),ee}function mf(){var ee,ye,Oe;if(ee=we,ye=[],Oe=Ac(),Oe!==r)for(;Oe!==r;)ye.push(Oe),Oe=Ac();else ye=r;return ye!==r&&(Nt=ee,ye=Ct(ye)),ee=ye,ee}function Ac(){var ee,ye,Oe,mt,Et,bt;return qt.test(e.charAt(we))?(ee=e.charAt(we),we++):(ee=r,Tt===0&&$e(ir)),ee===r&&(ee=we,e.substr(we,2)===Pt?(ye=Pt,we+=2):(ye=r,Tt===0&&$e(dn)),ye!==r&&(Nt=ee,ye=Pr()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===Ir?(ye=Ir,we+=2):(ye=r,Tt===0&&$e(Or)),ye!==r&&(Nt=ee,ye=on()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===li?(ye=li,we+=2):(ye=r,Tt===0&&$e(So)),ye!==r&&(Nt=ee,ye=ns()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===so?(ye=so,we+=2):(ye=r,Tt===0&&$e(Do)),ye!==r&&(Nt=ee,ye=ji()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===oo?(ye=oo,we+=2):(ye=r,Tt===0&&$e(bo)),ye!==r&&(Nt=ee,ye=RA()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===hf?(ye=hf,we+=2):(ye=r,Tt===0&&$e(hh)),ye!==r&&(Nt=ee,ye=gh()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===ao?(ye=ao,we+=2):(ye=r,Tt===0&&$e(Gn)),ye!==r&&(Nt=ee,ye=Ns()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===lo?(ye=lo,we+=2):(ye=r,Tt===0&&$e(iu)),ye!==r&&(Nt=ee,ye=su()),ee=ye,ee===r&&(ee=we,e.substr(we,2)===ou?(ye=ou,we+=2):(ye=r,Tt===0&&$e(TA)),ye!==r?(Oe=Bi(),Oe!==r?(mt=Bi(),mt!==r?(Et=Bi(),Et!==r?(bt=Bi(),bt!==r?(Nt=ee,ye=FA(Oe,mt,Et,bt),ee=ye):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)):(we=ee,ee=r)))))))))),ee}function Bi(){var ee;return ua.test(e.charAt(we))?(ee=e.charAt(we),we++):(ee=r,Tt===0&&$e(fa)),ee}function Tn(){var ee,ye;if(Tt++,ee=[],gr.test(e.charAt(we))?(ye=e.charAt(we),we++):(ye=r,Tt===0&&$e(Po)),ye!==r)for(;ye!==r;)ee.push(ye),gr.test(e.charAt(we))?(ye=e.charAt(we),we++):(ye=r,Tt===0&&$e(Po));else ee=r;return Tt--,ee===r&&(ye=r,Tt===0&&$e(NA)),ee}function pc(){var ee,ye;if(Tt++,ee=[],au.test(e.charAt(we))?(ye=e.charAt(we),we++):(ye=r,Tt===0&&$e(Cr)),ye!==r)for(;ye!==r;)ee.push(ye),au.test(e.charAt(we))?(ye=e.charAt(we),we++):(ye=r,Tt===0&&$e(Cr));else ee=r;return Tt--,ee===r&&(ye=r,Tt===0&&$e(Ue)),ee}function Je(){var ee,ye,Oe,mt,Et,bt;if(ee=we,ye=ot(),ye!==r){for(Oe=[],mt=we,Et=Tn(),Et===r&&(Et=null),Et!==r?(bt=ot(),bt!==r?(Et=[Et,bt],mt=Et):(we=mt,mt=r)):(we=mt,mt=r);mt!==r;)Oe.push(mt),mt=we,Et=Tn(),Et===r&&(Et=null),Et!==r?(bt=ot(),bt!==r?(Et=[Et,bt],mt=Et):(we=mt,mt=r)):(we=mt,mt=r);Oe!==r?(ye=[ye,Oe],ee=ye):(we=ee,ee=r)}else we=ee,ee=r;return ee}function ot(){var ee;return e.substr(we,2)===gf?(ee=gf,we+=2):(ee=r,Tt===0&&$e(OA)),ee===r&&(e.charCodeAt(we)===10?(ee=LA,we++):(ee=r,Tt===0&&$e(lu)),ee===r&&(e.charCodeAt(we)===13?(ee=cu,we++):(ee=r,Tt===0&&$e(ac)))),ee}let St=2,lr=0;if(Qn=a(),Qn!==r&&we===e.length)return Qn;throw Qn!==r&&we<e.length&&$e(dh()),df(co,Oi<e.length?e.charAt(Oi):null,Oi<e.length?Wa(Oi,Oi+1):Wa(Oi,Oi))}Fte.exports={SyntaxError:Qd,parse:sqe}});function Lte(e){return e.match(oqe)?e:JSON.stringify(e)}function Ute(e){return typeof e>\"u\"?!0:typeof e==\"object\"&&e!==null&&!Array.isArray(e)?Object.keys(e).every(t=>Ute(e[t])):!1}function jU(e,t,r){if(e===null)return`null\n`;if(typeof e==\"number\"||typeof e==\"boolean\")return`${e.toString()}\n`;if(typeof e==\"string\")return`${Lte(e)}\n`;if(Array.isArray(e)){if(e.length===0)return`[]\n`;let s=\"  \".repeat(t);return`\n${e.map(n=>`${s}- ${jU(n,t+1,!1)}`).join(\"\")}`}if(typeof e==\"object\"&&e){let[s,a]=e instanceof Sx?[e.data,!1]:[e,!0],n=\"  \".repeat(t),c=Object.keys(s);a&&c.sort((p,h)=>{let E=Ote.indexOf(p),C=Ote.indexOf(h);return E===-1&&C===-1?p<h?-1:p>h?1:0:E!==-1&&C===-1?-1:E===-1&&C!==-1?1:E-C});let f=c.filter(p=>!Ute(s[p])).map((p,h)=>{let E=s[p],C=Lte(p),S=jU(E,t+1,!0),x=h>0||r?n:\"\",I=C.length>1024?`? ${C}\n${x}:`:`${C}:`,T=S.startsWith(`\n`)?S:` ${S}`;return`${x}${I}${T}`}).join(t===0?`\n`:\"\")||`\n`;return r?`\n${f}`:`${f}`}throw new Error(`Unsupported value type (${e})`)}function cl(e){try{let t=jU(e,0,!1);return t!==`\n`?t:\"\"}catch(t){throw t.location&&(t.message=t.message.replace(/(\\.)?$/,` (line ${t.location.start.line}, column ${t.location.start.column})$1`)),t}}function aqe(e){return e.endsWith(`\n`)||(e+=`\n`),(0,Mte.parse)(e)}function cqe(e){if(lqe.test(e))return aqe(e);let t=(0,Dx.safeLoad)(e,{schema:Dx.FAILSAFE_SCHEMA,json:!0});if(t==null)return{};if(typeof t!=\"object\")throw new Error(`Expected an indexed object, got a ${typeof t} instead. Does your file follow Yaml's rules?`);if(Array.isArray(t))throw new Error(\"Expected an indexed object, got an array instead. Does your file follow Yaml's rules?\");return t}function cs(e){return cqe(e)}var Dx,Mte,oqe,Ote,Sx,lqe,_te=Ze(()=>{Dx=et(Tte()),Mte=et(Nte()),oqe=/^(?![-?:,\\][{}#&*!|>'\"%@` \\t\\r\\n]).([ \\t]*(?![,\\][{}:# \\t\\r\\n]).)*$/,Ote=[\"__metadata\",\"version\",\"resolution\",\"dependencies\",\"peerDependencies\",\"dependenciesMeta\",\"peerDependenciesMeta\",\"binaries\"],Sx=class{constructor(t){this.data=t}};cl.PreserveOrdering=Sx;lqe=/^(#.*(\\r?\\n))*?#\\s+yarn\\s+lockfile\\s+v1\\r?\\n/i});var _B={};Yt(_B,{parseResolution:()=>px,parseShell:()=>ux,parseSyml:()=>cs,stringifyArgument:()=>PU,stringifyArgumentSegment:()=>xU,stringifyArithmeticExpression:()=>Ax,stringifyCommand:()=>bU,stringifyCommandChain:()=>gE,stringifyCommandChainThen:()=>DU,stringifyCommandLine:()=>fx,stringifyCommandLineThen:()=>SU,stringifyEnvSegment:()=>cx,stringifyRedirectArgument:()=>TB,stringifyResolution:()=>hx,stringifyShell:()=>hE,stringifyShellLine:()=>hE,stringifySyml:()=>cl,stringifyValueArgument:()=>wd});var Bc=Ze(()=>{U$();G$();_te()});var jte=G(($Pt,GU)=>{\"use strict\";var uqe=e=>{let t=!1,r=!1,s=!1;for(let a=0;a<e.length;a++){let n=e[a];t&&/[a-zA-Z]/.test(n)&&n.toUpperCase()===n?(e=e.slice(0,a)+\"-\"+e.slice(a),t=!1,s=r,r=!0,a++):r&&s&&/[a-zA-Z]/.test(n)&&n.toLowerCase()===n?(e=e.slice(0,a-1)+\"-\"+e.slice(a-1),s=r,r=!1,t=!0):(t=n.toLowerCase()===n&&n.toUpperCase()!==n,s=r,r=n.toUpperCase()===n&&n.toLowerCase()!==n)}return e},Hte=(e,t)=>{if(!(typeof e==\"string\"||Array.isArray(e)))throw new TypeError(\"Expected the input to be `string | string[]`\");t=Object.assign({pascalCase:!1},t);let r=a=>t.pascalCase?a.charAt(0).toUpperCase()+a.slice(1):a;return Array.isArray(e)?e=e.map(a=>a.trim()).filter(a=>a.length).join(\"-\"):e=e.trim(),e.length===0?\"\":e.length===1?t.pascalCase?e.toUpperCase():e.toLowerCase():(e!==e.toLowerCase()&&(e=uqe(e)),e=e.replace(/^[_.\\- ]+/,\"\").toLowerCase().replace(/[_.\\- ]+(\\w|$)/g,(a,n)=>n.toUpperCase()).replace(/\\d+(\\w|$)/g,a=>a.toUpperCase()),r(e))};GU.exports=Hte;GU.exports.default=Hte});var Gte=G((ext,fqe)=>{fqe.exports=[{name:\"Agola CI\",constant:\"AGOLA\",env:\"AGOLA_GIT_REF\",pr:\"AGOLA_PULL_REQUEST_ID\"},{name:\"Appcircle\",constant:\"APPCIRCLE\",env:\"AC_APPCIRCLE\"},{name:\"AppVeyor\",constant:\"APPVEYOR\",env:\"APPVEYOR\",pr:\"APPVEYOR_PULL_REQUEST_NUMBER\"},{name:\"AWS CodeBuild\",constant:\"CODEBUILD\",env:\"CODEBUILD_BUILD_ARN\"},{name:\"Azure Pipelines\",constant:\"AZURE_PIPELINES\",env:\"TF_BUILD\",pr:{BUILD_REASON:\"PullRequest\"}},{name:\"Bamboo\",constant:\"BAMBOO\",env:\"bamboo_planKey\"},{name:\"Bitbucket Pipelines\",constant:\"BITBUCKET\",env:\"BITBUCKET_COMMIT\",pr:\"BITBUCKET_PR_ID\"},{name:\"Bitrise\",constant:\"BITRISE\",env:\"BITRISE_IO\",pr:\"BITRISE_PULL_REQUEST\"},{name:\"Buddy\",constant:\"BUDDY\",env:\"BUDDY_WORKSPACE_ID\",pr:\"BUDDY_EXECUTION_PULL_REQUEST_ID\"},{name:\"Buildkite\",constant:\"BUILDKITE\",env:\"BUILDKITE\",pr:{env:\"BUILDKITE_PULL_REQUEST\",ne:\"false\"}},{name:\"CircleCI\",constant:\"CIRCLE\",env:\"CIRCLECI\",pr:\"CIRCLE_PULL_REQUEST\"},{name:\"Cirrus CI\",constant:\"CIRRUS\",env:\"CIRRUS_CI\",pr:\"CIRRUS_PR\"},{name:\"Codefresh\",constant:\"CODEFRESH\",env:\"CF_BUILD_ID\",pr:{any:[\"CF_PULL_REQUEST_NUMBER\",\"CF_PULL_REQUEST_ID\"]}},{name:\"Codemagic\",constant:\"CODEMAGIC\",env:\"CM_BUILD_ID\",pr:\"CM_PULL_REQUEST\"},{name:\"Codeship\",constant:\"CODESHIP\",env:{CI_NAME:\"codeship\"}},{name:\"Drone\",constant:\"DRONE\",env:\"DRONE\",pr:{DRONE_BUILD_EVENT:\"pull_request\"}},{name:\"dsari\",constant:\"DSARI\",env:\"DSARI\"},{name:\"Earthly\",constant:\"EARTHLY\",env:\"EARTHLY_CI\"},{name:\"Expo Application Services\",constant:\"EAS\",env:\"EAS_BUILD\"},{name:\"Gerrit\",constant:\"GERRIT\",env:\"GERRIT_PROJECT\"},{name:\"Gitea Actions\",constant:\"GITEA_ACTIONS\",env:\"GITEA_ACTIONS\"},{name:\"GitHub Actions\",constant:\"GITHUB_ACTIONS\",env:\"GITHUB_ACTIONS\",pr:{GITHUB_EVENT_NAME:\"pull_request\"}},{name:\"GitLab CI\",constant:\"GITLAB\",env:\"GITLAB_CI\",pr:\"CI_MERGE_REQUEST_ID\"},{name:\"GoCD\",constant:\"GOCD\",env:\"GO_PIPELINE_LABEL\"},{name:\"Google Cloud Build\",constant:\"GOOGLE_CLOUD_BUILD\",env:\"BUILDER_OUTPUT\"},{name:\"Harness CI\",constant:\"HARNESS\",env:\"HARNESS_BUILD_ID\"},{name:\"Heroku\",constant:\"HEROKU\",env:{env:\"NODE\",includes:\"/app/.heroku/node/bin/node\"}},{name:\"Hudson\",constant:\"HUDSON\",env:\"HUDSON_URL\"},{name:\"Jenkins\",constant:\"JENKINS\",env:[\"JENKINS_URL\",\"BUILD_ID\"],pr:{any:[\"ghprbPullId\",\"CHANGE_ID\"]}},{name:\"LayerCI\",constant:\"LAYERCI\",env:\"LAYERCI\",pr:\"LAYERCI_PULL_REQUEST\"},{name:\"Magnum CI\",constant:\"MAGNUM\",env:\"MAGNUM\"},{name:\"Netlify CI\",constant:\"NETLIFY\",env:\"NETLIFY\",pr:{env:\"PULL_REQUEST\",ne:\"false\"}},{name:\"Nevercode\",constant:\"NEVERCODE\",env:\"NEVERCODE\",pr:{env:\"NEVERCODE_PULL_REQUEST\",ne:\"false\"}},{name:\"Prow\",constant:\"PROW\",env:\"PROW_JOB_ID\"},{name:\"ReleaseHub\",constant:\"RELEASEHUB\",env:\"RELEASE_BUILD_ID\"},{name:\"Render\",constant:\"RENDER\",env:\"RENDER\",pr:{IS_PULL_REQUEST:\"true\"}},{name:\"Sail CI\",constant:\"SAIL\",env:\"SAILCI\",pr:\"SAIL_PULL_REQUEST_NUMBER\"},{name:\"Screwdriver\",constant:\"SCREWDRIVER\",env:\"SCREWDRIVER\",pr:{env:\"SD_PULL_REQUEST\",ne:\"false\"}},{name:\"Semaphore\",constant:\"SEMAPHORE\",env:\"SEMAPHORE\",pr:\"PULL_REQUEST_NUMBER\"},{name:\"Sourcehut\",constant:\"SOURCEHUT\",env:{CI_NAME:\"sourcehut\"}},{name:\"Strider CD\",constant:\"STRIDER\",env:\"STRIDER\"},{name:\"TaskCluster\",constant:\"TASKCLUSTER\",env:[\"TASK_ID\",\"RUN_ID\"]},{name:\"TeamCity\",constant:\"TEAMCITY\",env:\"TEAMCITY_VERSION\"},{name:\"Travis CI\",constant:\"TRAVIS\",env:\"TRAVIS\",pr:{env:\"TRAVIS_PULL_REQUEST\",ne:\"false\"}},{name:\"Vela\",constant:\"VELA\",env:\"VELA\",pr:{VELA_PULL_REQUEST:\"1\"}},{name:\"Vercel\",constant:\"VERCEL\",env:{any:[\"NOW_BUILDER\",\"VERCEL\"]},pr:\"VERCEL_GIT_PULL_REQUEST_ID\"},{name:\"Visual Studio App Center\",constant:\"APPCENTER\",env:\"APPCENTER_BUILD_ID\"},{name:\"Woodpecker\",constant:\"WOODPECKER\",env:{CI:\"woodpecker\"},pr:{CI_BUILD_EVENT:\"pull_request\"}},{name:\"Xcode Cloud\",constant:\"XCODE_CLOUD\",env:\"CI_XCODE_PROJECT\",pr:\"CI_PULL_REQUEST_NUMBER\"},{name:\"Xcode Server\",constant:\"XCODE_SERVER\",env:\"XCS\"}]});var Rd=G(ql=>{\"use strict\";var Wte=Gte(),xs=process.env;Object.defineProperty(ql,\"_vendors\",{value:Wte.map(function(e){return e.constant})});ql.name=null;ql.isPR=null;Wte.forEach(function(e){let r=(Array.isArray(e.env)?e.env:[e.env]).every(function(s){return qte(s)});if(ql[e.constant]=r,!!r)switch(ql.name=e.name,typeof e.pr){case\"string\":ql.isPR=!!xs[e.pr];break;case\"object\":\"env\"in e.pr?ql.isPR=e.pr.env in xs&&xs[e.pr.env]!==e.pr.ne:\"any\"in e.pr?ql.isPR=e.pr.any.some(function(s){return!!xs[s]}):ql.isPR=qte(e.pr);break;default:ql.isPR=null}});ql.isCI=!!(xs.CI!==\"false\"&&(xs.BUILD_ID||xs.BUILD_NUMBER||xs.CI||xs.CI_APP_ID||xs.CI_BUILD_ID||xs.CI_BUILD_NUMBER||xs.CI_NAME||xs.CONTINUOUS_INTEGRATION||xs.RUN_ID||ql.name));function qte(e){return typeof e==\"string\"?!!xs[e]:\"env\"in e?xs[e.env]&&xs[e.env].includes(e.includes):\"any\"in e?e.any.some(function(t){return!!xs[t]}):Object.keys(e).every(function(t){return xs[t]===e[t]})}});var ni,In,Td,qU,bx,Vte,WU,VU,Px=Ze(()=>{(function(e){e.StartOfInput=\"\\0\",e.EndOfInput=\"\u0001\",e.EndOfPartialInput=\"\u0002\"})(ni||(ni={}));(function(e){e[e.InitialNode=0]=\"InitialNode\",e[e.SuccessNode=1]=\"SuccessNode\",e[e.ErrorNode=2]=\"ErrorNode\",e[e.CustomNode=3]=\"CustomNode\"})(In||(In={}));Td=-1,qU=/^(-h|--help)(?:=([0-9]+))?$/,bx=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,Vte=/^-[a-zA-Z]{2,}$/,WU=/^([^=]+)=([\\s\\S]*)$/,VU=process.env.DEBUG_CLI===\"1\"});var st,BE,xx,YU,kx=Ze(()=>{Px();st=class extends Error{constructor(t){super(t),this.clipanion={type:\"usage\"},this.name=\"UsageError\"}},BE=class extends Error{constructor(t,r){if(super(),this.input=t,this.candidates=r,this.clipanion={type:\"none\"},this.name=\"UnknownSyntaxError\",this.candidates.length===0)this.message=\"Command not found, but we're not sure what's the alternative.\";else if(this.candidates.every(s=>s.reason!==null&&s.reason===r[0].reason)){let[{reason:s}]=this.candidates;this.message=`${s}\n\n${this.candidates.map(({usage:a})=>`$ ${a}`).join(`\n`)}`}else if(this.candidates.length===1){let[{usage:s}]=this.candidates;this.message=`Command not found; did you mean:\n\n$ ${s}\n${YU(t)}`}else this.message=`Command not found; did you mean one of:\n\n${this.candidates.map(({usage:s},a)=>`${`${a}.`.padStart(4)} ${s}`).join(`\n`)}\n\n${YU(t)}`}},xx=class extends Error{constructor(t,r){super(),this.input=t,this.usages=r,this.clipanion={type:\"none\"},this.name=\"AmbiguousSyntaxError\",this.message=`Cannot find which to pick amongst the following alternatives:\n\n${this.usages.map((s,a)=>`${`${a}.`.padStart(4)} ${s}`).join(`\n`)}\n\n${YU(t)}`}},YU=e=>`While running ${e.filter(t=>t!==ni.EndOfInput&&t!==ni.EndOfPartialInput).map(t=>{let r=JSON.stringify(t);return t.match(/\\s/)||t.length===0||r!==`\"${t}\"`?r:t}).join(\" \")}`});function Aqe(e){let t=e.split(`\n`),r=t.filter(a=>a.match(/\\S/)),s=r.length>0?r.reduce((a,n)=>Math.min(a,n.length-n.trimStart().length),Number.MAX_VALUE):0;return t.map(a=>a.slice(s).trimRight()).join(`\n`)}function Vo(e,{format:t,paragraphs:r}){return e=e.replace(/\\r\\n?/g,`\n`),e=Aqe(e),e=e.replace(/^\\n+|\\n+$/g,\"\"),e=e.replace(/^(\\s*)-([^\\n]*?)\\n+/gm,`$1-$2\n\n`),e=e.replace(/\\n(\\n)?\\n*/g,(s,a)=>a||\" \"),r&&(e=e.split(/\\n/).map(s=>{let a=s.match(/^\\s*[*-][\\t ]+(.*)/);if(!a)return s.match(/(.{1,80})(?: |$)/g).join(`\n`);let n=s.length-s.trimStart().length;return a[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,\"g\")).map((c,f)=>\" \".repeat(n)+(f===0?\"- \":\"  \")+c).join(`\n`)}).join(`\n\n`)),e=e.replace(/(`+)((?:.|[\\n])*?)\\1/g,(s,a,n)=>t.code(a+n+a)),e=e.replace(/(\\*\\*)((?:.|[\\n])*?)\\1/g,(s,a,n)=>t.bold(a+n+a)),e?`${e}\n`:\"\"}var KU,Yte,Kte,JU=Ze(()=>{KU=Array(80).fill(\"\\u2501\");for(let e=0;e<=24;++e)KU[KU.length-e]=`\\x1B[38;5;${232+e}m\\u2501`;Yte={header:e=>`\\x1B[1m\\u2501\\u2501\\u2501 ${e}${e.length<75?` ${KU.slice(e.length+5).join(\"\")}`:\":\"}\\x1B[0m`,bold:e=>`\\x1B[1m${e}\\x1B[22m`,error:e=>`\\x1B[31m\\x1B[1m${e}\\x1B[22m\\x1B[39m`,code:e=>`\\x1B[36m${e}\\x1B[39m`},Kte={header:e=>e,bold:e=>e,error:e=>e,code:e=>e}});function wa(e){return{...e,[HB]:!0}}function Wf(e,t){return typeof e>\"u\"?[e,t]:typeof e==\"object\"&&e!==null&&!Array.isArray(e)?[void 0,e]:[e,t]}function Qx(e,{mergeName:t=!1}={}){let r=e.match(/^([^:]+): (.*)$/m);if(!r)return\"validation failed\";let[,s,a]=r;return t&&(a=a[0].toLowerCase()+a.slice(1)),a=s!==\".\"||!t?`${s.replace(/^\\.(\\[|$)/,\"$1\")}: ${a}`:`: ${a}`,a}function jB(e,t){return t.length===1?new st(`${e}${Qx(t[0],{mergeName:!0})}`):new st(`${e}:\n${t.map(r=>`\n- ${Qx(r)}`).join(\"\")}`)}function Fd(e,t,r){if(typeof r>\"u\")return t;let s=[],a=[],n=f=>{let p=t;return t=f,n.bind(null,p)};if(!r(t,{errors:s,coercions:a,coercion:n}))throw jB(`Invalid value for ${e}`,s);for(let[,f]of a)f();return t}var HB,wp=Ze(()=>{kx();HB=Symbol(\"clipanion/isOption\")});var Yo={};Yt(Yo,{KeyRelationship:()=>Vf,TypeAssertionError:()=>i0,applyCascade:()=>WB,as:()=>Qqe,assert:()=>Pqe,assertWithErrors:()=>xqe,cascade:()=>Nx,fn:()=>Rqe,hasAtLeastOneKey:()=>r_,hasExactLength:()=>$te,hasForbiddenKeys:()=>Zqe,hasKeyRelationship:()=>YB,hasMaxLength:()=>Fqe,hasMinLength:()=>Tqe,hasMutuallyExclusiveKeys:()=>Xqe,hasRequiredKeys:()=>zqe,hasUniqueItems:()=>Nqe,isArray:()=>Rx,isAtLeast:()=>e_,isAtMost:()=>Mqe,isBase64:()=>Vqe,isBoolean:()=>Iqe,isDate:()=>wqe,isDict:()=>Sqe,isEnum:()=>ks,isHexColor:()=>Wqe,isISO8601:()=>qqe,isInExclusiveRange:()=>_qe,isInInclusiveRange:()=>Uqe,isInstanceOf:()=>bqe,isInteger:()=>t_,isJSON:()=>Yqe,isLiteral:()=>zte,isLowerCase:()=>Hqe,isMap:()=>vqe,isNegative:()=>Oqe,isNullable:()=>Jqe,isNumber:()=>XU,isObject:()=>Zte,isOneOf:()=>$U,isOptional:()=>Kqe,isPartial:()=>Dqe,isPayload:()=>Cqe,isPositive:()=>Lqe,isRecord:()=>Fx,isSet:()=>Bqe,isString:()=>SE,isTuple:()=>Tx,isUUID4:()=>Gqe,isUnknown:()=>ZU,isUpperCase:()=>jqe,makeTrait:()=>Xte,makeValidator:()=>Wr,matchesRegExp:()=>qB,softAssert:()=>kqe});function ii(e){return e===null?\"null\":e===void 0?\"undefined\":e===\"\"?\"an empty string\":typeof e==\"symbol\"?`<${e.toString()}>`:Array.isArray(e)?\"an array\":JSON.stringify(e)}function vE(e,t){if(e.length===0)return\"nothing\";if(e.length===1)return ii(e[0]);let r=e.slice(0,-1),s=e[e.length-1],a=e.length>2?`, ${t} `:` ${t} `;return`${r.map(n=>ii(n)).join(\", \")}${a}${ii(s)}`}function n0(e,t){var r,s,a;return typeof t==\"number\"?`${(r=e?.p)!==null&&r!==void 0?r:\".\"}[${t}]`:pqe.test(t)?`${(s=e?.p)!==null&&s!==void 0?s:\"\"}.${t}`:`${(a=e?.p)!==null&&a!==void 0?a:\".\"}[${JSON.stringify(t)}]`}function zU(e,t,r){return e===1?t:r}function mr({errors:e,p:t}={},r){return e?.push(`${t??\".\"}: ${r}`),!1}function yqe(e,t){return r=>{e[t]=r}}function Yf(e,t){return r=>{let s=e[t];return e[t]=r,Yf(e,t).bind(null,s)}}function GB(e,t,r){let s=()=>(e(r()),a),a=()=>(e(t),s);return s}function ZU(){return Wr({test:(e,t)=>!0})}function zte(e){return Wr({test:(t,r)=>t!==e?mr(r,`Expected ${ii(e)} (got ${ii(t)})`):!0})}function SE(){return Wr({test:(e,t)=>typeof e!=\"string\"?mr(t,`Expected a string (got ${ii(e)})`):!0})}function ks(e){let t=Array.isArray(e)?e:Object.values(e),r=t.every(a=>typeof a==\"string\"||typeof a==\"number\"),s=new Set(t);return s.size===1?zte([...s][0]):Wr({test:(a,n)=>s.has(a)?!0:r?mr(n,`Expected one of ${vE(t,\"or\")} (got ${ii(a)})`):mr(n,`Expected a valid enumeration value (got ${ii(a)})`)})}function Iqe(){return Wr({test:(e,t)=>{var r;if(typeof e!=\"boolean\"){if(typeof t?.coercions<\"u\"){if(typeof t?.coercion>\"u\")return mr(t,\"Unbound coercion result\");let s=Eqe.get(e);if(typeof s<\"u\")return t.coercions.push([(r=t.p)!==null&&r!==void 0?r:\".\",t.coercion.bind(null,s)]),!0}return mr(t,`Expected a boolean (got ${ii(e)})`)}return!0}})}function XU(){return Wr({test:(e,t)=>{var r;if(typeof e!=\"number\"){if(typeof t?.coercions<\"u\"){if(typeof t?.coercion>\"u\")return mr(t,\"Unbound coercion result\");let s;if(typeof e==\"string\"){let a;try{a=JSON.parse(e)}catch{}if(typeof a==\"number\")if(JSON.stringify(a)===e)s=a;else return mr(t,`Received a number that can't be safely represented by the runtime (${e})`)}if(typeof s<\"u\")return t.coercions.push([(r=t.p)!==null&&r!==void 0?r:\".\",t.coercion.bind(null,s)]),!0}return mr(t,`Expected a number (got ${ii(e)})`)}return!0}})}function Cqe(e){return Wr({test:(t,r)=>{var s;if(typeof r?.coercions>\"u\")return mr(r,\"The isPayload predicate can only be used with coercion enabled\");if(typeof r.coercion>\"u\")return mr(r,\"Unbound coercion result\");if(typeof t!=\"string\")return mr(r,`Expected a string (got ${ii(t)})`);let a;try{a=JSON.parse(t)}catch{return mr(r,`Expected a JSON string (got ${ii(t)})`)}let n={value:a};return e(a,Object.assign(Object.assign({},r),{coercion:Yf(n,\"value\")}))?(r.coercions.push([(s=r.p)!==null&&s!==void 0?s:\".\",r.coercion.bind(null,n.value)]),!0):!1}})}function wqe(){return Wr({test:(e,t)=>{var r;if(!(e instanceof Date)){if(typeof t?.coercions<\"u\"){if(typeof t?.coercion>\"u\")return mr(t,\"Unbound coercion result\");let s;if(typeof e==\"string\"&&Jte.test(e))s=new Date(e);else{let a;if(typeof e==\"string\"){let n;try{n=JSON.parse(e)}catch{}typeof n==\"number\"&&(a=n)}else typeof e==\"number\"&&(a=e);if(typeof a<\"u\")if(Number.isSafeInteger(a)||!Number.isSafeInteger(a*1e3))s=new Date(a*1e3);else return mr(t,`Received a timestamp that can't be safely represented by the runtime (${e})`)}if(typeof s<\"u\")return t.coercions.push([(r=t.p)!==null&&r!==void 0?r:\".\",t.coercion.bind(null,s)]),!0}return mr(t,`Expected a date (got ${ii(e)})`)}return!0}})}function Rx(e,{delimiter:t}={}){return Wr({test:(r,s)=>{var a;let n=r;if(typeof r==\"string\"&&typeof t<\"u\"&&typeof s?.coercions<\"u\"){if(typeof s?.coercion>\"u\")return mr(s,\"Unbound coercion result\");r=r.split(t)}if(!Array.isArray(r))return mr(s,`Expected an array (got ${ii(r)})`);let c=!0;for(let f=0,p=r.length;f<p&&(c=e(r[f],Object.assign(Object.assign({},s),{p:n0(s,f),coercion:Yf(r,f)}))&&c,!(!c&&s?.errors==null));++f);return r!==n&&s.coercions.push([(a=s.p)!==null&&a!==void 0?a:\".\",s.coercion.bind(null,r)]),c}})}function Bqe(e,{delimiter:t}={}){let r=Rx(e,{delimiter:t});return Wr({test:(s,a)=>{var n,c;if(Object.getPrototypeOf(s).toString()===\"[object Set]\")if(typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return mr(a,\"Unbound coercion result\");let f=[...s],p=[...s];if(!r(p,Object.assign(Object.assign({},a),{coercion:void 0})))return!1;let h=()=>p.some((E,C)=>E!==f[C])?new Set(p):s;return a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",GB(a.coercion,s,h)]),!0}else{let f=!0;for(let p of s)if(f=e(p,Object.assign({},a))&&f,!f&&a?.errors==null)break;return f}if(typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return mr(a,\"Unbound coercion result\");let f={value:s};return r(s,Object.assign(Object.assign({},a),{coercion:Yf(f,\"value\")}))?(a.coercions.push([(c=a.p)!==null&&c!==void 0?c:\".\",GB(a.coercion,s,()=>new Set(f.value))]),!0):!1}return mr(a,`Expected a set (got ${ii(s)})`)}})}function vqe(e,t){let r=Rx(Tx([e,t])),s=Fx(t,{keys:e});return Wr({test:(a,n)=>{var c,f,p;if(Object.getPrototypeOf(a).toString()===\"[object Map]\")if(typeof n?.coercions<\"u\"){if(typeof n?.coercion>\"u\")return mr(n,\"Unbound coercion result\");let h=[...a],E=[...a];if(!r(E,Object.assign(Object.assign({},n),{coercion:void 0})))return!1;let C=()=>E.some((S,x)=>S[0]!==h[x][0]||S[1]!==h[x][1])?new Map(E):a;return n.coercions.push([(c=n.p)!==null&&c!==void 0?c:\".\",GB(n.coercion,a,C)]),!0}else{let h=!0;for(let[E,C]of a)if(h=e(E,Object.assign({},n))&&h,!h&&n?.errors==null||(h=t(C,Object.assign(Object.assign({},n),{p:n0(n,E)}))&&h,!h&&n?.errors==null))break;return h}if(typeof n?.coercions<\"u\"){if(typeof n?.coercion>\"u\")return mr(n,\"Unbound coercion result\");let h={value:a};return Array.isArray(a)?r(a,Object.assign(Object.assign({},n),{coercion:void 0}))?(n.coercions.push([(f=n.p)!==null&&f!==void 0?f:\".\",GB(n.coercion,a,()=>new Map(h.value))]),!0):!1:s(a,Object.assign(Object.assign({},n),{coercion:Yf(h,\"value\")}))?(n.coercions.push([(p=n.p)!==null&&p!==void 0?p:\".\",GB(n.coercion,a,()=>new Map(Object.entries(h.value)))]),!0):!1}return mr(n,`Expected a map (got ${ii(a)})`)}})}function Tx(e,{delimiter:t}={}){let r=$te(e.length);return Wr({test:(s,a)=>{var n;if(typeof s==\"string\"&&typeof t<\"u\"&&typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return mr(a,\"Unbound coercion result\");s=s.split(t),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,s)])}if(!Array.isArray(s))return mr(a,`Expected a tuple (got ${ii(s)})`);let c=r(s,Object.assign({},a));for(let f=0,p=s.length;f<p&&f<e.length&&(c=e[f](s[f],Object.assign(Object.assign({},a),{p:n0(a,f),coercion:Yf(s,f)}))&&c,!(!c&&a?.errors==null));++f);return c}})}function Fx(e,{keys:t=null}={}){let r=Rx(Tx([t??SE(),e]));return Wr({test:(s,a)=>{var n;if(Array.isArray(s)&&typeof a?.coercions<\"u\")return typeof a?.coercion>\"u\"?mr(a,\"Unbound coercion result\"):r(s,Object.assign(Object.assign({},a),{coercion:void 0}))?(s=Object.fromEntries(s),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,s)]),!0):!1;if(typeof s!=\"object\"||s===null)return mr(a,`Expected an object (got ${ii(s)})`);let c=Object.keys(s),f=!0;for(let p=0,h=c.length;p<h&&(f||a?.errors!=null);++p){let E=c[p],C=s[E];if(E===\"__proto__\"||E===\"constructor\"){f=mr(Object.assign(Object.assign({},a),{p:n0(a,E)}),\"Unsafe property name\");continue}if(t!==null&&!t(E,a)){f=!1;continue}if(!e(C,Object.assign(Object.assign({},a),{p:n0(a,E),coercion:Yf(s,E)}))){f=!1;continue}}return f}})}function Sqe(e,t={}){return Fx(e,t)}function Zte(e,{extra:t=null}={}){let r=Object.keys(e),s=Wr({test:(a,n)=>{if(typeof a!=\"object\"||a===null)return mr(n,`Expected an object (got ${ii(a)})`);let c=new Set([...r,...Object.keys(a)]),f={},p=!0;for(let h of c){if(h===\"constructor\"||h===\"__proto__\")p=mr(Object.assign(Object.assign({},n),{p:n0(n,h)}),\"Unsafe property name\");else{let E=Object.prototype.hasOwnProperty.call(e,h)?e[h]:void 0,C=Object.prototype.hasOwnProperty.call(a,h)?a[h]:void 0;typeof E<\"u\"?p=E(C,Object.assign(Object.assign({},n),{p:n0(n,h),coercion:Yf(a,h)}))&&p:t===null?p=mr(Object.assign(Object.assign({},n),{p:n0(n,h)}),`Extraneous property (got ${ii(C)})`):Object.defineProperty(f,h,{enumerable:!0,get:()=>C,set:yqe(a,h)})}if(!p&&n?.errors==null)break}return t!==null&&(p||n?.errors!=null)&&(p=t(f,n)&&p),p}});return Object.assign(s,{properties:e})}function Dqe(e){return Zte(e,{extra:Fx(ZU())})}function Xte(e){return()=>e}function Wr({test:e}){return Xte(e)()}function Pqe(e,t){if(!t(e))throw new i0}function xqe(e,t){let r=[];if(!t(e,{errors:r}))throw new i0({errors:r})}function kqe(e,t){}function Qqe(e,t,{coerce:r=!1,errors:s,throw:a}={}){let n=s?[]:void 0;if(!r){if(t(e,{errors:n}))return a?e:{value:e,errors:void 0};if(a)throw new i0({errors:n});return{value:void 0,errors:n??!0}}let c={value:e},f=Yf(c,\"value\"),p=[];if(!t(e,{errors:n,coercion:f,coercions:p})){if(a)throw new i0({errors:n});return{value:void 0,errors:n??!0}}for(let[,h]of p)h();return a?c.value:{value:c.value,errors:void 0}}function Rqe(e,t){let r=Tx(e);return(...s)=>{if(!r(s))throw new i0;return t(...s)}}function Tqe(e){return Wr({test:(t,r)=>t.length>=e?!0:mr(r,`Expected to have a length of at least ${e} elements (got ${t.length})`)})}function Fqe(e){return Wr({test:(t,r)=>t.length<=e?!0:mr(r,`Expected to have a length of at most ${e} elements (got ${t.length})`)})}function $te(e){return Wr({test:(t,r)=>t.length!==e?mr(r,`Expected to have a length of exactly ${e} elements (got ${t.length})`):!0})}function Nqe({map:e}={}){return Wr({test:(t,r)=>{let s=new Set,a=new Set;for(let n=0,c=t.length;n<c;++n){let f=t[n],p=typeof e<\"u\"?e(f):f;if(s.has(p)){if(a.has(p))continue;mr(r,`Expected to contain unique elements; got a duplicate with ${ii(t)}`),a.add(p)}else s.add(p)}return a.size===0}})}function Oqe(){return Wr({test:(e,t)=>e<=0?!0:mr(t,`Expected to be negative (got ${e})`)})}function Lqe(){return Wr({test:(e,t)=>e>=0?!0:mr(t,`Expected to be positive (got ${e})`)})}function e_(e){return Wr({test:(t,r)=>t>=e?!0:mr(r,`Expected to be at least ${e} (got ${t})`)})}function Mqe(e){return Wr({test:(t,r)=>t<=e?!0:mr(r,`Expected to be at most ${e} (got ${t})`)})}function Uqe(e,t){return Wr({test:(r,s)=>r>=e&&r<=t?!0:mr(s,`Expected to be in the [${e}; ${t}] range (got ${r})`)})}function _qe(e,t){return Wr({test:(r,s)=>r>=e&&r<t?!0:mr(s,`Expected to be in the [${e}; ${t}[ range (got ${r})`)})}function t_({unsafe:e=!1}={}){return Wr({test:(t,r)=>t!==Math.round(t)?mr(r,`Expected to be an integer (got ${t})`):!e&&!Number.isSafeInteger(t)?mr(r,`Expected to be a safe integer (got ${t})`):!0})}function qB(e){return Wr({test:(t,r)=>e.test(t)?!0:mr(r,`Expected to match the pattern ${e.toString()} (got ${ii(t)})`)})}function Hqe(){return Wr({test:(e,t)=>e!==e.toLowerCase()?mr(t,`Expected to be all-lowercase (got ${e})`):!0})}function jqe(){return Wr({test:(e,t)=>e!==e.toUpperCase()?mr(t,`Expected to be all-uppercase (got ${e})`):!0})}function Gqe(){return Wr({test:(e,t)=>mqe.test(e)?!0:mr(t,`Expected to be a valid UUID v4 (got ${ii(e)})`)})}function qqe(){return Wr({test:(e,t)=>Jte.test(e)?!0:mr(t,`Expected to be a valid ISO 8601 date string (got ${ii(e)})`)})}function Wqe({alpha:e=!1}){return Wr({test:(t,r)=>(e?hqe.test(t):gqe.test(t))?!0:mr(r,`Expected to be a valid hexadecimal color string (got ${ii(t)})`)})}function Vqe(){return Wr({test:(e,t)=>dqe.test(e)?!0:mr(t,`Expected to be a valid base 64 string (got ${ii(e)})`)})}function Yqe(e=ZU()){return Wr({test:(t,r)=>{let s;try{s=JSON.parse(t)}catch{return mr(r,`Expected to be a valid JSON string (got ${ii(t)})`)}return e(s,r)}})}function Nx(e,...t){let r=Array.isArray(t[0])?t[0]:t;return Wr({test:(s,a)=>{var n,c;let f={value:s},p=typeof a?.coercions<\"u\"?Yf(f,\"value\"):void 0,h=typeof a?.coercions<\"u\"?[]:void 0;if(!e(s,Object.assign(Object.assign({},a),{coercion:p,coercions:h})))return!1;let E=[];if(typeof h<\"u\")for(let[,C]of h)E.push(C());try{if(typeof a?.coercions<\"u\"){if(f.value!==s){if(typeof a?.coercion>\"u\")return mr(a,\"Unbound coercion result\");a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,f.value)])}(c=a?.coercions)===null||c===void 0||c.push(...h)}return r.every(C=>C(f.value,a))}finally{for(let C of E)C()}}})}function WB(e,...t){let r=Array.isArray(t[0])?t[0]:t;return Nx(e,r)}function Kqe(e){return Wr({test:(t,r)=>typeof t>\"u\"?!0:e(t,r)})}function Jqe(e){return Wr({test:(t,r)=>t===null?!0:e(t,r)})}function zqe(e,t){var r;let s=new Set(e),a=VB[(r=t?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)||p.push(h);return p.length>0?mr(c,`Missing required ${zU(p.length,\"property\",\"properties\")} ${vE(p,\"and\")}`):!0}})}function r_(e,t){var r;let s=new Set(e),a=VB[(r=t?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Wr({test:(n,c)=>Object.keys(n).some(h=>a(s,h,n))?!0:mr(c,`Missing at least one property from ${vE(Array.from(s),\"or\")}`)})}function Zqe(e,t){var r;let s=new Set(e),a=VB[(r=t?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)&&p.push(h);return p.length>0?mr(c,`Forbidden ${zU(p.length,\"property\",\"properties\")} ${vE(p,\"and\")}`):!0}})}function Xqe(e,t){var r;let s=new Set(e),a=VB[(r=t?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)&&p.push(h);return p.length>1?mr(c,`Mutually exclusive properties ${vE(p,\"and\")}`):!0}})}function YB(e,t,r,s){var a,n;let c=new Set((a=s?.ignore)!==null&&a!==void 0?a:[]),f=VB[(n=s?.missingIf)!==null&&n!==void 0?n:\"missing\"],p=new Set(r),h=$qe[t],E=t===Vf.Forbids?\"or\":\"and\";return Wr({test:(C,S)=>{let x=new Set(Object.keys(C));if(!f(x,e,C)||c.has(C[e]))return!0;let I=[];for(let T of p)(f(x,T,C)&&!c.has(C[T]))!==h.expect&&I.push(T);return I.length>=1?mr(S,`Property \"${e}\" ${h.message} ${zU(I.length,\"property\",\"properties\")} ${vE(I,E)}`):!0}})}var pqe,hqe,gqe,dqe,mqe,Jte,Eqe,bqe,$U,i0,VB,Vf,$qe,ul=Ze(()=>{pqe=/^[a-zA-Z_][a-zA-Z0-9_]*$/;hqe=/^#[0-9a-f]{6}$/i,gqe=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,dqe=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,mqe=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,Jte=/^(?:[1-9]\\d{3}(-?)(?:(?:0[1-9]|1[0-2])\\1(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])\\1(?:29|30)|(?:0[13578]|1[02])(?:\\1)31|00[1-9]|0[1-9]\\d|[12]\\d{2}|3(?:[0-5]\\d|6[0-5]))|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\\2)29|-?366))T(?:[01]\\d|2[0-3])(:?)[0-5]\\d(?:\\3[0-5]\\d)?(?:Z|[+-][01]\\d(?:\\3[0-5]\\d)?)$/;Eqe=new Map([[\"true\",!0],[\"True\",!0],[\"1\",!0],[1,!0],[\"false\",!1],[\"False\",!1],[\"0\",!1],[0,!1]]);bqe=e=>Wr({test:(t,r)=>t instanceof e?!0:mr(r,`Expected an instance of ${e.name} (got ${ii(t)})`)}),$U=(e,{exclusive:t=!1}={})=>Wr({test:(r,s)=>{var a,n,c;let f=[],p=typeof s?.errors<\"u\"?[]:void 0;for(let h=0,E=e.length;h<E;++h){let C=typeof s?.errors<\"u\"?[]:void 0,S=typeof s?.coercions<\"u\"?[]:void 0;if(e[h](r,Object.assign(Object.assign({},s),{errors:C,coercions:S,p:`${(a=s?.p)!==null&&a!==void 0?a:\".\"}#${h+1}`}))){if(f.push([`#${h+1}`,S]),!t)break}else p?.push(C[0])}if(f.length===1){let[,h]=f[0];return typeof h<\"u\"&&((n=s?.coercions)===null||n===void 0||n.push(...h)),!0}return f.length>1?mr(s,`Expected to match exactly a single predicate (matched ${f.join(\", \")})`):(c=s?.errors)===null||c===void 0||c.push(...p),!1}});i0=class extends Error{constructor({errors:t}={}){let r=\"Type mismatch\";if(t&&t.length>0){r+=`\n`;for(let s of t)r+=`\n- ${s}`}super(r)}};VB={missing:(e,t)=>e.has(t),undefined:(e,t,r)=>e.has(t)&&typeof r[t]<\"u\",nil:(e,t,r)=>e.has(t)&&r[t]!=null,falsy:(e,t,r)=>e.has(t)&&!!r[t]};(function(e){e.Forbids=\"Forbids\",e.Requires=\"Requires\"})(Vf||(Vf={}));$qe={[Vf.Forbids]:{expect:!1,message:\"forbids using\"},[Vf.Requires]:{expect:!0,message:\"requires using\"}}});var at,s0=Ze(()=>{wp();at=class{constructor(){this.help=!1}static Usage(t){return t}async catch(t){throw t}async validateAndExecute(){let r=this.constructor.schema;if(Array.isArray(r)){let{isDict:a,isUnknown:n,applyCascade:c}=await Promise.resolve().then(()=>(ul(),Yo)),f=c(a(n()),r),p=[],h=[];if(!f(this,{errors:p,coercions:h}))throw jB(\"Invalid option schema\",p);for(let[,C]of h)C()}else if(r!=null)throw new Error(\"Invalid command schema\");let s=await this.execute();return typeof s<\"u\"?s:0}};at.isOption=HB;at.Default=[]});function fl(e){VU&&console.log(e)}function tre(){let e={nodes:[]};for(let t=0;t<In.CustomNode;++t)e.nodes.push(Wl());return e}function e9e(e){let t=tre(),r=[],s=t.nodes.length;for(let a of e){r.push(s);for(let n=0;n<a.nodes.length;++n)nre(n)||t.nodes.push(l9e(a.nodes[n],s));s+=a.nodes.length-In.CustomNode+1}for(let a of r)DE(t,In.InitialNode,a);return t}function Fu(e,t){return e.nodes.push(t),e.nodes.length-1}function t9e(e){let t=new Set,r=s=>{if(t.has(s))return;t.add(s);let a=e.nodes[s];for(let c of Object.values(a.statics))for(let{to:f}of c)r(f);for(let[,{to:c}]of a.dynamics)r(c);for(let{to:c}of a.shortcuts)r(c);let n=new Set(a.shortcuts.map(({to:c})=>c));for(;a.shortcuts.length>0;){let{to:c}=a.shortcuts.shift(),f=e.nodes[c];for(let[p,h]of Object.entries(f.statics)){let E=Object.prototype.hasOwnProperty.call(a.statics,p)?a.statics[p]:a.statics[p]=[];for(let C of h)E.some(({to:S})=>C.to===S)||E.push(C)}for(let[p,h]of f.dynamics)a.dynamics.some(([E,{to:C}])=>p===E&&h.to===C)||a.dynamics.push([p,h]);for(let p of f.shortcuts)n.has(p.to)||(a.shortcuts.push(p),n.add(p.to))}};r(In.InitialNode)}function r9e(e,{prefix:t=\"\"}={}){if(VU){fl(`${t}Nodes are:`);for(let r=0;r<e.nodes.length;++r)fl(`${t}  ${r}: ${JSON.stringify(e.nodes[r])}`)}}function n9e(e,t,r=!1){fl(`Running a vm on ${JSON.stringify(t)}`);let s=[{node:In.InitialNode,state:{candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,options:[],path:[],positionals:[],remainder:null,selectedIndex:null,partial:!1,tokens:[]}}];r9e(e,{prefix:\"  \"});let a=[ni.StartOfInput,...t];for(let n=0;n<a.length;++n){let c=a[n],f=c===ni.EndOfInput||c===ni.EndOfPartialInput,p=n-1;fl(`  Processing ${JSON.stringify(c)}`);let h=[];for(let{node:E,state:C}of s){fl(`    Current node is ${E}`);let S=e.nodes[E];if(E===In.ErrorNode){h.push({node:E,state:C});continue}console.assert(S.shortcuts.length===0,\"Shortcuts should have been eliminated by now\");let x=Object.prototype.hasOwnProperty.call(S.statics,c);if(!r||n<a.length-1||x)if(x){let I=S.statics[c];for(let{to:T,reducer:O}of I)h.push({node:T,state:typeof O<\"u\"?Ox(i_,O,C,c,p):C}),fl(`      Static transition to ${T} found`)}else fl(\"      No static transition found\");else{let I=!1;for(let T of Object.keys(S.statics))if(T.startsWith(c)){if(c===T)for(let{to:O,reducer:U}of S.statics[T])h.push({node:O,state:typeof U<\"u\"?Ox(i_,U,C,c,p):C}),fl(`      Static transition to ${O} found`);else for(let{to:O}of S.statics[T])h.push({node:O,state:{...C,remainder:T.slice(c.length)}}),fl(`      Static transition to ${O} found (partial match)`);I=!0}I||fl(\"      No partial static transition found\")}if(!f)for(let[I,{to:T,reducer:O}]of S.dynamics)Ox(c9e,I,C,c,p)&&(h.push({node:T,state:typeof O<\"u\"?Ox(i_,O,C,c,p):C}),fl(`      Dynamic transition to ${T} found (via ${I})`))}if(h.length===0&&f&&t.length===1)return[{node:In.InitialNode,state:ere}];if(h.length===0)throw new BE(t,s.filter(({node:E})=>E!==In.ErrorNode).map(({state:E})=>({usage:E.candidateUsage,reason:null})));if(h.every(({node:E})=>E===In.ErrorNode))throw new BE(t,h.map(({state:E})=>({usage:E.candidateUsage,reason:E.errorMessage})));s=s9e(h)}if(s.length>0){fl(\"  Results:\");for(let n of s)fl(`    - ${n.node} -> ${JSON.stringify(n.state)}`)}else fl(\"  No results\");return s}function i9e(e,t,{endToken:r=ni.EndOfInput}={}){let s=n9e(e,[...t,r]);return o9e(t,s.map(({state:a})=>a))}function s9e(e){let t=0;for(let{state:r}of e)r.path.length>t&&(t=r.path.length);return e.filter(({state:r})=>r.path.length===t)}function o9e(e,t){let r=t.filter(S=>S.selectedIndex!==null),s=r.filter(S=>!S.partial);if(s.length>0&&(r=s),r.length===0)throw new Error;let a=r.filter(S=>S.selectedIndex===Td||S.requiredOptions.every(x=>x.some(I=>S.options.find(T=>T.name===I))));if(a.length===0)throw new BE(e,r.map(S=>({usage:S.candidateUsage,reason:null})));let n=0;for(let S of a)S.path.length>n&&(n=S.path.length);let c=a.filter(S=>S.path.length===n),f=S=>S.positionals.filter(({extra:x})=>!x).length+S.options.length,p=c.map(S=>({state:S,positionalCount:f(S)})),h=0;for(let{positionalCount:S}of p)S>h&&(h=S);let E=p.filter(({positionalCount:S})=>S===h).map(({state:S})=>S),C=a9e(E);if(C.length>1)throw new xx(e,C.map(S=>S.candidateUsage));return C[0]}function a9e(e){let t=[],r=[];for(let s of e)s.selectedIndex===Td?r.push(s):t.push(s);return r.length>0&&t.push({...ere,path:rre(...r.map(s=>s.path)),options:r.reduce((s,a)=>s.concat(a.options),[])}),t}function rre(e,t,...r){return t===void 0?Array.from(e):rre(e.filter((s,a)=>s===t[a]),...r)}function Wl(){return{dynamics:[],shortcuts:[],statics:{}}}function nre(e){return e===In.SuccessNode||e===In.ErrorNode}function n_(e,t=0){return{to:nre(e.to)?e.to:e.to>=In.CustomNode?e.to+t-In.CustomNode+1:e.to+t,reducer:e.reducer}}function l9e(e,t=0){let r=Wl();for(let[s,a]of e.dynamics)r.dynamics.push([s,n_(a,t)]);for(let s of e.shortcuts)r.shortcuts.push(n_(s,t));for(let[s,a]of Object.entries(e.statics))r.statics[s]=a.map(n=>n_(n,t));return r}function qs(e,t,r,s,a){e.nodes[t].dynamics.push([r,{to:s,reducer:a}])}function DE(e,t,r,s){e.nodes[t].shortcuts.push({to:r,reducer:s})}function Ba(e,t,r,s,a){(Object.prototype.hasOwnProperty.call(e.nodes[t].statics,r)?e.nodes[t].statics[r]:e.nodes[t].statics[r]=[]).push({to:s,reducer:a})}function Ox(e,t,r,s,a){if(Array.isArray(t)){let[n,...c]=t;return e[n](r,s,a,...c)}else return e[t](r,s,a)}var ere,c9e,i_,Vl,s_,Lx,Mx=Ze(()=>{Px();kx();ere={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:Td,partial:!1,tokens:[]};c9e={always:()=>!0,isOptionLike:(e,t)=>!e.ignoreOptions&&t!==\"-\"&&t.startsWith(\"-\"),isNotOptionLike:(e,t)=>e.ignoreOptions||t===\"-\"||!t.startsWith(\"-\"),isOption:(e,t,r,s)=>!e.ignoreOptions&&t===s,isBatchOption:(e,t,r,s)=>!e.ignoreOptions&&Vte.test(t)&&[...t.slice(1)].every(a=>s.has(`-${a}`)),isBoundOption:(e,t,r,s,a)=>{let n=t.match(WU);return!e.ignoreOptions&&!!n&&bx.test(n[1])&&s.has(n[1])&&a.filter(c=>c.nameSet.includes(n[1])).every(c=>c.allowBinding)},isNegatedOption:(e,t,r,s)=>!e.ignoreOptions&&t===`--no-${s.slice(2)}`,isHelp:(e,t)=>!e.ignoreOptions&&qU.test(t),isUnsupportedOption:(e,t,r,s)=>!e.ignoreOptions&&t.startsWith(\"-\")&&bx.test(t)&&!s.has(t),isInvalidOption:(e,t)=>!e.ignoreOptions&&t.startsWith(\"-\")&&!bx.test(t)},i_={setCandidateState:(e,t,r,s)=>({...e,...s}),setSelectedIndex:(e,t,r,s)=>({...e,selectedIndex:s}),setPartialIndex:(e,t,r,s)=>({...e,selectedIndex:s,partial:!0}),pushBatch:(e,t,r,s)=>{let a=e.options.slice(),n=e.tokens.slice();for(let c=1;c<t.length;++c){let f=s.get(`-${t[c]}`),p=c===1?[0,2]:[c,c+1];a.push({name:f,value:!0}),n.push({segmentIndex:r,type:\"option\",option:f,slice:p})}return{...e,options:a,tokens:n}},pushBound:(e,t,r)=>{let[,s,a]=t.match(WU),n=e.options.concat({name:s,value:a}),c=e.tokens.concat([{segmentIndex:r,type:\"option\",slice:[0,s.length],option:s},{segmentIndex:r,type:\"assign\",slice:[s.length,s.length+1]},{segmentIndex:r,type:\"value\",slice:[s.length+1,s.length+a.length+1]}]);return{...e,options:n,tokens:c}},pushPath:(e,t,r)=>{let s=e.path.concat(t),a=e.tokens.concat({segmentIndex:r,type:\"path\"});return{...e,path:s,tokens:a}},pushPositional:(e,t,r)=>{let s=e.positionals.concat({value:t,extra:!1}),a=e.tokens.concat({segmentIndex:r,type:\"positional\"});return{...e,positionals:s,tokens:a}},pushExtra:(e,t,r)=>{let s=e.positionals.concat({value:t,extra:!0}),a=e.tokens.concat({segmentIndex:r,type:\"positional\"});return{...e,positionals:s,tokens:a}},pushExtraNoLimits:(e,t,r)=>{let s=e.positionals.concat({value:t,extra:Vl}),a=e.tokens.concat({segmentIndex:r,type:\"positional\"});return{...e,positionals:s,tokens:a}},pushTrue:(e,t,r,s)=>{let a=e.options.concat({name:s,value:!0}),n=e.tokens.concat({segmentIndex:r,type:\"option\",option:s});return{...e,options:a,tokens:n}},pushFalse:(e,t,r,s)=>{let a=e.options.concat({name:s,value:!1}),n=e.tokens.concat({segmentIndex:r,type:\"option\",option:s});return{...e,options:a,tokens:n}},pushUndefined:(e,t,r,s)=>{let a=e.options.concat({name:t,value:void 0}),n=e.tokens.concat({segmentIndex:r,type:\"option\",option:t});return{...e,options:a,tokens:n}},pushStringValue:(e,t,r)=>{var s;let a=e.options[e.options.length-1],n=e.options.slice(),c=e.tokens.concat({segmentIndex:r,type:\"value\"});return a.value=((s=a.value)!==null&&s!==void 0?s:[]).concat([t]),{...e,options:n,tokens:c}},setStringValue:(e,t,r)=>{let s=e.options[e.options.length-1],a=e.options.slice(),n=e.tokens.concat({segmentIndex:r,type:\"value\"});return s.value=t,{...e,options:a,tokens:n}},inhibateOptions:e=>({...e,ignoreOptions:!0}),useHelp:(e,t,r,s)=>{let[,,a]=t.match(qU);return typeof a<\"u\"?{...e,options:[{name:\"-c\",value:String(s)},{name:\"-i\",value:a}]}:{...e,options:[{name:\"-c\",value:String(s)}]}},setError:(e,t,r,s)=>t===ni.EndOfInput||t===ni.EndOfPartialInput?{...e,errorMessage:`${s}.`}:{...e,errorMessage:`${s} (\"${t}\").`},setOptionArityError:(e,t)=>{let r=e.options[e.options.length-1];return{...e,errorMessage:`Not enough arguments to option ${r.name}.`}}},Vl=Symbol(),s_=class{constructor(t,r){this.allOptionNames=new Map,this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=t,this.cliOpts=r}addPath(t){this.paths.push(t)}setArity({leading:t=this.arity.leading,trailing:r=this.arity.trailing,extra:s=this.arity.extra,proxy:a=this.arity.proxy}){Object.assign(this.arity,{leading:t,trailing:r,extra:s,proxy:a})}addPositional({name:t=\"arg\",required:r=!0}={}){if(!r&&this.arity.extra===Vl)throw new Error(\"Optional parameters cannot be declared when using .rest() or .proxy()\");if(!r&&this.arity.trailing.length>0)throw new Error(\"Optional parameters cannot be declared after the required trailing positional arguments\");!r&&this.arity.extra!==Vl?this.arity.extra.push(t):this.arity.extra!==Vl&&this.arity.extra.length===0?this.arity.leading.push(t):this.arity.trailing.push(t)}addRest({name:t=\"arg\",required:r=0}={}){if(this.arity.extra===Vl)throw new Error(\"Infinite lists cannot be declared multiple times in the same command\");if(this.arity.trailing.length>0)throw new Error(\"Infinite lists cannot be declared after the required trailing positional arguments\");for(let s=0;s<r;++s)this.addPositional({name:t});this.arity.extra=Vl}addProxy({required:t=0}={}){this.addRest({required:t}),this.arity.proxy=!0}addOption({names:t,description:r,arity:s=0,hidden:a=!1,required:n=!1,allowBinding:c=!0}){if(!c&&s>1)throw new Error(\"The arity cannot be higher than 1 when the option only supports the --arg=value syntax\");if(!Number.isInteger(s))throw new Error(`The arity must be an integer, got ${s}`);if(s<0)throw new Error(`The arity must be positive, got ${s}`);let f=t.reduce((p,h)=>h.length>p.length?h:p,\"\");for(let p of t)this.allOptionNames.set(p,f);this.options.push({preferredName:f,nameSet:t,description:r,arity:s,hidden:a,required:n,allowBinding:c})}setContext(t){this.context=t}usage({detailed:t=!0,inlineOptions:r=!0}={}){let s=[this.cliOpts.binaryName],a=[];if(this.paths.length>0&&s.push(...this.paths[0]),t){for(let{preferredName:c,nameSet:f,arity:p,hidden:h,description:E,required:C}of this.options){if(h)continue;let S=[];for(let I=0;I<p;++I)S.push(` #${I}`);let x=`${f.join(\",\")}${S.join(\"\")}`;!r&&E?a.push({preferredName:c,nameSet:f,definition:x,description:E,required:C}):s.push(C?`<${x}>`:`[${x}]`)}s.push(...this.arity.leading.map(c=>`<${c}>`)),this.arity.extra===Vl?s.push(\"...\"):s.push(...this.arity.extra.map(c=>`[${c}]`)),s.push(...this.arity.trailing.map(c=>`<${c}>`))}return{usage:s.join(\" \"),options:a}}compile(){if(typeof this.context>\"u\")throw new Error(\"Assertion failed: No context attached\");let t=tre(),r=In.InitialNode,s=this.usage().usage,a=this.options.filter(f=>f.required).map(f=>f.nameSet);r=Fu(t,Wl()),Ba(t,In.InitialNode,ni.StartOfInput,r,[\"setCandidateState\",{candidateUsage:s,requiredOptions:a}]);let n=this.arity.proxy?\"always\":\"isNotOptionLike\",c=this.paths.length>0?this.paths:[[]];for(let f of c){let p=r;if(f.length>0){let S=Fu(t,Wl());DE(t,p,S),this.registerOptions(t,S),p=S}for(let S=0;S<f.length;++S){let x=Fu(t,Wl());Ba(t,p,f[S],x,\"pushPath\"),p=x}if(this.arity.leading.length>0||!this.arity.proxy){let S=Fu(t,Wl());qs(t,p,\"isHelp\",S,[\"useHelp\",this.cliIndex]),qs(t,S,\"always\",S,\"pushExtra\"),Ba(t,S,ni.EndOfInput,In.SuccessNode,[\"setSelectedIndex\",Td]),this.registerOptions(t,p)}this.arity.leading.length>0&&(Ba(t,p,ni.EndOfInput,In.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Ba(t,p,ni.EndOfPartialInput,In.SuccessNode,[\"setPartialIndex\",this.cliIndex]));let h=p;for(let S=0;S<this.arity.leading.length;++S){let x=Fu(t,Wl());(!this.arity.proxy||S+1!==this.arity.leading.length)&&this.registerOptions(t,x),(this.arity.trailing.length>0||S+1!==this.arity.leading.length)&&(Ba(t,x,ni.EndOfInput,In.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Ba(t,x,ni.EndOfPartialInput,In.SuccessNode,[\"setPartialIndex\",this.cliIndex])),qs(t,h,\"isNotOptionLike\",x,\"pushPositional\"),h=x}let E=h;if(this.arity.extra===Vl||this.arity.extra.length>0){let S=Fu(t,Wl());if(DE(t,h,S),this.arity.extra===Vl){let x=Fu(t,Wl());this.arity.proxy||this.registerOptions(t,x),qs(t,h,n,x,\"pushExtraNoLimits\"),qs(t,x,n,x,\"pushExtraNoLimits\"),DE(t,x,S)}else for(let x=0;x<this.arity.extra.length;++x){let I=Fu(t,Wl());(!this.arity.proxy||x>0)&&this.registerOptions(t,I),qs(t,E,n,I,\"pushExtra\"),DE(t,I,S),E=I}E=S}this.arity.trailing.length>0&&(Ba(t,E,ni.EndOfInput,In.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Ba(t,E,ni.EndOfPartialInput,In.SuccessNode,[\"setPartialIndex\",this.cliIndex]));let C=E;for(let S=0;S<this.arity.trailing.length;++S){let x=Fu(t,Wl());this.arity.proxy||this.registerOptions(t,x),S+1<this.arity.trailing.length&&(Ba(t,x,ni.EndOfInput,In.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Ba(t,x,ni.EndOfPartialInput,In.SuccessNode,[\"setPartialIndex\",this.cliIndex])),qs(t,C,\"isNotOptionLike\",x,\"pushPositional\"),C=x}qs(t,C,n,In.ErrorNode,[\"setError\",\"Extraneous positional argument\"]),Ba(t,C,ni.EndOfInput,In.SuccessNode,[\"setSelectedIndex\",this.cliIndex]),Ba(t,C,ni.EndOfPartialInput,In.SuccessNode,[\"setSelectedIndex\",this.cliIndex])}return{machine:t,context:this.context}}registerOptions(t,r){qs(t,r,[\"isOption\",\"--\"],r,\"inhibateOptions\"),qs(t,r,[\"isBatchOption\",this.allOptionNames],r,[\"pushBatch\",this.allOptionNames]),qs(t,r,[\"isBoundOption\",this.allOptionNames,this.options],r,\"pushBound\"),qs(t,r,[\"isUnsupportedOption\",this.allOptionNames],In.ErrorNode,[\"setError\",\"Unsupported option name\"]),qs(t,r,[\"isInvalidOption\"],In.ErrorNode,[\"setError\",\"Invalid option name\"]);for(let s of this.options)if(s.arity===0)for(let a of s.nameSet)qs(t,r,[\"isOption\",a],r,[\"pushTrue\",s.preferredName]),a.startsWith(\"--\")&&!a.startsWith(\"--no-\")&&qs(t,r,[\"isNegatedOption\",a],r,[\"pushFalse\",s.preferredName]);else{let a=Fu(t,Wl());for(let n of s.nameSet)qs(t,r,[\"isOption\",n],a,[\"pushUndefined\",s.preferredName]);for(let n=0;n<s.arity;++n){let c=Fu(t,Wl());Ba(t,a,ni.EndOfInput,In.ErrorNode,\"setOptionArityError\"),Ba(t,a,ni.EndOfPartialInput,In.ErrorNode,\"setOptionArityError\"),qs(t,a,\"isOptionLike\",In.ErrorNode,\"setOptionArityError\");let f=s.arity===1?\"setStringValue\":\"pushStringValue\";qs(t,a,\"isNotOptionLike\",c,f),a=c}DE(t,a,r)}}},Lx=class e{constructor({binaryName:t=\"...\"}={}){this.builders=[],this.opts={binaryName:t}}static build(t,r={}){return new e(r).commands(t).compile()}getBuilderByIndex(t){if(!(t>=0&&t<this.builders.length))throw new Error(`Assertion failed: Out-of-bound command index (${t})`);return this.builders[t]}commands(t){for(let r of t)r(this.command());return this}command(){let t=new s_(this.builders.length,this.opts);return this.builders.push(t),t}compile(){let t=[],r=[];for(let a of this.builders){let{machine:n,context:c}=a.compile();t.push(n),r.push(c)}let s=e9e(t);return t9e(s),{machine:s,contexts:r,process:(a,{partial:n}={})=>{let c=n?ni.EndOfPartialInput:ni.EndOfInput;return i9e(s,a,{endToken:c})}}}}});function sre(){return Ux.default&&\"getColorDepth\"in Ux.default.WriteStream.prototype?Ux.default.WriteStream.prototype.getColorDepth():process.env.FORCE_COLOR===\"0\"?1:process.env.FORCE_COLOR===\"1\"||typeof process.stdout<\"u\"&&process.stdout.isTTY?8:1}function ore(e){let t=ire;if(typeof t>\"u\"){if(e.stdout===process.stdout&&e.stderr===process.stderr)return null;let{AsyncLocalStorage:r}=Ie(\"async_hooks\");t=ire=new r;let s=process.stdout._write;process.stdout._write=function(n,c,f){let p=t.getStore();return typeof p>\"u\"?s.call(this,n,c,f):p.stdout.write(n,c,f)};let a=process.stderr._write;process.stderr._write=function(n,c,f){let p=t.getStore();return typeof p>\"u\"?a.call(this,n,c,f):p.stderr.write(n,c,f)}}return r=>t.run(e,r)}var Ux,ire,are=Ze(()=>{Ux=et(Ie(\"tty\"),1)});var _x,lre=Ze(()=>{s0();_x=class e extends at{constructor(t){super(),this.contexts=t,this.commands=[]}static from(t,r){let s=new e(r);s.path=t.path;for(let a of t.options)switch(a.name){case\"-c\":s.commands.push(Number(a.value));break;case\"-i\":s.index=Number(a.value);break}return s}async execute(){let t=this.commands;if(typeof this.index<\"u\"&&this.index>=0&&this.index<t.length&&(t=[t[this.index]]),t.length===0)this.context.stdout.write(this.cli.usage());else if(t.length===1)this.context.stdout.write(this.cli.usage(this.contexts[t[0]].commandClass,{detailed:!0}));else if(t.length>1){this.context.stdout.write(`Multiple commands match your selection:\n`),this.context.stdout.write(`\n`);let r=0;for(let s of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[s].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(`\n`),this.context.stdout.write(`Run again with -h=<index> to see the longer details of any of those commands.\n`)}}}});async function fre(...e){let{resolvedOptions:t,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=pre(e);return va.from(r,t).runExit(s,a)}async function Are(...e){let{resolvedOptions:t,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=pre(e);return va.from(r,t).run(s,a)}function pre(e){let t,r,s,a;switch(typeof process<\"u\"&&typeof process.argv<\"u\"&&(s=process.argv.slice(2)),e.length){case 1:r=e[0];break;case 2:e[0]&&e[0].prototype instanceof at||Array.isArray(e[0])?(r=e[0],Array.isArray(e[1])?s=e[1]:a=e[1]):(t=e[0],r=e[1]);break;case 3:Array.isArray(e[2])?(t=e[0],r=e[1],s=e[2]):e[0]&&e[0].prototype instanceof at||Array.isArray(e[0])?(r=e[0],s=e[1],a=e[2]):(t=e[0],r=e[1],a=e[2]);break;default:t=e[0],r=e[1],s=e[2],a=e[3];break}if(typeof s>\"u\")throw new Error(\"The argv parameter must be provided when running Clipanion outside of a Node context\");return{resolvedOptions:t,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}}function ure(e){return e()}var cre,va,hre=Ze(()=>{Px();Mx();JU();are();s0();lre();cre=Symbol(\"clipanion/errorCommand\");va=class e{constructor({binaryLabel:t,binaryName:r=\"...\",binaryVersion:s,enableCapture:a=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new Lx({binaryName:r}),this.binaryLabel=t,this.binaryName=r,this.binaryVersion=s,this.enableCapture=a,this.enableColors=n}static from(t,r={}){let s=new e(r),a=Array.isArray(t)?t:[t];for(let n of a)s.register(n);return s}register(t){var r;let s=new Map,a=new t;for(let p in a){let h=a[p];typeof h==\"object\"&&h!==null&&h[at.isOption]&&s.set(p,h)}let n=this.builder.command(),c=n.cliIndex,f=(r=t.paths)!==null&&r!==void 0?r:a.paths;if(typeof f<\"u\")for(let p of f)n.addPath(p);this.registrations.set(t,{specs:s,builder:n,index:c});for(let[p,{definition:h}]of s.entries())h(n,p);n.setContext({commandClass:t})}process(t,r){let{input:s,context:a,partial:n}=typeof t==\"object\"&&Array.isArray(t)?{input:t,context:r}:t,{contexts:c,process:f}=this.builder.compile(),p=f(s,{partial:n}),h={...e.defaultContext,...a};switch(p.selectedIndex){case Td:{let E=_x.from(p,c);return E.context=h,E.tokens=p.tokens,E}default:{let{commandClass:E}=c[p.selectedIndex],C=this.registrations.get(E);if(typeof C>\"u\")throw new Error(\"Assertion failed: Expected the command class to have been registered.\");let S=new E;S.context=h,S.tokens=p.tokens,S.path=p.path;try{for(let[x,{transformer:I}]of C.specs.entries())S[x]=I(C.builder,x,p,h);return S}catch(x){throw x[cre]=S,x}}break}}async run(t,r){var s,a;let n,c={...e.defaultContext,...r},f=(s=this.enableColors)!==null&&s!==void 0?s:c.colorDepth>1;if(!Array.isArray(t))n=t;else try{n=this.process(t,c)}catch(E){return c.stdout.write(this.error(E,{colored:f})),1}if(n.help)return c.stdout.write(this.usage(n,{colored:f,detailed:!0})),0;n.context=c,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),definition:E=>this.definition(E),error:(E,C)=>this.error(E,C),format:E=>this.format(E),process:(E,C)=>this.process(E,{...c,...C}),run:(E,C)=>this.run(E,{...c,...C}),usage:(E,C)=>this.usage(E,C)};let p=this.enableCapture&&(a=ore(c))!==null&&a!==void 0?a:ure,h;try{h=await p(()=>n.validateAndExecute().catch(E=>n.catch(E).then(()=>0)))}catch(E){return c.stdout.write(this.error(E,{colored:f,command:n})),1}return h}async runExit(t,r){process.exitCode=await this.run(t,r)}definition(t,{colored:r=!1}={}){if(!t.usage)return null;let{usage:s}=this.getUsageByRegistration(t,{detailed:!1}),{usage:a,options:n}=this.getUsageByRegistration(t,{detailed:!0,inlineOptions:!1}),c=typeof t.usage.category<\"u\"?Vo(t.usage.category,{format:this.format(r),paragraphs:!1}):void 0,f=typeof t.usage.description<\"u\"?Vo(t.usage.description,{format:this.format(r),paragraphs:!1}):void 0,p=typeof t.usage.details<\"u\"?Vo(t.usage.details,{format:this.format(r),paragraphs:!0}):void 0,h=typeof t.usage.examples<\"u\"?t.usage.examples.map(([E,C])=>[Vo(E,{format:this.format(r),paragraphs:!1}),C.replace(/\\$0/g,this.binaryName)]):void 0;return{path:s,usage:a,category:c,description:f,details:p,examples:h,options:n}}definitions({colored:t=!1}={}){let r=[];for(let s of this.registrations.keys()){let a=this.definition(s,{colored:t});a&&r.push(a)}return r}usage(t=null,{colored:r,detailed:s=!1,prefix:a=\"$ \"}={}){var n;if(t===null){for(let p of this.registrations.keys()){let h=p.paths,E=typeof p.usage<\"u\";if(!h||h.length===0||h.length===1&&h[0].length===0||((n=h?.some(x=>x.length===0))!==null&&n!==void 0?n:!1))if(t){t=null;break}else t=p;else if(E){t=null;continue}}t&&(s=!0)}let c=t!==null&&t instanceof at?t.constructor:t,f=\"\";if(c)if(s){let{description:p=\"\",details:h=\"\",examples:E=[]}=c.usage||{};p!==\"\"&&(f+=Vo(p,{format:this.format(r),paragraphs:!1}).replace(/^./,x=>x.toUpperCase()),f+=`\n`),(h!==\"\"||E.length>0)&&(f+=`${this.format(r).header(\"Usage\")}\n`,f+=`\n`);let{usage:C,options:S}=this.getUsageByRegistration(c,{inlineOptions:!1});if(f+=`${this.format(r).bold(a)}${C}\n`,S.length>0){f+=`\n`,f+=`${this.format(r).header(\"Options\")}\n`;let x=S.reduce((I,T)=>Math.max(I,T.definition.length),0);f+=`\n`;for(let{definition:I,description:T}of S)f+=`  ${this.format(r).bold(I.padEnd(x))}    ${Vo(T,{format:this.format(r),paragraphs:!1})}`}if(h!==\"\"&&(f+=`\n`,f+=`${this.format(r).header(\"Details\")}\n`,f+=`\n`,f+=Vo(h,{format:this.format(r),paragraphs:!0})),E.length>0){f+=`\n`,f+=`${this.format(r).header(\"Examples\")}\n`;for(let[x,I]of E)f+=`\n`,f+=Vo(x,{format:this.format(r),paragraphs:!1}),f+=`${I.replace(/^/m,`  ${this.format(r).bold(a)}`).replace(/\\$0/g,this.binaryName)}\n`}}else{let{usage:p}=this.getUsageByRegistration(c);f+=`${this.format(r).bold(a)}${p}\n`}else{let p=new Map;for(let[S,{index:x}]of this.registrations.entries()){if(typeof S.usage>\"u\")continue;let I=typeof S.usage.category<\"u\"?Vo(S.usage.category,{format:this.format(r),paragraphs:!1}):null,T=p.get(I);typeof T>\"u\"&&p.set(I,T=[]);let{usage:O}=this.getUsageByIndex(x);T.push({commandClass:S,usage:O})}let h=Array.from(p.keys()).sort((S,x)=>S===null?-1:x===null?1:S.localeCompare(x,\"en\",{usage:\"sort\",caseFirst:\"upper\"})),E=typeof this.binaryLabel<\"u\",C=typeof this.binaryVersion<\"u\";E||C?(E&&C?f+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)}\n\n`:E?f+=`${this.format(r).header(`${this.binaryLabel}`)}\n`:f+=`${this.format(r).header(`${this.binaryVersion}`)}\n`,f+=`  ${this.format(r).bold(a)}${this.binaryName} <command>\n`):f+=`${this.format(r).bold(a)}${this.binaryName} <command>\n`;for(let S of h){let x=p.get(S).slice().sort((T,O)=>T.usage.localeCompare(O.usage,\"en\",{usage:\"sort\",caseFirst:\"upper\"})),I=S!==null?S.trim():\"General commands\";f+=`\n`,f+=`${this.format(r).header(`${I}`)}\n`;for(let{commandClass:T,usage:O}of x){let U=T.usage.description||\"undocumented\";f+=`\n`,f+=`  ${this.format(r).bold(O)}\n`,f+=`    ${Vo(U,{format:this.format(r),paragraphs:!1})}`}}f+=`\n`,f+=Vo(\"You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.\",{format:this.format(r),paragraphs:!0})}return f}error(t,r){var s,{colored:a,command:n=(s=t[cre])!==null&&s!==void 0?s:null}=r===void 0?{}:r;(!t||typeof t!=\"object\"||!(\"stack\"in t))&&(t=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(t)})`));let c=\"\",f=t.name.replace(/([a-z])([A-Z])/g,\"$1 $2\");f===\"Error\"&&(f=\"Internal Error\"),c+=`${this.format(a).error(f)}: ${t.message}\n`;let p=t.clipanion;return typeof p<\"u\"?p.type===\"usage\"&&(c+=`\n`,c+=this.usage(n)):t.stack&&(c+=`${t.stack.replace(/^.*\\n/,\"\")}\n`),c}format(t){var r;return((r=t??this.enableColors)!==null&&r!==void 0?r:e.defaultContext.colorDepth>1)?Yte:Kte}getUsageByRegistration(t,r){let s=this.registrations.get(t);if(typeof s>\"u\")throw new Error(\"Assertion failed: Unregistered command\");return this.getUsageByIndex(s.index,r)}getUsageByIndex(t,r){return this.builder.getBuilderByIndex(t).usage(r)}};va.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:sre()}});var KB,gre=Ze(()=>{s0();KB=class extends at{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)}\n`)}};KB.paths=[[\"--clipanion=definitions\"]]});var JB,dre=Ze(()=>{s0();JB=class extends at{async execute(){this.context.stdout.write(this.cli.usage())}};JB.paths=[[\"-h\"],[\"--help\"]]});function Hx(e={}){return wa({definition(t,r){var s;t.addProxy({name:(s=e.name)!==null&&s!==void 0?s:r,required:e.required})},transformer(t,r,s){return s.positionals.map(({value:a})=>a)}})}var o_=Ze(()=>{wp()});var zB,mre=Ze(()=>{s0();o_();zB=class extends at{constructor(){super(...arguments),this.args=Hx()}async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.process(this.args).tokens,null,2)}\n`)}};zB.paths=[[\"--clipanion=tokens\"]]});var ZB,yre=Ze(()=>{s0();ZB=class extends at{async execute(){var t;this.context.stdout.write(`${(t=this.cli.binaryVersion)!==null&&t!==void 0?t:\"<unknown>\"}\n`)}};ZB.paths=[[\"-v\"],[\"--version\"]]});var a_={};Yt(a_,{DefinitionsCommand:()=>KB,HelpCommand:()=>JB,TokensCommand:()=>zB,VersionCommand:()=>ZB});var Ere=Ze(()=>{gre();dre();mre();yre()});function Ire(e,t,r){let[s,a]=Wf(t,r??{}),{arity:n=1}=a,c=e.split(\",\"),f=new Set(c);return wa({definition(p){p.addOption({names:c,arity:n,hidden:a?.hidden,description:a?.description,required:a.required})},transformer(p,h,E){let C,S=typeof s<\"u\"?[...s]:void 0;for(let{name:x,value:I}of E.options)f.has(x)&&(C=x,S=S??[],S.push(I));return typeof S<\"u\"?Fd(C??h,S,a.validator):S}})}var Cre=Ze(()=>{wp()});function wre(e,t,r){let[s,a]=Wf(t,r??{}),n=e.split(\",\"),c=new Set(n);return wa({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,p,h){let E=s;for(let{name:C,value:S}of h.options)c.has(C)&&(E=S);return E}})}var Bre=Ze(()=>{wp()});function vre(e,t,r){let[s,a]=Wf(t,r??{}),n=e.split(\",\"),c=new Set(n);return wa({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,p,h){let E=s;for(let{name:C,value:S}of h.options)c.has(C)&&(E??(E=0),S?E+=1:E=0);return E}})}var Sre=Ze(()=>{wp()});function Dre(e={}){return wa({definition(t,r){var s;t.addRest({name:(s=e.name)!==null&&s!==void 0?s:r,required:e.required})},transformer(t,r,s){let a=c=>{let f=s.positionals[c];return f.extra===Vl||f.extra===!1&&c<t.arity.leading.length},n=0;for(;n<s.positionals.length&&a(n);)n+=1;return s.positionals.splice(0,n).map(({value:c})=>c)}})}var bre=Ze(()=>{Mx();wp()});function u9e(e,t,r){let[s,a]=Wf(t,r??{}),{arity:n=1}=a,c=e.split(\",\"),f=new Set(c);return wa({definition(p){p.addOption({names:c,arity:a.tolerateBoolean?0:n,hidden:a.hidden,description:a.description,required:a.required})},transformer(p,h,E,C){let S,x=s;typeof a.env<\"u\"&&C.env[a.env]&&(S=a.env,x=C.env[a.env]);for(let{name:I,value:T}of E.options)f.has(I)&&(S=I,x=T);return typeof x==\"string\"?Fd(S??h,x,a.validator):x}})}function f9e(e={}){let{required:t=!0}=e;return wa({definition(r,s){var a;r.addPositional({name:(a=e.name)!==null&&a!==void 0?a:s,required:e.required})},transformer(r,s,a){var n;for(let c=0;c<a.positionals.length;++c){if(a.positionals[c].extra===Vl||t&&a.positionals[c].extra===!0||!t&&a.positionals[c].extra===!1)continue;let[f]=a.positionals.splice(c,1);return Fd((n=e.name)!==null&&n!==void 0?n:s,f.value,e.validator)}}})}function Pre(e,...t){return typeof e==\"string\"?u9e(e,...t):f9e(e)}var xre=Ze(()=>{Mx();wp()});var he={};Yt(he,{Array:()=>Ire,Boolean:()=>wre,Counter:()=>vre,Proxy:()=>Hx,Rest:()=>Dre,String:()=>Pre,applyValidator:()=>Fd,cleanValidationError:()=>Qx,formatError:()=>jB,isOptionSymbol:()=>HB,makeCommandOption:()=>wa,rerouteArguments:()=>Wf});var kre=Ze(()=>{wp();o_();Cre();Bre();Sre();bre();xre()});var XB={};Yt(XB,{Builtins:()=>a_,Cli:()=>va,Command:()=>at,Option:()=>he,UsageError:()=>st,formatMarkdownish:()=>Vo,run:()=>Are,runExit:()=>fre});var Vt=Ze(()=>{kx();JU();s0();hre();Ere();kre()});var Qre=G((akt,A9e)=>{A9e.exports={name:\"dotenv\",version:\"16.3.1\",description:\"Loads environment variables from .env file\",main:\"lib/main.js\",types:\"lib/main.d.ts\",exports:{\".\":{types:\"./lib/main.d.ts\",require:\"./lib/main.js\",default:\"./lib/main.js\"},\"./config\":\"./config.js\",\"./config.js\":\"./config.js\",\"./lib/env-options\":\"./lib/env-options.js\",\"./lib/env-options.js\":\"./lib/env-options.js\",\"./lib/cli-options\":\"./lib/cli-options.js\",\"./lib/cli-options.js\":\"./lib/cli-options.js\",\"./package.json\":\"./package.json\"},scripts:{\"dts-check\":\"tsc --project tests/types/tsconfig.json\",lint:\"standard\",\"lint-readme\":\"standard-markdown\",pretest:\"npm run lint && npm run dts-check\",test:\"tap tests/*.js --100 -Rspec\",prerelease:\"npm test\",release:\"standard-version\"},repository:{type:\"git\",url:\"git://github.com/motdotla/dotenv.git\"},funding:\"https://github.com/motdotla/dotenv?sponsor=1\",keywords:[\"dotenv\",\"env\",\".env\",\"environment\",\"variables\",\"config\",\"settings\"],readmeFilename:\"README.md\",license:\"BSD-2-Clause\",devDependencies:{\"@definitelytyped/dtslint\":\"^0.0.133\",\"@types/node\":\"^18.11.3\",decache:\"^4.6.1\",sinon:\"^14.0.1\",standard:\"^17.0.0\",\"standard-markdown\":\"^7.1.0\",\"standard-version\":\"^9.5.0\",tap:\"^16.3.0\",tar:\"^6.1.11\",typescript:\"^4.8.4\"},engines:{node:\">=12\"},browser:{fs:!1}}});var Nre=G((lkt,Bp)=>{var Rre=Ie(\"fs\"),c_=Ie(\"path\"),p9e=Ie(\"os\"),h9e=Ie(\"crypto\"),g9e=Qre(),u_=g9e.version,d9e=/(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg;function m9e(e){let t={},r=e.toString();r=r.replace(/\\r\\n?/mg,`\n`);let s;for(;(s=d9e.exec(r))!=null;){let a=s[1],n=s[2]||\"\";n=n.trim();let c=n[0];n=n.replace(/^(['\"`])([\\s\\S]*)\\1$/mg,\"$2\"),c==='\"'&&(n=n.replace(/\\\\n/g,`\n`),n=n.replace(/\\\\r/g,\"\\r\")),t[a]=n}return t}function y9e(e){let t=Fre(e),r=Ws.configDotenv({path:t});if(!r.parsed)throw new Error(`MISSING_DATA: Cannot parse ${t} for an unknown reason`);let s=Tre(e).split(\",\"),a=s.length,n;for(let c=0;c<a;c++)try{let f=s[c].trim(),p=C9e(r,f);n=Ws.decrypt(p.ciphertext,p.key);break}catch(f){if(c+1>=a)throw f}return Ws.parse(n)}function E9e(e){console.log(`[dotenv@${u_}][INFO] ${e}`)}function I9e(e){console.log(`[dotenv@${u_}][WARN] ${e}`)}function l_(e){console.log(`[dotenv@${u_}][DEBUG] ${e}`)}function Tre(e){return e&&e.DOTENV_KEY&&e.DOTENV_KEY.length>0?e.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:\"\"}function C9e(e,t){let r;try{r=new URL(t)}catch(f){throw f.code===\"ERR_INVALID_URL\"?new Error(\"INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=development\"):f}let s=r.password;if(!s)throw new Error(\"INVALID_DOTENV_KEY: Missing key part\");let a=r.searchParams.get(\"environment\");if(!a)throw new Error(\"INVALID_DOTENV_KEY: Missing environment part\");let n=`DOTENV_VAULT_${a.toUpperCase()}`,c=e.parsed[n];if(!c)throw new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${n} in your .env.vault file.`);return{ciphertext:c,key:s}}function Fre(e){let t=c_.resolve(process.cwd(),\".env\");return e&&e.path&&e.path.length>0&&(t=e.path),t.endsWith(\".vault\")?t:`${t}.vault`}function w9e(e){return e[0]===\"~\"?c_.join(p9e.homedir(),e.slice(1)):e}function B9e(e){E9e(\"Loading env from encrypted .env.vault\");let t=Ws._parseVault(e),r=process.env;return e&&e.processEnv!=null&&(r=e.processEnv),Ws.populate(r,t,e),{parsed:t}}function v9e(e){let t=c_.resolve(process.cwd(),\".env\"),r=\"utf8\",s=!!(e&&e.debug);e&&(e.path!=null&&(t=w9e(e.path)),e.encoding!=null&&(r=e.encoding));try{let a=Ws.parse(Rre.readFileSync(t,{encoding:r})),n=process.env;return e&&e.processEnv!=null&&(n=e.processEnv),Ws.populate(n,a,e),{parsed:a}}catch(a){return s&&l_(`Failed to load ${t} ${a.message}`),{error:a}}}function S9e(e){let t=Fre(e);return Tre(e).length===0?Ws.configDotenv(e):Rre.existsSync(t)?Ws._configVault(e):(I9e(`You set DOTENV_KEY but you are missing a .env.vault file at ${t}. Did you forget to build it?`),Ws.configDotenv(e))}function D9e(e,t){let r=Buffer.from(t.slice(-64),\"hex\"),s=Buffer.from(e,\"base64\"),a=s.slice(0,12),n=s.slice(-16);s=s.slice(12,-16);try{let c=h9e.createDecipheriv(\"aes-256-gcm\",r,a);return c.setAuthTag(n),`${c.update(s)}${c.final()}`}catch(c){let f=c instanceof RangeError,p=c.message===\"Invalid key length\",h=c.message===\"Unsupported state or unable to authenticate data\";if(f||p){let E=\"INVALID_DOTENV_KEY: It must be 64 characters long (or more)\";throw new Error(E)}else if(h){let E=\"DECRYPTION_FAILED: Please check your DOTENV_KEY\";throw new Error(E)}else throw console.error(\"Error: \",c.code),console.error(\"Error: \",c.message),c}}function b9e(e,t,r={}){let s=!!(r&&r.debug),a=!!(r&&r.override);if(typeof t!=\"object\")throw new Error(\"OBJECT_REQUIRED: Please check the processEnv argument being passed to populate\");for(let n of Object.keys(t))Object.prototype.hasOwnProperty.call(e,n)?(a===!0&&(e[n]=t[n]),s&&l_(a===!0?`\"${n}\" is already defined and WAS overwritten`:`\"${n}\" is already defined and was NOT overwritten`)):e[n]=t[n]}var Ws={configDotenv:v9e,_configVault:B9e,_parseVault:y9e,config:S9e,decrypt:D9e,parse:m9e,populate:b9e};Bp.exports.configDotenv=Ws.configDotenv;Bp.exports._configVault=Ws._configVault;Bp.exports._parseVault=Ws._parseVault;Bp.exports.config=Ws.config;Bp.exports.decrypt=Ws.decrypt;Bp.exports.parse=Ws.parse;Bp.exports.populate=Ws.populate;Bp.exports=Ws});var Lre=G((ckt,Ore)=>{\"use strict\";Ore.exports=(e,...t)=>new Promise(r=>{r(e(...t))})});var Nd=G((ukt,f_)=>{\"use strict\";var P9e=Lre(),Mre=e=>{if(e<1)throw new TypeError(\"Expected `concurrency` to be a number from 1 and up\");let t=[],r=0,s=()=>{r--,t.length>0&&t.shift()()},a=(f,p,...h)=>{r++;let E=P9e(f,...h);p(E),E.then(s,s)},n=(f,p,...h)=>{r<e?a(f,p,...h):t.push(a.bind(null,f,p,...h))},c=(f,...p)=>new Promise(h=>n(f,h,...p));return Object.defineProperties(c,{activeCount:{get:()=>r},pendingCount:{get:()=>t.length}}),c};f_.exports=Mre;f_.exports.default=Mre});function Kf(e){return`YN${e.toString(10).padStart(4,\"0\")}`}function jx(e){let t=Number(e.slice(2));if(typeof Br[t]>\"u\")throw new Error(`Unknown message name: \"${e}\"`);return t}var Br,Gx=Ze(()=>{Br=(Ue=>(Ue[Ue.UNNAMED=0]=\"UNNAMED\",Ue[Ue.EXCEPTION=1]=\"EXCEPTION\",Ue[Ue.MISSING_PEER_DEPENDENCY=2]=\"MISSING_PEER_DEPENDENCY\",Ue[Ue.CYCLIC_DEPENDENCIES=3]=\"CYCLIC_DEPENDENCIES\",Ue[Ue.DISABLED_BUILD_SCRIPTS=4]=\"DISABLED_BUILD_SCRIPTS\",Ue[Ue.BUILD_DISABLED=5]=\"BUILD_DISABLED\",Ue[Ue.SOFT_LINK_BUILD=6]=\"SOFT_LINK_BUILD\",Ue[Ue.MUST_BUILD=7]=\"MUST_BUILD\",Ue[Ue.MUST_REBUILD=8]=\"MUST_REBUILD\",Ue[Ue.BUILD_FAILED=9]=\"BUILD_FAILED\",Ue[Ue.RESOLVER_NOT_FOUND=10]=\"RESOLVER_NOT_FOUND\",Ue[Ue.FETCHER_NOT_FOUND=11]=\"FETCHER_NOT_FOUND\",Ue[Ue.LINKER_NOT_FOUND=12]=\"LINKER_NOT_FOUND\",Ue[Ue.FETCH_NOT_CACHED=13]=\"FETCH_NOT_CACHED\",Ue[Ue.YARN_IMPORT_FAILED=14]=\"YARN_IMPORT_FAILED\",Ue[Ue.REMOTE_INVALID=15]=\"REMOTE_INVALID\",Ue[Ue.REMOTE_NOT_FOUND=16]=\"REMOTE_NOT_FOUND\",Ue[Ue.RESOLUTION_PACK=17]=\"RESOLUTION_PACK\",Ue[Ue.CACHE_CHECKSUM_MISMATCH=18]=\"CACHE_CHECKSUM_MISMATCH\",Ue[Ue.UNUSED_CACHE_ENTRY=19]=\"UNUSED_CACHE_ENTRY\",Ue[Ue.MISSING_LOCKFILE_ENTRY=20]=\"MISSING_LOCKFILE_ENTRY\",Ue[Ue.WORKSPACE_NOT_FOUND=21]=\"WORKSPACE_NOT_FOUND\",Ue[Ue.TOO_MANY_MATCHING_WORKSPACES=22]=\"TOO_MANY_MATCHING_WORKSPACES\",Ue[Ue.CONSTRAINTS_MISSING_DEPENDENCY=23]=\"CONSTRAINTS_MISSING_DEPENDENCY\",Ue[Ue.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]=\"CONSTRAINTS_INCOMPATIBLE_DEPENDENCY\",Ue[Ue.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]=\"CONSTRAINTS_EXTRANEOUS_DEPENDENCY\",Ue[Ue.CONSTRAINTS_INVALID_DEPENDENCY=26]=\"CONSTRAINTS_INVALID_DEPENDENCY\",Ue[Ue.CANT_SUGGEST_RESOLUTIONS=27]=\"CANT_SUGGEST_RESOLUTIONS\",Ue[Ue.FROZEN_LOCKFILE_EXCEPTION=28]=\"FROZEN_LOCKFILE_EXCEPTION\",Ue[Ue.CROSS_DRIVE_VIRTUAL_LOCAL=29]=\"CROSS_DRIVE_VIRTUAL_LOCAL\",Ue[Ue.FETCH_FAILED=30]=\"FETCH_FAILED\",Ue[Ue.DANGEROUS_NODE_MODULES=31]=\"DANGEROUS_NODE_MODULES\",Ue[Ue.NODE_GYP_INJECTED=32]=\"NODE_GYP_INJECTED\",Ue[Ue.AUTHENTICATION_NOT_FOUND=33]=\"AUTHENTICATION_NOT_FOUND\",Ue[Ue.INVALID_CONFIGURATION_KEY=34]=\"INVALID_CONFIGURATION_KEY\",Ue[Ue.NETWORK_ERROR=35]=\"NETWORK_ERROR\",Ue[Ue.LIFECYCLE_SCRIPT=36]=\"LIFECYCLE_SCRIPT\",Ue[Ue.CONSTRAINTS_MISSING_FIELD=37]=\"CONSTRAINTS_MISSING_FIELD\",Ue[Ue.CONSTRAINTS_INCOMPATIBLE_FIELD=38]=\"CONSTRAINTS_INCOMPATIBLE_FIELD\",Ue[Ue.CONSTRAINTS_EXTRANEOUS_FIELD=39]=\"CONSTRAINTS_EXTRANEOUS_FIELD\",Ue[Ue.CONSTRAINTS_INVALID_FIELD=40]=\"CONSTRAINTS_INVALID_FIELD\",Ue[Ue.AUTHENTICATION_INVALID=41]=\"AUTHENTICATION_INVALID\",Ue[Ue.PROLOG_UNKNOWN_ERROR=42]=\"PROLOG_UNKNOWN_ERROR\",Ue[Ue.PROLOG_SYNTAX_ERROR=43]=\"PROLOG_SYNTAX_ERROR\",Ue[Ue.PROLOG_EXISTENCE_ERROR=44]=\"PROLOG_EXISTENCE_ERROR\",Ue[Ue.STACK_OVERFLOW_RESOLUTION=45]=\"STACK_OVERFLOW_RESOLUTION\",Ue[Ue.AUTOMERGE_FAILED_TO_PARSE=46]=\"AUTOMERGE_FAILED_TO_PARSE\",Ue[Ue.AUTOMERGE_IMMUTABLE=47]=\"AUTOMERGE_IMMUTABLE\",Ue[Ue.AUTOMERGE_SUCCESS=48]=\"AUTOMERGE_SUCCESS\",Ue[Ue.AUTOMERGE_REQUIRED=49]=\"AUTOMERGE_REQUIRED\",Ue[Ue.DEPRECATED_CLI_SETTINGS=50]=\"DEPRECATED_CLI_SETTINGS\",Ue[Ue.PLUGIN_NAME_NOT_FOUND=51]=\"PLUGIN_NAME_NOT_FOUND\",Ue[Ue.INVALID_PLUGIN_REFERENCE=52]=\"INVALID_PLUGIN_REFERENCE\",Ue[Ue.CONSTRAINTS_AMBIGUITY=53]=\"CONSTRAINTS_AMBIGUITY\",Ue[Ue.CACHE_OUTSIDE_PROJECT=54]=\"CACHE_OUTSIDE_PROJECT\",Ue[Ue.IMMUTABLE_INSTALL=55]=\"IMMUTABLE_INSTALL\",Ue[Ue.IMMUTABLE_CACHE=56]=\"IMMUTABLE_CACHE\",Ue[Ue.INVALID_MANIFEST=57]=\"INVALID_MANIFEST\",Ue[Ue.PACKAGE_PREPARATION_FAILED=58]=\"PACKAGE_PREPARATION_FAILED\",Ue[Ue.INVALID_RANGE_PEER_DEPENDENCY=59]=\"INVALID_RANGE_PEER_DEPENDENCY\",Ue[Ue.INCOMPATIBLE_PEER_DEPENDENCY=60]=\"INCOMPATIBLE_PEER_DEPENDENCY\",Ue[Ue.DEPRECATED_PACKAGE=61]=\"DEPRECATED_PACKAGE\",Ue[Ue.INCOMPATIBLE_OS=62]=\"INCOMPATIBLE_OS\",Ue[Ue.INCOMPATIBLE_CPU=63]=\"INCOMPATIBLE_CPU\",Ue[Ue.FROZEN_ARTIFACT_EXCEPTION=64]=\"FROZEN_ARTIFACT_EXCEPTION\",Ue[Ue.TELEMETRY_NOTICE=65]=\"TELEMETRY_NOTICE\",Ue[Ue.PATCH_HUNK_FAILED=66]=\"PATCH_HUNK_FAILED\",Ue[Ue.INVALID_CONFIGURATION_VALUE=67]=\"INVALID_CONFIGURATION_VALUE\",Ue[Ue.UNUSED_PACKAGE_EXTENSION=68]=\"UNUSED_PACKAGE_EXTENSION\",Ue[Ue.REDUNDANT_PACKAGE_EXTENSION=69]=\"REDUNDANT_PACKAGE_EXTENSION\",Ue[Ue.AUTO_NM_SUCCESS=70]=\"AUTO_NM_SUCCESS\",Ue[Ue.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]=\"NM_CANT_INSTALL_EXTERNAL_SOFT_LINK\",Ue[Ue.NM_PRESERVE_SYMLINKS_REQUIRED=72]=\"NM_PRESERVE_SYMLINKS_REQUIRED\",Ue[Ue.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]=\"UPDATE_LOCKFILE_ONLY_SKIP_LINK\",Ue[Ue.NM_HARDLINKS_MODE_DOWNGRADED=74]=\"NM_HARDLINKS_MODE_DOWNGRADED\",Ue[Ue.PROLOG_INSTANTIATION_ERROR=75]=\"PROLOG_INSTANTIATION_ERROR\",Ue[Ue.INCOMPATIBLE_ARCHITECTURE=76]=\"INCOMPATIBLE_ARCHITECTURE\",Ue[Ue.GHOST_ARCHITECTURE=77]=\"GHOST_ARCHITECTURE\",Ue[Ue.RESOLUTION_MISMATCH=78]=\"RESOLUTION_MISMATCH\",Ue[Ue.PROLOG_LIMIT_EXCEEDED=79]=\"PROLOG_LIMIT_EXCEEDED\",Ue[Ue.NETWORK_DISABLED=80]=\"NETWORK_DISABLED\",Ue[Ue.NETWORK_UNSAFE_HTTP=81]=\"NETWORK_UNSAFE_HTTP\",Ue[Ue.RESOLUTION_FAILED=82]=\"RESOLUTION_FAILED\",Ue[Ue.AUTOMERGE_GIT_ERROR=83]=\"AUTOMERGE_GIT_ERROR\",Ue[Ue.CONSTRAINTS_CHECK_FAILED=84]=\"CONSTRAINTS_CHECK_FAILED\",Ue[Ue.UPDATED_RESOLUTION_RECORD=85]=\"UPDATED_RESOLUTION_RECORD\",Ue[Ue.EXPLAIN_PEER_DEPENDENCIES_CTA=86]=\"EXPLAIN_PEER_DEPENDENCIES_CTA\",Ue[Ue.MIGRATION_SUCCESS=87]=\"MIGRATION_SUCCESS\",Ue[Ue.VERSION_NOTICE=88]=\"VERSION_NOTICE\",Ue[Ue.TIPS_NOTICE=89]=\"TIPS_NOTICE\",Ue[Ue.OFFLINE_MODE_ENABLED=90]=\"OFFLINE_MODE_ENABLED\",Ue[Ue.INVALID_PROVENANCE_ENVIRONMENT=91]=\"INVALID_PROVENANCE_ENVIRONMENT\",Ue))(Br||{})});var $B=G((Akt,Ure)=>{var x9e=\"2.0.0\",k9e=Number.MAX_SAFE_INTEGER||9007199254740991,Q9e=16,R9e=250,T9e=[\"major\",\"premajor\",\"minor\",\"preminor\",\"patch\",\"prepatch\",\"prerelease\"];Ure.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:Q9e,MAX_SAFE_BUILD_LENGTH:R9e,MAX_SAFE_INTEGER:k9e,RELEASE_TYPES:T9e,SEMVER_SPEC_VERSION:x9e,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var e2=G((pkt,_re)=>{var F9e=typeof process==\"object\"&&process.env&&process.env.NODE_DEBUG&&/\\bsemver\\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error(\"SEMVER\",...e):()=>{};_re.exports=F9e});var bE=G((vp,Hre)=>{var{MAX_SAFE_COMPONENT_LENGTH:A_,MAX_SAFE_BUILD_LENGTH:N9e,MAX_LENGTH:O9e}=$B(),L9e=e2();vp=Hre.exports={};var M9e=vp.re=[],U9e=vp.safeRe=[],rr=vp.src=[],nr=vp.t={},_9e=0,p_=\"[a-zA-Z0-9-]\",H9e=[[\"\\\\s\",1],[\"\\\\d\",O9e],[p_,N9e]],j9e=e=>{for(let[t,r]of H9e)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},Kr=(e,t,r)=>{let s=j9e(t),a=_9e++;L9e(e,a,t),nr[e]=a,rr[a]=t,M9e[a]=new RegExp(t,r?\"g\":void 0),U9e[a]=new RegExp(s,r?\"g\":void 0)};Kr(\"NUMERICIDENTIFIER\",\"0|[1-9]\\\\d*\");Kr(\"NUMERICIDENTIFIERLOOSE\",\"\\\\d+\");Kr(\"NONNUMERICIDENTIFIER\",`\\\\d*[a-zA-Z-]${p_}*`);Kr(\"MAINVERSION\",`(${rr[nr.NUMERICIDENTIFIER]})\\\\.(${rr[nr.NUMERICIDENTIFIER]})\\\\.(${rr[nr.NUMERICIDENTIFIER]})`);Kr(\"MAINVERSIONLOOSE\",`(${rr[nr.NUMERICIDENTIFIERLOOSE]})\\\\.(${rr[nr.NUMERICIDENTIFIERLOOSE]})\\\\.(${rr[nr.NUMERICIDENTIFIERLOOSE]})`);Kr(\"PRERELEASEIDENTIFIER\",`(?:${rr[nr.NUMERICIDENTIFIER]}|${rr[nr.NONNUMERICIDENTIFIER]})`);Kr(\"PRERELEASEIDENTIFIERLOOSE\",`(?:${rr[nr.NUMERICIDENTIFIERLOOSE]}|${rr[nr.NONNUMERICIDENTIFIER]})`);Kr(\"PRERELEASE\",`(?:-(${rr[nr.PRERELEASEIDENTIFIER]}(?:\\\\.${rr[nr.PRERELEASEIDENTIFIER]})*))`);Kr(\"PRERELEASELOOSE\",`(?:-?(${rr[nr.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${rr[nr.PRERELEASEIDENTIFIERLOOSE]})*))`);Kr(\"BUILDIDENTIFIER\",`${p_}+`);Kr(\"BUILD\",`(?:\\\\+(${rr[nr.BUILDIDENTIFIER]}(?:\\\\.${rr[nr.BUILDIDENTIFIER]})*))`);Kr(\"FULLPLAIN\",`v?${rr[nr.MAINVERSION]}${rr[nr.PRERELEASE]}?${rr[nr.BUILD]}?`);Kr(\"FULL\",`^${rr[nr.FULLPLAIN]}$`);Kr(\"LOOSEPLAIN\",`[v=\\\\s]*${rr[nr.MAINVERSIONLOOSE]}${rr[nr.PRERELEASELOOSE]}?${rr[nr.BUILD]}?`);Kr(\"LOOSE\",`^${rr[nr.LOOSEPLAIN]}$`);Kr(\"GTLT\",\"((?:<|>)?=?)\");Kr(\"XRANGEIDENTIFIERLOOSE\",`${rr[nr.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);Kr(\"XRANGEIDENTIFIER\",`${rr[nr.NUMERICIDENTIFIER]}|x|X|\\\\*`);Kr(\"XRANGEPLAIN\",`[v=\\\\s]*(${rr[nr.XRANGEIDENTIFIER]})(?:\\\\.(${rr[nr.XRANGEIDENTIFIER]})(?:\\\\.(${rr[nr.XRANGEIDENTIFIER]})(?:${rr[nr.PRERELEASE]})?${rr[nr.BUILD]}?)?)?`);Kr(\"XRANGEPLAINLOOSE\",`[v=\\\\s]*(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:${rr[nr.PRERELEASELOOSE]})?${rr[nr.BUILD]}?)?)?`);Kr(\"XRANGE\",`^${rr[nr.GTLT]}\\\\s*${rr[nr.XRANGEPLAIN]}$`);Kr(\"XRANGELOOSE\",`^${rr[nr.GTLT]}\\\\s*${rr[nr.XRANGEPLAINLOOSE]}$`);Kr(\"COERCEPLAIN\",`(^|[^\\\\d])(\\\\d{1,${A_}})(?:\\\\.(\\\\d{1,${A_}}))?(?:\\\\.(\\\\d{1,${A_}}))?`);Kr(\"COERCE\",`${rr[nr.COERCEPLAIN]}(?:$|[^\\\\d])`);Kr(\"COERCEFULL\",rr[nr.COERCEPLAIN]+`(?:${rr[nr.PRERELEASE]})?(?:${rr[nr.BUILD]})?(?:$|[^\\\\d])`);Kr(\"COERCERTL\",rr[nr.COERCE],!0);Kr(\"COERCERTLFULL\",rr[nr.COERCEFULL],!0);Kr(\"LONETILDE\",\"(?:~>?)\");Kr(\"TILDETRIM\",`(\\\\s*)${rr[nr.LONETILDE]}\\\\s+`,!0);vp.tildeTrimReplace=\"$1~\";Kr(\"TILDE\",`^${rr[nr.LONETILDE]}${rr[nr.XRANGEPLAIN]}$`);Kr(\"TILDELOOSE\",`^${rr[nr.LONETILDE]}${rr[nr.XRANGEPLAINLOOSE]}$`);Kr(\"LONECARET\",\"(?:\\\\^)\");Kr(\"CARETTRIM\",`(\\\\s*)${rr[nr.LONECARET]}\\\\s+`,!0);vp.caretTrimReplace=\"$1^\";Kr(\"CARET\",`^${rr[nr.LONECARET]}${rr[nr.XRANGEPLAIN]}$`);Kr(\"CARETLOOSE\",`^${rr[nr.LONECARET]}${rr[nr.XRANGEPLAINLOOSE]}$`);Kr(\"COMPARATORLOOSE\",`^${rr[nr.GTLT]}\\\\s*(${rr[nr.LOOSEPLAIN]})$|^$`);Kr(\"COMPARATOR\",`^${rr[nr.GTLT]}\\\\s*(${rr[nr.FULLPLAIN]})$|^$`);Kr(\"COMPARATORTRIM\",`(\\\\s*)${rr[nr.GTLT]}\\\\s*(${rr[nr.LOOSEPLAIN]}|${rr[nr.XRANGEPLAIN]})`,!0);vp.comparatorTrimReplace=\"$1$2$3\";Kr(\"HYPHENRANGE\",`^\\\\s*(${rr[nr.XRANGEPLAIN]})\\\\s+-\\\\s+(${rr[nr.XRANGEPLAIN]})\\\\s*$`);Kr(\"HYPHENRANGELOOSE\",`^\\\\s*(${rr[nr.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${rr[nr.XRANGEPLAINLOOSE]})\\\\s*$`);Kr(\"STAR\",\"(<|>)?=?\\\\s*\\\\*\");Kr(\"GTE0\",\"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");Kr(\"GTE0PRE\",\"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\")});var qx=G((hkt,jre)=>{var G9e=Object.freeze({loose:!0}),q9e=Object.freeze({}),W9e=e=>e?typeof e!=\"object\"?G9e:e:q9e;jre.exports=W9e});var h_=G((gkt,Wre)=>{var Gre=/^[0-9]+$/,qre=(e,t)=>{let r=Gre.test(e),s=Gre.test(t);return r&&s&&(e=+e,t=+t),e===t?0:r&&!s?-1:s&&!r?1:e<t?-1:1},V9e=(e,t)=>qre(t,e);Wre.exports={compareIdentifiers:qre,rcompareIdentifiers:V9e}});var Ko=G((dkt,Jre)=>{var Wx=e2(),{MAX_LENGTH:Vre,MAX_SAFE_INTEGER:Vx}=$B(),{safeRe:Yre,t:Kre}=bE(),Y9e=qx(),{compareIdentifiers:PE}=h_(),g_=class e{constructor(t,r){if(r=Y9e(r),t instanceof e){if(t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease)return t;t=t.version}else if(typeof t!=\"string\")throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof t}\".`);if(t.length>Vre)throw new TypeError(`version is longer than ${Vre} characters`);Wx(\"SemVer\",t,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let s=t.trim().match(r.loose?Yre[Kre.LOOSE]:Yre[Kre.FULL]);if(!s)throw new TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+s[1],this.minor=+s[2],this.patch=+s[3],this.major>Vx||this.major<0)throw new TypeError(\"Invalid major version\");if(this.minor>Vx||this.minor<0)throw new TypeError(\"Invalid minor version\");if(this.patch>Vx||this.patch<0)throw new TypeError(\"Invalid patch version\");s[4]?this.prerelease=s[4].split(\".\").map(a=>{if(/^[0-9]+$/.test(a)){let n=+a;if(n>=0&&n<Vx)return n}return a}):this.prerelease=[],this.build=s[5]?s[5].split(\".\"):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(\".\")}`),this.version}toString(){return this.version}compare(t){if(Wx(\"SemVer.compare\",this.version,this.options,t),!(t instanceof e)){if(typeof t==\"string\"&&t===this.version)return 0;t=new e(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(t){return t instanceof e||(t=new e(t,this.options)),PE(this.major,t.major)||PE(this.minor,t.minor)||PE(this.patch,t.patch)}comparePre(t){if(t instanceof e||(t=new e(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{let s=this.prerelease[r],a=t.prerelease[r];if(Wx(\"prerelease compare\",r,s,a),s===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(s===void 0)return-1;if(s===a)continue;return PE(s,a)}while(++r)}compareBuild(t){t instanceof e||(t=new e(t,this.options));let r=0;do{let s=this.build[r],a=t.build[r];if(Wx(\"prerelease compare\",r,s,a),s===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(s===void 0)return-1;if(s===a)continue;return PE(s,a)}while(++r)}inc(t,r,s){switch(t){case\"premajor\":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc(\"pre\",r,s);break;case\"preminor\":this.prerelease.length=0,this.patch=0,this.minor++,this.inc(\"pre\",r,s);break;case\"prepatch\":this.prerelease.length=0,this.inc(\"patch\",r,s),this.inc(\"pre\",r,s);break;case\"prerelease\":this.prerelease.length===0&&this.inc(\"patch\",r,s),this.inc(\"pre\",r,s);break;case\"major\":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case\"minor\":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case\"patch\":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case\"pre\":{let a=Number(s)?1:0;if(!r&&s===!1)throw new Error(\"invalid increment argument: identifier is empty\");if(this.prerelease.length===0)this.prerelease=[a];else{let n=this.prerelease.length;for(;--n>=0;)typeof this.prerelease[n]==\"number\"&&(this.prerelease[n]++,n=-2);if(n===-1){if(r===this.prerelease.join(\".\")&&s===!1)throw new Error(\"invalid increment argument: identifier already exists\");this.prerelease.push(a)}}if(r){let n=[r,a];s===!1&&(n=[r]),PE(this.prerelease[0],r)===0?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(\".\")}`),this}};Jre.exports=g_});var Od=G((mkt,Zre)=>{var zre=Ko(),K9e=(e,t,r=!1)=>{if(e instanceof zre)return e;try{return new zre(e,t)}catch(s){if(!r)return null;throw s}};Zre.exports=K9e});var $re=G((ykt,Xre)=>{var J9e=Od(),z9e=(e,t)=>{let r=J9e(e,t);return r?r.version:null};Xre.exports=z9e});var tne=G((Ekt,ene)=>{var Z9e=Od(),X9e=(e,t)=>{let r=Z9e(e.trim().replace(/^[=v]+/,\"\"),t);return r?r.version:null};ene.exports=X9e});var ine=G((Ikt,nne)=>{var rne=Ko(),$9e=(e,t,r,s,a)=>{typeof r==\"string\"&&(a=s,s=r,r=void 0);try{return new rne(e instanceof rne?e.version:e,r).inc(t,s,a).version}catch{return null}};nne.exports=$9e});var ane=G((Ckt,one)=>{var sne=Od(),eWe=(e,t)=>{let r=sne(e,null,!0),s=sne(t,null,!0),a=r.compare(s);if(a===0)return null;let n=a>0,c=n?r:s,f=n?s:r,p=!!c.prerelease.length;if(!!f.prerelease.length&&!p)return!f.patch&&!f.minor?\"major\":c.patch?\"patch\":c.minor?\"minor\":\"major\";let E=p?\"pre\":\"\";return r.major!==s.major?E+\"major\":r.minor!==s.minor?E+\"minor\":r.patch!==s.patch?E+\"patch\":\"prerelease\"};one.exports=eWe});var cne=G((wkt,lne)=>{var tWe=Ko(),rWe=(e,t)=>new tWe(e,t).major;lne.exports=rWe});var fne=G((Bkt,une)=>{var nWe=Ko(),iWe=(e,t)=>new nWe(e,t).minor;une.exports=iWe});var pne=G((vkt,Ane)=>{var sWe=Ko(),oWe=(e,t)=>new sWe(e,t).patch;Ane.exports=oWe});var gne=G((Skt,hne)=>{var aWe=Od(),lWe=(e,t)=>{let r=aWe(e,t);return r&&r.prerelease.length?r.prerelease:null};hne.exports=lWe});var vc=G((Dkt,mne)=>{var dne=Ko(),cWe=(e,t,r)=>new dne(e,r).compare(new dne(t,r));mne.exports=cWe});var Ene=G((bkt,yne)=>{var uWe=vc(),fWe=(e,t,r)=>uWe(t,e,r);yne.exports=fWe});var Cne=G((Pkt,Ine)=>{var AWe=vc(),pWe=(e,t)=>AWe(e,t,!0);Ine.exports=pWe});var Yx=G((xkt,Bne)=>{var wne=Ko(),hWe=(e,t,r)=>{let s=new wne(e,r),a=new wne(t,r);return s.compare(a)||s.compareBuild(a)};Bne.exports=hWe});var Sne=G((kkt,vne)=>{var gWe=Yx(),dWe=(e,t)=>e.sort((r,s)=>gWe(r,s,t));vne.exports=dWe});var bne=G((Qkt,Dne)=>{var mWe=Yx(),yWe=(e,t)=>e.sort((r,s)=>mWe(s,r,t));Dne.exports=yWe});var t2=G((Rkt,Pne)=>{var EWe=vc(),IWe=(e,t,r)=>EWe(e,t,r)>0;Pne.exports=IWe});var Kx=G((Tkt,xne)=>{var CWe=vc(),wWe=(e,t,r)=>CWe(e,t,r)<0;xne.exports=wWe});var d_=G((Fkt,kne)=>{var BWe=vc(),vWe=(e,t,r)=>BWe(e,t,r)===0;kne.exports=vWe});var m_=G((Nkt,Qne)=>{var SWe=vc(),DWe=(e,t,r)=>SWe(e,t,r)!==0;Qne.exports=DWe});var Jx=G((Okt,Rne)=>{var bWe=vc(),PWe=(e,t,r)=>bWe(e,t,r)>=0;Rne.exports=PWe});var zx=G((Lkt,Tne)=>{var xWe=vc(),kWe=(e,t,r)=>xWe(e,t,r)<=0;Tne.exports=kWe});var y_=G((Mkt,Fne)=>{var QWe=d_(),RWe=m_(),TWe=t2(),FWe=Jx(),NWe=Kx(),OWe=zx(),LWe=(e,t,r,s)=>{switch(t){case\"===\":return typeof e==\"object\"&&(e=e.version),typeof r==\"object\"&&(r=r.version),e===r;case\"!==\":return typeof e==\"object\"&&(e=e.version),typeof r==\"object\"&&(r=r.version),e!==r;case\"\":case\"=\":case\"==\":return QWe(e,r,s);case\"!=\":return RWe(e,r,s);case\">\":return TWe(e,r,s);case\">=\":return FWe(e,r,s);case\"<\":return NWe(e,r,s);case\"<=\":return OWe(e,r,s);default:throw new TypeError(`Invalid operator: ${t}`)}};Fne.exports=LWe});var One=G((Ukt,Nne)=>{var MWe=Ko(),UWe=Od(),{safeRe:Zx,t:Xx}=bE(),_We=(e,t)=>{if(e instanceof MWe)return e;if(typeof e==\"number\"&&(e=String(e)),typeof e!=\"string\")return null;t=t||{};let r=null;if(!t.rtl)r=e.match(t.includePrerelease?Zx[Xx.COERCEFULL]:Zx[Xx.COERCE]);else{let p=t.includePrerelease?Zx[Xx.COERCERTLFULL]:Zx[Xx.COERCERTL],h;for(;(h=p.exec(e))&&(!r||r.index+r[0].length!==e.length);)(!r||h.index+h[0].length!==r.index+r[0].length)&&(r=h),p.lastIndex=h.index+h[1].length+h[2].length;p.lastIndex=-1}if(r===null)return null;let s=r[2],a=r[3]||\"0\",n=r[4]||\"0\",c=t.includePrerelease&&r[5]?`-${r[5]}`:\"\",f=t.includePrerelease&&r[6]?`+${r[6]}`:\"\";return UWe(`${s}.${a}.${n}${c}${f}`,t)};Nne.exports=_We});var Mne=G((_kt,Lne)=>{\"use strict\";Lne.exports=function(e){e.prototype[Symbol.iterator]=function*(){for(let t=this.head;t;t=t.next)yield t.value}}});var _ne=G((Hkt,Une)=>{\"use strict\";Une.exports=On;On.Node=Ld;On.create=On;function On(e){var t=this;if(t instanceof On||(t=new On),t.tail=null,t.head=null,t.length=0,e&&typeof e.forEach==\"function\")e.forEach(function(a){t.push(a)});else if(arguments.length>0)for(var r=0,s=arguments.length;r<s;r++)t.push(arguments[r]);return t}On.prototype.removeNode=function(e){if(e.list!==this)throw new Error(\"removing node which does not belong to this list\");var t=e.next,r=e.prev;return t&&(t.prev=r),r&&(r.next=t),e===this.head&&(this.head=t),e===this.tail&&(this.tail=r),e.list.length--,e.next=null,e.prev=null,e.list=null,t};On.prototype.unshiftNode=function(e){if(e!==this.head){e.list&&e.list.removeNode(e);var t=this.head;e.list=this,e.next=t,t&&(t.prev=e),this.head=e,this.tail||(this.tail=e),this.length++}};On.prototype.pushNode=function(e){if(e!==this.tail){e.list&&e.list.removeNode(e);var t=this.tail;e.list=this,e.prev=t,t&&(t.next=e),this.tail=e,this.head||(this.head=e),this.length++}};On.prototype.push=function(){for(var e=0,t=arguments.length;e<t;e++)jWe(this,arguments[e]);return this.length};On.prototype.unshift=function(){for(var e=0,t=arguments.length;e<t;e++)GWe(this,arguments[e]);return this.length};On.prototype.pop=function(){if(this.tail){var e=this.tail.value;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,e}};On.prototype.shift=function(){if(this.head){var e=this.head.value;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,e}};On.prototype.forEach=function(e,t){t=t||this;for(var r=this.head,s=0;r!==null;s++)e.call(t,r.value,s,this),r=r.next};On.prototype.forEachReverse=function(e,t){t=t||this;for(var r=this.tail,s=this.length-1;r!==null;s--)e.call(t,r.value,s,this),r=r.prev};On.prototype.get=function(e){for(var t=0,r=this.head;r!==null&&t<e;t++)r=r.next;if(t===e&&r!==null)return r.value};On.prototype.getReverse=function(e){for(var t=0,r=this.tail;r!==null&&t<e;t++)r=r.prev;if(t===e&&r!==null)return r.value};On.prototype.map=function(e,t){t=t||this;for(var r=new On,s=this.head;s!==null;)r.push(e.call(t,s.value,this)),s=s.next;return r};On.prototype.mapReverse=function(e,t){t=t||this;for(var r=new On,s=this.tail;s!==null;)r.push(e.call(t,s.value,this)),s=s.prev;return r};On.prototype.reduce=function(e,t){var r,s=this.head;if(arguments.length>1)r=t;else if(this.head)s=this.head.next,r=this.head.value;else throw new TypeError(\"Reduce of empty list with no initial value\");for(var a=0;s!==null;a++)r=e(r,s.value,a),s=s.next;return r};On.prototype.reduceReverse=function(e,t){var r,s=this.tail;if(arguments.length>1)r=t;else if(this.tail)s=this.tail.prev,r=this.tail.value;else throw new TypeError(\"Reduce of empty list with no initial value\");for(var a=this.length-1;s!==null;a--)r=e(r,s.value,a),s=s.prev;return r};On.prototype.toArray=function(){for(var e=new Array(this.length),t=0,r=this.head;r!==null;t++)e[t]=r.value,r=r.next;return e};On.prototype.toArrayReverse=function(){for(var e=new Array(this.length),t=0,r=this.tail;r!==null;t++)e[t]=r.value,r=r.prev;return e};On.prototype.slice=function(e,t){t=t||this.length,t<0&&(t+=this.length),e=e||0,e<0&&(e+=this.length);var r=new On;if(t<e||t<0)return r;e<0&&(e=0),t>this.length&&(t=this.length);for(var s=0,a=this.head;a!==null&&s<e;s++)a=a.next;for(;a!==null&&s<t;s++,a=a.next)r.push(a.value);return r};On.prototype.sliceReverse=function(e,t){t=t||this.length,t<0&&(t+=this.length),e=e||0,e<0&&(e+=this.length);var r=new On;if(t<e||t<0)return r;e<0&&(e=0),t>this.length&&(t=this.length);for(var s=this.length,a=this.tail;a!==null&&s>t;s--)a=a.prev;for(;a!==null&&s>e;s--,a=a.prev)r.push(a.value);return r};On.prototype.splice=function(e,t,...r){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(var s=0,a=this.head;a!==null&&s<e;s++)a=a.next;for(var n=[],s=0;a&&s<t;s++)n.push(a.value),a=this.removeNode(a);a===null&&(a=this.tail),a!==this.head&&a!==this.tail&&(a=a.prev);for(var s=0;s<r.length;s++)a=HWe(this,a,r[s]);return n};On.prototype.reverse=function(){for(var e=this.head,t=this.tail,r=e;r!==null;r=r.prev){var s=r.prev;r.prev=r.next,r.next=s}return this.head=t,this.tail=e,this};function HWe(e,t,r){var s=t===e.head?new Ld(r,null,t,e):new Ld(r,t,t.next,e);return s.next===null&&(e.tail=s),s.prev===null&&(e.head=s),e.length++,s}function jWe(e,t){e.tail=new Ld(t,e.tail,null,e),e.head||(e.head=e.tail),e.length++}function GWe(e,t){e.head=new Ld(t,null,e.head,e),e.tail||(e.tail=e.head),e.length++}function Ld(e,t,r,s){if(!(this instanceof Ld))return new Ld(e,t,r,s);this.list=s,this.value=e,t?(t.next=this,this.prev=t):this.prev=null,r?(r.prev=this,this.next=r):this.next=null}try{Mne()(On)}catch{}});var Wne=G((jkt,qne)=>{\"use strict\";var qWe=_ne(),Md=Symbol(\"max\"),Dp=Symbol(\"length\"),xE=Symbol(\"lengthCalculator\"),n2=Symbol(\"allowStale\"),Ud=Symbol(\"maxAge\"),Sp=Symbol(\"dispose\"),Hne=Symbol(\"noDisposeOnSet\"),Vs=Symbol(\"lruList\"),Nu=Symbol(\"cache\"),Gne=Symbol(\"updateAgeOnGet\"),E_=()=>1,C_=class{constructor(t){if(typeof t==\"number\"&&(t={max:t}),t||(t={}),t.max&&(typeof t.max!=\"number\"||t.max<0))throw new TypeError(\"max must be a non-negative number\");let r=this[Md]=t.max||1/0,s=t.length||E_;if(this[xE]=typeof s!=\"function\"?E_:s,this[n2]=t.stale||!1,t.maxAge&&typeof t.maxAge!=\"number\")throw new TypeError(\"maxAge must be a number\");this[Ud]=t.maxAge||0,this[Sp]=t.dispose,this[Hne]=t.noDisposeOnSet||!1,this[Gne]=t.updateAgeOnGet||!1,this.reset()}set max(t){if(typeof t!=\"number\"||t<0)throw new TypeError(\"max must be a non-negative number\");this[Md]=t||1/0,r2(this)}get max(){return this[Md]}set allowStale(t){this[n2]=!!t}get allowStale(){return this[n2]}set maxAge(t){if(typeof t!=\"number\")throw new TypeError(\"maxAge must be a non-negative number\");this[Ud]=t,r2(this)}get maxAge(){return this[Ud]}set lengthCalculator(t){typeof t!=\"function\"&&(t=E_),t!==this[xE]&&(this[xE]=t,this[Dp]=0,this[Vs].forEach(r=>{r.length=this[xE](r.value,r.key),this[Dp]+=r.length})),r2(this)}get lengthCalculator(){return this[xE]}get length(){return this[Dp]}get itemCount(){return this[Vs].length}rforEach(t,r){r=r||this;for(let s=this[Vs].tail;s!==null;){let a=s.prev;jne(this,t,s,r),s=a}}forEach(t,r){r=r||this;for(let s=this[Vs].head;s!==null;){let a=s.next;jne(this,t,s,r),s=a}}keys(){return this[Vs].toArray().map(t=>t.key)}values(){return this[Vs].toArray().map(t=>t.value)}reset(){this[Sp]&&this[Vs]&&this[Vs].length&&this[Vs].forEach(t=>this[Sp](t.key,t.value)),this[Nu]=new Map,this[Vs]=new qWe,this[Dp]=0}dump(){return this[Vs].map(t=>$x(this,t)?!1:{k:t.key,v:t.value,e:t.now+(t.maxAge||0)}).toArray().filter(t=>t)}dumpLru(){return this[Vs]}set(t,r,s){if(s=s||this[Ud],s&&typeof s!=\"number\")throw new TypeError(\"maxAge must be a number\");let a=s?Date.now():0,n=this[xE](r,t);if(this[Nu].has(t)){if(n>this[Md])return kE(this,this[Nu].get(t)),!1;let p=this[Nu].get(t).value;return this[Sp]&&(this[Hne]||this[Sp](t,p.value)),p.now=a,p.maxAge=s,p.value=r,this[Dp]+=n-p.length,p.length=n,this.get(t),r2(this),!0}let c=new w_(t,r,n,a,s);return c.length>this[Md]?(this[Sp]&&this[Sp](t,r),!1):(this[Dp]+=c.length,this[Vs].unshift(c),this[Nu].set(t,this[Vs].head),r2(this),!0)}has(t){if(!this[Nu].has(t))return!1;let r=this[Nu].get(t).value;return!$x(this,r)}get(t){return I_(this,t,!0)}peek(t){return I_(this,t,!1)}pop(){let t=this[Vs].tail;return t?(kE(this,t),t.value):null}del(t){kE(this,this[Nu].get(t))}load(t){this.reset();let r=Date.now();for(let s=t.length-1;s>=0;s--){let a=t[s],n=a.e||0;if(n===0)this.set(a.k,a.v);else{let c=n-r;c>0&&this.set(a.k,a.v,c)}}}prune(){this[Nu].forEach((t,r)=>I_(this,r,!1))}},I_=(e,t,r)=>{let s=e[Nu].get(t);if(s){let a=s.value;if($x(e,a)){if(kE(e,s),!e[n2])return}else r&&(e[Gne]&&(s.value.now=Date.now()),e[Vs].unshiftNode(s));return a.value}},$x=(e,t)=>{if(!t||!t.maxAge&&!e[Ud])return!1;let r=Date.now()-t.now;return t.maxAge?r>t.maxAge:e[Ud]&&r>e[Ud]},r2=e=>{if(e[Dp]>e[Md])for(let t=e[Vs].tail;e[Dp]>e[Md]&&t!==null;){let r=t.prev;kE(e,t),t=r}},kE=(e,t)=>{if(t){let r=t.value;e[Sp]&&e[Sp](r.key,r.value),e[Dp]-=r.length,e[Nu].delete(r.key),e[Vs].removeNode(t)}},w_=class{constructor(t,r,s,a,n){this.key=t,this.value=r,this.length=s,this.now=a,this.maxAge=n||0}},jne=(e,t,r,s)=>{let a=r.value;$x(e,a)&&(kE(e,r),e[n2]||(a=void 0)),a&&t.call(s,a.value,a.key,e)};qne.exports=C_});var Sc=G((Gkt,Jne)=>{var B_=class e{constructor(t,r){if(r=VWe(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof v_)return this.raw=t.value,this.set=[[t]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=t.trim().split(/\\s+/).join(\" \"),this.set=this.raw.split(\"||\").map(s=>this.parseRange(s.trim())).filter(s=>s.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let s=this.set[0];if(this.set=this.set.filter(a=>!Yne(a[0])),this.set.length===0)this.set=[s];else if(this.set.length>1){for(let a of this.set)if(a.length===1&&$We(a[0])){this.set=[a];break}}}this.format()}format(){return this.range=this.set.map(t=>t.join(\" \").trim()).join(\"||\").trim(),this.range}toString(){return this.range}parseRange(t){let s=((this.options.includePrerelease&&ZWe)|(this.options.loose&&XWe))+\":\"+t,a=Vne.get(s);if(a)return a;let n=this.options.loose,c=n?Al[Sa.HYPHENRANGELOOSE]:Al[Sa.HYPHENRANGE];t=t.replace(c,cVe(this.options.includePrerelease)),Si(\"hyphen replace\",t),t=t.replace(Al[Sa.COMPARATORTRIM],KWe),Si(\"comparator trim\",t),t=t.replace(Al[Sa.TILDETRIM],JWe),Si(\"tilde trim\",t),t=t.replace(Al[Sa.CARETTRIM],zWe),Si(\"caret trim\",t);let f=t.split(\" \").map(C=>eVe(C,this.options)).join(\" \").split(/\\s+/).map(C=>lVe(C,this.options));n&&(f=f.filter(C=>(Si(\"loose invalid filter\",C,this.options),!!C.match(Al[Sa.COMPARATORLOOSE])))),Si(\"range list\",f);let p=new Map,h=f.map(C=>new v_(C,this.options));for(let C of h){if(Yne(C))return[C];p.set(C.value,C)}p.size>1&&p.has(\"\")&&p.delete(\"\");let E=[...p.values()];return Vne.set(s,E),E}intersects(t,r){if(!(t instanceof e))throw new TypeError(\"a Range is required\");return this.set.some(s=>Kne(s,r)&&t.set.some(a=>Kne(a,r)&&s.every(n=>a.every(c=>n.intersects(c,r)))))}test(t){if(!t)return!1;if(typeof t==\"string\")try{t=new YWe(t,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(uVe(this.set[r],t,this.options))return!0;return!1}};Jne.exports=B_;var WWe=Wne(),Vne=new WWe({max:1e3}),VWe=qx(),v_=i2(),Si=e2(),YWe=Ko(),{safeRe:Al,t:Sa,comparatorTrimReplace:KWe,tildeTrimReplace:JWe,caretTrimReplace:zWe}=bE(),{FLAG_INCLUDE_PRERELEASE:ZWe,FLAG_LOOSE:XWe}=$B(),Yne=e=>e.value===\"<0.0.0-0\",$We=e=>e.value===\"\",Kne=(e,t)=>{let r=!0,s=e.slice(),a=s.pop();for(;r&&s.length;)r=s.every(n=>a.intersects(n,t)),a=s.pop();return r},eVe=(e,t)=>(Si(\"comp\",e,t),e=nVe(e,t),Si(\"caret\",e),e=tVe(e,t),Si(\"tildes\",e),e=sVe(e,t),Si(\"xrange\",e),e=aVe(e,t),Si(\"stars\",e),e),Da=e=>!e||e.toLowerCase()===\"x\"||e===\"*\",tVe=(e,t)=>e.trim().split(/\\s+/).map(r=>rVe(r,t)).join(\" \"),rVe=(e,t)=>{let r=t.loose?Al[Sa.TILDELOOSE]:Al[Sa.TILDE];return e.replace(r,(s,a,n,c,f)=>{Si(\"tilde\",e,s,a,n,c,f);let p;return Da(a)?p=\"\":Da(n)?p=`>=${a}.0.0 <${+a+1}.0.0-0`:Da(c)?p=`>=${a}.${n}.0 <${a}.${+n+1}.0-0`:f?(Si(\"replaceTilde pr\",f),p=`>=${a}.${n}.${c}-${f} <${a}.${+n+1}.0-0`):p=`>=${a}.${n}.${c} <${a}.${+n+1}.0-0`,Si(\"tilde return\",p),p})},nVe=(e,t)=>e.trim().split(/\\s+/).map(r=>iVe(r,t)).join(\" \"),iVe=(e,t)=>{Si(\"caret\",e,t);let r=t.loose?Al[Sa.CARETLOOSE]:Al[Sa.CARET],s=t.includePrerelease?\"-0\":\"\";return e.replace(r,(a,n,c,f,p)=>{Si(\"caret\",e,a,n,c,f,p);let h;return Da(n)?h=\"\":Da(c)?h=`>=${n}.0.0${s} <${+n+1}.0.0-0`:Da(f)?n===\"0\"?h=`>=${n}.${c}.0${s} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.0${s} <${+n+1}.0.0-0`:p?(Si(\"replaceCaret pr\",p),n===\"0\"?c===\"0\"?h=`>=${n}.${c}.${f}-${p} <${n}.${c}.${+f+1}-0`:h=`>=${n}.${c}.${f}-${p} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.${f}-${p} <${+n+1}.0.0-0`):(Si(\"no pr\"),n===\"0\"?c===\"0\"?h=`>=${n}.${c}.${f}${s} <${n}.${c}.${+f+1}-0`:h=`>=${n}.${c}.${f}${s} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.${f} <${+n+1}.0.0-0`),Si(\"caret return\",h),h})},sVe=(e,t)=>(Si(\"replaceXRanges\",e,t),e.split(/\\s+/).map(r=>oVe(r,t)).join(\" \")),oVe=(e,t)=>{e=e.trim();let r=t.loose?Al[Sa.XRANGELOOSE]:Al[Sa.XRANGE];return e.replace(r,(s,a,n,c,f,p)=>{Si(\"xRange\",e,s,a,n,c,f,p);let h=Da(n),E=h||Da(c),C=E||Da(f),S=C;return a===\"=\"&&S&&(a=\"\"),p=t.includePrerelease?\"-0\":\"\",h?a===\">\"||a===\"<\"?s=\"<0.0.0-0\":s=\"*\":a&&S?(E&&(c=0),f=0,a===\">\"?(a=\">=\",E?(n=+n+1,c=0,f=0):(c=+c+1,f=0)):a===\"<=\"&&(a=\"<\",E?n=+n+1:c=+c+1),a===\"<\"&&(p=\"-0\"),s=`${a+n}.${c}.${f}${p}`):E?s=`>=${n}.0.0${p} <${+n+1}.0.0-0`:C&&(s=`>=${n}.${c}.0${p} <${n}.${+c+1}.0-0`),Si(\"xRange return\",s),s})},aVe=(e,t)=>(Si(\"replaceStars\",e,t),e.trim().replace(Al[Sa.STAR],\"\")),lVe=(e,t)=>(Si(\"replaceGTE0\",e,t),e.trim().replace(Al[t.includePrerelease?Sa.GTE0PRE:Sa.GTE0],\"\")),cVe=e=>(t,r,s,a,n,c,f,p,h,E,C,S,x)=>(Da(s)?r=\"\":Da(a)?r=`>=${s}.0.0${e?\"-0\":\"\"}`:Da(n)?r=`>=${s}.${a}.0${e?\"-0\":\"\"}`:c?r=`>=${r}`:r=`>=${r}${e?\"-0\":\"\"}`,Da(h)?p=\"\":Da(E)?p=`<${+h+1}.0.0-0`:Da(C)?p=`<${h}.${+E+1}.0-0`:S?p=`<=${h}.${E}.${C}-${S}`:e?p=`<${h}.${E}.${+C+1}-0`:p=`<=${p}`,`${r} ${p}`.trim()),uVe=(e,t,r)=>{for(let s=0;s<e.length;s++)if(!e[s].test(t))return!1;if(t.prerelease.length&&!r.includePrerelease){for(let s=0;s<e.length;s++)if(Si(e[s].semver),e[s].semver!==v_.ANY&&e[s].semver.prerelease.length>0){let a=e[s].semver;if(a.major===t.major&&a.minor===t.minor&&a.patch===t.patch)return!0}return!1}return!0}});var i2=G((qkt,tie)=>{var s2=Symbol(\"SemVer ANY\"),b_=class e{static get ANY(){return s2}constructor(t,r){if(r=zne(r),t instanceof e){if(t.loose===!!r.loose)return t;t=t.value}t=t.trim().split(/\\s+/).join(\" \"),D_(\"comparator\",t,r),this.options=r,this.loose=!!r.loose,this.parse(t),this.semver===s2?this.value=\"\":this.value=this.operator+this.semver.version,D_(\"comp\",this)}parse(t){let r=this.options.loose?Zne[Xne.COMPARATORLOOSE]:Zne[Xne.COMPARATOR],s=t.match(r);if(!s)throw new TypeError(`Invalid comparator: ${t}`);this.operator=s[1]!==void 0?s[1]:\"\",this.operator===\"=\"&&(this.operator=\"\"),s[2]?this.semver=new $ne(s[2],this.options.loose):this.semver=s2}toString(){return this.value}test(t){if(D_(\"Comparator.test\",t,this.options.loose),this.semver===s2||t===s2)return!0;if(typeof t==\"string\")try{t=new $ne(t,this.options)}catch{return!1}return S_(t,this.operator,this.semver,this.options)}intersects(t,r){if(!(t instanceof e))throw new TypeError(\"a Comparator is required\");return this.operator===\"\"?this.value===\"\"?!0:new eie(t.value,r).test(this.value):t.operator===\"\"?t.value===\"\"?!0:new eie(this.value,r).test(t.semver):(r=zne(r),r.includePrerelease&&(this.value===\"<0.0.0-0\"||t.value===\"<0.0.0-0\")||!r.includePrerelease&&(this.value.startsWith(\"<0.0.0\")||t.value.startsWith(\"<0.0.0\"))?!1:!!(this.operator.startsWith(\">\")&&t.operator.startsWith(\">\")||this.operator.startsWith(\"<\")&&t.operator.startsWith(\"<\")||this.semver.version===t.semver.version&&this.operator.includes(\"=\")&&t.operator.includes(\"=\")||S_(this.semver,\"<\",t.semver,r)&&this.operator.startsWith(\">\")&&t.operator.startsWith(\"<\")||S_(this.semver,\">\",t.semver,r)&&this.operator.startsWith(\"<\")&&t.operator.startsWith(\">\")))}};tie.exports=b_;var zne=qx(),{safeRe:Zne,t:Xne}=bE(),S_=y_(),D_=e2(),$ne=Ko(),eie=Sc()});var o2=G((Wkt,rie)=>{var fVe=Sc(),AVe=(e,t,r)=>{try{t=new fVe(t,r)}catch{return!1}return t.test(e)};rie.exports=AVe});var iie=G((Vkt,nie)=>{var pVe=Sc(),hVe=(e,t)=>new pVe(e,t).set.map(r=>r.map(s=>s.value).join(\" \").trim().split(\" \"));nie.exports=hVe});var oie=G((Ykt,sie)=>{var gVe=Ko(),dVe=Sc(),mVe=(e,t,r)=>{let s=null,a=null,n=null;try{n=new dVe(t,r)}catch{return null}return e.forEach(c=>{n.test(c)&&(!s||a.compare(c)===-1)&&(s=c,a=new gVe(s,r))}),s};sie.exports=mVe});var lie=G((Kkt,aie)=>{var yVe=Ko(),EVe=Sc(),IVe=(e,t,r)=>{let s=null,a=null,n=null;try{n=new EVe(t,r)}catch{return null}return e.forEach(c=>{n.test(c)&&(!s||a.compare(c)===1)&&(s=c,a=new yVe(s,r))}),s};aie.exports=IVe});var fie=G((Jkt,uie)=>{var P_=Ko(),CVe=Sc(),cie=t2(),wVe=(e,t)=>{e=new CVe(e,t);let r=new P_(\"0.0.0\");if(e.test(r)||(r=new P_(\"0.0.0-0\"),e.test(r)))return r;r=null;for(let s=0;s<e.set.length;++s){let a=e.set[s],n=null;a.forEach(c=>{let f=new P_(c.semver.version);switch(c.operator){case\">\":f.prerelease.length===0?f.patch++:f.prerelease.push(0),f.raw=f.format();case\"\":case\">=\":(!n||cie(f,n))&&(n=f);break;case\"<\":case\"<=\":break;default:throw new Error(`Unexpected operation: ${c.operator}`)}}),n&&(!r||cie(r,n))&&(r=n)}return r&&e.test(r)?r:null};uie.exports=wVe});var pie=G((zkt,Aie)=>{var BVe=Sc(),vVe=(e,t)=>{try{return new BVe(e,t).range||\"*\"}catch{return null}};Aie.exports=vVe});var ek=G((Zkt,mie)=>{var SVe=Ko(),die=i2(),{ANY:DVe}=die,bVe=Sc(),PVe=o2(),hie=t2(),gie=Kx(),xVe=zx(),kVe=Jx(),QVe=(e,t,r,s)=>{e=new SVe(e,s),t=new bVe(t,s);let a,n,c,f,p;switch(r){case\">\":a=hie,n=xVe,c=gie,f=\">\",p=\">=\";break;case\"<\":a=gie,n=kVe,c=hie,f=\"<\",p=\"<=\";break;default:throw new TypeError('Must provide a hilo val of \"<\" or \">\"')}if(PVe(e,t,s))return!1;for(let h=0;h<t.set.length;++h){let E=t.set[h],C=null,S=null;if(E.forEach(x=>{x.semver===DVe&&(x=new die(\">=0.0.0\")),C=C||x,S=S||x,a(x.semver,C.semver,s)?C=x:c(x.semver,S.semver,s)&&(S=x)}),C.operator===f||C.operator===p||(!S.operator||S.operator===f)&&n(e,S.semver))return!1;if(S.operator===p&&c(e,S.semver))return!1}return!0};mie.exports=QVe});var Eie=G((Xkt,yie)=>{var RVe=ek(),TVe=(e,t,r)=>RVe(e,t,\">\",r);yie.exports=TVe});var Cie=G(($kt,Iie)=>{var FVe=ek(),NVe=(e,t,r)=>FVe(e,t,\"<\",r);Iie.exports=NVe});var vie=G((eQt,Bie)=>{var wie=Sc(),OVe=(e,t,r)=>(e=new wie(e,r),t=new wie(t,r),e.intersects(t,r));Bie.exports=OVe});var Die=G((tQt,Sie)=>{var LVe=o2(),MVe=vc();Sie.exports=(e,t,r)=>{let s=[],a=null,n=null,c=e.sort((E,C)=>MVe(E,C,r));for(let E of c)LVe(E,t,r)?(n=E,a||(a=E)):(n&&s.push([a,n]),n=null,a=null);a&&s.push([a,null]);let f=[];for(let[E,C]of s)E===C?f.push(E):!C&&E===c[0]?f.push(\"*\"):C?E===c[0]?f.push(`<=${C}`):f.push(`${E} - ${C}`):f.push(`>=${E}`);let p=f.join(\" || \"),h=typeof t.raw==\"string\"?t.raw:String(t);return p.length<h.length?p:t}});var Rie=G((rQt,Qie)=>{var bie=Sc(),k_=i2(),{ANY:x_}=k_,a2=o2(),Q_=vc(),UVe=(e,t,r={})=>{if(e===t)return!0;e=new bie(e,r),t=new bie(t,r);let s=!1;e:for(let a of e.set){for(let n of t.set){let c=HVe(a,n,r);if(s=s||c!==null,c)continue e}if(s)return!1}return!0},_Ve=[new k_(\">=0.0.0-0\")],Pie=[new k_(\">=0.0.0\")],HVe=(e,t,r)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===x_){if(t.length===1&&t[0].semver===x_)return!0;r.includePrerelease?e=_Ve:e=Pie}if(t.length===1&&t[0].semver===x_){if(r.includePrerelease)return!0;t=Pie}let s=new Set,a,n;for(let x of e)x.operator===\">\"||x.operator===\">=\"?a=xie(a,x,r):x.operator===\"<\"||x.operator===\"<=\"?n=kie(n,x,r):s.add(x.semver);if(s.size>1)return null;let c;if(a&&n){if(c=Q_(a.semver,n.semver,r),c>0)return null;if(c===0&&(a.operator!==\">=\"||n.operator!==\"<=\"))return null}for(let x of s){if(a&&!a2(x,String(a),r)||n&&!a2(x,String(n),r))return null;for(let I of t)if(!a2(x,String(I),r))return!1;return!0}let f,p,h,E,C=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1,S=a&&!r.includePrerelease&&a.semver.prerelease.length?a.semver:!1;C&&C.prerelease.length===1&&n.operator===\"<\"&&C.prerelease[0]===0&&(C=!1);for(let x of t){if(E=E||x.operator===\">\"||x.operator===\">=\",h=h||x.operator===\"<\"||x.operator===\"<=\",a){if(S&&x.semver.prerelease&&x.semver.prerelease.length&&x.semver.major===S.major&&x.semver.minor===S.minor&&x.semver.patch===S.patch&&(S=!1),x.operator===\">\"||x.operator===\">=\"){if(f=xie(a,x,r),f===x&&f!==a)return!1}else if(a.operator===\">=\"&&!a2(a.semver,String(x),r))return!1}if(n){if(C&&x.semver.prerelease&&x.semver.prerelease.length&&x.semver.major===C.major&&x.semver.minor===C.minor&&x.semver.patch===C.patch&&(C=!1),x.operator===\"<\"||x.operator===\"<=\"){if(p=kie(n,x,r),p===x&&p!==n)return!1}else if(n.operator===\"<=\"&&!a2(n.semver,String(x),r))return!1}if(!x.operator&&(n||a)&&c!==0)return!1}return!(a&&h&&!n&&c!==0||n&&E&&!a&&c!==0||S||C)},xie=(e,t,r)=>{if(!e)return t;let s=Q_(e.semver,t.semver,r);return s>0?e:s<0||t.operator===\">\"&&e.operator===\">=\"?t:e},kie=(e,t,r)=>{if(!e)return t;let s=Q_(e.semver,t.semver,r);return s<0?e:s>0||t.operator===\"<\"&&e.operator===\"<=\"?t:e};Qie.exports=UVe});var pi=G((nQt,Nie)=>{var R_=bE(),Tie=$B(),jVe=Ko(),Fie=h_(),GVe=Od(),qVe=$re(),WVe=tne(),VVe=ine(),YVe=ane(),KVe=cne(),JVe=fne(),zVe=pne(),ZVe=gne(),XVe=vc(),$Ve=Ene(),eYe=Cne(),tYe=Yx(),rYe=Sne(),nYe=bne(),iYe=t2(),sYe=Kx(),oYe=d_(),aYe=m_(),lYe=Jx(),cYe=zx(),uYe=y_(),fYe=One(),AYe=i2(),pYe=Sc(),hYe=o2(),gYe=iie(),dYe=oie(),mYe=lie(),yYe=fie(),EYe=pie(),IYe=ek(),CYe=Eie(),wYe=Cie(),BYe=vie(),vYe=Die(),SYe=Rie();Nie.exports={parse:GVe,valid:qVe,clean:WVe,inc:VVe,diff:YVe,major:KVe,minor:JVe,patch:zVe,prerelease:ZVe,compare:XVe,rcompare:$Ve,compareLoose:eYe,compareBuild:tYe,sort:rYe,rsort:nYe,gt:iYe,lt:sYe,eq:oYe,neq:aYe,gte:lYe,lte:cYe,cmp:uYe,coerce:fYe,Comparator:AYe,Range:pYe,satisfies:hYe,toComparators:gYe,maxSatisfying:dYe,minSatisfying:mYe,minVersion:yYe,validRange:EYe,outside:IYe,gtr:CYe,ltr:wYe,intersects:BYe,simplifyRange:vYe,subset:SYe,SemVer:jVe,re:R_.re,src:R_.src,tokens:R_.t,SEMVER_SPEC_VERSION:Tie.SEMVER_SPEC_VERSION,RELEASE_TYPES:Tie.RELEASE_TYPES,compareIdentifiers:Fie.compareIdentifiers,rcompareIdentifiers:Fie.rcompareIdentifiers}});var Lie=G((iQt,Oie)=>{\"use strict\";function DYe(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}function _d(e,t,r,s){this.message=e,this.expected=t,this.found=r,this.location=s,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,_d)}DYe(_d,Error);_d.buildMessage=function(e,t){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",C;for(C=0;C<h.parts.length;C++)E+=h.parts[C]instanceof Array?n(h.parts[C][0])+\"-\"+n(h.parts[C][1]):n(h.parts[C]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function s(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function c(h){return r[h.type](h)}function f(h){var E=new Array(h.length),C,S;for(C=0;C<h.length;C++)E[C]=c(h[C]);if(E.sort(),E.length>0){for(C=1,S=1;C<E.length;C++)E[C-1]!==E[C]&&(E[S]=E[C],S++);E.length=S}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+f(e)+\" but \"+p(t)+\" found.\"};function bYe(e,t){t=t!==void 0?t:{};var r={},s={Expression:y},a=y,n=\"|\",c=Ne(\"|\",!1),f=\"&\",p=Ne(\"&\",!1),h=\"^\",E=Ne(\"^\",!1),C=function($,se){return!!se.reduce((xe,Fe)=>{switch(Fe[1]){case\"|\":return xe|Fe[3];case\"&\":return xe&Fe[3];case\"^\":return xe^Fe[3]}},$)},S=\"!\",x=Ne(\"!\",!1),I=function($){return!$},T=\"(\",O=Ne(\"(\",!1),U=\")\",Y=Ne(\")\",!1),te=function($){return $},ie=/^[^ \\t\\n\\r()!|&\\^]/,ue=ke([\" \",\"\t\",`\n`,\"\\r\",\"(\",\")\",\"!\",\"|\",\"&\",\"^\"],!0,!1),ae=function($){return t.queryPattern.test($)},de=function($){return t.checkFn($)},Ae=Re(\"whitespace\"),Ce=/^[ \\t\\n\\r]/,Ee=ke([\" \",\"\t\",`\n`,\"\\r\"],!1,!1),g=0,Se=0,Be=[{line:1,column:1}],me=0,ce=[],X=0,De;if(\"startRule\"in t){if(!(t.startRule in s))throw new Error(`Can't start parsing from rule \"`+t.startRule+'\".');a=s[t.startRule]}function Qe(){return e.substring(Se,g)}function it(){return Me(Se,g)}function _($,se){throw se=se!==void 0?se:Me(Se,g),b([Re($)],e.substring(Se,g),se)}function tt($,se){throw se=se!==void 0?se:Me(Se,g),w($,se)}function Ne($,se){return{type:\"literal\",text:$,ignoreCase:se}}function ke($,se,xe){return{type:\"class\",parts:$,inverted:se,ignoreCase:xe}}function be(){return{type:\"any\"}}function je(){return{type:\"end\"}}function Re($){return{type:\"other\",description:$}}function ct($){var se=Be[$],xe;if(se)return se;for(xe=$-1;!Be[xe];)xe--;for(se=Be[xe],se={line:se.line,column:se.column};xe<$;)e.charCodeAt(xe)===10?(se.line++,se.column=1):se.column++,xe++;return Be[$]=se,se}function Me($,se){var xe=ct($),Fe=ct(se);return{start:{offset:$,line:xe.line,column:xe.column},end:{offset:se,line:Fe.line,column:Fe.column}}}function P($){g<me||(g>me&&(me=g,ce=[]),ce.push($))}function w($,se){return new _d($,null,null,se)}function b($,se,xe){return new _d(_d.buildMessage($,se),$,se,xe)}function y(){var $,se,xe,Fe,ut,Ct,qt,ir;if($=g,se=F(),se!==r){for(xe=[],Fe=g,ut=Z(),ut!==r?(e.charCodeAt(g)===124?(Ct=n,g++):(Ct=r,X===0&&P(c)),Ct===r&&(e.charCodeAt(g)===38?(Ct=f,g++):(Ct=r,X===0&&P(p)),Ct===r&&(e.charCodeAt(g)===94?(Ct=h,g++):(Ct=r,X===0&&P(E)))),Ct!==r?(qt=Z(),qt!==r?(ir=F(),ir!==r?(ut=[ut,Ct,qt,ir],Fe=ut):(g=Fe,Fe=r)):(g=Fe,Fe=r)):(g=Fe,Fe=r)):(g=Fe,Fe=r);Fe!==r;)xe.push(Fe),Fe=g,ut=Z(),ut!==r?(e.charCodeAt(g)===124?(Ct=n,g++):(Ct=r,X===0&&P(c)),Ct===r&&(e.charCodeAt(g)===38?(Ct=f,g++):(Ct=r,X===0&&P(p)),Ct===r&&(e.charCodeAt(g)===94?(Ct=h,g++):(Ct=r,X===0&&P(E)))),Ct!==r?(qt=Z(),qt!==r?(ir=F(),ir!==r?(ut=[ut,Ct,qt,ir],Fe=ut):(g=Fe,Fe=r)):(g=Fe,Fe=r)):(g=Fe,Fe=r)):(g=Fe,Fe=r);xe!==r?(Se=$,se=C(se,xe),$=se):(g=$,$=r)}else g=$,$=r;return $}function F(){var $,se,xe,Fe,ut,Ct;return $=g,e.charCodeAt(g)===33?(se=S,g++):(se=r,X===0&&P(x)),se!==r?(xe=F(),xe!==r?(Se=$,se=I(xe),$=se):(g=$,$=r)):(g=$,$=r),$===r&&($=g,e.charCodeAt(g)===40?(se=T,g++):(se=r,X===0&&P(O)),se!==r?(xe=Z(),xe!==r?(Fe=y(),Fe!==r?(ut=Z(),ut!==r?(e.charCodeAt(g)===41?(Ct=U,g++):(Ct=r,X===0&&P(Y)),Ct!==r?(Se=$,se=te(Fe),$=se):(g=$,$=r)):(g=$,$=r)):(g=$,$=r)):(g=$,$=r)):(g=$,$=r),$===r&&($=z())),$}function z(){var $,se,xe,Fe,ut;if($=g,se=Z(),se!==r){if(xe=g,Fe=[],ie.test(e.charAt(g))?(ut=e.charAt(g),g++):(ut=r,X===0&&P(ue)),ut!==r)for(;ut!==r;)Fe.push(ut),ie.test(e.charAt(g))?(ut=e.charAt(g),g++):(ut=r,X===0&&P(ue));else Fe=r;Fe!==r?xe=e.substring(xe,g):xe=Fe,xe!==r?(Se=g,Fe=ae(xe),Fe?Fe=void 0:Fe=r,Fe!==r?(Se=$,se=de(xe),$=se):(g=$,$=r)):(g=$,$=r)}else g=$,$=r;return $}function Z(){var $,se;for(X++,$=[],Ce.test(e.charAt(g))?(se=e.charAt(g),g++):(se=r,X===0&&P(Ee));se!==r;)$.push(se),Ce.test(e.charAt(g))?(se=e.charAt(g),g++):(se=r,X===0&&P(Ee));return X--,$===r&&(se=r,X===0&&P(Ae)),$}if(De=a(),De!==r&&g===e.length)return De;throw De!==r&&g<e.length&&P(je()),b(ce,me<e.length?e.charAt(me):null,me<e.length?Me(me,me+1):Me(me,me))}Oie.exports={SyntaxError:_d,parse:bYe}});var Mie=G(tk=>{var{parse:PYe}=Lie();tk.makeParser=(e=/[a-z]+/)=>(t,r)=>PYe(t,{queryPattern:e,checkFn:r});tk.parse=tk.makeParser()});var _ie=G((oQt,Uie)=>{\"use strict\";Uie.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var T_=G((aQt,jie)=>{var l2=_ie(),Hie={};for(let e of Object.keys(l2))Hie[l2[e]]=e;var hr={rgb:{channels:3,labels:\"rgb\"},hsl:{channels:3,labels:\"hsl\"},hsv:{channels:3,labels:\"hsv\"},hwb:{channels:3,labels:\"hwb\"},cmyk:{channels:4,labels:\"cmyk\"},xyz:{channels:3,labels:\"xyz\"},lab:{channels:3,labels:\"lab\"},lch:{channels:3,labels:\"lch\"},hex:{channels:1,labels:[\"hex\"]},keyword:{channels:1,labels:[\"keyword\"]},ansi16:{channels:1,labels:[\"ansi16\"]},ansi256:{channels:1,labels:[\"ansi256\"]},hcg:{channels:3,labels:[\"h\",\"c\",\"g\"]},apple:{channels:3,labels:[\"r16\",\"g16\",\"b16\"]},gray:{channels:1,labels:[\"gray\"]}};jie.exports=hr;for(let e of Object.keys(hr)){if(!(\"channels\"in hr[e]))throw new Error(\"missing channels property: \"+e);if(!(\"labels\"in hr[e]))throw new Error(\"missing channel labels property: \"+e);if(hr[e].labels.length!==hr[e].channels)throw new Error(\"channel and label counts mismatch: \"+e);let{channels:t,labels:r}=hr[e];delete hr[e].channels,delete hr[e].labels,Object.defineProperty(hr[e],\"channels\",{value:t}),Object.defineProperty(hr[e],\"labels\",{value:r})}hr.rgb.hsl=function(e){let t=e[0]/255,r=e[1]/255,s=e[2]/255,a=Math.min(t,r,s),n=Math.max(t,r,s),c=n-a,f,p;n===a?f=0:t===n?f=(r-s)/c:r===n?f=2+(s-t)/c:s===n&&(f=4+(t-r)/c),f=Math.min(f*60,360),f<0&&(f+=360);let h=(a+n)/2;return n===a?p=0:h<=.5?p=c/(n+a):p=c/(2-n-a),[f,p*100,h*100]};hr.rgb.hsv=function(e){let t,r,s,a,n,c=e[0]/255,f=e[1]/255,p=e[2]/255,h=Math.max(c,f,p),E=h-Math.min(c,f,p),C=function(S){return(h-S)/6/E+1/2};return E===0?(a=0,n=0):(n=E/h,t=C(c),r=C(f),s=C(p),c===h?a=s-r:f===h?a=1/3+t-s:p===h&&(a=2/3+r-t),a<0?a+=1:a>1&&(a-=1)),[a*360,n*100,h*100]};hr.rgb.hwb=function(e){let t=e[0],r=e[1],s=e[2],a=hr.rgb.hsl(e)[0],n=1/255*Math.min(t,Math.min(r,s));return s=1-1/255*Math.max(t,Math.max(r,s)),[a,n*100,s*100]};hr.rgb.cmyk=function(e){let t=e[0]/255,r=e[1]/255,s=e[2]/255,a=Math.min(1-t,1-r,1-s),n=(1-t-a)/(1-a)||0,c=(1-r-a)/(1-a)||0,f=(1-s-a)/(1-a)||0;return[n*100,c*100,f*100,a*100]};function xYe(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}hr.rgb.keyword=function(e){let t=Hie[e];if(t)return t;let r=1/0,s;for(let a of Object.keys(l2)){let n=l2[a],c=xYe(e,n);c<r&&(r=c,s=a)}return s};hr.keyword.rgb=function(e){return l2[e]};hr.rgb.xyz=function(e){let t=e[0]/255,r=e[1]/255,s=e[2]/255;t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,s=s>.04045?((s+.055)/1.055)**2.4:s/12.92;let a=t*.4124+r*.3576+s*.1805,n=t*.2126+r*.7152+s*.0722,c=t*.0193+r*.1192+s*.9505;return[a*100,n*100,c*100]};hr.rgb.lab=function(e){let t=hr.rgb.xyz(e),r=t[0],s=t[1],a=t[2];r/=95.047,s/=100,a/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;let n=116*s-16,c=500*(r-s),f=200*(s-a);return[n,c,f]};hr.hsl.rgb=function(e){let t=e[0]/360,r=e[1]/100,s=e[2]/100,a,n,c;if(r===0)return c=s*255,[c,c,c];s<.5?a=s*(1+r):a=s+r-s*r;let f=2*s-a,p=[0,0,0];for(let h=0;h<3;h++)n=t+1/3*-(h-1),n<0&&n++,n>1&&n--,6*n<1?c=f+(a-f)*6*n:2*n<1?c=a:3*n<2?c=f+(a-f)*(2/3-n)*6:c=f,p[h]=c*255;return p};hr.hsl.hsv=function(e){let t=e[0],r=e[1]/100,s=e[2]/100,a=r,n=Math.max(s,.01);s*=2,r*=s<=1?s:2-s,a*=n<=1?n:2-n;let c=(s+r)/2,f=s===0?2*a/(n+a):2*r/(s+r);return[t,f*100,c*100]};hr.hsv.rgb=function(e){let t=e[0]/60,r=e[1]/100,s=e[2]/100,a=Math.floor(t)%6,n=t-Math.floor(t),c=255*s*(1-r),f=255*s*(1-r*n),p=255*s*(1-r*(1-n));switch(s*=255,a){case 0:return[s,p,c];case 1:return[f,s,c];case 2:return[c,s,p];case 3:return[c,f,s];case 4:return[p,c,s];case 5:return[s,c,f]}};hr.hsv.hsl=function(e){let t=e[0],r=e[1]/100,s=e[2]/100,a=Math.max(s,.01),n,c;c=(2-r)*s;let f=(2-r)*a;return n=r*a,n/=f<=1?f:2-f,n=n||0,c/=2,[t,n*100,c*100]};hr.hwb.rgb=function(e){let t=e[0]/360,r=e[1]/100,s=e[2]/100,a=r+s,n;a>1&&(r/=a,s/=a);let c=Math.floor(6*t),f=1-s;n=6*t-c,c&1&&(n=1-n);let p=r+n*(f-r),h,E,C;switch(c){default:case 6:case 0:h=f,E=p,C=r;break;case 1:h=p,E=f,C=r;break;case 2:h=r,E=f,C=p;break;case 3:h=r,E=p,C=f;break;case 4:h=p,E=r,C=f;break;case 5:h=f,E=r,C=p;break}return[h*255,E*255,C*255]};hr.cmyk.rgb=function(e){let t=e[0]/100,r=e[1]/100,s=e[2]/100,a=e[3]/100,n=1-Math.min(1,t*(1-a)+a),c=1-Math.min(1,r*(1-a)+a),f=1-Math.min(1,s*(1-a)+a);return[n*255,c*255,f*255]};hr.xyz.rgb=function(e){let t=e[0]/100,r=e[1]/100,s=e[2]/100,a,n,c;return a=t*3.2406+r*-1.5372+s*-.4986,n=t*-.9689+r*1.8758+s*.0415,c=t*.0557+r*-.204+s*1.057,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,c=c>.0031308?1.055*c**(1/2.4)-.055:c*12.92,a=Math.min(Math.max(0,a),1),n=Math.min(Math.max(0,n),1),c=Math.min(Math.max(0,c),1),[a*255,n*255,c*255]};hr.xyz.lab=function(e){let t=e[0],r=e[1],s=e[2];t/=95.047,r/=100,s/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116;let a=116*r-16,n=500*(t-r),c=200*(r-s);return[a,n,c]};hr.lab.xyz=function(e){let t=e[0],r=e[1],s=e[2],a,n,c;n=(t+16)/116,a=r/500+n,c=n-s/200;let f=n**3,p=a**3,h=c**3;return n=f>.008856?f:(n-16/116)/7.787,a=p>.008856?p:(a-16/116)/7.787,c=h>.008856?h:(c-16/116)/7.787,a*=95.047,n*=100,c*=108.883,[a,n,c]};hr.lab.lch=function(e){let t=e[0],r=e[1],s=e[2],a;a=Math.atan2(s,r)*360/2/Math.PI,a<0&&(a+=360);let c=Math.sqrt(r*r+s*s);return[t,c,a]};hr.lch.lab=function(e){let t=e[0],r=e[1],a=e[2]/360*2*Math.PI,n=r*Math.cos(a),c=r*Math.sin(a);return[t,n,c]};hr.rgb.ansi16=function(e,t=null){let[r,s,a]=e,n=t===null?hr.rgb.hsv(e)[2]:t;if(n=Math.round(n/50),n===0)return 30;let c=30+(Math.round(a/255)<<2|Math.round(s/255)<<1|Math.round(r/255));return n===2&&(c+=60),c};hr.hsv.ansi16=function(e){return hr.rgb.ansi16(hr.hsv.rgb(e),e[2])};hr.rgb.ansi256=function(e){let t=e[0],r=e[1],s=e[2];return t===r&&r===s?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(s/255*5)};hr.ansi16.rgb=function(e){let t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];let r=(~~(e>50)+1)*.5,s=(t&1)*r*255,a=(t>>1&1)*r*255,n=(t>>2&1)*r*255;return[s,a,n]};hr.ansi256.rgb=function(e){if(e>=232){let n=(e-232)*10+8;return[n,n,n]}e-=16;let t,r=Math.floor(e/36)/5*255,s=Math.floor((t=e%36)/6)/5*255,a=t%6/5*255;return[r,s,a]};hr.rgb.hex=function(e){let r=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return\"000000\".substring(r.length)+r};hr.hex.rgb=function(e){let t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let r=t[0];t[0].length===3&&(r=r.split(\"\").map(f=>f+f).join(\"\"));let s=parseInt(r,16),a=s>>16&255,n=s>>8&255,c=s&255;return[a,n,c]};hr.rgb.hcg=function(e){let t=e[0]/255,r=e[1]/255,s=e[2]/255,a=Math.max(Math.max(t,r),s),n=Math.min(Math.min(t,r),s),c=a-n,f,p;return c<1?f=n/(1-c):f=0,c<=0?p=0:a===t?p=(r-s)/c%6:a===r?p=2+(s-t)/c:p=4+(t-r)/c,p/=6,p%=1,[p*360,c*100,f*100]};hr.hsl.hcg=function(e){let t=e[1]/100,r=e[2]/100,s=r<.5?2*t*r:2*t*(1-r),a=0;return s<1&&(a=(r-.5*s)/(1-s)),[e[0],s*100,a*100]};hr.hsv.hcg=function(e){let t=e[1]/100,r=e[2]/100,s=t*r,a=0;return s<1&&(a=(r-s)/(1-s)),[e[0],s*100,a*100]};hr.hcg.rgb=function(e){let t=e[0]/360,r=e[1]/100,s=e[2]/100;if(r===0)return[s*255,s*255,s*255];let a=[0,0,0],n=t%1*6,c=n%1,f=1-c,p=0;switch(Math.floor(n)){case 0:a[0]=1,a[1]=c,a[2]=0;break;case 1:a[0]=f,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=c;break;case 3:a[0]=0,a[1]=f,a[2]=1;break;case 4:a[0]=c,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=f}return p=(1-r)*s,[(r*a[0]+p)*255,(r*a[1]+p)*255,(r*a[2]+p)*255]};hr.hcg.hsv=function(e){let t=e[1]/100,r=e[2]/100,s=t+r*(1-t),a=0;return s>0&&(a=t/s),[e[0],a*100,s*100]};hr.hcg.hsl=function(e){let t=e[1]/100,s=e[2]/100*(1-t)+.5*t,a=0;return s>0&&s<.5?a=t/(2*s):s>=.5&&s<1&&(a=t/(2*(1-s))),[e[0],a*100,s*100]};hr.hcg.hwb=function(e){let t=e[1]/100,r=e[2]/100,s=t+r*(1-t);return[e[0],(s-t)*100,(1-s)*100]};hr.hwb.hcg=function(e){let t=e[1]/100,s=1-e[2]/100,a=s-t,n=0;return a<1&&(n=(s-a)/(1-a)),[e[0],a*100,n*100]};hr.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]};hr.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]};hr.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]};hr.gray.hsl=function(e){return[0,0,e[0]]};hr.gray.hsv=hr.gray.hsl;hr.gray.hwb=function(e){return[0,100,e[0]]};hr.gray.cmyk=function(e){return[0,0,0,e[0]]};hr.gray.lab=function(e){return[e[0],0,0]};hr.gray.hex=function(e){let t=Math.round(e[0]/100*255)&255,s=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return\"000000\".substring(s.length)+s};hr.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}});var qie=G((lQt,Gie)=>{var rk=T_();function kYe(){let e={},t=Object.keys(rk);for(let r=t.length,s=0;s<r;s++)e[t[s]]={distance:-1,parent:null};return e}function QYe(e){let t=kYe(),r=[e];for(t[e].distance=0;r.length;){let s=r.pop(),a=Object.keys(rk[s]);for(let n=a.length,c=0;c<n;c++){let f=a[c],p=t[f];p.distance===-1&&(p.distance=t[s].distance+1,p.parent=s,r.unshift(f))}}return t}function RYe(e,t){return function(r){return t(e(r))}}function TYe(e,t){let r=[t[e].parent,e],s=rk[t[e].parent][e],a=t[e].parent;for(;t[a].parent;)r.unshift(t[a].parent),s=RYe(rk[t[a].parent][a],s),a=t[a].parent;return s.conversion=r,s}Gie.exports=function(e){let t=QYe(e),r={},s=Object.keys(t);for(let a=s.length,n=0;n<a;n++){let c=s[n];t[c].parent!==null&&(r[c]=TYe(c,t))}return r}});var Vie=G((cQt,Wie)=>{var F_=T_(),FYe=qie(),QE={},NYe=Object.keys(F_);function OYe(e){let t=function(...r){let s=r[0];return s==null?s:(s.length>1&&(r=s),e(r))};return\"conversion\"in e&&(t.conversion=e.conversion),t}function LYe(e){let t=function(...r){let s=r[0];if(s==null)return s;s.length>1&&(r=s);let a=e(r);if(typeof a==\"object\")for(let n=a.length,c=0;c<n;c++)a[c]=Math.round(a[c]);return a};return\"conversion\"in e&&(t.conversion=e.conversion),t}NYe.forEach(e=>{QE[e]={},Object.defineProperty(QE[e],\"channels\",{value:F_[e].channels}),Object.defineProperty(QE[e],\"labels\",{value:F_[e].labels});let t=FYe(e);Object.keys(t).forEach(s=>{let a=t[s];QE[e][s]=LYe(a),QE[e][s].raw=OYe(a)})});Wie.exports=QE});var ik=G((uQt,Zie)=>{\"use strict\";var Yie=(e,t)=>(...r)=>`\\x1B[${e(...r)+t}m`,Kie=(e,t)=>(...r)=>{let s=e(...r);return`\\x1B[${38+t};5;${s}m`},Jie=(e,t)=>(...r)=>{let s=e(...r);return`\\x1B[${38+t};2;${s[0]};${s[1]};${s[2]}m`},nk=e=>e,zie=(e,t,r)=>[e,t,r],RE=(e,t,r)=>{Object.defineProperty(e,t,{get:()=>{let s=r();return Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0}),s},enumerable:!0,configurable:!0})},N_,TE=(e,t,r,s)=>{N_===void 0&&(N_=Vie());let a=s?10:0,n={};for(let[c,f]of Object.entries(N_)){let p=c===\"ansi16\"?\"ansi\":c;c===t?n[p]=e(r,a):typeof f==\"object\"&&(n[p]=e(f[t],a))}return n};function MYe(){let e=new Map,t={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};t.color.gray=t.color.blackBright,t.bgColor.bgGray=t.bgColor.bgBlackBright,t.color.grey=t.color.blackBright,t.bgColor.bgGrey=t.bgColor.bgBlackBright;for(let[r,s]of Object.entries(t)){for(let[a,n]of Object.entries(s))t[a]={open:`\\x1B[${n[0]}m`,close:`\\x1B[${n[1]}m`},s[a]=t[a],e.set(n[0],n[1]);Object.defineProperty(t,r,{value:s,enumerable:!1})}return Object.defineProperty(t,\"codes\",{value:e,enumerable:!1}),t.color.close=\"\\x1B[39m\",t.bgColor.close=\"\\x1B[49m\",RE(t.color,\"ansi\",()=>TE(Yie,\"ansi16\",nk,!1)),RE(t.color,\"ansi256\",()=>TE(Kie,\"ansi256\",nk,!1)),RE(t.color,\"ansi16m\",()=>TE(Jie,\"rgb\",zie,!1)),RE(t.bgColor,\"ansi\",()=>TE(Yie,\"ansi16\",nk,!0)),RE(t.bgColor,\"ansi256\",()=>TE(Kie,\"ansi256\",nk,!0)),RE(t.bgColor,\"ansi16m\",()=>TE(Jie,\"rgb\",zie,!0)),t}Object.defineProperty(Zie,\"exports\",{enumerable:!0,get:MYe})});var $ie=G((fQt,Xie)=>{\"use strict\";Xie.exports=(e,t=process.argv)=>{let r=e.startsWith(\"-\")?\"\":e.length===1?\"-\":\"--\",s=t.indexOf(r+e),a=t.indexOf(\"--\");return s!==-1&&(a===-1||s<a)}});var rse=G((AQt,tse)=>{\"use strict\";var UYe=Ie(\"os\"),ese=Ie(\"tty\"),Dc=$ie(),{env:Qs}=process,o0;Dc(\"no-color\")||Dc(\"no-colors\")||Dc(\"color=false\")||Dc(\"color=never\")?o0=0:(Dc(\"color\")||Dc(\"colors\")||Dc(\"color=true\")||Dc(\"color=always\"))&&(o0=1);\"FORCE_COLOR\"in Qs&&(Qs.FORCE_COLOR===\"true\"?o0=1:Qs.FORCE_COLOR===\"false\"?o0=0:o0=Qs.FORCE_COLOR.length===0?1:Math.min(parseInt(Qs.FORCE_COLOR,10),3));function O_(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function L_(e,t){if(o0===0)return 0;if(Dc(\"color=16m\")||Dc(\"color=full\")||Dc(\"color=truecolor\"))return 3;if(Dc(\"color=256\"))return 2;if(e&&!t&&o0===void 0)return 0;let r=o0||0;if(Qs.TERM===\"dumb\")return r;if(process.platform===\"win32\"){let s=UYe.release().split(\".\");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if(\"CI\"in Qs)return[\"TRAVIS\",\"CIRCLECI\",\"APPVEYOR\",\"GITLAB_CI\"].some(s=>s in Qs)||Qs.CI_NAME===\"codeship\"?1:r;if(\"TEAMCITY_VERSION\"in Qs)return/^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(Qs.TEAMCITY_VERSION)?1:0;if(\"GITHUB_ACTIONS\"in Qs)return 1;if(Qs.COLORTERM===\"truecolor\")return 3;if(\"TERM_PROGRAM\"in Qs){let s=parseInt((Qs.TERM_PROGRAM_VERSION||\"\").split(\".\")[0],10);switch(Qs.TERM_PROGRAM){case\"iTerm.app\":return s>=3?3:2;case\"Apple_Terminal\":return 2}}return/-256(color)?$/i.test(Qs.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Qs.TERM)||\"COLORTERM\"in Qs?1:r}function _Ye(e){let t=L_(e,e&&e.isTTY);return O_(t)}tse.exports={supportsColor:_Ye,stdout:O_(L_(!0,ese.isatty(1))),stderr:O_(L_(!0,ese.isatty(2)))}});var ise=G((pQt,nse)=>{\"use strict\";var HYe=(e,t,r)=>{let s=e.indexOf(t);if(s===-1)return e;let a=t.length,n=0,c=\"\";do c+=e.substr(n,s-n)+t+r,n=s+a,s=e.indexOf(t,n);while(s!==-1);return c+=e.substr(n),c},jYe=(e,t,r,s)=>{let a=0,n=\"\";do{let c=e[s-1]===\"\\r\";n+=e.substr(a,(c?s-1:s)-a)+t+(c?`\\r\n`:`\n`)+r,a=s+1,s=e.indexOf(`\n`,a)}while(s!==-1);return n+=e.substr(a),n};nse.exports={stringReplaceAll:HYe,stringEncaseCRLFWithFirstIndex:jYe}});var cse=G((hQt,lse)=>{\"use strict\";var GYe=/(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi,sse=/(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g,qYe=/^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/,WYe=/\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi,VYe=new Map([[\"n\",`\n`],[\"r\",\"\\r\"],[\"t\",\"\t\"],[\"b\",\"\\b\"],[\"f\",\"\\f\"],[\"v\",\"\\v\"],[\"0\",\"\\0\"],[\"\\\\\",\"\\\\\"],[\"e\",\"\\x1B\"],[\"a\",\"\\x07\"]]);function ase(e){let t=e[0]===\"u\",r=e[1]===\"{\";return t&&!r&&e.length===5||e[0]===\"x\"&&e.length===3?String.fromCharCode(parseInt(e.slice(1),16)):t&&r?String.fromCodePoint(parseInt(e.slice(2,-1),16)):VYe.get(e)||e}function YYe(e,t){let r=[],s=t.trim().split(/\\s*,\\s*/g),a;for(let n of s){let c=Number(n);if(!Number.isNaN(c))r.push(c);else if(a=n.match(qYe))r.push(a[2].replace(WYe,(f,p,h)=>p?ase(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${e}')`)}return r}function KYe(e){sse.lastIndex=0;let t=[],r;for(;(r=sse.exec(e))!==null;){let s=r[1];if(r[2]){let a=YYe(s,r[2]);t.push([s].concat(a))}else t.push([s])}return t}function ose(e,t){let r={};for(let a of t)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let s=e;for(let[a,n]of Object.entries(r))if(Array.isArray(n)){if(!(a in s))throw new Error(`Unknown Chalk style: ${a}`);s=n.length>0?s[a](...n):s[a]}return s}lse.exports=(e,t)=>{let r=[],s=[],a=[];if(t.replace(GYe,(n,c,f,p,h,E)=>{if(c)a.push(ase(c));else if(p){let C=a.join(\"\");a=[],s.push(r.length===0?C:ose(e,r)(C)),r.push({inverse:f,styles:KYe(p)})}else if(h){if(r.length===0)throw new Error(\"Found extraneous } in Chalk template literal\");s.push(ose(e,r)(a.join(\"\"))),a=[],r.pop()}else a.push(E)}),s.push(a.join(\"\")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?\"\":\"s\"} (\\`}\\`)`;throw new Error(n)}return s.join(\"\")}});var NE=G((gQt,gse)=>{\"use strict\";var c2=ik(),{stdout:U_,stderr:__}=rse(),{stringReplaceAll:JYe,stringEncaseCRLFWithFirstIndex:zYe}=ise(),{isArray:sk}=Array,fse=[\"ansi\",\"ansi\",\"ansi256\",\"ansi16m\"],FE=Object.create(null),ZYe=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error(\"The `level` option should be an integer from 0 to 3\");let r=U_?U_.level:0;e.level=t.level===void 0?r:t.level},H_=class{constructor(t){return Ase(t)}},Ase=e=>{let t={};return ZYe(t,e),t.template=(...r)=>hse(t.template,...r),Object.setPrototypeOf(t,ok.prototype),Object.setPrototypeOf(t.template,t),t.template.constructor=()=>{throw new Error(\"`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.\")},t.template.Instance=H_,t.template};function ok(e){return Ase(e)}for(let[e,t]of Object.entries(c2))FE[e]={get(){let r=ak(this,j_(t.open,t.close,this._styler),this._isEmpty);return Object.defineProperty(this,e,{value:r}),r}};FE.visible={get(){let e=ak(this,this._styler,!0);return Object.defineProperty(this,\"visible\",{value:e}),e}};var pse=[\"rgb\",\"hex\",\"keyword\",\"hsl\",\"hsv\",\"hwb\",\"ansi\",\"ansi256\"];for(let e of pse)FE[e]={get(){let{level:t}=this;return function(...r){let s=j_(c2.color[fse[t]][e](...r),c2.color.close,this._styler);return ak(this,s,this._isEmpty)}}};for(let e of pse){let t=\"bg\"+e[0].toUpperCase()+e.slice(1);FE[t]={get(){let{level:r}=this;return function(...s){let a=j_(c2.bgColor[fse[r]][e](...s),c2.bgColor.close,this._styler);return ak(this,a,this._isEmpty)}}}}var XYe=Object.defineProperties(()=>{},{...FE,level:{enumerable:!0,get(){return this._generator.level},set(e){this._generator.level=e}}}),j_=(e,t,r)=>{let s,a;return r===void 0?(s=e,a=t):(s=r.openAll+e,a=t+r.closeAll),{open:e,close:t,openAll:s,closeAll:a,parent:r}},ak=(e,t,r)=>{let s=(...a)=>sk(a[0])&&sk(a[0].raw)?use(s,hse(s,...a)):use(s,a.length===1?\"\"+a[0]:a.join(\" \"));return Object.setPrototypeOf(s,XYe),s._generator=e,s._styler=t,s._isEmpty=r,s},use=(e,t)=>{if(e.level<=0||!t)return e._isEmpty?\"\":t;let r=e._styler;if(r===void 0)return t;let{openAll:s,closeAll:a}=r;if(t.indexOf(\"\\x1B\")!==-1)for(;r!==void 0;)t=JYe(t,r.close,r.open),r=r.parent;let n=t.indexOf(`\n`);return n!==-1&&(t=zYe(t,a,s,n)),s+t+a},M_,hse=(e,...t)=>{let[r]=t;if(!sk(r)||!sk(r.raw))return t.join(\" \");let s=t.slice(1),a=[r.raw[0]];for(let n=1;n<r.length;n++)a.push(String(s[n-1]).replace(/[{}\\\\]/g,\"\\\\$&\"),String(r.raw[n]));return M_===void 0&&(M_=cse()),M_(e,a.join(\"\"))};Object.defineProperties(ok.prototype,FE);var lk=ok();lk.supportsColor=U_;lk.stderr=ok({level:__?__.level:0});lk.stderr.supportsColor=__;gse.exports=lk});var ck=G(bc=>{\"use strict\";bc.isInteger=e=>typeof e==\"number\"?Number.isInteger(e):typeof e==\"string\"&&e.trim()!==\"\"?Number.isInteger(Number(e)):!1;bc.find=(e,t)=>e.nodes.find(r=>r.type===t);bc.exceedsLimit=(e,t,r=1,s)=>s===!1||!bc.isInteger(e)||!bc.isInteger(t)?!1:(Number(t)-Number(e))/Number(r)>=s;bc.escapeNode=(e,t=0,r)=>{let s=e.nodes[t];s&&(r&&s.type===r||s.type===\"open\"||s.type===\"close\")&&s.escaped!==!0&&(s.value=\"\\\\\"+s.value,s.escaped=!0)};bc.encloseBrace=e=>e.type!==\"brace\"||e.commas>>0+e.ranges>>0?!1:(e.invalid=!0,!0);bc.isInvalidBrace=e=>e.type!==\"brace\"?!1:e.invalid===!0||e.dollar?!0:!(e.commas>>0+e.ranges>>0)||e.open!==!0||e.close!==!0?(e.invalid=!0,!0):!1;bc.isOpenOrClose=e=>e.type===\"open\"||e.type===\"close\"?!0:e.open===!0||e.close===!0;bc.reduce=e=>e.reduce((t,r)=>(r.type===\"text\"&&t.push(r.value),r.type===\"range\"&&(r.type=\"text\"),t),[]);bc.flatten=(...e)=>{let t=[],r=s=>{for(let a=0;a<s.length;a++){let n=s[a];Array.isArray(n)?r(n,t):n!==void 0&&t.push(n)}return t};return r(e),t}});var uk=G((mQt,mse)=>{\"use strict\";var dse=ck();mse.exports=(e,t={})=>{let r=(s,a={})=>{let n=t.escapeInvalid&&dse.isInvalidBrace(a),c=s.invalid===!0&&t.escapeInvalid===!0,f=\"\";if(s.value)return(n||c)&&dse.isOpenOrClose(s)?\"\\\\\"+s.value:s.value;if(s.value)return s.value;if(s.nodes)for(let p of s.nodes)f+=r(p);return f};return r(e)}});var Ese=G((yQt,yse)=>{\"use strict\";yse.exports=function(e){return typeof e==\"number\"?e-e===0:typeof e==\"string\"&&e.trim()!==\"\"?Number.isFinite?Number.isFinite(+e):isFinite(+e):!1}});var Pse=G((EQt,bse)=>{\"use strict\";var Ise=Ese(),Hd=(e,t,r)=>{if(Ise(e)===!1)throw new TypeError(\"toRegexRange: expected the first argument to be a number\");if(t===void 0||e===t)return String(e);if(Ise(t)===!1)throw new TypeError(\"toRegexRange: expected the second argument to be a number.\");let s={relaxZeros:!0,...r};typeof s.strictZeros==\"boolean\"&&(s.relaxZeros=s.strictZeros===!1);let a=String(s.relaxZeros),n=String(s.shorthand),c=String(s.capture),f=String(s.wrap),p=e+\":\"+t+\"=\"+a+n+c+f;if(Hd.cache.hasOwnProperty(p))return Hd.cache[p].result;let h=Math.min(e,t),E=Math.max(e,t);if(Math.abs(h-E)===1){let T=e+\"|\"+t;return s.capture?`(${T})`:s.wrap===!1?T:`(?:${T})`}let C=Dse(e)||Dse(t),S={min:e,max:t,a:h,b:E},x=[],I=[];if(C&&(S.isPadded=C,S.maxLen=String(S.max).length),h<0){let T=E<0?Math.abs(E):1;I=Cse(T,Math.abs(h),S,s),h=S.a=0}return E>=0&&(x=Cse(h,E,S,s)),S.negatives=I,S.positives=x,S.result=$Ye(I,x,s),s.capture===!0?S.result=`(${S.result})`:s.wrap!==!1&&x.length+I.length>1&&(S.result=`(?:${S.result})`),Hd.cache[p]=S,S.result};function $Ye(e,t,r){let s=G_(e,t,\"-\",!1,r)||[],a=G_(t,e,\"\",!1,r)||[],n=G_(e,t,\"-?\",!0,r)||[];return s.concat(n).concat(a).join(\"|\")}function e7e(e,t){let r=1,s=1,a=Bse(e,r),n=new Set([t]);for(;e<=a&&a<=t;)n.add(a),r+=1,a=Bse(e,r);for(a=vse(t+1,s)-1;e<a&&a<=t;)n.add(a),s+=1,a=vse(t+1,s)-1;return n=[...n],n.sort(n7e),n}function t7e(e,t,r){if(e===t)return{pattern:e,count:[],digits:0};let s=r7e(e,t),a=s.length,n=\"\",c=0;for(let f=0;f<a;f++){let[p,h]=s[f];p===h?n+=p:p!==\"0\"||h!==\"9\"?n+=i7e(p,h,r):c++}return c&&(n+=r.shorthand===!0?\"\\\\d\":\"[0-9]\"),{pattern:n,count:[c],digits:a}}function Cse(e,t,r,s){let a=e7e(e,t),n=[],c=e,f;for(let p=0;p<a.length;p++){let h=a[p],E=t7e(String(c),String(h),s),C=\"\";if(!r.isPadded&&f&&f.pattern===E.pattern){f.count.length>1&&f.count.pop(),f.count.push(E.count[0]),f.string=f.pattern+Sse(f.count),c=h+1;continue}r.isPadded&&(C=s7e(h,r,s)),E.string=C+E.pattern+Sse(E.count),n.push(E),c=h+1,f=E}return n}function G_(e,t,r,s,a){let n=[];for(let c of e){let{string:f}=c;!s&&!wse(t,\"string\",f)&&n.push(r+f),s&&wse(t,\"string\",f)&&n.push(r+f)}return n}function r7e(e,t){let r=[];for(let s=0;s<e.length;s++)r.push([e[s],t[s]]);return r}function n7e(e,t){return e>t?1:t>e?-1:0}function wse(e,t,r){return e.some(s=>s[t]===r)}function Bse(e,t){return Number(String(e).slice(0,-t)+\"9\".repeat(t))}function vse(e,t){return e-e%Math.pow(10,t)}function Sse(e){let[t=0,r=\"\"]=e;return r||t>1?`{${t+(r?\",\"+r:\"\")}}`:\"\"}function i7e(e,t,r){return`[${e}${t-e===1?\"\":\"-\"}${t}]`}function Dse(e){return/^-?(0+)\\d/.test(e)}function s7e(e,t,r){if(!t.isPadded)return e;let s=Math.abs(t.maxLen-String(e).length),a=r.relaxZeros!==!1;switch(s){case 0:return\"\";case 1:return a?\"0?\":\"0\";case 2:return a?\"0{0,2}\":\"00\";default:return a?`0{0,${s}}`:`0{${s}}`}}Hd.cache={};Hd.clearCache=()=>Hd.cache={};bse.exports=Hd});var V_=G((IQt,Ose)=>{\"use strict\";var o7e=Ie(\"util\"),Qse=Pse(),xse=e=>e!==null&&typeof e==\"object\"&&!Array.isArray(e),a7e=e=>t=>e===!0?Number(t):String(t),q_=e=>typeof e==\"number\"||typeof e==\"string\"&&e!==\"\",u2=e=>Number.isInteger(+e),W_=e=>{let t=`${e}`,r=-1;if(t[0]===\"-\"&&(t=t.slice(1)),t===\"0\")return!1;for(;t[++r]===\"0\";);return r>0},l7e=(e,t,r)=>typeof e==\"string\"||typeof t==\"string\"?!0:r.stringify===!0,c7e=(e,t,r)=>{if(t>0){let s=e[0]===\"-\"?\"-\":\"\";s&&(e=e.slice(1)),e=s+e.padStart(s?t-1:t,\"0\")}return r===!1?String(e):e},kse=(e,t)=>{let r=e[0]===\"-\"?\"-\":\"\";for(r&&(e=e.slice(1),t--);e.length<t;)e=\"0\"+e;return r?\"-\"+e:e},u7e=(e,t)=>{e.negatives.sort((c,f)=>c<f?-1:c>f?1:0),e.positives.sort((c,f)=>c<f?-1:c>f?1:0);let r=t.capture?\"\":\"?:\",s=\"\",a=\"\",n;return e.positives.length&&(s=e.positives.join(\"|\")),e.negatives.length&&(a=`-(${r}${e.negatives.join(\"|\")})`),s&&a?n=`${s}|${a}`:n=s||a,t.wrap?`(${r}${n})`:n},Rse=(e,t,r,s)=>{if(r)return Qse(e,t,{wrap:!1,...s});let a=String.fromCharCode(e);if(e===t)return a;let n=String.fromCharCode(t);return`[${a}-${n}]`},Tse=(e,t,r)=>{if(Array.isArray(e)){let s=r.wrap===!0,a=r.capture?\"\":\"?:\";return s?`(${a}${e.join(\"|\")})`:e.join(\"|\")}return Qse(e,t,r)},Fse=(...e)=>new RangeError(\"Invalid range arguments: \"+o7e.inspect(...e)),Nse=(e,t,r)=>{if(r.strictRanges===!0)throw Fse([e,t]);return[]},f7e=(e,t)=>{if(t.strictRanges===!0)throw new TypeError(`Expected step \"${e}\" to be a number`);return[]},A7e=(e,t,r=1,s={})=>{let a=Number(e),n=Number(t);if(!Number.isInteger(a)||!Number.isInteger(n)){if(s.strictRanges===!0)throw Fse([e,t]);return[]}a===0&&(a=0),n===0&&(n=0);let c=a>n,f=String(e),p=String(t),h=String(r);r=Math.max(Math.abs(r),1);let E=W_(f)||W_(p)||W_(h),C=E?Math.max(f.length,p.length,h.length):0,S=E===!1&&l7e(e,t,s)===!1,x=s.transform||a7e(S);if(s.toRegex&&r===1)return Rse(kse(e,C),kse(t,C),!0,s);let I={negatives:[],positives:[]},T=Y=>I[Y<0?\"negatives\":\"positives\"].push(Math.abs(Y)),O=[],U=0;for(;c?a>=n:a<=n;)s.toRegex===!0&&r>1?T(a):O.push(c7e(x(a,U),C,S)),a=c?a-r:a+r,U++;return s.toRegex===!0?r>1?u7e(I,s):Tse(O,null,{wrap:!1,...s}):O},p7e=(e,t,r=1,s={})=>{if(!u2(e)&&e.length>1||!u2(t)&&t.length>1)return Nse(e,t,s);let a=s.transform||(S=>String.fromCharCode(S)),n=`${e}`.charCodeAt(0),c=`${t}`.charCodeAt(0),f=n>c,p=Math.min(n,c),h=Math.max(n,c);if(s.toRegex&&r===1)return Rse(p,h,!1,s);let E=[],C=0;for(;f?n>=c:n<=c;)E.push(a(n,C)),n=f?n-r:n+r,C++;return s.toRegex===!0?Tse(E,null,{wrap:!1,options:s}):E},fk=(e,t,r,s={})=>{if(t==null&&q_(e))return[e];if(!q_(e)||!q_(t))return Nse(e,t,s);if(typeof r==\"function\")return fk(e,t,1,{transform:r});if(xse(r))return fk(e,t,0,r);let a={...s};return a.capture===!0&&(a.wrap=!0),r=r||a.step||1,u2(r)?u2(e)&&u2(t)?A7e(e,t,r,a):p7e(e,t,Math.max(Math.abs(r),1),a):r!=null&&!xse(r)?f7e(r,a):fk(e,t,1,r)};Ose.exports=fk});var Use=G((CQt,Mse)=>{\"use strict\";var h7e=V_(),Lse=ck(),g7e=(e,t={})=>{let r=(s,a={})=>{let n=Lse.isInvalidBrace(a),c=s.invalid===!0&&t.escapeInvalid===!0,f=n===!0||c===!0,p=t.escapeInvalid===!0?\"\\\\\":\"\",h=\"\";if(s.isOpen===!0||s.isClose===!0)return p+s.value;if(s.type===\"open\")return f?p+s.value:\"(\";if(s.type===\"close\")return f?p+s.value:\")\";if(s.type===\"comma\")return s.prev.type===\"comma\"?\"\":f?s.value:\"|\";if(s.value)return s.value;if(s.nodes&&s.ranges>0){let E=Lse.reduce(s.nodes),C=h7e(...E,{...t,wrap:!1,toRegex:!0});if(C.length!==0)return E.length>1&&C.length>1?`(${C})`:C}if(s.nodes)for(let E of s.nodes)h+=r(E,s);return h};return r(e)};Mse.exports=g7e});var jse=G((wQt,Hse)=>{\"use strict\";var d7e=V_(),_se=uk(),OE=ck(),jd=(e=\"\",t=\"\",r=!1)=>{let s=[];if(e=[].concat(e),t=[].concat(t),!t.length)return e;if(!e.length)return r?OE.flatten(t).map(a=>`{${a}}`):t;for(let a of e)if(Array.isArray(a))for(let n of a)s.push(jd(n,t,r));else for(let n of t)r===!0&&typeof n==\"string\"&&(n=`{${n}}`),s.push(Array.isArray(n)?jd(a,n,r):a+n);return OE.flatten(s)},m7e=(e,t={})=>{let r=t.rangeLimit===void 0?1e3:t.rangeLimit,s=(a,n={})=>{a.queue=[];let c=n,f=n.queue;for(;c.type!==\"brace\"&&c.type!==\"root\"&&c.parent;)c=c.parent,f=c.queue;if(a.invalid||a.dollar){f.push(jd(f.pop(),_se(a,t)));return}if(a.type===\"brace\"&&a.invalid!==!0&&a.nodes.length===2){f.push(jd(f.pop(),[\"{}\"]));return}if(a.nodes&&a.ranges>0){let C=OE.reduce(a.nodes);if(OE.exceedsLimit(...C,t.step,r))throw new RangeError(\"expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.\");let S=d7e(...C,t);S.length===0&&(S=_se(a,t)),f.push(jd(f.pop(),S)),a.nodes=[];return}let p=OE.encloseBrace(a),h=a.queue,E=a;for(;E.type!==\"brace\"&&E.type!==\"root\"&&E.parent;)E=E.parent,h=E.queue;for(let C=0;C<a.nodes.length;C++){let S=a.nodes[C];if(S.type===\"comma\"&&a.type===\"brace\"){C===1&&h.push(\"\"),h.push(\"\");continue}if(S.type===\"close\"){f.push(jd(f.pop(),h,p));continue}if(S.value&&S.type!==\"open\"){h.push(jd(h.pop(),S.value));continue}S.nodes&&s(S,a)}return h};return OE.flatten(s(e))};Hse.exports=m7e});var qse=G((BQt,Gse)=>{\"use strict\";Gse.exports={MAX_LENGTH:1024*64,CHAR_0:\"0\",CHAR_9:\"9\",CHAR_UPPERCASE_A:\"A\",CHAR_LOWERCASE_A:\"a\",CHAR_UPPERCASE_Z:\"Z\",CHAR_LOWERCASE_Z:\"z\",CHAR_LEFT_PARENTHESES:\"(\",CHAR_RIGHT_PARENTHESES:\")\",CHAR_ASTERISK:\"*\",CHAR_AMPERSAND:\"&\",CHAR_AT:\"@\",CHAR_BACKSLASH:\"\\\\\",CHAR_BACKTICK:\"`\",CHAR_CARRIAGE_RETURN:\"\\r\",CHAR_CIRCUMFLEX_ACCENT:\"^\",CHAR_COLON:\":\",CHAR_COMMA:\",\",CHAR_DOLLAR:\"$\",CHAR_DOT:\".\",CHAR_DOUBLE_QUOTE:'\"',CHAR_EQUAL:\"=\",CHAR_EXCLAMATION_MARK:\"!\",CHAR_FORM_FEED:\"\\f\",CHAR_FORWARD_SLASH:\"/\",CHAR_HASH:\"#\",CHAR_HYPHEN_MINUS:\"-\",CHAR_LEFT_ANGLE_BRACKET:\"<\",CHAR_LEFT_CURLY_BRACE:\"{\",CHAR_LEFT_SQUARE_BRACKET:\"[\",CHAR_LINE_FEED:`\n`,CHAR_NO_BREAK_SPACE:\"\\xA0\",CHAR_PERCENT:\"%\",CHAR_PLUS:\"+\",CHAR_QUESTION_MARK:\"?\",CHAR_RIGHT_ANGLE_BRACKET:\">\",CHAR_RIGHT_CURLY_BRACE:\"}\",CHAR_RIGHT_SQUARE_BRACKET:\"]\",CHAR_SEMICOLON:\";\",CHAR_SINGLE_QUOTE:\"'\",CHAR_SPACE:\" \",CHAR_TAB:\"\t\",CHAR_UNDERSCORE:\"_\",CHAR_VERTICAL_LINE:\"|\",CHAR_ZERO_WIDTH_NOBREAK_SPACE:\"\\uFEFF\"}});var Jse=G((vQt,Kse)=>{\"use strict\";var y7e=uk(),{MAX_LENGTH:Wse,CHAR_BACKSLASH:Y_,CHAR_BACKTICK:E7e,CHAR_COMMA:I7e,CHAR_DOT:C7e,CHAR_LEFT_PARENTHESES:w7e,CHAR_RIGHT_PARENTHESES:B7e,CHAR_LEFT_CURLY_BRACE:v7e,CHAR_RIGHT_CURLY_BRACE:S7e,CHAR_LEFT_SQUARE_BRACKET:Vse,CHAR_RIGHT_SQUARE_BRACKET:Yse,CHAR_DOUBLE_QUOTE:D7e,CHAR_SINGLE_QUOTE:b7e,CHAR_NO_BREAK_SPACE:P7e,CHAR_ZERO_WIDTH_NOBREAK_SPACE:x7e}=qse(),k7e=(e,t={})=>{if(typeof e!=\"string\")throw new TypeError(\"Expected a string\");let r=t||{},s=typeof r.maxLength==\"number\"?Math.min(Wse,r.maxLength):Wse;if(e.length>s)throw new SyntaxError(`Input length (${e.length}), exceeds max characters (${s})`);let a={type:\"root\",input:e,nodes:[]},n=[a],c=a,f=a,p=0,h=e.length,E=0,C=0,S,x={},I=()=>e[E++],T=O=>{if(O.type===\"text\"&&f.type===\"dot\"&&(f.type=\"text\"),f&&f.type===\"text\"&&O.type===\"text\"){f.value+=O.value;return}return c.nodes.push(O),O.parent=c,O.prev=f,f=O,O};for(T({type:\"bos\"});E<h;)if(c=n[n.length-1],S=I(),!(S===x7e||S===P7e)){if(S===Y_){T({type:\"text\",value:(t.keepEscaping?S:\"\")+I()});continue}if(S===Yse){T({type:\"text\",value:\"\\\\\"+S});continue}if(S===Vse){p++;let O=!0,U;for(;E<h&&(U=I());){if(S+=U,U===Vse){p++;continue}if(U===Y_){S+=I();continue}if(U===Yse&&(p--,p===0))break}T({type:\"text\",value:S});continue}if(S===w7e){c=T({type:\"paren\",nodes:[]}),n.push(c),T({type:\"text\",value:S});continue}if(S===B7e){if(c.type!==\"paren\"){T({type:\"text\",value:S});continue}c=n.pop(),T({type:\"text\",value:S}),c=n[n.length-1];continue}if(S===D7e||S===b7e||S===E7e){let O=S,U;for(t.keepQuotes!==!0&&(S=\"\");E<h&&(U=I());){if(U===Y_){S+=U+I();continue}if(U===O){t.keepQuotes===!0&&(S+=U);break}S+=U}T({type:\"text\",value:S});continue}if(S===v7e){C++;let U={type:\"brace\",open:!0,close:!1,dollar:f.value&&f.value.slice(-1)===\"$\"||c.dollar===!0,depth:C,commas:0,ranges:0,nodes:[]};c=T(U),n.push(c),T({type:\"open\",value:S});continue}if(S===S7e){if(c.type!==\"brace\"){T({type:\"text\",value:S});continue}let O=\"close\";c=n.pop(),c.close=!0,T({type:O,value:S}),C--,c=n[n.length-1];continue}if(S===I7e&&C>0){if(c.ranges>0){c.ranges=0;let O=c.nodes.shift();c.nodes=[O,{type:\"text\",value:y7e(c)}]}T({type:\"comma\",value:S}),c.commas++;continue}if(S===C7e&&C>0&&c.commas===0){let O=c.nodes;if(C===0||O.length===0){T({type:\"text\",value:S});continue}if(f.type===\"dot\"){if(c.range=[],f.value+=S,f.type=\"range\",c.nodes.length!==3&&c.nodes.length!==5){c.invalid=!0,c.ranges=0,f.type=\"text\";continue}c.ranges++,c.args=[];continue}if(f.type===\"range\"){O.pop();let U=O[O.length-1];U.value+=f.value+S,f=U,c.ranges--;continue}T({type:\"dot\",value:S});continue}T({type:\"text\",value:S})}do if(c=n.pop(),c.type!==\"root\"){c.nodes.forEach(Y=>{Y.nodes||(Y.type===\"open\"&&(Y.isOpen=!0),Y.type===\"close\"&&(Y.isClose=!0),Y.nodes||(Y.type=\"text\"),Y.invalid=!0)});let O=n[n.length-1],U=O.nodes.indexOf(c);O.nodes.splice(U,1,...c.nodes)}while(n.length>0);return T({type:\"eos\"}),a};Kse.exports=k7e});var Xse=G((SQt,Zse)=>{\"use strict\";var zse=uk(),Q7e=Use(),R7e=jse(),T7e=Jse(),Yl=(e,t={})=>{let r=[];if(Array.isArray(e))for(let s of e){let a=Yl.create(s,t);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(Yl.create(e,t));return t&&t.expand===!0&&t.nodupes===!0&&(r=[...new Set(r)]),r};Yl.parse=(e,t={})=>T7e(e,t);Yl.stringify=(e,t={})=>zse(typeof e==\"string\"?Yl.parse(e,t):e,t);Yl.compile=(e,t={})=>(typeof e==\"string\"&&(e=Yl.parse(e,t)),Q7e(e,t));Yl.expand=(e,t={})=>{typeof e==\"string\"&&(e=Yl.parse(e,t));let r=R7e(e,t);return t.noempty===!0&&(r=r.filter(Boolean)),t.nodupes===!0&&(r=[...new Set(r)]),r};Yl.create=(e,t={})=>e===\"\"||e.length<3?[e]:t.expand!==!0?Yl.compile(e,t):Yl.expand(e,t);Zse.exports=Yl});var f2=G((DQt,noe)=>{\"use strict\";var F7e=Ie(\"path\"),Jf=\"\\\\\\\\/\",$se=`[^${Jf}]`,bp=\"\\\\.\",N7e=\"\\\\+\",O7e=\"\\\\?\",Ak=\"\\\\/\",L7e=\"(?=.)\",eoe=\"[^/]\",K_=`(?:${Ak}|$)`,toe=`(?:^|${Ak})`,J_=`${bp}{1,2}${K_}`,M7e=`(?!${bp})`,U7e=`(?!${toe}${J_})`,_7e=`(?!${bp}{0,1}${K_})`,H7e=`(?!${J_})`,j7e=`[^.${Ak}]`,G7e=`${eoe}*?`,roe={DOT_LITERAL:bp,PLUS_LITERAL:N7e,QMARK_LITERAL:O7e,SLASH_LITERAL:Ak,ONE_CHAR:L7e,QMARK:eoe,END_ANCHOR:K_,DOTS_SLASH:J_,NO_DOT:M7e,NO_DOTS:U7e,NO_DOT_SLASH:_7e,NO_DOTS_SLASH:H7e,QMARK_NO_DOT:j7e,STAR:G7e,START_ANCHOR:toe},q7e={...roe,SLASH_LITERAL:`[${Jf}]`,QMARK:$se,STAR:`${$se}*?`,DOTS_SLASH:`${bp}{1,2}(?:[${Jf}]|$)`,NO_DOT:`(?!${bp})`,NO_DOTS:`(?!(?:^|[${Jf}])${bp}{1,2}(?:[${Jf}]|$))`,NO_DOT_SLASH:`(?!${bp}{0,1}(?:[${Jf}]|$))`,NO_DOTS_SLASH:`(?!${bp}{1,2}(?:[${Jf}]|$))`,QMARK_NO_DOT:`[^.${Jf}]`,START_ANCHOR:`(?:^|[${Jf}])`,END_ANCHOR:`(?:[${Jf}]|$)`},W7e={alnum:\"a-zA-Z0-9\",alpha:\"a-zA-Z\",ascii:\"\\\\x00-\\\\x7F\",blank:\" \\\\t\",cntrl:\"\\\\x00-\\\\x1F\\\\x7F\",digit:\"0-9\",graph:\"\\\\x21-\\\\x7E\",lower:\"a-z\",print:\"\\\\x20-\\\\x7E \",punct:\"\\\\-!\\\"#$%&'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~\",space:\" \\\\t\\\\r\\\\n\\\\v\\\\f\",upper:\"A-Z\",word:\"A-Za-z0-9_\",xdigit:\"A-Fa-f0-9\"};noe.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:W7e,REGEX_BACKSLASH:/\\\\(?![*+?^${}(|)[\\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\\].,$*+?^{}()|\\\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\\\?)((\\W)(\\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,REPLACEMENTS:{\"***\":\"*\",\"**/**\":\"**\",\"**/**/**\":\"**\"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:F7e.sep,extglobChars(e){return{\"!\":{type:\"negate\",open:\"(?:(?!(?:\",close:`))${e.STAR})`},\"?\":{type:\"qmark\",open:\"(?:\",close:\")?\"},\"+\":{type:\"plus\",open:\"(?:\",close:\")+\"},\"*\":{type:\"star\",open:\"(?:\",close:\")*\"},\"@\":{type:\"at\",open:\"(?:\",close:\")\"}}},globChars(e){return e===!0?q7e:roe}}});var A2=G(pl=>{\"use strict\";var V7e=Ie(\"path\"),Y7e=process.platform===\"win32\",{REGEX_BACKSLASH:K7e,REGEX_REMOVE_BACKSLASH:J7e,REGEX_SPECIAL_CHARS:z7e,REGEX_SPECIAL_CHARS_GLOBAL:Z7e}=f2();pl.isObject=e=>e!==null&&typeof e==\"object\"&&!Array.isArray(e);pl.hasRegexChars=e=>z7e.test(e);pl.isRegexChar=e=>e.length===1&&pl.hasRegexChars(e);pl.escapeRegex=e=>e.replace(Z7e,\"\\\\$1\");pl.toPosixSlashes=e=>e.replace(K7e,\"/\");pl.removeBackslashes=e=>e.replace(J7e,t=>t===\"\\\\\"?\"\":t);pl.supportsLookbehinds=()=>{let e=process.version.slice(1).split(\".\").map(Number);return e.length===3&&e[0]>=9||e[0]===8&&e[1]>=10};pl.isWindows=e=>e&&typeof e.windows==\"boolean\"?e.windows:Y7e===!0||V7e.sep===\"\\\\\";pl.escapeLast=(e,t,r)=>{let s=e.lastIndexOf(t,r);return s===-1?e:e[s-1]===\"\\\\\"?pl.escapeLast(e,t,s-1):`${e.slice(0,s)}\\\\${e.slice(s)}`};pl.removePrefix=(e,t={})=>{let r=e;return r.startsWith(\"./\")&&(r=r.slice(2),t.prefix=\"./\"),r};pl.wrapOutput=(e,t={},r={})=>{let s=r.contains?\"\":\"^\",a=r.contains?\"\":\"$\",n=`${s}(?:${e})${a}`;return t.negated===!0&&(n=`(?:^(?!${n}).*$)`),n}});var foe=G((PQt,uoe)=>{\"use strict\";var ioe=A2(),{CHAR_ASTERISK:z_,CHAR_AT:X7e,CHAR_BACKWARD_SLASH:p2,CHAR_COMMA:$7e,CHAR_DOT:Z_,CHAR_EXCLAMATION_MARK:X_,CHAR_FORWARD_SLASH:coe,CHAR_LEFT_CURLY_BRACE:$_,CHAR_LEFT_PARENTHESES:e4,CHAR_LEFT_SQUARE_BRACKET:eKe,CHAR_PLUS:tKe,CHAR_QUESTION_MARK:soe,CHAR_RIGHT_CURLY_BRACE:rKe,CHAR_RIGHT_PARENTHESES:ooe,CHAR_RIGHT_SQUARE_BRACKET:nKe}=f2(),aoe=e=>e===coe||e===p2,loe=e=>{e.isPrefix!==!0&&(e.depth=e.isGlobstar?1/0:1)},iKe=(e,t)=>{let r=t||{},s=e.length-1,a=r.parts===!0||r.scanToEnd===!0,n=[],c=[],f=[],p=e,h=-1,E=0,C=0,S=!1,x=!1,I=!1,T=!1,O=!1,U=!1,Y=!1,te=!1,ie=!1,ue=!1,ae=0,de,Ae,Ce={value:\"\",depth:0,isGlob:!1},Ee=()=>h>=s,g=()=>p.charCodeAt(h+1),Se=()=>(de=Ae,p.charCodeAt(++h));for(;h<s;){Ae=Se();let De;if(Ae===p2){Y=Ce.backslashes=!0,Ae=Se(),Ae===$_&&(U=!0);continue}if(U===!0||Ae===$_){for(ae++;Ee()!==!0&&(Ae=Se());){if(Ae===p2){Y=Ce.backslashes=!0,Se();continue}if(Ae===$_){ae++;continue}if(U!==!0&&Ae===Z_&&(Ae=Se())===Z_){if(S=Ce.isBrace=!0,I=Ce.isGlob=!0,ue=!0,a===!0)continue;break}if(U!==!0&&Ae===$7e){if(S=Ce.isBrace=!0,I=Ce.isGlob=!0,ue=!0,a===!0)continue;break}if(Ae===rKe&&(ae--,ae===0)){U=!1,S=Ce.isBrace=!0,ue=!0;break}}if(a===!0)continue;break}if(Ae===coe){if(n.push(h),c.push(Ce),Ce={value:\"\",depth:0,isGlob:!1},ue===!0)continue;if(de===Z_&&h===E+1){E+=2;continue}C=h+1;continue}if(r.noext!==!0&&(Ae===tKe||Ae===X7e||Ae===z_||Ae===soe||Ae===X_)===!0&&g()===e4){if(I=Ce.isGlob=!0,T=Ce.isExtglob=!0,ue=!0,Ae===X_&&h===E&&(ie=!0),a===!0){for(;Ee()!==!0&&(Ae=Se());){if(Ae===p2){Y=Ce.backslashes=!0,Ae=Se();continue}if(Ae===ooe){I=Ce.isGlob=!0,ue=!0;break}}continue}break}if(Ae===z_){if(de===z_&&(O=Ce.isGlobstar=!0),I=Ce.isGlob=!0,ue=!0,a===!0)continue;break}if(Ae===soe){if(I=Ce.isGlob=!0,ue=!0,a===!0)continue;break}if(Ae===eKe){for(;Ee()!==!0&&(De=Se());){if(De===p2){Y=Ce.backslashes=!0,Se();continue}if(De===nKe){x=Ce.isBracket=!0,I=Ce.isGlob=!0,ue=!0;break}}if(a===!0)continue;break}if(r.nonegate!==!0&&Ae===X_&&h===E){te=Ce.negated=!0,E++;continue}if(r.noparen!==!0&&Ae===e4){if(I=Ce.isGlob=!0,a===!0){for(;Ee()!==!0&&(Ae=Se());){if(Ae===e4){Y=Ce.backslashes=!0,Ae=Se();continue}if(Ae===ooe){ue=!0;break}}continue}break}if(I===!0){if(ue=!0,a===!0)continue;break}}r.noext===!0&&(T=!1,I=!1);let Be=p,me=\"\",ce=\"\";E>0&&(me=p.slice(0,E),p=p.slice(E),C-=E),Be&&I===!0&&C>0?(Be=p.slice(0,C),ce=p.slice(C)):I===!0?(Be=\"\",ce=p):Be=p,Be&&Be!==\"\"&&Be!==\"/\"&&Be!==p&&aoe(Be.charCodeAt(Be.length-1))&&(Be=Be.slice(0,-1)),r.unescape===!0&&(ce&&(ce=ioe.removeBackslashes(ce)),Be&&Y===!0&&(Be=ioe.removeBackslashes(Be)));let X={prefix:me,input:e,start:E,base:Be,glob:ce,isBrace:S,isBracket:x,isGlob:I,isExtglob:T,isGlobstar:O,negated:te,negatedExtglob:ie};if(r.tokens===!0&&(X.maxDepth=0,aoe(Ae)||c.push(Ce),X.tokens=c),r.parts===!0||r.tokens===!0){let De;for(let Qe=0;Qe<n.length;Qe++){let it=De?De+1:E,_=n[Qe],tt=e.slice(it,_);r.tokens&&(Qe===0&&E!==0?(c[Qe].isPrefix=!0,c[Qe].value=me):c[Qe].value=tt,loe(c[Qe]),X.maxDepth+=c[Qe].depth),(Qe!==0||tt!==\"\")&&f.push(tt),De=_}if(De&&De+1<e.length){let Qe=e.slice(De+1);f.push(Qe),r.tokens&&(c[c.length-1].value=Qe,loe(c[c.length-1]),X.maxDepth+=c[c.length-1].depth)}X.slashes=n,X.parts=f}return X};uoe.exports=iKe});var hoe=G((xQt,poe)=>{\"use strict\";var pk=f2(),Kl=A2(),{MAX_LENGTH:hk,POSIX_REGEX_SOURCE:sKe,REGEX_NON_SPECIAL_CHARS:oKe,REGEX_SPECIAL_CHARS_BACKREF:aKe,REPLACEMENTS:Aoe}=pk,lKe=(e,t)=>{if(typeof t.expandRange==\"function\")return t.expandRange(...e,t);e.sort();let r=`[${e.join(\"-\")}]`;try{new RegExp(r)}catch{return e.map(a=>Kl.escapeRegex(a)).join(\"..\")}return r},LE=(e,t)=>`Missing ${e}: \"${t}\" - use \"\\\\\\\\${t}\" to match literal characters`,t4=(e,t)=>{if(typeof e!=\"string\")throw new TypeError(\"Expected a string\");e=Aoe[e]||e;let r={...t},s=typeof r.maxLength==\"number\"?Math.min(hk,r.maxLength):hk,a=e.length;if(a>s)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${s}`);let n={type:\"bos\",value:\"\",output:r.prepend||\"\"},c=[n],f=r.capture?\"\":\"?:\",p=Kl.isWindows(t),h=pk.globChars(p),E=pk.extglobChars(h),{DOT_LITERAL:C,PLUS_LITERAL:S,SLASH_LITERAL:x,ONE_CHAR:I,DOTS_SLASH:T,NO_DOT:O,NO_DOT_SLASH:U,NO_DOTS_SLASH:Y,QMARK:te,QMARK_NO_DOT:ie,STAR:ue,START_ANCHOR:ae}=h,de=P=>`(${f}(?:(?!${ae}${P.dot?T:C}).)*?)`,Ae=r.dot?\"\":O,Ce=r.dot?te:ie,Ee=r.bash===!0?de(r):ue;r.capture&&(Ee=`(${Ee})`),typeof r.noext==\"boolean\"&&(r.noextglob=r.noext);let g={input:e,index:-1,start:0,dot:r.dot===!0,consumed:\"\",output:\"\",prefix:\"\",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:c};e=Kl.removePrefix(e,g),a=e.length;let Se=[],Be=[],me=[],ce=n,X,De=()=>g.index===a-1,Qe=g.peek=(P=1)=>e[g.index+P],it=g.advance=()=>e[++g.index]||\"\",_=()=>e.slice(g.index+1),tt=(P=\"\",w=0)=>{g.consumed+=P,g.index+=w},Ne=P=>{g.output+=P.output!=null?P.output:P.value,tt(P.value)},ke=()=>{let P=1;for(;Qe()===\"!\"&&(Qe(2)!==\"(\"||Qe(3)===\"?\");)it(),g.start++,P++;return P%2===0?!1:(g.negated=!0,g.start++,!0)},be=P=>{g[P]++,me.push(P)},je=P=>{g[P]--,me.pop()},Re=P=>{if(ce.type===\"globstar\"){let w=g.braces>0&&(P.type===\"comma\"||P.type===\"brace\"),b=P.extglob===!0||Se.length&&(P.type===\"pipe\"||P.type===\"paren\");P.type!==\"slash\"&&P.type!==\"paren\"&&!w&&!b&&(g.output=g.output.slice(0,-ce.output.length),ce.type=\"star\",ce.value=\"*\",ce.output=Ee,g.output+=ce.output)}if(Se.length&&P.type!==\"paren\"&&(Se[Se.length-1].inner+=P.value),(P.value||P.output)&&Ne(P),ce&&ce.type===\"text\"&&P.type===\"text\"){ce.value+=P.value,ce.output=(ce.output||\"\")+P.value;return}P.prev=ce,c.push(P),ce=P},ct=(P,w)=>{let b={...E[w],conditions:1,inner:\"\"};b.prev=ce,b.parens=g.parens,b.output=g.output;let y=(r.capture?\"(\":\"\")+b.open;be(\"parens\"),Re({type:P,value:w,output:g.output?\"\":I}),Re({type:\"paren\",extglob:!0,value:it(),output:y}),Se.push(b)},Me=P=>{let w=P.close+(r.capture?\")\":\"\"),b;if(P.type===\"negate\"){let y=Ee;if(P.inner&&P.inner.length>1&&P.inner.includes(\"/\")&&(y=de(r)),(y!==Ee||De()||/^\\)+$/.test(_()))&&(w=P.close=`)$))${y}`),P.inner.includes(\"*\")&&(b=_())&&/^\\.[^\\\\/.]+$/.test(b)){let F=t4(b,{...t,fastpaths:!1}).output;w=P.close=`)${F})${y})`}P.prev.type===\"bos\"&&(g.negatedExtglob=!0)}Re({type:\"paren\",extglob:!0,value:X,output:w}),je(\"parens\")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\\]{}\"])/.test(e)){let P=!1,w=e.replace(aKe,(b,y,F,z,Z,$)=>z===\"\\\\\"?(P=!0,b):z===\"?\"?y?y+z+(Z?te.repeat(Z.length):\"\"):$===0?Ce+(Z?te.repeat(Z.length):\"\"):te.repeat(F.length):z===\".\"?C.repeat(F.length):z===\"*\"?y?y+z+(Z?Ee:\"\"):Ee:y?b:`\\\\${b}`);return P===!0&&(r.unescape===!0?w=w.replace(/\\\\/g,\"\"):w=w.replace(/\\\\+/g,b=>b.length%2===0?\"\\\\\\\\\":b?\"\\\\\":\"\")),w===e&&r.contains===!0?(g.output=e,g):(g.output=Kl.wrapOutput(w,g,t),g)}for(;!De();){if(X=it(),X===\"\\0\")continue;if(X===\"\\\\\"){let b=Qe();if(b===\"/\"&&r.bash!==!0||b===\".\"||b===\";\")continue;if(!b){X+=\"\\\\\",Re({type:\"text\",value:X});continue}let y=/^\\\\+/.exec(_()),F=0;if(y&&y[0].length>2&&(F=y[0].length,g.index+=F,F%2!==0&&(X+=\"\\\\\")),r.unescape===!0?X=it():X+=it(),g.brackets===0){Re({type:\"text\",value:X});continue}}if(g.brackets>0&&(X!==\"]\"||ce.value===\"[\"||ce.value===\"[^\")){if(r.posix!==!1&&X===\":\"){let b=ce.value.slice(1);if(b.includes(\"[\")&&(ce.posix=!0,b.includes(\":\"))){let y=ce.value.lastIndexOf(\"[\"),F=ce.value.slice(0,y),z=ce.value.slice(y+2),Z=sKe[z];if(Z){ce.value=F+Z,g.backtrack=!0,it(),!n.output&&c.indexOf(ce)===1&&(n.output=I);continue}}}(X===\"[\"&&Qe()!==\":\"||X===\"-\"&&Qe()===\"]\")&&(X=`\\\\${X}`),X===\"]\"&&(ce.value===\"[\"||ce.value===\"[^\")&&(X=`\\\\${X}`),r.posix===!0&&X===\"!\"&&ce.value===\"[\"&&(X=\"^\"),ce.value+=X,Ne({value:X});continue}if(g.quotes===1&&X!=='\"'){X=Kl.escapeRegex(X),ce.value+=X,Ne({value:X});continue}if(X==='\"'){g.quotes=g.quotes===1?0:1,r.keepQuotes===!0&&Re({type:\"text\",value:X});continue}if(X===\"(\"){be(\"parens\"),Re({type:\"paren\",value:X});continue}if(X===\")\"){if(g.parens===0&&r.strictBrackets===!0)throw new SyntaxError(LE(\"opening\",\"(\"));let b=Se[Se.length-1];if(b&&g.parens===b.parens+1){Me(Se.pop());continue}Re({type:\"paren\",value:X,output:g.parens?\")\":\"\\\\)\"}),je(\"parens\");continue}if(X===\"[\"){if(r.nobracket===!0||!_().includes(\"]\")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(LE(\"closing\",\"]\"));X=`\\\\${X}`}else be(\"brackets\");Re({type:\"bracket\",value:X});continue}if(X===\"]\"){if(r.nobracket===!0||ce&&ce.type===\"bracket\"&&ce.value.length===1){Re({type:\"text\",value:X,output:`\\\\${X}`});continue}if(g.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(LE(\"opening\",\"[\"));Re({type:\"text\",value:X,output:`\\\\${X}`});continue}je(\"brackets\");let b=ce.value.slice(1);if(ce.posix!==!0&&b[0]===\"^\"&&!b.includes(\"/\")&&(X=`/${X}`),ce.value+=X,Ne({value:X}),r.literalBrackets===!1||Kl.hasRegexChars(b))continue;let y=Kl.escapeRegex(ce.value);if(g.output=g.output.slice(0,-ce.value.length),r.literalBrackets===!0){g.output+=y,ce.value=y;continue}ce.value=`(${f}${y}|${ce.value})`,g.output+=ce.value;continue}if(X===\"{\"&&r.nobrace!==!0){be(\"braces\");let b={type:\"brace\",value:X,output:\"(\",outputIndex:g.output.length,tokensIndex:g.tokens.length};Be.push(b),Re(b);continue}if(X===\"}\"){let b=Be[Be.length-1];if(r.nobrace===!0||!b){Re({type:\"text\",value:X,output:X});continue}let y=\")\";if(b.dots===!0){let F=c.slice(),z=[];for(let Z=F.length-1;Z>=0&&(c.pop(),F[Z].type!==\"brace\");Z--)F[Z].type!==\"dots\"&&z.unshift(F[Z].value);y=lKe(z,r),g.backtrack=!0}if(b.comma!==!0&&b.dots!==!0){let F=g.output.slice(0,b.outputIndex),z=g.tokens.slice(b.tokensIndex);b.value=b.output=\"\\\\{\",X=y=\"\\\\}\",g.output=F;for(let Z of z)g.output+=Z.output||Z.value}Re({type:\"brace\",value:X,output:y}),je(\"braces\"),Be.pop();continue}if(X===\"|\"){Se.length>0&&Se[Se.length-1].conditions++,Re({type:\"text\",value:X});continue}if(X===\",\"){let b=X,y=Be[Be.length-1];y&&me[me.length-1]===\"braces\"&&(y.comma=!0,b=\"|\"),Re({type:\"comma\",value:X,output:b});continue}if(X===\"/\"){if(ce.type===\"dot\"&&g.index===g.start+1){g.start=g.index+1,g.consumed=\"\",g.output=\"\",c.pop(),ce=n;continue}Re({type:\"slash\",value:X,output:x});continue}if(X===\".\"){if(g.braces>0&&ce.type===\"dot\"){ce.value===\".\"&&(ce.output=C);let b=Be[Be.length-1];ce.type=\"dots\",ce.output+=X,ce.value+=X,b.dots=!0;continue}if(g.braces+g.parens===0&&ce.type!==\"bos\"&&ce.type!==\"slash\"){Re({type:\"text\",value:X,output:C});continue}Re({type:\"dot\",value:X,output:C});continue}if(X===\"?\"){if(!(ce&&ce.value===\"(\")&&r.noextglob!==!0&&Qe()===\"(\"&&Qe(2)!==\"?\"){ct(\"qmark\",X);continue}if(ce&&ce.type===\"paren\"){let y=Qe(),F=X;if(y===\"<\"&&!Kl.supportsLookbehinds())throw new Error(\"Node.js v10 or higher is required for regex lookbehinds\");(ce.value===\"(\"&&!/[!=<:]/.test(y)||y===\"<\"&&!/<([!=]|\\w+>)/.test(_()))&&(F=`\\\\${X}`),Re({type:\"text\",value:X,output:F});continue}if(r.dot!==!0&&(ce.type===\"slash\"||ce.type===\"bos\")){Re({type:\"qmark\",value:X,output:ie});continue}Re({type:\"qmark\",value:X,output:te});continue}if(X===\"!\"){if(r.noextglob!==!0&&Qe()===\"(\"&&(Qe(2)!==\"?\"||!/[!=<:]/.test(Qe(3)))){ct(\"negate\",X);continue}if(r.nonegate!==!0&&g.index===0){ke();continue}}if(X===\"+\"){if(r.noextglob!==!0&&Qe()===\"(\"&&Qe(2)!==\"?\"){ct(\"plus\",X);continue}if(ce&&ce.value===\"(\"||r.regex===!1){Re({type:\"plus\",value:X,output:S});continue}if(ce&&(ce.type===\"bracket\"||ce.type===\"paren\"||ce.type===\"brace\")||g.parens>0){Re({type:\"plus\",value:X});continue}Re({type:\"plus\",value:S});continue}if(X===\"@\"){if(r.noextglob!==!0&&Qe()===\"(\"&&Qe(2)!==\"?\"){Re({type:\"at\",extglob:!0,value:X,output:\"\"});continue}Re({type:\"text\",value:X});continue}if(X!==\"*\"){(X===\"$\"||X===\"^\")&&(X=`\\\\${X}`);let b=oKe.exec(_());b&&(X+=b[0],g.index+=b[0].length),Re({type:\"text\",value:X});continue}if(ce&&(ce.type===\"globstar\"||ce.star===!0)){ce.type=\"star\",ce.star=!0,ce.value+=X,ce.output=Ee,g.backtrack=!0,g.globstar=!0,tt(X);continue}let P=_();if(r.noextglob!==!0&&/^\\([^?]/.test(P)){ct(\"star\",X);continue}if(ce.type===\"star\"){if(r.noglobstar===!0){tt(X);continue}let b=ce.prev,y=b.prev,F=b.type===\"slash\"||b.type===\"bos\",z=y&&(y.type===\"star\"||y.type===\"globstar\");if(r.bash===!0&&(!F||P[0]&&P[0]!==\"/\")){Re({type:\"star\",value:X,output:\"\"});continue}let Z=g.braces>0&&(b.type===\"comma\"||b.type===\"brace\"),$=Se.length&&(b.type===\"pipe\"||b.type===\"paren\");if(!F&&b.type!==\"paren\"&&!Z&&!$){Re({type:\"star\",value:X,output:\"\"});continue}for(;P.slice(0,3)===\"/**\";){let se=e[g.index+4];if(se&&se!==\"/\")break;P=P.slice(3),tt(\"/**\",3)}if(b.type===\"bos\"&&De()){ce.type=\"globstar\",ce.value+=X,ce.output=de(r),g.output=ce.output,g.globstar=!0,tt(X);continue}if(b.type===\"slash\"&&b.prev.type!==\"bos\"&&!z&&De()){g.output=g.output.slice(0,-(b.output+ce.output).length),b.output=`(?:${b.output}`,ce.type=\"globstar\",ce.output=de(r)+(r.strictSlashes?\")\":\"|$)\"),ce.value+=X,g.globstar=!0,g.output+=b.output+ce.output,tt(X);continue}if(b.type===\"slash\"&&b.prev.type!==\"bos\"&&P[0]===\"/\"){let se=P[1]!==void 0?\"|$\":\"\";g.output=g.output.slice(0,-(b.output+ce.output).length),b.output=`(?:${b.output}`,ce.type=\"globstar\",ce.output=`${de(r)}${x}|${x}${se})`,ce.value+=X,g.output+=b.output+ce.output,g.globstar=!0,tt(X+it()),Re({type:\"slash\",value:\"/\",output:\"\"});continue}if(b.type===\"bos\"&&P[0]===\"/\"){ce.type=\"globstar\",ce.value+=X,ce.output=`(?:^|${x}|${de(r)}${x})`,g.output=ce.output,g.globstar=!0,tt(X+it()),Re({type:\"slash\",value:\"/\",output:\"\"});continue}g.output=g.output.slice(0,-ce.output.length),ce.type=\"globstar\",ce.output=de(r),ce.value+=X,g.output+=ce.output,g.globstar=!0,tt(X);continue}let w={type:\"star\",value:X,output:Ee};if(r.bash===!0){w.output=\".*?\",(ce.type===\"bos\"||ce.type===\"slash\")&&(w.output=Ae+w.output),Re(w);continue}if(ce&&(ce.type===\"bracket\"||ce.type===\"paren\")&&r.regex===!0){w.output=X,Re(w);continue}(g.index===g.start||ce.type===\"slash\"||ce.type===\"dot\")&&(ce.type===\"dot\"?(g.output+=U,ce.output+=U):r.dot===!0?(g.output+=Y,ce.output+=Y):(g.output+=Ae,ce.output+=Ae),Qe()!==\"*\"&&(g.output+=I,ce.output+=I)),Re(w)}for(;g.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(LE(\"closing\",\"]\"));g.output=Kl.escapeLast(g.output,\"[\"),je(\"brackets\")}for(;g.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(LE(\"closing\",\")\"));g.output=Kl.escapeLast(g.output,\"(\"),je(\"parens\")}for(;g.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(LE(\"closing\",\"}\"));g.output=Kl.escapeLast(g.output,\"{\"),je(\"braces\")}if(r.strictSlashes!==!0&&(ce.type===\"star\"||ce.type===\"bracket\")&&Re({type:\"maybe_slash\",value:\"\",output:`${x}?`}),g.backtrack===!0){g.output=\"\";for(let P of g.tokens)g.output+=P.output!=null?P.output:P.value,P.suffix&&(g.output+=P.suffix)}return g};t4.fastpaths=(e,t)=>{let r={...t},s=typeof r.maxLength==\"number\"?Math.min(hk,r.maxLength):hk,a=e.length;if(a>s)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${s}`);e=Aoe[e]||e;let n=Kl.isWindows(t),{DOT_LITERAL:c,SLASH_LITERAL:f,ONE_CHAR:p,DOTS_SLASH:h,NO_DOT:E,NO_DOTS:C,NO_DOTS_SLASH:S,STAR:x,START_ANCHOR:I}=pk.globChars(n),T=r.dot?C:E,O=r.dot?S:E,U=r.capture?\"\":\"?:\",Y={negated:!1,prefix:\"\"},te=r.bash===!0?\".*?\":x;r.capture&&(te=`(${te})`);let ie=Ae=>Ae.noglobstar===!0?te:`(${U}(?:(?!${I}${Ae.dot?h:c}).)*?)`,ue=Ae=>{switch(Ae){case\"*\":return`${T}${p}${te}`;case\".*\":return`${c}${p}${te}`;case\"*.*\":return`${T}${te}${c}${p}${te}`;case\"*/*\":return`${T}${te}${f}${p}${O}${te}`;case\"**\":return T+ie(r);case\"**/*\":return`(?:${T}${ie(r)}${f})?${O}${p}${te}`;case\"**/*.*\":return`(?:${T}${ie(r)}${f})?${O}${te}${c}${p}${te}`;case\"**/.*\":return`(?:${T}${ie(r)}${f})?${c}${p}${te}`;default:{let Ce=/^(.*?)\\.(\\w+)$/.exec(Ae);if(!Ce)return;let Ee=ue(Ce[1]);return Ee?Ee+c+Ce[2]:void 0}}},ae=Kl.removePrefix(e,Y),de=ue(ae);return de&&r.strictSlashes!==!0&&(de+=`${f}?`),de};poe.exports=t4});var doe=G((kQt,goe)=>{\"use strict\";var cKe=Ie(\"path\"),uKe=foe(),r4=hoe(),n4=A2(),fKe=f2(),AKe=e=>e&&typeof e==\"object\"&&!Array.isArray(e),Xi=(e,t,r=!1)=>{if(Array.isArray(e)){let E=e.map(S=>Xi(S,t,r));return S=>{for(let x of E){let I=x(S);if(I)return I}return!1}}let s=AKe(e)&&e.tokens&&e.input;if(e===\"\"||typeof e!=\"string\"&&!s)throw new TypeError(\"Expected pattern to be a non-empty string\");let a=t||{},n=n4.isWindows(t),c=s?Xi.compileRe(e,t):Xi.makeRe(e,t,!1,!0),f=c.state;delete c.state;let p=()=>!1;if(a.ignore){let E={...t,ignore:null,onMatch:null,onResult:null};p=Xi(a.ignore,E,r)}let h=(E,C=!1)=>{let{isMatch:S,match:x,output:I}=Xi.test(E,c,t,{glob:e,posix:n}),T={glob:e,state:f,regex:c,posix:n,input:E,output:I,match:x,isMatch:S};return typeof a.onResult==\"function\"&&a.onResult(T),S===!1?(T.isMatch=!1,C?T:!1):p(E)?(typeof a.onIgnore==\"function\"&&a.onIgnore(T),T.isMatch=!1,C?T:!1):(typeof a.onMatch==\"function\"&&a.onMatch(T),C?T:!0)};return r&&(h.state=f),h};Xi.test=(e,t,r,{glob:s,posix:a}={})=>{if(typeof e!=\"string\")throw new TypeError(\"Expected input to be a string\");if(e===\"\")return{isMatch:!1,output:\"\"};let n=r||{},c=n.format||(a?n4.toPosixSlashes:null),f=e===s,p=f&&c?c(e):e;return f===!1&&(p=c?c(e):e,f=p===s),(f===!1||n.capture===!0)&&(n.matchBase===!0||n.basename===!0?f=Xi.matchBase(e,t,r,a):f=t.exec(p)),{isMatch:!!f,match:f,output:p}};Xi.matchBase=(e,t,r,s=n4.isWindows(r))=>(t instanceof RegExp?t:Xi.makeRe(t,r)).test(cKe.basename(e));Xi.isMatch=(e,t,r)=>Xi(t,r)(e);Xi.parse=(e,t)=>Array.isArray(e)?e.map(r=>Xi.parse(r,t)):r4(e,{...t,fastpaths:!1});Xi.scan=(e,t)=>uKe(e,t);Xi.compileRe=(e,t,r=!1,s=!1)=>{if(r===!0)return e.output;let a=t||{},n=a.contains?\"\":\"^\",c=a.contains?\"\":\"$\",f=`${n}(?:${e.output})${c}`;e&&e.negated===!0&&(f=`^(?!${f}).*$`);let p=Xi.toRegex(f,t);return s===!0&&(p.state=e),p};Xi.makeRe=(e,t={},r=!1,s=!1)=>{if(!e||typeof e!=\"string\")throw new TypeError(\"Expected a non-empty string\");let a={negated:!1,fastpaths:!0};return t.fastpaths!==!1&&(e[0]===\".\"||e[0]===\"*\")&&(a.output=r4.fastpaths(e,t)),a.output||(a=r4(e,t)),Xi.compileRe(a,t,r,s)};Xi.toRegex=(e,t)=>{try{let r=t||{};return new RegExp(e,r.flags||(r.nocase?\"i\":\"\"))}catch(r){if(t&&t.debug===!0)throw r;return/$^/}};Xi.constants=fKe;goe.exports=Xi});var yoe=G((QQt,moe)=>{\"use strict\";moe.exports=doe()});var Jo=G((RQt,woe)=>{\"use strict\";var Ioe=Ie(\"util\"),Coe=Xse(),zf=yoe(),i4=A2(),Eoe=e=>e===\"\"||e===\"./\",xi=(e,t,r)=>{t=[].concat(t),e=[].concat(e);let s=new Set,a=new Set,n=new Set,c=0,f=E=>{n.add(E.output),r&&r.onResult&&r.onResult(E)};for(let E=0;E<t.length;E++){let C=zf(String(t[E]),{...r,onResult:f},!0),S=C.state.negated||C.state.negatedExtglob;S&&c++;for(let x of e){let I=C(x,!0);(S?!I.isMatch:I.isMatch)&&(S?s.add(I.output):(s.delete(I.output),a.add(I.output)))}}let h=(c===t.length?[...n]:[...a]).filter(E=>!s.has(E));if(r&&h.length===0){if(r.failglob===!0)throw new Error(`No matches found for \"${t.join(\", \")}\"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?t.map(E=>E.replace(/\\\\/g,\"\")):t}return h};xi.match=xi;xi.matcher=(e,t)=>zf(e,t);xi.isMatch=(e,t,r)=>zf(t,r)(e);xi.any=xi.isMatch;xi.not=(e,t,r={})=>{t=[].concat(t).map(String);let s=new Set,a=[],n=f=>{r.onResult&&r.onResult(f),a.push(f.output)},c=new Set(xi(e,t,{...r,onResult:n}));for(let f of a)c.has(f)||s.add(f);return[...s]};xi.contains=(e,t,r)=>{if(typeof e!=\"string\")throw new TypeError(`Expected a string: \"${Ioe.inspect(e)}\"`);if(Array.isArray(t))return t.some(s=>xi.contains(e,s,r));if(typeof t==\"string\"){if(Eoe(e)||Eoe(t))return!1;if(e.includes(t)||e.startsWith(\"./\")&&e.slice(2).includes(t))return!0}return xi.isMatch(e,t,{...r,contains:!0})};xi.matchKeys=(e,t,r)=>{if(!i4.isObject(e))throw new TypeError(\"Expected the first argument to be an object\");let s=xi(Object.keys(e),t,r),a={};for(let n of s)a[n]=e[n];return a};xi.some=(e,t,r)=>{let s=[].concat(e);for(let a of[].concat(t)){let n=zf(String(a),r);if(s.some(c=>n(c)))return!0}return!1};xi.every=(e,t,r)=>{let s=[].concat(e);for(let a of[].concat(t)){let n=zf(String(a),r);if(!s.every(c=>n(c)))return!1}return!0};xi.all=(e,t,r)=>{if(typeof e!=\"string\")throw new TypeError(`Expected a string: \"${Ioe.inspect(e)}\"`);return[].concat(t).every(s=>zf(s,r)(e))};xi.capture=(e,t,r)=>{let s=i4.isWindows(r),n=zf.makeRe(String(e),{...r,capture:!0}).exec(s?i4.toPosixSlashes(t):t);if(n)return n.slice(1).map(c=>c===void 0?\"\":c)};xi.makeRe=(...e)=>zf.makeRe(...e);xi.scan=(...e)=>zf.scan(...e);xi.parse=(e,t)=>{let r=[];for(let s of[].concat(e||[]))for(let a of Coe(String(s),t))r.push(zf.parse(a,t));return r};xi.braces=(e,t)=>{if(typeof e!=\"string\")throw new TypeError(\"Expected a string\");return t&&t.nobrace===!0||!/\\{.*\\}/.test(e)?[e]:Coe(e,t)};xi.braceExpand=(e,t)=>{if(typeof e!=\"string\")throw new TypeError(\"Expected a string\");return xi.braces(e,{...t,expand:!0})};woe.exports=xi});var voe=G((TQt,Boe)=>{\"use strict\";Boe.exports=({onlyFirst:e=!1}={})=>{let t=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\",\"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))\"].join(\"|\");return new RegExp(t,e?void 0:\"g\")}});var gk=G((FQt,Soe)=>{\"use strict\";var pKe=voe();Soe.exports=e=>typeof e==\"string\"?e.replace(pKe(),\"\"):e});function Doe(e){return Number.isSafeInteger(e)&&e>=0}var boe=Ze(()=>{});function Poe(e){return e!=null&&typeof e!=\"function\"&&Doe(e.length)}var xoe=Ze(()=>{boe()});function Pc(e){return e===\"__proto__\"}var h2=Ze(()=>{});function ME(e){switch(typeof e){case\"number\":case\"symbol\":return!1;case\"string\":return e.includes(\".\")||e.includes(\"[\")||e.includes(\"]\")}}var dk=Ze(()=>{});function UE(e){return typeof e==\"string\"||typeof e==\"symbol\"?e:Object.is(e?.valueOf?.(),-0)?\"-0\":String(e)}var mk=Ze(()=>{});function Ou(e){let t=[],r=e.length;if(r===0)return t;let s=0,a=\"\",n=\"\",c=!1;for(e.charCodeAt(0)===46&&(t.push(\"\"),s++);s<r;){let f=e[s];n?f===\"\\\\\"&&s+1<r?(s++,a+=e[s]):f===n?n=\"\":a+=f:c?f==='\"'||f===\"'\"?n=f:f===\"]\"?(c=!1,t.push(a),a=\"\"):a+=f:f===\"[\"?(c=!0,a&&(t.push(a),a=\"\")):f===\".\"?a&&(t.push(a),a=\"\"):a+=f,s++}return a&&t.push(a),t}var _E=Ze(()=>{});function ba(e,t,r){if(e==null)return r;switch(typeof t){case\"string\":{if(Pc(t))return r;let s=e[t];return s===void 0?ME(t)?ba(e,Ou(t),r):r:s}case\"number\":case\"symbol\":{typeof t==\"number\"&&(t=UE(t));let s=e[t];return s===void 0?r:s}default:{if(Array.isArray(t))return hKe(e,t,r);if(Object.is(t?.valueOf(),-0)?t=\"-0\":t=String(t),Pc(t))return r;let s=e[t];return s===void 0?r:s}}}function hKe(e,t,r){if(t.length===0)return r;let s=e;for(let a=0;a<t.length;a++){if(s==null||Pc(t[a]))return r;s=s[t[a]]}return s===void 0?r:s}var yk=Ze(()=>{h2();dk();mk();_E()});function s4(e){return e!==null&&(typeof e==\"object\"||typeof e==\"function\")}var koe=Ze(()=>{});function HE(e){return e==null||typeof e!=\"object\"&&typeof e!=\"function\"}var Ek=Ze(()=>{});function Ik(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)}var o4=Ze(()=>{});function Gd(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}var Ck=Ze(()=>{});function qd(e){return e==null?e===void 0?\"[object Undefined]\":\"[object Null]\":Object.prototype.toString.call(e)}var wk=Ze(()=>{});var Bk,jE,GE,qE,Wd,vk,Sk,Dk,bk,Pk,Qoe,xk,WE,Roe,kk,Qk,Rk,Tk,Fk,Toe,Nk,Ok,Lk,Foe,Mk,Uk,_k=Ze(()=>{Bk=\"[object RegExp]\",jE=\"[object String]\",GE=\"[object Number]\",qE=\"[object Boolean]\",Wd=\"[object Arguments]\",vk=\"[object Symbol]\",Sk=\"[object Date]\",Dk=\"[object Map]\",bk=\"[object Set]\",Pk=\"[object Array]\",Qoe=\"[object Function]\",xk=\"[object ArrayBuffer]\",WE=\"[object Object]\",Roe=\"[object Error]\",kk=\"[object DataView]\",Qk=\"[object Uint8Array]\",Rk=\"[object Uint8ClampedArray]\",Tk=\"[object Uint16Array]\",Fk=\"[object Uint32Array]\",Toe=\"[object BigUint64Array]\",Nk=\"[object Int8Array]\",Ok=\"[object Int16Array]\",Lk=\"[object Int32Array]\",Foe=\"[object BigInt64Array]\",Mk=\"[object Float32Array]\",Uk=\"[object Float64Array]\"});function VE(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}var Hk=Ze(()=>{});function Noe(e,t){return l0(e,void 0,e,new Map,t)}function l0(e,t,r,s=new Map,a=void 0){let n=a?.(e,t,r,s);if(n!=null)return n;if(HE(e))return e;if(s.has(e))return s.get(e);if(Array.isArray(e)){let c=new Array(e.length);s.set(e,c);for(let f=0;f<e.length;f++)c[f]=l0(e[f],f,r,s,a);return Object.hasOwn(e,\"index\")&&(c.index=e.index),Object.hasOwn(e,\"input\")&&(c.input=e.input),c}if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp){let c=new RegExp(e.source,e.flags);return c.lastIndex=e.lastIndex,c}if(e instanceof Map){let c=new Map;s.set(e,c);for(let[f,p]of e)c.set(f,l0(p,f,r,s,a));return c}if(e instanceof Set){let c=new Set;s.set(e,c);for(let f of e)c.add(l0(f,void 0,r,s,a));return c}if(typeof Buffer<\"u\"&&Buffer.isBuffer(e))return e.subarray();if(VE(e)){let c=new(Object.getPrototypeOf(e)).constructor(e.length);s.set(e,c);for(let f=0;f<e.length;f++)c[f]=l0(e[f],f,r,s,a);return c}if(e instanceof ArrayBuffer||typeof SharedArrayBuffer<\"u\"&&e instanceof SharedArrayBuffer)return e.slice(0);if(e instanceof DataView){let c=new DataView(e.buffer.slice(0),e.byteOffset,e.byteLength);return s.set(e,c),a0(c,e,r,s,a),c}if(typeof File<\"u\"&&e instanceof File){let c=new File([e],e.name,{type:e.type});return s.set(e,c),a0(c,e,r,s,a),c}if(e instanceof Blob){let c=new Blob([e],{type:e.type});return s.set(e,c),a0(c,e,r,s,a),c}if(e instanceof Error){let c=new e.constructor;return s.set(e,c),c.message=e.message,c.name=e.name,c.stack=e.stack,c.cause=e.cause,a0(c,e,r,s,a),c}if(typeof e==\"object\"&&gKe(e)){let c=Object.create(Object.getPrototypeOf(e));return s.set(e,c),a0(c,e,r,s,a),c}return e}function a0(e,t,r=e,s,a){let n=[...Object.keys(t),...Gd(t)];for(let c=0;c<n.length;c++){let f=n[c],p=Object.getOwnPropertyDescriptor(e,f);(p==null||p.writable)&&(e[f]=l0(t[f],f,r,s,a))}}function gKe(e){switch(qd(e)){case Wd:case Pk:case xk:case kk:case qE:case Sk:case Mk:case Uk:case Nk:case Ok:case Lk:case Dk:case GE:case WE:case Bk:case bk:case jE:case vk:case Qk:case Rk:case Tk:case Fk:return!0;default:return!1}}var a4=Ze(()=>{Ck();wk();_k();Ek();Hk()});function Ooe(e){return l0(e,void 0,e,new Map,void 0)}var Loe=Ze(()=>{a4()});function Moe(e,t){return Noe(e,(r,s,a,n)=>{let c=t?.(r,s,a,n);if(c!=null)return c;if(typeof e==\"object\")switch(Object.prototype.toString.call(e)){case GE:case jE:case qE:{let f=new e.constructor(e?.valueOf());return a0(f,e),f}case Wd:{let f={};return a0(f,e),f.length=e.length,f[Symbol.iterator]=e[Symbol.iterator],f}default:return}})}var Uoe=Ze(()=>{a4();_k()});function c0(e){return Moe(e)}var l4=Ze(()=>{Uoe()});function jk(e,t=Number.MAX_SAFE_INTEGER){switch(typeof e){case\"number\":return Number.isInteger(e)&&e>=0&&e<t;case\"symbol\":return!1;case\"string\":return dKe.test(e)}}var dKe,c4=Ze(()=>{dKe=/^(?:0|[1-9]\\d*)$/});function g2(e){return e!==null&&typeof e==\"object\"&&qd(e)===\"[object Arguments]\"}var u4=Ze(()=>{wk()});function d2(e,t){let r;if(Array.isArray(t)?r=t:typeof t==\"string\"&&ME(t)&&e?.[t]==null?r=Ou(t):r=[t],r.length===0)return!1;let s=e;for(let a=0;a<r.length;a++){let n=r[a];if((s==null||!Object.hasOwn(s,n))&&!((Array.isArray(s)||g2(s))&&jk(n)&&n<s.length))return!1;s=s[n]}return!0}var f4=Ze(()=>{dk();c4();u4();_E()});function A4(e){return typeof e==\"object\"&&e!==null}var _oe=Ze(()=>{});function Hoe(e){return typeof e==\"symbol\"||e instanceof Symbol}var joe=Ze(()=>{});function Goe(e,t){return Array.isArray(e)?!1:typeof e==\"number\"||typeof e==\"boolean\"||e==null||Hoe(e)?!0:typeof e==\"string\"&&(yKe.test(e)||!mKe.test(e))||t!=null&&Object.hasOwn(t,e)}var mKe,yKe,qoe=Ze(()=>{joe();mKe=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,yKe=/^\\w*$/});function u0(e,t){if(e==null)return!0;switch(typeof t){case\"symbol\":case\"number\":case\"object\":{if(Array.isArray(t))return Woe(e,t);if(typeof t==\"number\"?t=UE(t):typeof t==\"object\"&&(Object.is(t?.valueOf(),-0)?t=\"-0\":t=String(t)),Pc(t))return!1;if(e?.[t]===void 0)return!0;try{return delete e[t],!0}catch{return!1}}case\"string\":{if(e?.[t]===void 0&&ME(t))return Woe(e,Ou(t));if(Pc(t))return!1;try{return delete e[t],!0}catch{return!1}}}}function Woe(e,t){let r=ba(e,t.slice(0,-1),e),s=t[t.length-1];if(r?.[s]===void 0)return!0;if(Pc(s))return!1;try{return delete r[s],!0}catch{return!1}}var p4=Ze(()=>{yk();h2();dk();mk();_E()});function Voe(e){return e==null}var Yoe=Ze(()=>{});var Koe,Joe=Ze(()=>{o4();Koe=(e,t,r)=>{let s=e[t];(!(Object.hasOwn(e,t)&&Ik(s,r))||r===void 0&&!(t in e))&&(e[t]=r)}});function zoe(e,t,r,s){if(e==null&&!s4(e))return e;let a=Goe(t,e)?[t]:Array.isArray(t)?t:typeof t==\"string\"?Ou(t):[t],n=e;for(let c=0;c<a.length&&n!=null;c++){let f=UE(a[c]);if(Pc(f))continue;let p;if(c===a.length-1)p=r(n[f]);else{let h=n[f],E=s?.(h,f,e);p=E!==void 0?E:s4(h)?h:jk(a[c+1])?[]:{}}Koe(n,f,p),n=n[f]}return e}var Zoe=Ze(()=>{h2();Joe();c4();qoe();mk();koe();_E()});function Vd(e,t,r){return zoe(e,t,()=>r,()=>{})}var h4=Ze(()=>{Zoe()});function Xoe(e,t=0,r={}){typeof r!=\"object\"&&(r={});let s=null,a=null,n=null,c=0,f=null,p,{leading:h=!1,trailing:E=!0,maxWait:C}=r,S=\"maxWait\"in r,x=S?Math.max(Number(C)||0,t):0,I=ue=>(s!==null&&(p=e.apply(a,s)),s=a=null,c=ue,p),T=ue=>(c=ue,f=setTimeout(te,t),h&&s!==null?I(ue):p),O=ue=>(f=null,E&&s!==null?I(ue):p),U=ue=>{if(n===null)return!0;let ae=ue-n,de=ae>=t||ae<0,Ae=S&&ue-c>=x;return de||Ae},Y=ue=>{let ae=n===null?0:ue-n,de=t-ae,Ae=x-(ue-c);return S?Math.min(de,Ae):de},te=()=>{let ue=Date.now();if(U(ue))return O(ue);f=setTimeout(te,Y(ue))},ie=function(...ue){let ae=Date.now(),de=U(ae);if(s=ue,a=this,n=ae,de){if(f===null)return T(ae);if(S)return clearTimeout(f),f=setTimeout(te,t),I(ae)}return f===null&&(f=setTimeout(te,t)),p};return ie.cancel=()=>{f!==null&&clearTimeout(f),c=0,n=s=a=f=null},ie.flush=()=>f===null?p:O(Date.now()),ie}var $oe=Ze(()=>{});function g4(e,t=0,r={}){let{leading:s=!0,trailing:a=!0}=r;return Xoe(e,t,{leading:s,maxWait:t,trailing:a})}var eae=Ze(()=>{$oe()});function d4(e){if(e==null)return\"\";if(typeof e==\"string\")return e;if(Array.isArray(e))return e.map(d4).join(\",\");let t=String(e);return t===\"0\"&&Object.is(Number(e),-0)?\"-0\":t}var tae=Ze(()=>{});function m4(e){if(!e||typeof e!=\"object\")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype||Object.getPrototypeOf(t)===null?Object.prototype.toString.call(e)===\"[object Object]\":!1}var rae=Ze(()=>{});function nae(e,t,r){return m2(e,t,void 0,void 0,void 0,void 0,r)}function m2(e,t,r,s,a,n,c){let f=c(e,t,r,s,a,n);if(f!==void 0)return f;if(typeof e==typeof t)switch(typeof e){case\"bigint\":case\"string\":case\"boolean\":case\"symbol\":case\"undefined\":return e===t;case\"number\":return e===t||Object.is(e,t);case\"function\":return e===t;case\"object\":return y2(e,t,n,c)}return y2(e,t,n,c)}function y2(e,t,r,s){if(Object.is(e,t))return!0;let a=qd(e),n=qd(t);if(a===Wd&&(a=WE),n===Wd&&(n=WE),a!==n)return!1;switch(a){case jE:return e.toString()===t.toString();case GE:{let p=e.valueOf(),h=t.valueOf();return Ik(p,h)}case qE:case Sk:case vk:return Object.is(e.valueOf(),t.valueOf());case Bk:return e.source===t.source&&e.flags===t.flags;case Qoe:return e===t}r=r??new Map;let c=r.get(e),f=r.get(t);if(c!=null&&f!=null)return c===t;r.set(e,t),r.set(t,e);try{switch(a){case Dk:{if(e.size!==t.size)return!1;for(let[p,h]of e.entries())if(!t.has(p)||!m2(h,t.get(p),p,e,t,r,s))return!1;return!0}case bk:{if(e.size!==t.size)return!1;let p=Array.from(e.values()),h=Array.from(t.values());for(let E=0;E<p.length;E++){let C=p[E],S=h.findIndex(x=>m2(C,x,void 0,e,t,r,s));if(S===-1)return!1;h.splice(S,1)}return!0}case Pk:case Qk:case Rk:case Tk:case Fk:case Toe:case Nk:case Ok:case Lk:case Foe:case Mk:case Uk:{if(typeof Buffer<\"u\"&&Buffer.isBuffer(e)!==Buffer.isBuffer(t)||e.length!==t.length)return!1;for(let p=0;p<e.length;p++)if(!m2(e[p],t[p],p,e,t,r,s))return!1;return!0}case xk:return e.byteLength!==t.byteLength?!1:y2(new Uint8Array(e),new Uint8Array(t),r,s);case kk:return e.byteLength!==t.byteLength||e.byteOffset!==t.byteOffset?!1:y2(new Uint8Array(e),new Uint8Array(t),r,s);case Roe:return e.name===t.name&&e.message===t.message;case WE:{if(!(y2(e.constructor,t.constructor,r,s)||m4(e)&&m4(t)))return!1;let h=[...Object.keys(e),...Gd(e)],E=[...Object.keys(t),...Gd(t)];if(h.length!==E.length)return!1;for(let C=0;C<h.length;C++){let S=h[C],x=e[S];if(!Object.hasOwn(t,S))return!1;let I=t[S];if(!m2(x,I,S,e,t,r,s))return!1}return!0}default:return!1}}finally{r.delete(e),r.delete(t)}}var iae=Ze(()=>{rae();Ck();wk();_k();o4()});function sae(){}var oae=Ze(()=>{});function y4(e,t){return nae(e,t,sae)}var aae=Ze(()=>{iae();oae()});function lae(e){return VE(e)}var cae=Ze(()=>{Hk()});function uae(e){if(typeof e!=\"object\"||e==null)return!1;if(Object.getPrototypeOf(e)===null)return!0;if(Object.prototype.toString.call(e)!==\"[object Object]\"){let r=e[Symbol.toStringTag];return r==null||!Object.getOwnPropertyDescriptor(e,Symbol.toStringTag)?.writable?!1:e.toString()===`[object ${r}]`}let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}var fae=Ze(()=>{});function Aae(e){if(HE(e))return e;if(Array.isArray(e)||VE(e)||e instanceof ArrayBuffer||typeof SharedArrayBuffer<\"u\"&&e instanceof SharedArrayBuffer)return e.slice(0);let t=Object.getPrototypeOf(e),r=t.constructor;if(e instanceof Date||e instanceof Map||e instanceof Set)return new r(e);if(e instanceof RegExp){let s=new r(e);return s.lastIndex=e.lastIndex,s}if(e instanceof DataView)return new r(e.buffer.slice(0));if(e instanceof Error){let s=new r(e.message);return s.stack=e.stack,s.name=e.name,s.cause=e.cause,s}if(typeof File<\"u\"&&e instanceof File)return new r([e],e.name,{type:e.type,lastModified:e.lastModified});if(typeof e==\"object\"){let s=Object.create(t);return Object.assign(s,e)}return e}var pae=Ze(()=>{Ek();Hk()});function E4(e,...t){let r=t.slice(0,-1),s=t[t.length-1],a=e;for(let n=0;n<r.length;n++){let c=r[n];a=Gk(a,c,s,new Map)}return a}function Gk(e,t,r,s){if(HE(e)&&(e=Object(e)),t==null||typeof t!=\"object\")return e;if(s.has(t))return Aae(s.get(t));if(s.set(t,e),Array.isArray(t)){t=t.slice();for(let n=0;n<t.length;n++)t[n]=t[n]??void 0}let a=[...Object.keys(t),...Gd(t)];for(let n=0;n<a.length;n++){let c=a[n];if(Pc(c))continue;let f=t[c],p=e[c];if(g2(f)&&(f={...f}),g2(p)&&(p={...p}),typeof Buffer<\"u\"&&Buffer.isBuffer(f)&&(f=c0(f)),Array.isArray(f))if(typeof p==\"object\"&&p!=null){let E=[],C=Reflect.ownKeys(p);for(let S=0;S<C.length;S++){let x=C[S];E[x]=p[x]}p=E}else p=[];let h=r(p,f,c,e,t,s);h!=null?e[c]=h:Array.isArray(f)||A4(p)&&A4(f)?e[c]=Gk(p,f,r,s):p==null&&uae(f)?e[c]=Gk({},f,r,s):p==null&&lae(f)?e[c]=c0(f):(p===void 0||f!==void 0)&&(e[c]=f)}return e}var hae=Ze(()=>{l4();h2();pae();Ek();Ck();u4();_oe();fae();cae()});function I4(e,...t){if(e==null)return{};let r=Ooe(e);for(let s=0;s<t.length;s++){let a=t[s];switch(typeof a){case\"object\":{Array.isArray(a)||(a=Array.from(a));for(let n=0;n<a.length;n++){let c=a[n];u0(r,c)}break}case\"string\":case\"symbol\":case\"number\":{u0(r,a);break}}}return r}var gae=Ze(()=>{p4();Loe()});function Yd(e,...t){if(Voe(e))return{};let r={};for(let s=0;s<t.length;s++){let a=t[s];switch(typeof a){case\"object\":{Array.isArray(a)||(Poe(a)?a=Array.from(a):a=[a]);break}case\"string\":case\"symbol\":case\"number\":{a=[a];break}}for(let n of a){let c=ba(e,n);c===void 0&&!d2(e,n)||(typeof n==\"string\"&&Object.hasOwn(e,n)?r[n]=c:Vd(r,n,c))}}return r}var dae=Ze(()=>{yk();f4();h4();xoe();Yoe()});function mae(e){return e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}var yae=Ze(()=>{});function E2(e){return mae(d4(e))}var Eae=Ze(()=>{yae();tae()});var Jl=Ze(()=>{eae();aae();l4();yk();f4();hae();gae();dae();h4();p4();Eae();_E()});var Ge={};Yt(Ge,{AsyncActions:()=>B4,BufferStream:()=>w4,CachingStrategy:()=>xae,DefaultStream:()=>v4,allSettledSafe:()=>Lu,assertNever:()=>b4,bufferStream:()=>KE,buildIgnorePattern:()=>SKe,convertMapsToIndexableObjects:()=>Wk,dynamicRequire:()=>xp,escapeRegExp:()=>IKe,getArrayWithDefault:()=>C2,getFactoryWithDefault:()=>Zl,getMapWithDefault:()=>P4,getSetWithDefault:()=>Pp,groupBy:()=>PKe,isIndexableObject:()=>C4,isPathLike:()=>DKe,isTaggedYarnVersion:()=>EKe,makeDeferred:()=>Dae,mapAndFilter:()=>zl,mapAndFind:()=>f0,mergeIntoTarget:()=>Qae,overrideType:()=>CKe,parseBoolean:()=>w2,parseDuration:()=>Yk,parseInt:()=>JE,parseOptionalBoolean:()=>kae,plural:()=>qk,prettifyAsyncErrors:()=>YE,prettifySyncErrors:()=>x4,releaseAfterUseAsync:()=>BKe,replaceEnvVariables:()=>Vk,sortMap:()=>Ys,toMerged:()=>bKe,tryParseOptionalBoolean:()=>k4,validateEnum:()=>wKe});function EKe(e){return!!(Bae.default.valid(e)&&e.match(/^[^-]+(-rc\\.[0-9]+)?$/))}function qk(e,{one:t,more:r,zero:s=r}){return e===0?s:e===1?t:r}function IKe(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function CKe(e){}function b4(e){throw new Error(`Assertion failed: Unexpected object '${e}'`)}function wKe(e,t){let r=Object.values(e);if(!r.includes(t))throw new st(`Invalid value for enumeration: ${JSON.stringify(t)} (expected one of ${r.map(s=>JSON.stringify(s)).join(\", \")})`);return t}function zl(e,t){let r=[];for(let s of e){let a=t(s);a!==vae&&r.push(a)}return r}function f0(e,t){for(let r of e){let s=t(r);if(s!==Sae)return s}}function C4(e){return typeof e==\"object\"&&e!==null}async function Lu(e){let t=await Promise.allSettled(e),r=[];for(let s of t){if(s.status===\"rejected\")throw s.reason;r.push(s.value)}return r}function Wk(e){if(e instanceof Map&&(e=Object.fromEntries(e)),C4(e))for(let t of Object.keys(e)){let r=e[t];C4(r)&&(e[t]=Wk(r))}return e}function Zl(e,t,r){let s=e.get(t);return typeof s>\"u\"&&e.set(t,s=r()),s}function C2(e,t){let r=e.get(t);return typeof r>\"u\"&&e.set(t,r=[]),r}function Pp(e,t){let r=e.get(t);return typeof r>\"u\"&&e.set(t,r=new Set),r}function P4(e,t){let r=e.get(t);return typeof r>\"u\"&&e.set(t,r=new Map),r}async function BKe(e,t){if(t==null)return await e();try{return await e()}finally{await t()}}async function YE(e,t){try{return await e()}catch(r){throw r.message=t(r.message),r}}function x4(e,t){try{return e()}catch(r){throw r.message=t(r.message),r}}async function KE(e){return await new Promise((t,r)=>{let s=[];e.on(\"error\",a=>{r(a)}),e.on(\"data\",a=>{s.push(a)}),e.on(\"end\",()=>{t(Buffer.concat(s))})})}function Dae(){let e,t;return{promise:new Promise((s,a)=>{e=s,t=a}),resolve:e,reject:t}}function bae(e){return I2(fe.fromPortablePath(e))}function Pae(path){let physicalPath=fe.fromPortablePath(path),currentCacheEntry=I2.cache[physicalPath];delete I2.cache[physicalPath];let result;try{result=bae(physicalPath);let freshCacheEntry=I2.cache[physicalPath],dynamicModule=eval(\"module\"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{I2.cache[physicalPath]=currentCacheEntry}return result}function vKe(e){let t=Iae.get(e),r=le.statSync(e);if(t?.mtime===r.mtimeMs)return t.instance;let s=Pae(e);return Iae.set(e,{mtime:r.mtimeMs,instance:s}),s}function xp(e,{cachingStrategy:t=2}={}){switch(t){case 0:return Pae(e);case 1:return vKe(e);case 2:return bae(e);default:throw new Error(\"Unsupported caching strategy\")}}function Ys(e,t){let r=Array.from(e);Array.isArray(t)||(t=[t]);let s=[];for(let n of t)s.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of s){let p=f[n]<f[c]?-1:f[n]>f[c]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function SKe(e){return e.length===0?null:e.map(t=>`(${Cae.default.makeRe(t,{windows:!1,dot:!0}).source})`).join(\"|\")}function Vk(e,{env:t}){let r=\"\",s=0,a=0,n=e.matchAll(/\\\\(?<escaped>[\\\\$}])|\\$\\{(?<variable>[a-zA-Z]\\w*)(?<operator>:-|-|(?=\\}))|(?<unknown>\\$\\{)|\\}/g),c=()=>{let f=a;for(let{0:p,index:h,groups:{variable:E}={}}of n)if(E)a++;else if(p===\"}\"&&--a<f)return h+p.length;return e.length};for(let{0:f,index:p,groups:{escaped:h,variable:E,operator:C,unknown:S}={}}of n)if(r+=e.slice(s,p),s=p+f.length,h)r+=h;else if(E){let x=t[E];if(a++,C===\"\"&&x!==void 0||C===\":-\"&&x!==void 0&&x!==\"\"||C===\"-\"&&x!==void 0)r+=x,s=c();else if(C===\"\")throw new st(`Environment variable not found (${E})`)}else if(f===\"}\")a===0?r+=f:a--;else if(S)throw new st(`Invalid environment variable substitution syntax: ${e}`);if(a>0)throw new st(`Incomplete variable substitution in input: ${e}`);return r+e.slice(s)}function w2(e){switch(e){case\"true\":case\"1\":case 1:case!0:return!0;case\"false\":case\"0\":case 0:case!1:return!1;default:throw new Error(`Couldn't parse \"${e}\" as a boolean`)}}function kae(e){return typeof e>\"u\"?e:w2(e)}function k4(e){try{return kae(e)}catch{return null}}function DKe(e){return!!(fe.isAbsolute(e)||e.match(/^(\\.{1,2}|~)\\//))}function Qae(e,...t){let r=c=>({value:c}),s=r(e),a=t.map(c=>r(c)),{value:n}=E4(s,...a,(c,f)=>{if(Array.isArray(c)&&Array.isArray(f)){for(let p of f)c.find(h=>y4(h,p))||c.push(p);return c}});return n}function bKe(...e){return Qae({},...e)}function PKe(e,t){let r=Object.create(null);for(let s of e){let a=s[t];r[a]??=[],r[a].push(s)}return r}function JE(e){return typeof e==\"string\"?Number.parseInt(e,10):e}function Yk(e,t){let r=xKe.exec(e)?.groups;if(!r)throw new Error(`Couldn't parse \"${e}\" as a duration`);if(r.unit===void 0)return parseFloat(r.num);let s=S4[r.unit];if(!s)throw new Error(`Invalid duration unit \"${r.unit}\"`);return parseFloat(r.num)*s/S4[t]}var Cae,wae,Bae,D4,vae,Sae,w4,B4,v4,I2,Iae,xae,S4,xKe,xc=Ze(()=>{Dt();Vt();Jl();Cae=et(Jo()),wae=et(Nd()),Bae=et(pi()),D4=Ie(\"stream\");vae=Symbol();zl.skip=vae;Sae=Symbol();f0.skip=Sae;w4=class extends D4.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(r,s,a){if(s!==\"buffer\"||!Buffer.isBuffer(r))throw new Error(\"Assertion failed: BufferStream only accept buffers\");this.chunks.push(r),a(null,null)}_flush(r){r(null,Buffer.concat(this.chunks))}};B4=class{constructor(t){this.deferred=new Map;this.promises=new Map;this.limit=(0,wae.default)(t)}set(t,r){let s=this.deferred.get(t);typeof s>\"u\"&&this.deferred.set(t,s=Dae());let a=this.limit(()=>r());return this.promises.set(t,a),a.then(()=>{this.promises.get(t)===a&&s.resolve()},n=>{this.promises.get(t)===a&&s.reject(n)}),s.promise}reduce(t,r){let s=this.promises.get(t)??Promise.resolve();this.set(t,()=>r(s))}async wait(){await Promise.all(this.promises.values())}},v4=class extends D4.Transform{constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}_transform(r,s,a){if(s!==\"buffer\"||!Buffer.isBuffer(r))throw new Error(\"Assertion failed: DefaultStream only accept buffers\");this.active=!1,a(null,r)}_flush(r){this.active&&this.ifEmpty.length>0?r(null,this.ifEmpty):r(null)}},I2=eval(\"require\");Iae=new Map;xae=(s=>(s[s.NoCache=0]=\"NoCache\",s[s.FsTime=1]=\"FsTime\",s[s.Node=2]=\"Node\",s))(xae||{});S4={ms:1,s:1e3,m:60*1e3,h:60*60*1e3,d:24*60*60*1e3,w:7*24*60*60*1e3},xKe=new RegExp(`^(?<num>\\\\d*\\\\.?\\\\d+)(?<unit>${Object.keys(S4).join(\"|\")})?$`)});var zE,Q4,R4,Rae=Ze(()=>{zE=(r=>(r.HARD=\"HARD\",r.SOFT=\"SOFT\",r))(zE||{}),Q4=(s=>(s.Dependency=\"Dependency\",s.PeerDependency=\"PeerDependency\",s.PeerDependencyMeta=\"PeerDependencyMeta\",s))(Q4||{}),R4=(s=>(s.Inactive=\"inactive\",s.Redundant=\"redundant\",s.Active=\"active\",s))(R4||{})});var pe={};Yt(pe,{LogLevel:()=>$k,Style:()=>zk,Type:()=>gt,addLogFilterSupport:()=>S2,applyColor:()=>si,applyHyperlink:()=>XE,applyStyle:()=>Kd,json:()=>Jd,jsonOrPretty:()=>RKe,mark:()=>L4,pretty:()=>jt,prettyField:()=>Zf,prettyList:()=>O4,prettyTruncatedLocatorList:()=>Xk,stripAnsi:()=>ZE.default,supportsColor:()=>Zk,supportsHyperlinks:()=>N4,tuple:()=>Mu});function Tae(e){let t=[\"KiB\",\"MiB\",\"GiB\",\"TiB\"],r=t.length;for(;r>1&&e<1024**r;)r-=1;let s=1024**r;return`${Math.floor(e*100/s)/100} ${t[r-1]}`}function Kk(e,t){if(Array.isArray(t))return t.length===0?si(e,\"[]\",gt.CODE):si(e,\"[ \",gt.CODE)+t.map(r=>Kk(e,r)).join(\", \")+si(e,\" ]\",gt.CODE);if(typeof t==\"string\")return si(e,JSON.stringify(t),gt.STRING);if(typeof t==\"number\")return si(e,JSON.stringify(t),gt.NUMBER);if(typeof t==\"boolean\")return si(e,JSON.stringify(t),gt.BOOLEAN);if(t===null)return si(e,\"null\",gt.NULL);if(typeof t==\"object\"&&Object.getPrototypeOf(t)===Object.prototype){let r=Object.entries(t);return r.length===0?si(e,\"{}\",gt.CODE):si(e,\"{ \",gt.CODE)+r.map(([s,a])=>`${Kk(e,s)}: ${Kk(e,a)}`).join(\", \")+si(e,\" }\",gt.CODE)}if(typeof t>\"u\")return si(e,\"undefined\",gt.NULL);throw new Error(\"Assertion failed: The value doesn't seem to be a valid JSON object\")}function Mu(e,t){return[t,e]}function Kd(e,t,r){return e.get(\"enableColors\")&&r&2&&(t=v2.default.bold(t)),t}function si(e,t,r){if(!e.get(\"enableColors\"))return t;let s=kKe.get(r);if(s===null)return t;let a=typeof s>\"u\"?r:F4.level>=3?s[0]:s[1],n=typeof a==\"number\"?T4.ansi256(a):a.startsWith(\"#\")?T4.hex(a):T4[a];if(typeof n!=\"function\")throw new Error(`Invalid format type ${a}`);return n(t)}function XE(e,t,r){return e.get(\"enableHyperlinks\")?QKe?`\\x1B]8;;${r}\\x1B\\\\${t}\\x1B]8;;\\x1B\\\\`:`\\x1B]8;;${r}\\x07${t}\\x1B]8;;\\x07`:t}function jt(e,t,r){if(t===null)return si(e,\"null\",gt.NULL);if(Object.hasOwn(Jk,r))return Jk[r].pretty(e,t);if(typeof t!=\"string\")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return si(e,t,r)}function O4(e,t,r,{separator:s=\", \"}={}){return[...t].map(a=>jt(e,a,r)).join(s)}function Jd(e,t){if(e===null)return null;if(Object.hasOwn(Jk,t))return Jk[t].json(e);if(typeof e!=\"string\")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return e}function RKe(e,t,[r,s]){return e?Jd(r,s):jt(t,r,s)}function L4(e){return{Check:si(e,\"\\u2713\",\"green\"),Cross:si(e,\"\\u2718\",\"red\"),Question:si(e,\"?\",\"cyan\")}}function Zf(e,{label:t,value:[r,s]}){return`${jt(e,t,gt.CODE)}: ${jt(e,r,s)}`}function Xk(e,t,r){let s=[],a=[...t],n=r;for(;a.length>0;){let h=a[0],E=`${Vr(e,h)}, `,C=M4(h).length+2;if(s.length>0&&n<C)break;s.push([E,C]),n-=C,a.shift()}if(a.length===0)return s.map(([h])=>h).join(\"\").slice(0,-2);let c=\"X\".repeat(a.length.toString().length),f=`and ${c} more.`,p=a.length;for(;s.length>1&&n<f.length;)n+=s[s.length-1][1],p+=1,s.pop();return[s.map(([h])=>h).join(\"\"),f.replace(c,jt(e,p,gt.NUMBER))].join(\"\")}function S2(e,{configuration:t}){let r=t.get(\"logFilters\"),s=new Map,a=new Map,n=[];for(let C of r){let S=C.get(\"level\");if(typeof S>\"u\")continue;let x=C.get(\"code\");typeof x<\"u\"&&s.set(x,S);let I=C.get(\"text\");typeof I<\"u\"&&a.set(I,S);let T=C.get(\"pattern\");typeof T<\"u\"&&n.push([Fae.default.matcher(T,{contains:!0}),S])}n.reverse();let c=(C,S,x)=>{if(C===null||C===0)return x;let I=a.size>0||n.length>0?(0,ZE.default)(S):S;if(a.size>0){let T=a.get(I);if(typeof T<\"u\")return T??x}if(n.length>0){for(let[T,O]of n)if(T(I))return O??x}if(s.size>0){let T=s.get(Kf(C));if(typeof T<\"u\")return T??x}return x},f=e.reportInfo,p=e.reportWarning,h=e.reportError,E=function(C,S,x,I){switch(c(S,x,I)){case\"info\":f.call(C,S,x);break;case\"warning\":p.call(C,S??0,x);break;case\"error\":h.call(C,S??0,x);break}};e.reportInfo=function(...C){return E(this,...C,\"info\")},e.reportWarning=function(...C){return E(this,...C,\"warning\")},e.reportError=function(...C){return E(this,...C,\"error\")}}var v2,B2,Fae,ZE,gt,zk,F4,Zk,N4,T4,kKe,zo,Jk,QKe,$k,kc=Ze(()=>{Dt();v2=et(NE()),B2=et(Rd());Vt();Fae=et(Jo()),ZE=et(gk());Gx();Zo();gt={NO_HINT:\"NO_HINT\",ID:\"ID\",NULL:\"NULL\",SCOPE:\"SCOPE\",NAME:\"NAME\",RANGE:\"RANGE\",REFERENCE:\"REFERENCE\",NUMBER:\"NUMBER\",STRING:\"STRING\",BOOLEAN:\"BOOLEAN\",PATH:\"PATH\",URL:\"URL\",ADDED:\"ADDED\",REMOVED:\"REMOVED\",CODE:\"CODE\",INSPECT:\"INSPECT\",DURATION:\"DURATION\",SIZE:\"SIZE\",SIZE_DIFF:\"SIZE_DIFF\",IDENT:\"IDENT\",DESCRIPTOR:\"DESCRIPTOR\",LOCATOR:\"LOCATOR\",RESOLUTION:\"RESOLUTION\",DEPENDENT:\"DEPENDENT\",PACKAGE_EXTENSION:\"PACKAGE_EXTENSION\",SETTING:\"SETTING\",MARKDOWN:\"MARKDOWN\",MARKDOWN_INLINE:\"MARKDOWN_INLINE\"},zk=(t=>(t[t.BOLD=2]=\"BOLD\",t))(zk||{}),F4=B2.default.GITHUB_ACTIONS?{level:2}:v2.default.supportsColor?{level:v2.default.supportsColor.level}:{level:0},Zk=F4.level!==0,N4=Zk&&!B2.default.GITHUB_ACTIONS&&!B2.default.CIRCLE&&!B2.default.GITLAB,T4=new v2.default.Instance(F4),kKe=new Map([[gt.NO_HINT,null],[gt.NULL,[\"#a853b5\",129]],[gt.SCOPE,[\"#d75f00\",166]],[gt.NAME,[\"#d7875f\",173]],[gt.RANGE,[\"#00afaf\",37]],[gt.REFERENCE,[\"#87afff\",111]],[gt.NUMBER,[\"#ffd700\",220]],[gt.STRING,[\"#b4bd68\",32]],[gt.BOOLEAN,[\"#faa023\",209]],[gt.PATH,[\"#d75fd7\",170]],[gt.URL,[\"#d75fd7\",170]],[gt.ADDED,[\"#5faf00\",70]],[gt.REMOVED,[\"#ff3131\",160]],[gt.CODE,[\"#87afff\",111]],[gt.SIZE,[\"#ffd700\",220]]]),zo=e=>e;Jk={[gt.ID]:zo({pretty:(e,t)=>typeof t==\"number\"?si(e,`${t}`,gt.NUMBER):si(e,t,gt.CODE),json:e=>e}),[gt.INSPECT]:zo({pretty:(e,t)=>Kk(e,t),json:e=>e}),[gt.NUMBER]:zo({pretty:(e,t)=>si(e,`${t}`,gt.NUMBER),json:e=>e}),[gt.IDENT]:zo({pretty:(e,t)=>$i(e,t),json:e=>fn(e)}),[gt.LOCATOR]:zo({pretty:(e,t)=>Vr(e,t),json:e=>gl(e)}),[gt.DESCRIPTOR]:zo({pretty:(e,t)=>oi(e,t),json:e=>hl(e)}),[gt.RESOLUTION]:zo({pretty:(e,{descriptor:t,locator:r})=>D2(e,t,r),json:({descriptor:e,locator:t})=>({descriptor:hl(e),locator:t!==null?gl(t):null})}),[gt.DEPENDENT]:zo({pretty:(e,{locator:t,descriptor:r})=>U4(e,t,r),json:({locator:e,descriptor:t})=>({locator:gl(e),descriptor:hl(t)})}),[gt.PACKAGE_EXTENSION]:zo({pretty:(e,t)=>{switch(t.type){case\"Dependency\":return`${$i(e,t.parentDescriptor)} \\u27A4 ${si(e,\"dependencies\",gt.CODE)} \\u27A4 ${$i(e,t.descriptor)}`;case\"PeerDependency\":return`${$i(e,t.parentDescriptor)} \\u27A4 ${si(e,\"peerDependencies\",gt.CODE)} \\u27A4 ${$i(e,t.descriptor)}`;case\"PeerDependencyMeta\":return`${$i(e,t.parentDescriptor)} \\u27A4 ${si(e,\"peerDependenciesMeta\",gt.CODE)} \\u27A4 ${$i(e,Pa(t.selector))} \\u27A4 ${si(e,t.key,gt.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}},json:e=>{switch(e.type){case\"Dependency\":return`${fn(e.parentDescriptor)} > ${fn(e.descriptor)}`;case\"PeerDependency\":return`${fn(e.parentDescriptor)} >> ${fn(e.descriptor)}`;case\"PeerDependencyMeta\":return`${fn(e.parentDescriptor)} >> ${e.selector} / ${e.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}}}),[gt.SETTING]:zo({pretty:(e,t)=>(e.get(t),XE(e,si(e,t,gt.CODE),`https://yarnpkg.com/configuration/yarnrc#${t}`)),json:e=>e}),[gt.DURATION]:zo({pretty:(e,t)=>{if(t>1e3*60){let r=Math.floor(t/1e3/60),s=Math.ceil((t-r*60*1e3)/1e3);return s===0?`${r}m`:`${r}m ${s}s`}else{let r=Math.floor(t/1e3),s=t-r*1e3;return s===0?`${r}s`:`${r}s ${s}ms`}},json:e=>e}),[gt.SIZE]:zo({pretty:(e,t)=>si(e,Tae(t),gt.NUMBER),json:e=>e}),[gt.SIZE_DIFF]:zo({pretty:(e,t)=>{let r=t>=0?\"+\":\"-\",s=r===\"+\"?gt.REMOVED:gt.ADDED;return si(e,`${r} ${Tae(Math.max(Math.abs(t),1))}`,s)},json:e=>e}),[gt.PATH]:zo({pretty:(e,t)=>si(e,fe.fromPortablePath(t),gt.PATH),json:e=>fe.fromPortablePath(e)}),[gt.MARKDOWN]:zo({pretty:(e,{text:t,format:r,paragraphs:s})=>Vo(t,{format:r,paragraphs:s}),json:({text:e})=>e}),[gt.MARKDOWN_INLINE]:zo({pretty:(e,t)=>(t=t.replace(/(`+)((?:.|[\\n])*?)\\1/g,(r,s,a)=>jt(e,s+a+s,gt.CODE)),t=t.replace(/(\\*\\*)((?:.|[\\n])*?)\\1/g,(r,s,a)=>Kd(e,a,2)),t),json:e=>e})};QKe=!!process.env.KONSOLE_VERSION;$k=(a=>(a.Error=\"error\",a.Warning=\"warning\",a.Info=\"info\",a.Discard=\"discard\",a))($k||{})});var Nae=G($E=>{\"use strict\";Object.defineProperty($E,\"__esModule\",{value:!0});$E.splitWhen=$E.flatten=void 0;function TKe(e){return e.reduce((t,r)=>[].concat(t,r),[])}$E.flatten=TKe;function FKe(e,t){let r=[[]],s=0;for(let a of e)t(a)?(s++,r[s]=[]):r[s].push(a);return r}$E.splitWhen=FKe});var Oae=G(eQ=>{\"use strict\";Object.defineProperty(eQ,\"__esModule\",{value:!0});eQ.isEnoentCodeError=void 0;function NKe(e){return e.code===\"ENOENT\"}eQ.isEnoentCodeError=NKe});var Lae=G(tQ=>{\"use strict\";Object.defineProperty(tQ,\"__esModule\",{value:!0});tQ.createDirentFromStats=void 0;var _4=class{constructor(t,r){this.name=t,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function OKe(e,t){return new _4(e,t)}tQ.createDirentFromStats=OKe});var Hae=G(us=>{\"use strict\";Object.defineProperty(us,\"__esModule\",{value:!0});us.convertPosixPathToPattern=us.convertWindowsPathToPattern=us.convertPathToPattern=us.escapePosixPath=us.escapeWindowsPath=us.escape=us.removeLeadingDotSegment=us.makeAbsolute=us.unixify=void 0;var LKe=Ie(\"os\"),MKe=Ie(\"path\"),Mae=LKe.platform()===\"win32\",UKe=2,_Ke=/(\\\\?)([()*?[\\]{|}]|^!|[!+@](?=\\()|\\\\(?![!()*+?@[\\]{|}]))/g,HKe=/(\\\\?)([()[\\]{}]|^!|[!+@](?=\\())/g,jKe=/^\\\\\\\\([.?])/,GKe=/\\\\(?![!()+@[\\]{}])/g;function qKe(e){return e.replace(/\\\\/g,\"/\")}us.unixify=qKe;function WKe(e,t){return MKe.resolve(e,t)}us.makeAbsolute=WKe;function VKe(e){if(e.charAt(0)===\".\"){let t=e.charAt(1);if(t===\"/\"||t===\"\\\\\")return e.slice(UKe)}return e}us.removeLeadingDotSegment=VKe;us.escape=Mae?H4:j4;function H4(e){return e.replace(HKe,\"\\\\$2\")}us.escapeWindowsPath=H4;function j4(e){return e.replace(_Ke,\"\\\\$2\")}us.escapePosixPath=j4;us.convertPathToPattern=Mae?Uae:_ae;function Uae(e){return H4(e).replace(jKe,\"//$1\").replace(GKe,\"/\")}us.convertWindowsPathToPattern=Uae;function _ae(e){return j4(e)}us.convertPosixPathToPattern=_ae});var Gae=G((lFt,jae)=>{jae.exports=function(t){if(typeof t!=\"string\"||t===\"\")return!1;for(var r;r=/(\\\\).|([@?!+*]\\(.*\\))/g.exec(t);){if(r[2])return!0;t=t.slice(r.index+r[0].length)}return!1}});var Vae=G((cFt,Wae)=>{var YKe=Gae(),qae={\"{\":\"}\",\"(\":\")\",\"[\":\"]\"},KKe=function(e){if(e[0]===\"!\")return!0;for(var t=0,r=-2,s=-2,a=-2,n=-2,c=-2;t<e.length;){if(e[t]===\"*\"||e[t+1]===\"?\"&&/[\\].+)]/.test(e[t])||s!==-1&&e[t]===\"[\"&&e[t+1]!==\"]\"&&(s<t&&(s=e.indexOf(\"]\",t)),s>t&&(c===-1||c>s||(c=e.indexOf(\"\\\\\",t),c===-1||c>s)))||a!==-1&&e[t]===\"{\"&&e[t+1]!==\"}\"&&(a=e.indexOf(\"}\",t),a>t&&(c=e.indexOf(\"\\\\\",t),c===-1||c>a))||n!==-1&&e[t]===\"(\"&&e[t+1]===\"?\"&&/[:!=]/.test(e[t+2])&&e[t+3]!==\")\"&&(n=e.indexOf(\")\",t),n>t&&(c=e.indexOf(\"\\\\\",t),c===-1||c>n))||r!==-1&&e[t]===\"(\"&&e[t+1]!==\"|\"&&(r<t&&(r=e.indexOf(\"|\",t)),r!==-1&&e[r+1]!==\")\"&&(n=e.indexOf(\")\",r),n>r&&(c=e.indexOf(\"\\\\\",r),c===-1||c>n))))return!0;if(e[t]===\"\\\\\"){var f=e[t+1];t+=2;var p=qae[f];if(p){var h=e.indexOf(p,t);h!==-1&&(t=h+1)}if(e[t]===\"!\")return!0}else t++}return!1},JKe=function(e){if(e[0]===\"!\")return!0;for(var t=0;t<e.length;){if(/[*?{}()[\\]]/.test(e[t]))return!0;if(e[t]===\"\\\\\"){var r=e[t+1];t+=2;var s=qae[r];if(s){var a=e.indexOf(s,t);a!==-1&&(t=a+1)}if(e[t]===\"!\")return!0}else t++}return!1};Wae.exports=function(t,r){if(typeof t!=\"string\"||t===\"\")return!1;if(YKe(t))return!0;var s=KKe;return r&&r.strict===!1&&(s=JKe),s(t)}});var Kae=G((uFt,Yae)=>{\"use strict\";var zKe=Vae(),ZKe=Ie(\"path\").posix.dirname,XKe=Ie(\"os\").platform()===\"win32\",G4=\"/\",$Ke=/\\\\/g,eJe=/[\\{\\[].*[\\}\\]]$/,tJe=/(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/,rJe=/\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;Yae.exports=function(t,r){var s=Object.assign({flipBackslashes:!0},r);s.flipBackslashes&&XKe&&t.indexOf(G4)<0&&(t=t.replace($Ke,G4)),eJe.test(t)&&(t+=G4),t+=\"a\";do t=ZKe(t);while(zKe(t)||tJe.test(t));return t.replace(rJe,\"$1\")}});var rle=G(jr=>{\"use strict\";Object.defineProperty(jr,\"__esModule\",{value:!0});jr.removeDuplicateSlashes=jr.matchAny=jr.convertPatternsToRe=jr.makeRe=jr.getPatternParts=jr.expandBraceExpansion=jr.expandPatternsWithBraceExpansion=jr.isAffectDepthOfReadingPattern=jr.endsWithSlashGlobStar=jr.hasGlobStar=jr.getBaseDirectory=jr.isPatternRelatedToParentDirectory=jr.getPatternsOutsideCurrentDirectory=jr.getPatternsInsideCurrentDirectory=jr.getPositivePatterns=jr.getNegativePatterns=jr.isPositivePattern=jr.isNegativePattern=jr.convertToNegativePattern=jr.convertToPositivePattern=jr.isDynamicPattern=jr.isStaticPattern=void 0;var nJe=Ie(\"path\"),iJe=Kae(),q4=Jo(),Jae=\"**\",sJe=\"\\\\\",oJe=/[*?]|^!/,aJe=/\\[[^[]*]/,lJe=/(?:^|[^!*+?@])\\([^(]*\\|[^|]*\\)/,cJe=/[!*+?@]\\([^(]*\\)/,uJe=/,|\\.\\./,fJe=/(?!^)\\/{2,}/g;function zae(e,t={}){return!Zae(e,t)}jr.isStaticPattern=zae;function Zae(e,t={}){return e===\"\"?!1:!!(t.caseSensitiveMatch===!1||e.includes(sJe)||oJe.test(e)||aJe.test(e)||lJe.test(e)||t.extglob!==!1&&cJe.test(e)||t.braceExpansion!==!1&&AJe(e))}jr.isDynamicPattern=Zae;function AJe(e){let t=e.indexOf(\"{\");if(t===-1)return!1;let r=e.indexOf(\"}\",t+1);if(r===-1)return!1;let s=e.slice(t,r);return uJe.test(s)}function pJe(e){return rQ(e)?e.slice(1):e}jr.convertToPositivePattern=pJe;function hJe(e){return\"!\"+e}jr.convertToNegativePattern=hJe;function rQ(e){return e.startsWith(\"!\")&&e[1]!==\"(\"}jr.isNegativePattern=rQ;function Xae(e){return!rQ(e)}jr.isPositivePattern=Xae;function gJe(e){return e.filter(rQ)}jr.getNegativePatterns=gJe;function dJe(e){return e.filter(Xae)}jr.getPositivePatterns=dJe;function mJe(e){return e.filter(t=>!W4(t))}jr.getPatternsInsideCurrentDirectory=mJe;function yJe(e){return e.filter(W4)}jr.getPatternsOutsideCurrentDirectory=yJe;function W4(e){return e.startsWith(\"..\")||e.startsWith(\"./..\")}jr.isPatternRelatedToParentDirectory=W4;function EJe(e){return iJe(e,{flipBackslashes:!1})}jr.getBaseDirectory=EJe;function IJe(e){return e.includes(Jae)}jr.hasGlobStar=IJe;function $ae(e){return e.endsWith(\"/\"+Jae)}jr.endsWithSlashGlobStar=$ae;function CJe(e){let t=nJe.basename(e);return $ae(e)||zae(t)}jr.isAffectDepthOfReadingPattern=CJe;function wJe(e){return e.reduce((t,r)=>t.concat(ele(r)),[])}jr.expandPatternsWithBraceExpansion=wJe;function ele(e){let t=q4.braces(e,{expand:!0,nodupes:!0,keepEscaping:!0});return t.sort((r,s)=>r.length-s.length),t.filter(r=>r!==\"\")}jr.expandBraceExpansion=ele;function BJe(e,t){let{parts:r}=q4.scan(e,Object.assign(Object.assign({},t),{parts:!0}));return r.length===0&&(r=[e]),r[0].startsWith(\"/\")&&(r[0]=r[0].slice(1),r.unshift(\"\")),r}jr.getPatternParts=BJe;function tle(e,t){return q4.makeRe(e,t)}jr.makeRe=tle;function vJe(e,t){return e.map(r=>tle(r,t))}jr.convertPatternsToRe=vJe;function SJe(e,t){return t.some(r=>r.test(e))}jr.matchAny=SJe;function DJe(e){return e.replace(fJe,\"/\")}jr.removeDuplicateSlashes=DJe});var ole=G((AFt,sle)=>{\"use strict\";var bJe=Ie(\"stream\"),nle=bJe.PassThrough,PJe=Array.prototype.slice;sle.exports=xJe;function xJe(){let e=[],t=PJe.call(arguments),r=!1,s=t[t.length-1];s&&!Array.isArray(s)&&s.pipe==null?t.pop():s={};let a=s.end!==!1,n=s.pipeError===!0;s.objectMode==null&&(s.objectMode=!0),s.highWaterMark==null&&(s.highWaterMark=64*1024);let c=nle(s);function f(){for(let E=0,C=arguments.length;E<C;E++)e.push(ile(arguments[E],s));return p(),this}function p(){if(r)return;r=!0;let E=e.shift();if(!E){process.nextTick(h);return}Array.isArray(E)||(E=[E]);let C=E.length+1;function S(){--C>0||(r=!1,p())}function x(I){function T(){I.removeListener(\"merge2UnpipeEnd\",T),I.removeListener(\"end\",T),n&&I.removeListener(\"error\",O),S()}function O(U){c.emit(\"error\",U)}if(I._readableState.endEmitted)return S();I.on(\"merge2UnpipeEnd\",T),I.on(\"end\",T),n&&I.on(\"error\",O),I.pipe(c,{end:!1}),I.resume()}for(let I=0;I<E.length;I++)x(E[I]);S()}function h(){r=!1,c.emit(\"queueDrain\"),a&&c.end()}return c.setMaxListeners(0),c.add=f,c.on(\"unpipe\",function(E){E.emit(\"merge2UnpipeEnd\")}),t.length&&f.apply(null,t),c}function ile(e,t){if(Array.isArray(e))for(let r=0,s=e.length;r<s;r++)e[r]=ile(e[r],t);else{if(!e._readableState&&e.pipe&&(e=e.pipe(nle(t))),!e._readableState||!e.pause||!e.pipe)throw new Error(\"Only readable stream can be merged.\");e.pause()}return e}});var lle=G(nQ=>{\"use strict\";Object.defineProperty(nQ,\"__esModule\",{value:!0});nQ.merge=void 0;var kJe=ole();function QJe(e){let t=kJe(e);return e.forEach(r=>{r.once(\"error\",s=>t.emit(\"error\",s))}),t.once(\"close\",()=>ale(e)),t.once(\"end\",()=>ale(e)),t}nQ.merge=QJe;function ale(e){e.forEach(t=>t.emit(\"close\"))}});var cle=G(eI=>{\"use strict\";Object.defineProperty(eI,\"__esModule\",{value:!0});eI.isEmpty=eI.isString=void 0;function RJe(e){return typeof e==\"string\"}eI.isString=RJe;function TJe(e){return e===\"\"}eI.isEmpty=TJe});var kp=G(Xo=>{\"use strict\";Object.defineProperty(Xo,\"__esModule\",{value:!0});Xo.string=Xo.stream=Xo.pattern=Xo.path=Xo.fs=Xo.errno=Xo.array=void 0;var FJe=Nae();Xo.array=FJe;var NJe=Oae();Xo.errno=NJe;var OJe=Lae();Xo.fs=OJe;var LJe=Hae();Xo.path=LJe;var MJe=rle();Xo.pattern=MJe;var UJe=lle();Xo.stream=UJe;var _Je=cle();Xo.string=_Je});var ple=G($o=>{\"use strict\";Object.defineProperty($o,\"__esModule\",{value:!0});$o.convertPatternGroupToTask=$o.convertPatternGroupsToTasks=$o.groupPatternsByBaseDirectory=$o.getNegativePatternsAsPositive=$o.getPositivePatterns=$o.convertPatternsToTasks=$o.generate=void 0;var Uu=kp();function HJe(e,t){let r=ule(e,t),s=ule(t.ignore,t),a=fle(r),n=Ale(r,s),c=a.filter(E=>Uu.pattern.isStaticPattern(E,t)),f=a.filter(E=>Uu.pattern.isDynamicPattern(E,t)),p=V4(c,n,!1),h=V4(f,n,!0);return p.concat(h)}$o.generate=HJe;function ule(e,t){let r=e;return t.braceExpansion&&(r=Uu.pattern.expandPatternsWithBraceExpansion(r)),t.baseNameMatch&&(r=r.map(s=>s.includes(\"/\")?s:`**/${s}`)),r.map(s=>Uu.pattern.removeDuplicateSlashes(s))}function V4(e,t,r){let s=[],a=Uu.pattern.getPatternsOutsideCurrentDirectory(e),n=Uu.pattern.getPatternsInsideCurrentDirectory(e),c=Y4(a),f=Y4(n);return s.push(...K4(c,t,r)),\".\"in f?s.push(J4(\".\",n,t,r)):s.push(...K4(f,t,r)),s}$o.convertPatternsToTasks=V4;function fle(e){return Uu.pattern.getPositivePatterns(e)}$o.getPositivePatterns=fle;function Ale(e,t){return Uu.pattern.getNegativePatterns(e).concat(t).map(Uu.pattern.convertToPositivePattern)}$o.getNegativePatternsAsPositive=Ale;function Y4(e){let t={};return e.reduce((r,s)=>{let a=Uu.pattern.getBaseDirectory(s);return a in r?r[a].push(s):r[a]=[s],r},t)}$o.groupPatternsByBaseDirectory=Y4;function K4(e,t,r){return Object.keys(e).map(s=>J4(s,e[s],t,r))}$o.convertPatternGroupsToTasks=K4;function J4(e,t,r,s){return{dynamic:s,positive:t,negative:r,base:e,patterns:[].concat(t,r.map(Uu.pattern.convertToNegativePattern))}}$o.convertPatternGroupToTask=J4});var gle=G(iQ=>{\"use strict\";Object.defineProperty(iQ,\"__esModule\",{value:!0});iQ.read=void 0;function jJe(e,t,r){t.fs.lstat(e,(s,a)=>{if(s!==null){hle(r,s);return}if(!a.isSymbolicLink()||!t.followSymbolicLink){z4(r,a);return}t.fs.stat(e,(n,c)=>{if(n!==null){if(t.throwErrorOnBrokenSymbolicLink){hle(r,n);return}z4(r,a);return}t.markSymbolicLink&&(c.isSymbolicLink=()=>!0),z4(r,c)})})}iQ.read=jJe;function hle(e,t){e(t)}function z4(e,t){e(null,t)}});var dle=G(sQ=>{\"use strict\";Object.defineProperty(sQ,\"__esModule\",{value:!0});sQ.read=void 0;function GJe(e,t){let r=t.fs.lstatSync(e);if(!r.isSymbolicLink()||!t.followSymbolicLink)return r;try{let s=t.fs.statSync(e);return t.markSymbolicLink&&(s.isSymbolicLink=()=>!0),s}catch(s){if(!t.throwErrorOnBrokenSymbolicLink)return r;throw s}}sQ.read=GJe});var mle=G(A0=>{\"use strict\";Object.defineProperty(A0,\"__esModule\",{value:!0});A0.createFileSystemAdapter=A0.FILE_SYSTEM_ADAPTER=void 0;var oQ=Ie(\"fs\");A0.FILE_SYSTEM_ADAPTER={lstat:oQ.lstat,stat:oQ.stat,lstatSync:oQ.lstatSync,statSync:oQ.statSync};function qJe(e){return e===void 0?A0.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},A0.FILE_SYSTEM_ADAPTER),e)}A0.createFileSystemAdapter=qJe});var yle=G(X4=>{\"use strict\";Object.defineProperty(X4,\"__esModule\",{value:!0});var WJe=mle(),Z4=class{constructor(t={}){this._options=t,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=WJe.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(t,r){return t??r}};X4.default=Z4});var zd=G(p0=>{\"use strict\";Object.defineProperty(p0,\"__esModule\",{value:!0});p0.statSync=p0.stat=p0.Settings=void 0;var Ele=gle(),VJe=dle(),$4=yle();p0.Settings=$4.default;function YJe(e,t,r){if(typeof t==\"function\"){Ele.read(e,e3(),t);return}Ele.read(e,e3(t),r)}p0.stat=YJe;function KJe(e,t){let r=e3(t);return VJe.read(e,r)}p0.statSync=KJe;function e3(e={}){return e instanceof $4.default?e:new $4.default(e)}});var wle=G((wFt,Cle)=>{var Ile;Cle.exports=typeof queueMicrotask==\"function\"?queueMicrotask.bind(typeof window<\"u\"?window:global):e=>(Ile||(Ile=Promise.resolve())).then(e).catch(t=>setTimeout(()=>{throw t},0))});var vle=G((BFt,Ble)=>{Ble.exports=zJe;var JJe=wle();function zJe(e,t){let r,s,a,n=!0;Array.isArray(e)?(r=[],s=e.length):(a=Object.keys(e),r={},s=a.length);function c(p){function h(){t&&t(p,r),t=null}n?JJe(h):h()}function f(p,h,E){r[p]=E,(--s===0||h)&&c(h)}s?a?a.forEach(function(p){e[p](function(h,E){f(p,h,E)})}):e.forEach(function(p,h){p(function(E,C){f(h,E,C)})}):c(null),n=!1}});var t3=G(lQ=>{\"use strict\";Object.defineProperty(lQ,\"__esModule\",{value:!0});lQ.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var aQ=process.versions.node.split(\".\");if(aQ[0]===void 0||aQ[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var Sle=Number.parseInt(aQ[0],10),ZJe=Number.parseInt(aQ[1],10),Dle=10,XJe=10,$Je=Sle>Dle,eze=Sle===Dle&&ZJe>=XJe;lQ.IS_SUPPORT_READDIR_WITH_FILE_TYPES=$Je||eze});var ble=G(cQ=>{\"use strict\";Object.defineProperty(cQ,\"__esModule\",{value:!0});cQ.createDirentFromStats=void 0;var r3=class{constructor(t,r){this.name=t,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function tze(e,t){return new r3(e,t)}cQ.createDirentFromStats=tze});var n3=G(uQ=>{\"use strict\";Object.defineProperty(uQ,\"__esModule\",{value:!0});uQ.fs=void 0;var rze=ble();uQ.fs=rze});var i3=G(fQ=>{\"use strict\";Object.defineProperty(fQ,\"__esModule\",{value:!0});fQ.joinPathSegments=void 0;function nze(e,t,r){return e.endsWith(r)?e+t:e+r+t}fQ.joinPathSegments=nze});var Tle=G(h0=>{\"use strict\";Object.defineProperty(h0,\"__esModule\",{value:!0});h0.readdir=h0.readdirWithFileTypes=h0.read=void 0;var ize=zd(),Ple=vle(),sze=t3(),xle=n3(),kle=i3();function oze(e,t,r){if(!t.stats&&sze.IS_SUPPORT_READDIR_WITH_FILE_TYPES){Qle(e,t,r);return}Rle(e,t,r)}h0.read=oze;function Qle(e,t,r){t.fs.readdir(e,{withFileTypes:!0},(s,a)=>{if(s!==null){AQ(r,s);return}let n=a.map(f=>({dirent:f,name:f.name,path:kle.joinPathSegments(e,f.name,t.pathSegmentSeparator)}));if(!t.followSymbolicLinks){s3(r,n);return}let c=n.map(f=>aze(f,t));Ple(c,(f,p)=>{if(f!==null){AQ(r,f);return}s3(r,p)})})}h0.readdirWithFileTypes=Qle;function aze(e,t){return r=>{if(!e.dirent.isSymbolicLink()){r(null,e);return}t.fs.stat(e.path,(s,a)=>{if(s!==null){if(t.throwErrorOnBrokenSymbolicLink){r(s);return}r(null,e);return}e.dirent=xle.fs.createDirentFromStats(e.name,a),r(null,e)})}}function Rle(e,t,r){t.fs.readdir(e,(s,a)=>{if(s!==null){AQ(r,s);return}let n=a.map(c=>{let f=kle.joinPathSegments(e,c,t.pathSegmentSeparator);return p=>{ize.stat(f,t.fsStatSettings,(h,E)=>{if(h!==null){p(h);return}let C={name:c,path:f,dirent:xle.fs.createDirentFromStats(c,E)};t.stats&&(C.stats=E),p(null,C)})}});Ple(n,(c,f)=>{if(c!==null){AQ(r,c);return}s3(r,f)})})}h0.readdir=Rle;function AQ(e,t){e(t)}function s3(e,t){e(null,t)}});var Mle=G(g0=>{\"use strict\";Object.defineProperty(g0,\"__esModule\",{value:!0});g0.readdir=g0.readdirWithFileTypes=g0.read=void 0;var lze=zd(),cze=t3(),Fle=n3(),Nle=i3();function uze(e,t){return!t.stats&&cze.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Ole(e,t):Lle(e,t)}g0.read=uze;function Ole(e,t){return t.fs.readdirSync(e,{withFileTypes:!0}).map(s=>{let a={dirent:s,name:s.name,path:Nle.joinPathSegments(e,s.name,t.pathSegmentSeparator)};if(a.dirent.isSymbolicLink()&&t.followSymbolicLinks)try{let n=t.fs.statSync(a.path);a.dirent=Fle.fs.createDirentFromStats(a.name,n)}catch(n){if(t.throwErrorOnBrokenSymbolicLink)throw n}return a})}g0.readdirWithFileTypes=Ole;function Lle(e,t){return t.fs.readdirSync(e).map(s=>{let a=Nle.joinPathSegments(e,s,t.pathSegmentSeparator),n=lze.statSync(a,t.fsStatSettings),c={name:s,path:a,dirent:Fle.fs.createDirentFromStats(s,n)};return t.stats&&(c.stats=n),c})}g0.readdir=Lle});var Ule=G(d0=>{\"use strict\";Object.defineProperty(d0,\"__esModule\",{value:!0});d0.createFileSystemAdapter=d0.FILE_SYSTEM_ADAPTER=void 0;var tI=Ie(\"fs\");d0.FILE_SYSTEM_ADAPTER={lstat:tI.lstat,stat:tI.stat,lstatSync:tI.lstatSync,statSync:tI.statSync,readdir:tI.readdir,readdirSync:tI.readdirSync};function fze(e){return e===void 0?d0.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},d0.FILE_SYSTEM_ADAPTER),e)}d0.createFileSystemAdapter=fze});var _le=G(a3=>{\"use strict\";Object.defineProperty(a3,\"__esModule\",{value:!0});var Aze=Ie(\"path\"),pze=zd(),hze=Ule(),o3=class{constructor(t={}){this._options=t,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=hze.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,Aze.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new pze.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(t,r){return t??r}};a3.default=o3});var pQ=G(m0=>{\"use strict\";Object.defineProperty(m0,\"__esModule\",{value:!0});m0.Settings=m0.scandirSync=m0.scandir=void 0;var Hle=Tle(),gze=Mle(),l3=_le();m0.Settings=l3.default;function dze(e,t,r){if(typeof t==\"function\"){Hle.read(e,c3(),t);return}Hle.read(e,c3(t),r)}m0.scandir=dze;function mze(e,t){let r=c3(t);return gze.read(e,r)}m0.scandirSync=mze;function c3(e={}){return e instanceof l3.default?e:new l3.default(e)}});var Gle=G((TFt,jle)=>{\"use strict\";function yze(e){var t=new e,r=t;function s(){var n=t;return n.next?t=n.next:(t=new e,r=t),n.next=null,n}function a(n){r.next=n,r=n}return{get:s,release:a}}jle.exports=yze});var Wle=G((FFt,u3)=>{\"use strict\";var Eze=Gle();function qle(e,t,r){if(typeof e==\"function\"&&(r=t,t=e,e=null),!(r>=1))throw new Error(\"fastqueue concurrency must be equal to or greater than 1\");var s=Eze(Ize),a=null,n=null,c=0,f=null,p={push:T,drain:Qc,saturated:Qc,pause:E,paused:!1,get concurrency(){return r},set concurrency(ue){if(!(ue>=1))throw new Error(\"fastqueue concurrency must be equal to or greater than 1\");if(r=ue,!p.paused)for(;a&&c<r;)c++,U()},running:h,resume:x,idle:I,length:C,getQueue:S,unshift:O,empty:Qc,kill:Y,killAndDrain:te,error:ie};return p;function h(){return c}function E(){p.paused=!0}function C(){for(var ue=a,ae=0;ue;)ue=ue.next,ae++;return ae}function S(){for(var ue=a,ae=[];ue;)ae.push(ue.value),ue=ue.next;return ae}function x(){if(p.paused){if(p.paused=!1,a===null){c++,U();return}for(;a&&c<r;)c++,U()}}function I(){return c===0&&p.length()===0}function T(ue,ae){var de=s.get();de.context=e,de.release=U,de.value=ue,de.callback=ae||Qc,de.errorHandler=f,c>=r||p.paused?n?(n.next=de,n=de):(a=de,n=de,p.saturated()):(c++,t.call(e,de.value,de.worked))}function O(ue,ae){var de=s.get();de.context=e,de.release=U,de.value=ue,de.callback=ae||Qc,de.errorHandler=f,c>=r||p.paused?a?(de.next=a,a=de):(a=de,n=de,p.saturated()):(c++,t.call(e,de.value,de.worked))}function U(ue){ue&&s.release(ue);var ae=a;ae&&c<=r?p.paused?c--:(n===a&&(n=null),a=ae.next,ae.next=null,t.call(e,ae.value,ae.worked),n===null&&p.empty()):--c===0&&p.drain()}function Y(){a=null,n=null,p.drain=Qc}function te(){a=null,n=null,p.drain(),p.drain=Qc}function ie(ue){f=ue}}function Qc(){}function Ize(){this.value=null,this.callback=Qc,this.next=null,this.release=Qc,this.context=null,this.errorHandler=null;var e=this;this.worked=function(r,s){var a=e.callback,n=e.errorHandler,c=e.value;e.value=null,e.callback=Qc,e.errorHandler&&n(r,c),a.call(e.context,r,s),e.release(e)}}function Cze(e,t,r){typeof e==\"function\"&&(r=t,t=e,e=null);function s(E,C){t.call(this,E).then(function(S){C(null,S)},C)}var a=qle(e,s,r),n=a.push,c=a.unshift;return a.push=f,a.unshift=p,a.drained=h,a;function f(E){var C=new Promise(function(S,x){n(E,function(I,T){if(I){x(I);return}S(T)})});return C.catch(Qc),C}function p(E){var C=new Promise(function(S,x){c(E,function(I,T){if(I){x(I);return}S(T)})});return C.catch(Qc),C}function h(){if(a.idle())return new Promise(function(S){S()});var E=a.drain,C=new Promise(function(S){a.drain=function(){E(),S()}});return C}}u3.exports=qle;u3.exports.promise=Cze});var hQ=G(Xf=>{\"use strict\";Object.defineProperty(Xf,\"__esModule\",{value:!0});Xf.joinPathSegments=Xf.replacePathSegmentSeparator=Xf.isAppliedFilter=Xf.isFatalError=void 0;function wze(e,t){return e.errorFilter===null?!0:!e.errorFilter(t)}Xf.isFatalError=wze;function Bze(e,t){return e===null||e(t)}Xf.isAppliedFilter=Bze;function vze(e,t){return e.split(/[/\\\\]/).join(t)}Xf.replacePathSegmentSeparator=vze;function Sze(e,t,r){return e===\"\"?t:e.endsWith(r)?e+t:e+r+t}Xf.joinPathSegments=Sze});var p3=G(A3=>{\"use strict\";Object.defineProperty(A3,\"__esModule\",{value:!0});var Dze=hQ(),f3=class{constructor(t,r){this._root=t,this._settings=r,this._root=Dze.replacePathSegmentSeparator(t,r.pathSegmentSeparator)}};A3.default=f3});var d3=G(g3=>{\"use strict\";Object.defineProperty(g3,\"__esModule\",{value:!0});var bze=Ie(\"events\"),Pze=pQ(),xze=Wle(),gQ=hQ(),kze=p3(),h3=class extends kze.default{constructor(t,r){super(t,r),this._settings=r,this._scandir=Pze.scandir,this._emitter=new bze.EventEmitter,this._queue=xze(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit(\"end\")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error(\"The reader is already destroyed\");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(t){this._emitter.on(\"entry\",t)}onError(t){this._emitter.once(\"error\",t)}onEnd(t){this._emitter.once(\"end\",t)}_pushToQueue(t,r){let s={directory:t,base:r};this._queue.push(s,a=>{a!==null&&this._handleError(a)})}_worker(t,r){this._scandir(t.directory,this._settings.fsScandirSettings,(s,a)=>{if(s!==null){r(s,void 0);return}for(let n of a)this._handleEntry(n,t.base);r(null,void 0)})}_handleError(t){this._isDestroyed||!gQ.isFatalError(this._settings,t)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit(\"error\",t))}_handleEntry(t,r){if(this._isDestroyed||this._isFatalError)return;let s=t.path;r!==void 0&&(t.path=gQ.joinPathSegments(r,t.name,this._settings.pathSegmentSeparator)),gQ.isAppliedFilter(this._settings.entryFilter,t)&&this._emitEntry(t),t.dirent.isDirectory()&&gQ.isAppliedFilter(this._settings.deepFilter,t)&&this._pushToQueue(s,r===void 0?void 0:t.path)}_emitEntry(t){this._emitter.emit(\"entry\",t)}};g3.default=h3});var Vle=G(y3=>{\"use strict\";Object.defineProperty(y3,\"__esModule\",{value:!0});var Qze=d3(),m3=class{constructor(t,r){this._root=t,this._settings=r,this._reader=new Qze.default(this._root,this._settings),this._storage=[]}read(t){this._reader.onError(r=>{Rze(t,r)}),this._reader.onEntry(r=>{this._storage.push(r)}),this._reader.onEnd(()=>{Tze(t,this._storage)}),this._reader.read()}};y3.default=m3;function Rze(e,t){e(t)}function Tze(e,t){e(null,t)}});var Yle=G(I3=>{\"use strict\";Object.defineProperty(I3,\"__esModule\",{value:!0});var Fze=Ie(\"stream\"),Nze=d3(),E3=class{constructor(t,r){this._root=t,this._settings=r,this._reader=new Nze.default(this._root,this._settings),this._stream=new Fze.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(t=>{this._stream.emit(\"error\",t)}),this._reader.onEntry(t=>{this._stream.push(t)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};I3.default=E3});var Kle=G(w3=>{\"use strict\";Object.defineProperty(w3,\"__esModule\",{value:!0});var Oze=pQ(),dQ=hQ(),Lze=p3(),C3=class extends Lze.default{constructor(){super(...arguments),this._scandir=Oze.scandirSync,this._storage=[],this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),this._storage}_pushToQueue(t,r){this._queue.add({directory:t,base:r})}_handleQueue(){for(let t of this._queue.values())this._handleDirectory(t.directory,t.base)}_handleDirectory(t,r){try{let s=this._scandir(t,this._settings.fsScandirSettings);for(let a of s)this._handleEntry(a,r)}catch(s){this._handleError(s)}}_handleError(t){if(dQ.isFatalError(this._settings,t))throw t}_handleEntry(t,r){let s=t.path;r!==void 0&&(t.path=dQ.joinPathSegments(r,t.name,this._settings.pathSegmentSeparator)),dQ.isAppliedFilter(this._settings.entryFilter,t)&&this._pushToStorage(t),t.dirent.isDirectory()&&dQ.isAppliedFilter(this._settings.deepFilter,t)&&this._pushToQueue(s,r===void 0?void 0:t.path)}_pushToStorage(t){this._storage.push(t)}};w3.default=C3});var Jle=G(v3=>{\"use strict\";Object.defineProperty(v3,\"__esModule\",{value:!0});var Mze=Kle(),B3=class{constructor(t,r){this._root=t,this._settings=r,this._reader=new Mze.default(this._root,this._settings)}read(){return this._reader.read()}};v3.default=B3});var zle=G(D3=>{\"use strict\";Object.defineProperty(D3,\"__esModule\",{value:!0});var Uze=Ie(\"path\"),_ze=pQ(),S3=class{constructor(t={}){this._options=t,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,Uze.sep),this.fsScandirSettings=new _ze.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(t,r){return t??r}};D3.default=S3});var yQ=G($f=>{\"use strict\";Object.defineProperty($f,\"__esModule\",{value:!0});$f.Settings=$f.walkStream=$f.walkSync=$f.walk=void 0;var Zle=Vle(),Hze=Yle(),jze=Jle(),b3=zle();$f.Settings=b3.default;function Gze(e,t,r){if(typeof t==\"function\"){new Zle.default(e,mQ()).read(t);return}new Zle.default(e,mQ(t)).read(r)}$f.walk=Gze;function qze(e,t){let r=mQ(t);return new jze.default(e,r).read()}$f.walkSync=qze;function Wze(e,t){let r=mQ(t);return new Hze.default(e,r).read()}$f.walkStream=Wze;function mQ(e={}){return e instanceof b3.default?e:new b3.default(e)}});var EQ=G(x3=>{\"use strict\";Object.defineProperty(x3,\"__esModule\",{value:!0});var Vze=Ie(\"path\"),Yze=zd(),Xle=kp(),P3=class{constructor(t){this._settings=t,this._fsStatSettings=new Yze.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(t){return Vze.resolve(this._settings.cwd,t)}_makeEntry(t,r){let s={name:r,path:r,dirent:Xle.fs.createDirentFromStats(r,t)};return this._settings.stats&&(s.stats=t),s}_isFatalError(t){return!Xle.errno.isEnoentCodeError(t)&&!this._settings.suppressErrors}};x3.default=P3});var R3=G(Q3=>{\"use strict\";Object.defineProperty(Q3,\"__esModule\",{value:!0});var Kze=Ie(\"stream\"),Jze=zd(),zze=yQ(),Zze=EQ(),k3=class extends Zze.default{constructor(){super(...arguments),this._walkStream=zze.walkStream,this._stat=Jze.stat}dynamic(t,r){return this._walkStream(t,r)}static(t,r){let s=t.map(this._getFullEntryPath,this),a=new Kze.PassThrough({objectMode:!0});a._write=(n,c,f)=>this._getEntry(s[n],t[n],r).then(p=>{p!==null&&r.entryFilter(p)&&a.push(p),n===s.length-1&&a.end(),f()}).catch(f);for(let n=0;n<s.length;n++)a.write(n);return a}_getEntry(t,r,s){return this._getStat(t).then(a=>this._makeEntry(a,r)).catch(a=>{if(s.errorFilter(a))return null;throw a})}_getStat(t){return new Promise((r,s)=>{this._stat(t,this._fsStatSettings,(a,n)=>a===null?r(n):s(a))})}};Q3.default=k3});var $le=G(F3=>{\"use strict\";Object.defineProperty(F3,\"__esModule\",{value:!0});var Xze=yQ(),$ze=EQ(),eZe=R3(),T3=class extends $ze.default{constructor(){super(...arguments),this._walkAsync=Xze.walk,this._readerStream=new eZe.default(this._settings)}dynamic(t,r){return new Promise((s,a)=>{this._walkAsync(t,r,(n,c)=>{n===null?s(c):a(n)})})}async static(t,r){let s=[],a=this._readerStream.static(t,r);return new Promise((n,c)=>{a.once(\"error\",c),a.on(\"data\",f=>s.push(f)),a.once(\"end\",()=>n(s))})}};F3.default=T3});var ece=G(O3=>{\"use strict\";Object.defineProperty(O3,\"__esModule\",{value:!0});var b2=kp(),N3=class{constructor(t,r,s){this._patterns=t,this._settings=r,this._micromatchOptions=s,this._storage=[],this._fillStorage()}_fillStorage(){for(let t of this._patterns){let r=this._getPatternSegments(t),s=this._splitSegmentsIntoSections(r);this._storage.push({complete:s.length<=1,pattern:t,segments:r,sections:s})}}_getPatternSegments(t){return b2.pattern.getPatternParts(t,this._micromatchOptions).map(s=>b2.pattern.isDynamicPattern(s,this._settings)?{dynamic:!0,pattern:s,patternRe:b2.pattern.makeRe(s,this._micromatchOptions)}:{dynamic:!1,pattern:s})}_splitSegmentsIntoSections(t){return b2.array.splitWhen(t,r=>r.dynamic&&b2.pattern.hasGlobStar(r.pattern))}};O3.default=N3});var tce=G(M3=>{\"use strict\";Object.defineProperty(M3,\"__esModule\",{value:!0});var tZe=ece(),L3=class extends tZe.default{match(t){let r=t.split(\"/\"),s=r.length,a=this._storage.filter(n=>!n.complete||n.segments.length>s);for(let n of a){let c=n.sections[0];if(!n.complete&&s>c.length||r.every((p,h)=>{let E=n.segments[h];return!!(E.dynamic&&E.patternRe.test(p)||!E.dynamic&&E.pattern===p)}))return!0}return!1}};M3.default=L3});var rce=G(_3=>{\"use strict\";Object.defineProperty(_3,\"__esModule\",{value:!0});var IQ=kp(),rZe=tce(),U3=class{constructor(t,r){this._settings=t,this._micromatchOptions=r}getFilter(t,r,s){let a=this._getMatcher(r),n=this._getNegativePatternsRe(s);return c=>this._filter(t,c,a,n)}_getMatcher(t){return new rZe.default(t,this._settings,this._micromatchOptions)}_getNegativePatternsRe(t){let r=t.filter(IQ.pattern.isAffectDepthOfReadingPattern);return IQ.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(t,r,s,a){if(this._isSkippedByDeep(t,r.path)||this._isSkippedSymbolicLink(r))return!1;let n=IQ.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(n,s)?!1:this._isSkippedByNegativePatterns(n,a)}_isSkippedByDeep(t,r){return this._settings.deep===1/0?!1:this._getEntryLevel(t,r)>=this._settings.deep}_getEntryLevel(t,r){let s=r.split(\"/\").length;if(t===\"\")return s;let a=t.split(\"/\").length;return s-a}_isSkippedSymbolicLink(t){return!this._settings.followSymbolicLinks&&t.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(t,r){return!this._settings.baseNameMatch&&!r.match(t)}_isSkippedByNegativePatterns(t,r){return!IQ.pattern.matchAny(t,r)}};_3.default=U3});var nce=G(j3=>{\"use strict\";Object.defineProperty(j3,\"__esModule\",{value:!0});var Zd=kp(),H3=class{constructor(t,r){this._settings=t,this._micromatchOptions=r,this.index=new Map}getFilter(t,r){let s=Zd.pattern.convertPatternsToRe(t,this._micromatchOptions),a=Zd.pattern.convertPatternsToRe(r,Object.assign(Object.assign({},this._micromatchOptions),{dot:!0}));return n=>this._filter(n,s,a)}_filter(t,r,s){let a=Zd.path.removeLeadingDotSegment(t.path);if(this._settings.unique&&this._isDuplicateEntry(a)||this._onlyFileFilter(t)||this._onlyDirectoryFilter(t)||this._isSkippedByAbsoluteNegativePatterns(a,s))return!1;let n=t.dirent.isDirectory(),c=this._isMatchToPatterns(a,r,n)&&!this._isMatchToPatterns(a,s,n);return this._settings.unique&&c&&this._createIndexRecord(a),c}_isDuplicateEntry(t){return this.index.has(t)}_createIndexRecord(t){this.index.set(t,void 0)}_onlyFileFilter(t){return this._settings.onlyFiles&&!t.dirent.isFile()}_onlyDirectoryFilter(t){return this._settings.onlyDirectories&&!t.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(t,r){if(!this._settings.absolute)return!1;let s=Zd.path.makeAbsolute(this._settings.cwd,t);return Zd.pattern.matchAny(s,r)}_isMatchToPatterns(t,r,s){let a=Zd.pattern.matchAny(t,r);return!a&&s?Zd.pattern.matchAny(t+\"/\",r):a}};j3.default=H3});var ice=G(q3=>{\"use strict\";Object.defineProperty(q3,\"__esModule\",{value:!0});var nZe=kp(),G3=class{constructor(t){this._settings=t}getFilter(){return t=>this._isNonFatalError(t)}_isNonFatalError(t){return nZe.errno.isEnoentCodeError(t)||this._settings.suppressErrors}};q3.default=G3});var oce=G(V3=>{\"use strict\";Object.defineProperty(V3,\"__esModule\",{value:!0});var sce=kp(),W3=class{constructor(t){this._settings=t}getTransformer(){return t=>this._transform(t)}_transform(t){let r=t.path;return this._settings.absolute&&(r=sce.path.makeAbsolute(this._settings.cwd,r),r=sce.path.unixify(r)),this._settings.markDirectories&&t.dirent.isDirectory()&&(r+=\"/\"),this._settings.objectMode?Object.assign(Object.assign({},t),{path:r}):r}};V3.default=W3});var CQ=G(K3=>{\"use strict\";Object.defineProperty(K3,\"__esModule\",{value:!0});var iZe=Ie(\"path\"),sZe=rce(),oZe=nce(),aZe=ice(),lZe=oce(),Y3=class{constructor(t){this._settings=t,this.errorFilter=new aZe.default(this._settings),this.entryFilter=new oZe.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new sZe.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new lZe.default(this._settings)}_getRootDirectory(t){return iZe.resolve(this._settings.cwd,t.base)}_getReaderOptions(t){let r=t.base===\".\"?\"\":t.base;return{basePath:r,pathSegmentSeparator:\"/\",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,t.positive,t.negative),entryFilter:this.entryFilter.getFilter(t.positive,t.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};K3.default=Y3});var ace=G(z3=>{\"use strict\";Object.defineProperty(z3,\"__esModule\",{value:!0});var cZe=$le(),uZe=CQ(),J3=class extends uZe.default{constructor(){super(...arguments),this._reader=new cZe.default(this._settings)}async read(t){let r=this._getRootDirectory(t),s=this._getReaderOptions(t);return(await this.api(r,t,s)).map(n=>s.transform(n))}api(t,r,s){return r.dynamic?this._reader.dynamic(t,s):this._reader.static(r.patterns,s)}};z3.default=J3});var lce=G(X3=>{\"use strict\";Object.defineProperty(X3,\"__esModule\",{value:!0});var fZe=Ie(\"stream\"),AZe=R3(),pZe=CQ(),Z3=class extends pZe.default{constructor(){super(...arguments),this._reader=new AZe.default(this._settings)}read(t){let r=this._getRootDirectory(t),s=this._getReaderOptions(t),a=this.api(r,t,s),n=new fZe.Readable({objectMode:!0,read:()=>{}});return a.once(\"error\",c=>n.emit(\"error\",c)).on(\"data\",c=>n.emit(\"data\",s.transform(c))).once(\"end\",()=>n.emit(\"end\")),n.once(\"close\",()=>a.destroy()),n}api(t,r,s){return r.dynamic?this._reader.dynamic(t,s):this._reader.static(r.patterns,s)}};X3.default=Z3});var cce=G(e8=>{\"use strict\";Object.defineProperty(e8,\"__esModule\",{value:!0});var hZe=zd(),gZe=yQ(),dZe=EQ(),$3=class extends dZe.default{constructor(){super(...arguments),this._walkSync=gZe.walkSync,this._statSync=hZe.statSync}dynamic(t,r){return this._walkSync(t,r)}static(t,r){let s=[];for(let a of t){let n=this._getFullEntryPath(a),c=this._getEntry(n,a,r);c===null||!r.entryFilter(c)||s.push(c)}return s}_getEntry(t,r,s){try{let a=this._getStat(t);return this._makeEntry(a,r)}catch(a){if(s.errorFilter(a))return null;throw a}}_getStat(t){return this._statSync(t,this._fsStatSettings)}};e8.default=$3});var uce=G(r8=>{\"use strict\";Object.defineProperty(r8,\"__esModule\",{value:!0});var mZe=cce(),yZe=CQ(),t8=class extends yZe.default{constructor(){super(...arguments),this._reader=new mZe.default(this._settings)}read(t){let r=this._getRootDirectory(t),s=this._getReaderOptions(t);return this.api(r,t,s).map(s.transform)}api(t,r,s){return r.dynamic?this._reader.dynamic(t,s):this._reader.static(r.patterns,s)}};r8.default=t8});var fce=G(nI=>{\"use strict\";Object.defineProperty(nI,\"__esModule\",{value:!0});nI.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var rI=Ie(\"fs\"),EZe=Ie(\"os\"),IZe=Math.max(EZe.cpus().length,1);nI.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:rI.lstat,lstatSync:rI.lstatSync,stat:rI.stat,statSync:rI.statSync,readdir:rI.readdir,readdirSync:rI.readdirSync};var n8=class{constructor(t={}){this._options=t,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,IZe),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0),this.ignore=[].concat(this.ignore)}_getValue(t,r){return t===void 0?r:t}_getFileSystemMethods(t={}){return Object.assign(Object.assign({},nI.DEFAULT_FILE_SYSTEM_ADAPTER),t)}};nI.default=n8});var wQ=G((sNt,pce)=>{\"use strict\";var Ace=ple(),CZe=ace(),wZe=lce(),BZe=uce(),i8=fce(),Rc=kp();async function s8(e,t){_u(e);let r=o8(e,CZe.default,t),s=await Promise.all(r);return Rc.array.flatten(s)}(function(e){e.glob=e,e.globSync=t,e.globStream=r,e.async=e;function t(h,E){_u(h);let C=o8(h,BZe.default,E);return Rc.array.flatten(C)}e.sync=t;function r(h,E){_u(h);let C=o8(h,wZe.default,E);return Rc.stream.merge(C)}e.stream=r;function s(h,E){_u(h);let C=[].concat(h),S=new i8.default(E);return Ace.generate(C,S)}e.generateTasks=s;function a(h,E){_u(h);let C=new i8.default(E);return Rc.pattern.isDynamicPattern(h,C)}e.isDynamicPattern=a;function n(h){return _u(h),Rc.path.escape(h)}e.escapePath=n;function c(h){return _u(h),Rc.path.convertPathToPattern(h)}e.convertPathToPattern=c;let f;(function(h){function E(S){return _u(S),Rc.path.escapePosixPath(S)}h.escapePath=E;function C(S){return _u(S),Rc.path.convertPosixPathToPattern(S)}h.convertPathToPattern=C})(f=e.posix||(e.posix={}));let p;(function(h){function E(S){return _u(S),Rc.path.escapeWindowsPath(S)}h.escapePath=E;function C(S){return _u(S),Rc.path.convertWindowsPathToPattern(S)}h.convertPathToPattern=C})(p=e.win32||(e.win32={}))})(s8||(s8={}));function o8(e,t,r){let s=[].concat(e),a=new i8.default(r),n=Ace.generate(s,a),c=new t(a);return n.map(c.read,c)}function _u(e){if(![].concat(e).every(s=>Rc.string.isString(s)&&!Rc.string.isEmpty(s)))throw new TypeError(\"Patterns must be a string (non empty) or an array of strings\")}pce.exports=s8});var Ln={};Yt(Ln,{checksumFile:()=>vQ,checksumPattern:()=>SQ,makeHash:()=>fs});function fs(...e){let t=(0,BQ.createHash)(\"sha512\"),r=\"\";for(let s of e)typeof s==\"string\"?r+=s:s&&(r&&(t.update(r),r=\"\"),t.update(s));return r&&t.update(r),t.digest(\"hex\")}async function vQ(e,{baseFs:t,algorithm:r}={baseFs:le,algorithm:\"sha512\"}){let s=await t.openPromise(e,\"r\");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,BQ.createHash)(r),f=0;for(;(f=await t.readPromise(s,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest(\"hex\")}finally{await t.closePromise(s)}}async function SQ(e,{cwd:t}){let s=(await(0,a8.default)(e,{cwd:fe.fromPortablePath(t),onlyDirectories:!0})).map(f=>`${f}/**/*`),a=await(0,a8.default)([e,...s],{cwd:fe.fromPortablePath(t),onlyFiles:!1});a.sort();let n=await Promise.all(a.map(async f=>{let p=[Buffer.from(f)],h=K.join(t,fe.toPortablePath(f)),E=await le.lstatPromise(h);return E.isSymbolicLink()?p.push(Buffer.from(await le.readlinkPromise(h))):E.isFile()&&p.push(await le.readFilePromise(h)),p.join(\"\\0\")})),c=(0,BQ.createHash)(\"sha512\");for(let f of n)c.update(f);return c.digest(\"hex\")}var BQ,a8,y0=Ze(()=>{Dt();BQ=Ie(\"crypto\"),a8=et(wQ())});var j={};Yt(j,{allPeerRequests:()=>O2,areDescriptorsEqual:()=>yce,areIdentsEqual:()=>Q2,areLocatorsEqual:()=>R2,areVirtualPackagesEquivalent:()=>RZe,bindDescriptor:()=>kZe,bindLocator:()=>QZe,convertDescriptorToLocator:()=>DQ,convertLocatorToDescriptor:()=>c8,convertPackageToLocator:()=>bZe,convertToIdent:()=>DZe,convertToManifestRange:()=>jZe,copyPackage:()=>x2,devirtualizeDescriptor:()=>k2,devirtualizeLocator:()=>sI,ensureDevirtualizedDescriptor:()=>PZe,ensureDevirtualizedLocator:()=>xZe,getIdentVendorPath:()=>p8,isPackageCompatible:()=>QQ,isVirtualDescriptor:()=>Qp,isVirtualLocator:()=>Hu,makeDescriptor:()=>Mn,makeIdent:()=>xa,makeLocator:()=>Ks,makeRange:()=>xQ,parseDescriptor:()=>E0,parseFileStyleRange:()=>_Ze,parseIdent:()=>Pa,parseLocator:()=>Rp,parseRange:()=>Xd,prettyDependent:()=>U4,prettyDescriptor:()=>oi,prettyIdent:()=>$i,prettyLocator:()=>Vr,prettyLocatorNoColors:()=>M4,prettyRange:()=>aI,prettyReference:()=>F2,prettyResolution:()=>D2,prettyWorkspace:()=>N2,renamePackage:()=>u8,slugifyIdent:()=>l8,slugifyLocator:()=>oI,sortDescriptors:()=>lI,stringifyDescriptor:()=>hl,stringifyIdent:()=>fn,stringifyLocator:()=>gl,tryParseDescriptor:()=>T2,tryParseIdent:()=>Ece,tryParseLocator:()=>PQ,tryParseRange:()=>UZe,unwrapIdentFromScope:()=>qZe,virtualizeDescriptor:()=>f8,virtualizePackage:()=>A8,wrapIdentIntoScope:()=>GZe});function xa(e,t){if(e?.startsWith(\"@\"))throw new Error(\"Invalid scope: don't prefix it with '@'\");return{identHash:fs(e,t),scope:e,name:t}}function Mn(e,t){return{identHash:e.identHash,scope:e.scope,name:e.name,descriptorHash:fs(e.identHash,t),range:t}}function Ks(e,t){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:fs(e.identHash,t),reference:t}}function DZe(e){return{identHash:e.identHash,scope:e.scope,name:e.name}}function DQ(e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.descriptorHash,reference:e.range}}function c8(e){return{identHash:e.identHash,scope:e.scope,name:e.name,descriptorHash:e.locatorHash,range:e.reference}}function bZe(e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference}}function u8(e,t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference,version:e.version,languageName:e.languageName,linkType:e.linkType,conditions:e.conditions,dependencies:new Map(e.dependencies),peerDependencies:new Map(e.peerDependencies),dependenciesMeta:new Map(e.dependenciesMeta),peerDependenciesMeta:new Map(e.peerDependenciesMeta),bin:new Map(e.bin)}}function x2(e){return u8(e,e)}function f8(e,t){if(t.includes(\"#\"))throw new Error(\"Invalid entropy\");return Mn(e,`virtual:${t}#${e.range}`)}function A8(e,t){if(t.includes(\"#\"))throw new Error(\"Invalid entropy\");return u8(e,Ks(e,`virtual:${t}#${e.reference}`))}function Qp(e){return e.range.startsWith(P2)}function Hu(e){return e.reference.startsWith(P2)}function k2(e){if(!Qp(e))throw new Error(\"Not a virtual descriptor\");return Mn(e,e.range.replace(bQ,\"\"))}function sI(e){if(!Hu(e))throw new Error(\"Not a virtual descriptor\");return Ks(e,e.reference.replace(bQ,\"\"))}function PZe(e){return Qp(e)?Mn(e,e.range.replace(bQ,\"\")):e}function xZe(e){return Hu(e)?Ks(e,e.reference.replace(bQ,\"\")):e}function kZe(e,t){return e.range.includes(\"::\")?e:Mn(e,`${e.range}::${iI.default.stringify(t)}`)}function QZe(e,t){return e.reference.includes(\"::\")?e:Ks(e,`${e.reference}::${iI.default.stringify(t)}`)}function Q2(e,t){return e.identHash===t.identHash}function yce(e,t){return e.descriptorHash===t.descriptorHash}function R2(e,t){return e.locatorHash===t.locatorHash}function RZe(e,t){if(!Hu(e))throw new Error(\"Invalid package type\");if(!Hu(t))throw new Error(\"Invalid package type\");if(!Q2(e,t)||e.dependencies.size!==t.dependencies.size)return!1;for(let r of e.dependencies.values()){let s=t.dependencies.get(r.identHash);if(!s||!yce(r,s))return!1}return!0}function Pa(e){let t=Ece(e);if(!t)throw new Error(`Invalid ident (${e})`);return t}function Ece(e){let t=e.match(TZe);if(!t)return null;let[,r,s]=t;return xa(typeof r<\"u\"?r:null,s)}function E0(e,t=!1){let r=T2(e,t);if(!r)throw new Error(`Invalid descriptor (${e})`);return r}function T2(e,t=!1){let r=t?e.match(FZe):e.match(NZe);if(!r)return null;let[,s,a,n]=r;if(n===\"unknown\")throw new Error(`Invalid range (${e})`);let c=typeof s<\"u\"?s:null,f=typeof n<\"u\"?n:\"unknown\";return Mn(xa(c,a),f)}function Rp(e,t=!1){let r=PQ(e,t);if(!r)throw new Error(`Invalid locator (${e})`);return r}function PQ(e,t=!1){let r=t?e.match(OZe):e.match(LZe);if(!r)return null;let[,s,a,n]=r;if(n===\"unknown\")throw new Error(`Invalid reference (${e})`);let c=typeof s<\"u\"?s:null,f=typeof n<\"u\"?n:\"unknown\";return Ks(xa(c,a),f)}function Xd(e,t){let r=e.match(MZe);if(r===null)throw new Error(`Invalid range (${e})`);let s=typeof r[1]<\"u\"?r[1]:null;if(typeof t?.requireProtocol==\"string\"&&s!==t.requireProtocol)throw new Error(`Invalid protocol (${s})`);if(t?.requireProtocol&&s===null)throw new Error(`Missing protocol (${s})`);let a=typeof r[3]<\"u\"?decodeURIComponent(r[2]):null;if(t?.requireSource&&a===null)throw new Error(`Missing source (${e})`);let n=typeof r[3]<\"u\"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),c=t?.parseSelector?iI.default.parse(n):n,f=typeof r[4]<\"u\"?iI.default.parse(r[4]):null;return{protocol:s,source:a,selector:c,params:f}}function UZe(e,t){try{return Xd(e,t)}catch{return null}}function _Ze(e,{protocol:t}){let{selector:r,params:s}=Xd(e,{requireProtocol:t,requireBindings:!0});if(typeof s.locator!=\"string\")throw new Error(`Assertion failed: Invalid bindings for ${e}`);return{parentLocator:Rp(s.locator,!0),path:r}}function hce(e){return e=e.replaceAll(\"%\",\"%25\"),e=e.replaceAll(\":\",\"%3A\"),e=e.replaceAll(\"#\",\"%23\"),e}function HZe(e){return e===null?!1:Object.entries(e).length>0}function xQ({protocol:e,source:t,selector:r,params:s}){let a=\"\";return e!==null&&(a+=`${e}`),t!==null&&(a+=`${hce(t)}#`),a+=hce(r),HZe(s)&&(a+=`::${iI.default.stringify(s)}`),a}function jZe(e){let{params:t,protocol:r,source:s,selector:a}=Xd(e);for(let n in t)n.startsWith(\"__\")&&delete t[n];return xQ({protocol:r,source:s,params:t,selector:a})}function fn(e){return e.scope?`@${e.scope}/${e.name}`:`${e.name}`}function GZe(e,t){return e.scope?xa(t,`${e.scope}__${e.name}`):xa(t,e.name)}function qZe(e,t){if(e.scope!==t)return e;let r=e.name.indexOf(\"__\");if(r===-1)return xa(null,e.name);let s=e.name.slice(0,r),a=e.name.slice(r+2);return xa(s,a)}function hl(e){return e.scope?`@${e.scope}/${e.name}@${e.range}`:`${e.name}@${e.range}`}function gl(e){return e.scope?`@${e.scope}/${e.name}@${e.reference}`:`${e.name}@${e.reference}`}function l8(e){return e.scope!==null?`@${e.scope}-${e.name}`:e.name}function oI(e){let{protocol:t,selector:r}=Xd(e.reference),s=t!==null?t.replace(WZe,\"\"):\"exotic\",a=gce.default.valid(r),n=a!==null?`${s}-${a}`:`${s}`,c=10;return e.scope?`${l8(e)}-${n}-${e.locatorHash.slice(0,c)}`:`${l8(e)}-${n}-${e.locatorHash.slice(0,c)}`}function $i(e,t){return t.scope?`${jt(e,`@${t.scope}/`,gt.SCOPE)}${jt(e,t.name,gt.NAME)}`:`${jt(e,t.name,gt.NAME)}`}function kQ(e){if(e.startsWith(P2)){let t=kQ(e.substring(e.indexOf(\"#\")+1)),r=e.substring(P2.length,P2.length+vZe);return`${t} [${r}]`}else return e.replace(VZe,\"?[...]\")}function aI(e,t){return`${jt(e,kQ(t),gt.RANGE)}`}function oi(e,t){return`${$i(e,t)}${jt(e,\"@\",gt.RANGE)}${aI(e,t.range)}`}function F2(e,t){return`${jt(e,kQ(t),gt.REFERENCE)}`}function Vr(e,t){return`${$i(e,t)}${jt(e,\"@\",gt.REFERENCE)}${F2(e,t.reference)}`}function M4(e){return`${fn(e)}@${kQ(e.reference)}`}function lI(e){return Ys(e,[t=>fn(t),t=>t.range])}function N2(e,t){return $i(e,t.anchoredLocator)}function D2(e,t,r){let s=Qp(t)?k2(t):t;return r===null?`${oi(e,s)} \\u2192 ${L4(e).Cross}`:s.identHash===r.identHash?`${oi(e,s)} \\u2192 ${F2(e,r.reference)}`:`${oi(e,s)} \\u2192 ${Vr(e,r)}`}function U4(e,t,r){return r===null?`${Vr(e,t)}`:`${Vr(e,t)} (via ${aI(e,r.range)})`}function p8(e){return`node_modules/${fn(e)}`}function QQ(e,t){return e.conditions?SZe(e.conditions,r=>{let[,s,a]=r.match(mce),n=t[s];return n?n.includes(a):!0}):!0}function O2(e){let t=new Set;if(\"children\"in e)t.add(e);else for(let r of e.requests.values())t.add(r);for(let r of t)for(let s of r.children.values())t.add(s);return t}var iI,gce,dce,P2,vZe,mce,SZe,bQ,TZe,FZe,NZe,OZe,LZe,MZe,WZe,VZe,Zo=Ze(()=>{iI=et(Ie(\"querystring\")),gce=et(pi()),dce=et(Mie());kc();y0();xc();Zo();P2=\"virtual:\",vZe=5,mce=/(os|cpu|libc)=([a-z0-9_-]+)/,SZe=(0,dce.makeParser)(mce);bQ=/^[^#]*#/;TZe=/^(?:@([^/]+?)\\/)?([^@/]+)$/;FZe=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))$/,NZe=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))?$/;OZe=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))$/,LZe=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))?$/;MZe=/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/;WZe=/:$/;VZe=/\\?.*/});var Ice,Cce=Ze(()=>{Zo();Ice={hooks:{reduceDependency:(e,t,r,s,{resolver:a,resolveOptions:n})=>{for(let{pattern:c,reference:f}of t.topLevelWorkspace.manifest.resolutions){if(c.from&&(c.from.fullName!==fn(r)||t.configuration.normalizeLocator(Ks(Pa(c.from.fullName),c.from.description??r.reference)).locatorHash!==r.locatorHash)||c.descriptor.fullName!==fn(e)||t.configuration.normalizeDependency(Mn(Rp(c.descriptor.fullName),c.descriptor.description??e.range)).descriptorHash!==e.descriptorHash)continue;return a.bindDescriptor(t.configuration.normalizeDependency(Mn(e,f)),t.topLevelWorkspace.anchoredLocator,n)}return e},validateProject:async(e,t)=>{for(let r of e.workspaces){let s=N2(e.configuration,r);await e.configuration.triggerHook(a=>a.validateWorkspace,r,{reportWarning:(a,n)=>t.reportWarning(a,`${s}: ${n}`),reportError:(a,n)=>t.reportError(a,`${s}: ${n}`)})}},validateWorkspace:async(e,t)=>{let{manifest:r}=e;r.resolutions.length&&e.cwd!==e.project.cwd&&r.errors.push(new Error(\"Resolutions field will be ignored\"));for(let s of r.errors)t.reportWarning(57,s.message)}}}});var Ii,$d=Ze(()=>{Ii=class e{static{this.protocol=\"workspace:\"}supportsDescriptor(t,r){return!!(t.range.startsWith(e.protocol)||r.project.tryWorkspaceByDescriptor(t)!==null)}supportsLocator(t,r){return!!t.reference.startsWith(e.protocol)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){return[s.project.getWorkspaceByDescriptor(t).anchoredLocator]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){let s=r.project.getWorkspaceByCwd(t.reference.slice(e.protocol.length));return{...t,version:s.manifest.version||\"0.0.0\",languageName:\"unknown\",linkType:\"SOFT\",conditions:null,dependencies:r.project.configuration.normalizeDependencyMap(new Map([...s.manifest.dependencies,...s.manifest.devDependencies])),peerDependencies:new Map([...s.manifest.peerDependencies]),dependenciesMeta:s.manifest.dependenciesMeta,peerDependenciesMeta:s.manifest.peerDependenciesMeta,bin:s.manifest.bin}}}});var Fr={};Yt(Fr,{SemVer:()=>Dce.SemVer,clean:()=>KZe,getComparator:()=>vce,mergeComparators:()=>h8,satisfiesWithPrereleases:()=>eA,simplifyRanges:()=>g8,stringifyComparator:()=>Sce,validRange:()=>dl});function eA(e,t,r=!1){if(!e)return!1;let s=`${t}${r}`,a=wce.get(s);if(typeof a>\"u\")try{a=new Tp.default.Range(t,{includePrerelease:!0,loose:r})}catch{return!1}finally{wce.set(s,a||null)}else if(a===null)return!1;let n;try{n=new Tp.default.SemVer(e,a)}catch{return!1}return a.test(n)?!0:(n.prerelease&&(n.prerelease=[]),a.set.some(c=>{for(let f of c)f.semver.prerelease&&(f.semver.prerelease=[]);return c.every(f=>f.test(n))}))}function dl(e){if(e.indexOf(\":\")!==-1)return null;let t=Bce.get(e);if(typeof t<\"u\")return t;try{t=new Tp.default.Range(e)}catch{t=null}return Bce.set(e,t),t}function KZe(e){let t=YZe.exec(e);return t?t[1]:null}function vce(e){if(e.semver===Tp.default.Comparator.ANY)return{gt:null,lt:null};switch(e.operator){case\"\":return{gt:[\">=\",e.semver],lt:[\"<=\",e.semver]};case\">\":case\">=\":return{gt:[e.operator,e.semver],lt:null};case\"<\":case\"<=\":return{gt:null,lt:[e.operator,e.semver]};default:throw new Error(`Assertion failed: Unexpected comparator operator (${e.operator})`)}}function h8(e){if(e.length===0)return null;let t=null,r=null;for(let s of e){if(s.gt){let a=t!==null?Tp.default.compare(s.gt[1],t[1]):null;(a===null||a>0||a===0&&s.gt[0]===\">\")&&(t=s.gt)}if(s.lt){let a=r!==null?Tp.default.compare(s.lt[1],r[1]):null;(a===null||a<0||a===0&&s.lt[0]===\"<\")&&(r=s.lt)}}if(t&&r){let s=Tp.default.compare(t[1],r[1]);if(s===0&&(t[0]===\">\"||r[0]===\"<\")||s>0)return null}return{gt:t,lt:r}}function Sce(e){if(e.gt&&e.lt){if(e.gt[0]===\">=\"&&e.lt[0]===\"<=\"&&e.gt[1].version===e.lt[1].version)return e.gt[1].version;if(e.gt[0]===\">=\"&&e.lt[0]===\"<\"){if(e.lt[1].version===`${e.gt[1].major+1}.0.0-0`)return`^${e.gt[1].version}`;if(e.lt[1].version===`${e.gt[1].major}.${e.gt[1].minor+1}.0-0`)return`~${e.gt[1].version}`}}let t=[];return e.gt&&t.push(e.gt[0]+e.gt[1].version),e.lt&&t.push(e.lt[0]+e.lt[1].version),t.length?t.join(\" \"):\"*\"}function g8(e){let t=e.map(JZe).map(s=>dl(s).set.map(a=>a.map(n=>vce(n)))),r=t.shift().map(s=>h8(s)).filter(s=>s!==null);for(let s of t){let a=[];for(let n of r)for(let c of s){let f=h8([n,...c]);f!==null&&a.push(f)}r=a}return r.length===0?null:r.map(s=>Sce(s)).join(\" || \")}function JZe(e){let t=e.split(\"||\");if(t.length>1){let r=new Set;for(let s of t)t.some(a=>a!==s&&Tp.default.subset(s,a))||r.add(s);if(r.size<t.length)return[...r].join(\" || \")}return e}var Tp,Dce,wce,Bce,YZe,Fp=Ze(()=>{Tp=et(pi()),Dce=et(pi()),wce=new Map;Bce=new Map;YZe=/^(?:[\\sv=]*?)((0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?)(?:\\s*)$/});function bce(e){let t=e.match(/^[ \\t]+/m);return t?t[0]:\"  \"}function Pce(e){return e.charCodeAt(0)===65279?e.slice(1):e}function ka(e){return e.replace(/\\\\/g,\"/\")}function RQ(e,{yamlCompatibilityMode:t}){return t?k4(e):typeof e>\"u\"||typeof e==\"boolean\"?e:null}function xce(e,t){let r=t.search(/[^!]/);if(r===-1)return\"invalid\";let s=r%2===0?\"\":\"!\",a=t.slice(r);return`${s}${e}=${a}`}function d8(e,t){return t.length===1?xce(e,t[0]):`(${t.map(r=>xce(e,r)).join(\" | \")})`}var kce,Ut,cI=Ze(()=>{Dt();Bc();kce=et(pi());$d();xc();Fp();Zo();Ut=class e{constructor(){this.indent=\"  \";this.name=null;this.version=null;this.os=null;this.cpu=null;this.libc=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static{this.fileName=\"package.json\"}static{this.allDependencies=[\"dependencies\",\"devDependencies\",\"peerDependencies\"]}static{this.hardDependencies=[\"dependencies\",\"devDependencies\"]}static async tryFind(t,{baseFs:r=new Yn}={}){let s=K.join(t,\"package.json\");try{return await e.fromFile(s,{baseFs:r})}catch(a){if(a.code===\"ENOENT\")return null;throw a}}static async find(t,{baseFs:r}={}){let s=await e.tryFind(t,{baseFs:r});if(s===null)throw new Error(\"Manifest not found\");return s}static async fromFile(t,{baseFs:r=new Yn}={}){let s=new e;return await s.loadFile(t,{baseFs:r}),s}static fromText(t){let r=new e;return r.loadFromText(t),r}loadFromText(t){let r;try{r=JSON.parse(Pce(t)||\"{}\")}catch(s){throw s.message+=` (when parsing ${t})`,s}this.load(r),this.indent=bce(t)}async loadFile(t,{baseFs:r=new Yn}){let s=await r.readFilePromise(t,\"utf8\"),a;try{a=JSON.parse(Pce(s)||\"{}\")}catch(n){throw n.message+=` (when parsing ${t})`,n}this.load(a),this.indent=bce(s)}load(t,{yamlCompatibilityMode:r=!1}={}){if(typeof t!=\"object\"||t===null)throw new Error(`Utterly invalid manifest data (${t})`);this.raw=t;let s=[];if(this.name=null,typeof t.name==\"string\")try{this.name=Pa(t.name)}catch{s.push(new Error(\"Parsing failed for the 'name' field\"))}if(typeof t.version==\"string\"?this.version=t.version:this.version=null,Array.isArray(t.os)){let n=[];this.os=n;for(let c of t.os)typeof c!=\"string\"?s.push(new Error(\"Parsing failed for the 'os' field\")):n.push(c)}else this.os=null;if(Array.isArray(t.cpu)){let n=[];this.cpu=n;for(let c of t.cpu)typeof c!=\"string\"?s.push(new Error(\"Parsing failed for the 'cpu' field\")):n.push(c)}else this.cpu=null;if(Array.isArray(t.libc)){let n=[];this.libc=n;for(let c of t.libc)typeof c!=\"string\"?s.push(new Error(\"Parsing failed for the 'libc' field\")):n.push(c)}else this.libc=null;if(typeof t.type==\"string\"?this.type=t.type:this.type=null,typeof t.packageManager==\"string\"?this.packageManager=t.packageManager:this.packageManager=null,typeof t.private==\"boolean\"?this.private=t.private:this.private=!1,typeof t.license==\"string\"?this.license=t.license:this.license=null,typeof t.languageName==\"string\"?this.languageName=t.languageName:this.languageName=null,typeof t.main==\"string\"?this.main=ka(t.main):this.main=null,typeof t.module==\"string\"?this.module=ka(t.module):this.module=null,t.browser!=null)if(typeof t.browser==\"string\")this.browser=ka(t.browser);else{this.browser=new Map;for(let[n,c]of Object.entries(t.browser))this.browser.set(ka(n),typeof c==\"string\"?ka(c):c)}else this.browser=null;if(this.bin=new Map,typeof t.bin==\"string\")t.bin.trim()===\"\"?s.push(new Error(\"Invalid bin field\")):this.name!==null?this.bin.set(this.name.name,ka(t.bin)):s.push(new Error(\"String bin field, but no attached package name\"));else if(typeof t.bin==\"object\"&&t.bin!==null)for(let[n,c]of Object.entries(t.bin)){if(typeof c!=\"string\"||c.trim()===\"\"){s.push(new Error(`Invalid bin definition for '${n}'`));continue}let f=Pa(n);this.bin.set(f.name,ka(c))}if(this.scripts=new Map,typeof t.scripts==\"object\"&&t.scripts!==null)for(let[n,c]of Object.entries(t.scripts)){if(typeof c!=\"string\"){s.push(new Error(`Invalid script definition for '${n}'`));continue}this.scripts.set(n,c)}if(this.dependencies=new Map,typeof t.dependencies==\"object\"&&t.dependencies!==null)for(let[n,c]of Object.entries(t.dependencies)){if(typeof c!=\"string\"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Pa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=Mn(f,c);this.dependencies.set(p.identHash,p)}if(this.devDependencies=new Map,typeof t.devDependencies==\"object\"&&t.devDependencies!==null)for(let[n,c]of Object.entries(t.devDependencies)){if(typeof c!=\"string\"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Pa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=Mn(f,c);this.devDependencies.set(p.identHash,p)}if(this.peerDependencies=new Map,typeof t.peerDependencies==\"object\"&&t.peerDependencies!==null)for(let[n,c]of Object.entries(t.peerDependencies)){let f;try{f=Pa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}(typeof c!=\"string\"||!c.startsWith(Ii.protocol)&&!dl(c))&&(s.push(new Error(`Invalid dependency range for '${n}'`)),c=\"*\");let p=Mn(f,c);this.peerDependencies.set(p.identHash,p)}typeof t.workspaces==\"object\"&&t.workspaces!==null&&t.workspaces.nohoist&&s.push(new Error(\"'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead\"));let a=Array.isArray(t.workspaces)?t.workspaces:typeof t.workspaces==\"object\"&&t.workspaces!==null&&Array.isArray(t.workspaces.packages)?t.workspaces.packages:[];this.workspaceDefinitions=[];for(let n of a){if(typeof n!=\"string\"){s.push(new Error(`Invalid workspace definition for '${n}'`));continue}this.workspaceDefinitions.push({pattern:n})}if(this.dependenciesMeta=new Map,typeof t.dependenciesMeta==\"object\"&&t.dependenciesMeta!==null)for(let[n,c]of Object.entries(t.dependenciesMeta)){if(typeof c!=\"object\"||c===null){s.push(new Error(`Invalid meta field for '${n}`));continue}let f=E0(n),p=this.ensureDependencyMeta(f),h=RQ(c.built,{yamlCompatibilityMode:r});if(h===null){s.push(new Error(`Invalid built meta field for '${n}'`));continue}let E=RQ(c.optional,{yamlCompatibilityMode:r});if(E===null){s.push(new Error(`Invalid optional meta field for '${n}'`));continue}let C=RQ(c.unplugged,{yamlCompatibilityMode:r});if(C===null){s.push(new Error(`Invalid unplugged meta field for '${n}'`));continue}Object.assign(p,{built:h,optional:E,unplugged:C})}if(this.peerDependenciesMeta=new Map,typeof t.peerDependenciesMeta==\"object\"&&t.peerDependenciesMeta!==null)for(let[n,c]of Object.entries(t.peerDependenciesMeta)){if(typeof c!=\"object\"||c===null){s.push(new Error(`Invalid meta field for '${n}'`));continue}let f=E0(n),p=this.ensurePeerDependencyMeta(f),h=RQ(c.optional,{yamlCompatibilityMode:r});if(h===null){s.push(new Error(`Invalid optional meta field for '${n}'`));continue}Object.assign(p,{optional:h})}if(this.resolutions=[],typeof t.resolutions==\"object\"&&t.resolutions!==null)for(let[n,c]of Object.entries(t.resolutions)){if(typeof c!=\"string\"){s.push(new Error(`Invalid resolution entry for '${n}'`));continue}try{this.resolutions.push({pattern:px(n),reference:c})}catch(f){s.push(f);continue}}if(Array.isArray(t.files)){this.files=new Set;for(let n of t.files){if(typeof n!=\"string\"){s.push(new Error(`Invalid files entry for '${n}'`));continue}this.files.add(n)}}else this.files=null;if(typeof t.publishConfig==\"object\"&&t.publishConfig!==null){if(this.publishConfig={},typeof t.publishConfig.access==\"string\"&&(this.publishConfig.access=t.publishConfig.access),typeof t.publishConfig.main==\"string\"&&(this.publishConfig.main=ka(t.publishConfig.main)),typeof t.publishConfig.module==\"string\"&&(this.publishConfig.module=ka(t.publishConfig.module)),t.publishConfig.browser!=null)if(typeof t.publishConfig.browser==\"string\")this.publishConfig.browser=ka(t.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[n,c]of Object.entries(t.publishConfig.browser))this.publishConfig.browser.set(ka(n),typeof c==\"string\"?ka(c):c)}if(typeof t.publishConfig.registry==\"string\"&&(this.publishConfig.registry=t.publishConfig.registry),typeof t.publishConfig.provenance==\"boolean\"&&(this.publishConfig.provenance=t.publishConfig.provenance),typeof t.publishConfig.bin==\"string\")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,ka(t.publishConfig.bin)]]):s.push(new Error(\"String bin field, but no attached package name\"));else if(typeof t.publishConfig.bin==\"object\"&&t.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[n,c]of Object.entries(t.publishConfig.bin)){if(typeof c!=\"string\"){s.push(new Error(`Invalid bin definition for '${n}'`));continue}this.publishConfig.bin.set(n,ka(c))}}if(Array.isArray(t.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let n of t.publishConfig.executableFiles){if(typeof n!=\"string\"){s.push(new Error(\"Invalid executable file definition\"));continue}this.publishConfig.executableFiles.add(ka(n))}}}else this.publishConfig=null;if(typeof t.installConfig==\"object\"&&t.installConfig!==null){this.installConfig={};for(let n of Object.keys(t.installConfig))n===\"hoistingLimits\"?typeof t.installConfig.hoistingLimits==\"string\"?this.installConfig.hoistingLimits=t.installConfig.hoistingLimits:s.push(new Error(\"Invalid hoisting limits definition\")):n==\"selfReferences\"?typeof t.installConfig.selfReferences==\"boolean\"?this.installConfig.selfReferences=t.installConfig.selfReferences:s.push(new Error(\"Invalid selfReferences definition, must be a boolean value\")):s.push(new Error(`Unrecognized installConfig key: ${n}`))}else this.installConfig=null;if(typeof t.optionalDependencies==\"object\"&&t.optionalDependencies!==null)for(let[n,c]of Object.entries(t.optionalDependencies)){if(typeof c!=\"string\"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Pa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=Mn(f,c);this.dependencies.set(p.identHash,p);let h=Mn(f,\"unknown\"),E=this.ensureDependencyMeta(h);Object.assign(E,{optional:!0})}typeof t.preferUnplugged==\"boolean\"?this.preferUnplugged=t.preferUnplugged:this.preferUnplugged=null,this.errors=s}getForScope(t){switch(t){case\"dependencies\":return this.dependencies;case\"devDependencies\":return this.devDependencies;case\"peerDependencies\":return this.peerDependencies;default:throw new Error(`Unsupported value (\"${t}\")`)}}hasConsumerDependency(t){return!!(this.dependencies.has(t.identHash)||this.peerDependencies.has(t.identHash))}hasHardDependency(t){return!!(this.dependencies.has(t.identHash)||this.devDependencies.has(t.identHash))}hasSoftDependency(t){return!!this.peerDependencies.has(t.identHash)}hasDependency(t){return!!(this.hasHardDependency(t)||this.hasSoftDependency(t))}getConditions(){let t=[];return this.os&&this.os.length>0&&t.push(d8(\"os\",this.os)),this.cpu&&this.cpu.length>0&&t.push(d8(\"cpu\",this.cpu)),this.libc&&this.libc.length>0&&t.push(d8(\"libc\",this.libc)),t.length>0?t.join(\" & \"):null}ensureDependencyMeta(t){if(t.range!==\"unknown\"&&!kce.default.valid(t.range))throw new Error(`Invalid meta field range for '${hl(t)}'`);let r=fn(t),s=t.range!==\"unknown\"?t.range:null,a=this.dependenciesMeta.get(r);a||this.dependenciesMeta.set(r,a=new Map);let n=a.get(s);return n||a.set(s,n={}),n}ensurePeerDependencyMeta(t){if(t.range!==\"unknown\")throw new Error(`Invalid meta field range for '${hl(t)}'`);let r=fn(t),s=this.peerDependenciesMeta.get(r);return s||this.peerDependenciesMeta.set(r,s={}),s}setRawField(t,r,{after:s=[]}={}){let a=new Set(s.filter(n=>Object.hasOwn(this.raw,n)));if(a.size===0||Object.hasOwn(this.raw,t))this.raw[t]=r;else{let n=this.raw,c=this.raw={},f=!1;for(let p of Object.keys(n))c[p]=n[p],f||(a.delete(p),a.size===0&&(c[t]=r,f=!0))}}exportTo(t,{compatibilityMode:r=!0}={}){if(Object.assign(t,this.raw),this.name!==null?t.name=fn(this.name):delete t.name,this.version!==null?t.version=this.version:delete t.version,this.os!==null?t.os=this.os:delete t.os,this.cpu!==null?t.cpu=this.cpu:delete t.cpu,this.type!==null?t.type=this.type:delete t.type,this.packageManager!==null?t.packageManager=this.packageManager:delete t.packageManager,this.private?t.private=!0:delete t.private,this.license!==null?t.license=this.license:delete t.license,this.languageName!==null?t.languageName=this.languageName:delete t.languageName,this.main!==null?t.main=this.main:delete t.main,this.module!==null?t.module=this.module:delete t.module,this.browser!==null){let n=this.browser;typeof n==\"string\"?t.browser=n:n instanceof Map&&(t.browser=Object.assign({},...Array.from(n.keys()).sort().map(c=>({[c]:n.get(c)}))))}else delete t.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?t.bin=this.bin.get(this.name.name):this.bin.size>0?t.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(n=>({[n]:this.bin.get(n)}))):delete t.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?t.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:n})=>n)}:t.workspaces=this.workspaceDefinitions.map(({pattern:n})=>n):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?t.workspaces=this.raw.workspaces:delete t.workspaces;let s=[],a=[];for(let n of this.dependencies.values()){let c=this.dependenciesMeta.get(fn(n)),f=!1;if(r&&c){let p=c.get(null);p&&p.optional&&(f=!0)}f?a.push(n):s.push(n)}s.length>0?t.dependencies=Object.assign({},...lI(s).map(n=>({[fn(n)]:n.range}))):delete t.dependencies,a.length>0?t.optionalDependencies=Object.assign({},...lI(a).map(n=>({[fn(n)]:n.range}))):delete t.optionalDependencies,this.devDependencies.size>0?t.devDependencies=Object.assign({},...lI(this.devDependencies.values()).map(n=>({[fn(n)]:n.range}))):delete t.devDependencies,this.peerDependencies.size>0?t.peerDependencies=Object.assign({},...lI(this.peerDependencies.values()).map(n=>({[fn(n)]:n.range}))):delete t.peerDependencies,t.dependenciesMeta={};for(let[n,c]of Ys(this.dependenciesMeta.entries(),([f,p])=>f))for(let[f,p]of Ys(c.entries(),([h,E])=>h!==null?`0${h}`:\"1\")){let h=f!==null?hl(Mn(Pa(n),f)):n,E={...p};r&&f===null&&delete E.optional,Object.keys(E).length!==0&&(t.dependenciesMeta[h]=E)}if(Object.keys(t.dependenciesMeta).length===0&&delete t.dependenciesMeta,this.peerDependenciesMeta.size>0?t.peerDependenciesMeta=Object.assign({},...Ys(this.peerDependenciesMeta.entries(),([n,c])=>n).map(([n,c])=>({[n]:c}))):delete t.peerDependenciesMeta,this.resolutions.length>0?t.resolutions=Object.assign({},...this.resolutions.map(({pattern:n,reference:c})=>({[hx(n)]:c}))):delete t.resolutions,this.files!==null?t.files=Array.from(this.files):delete t.files,this.preferUnplugged!==null?t.preferUnplugged=this.preferUnplugged:delete t.preferUnplugged,this.scripts!==null&&this.scripts.size>0){t.scripts??={};for(let n of Object.keys(t.scripts))this.scripts.has(n)||delete t.scripts[n];for(let[n,c]of this.scripts.entries())t.scripts[n]=c}else delete t.scripts;return t}}});function ZZe(e){return typeof e.reportCode<\"u\"}var Qce,Rce,zZe,_t,yo,Tc=Ze(()=>{Jl();Qce=Ie(\"stream\"),Rce=Ie(\"string_decoder\"),zZe=15,_t=class extends Error{constructor(r,s,a){super(s);this.reportExtra=a;this.reportCode=r}};yo=class{constructor(){this.cacheHits=new Set;this.cacheMisses=new Set;this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}getRecommendedLength(){return 180}reportCacheHit(t){this.cacheHits.add(t.locatorHash)}reportCacheMiss(t,r){this.cacheMisses.add(t.locatorHash)}static progressViaCounter(t){let r=0,s,a=new Promise(p=>{s=p}),n=p=>{let h=s;a=new Promise(E=>{s=E}),r=p,h()},c=(p=0)=>{n(r+1)},f=async function*(){for(;r<t;)await a,yield{progress:r/t}}();return{[Symbol.asyncIterator](){return f},hasProgress:!0,hasTitle:!1,set:n,tick:c}}static progressViaTitle(){let t,r,s=new Promise(c=>{r=c}),a=g4(c=>{let f=r;s=new Promise(p=>{r=p}),t=c,f()},1e3/zZe),n=async function*(){for(;;)await s,yield{title:t}}();return{[Symbol.asyncIterator](){return n},hasProgress:!1,hasTitle:!0,setTitle:a}}async startProgressPromise(t,r){let s=this.reportProgress(t);try{return await r(t)}finally{s.stop()}}startProgressSync(t,r){let s=this.reportProgress(t);try{return r(t)}finally{s.stop()}}reportInfoOnce(t,r,s){let a=s&&s.key?s.key:r;this.reportedInfos.has(a)||(this.reportedInfos.add(a),this.reportInfo(t,r),s?.reportExtra?.(this))}reportWarningOnce(t,r,s){let a=s&&s.key?s.key:r;this.reportedWarnings.has(a)||(this.reportedWarnings.add(a),this.reportWarning(t,r),s?.reportExtra?.(this))}reportErrorOnce(t,r,s){let a=s&&s.key?s.key:r;this.reportedErrors.has(a)||(this.reportedErrors.add(a),this.reportError(t,r),s?.reportExtra?.(this))}reportExceptionOnce(t){ZZe(t)?this.reportErrorOnce(t.reportCode,t.message,{key:t,reportExtra:t.reportExtra}):this.reportErrorOnce(1,t.stack||t.message,{key:t})}createStreamReporter(t=null){let r=new Qce.PassThrough,s=new Rce.StringDecoder,a=\"\";return r.on(\"data\",n=>{let c=s.write(n),f;do if(f=c.indexOf(`\n`),f!==-1){let p=a+c.substring(0,f);c=c.substring(f+1),a=\"\",t!==null?this.reportInfo(null,`${t} ${p}`):this.reportInfo(null,p)}while(f!==-1);a+=c}),r.on(\"end\",()=>{let n=s.end();n!==\"\"&&(t!==null?this.reportInfo(null,`${t} ${n}`):this.reportInfo(null,n))}),r}}});var uI,m8=Ze(()=>{Tc();Zo();uI=class{constructor(t){this.fetchers=t}supports(t,r){return!!this.tryFetcher(t,r)}getLocalPath(t,r){return this.getFetcher(t,r).getLocalPath(t,r)}async fetch(t,r){return await this.getFetcher(t,r).fetch(t,r)}tryFetcher(t,r){let s=this.fetchers.find(a=>a.supports(t,r));return s||null}getFetcher(t,r){let s=this.fetchers.find(a=>a.supports(t,r));if(!s)throw new _t(11,`${Vr(r.project.configuration,t)} isn't supported by any available fetcher`);return s}}});var em,y8=Ze(()=>{Zo();em=class{constructor(t){this.resolvers=t.filter(r=>r)}supportsDescriptor(t,r){return!!this.tryResolverByDescriptor(t,r)}supportsLocator(t,r){return!!this.tryResolverByLocator(t,r)}shouldPersistResolution(t,r){return this.getResolverByLocator(t,r).shouldPersistResolution(t,r)}bindDescriptor(t,r,s){return this.getResolverByDescriptor(t,s).bindDescriptor(t,r,s)}getResolutionDependencies(t,r){return this.getResolverByDescriptor(t,r).getResolutionDependencies(t,r)}async getCandidates(t,r,s){return await this.getResolverByDescriptor(t,s).getCandidates(t,r,s)}async getSatisfying(t,r,s,a){return this.getResolverByDescriptor(t,a).getSatisfying(t,r,s,a)}async resolve(t,r){return await this.getResolverByLocator(t,r).resolve(t,r)}tryResolverByDescriptor(t,r){let s=this.resolvers.find(a=>a.supportsDescriptor(t,r));return s||null}getResolverByDescriptor(t,r){let s=this.resolvers.find(a=>a.supportsDescriptor(t,r));if(!s)throw new Error(`${oi(r.project.configuration,t)} isn't supported by any available resolver`);return s}tryResolverByLocator(t,r){let s=this.resolvers.find(a=>a.supportsLocator(t,r));return s||null}getResolverByLocator(t,r){let s=this.resolvers.find(a=>a.supportsLocator(t,r));if(!s)throw new Error(`${Vr(r.project.configuration,t)} isn't supported by any available resolver`);return s}}});var fI,E8=Ze(()=>{Dt();Zo();fI=class{supports(t){return!!t.reference.startsWith(\"virtual:\")}getLocalPath(t,r){let s=t.reference.indexOf(\"#\");if(s===-1)throw new Error(\"Invalid virtual package reference\");let a=t.reference.slice(s+1),n=Ks(t,a);return r.fetcher.getLocalPath(n,r)}async fetch(t,r){let s=t.reference.indexOf(\"#\");if(s===-1)throw new Error(\"Invalid virtual package reference\");let a=t.reference.slice(s+1),n=Ks(t,a),c=await r.fetcher.fetch(n,r);return await this.ensureVirtualLink(t,c,r)}getLocatorFilename(t){return oI(t)}async ensureVirtualLink(t,r,s){let a=r.packageFs.getRealPath(),n=s.project.configuration.get(\"virtualFolder\"),c=this.getLocatorFilename(t),f=mo.makeVirtualPath(n,c,a),p=new jf(f,{baseFs:r.packageFs,pathUtils:K});return{...r,packageFs:p}}}});var TQ,Tce=Ze(()=>{TQ=class e{static{this.protocol=\"virtual:\"}static isVirtualDescriptor(t){return!!t.range.startsWith(e.protocol)}static isVirtualLocator(t){return!!t.reference.startsWith(e.protocol)}supportsDescriptor(t,r){return e.isVirtualDescriptor(t)}supportsLocator(t,r){return e.isVirtualLocator(t)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){throw new Error('Assertion failed: calling \"bindDescriptor\" on a virtual descriptor is unsupported')}getResolutionDependencies(t,r){throw new Error('Assertion failed: calling \"getResolutionDependencies\" on a virtual descriptor is unsupported')}async getCandidates(t,r,s){throw new Error('Assertion failed: calling \"getCandidates\" on a virtual descriptor is unsupported')}async getSatisfying(t,r,s,a){throw new Error('Assertion failed: calling \"getSatisfying\" on a virtual descriptor is unsupported')}async resolve(t,r){throw new Error('Assertion failed: calling \"resolve\" on a virtual locator is unsupported')}}});var AI,I8=Ze(()=>{Dt();$d();AI=class{supports(t){return!!t.reference.startsWith(Ii.protocol)}getLocalPath(t,r){return this.getWorkspace(t,r).cwd}async fetch(t,r){let s=this.getWorkspace(t,r).cwd;return{packageFs:new bn(s),prefixPath:vt.dot,localPath:s}}getWorkspace(t,r){return r.project.getWorkspaceByCwd(t.reference.slice(Ii.protocol.length))}}});function L2(e){return typeof e==\"object\"&&e!==null&&!Array.isArray(e)}function Fce(e){return typeof e>\"u\"?3:L2(e)?0:Array.isArray(e)?1:2}function B8(e,t){return Object.hasOwn(e,t)}function $Ze(e){return L2(e)&&B8(e,\"onConflict\")&&typeof e.onConflict==\"string\"}function eXe(e){if(typeof e>\"u\")return{onConflict:\"default\",value:e};if(!$Ze(e))return{onConflict:\"default\",value:e};if(B8(e,\"value\"))return e;let{onConflict:t,...r}=e;return{onConflict:t,value:r}}function Nce(e,t){let r=L2(e)&&B8(e,t)?e[t]:void 0;return eXe(r)}function pI(e,t){return[e,t,Oce]}function v8(e){return Array.isArray(e)?e[2]===Oce:!1}function C8(e,t){if(L2(e)){let r={};for(let s of Object.keys(e))r[s]=C8(e[s],t);return pI(t,r)}return Array.isArray(e)?pI(t,e.map(r=>C8(r,t))):pI(t,e)}function w8(e,t,r,s,a){let n,c=[],f=a,p=0;for(let E=a-1;E>=s;--E){let[C,S]=e[E],{onConflict:x,value:I}=Nce(S,r),T=Fce(I);if(T!==3){if(n??=T,T!==n||x===\"hardReset\"){p=f;break}if(T===2)return pI(C,I);if(c.unshift([C,I]),x===\"reset\"){p=E;break}x===\"extend\"&&E===s&&(s=0),f=E}}if(typeof n>\"u\")return null;let h=c.map(([E])=>E).join(\", \");switch(n){case 1:return pI(h,new Array().concat(...c.map(([E,C])=>C.map(S=>C8(S,E)))));case 0:{let E=Object.assign({},...c.map(([,T])=>T)),C=Object.keys(E),S={},x=e.map(([T,O])=>[T,Nce(O,r).value]),I=XZe(x,([T,O])=>{let U=Fce(O);return U!==0&&U!==3});if(I!==-1){let T=x.slice(I+1);for(let O of C)S[O]=w8(T,t,O,0,T.length)}else for(let T of C)S[T]=w8(x,t,T,p,x.length);return pI(h,S)}default:throw new Error(\"Assertion failed: Non-extendable value type\")}}function Lce(e){return w8(e.map(([t,r])=>[t,{\".\":r}]),[],\".\",0,e.length)}function M2(e){return v8(e)?e[1]:e}function FQ(e){let t=v8(e)?e[1]:e;if(Array.isArray(t))return t.map(r=>FQ(r));if(L2(t)){let r={};for(let[s,a]of Object.entries(t))r[s]=FQ(a);return r}return t}function S8(e){return v8(e)?e[0]:null}var XZe,Oce,Mce=Ze(()=>{XZe=(e,t,r)=>{let s=[...e];return s.reverse(),s.findIndex(t,r)};Oce=Symbol()});var NQ={};Yt(NQ,{getDefaultGlobalFolder:()=>b8,getHomeFolder:()=>hI,isFolderInside:()=>P8});function b8(){if(process.platform===\"win32\"){let e=fe.toPortablePath(process.env.LOCALAPPDATA||fe.join((0,D8.homedir)(),\"AppData\",\"Local\"));return K.resolve(e,\"Yarn/Berry\")}if(process.env.XDG_DATA_HOME){let e=fe.toPortablePath(process.env.XDG_DATA_HOME);return K.resolve(e,\"yarn/berry\")}return K.resolve(hI(),\".yarn/berry\")}function hI(){return fe.toPortablePath((0,D8.homedir)()||\"/usr/local/share\")}function P8(e,t){let r=K.relative(t,e);return r&&!r.startsWith(\"..\")&&!K.isAbsolute(r)}var D8,OQ=Ze(()=>{Dt();D8=Ie(\"os\")});var Hce=G((TNt,_ce)=>{\"use strict\";var x8=Ie(\"https\"),k8=Ie(\"http\"),{URL:Uce}=Ie(\"url\"),Q8=class extends k8.Agent{constructor(t){let{proxy:r,proxyRequestOptions:s,...a}=t;super(a),this.proxy=typeof r==\"string\"?new Uce(r):r,this.proxyRequestOptions=s||{}}createConnection(t,r){let s={...this.proxyRequestOptions,method:\"CONNECT\",host:this.proxy.hostname,port:this.proxy.port,path:`${t.host}:${t.port}`,setHost:!1,headers:{...this.proxyRequestOptions.headers,connection:this.keepAlive?\"keep-alive\":\"close\",host:`${t.host}:${t.port}`},agent:!1,timeout:t.timeout||0};if(this.proxy.username||this.proxy.password){let n=Buffer.from(`${decodeURIComponent(this.proxy.username||\"\")}:${decodeURIComponent(this.proxy.password||\"\")}`).toString(\"base64\");s.headers[\"proxy-authorization\"]=`Basic ${n}`}this.proxy.protocol===\"https:\"&&(s.servername=this.proxy.hostname);let a=(this.proxy.protocol===\"http:\"?k8:x8).request(s);a.once(\"connect\",(n,c,f)=>{a.removeAllListeners(),c.removeAllListeners(),n.statusCode===200?r(null,c):(c.destroy(),r(new Error(`Bad response: ${n.statusCode}`),null))}),a.once(\"timeout\",()=>{a.destroy(new Error(\"Proxy timeout\"))}),a.once(\"error\",n=>{a.removeAllListeners(),r(n,null)}),a.end()}},R8=class extends x8.Agent{constructor(t){let{proxy:r,proxyRequestOptions:s,...a}=t;super(a),this.proxy=typeof r==\"string\"?new Uce(r):r,this.proxyRequestOptions=s||{}}createConnection(t,r){let s={...this.proxyRequestOptions,method:\"CONNECT\",host:this.proxy.hostname,port:this.proxy.port,path:`${t.host}:${t.port}`,setHost:!1,headers:{...this.proxyRequestOptions.headers,connection:this.keepAlive?\"keep-alive\":\"close\",host:`${t.host}:${t.port}`},agent:!1,timeout:t.timeout||0};if(this.proxy.username||this.proxy.password){let n=Buffer.from(`${decodeURIComponent(this.proxy.username||\"\")}:${decodeURIComponent(this.proxy.password||\"\")}`).toString(\"base64\");s.headers[\"proxy-authorization\"]=`Basic ${n}`}this.proxy.protocol===\"https:\"&&(s.servername=this.proxy.hostname);let a=(this.proxy.protocol===\"http:\"?k8:x8).request(s);a.once(\"connect\",(n,c,f)=>{if(a.removeAllListeners(),c.removeAllListeners(),n.statusCode===200){let p=super.createConnection({...t,socket:c});r(null,p)}else c.destroy(),r(new Error(`Bad response: ${n.statusCode}`),null)}),a.once(\"timeout\",()=>{a.destroy(new Error(\"Proxy timeout\"))}),a.once(\"error\",n=>{a.removeAllListeners(),r(n,null)}),a.end()}};_ce.exports={HttpProxyAgent:Q8,HttpsProxyAgent:R8}});var T8,jce,Gce,qce=Ze(()=>{T8=et(Hce(),1),jce=T8.default.HttpProxyAgent,Gce=T8.default.HttpsProxyAgent});var Op=G((Np,LQ)=>{\"use strict\";Object.defineProperty(Np,\"__esModule\",{value:!0});var Wce=[\"Int8Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"Int16Array\",\"Uint16Array\",\"Int32Array\",\"Uint32Array\",\"Float32Array\",\"Float64Array\",\"BigInt64Array\",\"BigUint64Array\"];function rXe(e){return Wce.includes(e)}var nXe=[\"Function\",\"Generator\",\"AsyncGenerator\",\"GeneratorFunction\",\"AsyncGeneratorFunction\",\"AsyncFunction\",\"Observable\",\"Array\",\"Buffer\",\"Blob\",\"Object\",\"RegExp\",\"Date\",\"Error\",\"Map\",\"Set\",\"WeakMap\",\"WeakSet\",\"ArrayBuffer\",\"SharedArrayBuffer\",\"DataView\",\"Promise\",\"URL\",\"FormData\",\"URLSearchParams\",\"HTMLElement\",...Wce];function iXe(e){return nXe.includes(e)}var sXe=[\"null\",\"undefined\",\"string\",\"number\",\"bigint\",\"boolean\",\"symbol\"];function oXe(e){return sXe.includes(e)}function gI(e){return t=>typeof t===e}var{toString:Vce}=Object.prototype,U2=e=>{let t=Vce.call(e).slice(8,-1);if(/HTML\\w+Element/.test(t)&&Pe.domElement(e))return\"HTMLElement\";if(iXe(t))return t},hi=e=>t=>U2(t)===e;function Pe(e){if(e===null)return\"null\";switch(typeof e){case\"undefined\":return\"undefined\";case\"string\":return\"string\";case\"number\":return\"number\";case\"boolean\":return\"boolean\";case\"function\":return\"Function\";case\"bigint\":return\"bigint\";case\"symbol\":return\"symbol\";default:}if(Pe.observable(e))return\"Observable\";if(Pe.array(e))return\"Array\";if(Pe.buffer(e))return\"Buffer\";let t=U2(e);if(t)return t;if(e instanceof String||e instanceof Boolean||e instanceof Number)throw new TypeError(\"Please don't use object wrappers for primitive types\");return\"Object\"}Pe.undefined=gI(\"undefined\");Pe.string=gI(\"string\");var aXe=gI(\"number\");Pe.number=e=>aXe(e)&&!Pe.nan(e);Pe.bigint=gI(\"bigint\");Pe.function_=gI(\"function\");Pe.null_=e=>e===null;Pe.class_=e=>Pe.function_(e)&&e.toString().startsWith(\"class \");Pe.boolean=e=>e===!0||e===!1;Pe.symbol=gI(\"symbol\");Pe.numericString=e=>Pe.string(e)&&!Pe.emptyStringOrWhitespace(e)&&!Number.isNaN(Number(e));Pe.array=(e,t)=>Array.isArray(e)?Pe.function_(t)?e.every(t):!0:!1;Pe.buffer=e=>{var t,r,s,a;return(a=(s=(r=(t=e)===null||t===void 0?void 0:t.constructor)===null||r===void 0?void 0:r.isBuffer)===null||s===void 0?void 0:s.call(r,e))!==null&&a!==void 0?a:!1};Pe.blob=e=>hi(\"Blob\")(e);Pe.nullOrUndefined=e=>Pe.null_(e)||Pe.undefined(e);Pe.object=e=>!Pe.null_(e)&&(typeof e==\"object\"||Pe.function_(e));Pe.iterable=e=>{var t;return Pe.function_((t=e)===null||t===void 0?void 0:t[Symbol.iterator])};Pe.asyncIterable=e=>{var t;return Pe.function_((t=e)===null||t===void 0?void 0:t[Symbol.asyncIterator])};Pe.generator=e=>{var t,r;return Pe.iterable(e)&&Pe.function_((t=e)===null||t===void 0?void 0:t.next)&&Pe.function_((r=e)===null||r===void 0?void 0:r.throw)};Pe.asyncGenerator=e=>Pe.asyncIterable(e)&&Pe.function_(e.next)&&Pe.function_(e.throw);Pe.nativePromise=e=>hi(\"Promise\")(e);var lXe=e=>{var t,r;return Pe.function_((t=e)===null||t===void 0?void 0:t.then)&&Pe.function_((r=e)===null||r===void 0?void 0:r.catch)};Pe.promise=e=>Pe.nativePromise(e)||lXe(e);Pe.generatorFunction=hi(\"GeneratorFunction\");Pe.asyncGeneratorFunction=e=>U2(e)===\"AsyncGeneratorFunction\";Pe.asyncFunction=e=>U2(e)===\"AsyncFunction\";Pe.boundFunction=e=>Pe.function_(e)&&!e.hasOwnProperty(\"prototype\");Pe.regExp=hi(\"RegExp\");Pe.date=hi(\"Date\");Pe.error=hi(\"Error\");Pe.map=e=>hi(\"Map\")(e);Pe.set=e=>hi(\"Set\")(e);Pe.weakMap=e=>hi(\"WeakMap\")(e);Pe.weakSet=e=>hi(\"WeakSet\")(e);Pe.int8Array=hi(\"Int8Array\");Pe.uint8Array=hi(\"Uint8Array\");Pe.uint8ClampedArray=hi(\"Uint8ClampedArray\");Pe.int16Array=hi(\"Int16Array\");Pe.uint16Array=hi(\"Uint16Array\");Pe.int32Array=hi(\"Int32Array\");Pe.uint32Array=hi(\"Uint32Array\");Pe.float32Array=hi(\"Float32Array\");Pe.float64Array=hi(\"Float64Array\");Pe.bigInt64Array=hi(\"BigInt64Array\");Pe.bigUint64Array=hi(\"BigUint64Array\");Pe.arrayBuffer=hi(\"ArrayBuffer\");Pe.sharedArrayBuffer=hi(\"SharedArrayBuffer\");Pe.dataView=hi(\"DataView\");Pe.enumCase=(e,t)=>Object.values(t).includes(e);Pe.directInstanceOf=(e,t)=>Object.getPrototypeOf(e)===t.prototype;Pe.urlInstance=e=>hi(\"URL\")(e);Pe.urlString=e=>{if(!Pe.string(e))return!1;try{return new URL(e),!0}catch{return!1}};Pe.truthy=e=>!!e;Pe.falsy=e=>!e;Pe.nan=e=>Number.isNaN(e);Pe.primitive=e=>Pe.null_(e)||oXe(typeof e);Pe.integer=e=>Number.isInteger(e);Pe.safeInteger=e=>Number.isSafeInteger(e);Pe.plainObject=e=>{if(Vce.call(e)!==\"[object Object]\")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.getPrototypeOf({})};Pe.typedArray=e=>rXe(U2(e));var cXe=e=>Pe.safeInteger(e)&&e>=0;Pe.arrayLike=e=>!Pe.nullOrUndefined(e)&&!Pe.function_(e)&&cXe(e.length);Pe.inRange=(e,t)=>{if(Pe.number(t))return e>=Math.min(0,t)&&e<=Math.max(t,0);if(Pe.array(t)&&t.length===2)return e>=Math.min(...t)&&e<=Math.max(...t);throw new TypeError(`Invalid range: ${JSON.stringify(t)}`)};var uXe=1,fXe=[\"innerHTML\",\"ownerDocument\",\"style\",\"attributes\",\"nodeValue\"];Pe.domElement=e=>Pe.object(e)&&e.nodeType===uXe&&Pe.string(e.nodeName)&&!Pe.plainObject(e)&&fXe.every(t=>t in e);Pe.observable=e=>{var t,r,s,a;return e?e===((r=(t=e)[Symbol.observable])===null||r===void 0?void 0:r.call(t))||e===((a=(s=e)[\"@@observable\"])===null||a===void 0?void 0:a.call(s)):!1};Pe.nodeStream=e=>Pe.object(e)&&Pe.function_(e.pipe)&&!Pe.observable(e);Pe.infinite=e=>e===1/0||e===-1/0;var Yce=e=>t=>Pe.integer(t)&&Math.abs(t%2)===e;Pe.evenInteger=Yce(0);Pe.oddInteger=Yce(1);Pe.emptyArray=e=>Pe.array(e)&&e.length===0;Pe.nonEmptyArray=e=>Pe.array(e)&&e.length>0;Pe.emptyString=e=>Pe.string(e)&&e.length===0;var AXe=e=>Pe.string(e)&&!/\\S/.test(e);Pe.emptyStringOrWhitespace=e=>Pe.emptyString(e)||AXe(e);Pe.nonEmptyString=e=>Pe.string(e)&&e.length>0;Pe.nonEmptyStringAndNotWhitespace=e=>Pe.string(e)&&!Pe.emptyStringOrWhitespace(e);Pe.emptyObject=e=>Pe.object(e)&&!Pe.map(e)&&!Pe.set(e)&&Object.keys(e).length===0;Pe.nonEmptyObject=e=>Pe.object(e)&&!Pe.map(e)&&!Pe.set(e)&&Object.keys(e).length>0;Pe.emptySet=e=>Pe.set(e)&&e.size===0;Pe.nonEmptySet=e=>Pe.set(e)&&e.size>0;Pe.emptyMap=e=>Pe.map(e)&&e.size===0;Pe.nonEmptyMap=e=>Pe.map(e)&&e.size>0;Pe.propertyKey=e=>Pe.any([Pe.string,Pe.number,Pe.symbol],e);Pe.formData=e=>hi(\"FormData\")(e);Pe.urlSearchParams=e=>hi(\"URLSearchParams\")(e);var Kce=(e,t,r)=>{if(!Pe.function_(t))throw new TypeError(`Invalid predicate: ${JSON.stringify(t)}`);if(r.length===0)throw new TypeError(\"Invalid number of values\");return e.call(r,t)};Pe.any=(e,...t)=>(Pe.array(e)?e:[e]).some(s=>Kce(Array.prototype.some,s,t));Pe.all=(e,...t)=>Kce(Array.prototype.every,e,t);var Ht=(e,t,r,s={})=>{if(!e){let{multipleValues:a}=s,n=a?`received values of types ${[...new Set(r.map(c=>`\\`${Pe(c)}\\``))].join(\", \")}`:`received value of type \\`${Pe(r)}\\``;throw new TypeError(`Expected value which is \\`${t}\\`, ${n}.`)}};Np.assert={undefined:e=>Ht(Pe.undefined(e),\"undefined\",e),string:e=>Ht(Pe.string(e),\"string\",e),number:e=>Ht(Pe.number(e),\"number\",e),bigint:e=>Ht(Pe.bigint(e),\"bigint\",e),function_:e=>Ht(Pe.function_(e),\"Function\",e),null_:e=>Ht(Pe.null_(e),\"null\",e),class_:e=>Ht(Pe.class_(e),\"Class\",e),boolean:e=>Ht(Pe.boolean(e),\"boolean\",e),symbol:e=>Ht(Pe.symbol(e),\"symbol\",e),numericString:e=>Ht(Pe.numericString(e),\"string with a number\",e),array:(e,t)=>{Ht(Pe.array(e),\"Array\",e),t&&e.forEach(t)},buffer:e=>Ht(Pe.buffer(e),\"Buffer\",e),blob:e=>Ht(Pe.blob(e),\"Blob\",e),nullOrUndefined:e=>Ht(Pe.nullOrUndefined(e),\"null or undefined\",e),object:e=>Ht(Pe.object(e),\"Object\",e),iterable:e=>Ht(Pe.iterable(e),\"Iterable\",e),asyncIterable:e=>Ht(Pe.asyncIterable(e),\"AsyncIterable\",e),generator:e=>Ht(Pe.generator(e),\"Generator\",e),asyncGenerator:e=>Ht(Pe.asyncGenerator(e),\"AsyncGenerator\",e),nativePromise:e=>Ht(Pe.nativePromise(e),\"native Promise\",e),promise:e=>Ht(Pe.promise(e),\"Promise\",e),generatorFunction:e=>Ht(Pe.generatorFunction(e),\"GeneratorFunction\",e),asyncGeneratorFunction:e=>Ht(Pe.asyncGeneratorFunction(e),\"AsyncGeneratorFunction\",e),asyncFunction:e=>Ht(Pe.asyncFunction(e),\"AsyncFunction\",e),boundFunction:e=>Ht(Pe.boundFunction(e),\"Function\",e),regExp:e=>Ht(Pe.regExp(e),\"RegExp\",e),date:e=>Ht(Pe.date(e),\"Date\",e),error:e=>Ht(Pe.error(e),\"Error\",e),map:e=>Ht(Pe.map(e),\"Map\",e),set:e=>Ht(Pe.set(e),\"Set\",e),weakMap:e=>Ht(Pe.weakMap(e),\"WeakMap\",e),weakSet:e=>Ht(Pe.weakSet(e),\"WeakSet\",e),int8Array:e=>Ht(Pe.int8Array(e),\"Int8Array\",e),uint8Array:e=>Ht(Pe.uint8Array(e),\"Uint8Array\",e),uint8ClampedArray:e=>Ht(Pe.uint8ClampedArray(e),\"Uint8ClampedArray\",e),int16Array:e=>Ht(Pe.int16Array(e),\"Int16Array\",e),uint16Array:e=>Ht(Pe.uint16Array(e),\"Uint16Array\",e),int32Array:e=>Ht(Pe.int32Array(e),\"Int32Array\",e),uint32Array:e=>Ht(Pe.uint32Array(e),\"Uint32Array\",e),float32Array:e=>Ht(Pe.float32Array(e),\"Float32Array\",e),float64Array:e=>Ht(Pe.float64Array(e),\"Float64Array\",e),bigInt64Array:e=>Ht(Pe.bigInt64Array(e),\"BigInt64Array\",e),bigUint64Array:e=>Ht(Pe.bigUint64Array(e),\"BigUint64Array\",e),arrayBuffer:e=>Ht(Pe.arrayBuffer(e),\"ArrayBuffer\",e),sharedArrayBuffer:e=>Ht(Pe.sharedArrayBuffer(e),\"SharedArrayBuffer\",e),dataView:e=>Ht(Pe.dataView(e),\"DataView\",e),enumCase:(e,t)=>Ht(Pe.enumCase(e,t),\"EnumCase\",e),urlInstance:e=>Ht(Pe.urlInstance(e),\"URL\",e),urlString:e=>Ht(Pe.urlString(e),\"string with a URL\",e),truthy:e=>Ht(Pe.truthy(e),\"truthy\",e),falsy:e=>Ht(Pe.falsy(e),\"falsy\",e),nan:e=>Ht(Pe.nan(e),\"NaN\",e),primitive:e=>Ht(Pe.primitive(e),\"primitive\",e),integer:e=>Ht(Pe.integer(e),\"integer\",e),safeInteger:e=>Ht(Pe.safeInteger(e),\"integer\",e),plainObject:e=>Ht(Pe.plainObject(e),\"plain object\",e),typedArray:e=>Ht(Pe.typedArray(e),\"TypedArray\",e),arrayLike:e=>Ht(Pe.arrayLike(e),\"array-like\",e),domElement:e=>Ht(Pe.domElement(e),\"HTMLElement\",e),observable:e=>Ht(Pe.observable(e),\"Observable\",e),nodeStream:e=>Ht(Pe.nodeStream(e),\"Node.js Stream\",e),infinite:e=>Ht(Pe.infinite(e),\"infinite number\",e),emptyArray:e=>Ht(Pe.emptyArray(e),\"empty array\",e),nonEmptyArray:e=>Ht(Pe.nonEmptyArray(e),\"non-empty array\",e),emptyString:e=>Ht(Pe.emptyString(e),\"empty string\",e),emptyStringOrWhitespace:e=>Ht(Pe.emptyStringOrWhitespace(e),\"empty string or whitespace\",e),nonEmptyString:e=>Ht(Pe.nonEmptyString(e),\"non-empty string\",e),nonEmptyStringAndNotWhitespace:e=>Ht(Pe.nonEmptyStringAndNotWhitespace(e),\"non-empty string and not whitespace\",e),emptyObject:e=>Ht(Pe.emptyObject(e),\"empty object\",e),nonEmptyObject:e=>Ht(Pe.nonEmptyObject(e),\"non-empty object\",e),emptySet:e=>Ht(Pe.emptySet(e),\"empty set\",e),nonEmptySet:e=>Ht(Pe.nonEmptySet(e),\"non-empty set\",e),emptyMap:e=>Ht(Pe.emptyMap(e),\"empty map\",e),nonEmptyMap:e=>Ht(Pe.nonEmptyMap(e),\"non-empty map\",e),propertyKey:e=>Ht(Pe.propertyKey(e),\"PropertyKey\",e),formData:e=>Ht(Pe.formData(e),\"FormData\",e),urlSearchParams:e=>Ht(Pe.urlSearchParams(e),\"URLSearchParams\",e),evenInteger:e=>Ht(Pe.evenInteger(e),\"even integer\",e),oddInteger:e=>Ht(Pe.oddInteger(e),\"odd integer\",e),directInstanceOf:(e,t)=>Ht(Pe.directInstanceOf(e,t),\"T\",e),inRange:(e,t)=>Ht(Pe.inRange(e,t),\"in range\",e),any:(e,...t)=>Ht(Pe.any(e,...t),\"predicate returns truthy for any value\",t,{multipleValues:!0}),all:(e,...t)=>Ht(Pe.all(e,...t),\"predicate returns truthy for all values\",t,{multipleValues:!0})};Object.defineProperties(Pe,{class:{value:Pe.class_},function:{value:Pe.function_},null:{value:Pe.null_}});Object.defineProperties(Np.assert,{class:{value:Np.assert.class_},function:{value:Np.assert.function_},null:{value:Np.assert.null_}});Np.default=Pe;LQ.exports=Pe;LQ.exports.default=Pe;LQ.exports.assert=Np.assert});var Jce=G((NNt,F8)=>{\"use strict\";var MQ=class extends Error{constructor(t){super(t||\"Promise was canceled\"),this.name=\"CancelError\"}get isCanceled(){return!0}},UQ=class e{static fn(t){return(...r)=>new e((s,a,n)=>{r.push(n),t(...r).then(s,a)})}constructor(t){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,s)=>{this._reject=s;let a=f=>{this._isPending=!1,r(f)},n=f=>{this._isPending=!1,s(f)},c=f=>{if(!this._isPending)throw new Error(\"The `onCancel` handler was attached after the promise settled.\");this._cancelHandlers.push(f)};return Object.defineProperties(c,{shouldReject:{get:()=>this._rejectOnCancel,set:f=>{this._rejectOnCancel=f}}}),t(a,n,c)})}then(t,r){return this._promise.then(t,r)}catch(t){return this._promise.catch(t)}finally(t){return this._promise.finally(t)}cancel(t){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new MQ(t))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(UQ.prototype,Promise.prototype);F8.exports=UQ;F8.exports.CancelError=MQ});var zce=G((O8,L8)=>{\"use strict\";Object.defineProperty(O8,\"__esModule\",{value:!0});function pXe(e){return e.encrypted}var N8=(e,t)=>{let r;typeof t==\"function\"?r={connect:t}:r=t;let s=typeof r.connect==\"function\",a=typeof r.secureConnect==\"function\",n=typeof r.close==\"function\",c=()=>{s&&r.connect(),pXe(e)&&a&&(e.authorized?r.secureConnect():e.authorizationError||e.once(\"secureConnect\",r.secureConnect)),n&&e.once(\"close\",r.close)};e.writable&&!e.connecting?c():e.connecting?e.once(\"connect\",c):e.destroyed&&n&&r.close(e._hadError)};O8.default=N8;L8.exports=N8;L8.exports.default=N8});var Zce=G((U8,_8)=>{\"use strict\";Object.defineProperty(U8,\"__esModule\",{value:!0});var hXe=zce(),gXe=Number(process.versions.node.split(\".\")[0]),M8=e=>{let t={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};e.timings=t;let r=c=>{let f=c.emit.bind(c);c.emit=(p,...h)=>(p===\"error\"&&(t.error=Date.now(),t.phases.total=t.error-t.start,c.emit=f),f(p,...h))};r(e),e.prependOnceListener(\"abort\",()=>{t.abort=Date.now(),(!t.response||gXe>=13)&&(t.phases.total=Date.now()-t.start)});let s=c=>{t.socket=Date.now(),t.phases.wait=t.socket-t.start;let f=()=>{t.lookup=Date.now(),t.phases.dns=t.lookup-t.socket};c.prependOnceListener(\"lookup\",f),hXe.default(c,{connect:()=>{t.connect=Date.now(),t.lookup===void 0&&(c.removeListener(\"lookup\",f),t.lookup=t.connect,t.phases.dns=t.lookup-t.socket),t.phases.tcp=t.connect-t.lookup},secureConnect:()=>{t.secureConnect=Date.now(),t.phases.tls=t.secureConnect-t.connect}})};e.socket?s(e.socket):e.prependOnceListener(\"socket\",s);let a=()=>{var c;t.upload=Date.now(),t.phases.request=t.upload-(c=t.secureConnect,c??t.connect)};return(typeof e.writableFinished==\"boolean\"?e.writableFinished:e.finished&&e.outputSize===0&&(!e.socket||e.socket.writableLength===0))?a():e.prependOnceListener(\"finish\",a),e.prependOnceListener(\"response\",c=>{t.response=Date.now(),t.phases.firstByte=t.response-t.upload,c.timings=t,r(c),c.prependOnceListener(\"end\",()=>{t.end=Date.now(),t.phases.download=t.end-t.response,t.phases.total=t.end-t.start})}),t};U8.default=M8;_8.exports=M8;_8.exports.default=M8});var iue=G((ONt,G8)=>{\"use strict\";var{V4MAPPED:dXe,ADDRCONFIG:mXe,ALL:nue,promises:{Resolver:Xce},lookup:yXe}=Ie(\"dns\"),{promisify:H8}=Ie(\"util\"),EXe=Ie(\"os\"),dI=Symbol(\"cacheableLookupCreateConnection\"),j8=Symbol(\"cacheableLookupInstance\"),$ce=Symbol(\"expires\"),IXe=typeof nue==\"number\",eue=e=>{if(!(e&&typeof e.createConnection==\"function\"))throw new Error(\"Expected an Agent instance as the first argument\")},CXe=e=>{for(let t of e)t.family!==6&&(t.address=`::ffff:${t.address}`,t.family=6)},tue=()=>{let e=!1,t=!1;for(let r of Object.values(EXe.networkInterfaces()))for(let s of r)if(!s.internal&&(s.family===\"IPv6\"?t=!0:e=!0,e&&t))return{has4:e,has6:t};return{has4:e,has6:t}},wXe=e=>Symbol.iterator in e,rue={ttl:!0},BXe={all:!0},_Q=class{constructor({cache:t=new Map,maxTtl:r=1/0,fallbackDuration:s=3600,errorTtl:a=.15,resolver:n=new Xce,lookup:c=yXe}={}){if(this.maxTtl=r,this.errorTtl=a,this._cache=t,this._resolver=n,this._dnsLookup=H8(c),this._resolver instanceof Xce?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=H8(this._resolver.resolve4.bind(this._resolver)),this._resolve6=H8(this._resolver.resolve6.bind(this._resolver))),this._iface=tue(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,s<1)this._fallback=!1;else{this._fallback=!0;let f=setInterval(()=>{this._hostnamesToFallback.clear()},s*1e3);f.unref&&f.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(t){this.clear(),this._resolver.setServers(t)}get servers(){return this._resolver.getServers()}lookup(t,r,s){if(typeof r==\"function\"?(s=r,r={}):typeof r==\"number\"&&(r={family:r}),!s)throw new Error(\"Callback must be a function.\");this.lookupAsync(t,r).then(a=>{r.all?s(null,a):s(null,a.address,a.family,a.expires,a.ttl)},s)}async lookupAsync(t,r={}){typeof r==\"number\"&&(r={family:r});let s=await this.query(t);if(r.family===6){let a=s.filter(n=>n.family===6);r.hints&dXe&&(IXe&&r.hints&nue||a.length===0)?CXe(s):s=a}else r.family===4&&(s=s.filter(a=>a.family===4));if(r.hints&mXe){let{_iface:a}=this;s=s.filter(n=>n.family===6?a.has6:a.has4)}if(s.length===0){let a=new Error(`cacheableLookup ENOTFOUND ${t}`);throw a.code=\"ENOTFOUND\",a.hostname=t,a}return r.all?s:s[0]}async query(t){let r=await this._cache.get(t);if(!r){let s=this._pending[t];if(s)r=await s;else{let a=this.queryAndCache(t);this._pending[t]=a,r=await a}}return r=r.map(s=>({...s})),r}async _resolve(t){let r=async h=>{try{return await h}catch(E){if(E.code===\"ENODATA\"||E.code===\"ENOTFOUND\")return[];throw E}},[s,a]=await Promise.all([this._resolve4(t,rue),this._resolve6(t,rue)].map(h=>r(h))),n=0,c=0,f=0,p=Date.now();for(let h of s)h.family=4,h.expires=p+h.ttl*1e3,n=Math.max(n,h.ttl);for(let h of a)h.family=6,h.expires=p+h.ttl*1e3,c=Math.max(c,h.ttl);return s.length>0?a.length>0?f=Math.min(n,c):f=n:f=c,{entries:[...s,...a],cacheTtl:f}}async _lookup(t){try{return{entries:await this._dnsLookup(t,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(t,r,s){if(this.maxTtl>0&&s>0){s=Math.min(s,this.maxTtl)*1e3,r[$ce]=Date.now()+s;try{await this._cache.set(t,r,s)}catch(a){this.lookupAsync=async()=>{let n=new Error(\"Cache Error. Please recreate the CacheableLookup instance.\");throw n.cause=a,n}}wXe(this._cache)&&this._tick(s)}}async queryAndCache(t){if(this._hostnamesToFallback.has(t))return this._dnsLookup(t,BXe);try{let r=await this._resolve(t);r.entries.length===0&&this._fallback&&(r=await this._lookup(t),r.entries.length!==0&&this._hostnamesToFallback.add(t));let s=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(t,r.entries,s),delete this._pending[t],r.entries}catch(r){throw delete this._pending[t],r}}_tick(t){let r=this._nextRemovalTime;(!r||t<r)&&(clearTimeout(this._removalTimeout),this._nextRemovalTime=t,this._removalTimeout=setTimeout(()=>{this._nextRemovalTime=!1;let s=1/0,a=Date.now();for(let[n,c]of this._cache){let f=c[$ce];a>=f?this._cache.delete(n):f<s&&(s=f)}s!==1/0&&this._tick(s-a)},t),this._removalTimeout.unref&&this._removalTimeout.unref())}install(t){if(eue(t),dI in t)throw new Error(\"CacheableLookup has been already installed\");t[dI]=t.createConnection,t[j8]=this,t.createConnection=(r,s)=>(\"lookup\"in r||(r.lookup=this.lookup),t[dI](r,s))}uninstall(t){if(eue(t),t[dI]){if(t[j8]!==this)throw new Error(\"The agent is not owned by this CacheableLookup instance\");t.createConnection=t[dI],delete t[dI],delete t[j8]}}updateInterfaceInfo(){let{_iface:t}=this;this._iface=tue(),(t.has4&&!this._iface.has4||t.has6&&!this._iface.has6)&&this._cache.clear()}clear(t){if(t){this._cache.delete(t);return}this._cache.clear()}};G8.exports=_Q;G8.exports.default=_Q});var aue=G((LNt,q8)=>{\"use strict\";var vXe=typeof URL>\"u\"?Ie(\"url\").URL:URL,SXe=\"text/plain\",DXe=\"us-ascii\",sue=(e,t)=>t.some(r=>r instanceof RegExp?r.test(e):r===e),bXe=(e,{stripHash:t})=>{let r=e.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${e}`);let s=r[1].split(\";\"),a=r[2],n=t?\"\":r[3],c=!1;s[s.length-1]===\"base64\"&&(s.pop(),c=!0);let f=(s.shift()||\"\").toLowerCase(),h=[...s.map(E=>{let[C,S=\"\"]=E.split(\"=\").map(x=>x.trim());return C===\"charset\"&&(S=S.toLowerCase(),S===DXe)?\"\":`${C}${S?`=${S}`:\"\"}`}).filter(Boolean)];return c&&h.push(\"base64\"),(h.length!==0||f&&f!==SXe)&&h.unshift(f),`data:${h.join(\";\")},${c?a.trim():a}${n?`#${n}`:\"\"}`},oue=(e,t)=>{if(t={defaultProtocol:\"http:\",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...t},Reflect.has(t,\"normalizeHttps\"))throw new Error(\"options.normalizeHttps is renamed to options.forceHttp\");if(Reflect.has(t,\"normalizeHttp\"))throw new Error(\"options.normalizeHttp is renamed to options.forceHttps\");if(Reflect.has(t,\"stripFragment\"))throw new Error(\"options.stripFragment is renamed to options.stripHash\");if(e=e.trim(),/^data:/i.test(e))return bXe(e,t);let r=e.startsWith(\"//\");!r&&/^\\.*\\//.test(e)||(e=e.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//,t.defaultProtocol));let a=new vXe(e);if(t.forceHttp&&t.forceHttps)throw new Error(\"The `forceHttp` and `forceHttps` options cannot be used together\");if(t.forceHttp&&a.protocol===\"https:\"&&(a.protocol=\"http:\"),t.forceHttps&&a.protocol===\"http:\"&&(a.protocol=\"https:\"),t.stripAuthentication&&(a.username=\"\",a.password=\"\"),t.stripHash&&(a.hash=\"\"),a.pathname&&(a.pathname=a.pathname.replace(/((?!:).|^)\\/{2,}/g,(n,c)=>/^(?!\\/)/g.test(c)?`${c}/`:\"/\")),a.pathname&&(a.pathname=decodeURI(a.pathname)),t.removeDirectoryIndex===!0&&(t.removeDirectoryIndex=[/^index\\.[a-z]+$/]),Array.isArray(t.removeDirectoryIndex)&&t.removeDirectoryIndex.length>0){let n=a.pathname.split(\"/\"),c=n[n.length-1];sue(c,t.removeDirectoryIndex)&&(n=n.slice(0,n.length-1),a.pathname=n.slice(1).join(\"/\")+\"/\")}if(a.hostname&&(a.hostname=a.hostname.replace(/\\.$/,\"\"),t.stripWWW&&/^www\\.([a-z\\-\\d]{2,63})\\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\\./,\"\"))),Array.isArray(t.removeQueryParameters))for(let n of[...a.searchParams.keys()])sue(n,t.removeQueryParameters)&&a.searchParams.delete(n);return t.sortQueryParameters&&a.searchParams.sort(),t.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\\/$/,\"\")),e=a.toString(),(t.removeTrailingSlash||a.pathname===\"/\")&&a.hash===\"\"&&(e=e.replace(/\\/$/,\"\")),r&&!t.normalizeProtocol&&(e=e.replace(/^http:\\/\\//,\"//\")),t.stripProtocol&&(e=e.replace(/^(?:https?:)?\\/\\//,\"\")),e};q8.exports=oue;q8.exports.default=oue});var uue=G((MNt,cue)=>{cue.exports=lue;function lue(e,t){if(e&&t)return lue(e)(t);if(typeof e!=\"function\")throw new TypeError(\"need wrapper function\");return Object.keys(e).forEach(function(s){r[s]=e[s]}),r;function r(){for(var s=new Array(arguments.length),a=0;a<s.length;a++)s[a]=arguments[a];var n=e.apply(this,s),c=s[s.length-1];return typeof n==\"function\"&&n!==c&&Object.keys(c).forEach(function(f){n[f]=c[f]}),n}}});var V8=G((UNt,W8)=>{var fue=uue();W8.exports=fue(HQ);W8.exports.strict=fue(Aue);HQ.proto=HQ(function(){Object.defineProperty(Function.prototype,\"once\",{value:function(){return HQ(this)},configurable:!0}),Object.defineProperty(Function.prototype,\"onceStrict\",{value:function(){return Aue(this)},configurable:!0})});function HQ(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function Aue(e){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},r=e.name||\"Function wrapped with `once`\";return t.onceError=r+\" shouldn't be called more than once\",t.called=!1,t}});var Y8=G((_Nt,hue)=>{var PXe=V8(),xXe=function(){},kXe=function(e){return e.setHeader&&typeof e.abort==\"function\"},QXe=function(e){return e.stdio&&Array.isArray(e.stdio)&&e.stdio.length===3},pue=function(e,t,r){if(typeof t==\"function\")return pue(e,null,t);t||(t={}),r=PXe(r||xXe);var s=e._writableState,a=e._readableState,n=t.readable||t.readable!==!1&&e.readable,c=t.writable||t.writable!==!1&&e.writable,f=function(){e.writable||p()},p=function(){c=!1,n||r.call(e)},h=function(){n=!1,c||r.call(e)},E=function(I){r.call(e,I?new Error(\"exited with error code: \"+I):null)},C=function(I){r.call(e,I)},S=function(){if(n&&!(a&&a.ended))return r.call(e,new Error(\"premature close\"));if(c&&!(s&&s.ended))return r.call(e,new Error(\"premature close\"))},x=function(){e.req.on(\"finish\",p)};return kXe(e)?(e.on(\"complete\",p),e.on(\"abort\",S),e.req?x():e.on(\"request\",x)):c&&!s&&(e.on(\"end\",f),e.on(\"close\",f)),QXe(e)&&e.on(\"exit\",E),e.on(\"end\",h),e.on(\"finish\",p),t.error!==!1&&e.on(\"error\",C),e.on(\"close\",S),function(){e.removeListener(\"complete\",p),e.removeListener(\"abort\",S),e.removeListener(\"request\",x),e.req&&e.req.removeListener(\"finish\",p),e.removeListener(\"end\",f),e.removeListener(\"close\",f),e.removeListener(\"finish\",p),e.removeListener(\"exit\",E),e.removeListener(\"end\",h),e.removeListener(\"error\",C),e.removeListener(\"close\",S)}};hue.exports=pue});var mue=G((HNt,due)=>{var RXe=V8(),TXe=Y8(),K8=Ie(\"fs\"),_2=function(){},FXe=/^v?\\.0/.test(process.version),jQ=function(e){return typeof e==\"function\"},NXe=function(e){return!FXe||!K8?!1:(e instanceof(K8.ReadStream||_2)||e instanceof(K8.WriteStream||_2))&&jQ(e.close)},OXe=function(e){return e.setHeader&&jQ(e.abort)},LXe=function(e,t,r,s){s=RXe(s);var a=!1;e.on(\"close\",function(){a=!0}),TXe(e,{readable:t,writable:r},function(c){if(c)return s(c);a=!0,s()});var n=!1;return function(c){if(!a&&!n){if(n=!0,NXe(e))return e.close(_2);if(OXe(e))return e.abort();if(jQ(e.destroy))return e.destroy();s(c||new Error(\"stream was destroyed\"))}}},gue=function(e){e()},MXe=function(e,t){return e.pipe(t)},UXe=function(){var e=Array.prototype.slice.call(arguments),t=jQ(e[e.length-1]||_2)&&e.pop()||_2;if(Array.isArray(e[0])&&(e=e[0]),e.length<2)throw new Error(\"pump requires two streams per minimum\");var r,s=e.map(function(a,n){var c=n<e.length-1,f=n>0;return LXe(a,c,f,function(p){r||(r=p),p&&s.forEach(gue),!c&&(s.forEach(gue),t(r))})});return e.reduce(MXe)};due.exports=UXe});var Eue=G((jNt,yue)=>{\"use strict\";var{PassThrough:_Xe}=Ie(\"stream\");yue.exports=e=>{e={...e};let{array:t}=e,{encoding:r}=e,s=r===\"buffer\",a=!1;t?a=!(r||s):r=r||\"utf8\",s&&(r=null);let n=new _Xe({objectMode:a});r&&n.setEncoding(r);let c=0,f=[];return n.on(\"data\",p=>{f.push(p),a?c=f.length:c+=p.length}),n.getBufferedValue=()=>t?f:s?Buffer.concat(f,c):f.join(\"\"),n.getBufferedLength=()=>c,n}});var Iue=G((GNt,mI)=>{\"use strict\";var HXe=mue(),jXe=Eue(),GQ=class extends Error{constructor(){super(\"maxBuffer exceeded\"),this.name=\"MaxBufferError\"}};async function qQ(e,t){if(!e)return Promise.reject(new Error(\"Expected a stream\"));t={maxBuffer:1/0,...t};let{maxBuffer:r}=t,s;return await new Promise((a,n)=>{let c=f=>{f&&(f.bufferedData=s.getBufferedValue()),n(f)};s=HXe(e,jXe(t),f=>{if(f){c(f);return}a()}),s.on(\"data\",()=>{s.getBufferedLength()>r&&c(new GQ)})}),s.getBufferedValue()}mI.exports=qQ;mI.exports.default=qQ;mI.exports.buffer=(e,t)=>qQ(e,{...t,encoding:\"buffer\"});mI.exports.array=(e,t)=>qQ(e,{...t,array:!0});mI.exports.MaxBufferError=GQ});var wue=G((WNt,Cue)=>{\"use strict\";var GXe=new Set([200,203,204,206,300,301,308,404,405,410,414,501]),qXe=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),WXe=new Set([500,502,503,504]),VXe={date:!0,connection:!0,\"keep-alive\":!0,\"proxy-authenticate\":!0,\"proxy-authorization\":!0,te:!0,trailer:!0,\"transfer-encoding\":!0,upgrade:!0},YXe={\"content-length\":!0,\"content-encoding\":!0,\"transfer-encoding\":!0,\"content-range\":!0};function tm(e){let t=parseInt(e,10);return isFinite(t)?t:0}function KXe(e){return e?WXe.has(e.status):!0}function J8(e){let t={};if(!e)return t;let r=e.trim().split(/,/);for(let s of r){let[a,n]=s.split(/=/,2);t[a.trim()]=n===void 0?!0:n.trim().replace(/^\"|\"$/g,\"\")}return t}function JXe(e){let t=[];for(let r in e){let s=e[r];t.push(s===!0?r:r+\"=\"+s)}if(t.length)return t.join(\", \")}Cue.exports=class{constructor(t,r,{shared:s,cacheHeuristic:a,immutableMinTimeToLive:n,ignoreCargoCult:c,_fromObject:f}={}){if(f){this._fromObject(f);return}if(!r||!r.headers)throw Error(\"Response headers missing\");this._assertRequestHasHeaders(t),this._responseTime=this.now(),this._isShared=s!==!1,this._cacheHeuristic=a!==void 0?a:.1,this._immutableMinTtl=n!==void 0?n:24*3600*1e3,this._status=\"status\"in r?r.status:200,this._resHeaders=r.headers,this._rescc=J8(r.headers[\"cache-control\"]),this._method=\"method\"in t?t.method:\"GET\",this._url=t.url,this._host=t.headers.host,this._noAuthorization=!t.headers.authorization,this._reqHeaders=r.headers.vary?t.headers:null,this._reqcc=J8(t.headers[\"cache-control\"]),c&&\"pre-check\"in this._rescc&&\"post-check\"in this._rescc&&(delete this._rescc[\"pre-check\"],delete this._rescc[\"post-check\"],delete this._rescc[\"no-cache\"],delete this._rescc[\"no-store\"],delete this._rescc[\"must-revalidate\"],this._resHeaders=Object.assign({},this._resHeaders,{\"cache-control\":JXe(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),r.headers[\"cache-control\"]==null&&/no-cache/.test(r.headers.pragma)&&(this._rescc[\"no-cache\"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc[\"no-store\"]&&(this._method===\"GET\"||this._method===\"HEAD\"||this._method===\"POST\"&&this._hasExplicitExpiration())&&qXe.has(this._status)&&!this._rescc[\"no-store\"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc[\"max-age\"]||this._isShared&&this._rescc[\"s-maxage\"]||this._rescc.public||GXe.has(this._status)))}_hasExplicitExpiration(){return this._isShared&&this._rescc[\"s-maxage\"]||this._rescc[\"max-age\"]||this._resHeaders.expires}_assertRequestHasHeaders(t){if(!t||!t.headers)throw Error(\"Request headers missing\")}satisfiesWithoutRevalidation(t){this._assertRequestHasHeaders(t);let r=J8(t.headers[\"cache-control\"]);return r[\"no-cache\"]||/no-cache/.test(t.headers.pragma)||r[\"max-age\"]&&this.age()>r[\"max-age\"]||r[\"min-fresh\"]&&this.timeToLive()<1e3*r[\"min-fresh\"]||this.stale()&&!(r[\"max-stale\"]&&!this._rescc[\"must-revalidate\"]&&(r[\"max-stale\"]===!0||r[\"max-stale\"]>this.age()-this.maxAge()))?!1:this._requestMatches(t,!1)}_requestMatches(t,r){return(!this._url||this._url===t.url)&&this._host===t.headers.host&&(!t.method||this._method===t.method||r&&t.method===\"HEAD\")&&this._varyMatches(t)}_allowsStoringAuthenticated(){return this._rescc[\"must-revalidate\"]||this._rescc.public||this._rescc[\"s-maxage\"]}_varyMatches(t){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary===\"*\")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\\s*,\\s*/);for(let s of r)if(t.headers[s]!==this._reqHeaders[s])return!1;return!0}_copyWithoutHopByHopHeaders(t){let r={};for(let s in t)VXe[s]||(r[s]=t[s]);if(t.connection){let s=t.connection.trim().split(/\\s*,\\s*/);for(let a of s)delete r[a]}if(r.warning){let s=r.warning.split(/,/).filter(a=>!/^\\s*1[0-9][0-9]/.test(a));s.length?r.warning=s.join(\",\").trim():delete r.warning}return r}responseHeaders(){let t=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(t.warning=(t.warning?`${t.warning}, `:\"\")+'113 - \"rfc7234 5.5.4\"'),t.age=`${Math.round(r)}`,t.date=new Date(this.now()).toUTCString(),t}date(){let t=Date.parse(this._resHeaders.date);return isFinite(t)?t:this._responseTime}age(){let t=this._ageValue(),r=(this.now()-this._responseTime)/1e3;return t+r}_ageValue(){return tm(this._resHeaders.age)}maxAge(){if(!this.storable()||this._rescc[\"no-cache\"]||this._isShared&&this._resHeaders[\"set-cookie\"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary===\"*\")return 0;if(this._isShared){if(this._rescc[\"proxy-revalidate\"])return 0;if(this._rescc[\"s-maxage\"])return tm(this._rescc[\"s-maxage\"])}if(this._rescc[\"max-age\"])return tm(this._rescc[\"max-age\"]);let t=this._rescc.immutable?this._immutableMinTtl:0,r=this.date();if(this._resHeaders.expires){let s=Date.parse(this._resHeaders.expires);return Number.isNaN(s)||s<r?0:Math.max(t,(s-r)/1e3)}if(this._resHeaders[\"last-modified\"]){let s=Date.parse(this._resHeaders[\"last-modified\"]);if(isFinite(s)&&r>s)return Math.max(t,(r-s)/1e3*this._cacheHeuristic)}return t}timeToLive(){let t=this.maxAge()-this.age(),r=t+tm(this._rescc[\"stale-if-error\"]),s=t+tm(this._rescc[\"stale-while-revalidate\"]);return Math.max(0,t,r,s)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+tm(this._rescc[\"stale-if-error\"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+tm(this._rescc[\"stale-while-revalidate\"])>this.age()}static fromObject(t){return new this(void 0,void 0,{_fromObject:t})}_fromObject(t){if(this._responseTime)throw Error(\"Reinitialized\");if(!t||t.v!==1)throw Error(\"Invalid serialization\");this._responseTime=t.t,this._isShared=t.sh,this._cacheHeuristic=t.ch,this._immutableMinTtl=t.imm!==void 0?t.imm:24*3600*1e3,this._status=t.st,this._resHeaders=t.resh,this._rescc=t.rescc,this._method=t.m,this._url=t.u,this._host=t.h,this._noAuthorization=t.a,this._reqHeaders=t.reqh,this._reqcc=t.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(t){this._assertRequestHasHeaders(t);let r=this._copyWithoutHopByHopHeaders(t.headers);if(delete r[\"if-range\"],!this._requestMatches(t,!0)||!this.storable())return delete r[\"if-none-match\"],delete r[\"if-modified-since\"],r;if(this._resHeaders.etag&&(r[\"if-none-match\"]=r[\"if-none-match\"]?`${r[\"if-none-match\"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r[\"accept-ranges\"]||r[\"if-match\"]||r[\"if-unmodified-since\"]||this._method&&this._method!=\"GET\"){if(delete r[\"if-modified-since\"],r[\"if-none-match\"]){let a=r[\"if-none-match\"].split(/,/).filter(n=>!/^\\s*W\\//.test(n));a.length?r[\"if-none-match\"]=a.join(\",\").trim():delete r[\"if-none-match\"]}}else this._resHeaders[\"last-modified\"]&&!r[\"if-modified-since\"]&&(r[\"if-modified-since\"]=this._resHeaders[\"last-modified\"]);return r}revalidatedPolicy(t,r){if(this._assertRequestHasHeaders(t),this._useStaleIfError()&&KXe(r))return{modified:!1,matches:!1,policy:this};if(!r||!r.headers)throw Error(\"Response headers missing\");let s=!1;if(r.status!==void 0&&r.status!=304?s=!1:r.headers.etag&&!/^\\s*W\\//.test(r.headers.etag)?s=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\\s*W\\//,\"\")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?s=this._resHeaders.etag.replace(/^\\s*W\\//,\"\")===r.headers.etag.replace(/^\\s*W\\//,\"\"):this._resHeaders[\"last-modified\"]?s=this._resHeaders[\"last-modified\"]===r.headers[\"last-modified\"]:!this._resHeaders.etag&&!this._resHeaders[\"last-modified\"]&&!r.headers.etag&&!r.headers[\"last-modified\"]&&(s=!0),!s)return{policy:new this.constructor(t,r),modified:r.status!=304,matches:!1};let a={};for(let c in this._resHeaders)a[c]=c in r.headers&&!YXe[c]?r.headers[c]:this._resHeaders[c];let n=Object.assign({},r,{status:this._status,method:this._method,headers:a});return{policy:new this.constructor(t,n,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl}),modified:!1,matches:!0}}}});var WQ=G((VNt,Bue)=>{\"use strict\";Bue.exports=e=>{let t={};for(let[r,s]of Object.entries(e))t[r.toLowerCase()]=s;return t}});var Sue=G((YNt,vue)=>{\"use strict\";var zXe=Ie(\"stream\").Readable,ZXe=WQ(),z8=class extends zXe{constructor(t,r,s,a){if(typeof t!=\"number\")throw new TypeError(\"Argument `statusCode` should be a number\");if(typeof r!=\"object\")throw new TypeError(\"Argument `headers` should be an object\");if(!(s instanceof Buffer))throw new TypeError(\"Argument `body` should be a buffer\");if(typeof a!=\"string\")throw new TypeError(\"Argument `url` should be a string\");super(),this.statusCode=t,this.headers=ZXe(r),this.body=s,this.url=a}_read(){this.push(this.body),this.push(null)}};vue.exports=z8});var bue=G((KNt,Due)=>{\"use strict\";var XXe=[\"destroy\",\"setTimeout\",\"socket\",\"headers\",\"trailers\",\"rawHeaders\",\"statusCode\",\"httpVersion\",\"httpVersionMinor\",\"httpVersionMajor\",\"rawTrailers\",\"statusMessage\"];Due.exports=(e,t)=>{let r=new Set(Object.keys(e).concat(XXe));for(let s of r)s in t||(t[s]=typeof e[s]==\"function\"?e[s].bind(e):e[s])}});var xue=G((JNt,Pue)=>{\"use strict\";var $Xe=Ie(\"stream\").PassThrough,e$e=bue(),t$e=e=>{if(!(e&&e.pipe))throw new TypeError(\"Parameter `response` must be a response stream.\");let t=new $Xe;return e$e(e,t),e.pipe(t)};Pue.exports=t$e});var kue=G(Z8=>{Z8.stringify=function e(t){if(typeof t>\"u\")return t;if(t&&Buffer.isBuffer(t))return JSON.stringify(\":base64:\"+t.toString(\"base64\"));if(t&&t.toJSON&&(t=t.toJSON()),t&&typeof t==\"object\"){var r=\"\",s=Array.isArray(t);r=s?\"[\":\"{\";var a=!0;for(var n in t){var c=typeof t[n]==\"function\"||!s&&typeof t[n]>\"u\";Object.hasOwnProperty.call(t,n)&&!c&&(a||(r+=\",\"),a=!1,s?t[n]==null?r+=\"null\":r+=e(t[n]):t[n]!==void 0&&(r+=e(n)+\":\"+e(t[n])))}return r+=s?\"]\":\"}\",r}else return typeof t==\"string\"?JSON.stringify(/^:/.test(t)?\":\"+t:t):typeof t>\"u\"?\"null\":JSON.stringify(t)};Z8.parse=function(e){return JSON.parse(e,function(t,r){return typeof r==\"string\"?/^:base64:/.test(r)?Buffer.from(r.substring(8),\"base64\"):/^:/.test(r)?r.substring(1):r:r})}});var Fue=G((ZNt,Tue)=>{\"use strict\";var r$e=Ie(\"events\"),Que=kue(),n$e=e=>{let t={redis:\"@keyv/redis\",rediss:\"@keyv/redis\",mongodb:\"@keyv/mongo\",mongo:\"@keyv/mongo\",sqlite:\"@keyv/sqlite\",postgresql:\"@keyv/postgres\",postgres:\"@keyv/postgres\",mysql:\"@keyv/mysql\",etcd:\"@keyv/etcd\",offline:\"@keyv/offline\",tiered:\"@keyv/tiered\"};if(e.adapter||e.uri){let r=e.adapter||/^[^:+]*/.exec(e.uri)[0];return new(Ie(t[r]))(e)}return new Map},Rue=[\"sqlite\",\"postgres\",\"mysql\",\"mongo\",\"redis\",\"tiered\"],X8=class extends r$e{constructor(t,{emitErrors:r=!0,...s}={}){if(super(),this.opts={namespace:\"keyv\",serialize:Que.stringify,deserialize:Que.parse,...typeof t==\"string\"?{uri:t}:t,...s},!this.opts.store){let n={...this.opts};this.opts.store=n$e(n)}if(this.opts.compression){let n=this.opts.compression;this.opts.serialize=n.serialize.bind(n),this.opts.deserialize=n.deserialize.bind(n)}typeof this.opts.store.on==\"function\"&&r&&this.opts.store.on(\"error\",n=>this.emit(\"error\",n)),this.opts.store.namespace=this.opts.namespace;let a=n=>async function*(){for await(let[c,f]of typeof n==\"function\"?n(this.opts.store.namespace):n){let p=await this.opts.deserialize(f);if(!(this.opts.store.namespace&&!c.includes(this.opts.store.namespace))){if(typeof p.expires==\"number\"&&Date.now()>p.expires){this.delete(c);continue}yield[this._getKeyUnprefix(c),p.value]}}};typeof this.opts.store[Symbol.iterator]==\"function\"&&this.opts.store instanceof Map?this.iterator=a(this.opts.store):typeof this.opts.store.iterator==\"function\"&&this.opts.store.opts&&this._checkIterableAdaptar()&&(this.iterator=a(this.opts.store.iterator.bind(this.opts.store)))}_checkIterableAdaptar(){return Rue.includes(this.opts.store.opts.dialect)||Rue.findIndex(t=>this.opts.store.opts.url.includes(t))>=0}_getKeyPrefix(t){return`${this.opts.namespace}:${t}`}_getKeyPrefixArray(t){return t.map(r=>`${this.opts.namespace}:${r}`)}_getKeyUnprefix(t){return t.split(\":\").splice(1).join(\":\")}get(t,r){let{store:s}=this.opts,a=Array.isArray(t),n=a?this._getKeyPrefixArray(t):this._getKeyPrefix(t);if(a&&s.getMany===void 0){let c=[];for(let f of n)c.push(Promise.resolve().then(()=>s.get(f)).then(p=>typeof p==\"string\"?this.opts.deserialize(p):this.opts.compression?this.opts.deserialize(p):p).then(p=>{if(p!=null)return typeof p.expires==\"number\"&&Date.now()>p.expires?this.delete(f).then(()=>{}):r&&r.raw?p:p.value}));return Promise.allSettled(c).then(f=>{let p=[];for(let h of f)p.push(h.value);return p})}return Promise.resolve().then(()=>a?s.getMany(n):s.get(n)).then(c=>typeof c==\"string\"?this.opts.deserialize(c):this.opts.compression?this.opts.deserialize(c):c).then(c=>{if(c!=null)return a?c.map((f,p)=>{if(typeof f==\"string\"&&(f=this.opts.deserialize(f)),f!=null){if(typeof f.expires==\"number\"&&Date.now()>f.expires){this.delete(t[p]).then(()=>{});return}return r&&r.raw?f:f.value}}):typeof c.expires==\"number\"&&Date.now()>c.expires?this.delete(t).then(()=>{}):r&&r.raw?c:c.value})}set(t,r,s){let a=this._getKeyPrefix(t);typeof s>\"u\"&&(s=this.opts.ttl),s===0&&(s=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let c=typeof s==\"number\"?Date.now()+s:null;return typeof r==\"symbol\"&&this.emit(\"error\",\"symbol cannot be serialized\"),r={value:r,expires:c},this.opts.serialize(r)}).then(c=>n.set(a,c,s)).then(()=>!0)}delete(t){let{store:r}=this.opts;if(Array.isArray(t)){let a=this._getKeyPrefixArray(t);if(r.deleteMany===void 0){let n=[];for(let c of a)n.push(r.delete(c));return Promise.allSettled(n).then(c=>c.every(f=>f.value===!0))}return Promise.resolve().then(()=>r.deleteMany(a))}let s=this._getKeyPrefix(t);return Promise.resolve().then(()=>r.delete(s))}clear(){let{store:t}=this.opts;return Promise.resolve().then(()=>t.clear())}has(t){let r=this._getKeyPrefix(t),{store:s}=this.opts;return Promise.resolve().then(async()=>typeof s.has==\"function\"?s.has(r):await s.get(r)!==void 0)}disconnect(){let{store:t}=this.opts;if(typeof t.disconnect==\"function\")return t.disconnect()}};Tue.exports=X8});var Lue=G(($Nt,Oue)=>{\"use strict\";var i$e=Ie(\"events\"),VQ=Ie(\"url\"),s$e=aue(),o$e=Iue(),$8=wue(),Nue=Sue(),a$e=WQ(),l$e=xue(),c$e=Fue(),H2=class e{constructor(t,r){if(typeof t!=\"function\")throw new TypeError(\"Parameter `request` must be a function\");return this.cache=new c$e({uri:typeof r==\"string\"&&r,store:typeof r!=\"string\"&&r,namespace:\"cacheable-request\"}),this.createCacheableRequest(t)}createCacheableRequest(t){return(r,s)=>{let a;if(typeof r==\"string\")a=eH(VQ.parse(r)),r={};else if(r instanceof VQ.URL)a=eH(VQ.parse(r.toString())),r={};else{let[C,...S]=(r.path||\"\").split(\"?\"),x=S.length>0?`?${S.join(\"?\")}`:\"\";a=eH({...r,pathname:C,search:x})}r={headers:{},method:\"GET\",cache:!0,strictTtl:!1,automaticFailover:!1,...r,...u$e(a)},r.headers=a$e(r.headers);let n=new i$e,c=s$e(VQ.format(a),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),f=`${r.method}:${c}`,p=!1,h=!1,E=C=>{h=!0;let S=!1,x,I=new Promise(O=>{x=()=>{S||(S=!0,O())}}),T=O=>{if(p&&!C.forceRefresh){O.status=O.statusCode;let Y=$8.fromObject(p.cachePolicy).revalidatedPolicy(C,O);if(!Y.modified){let te=Y.policy.responseHeaders();O=new Nue(p.statusCode,te,p.body,p.url),O.cachePolicy=Y.policy,O.fromCache=!0}}O.fromCache||(O.cachePolicy=new $8(C,O,C),O.fromCache=!1);let U;C.cache&&O.cachePolicy.storable()?(U=l$e(O),(async()=>{try{let Y=o$e.buffer(O);if(await Promise.race([I,new Promise(ae=>O.once(\"end\",ae))]),S)return;let te=await Y,ie={cachePolicy:O.cachePolicy.toObject(),url:O.url,statusCode:O.fromCache?p.statusCode:O.statusCode,body:te},ue=C.strictTtl?O.cachePolicy.timeToLive():void 0;C.maxTtl&&(ue=ue?Math.min(ue,C.maxTtl):C.maxTtl),await this.cache.set(f,ie,ue)}catch(Y){n.emit(\"error\",new e.CacheError(Y))}})()):C.cache&&p&&(async()=>{try{await this.cache.delete(f)}catch(Y){n.emit(\"error\",new e.CacheError(Y))}})(),n.emit(\"response\",U||O),typeof s==\"function\"&&s(U||O)};try{let O=t(C,T);O.once(\"error\",x),O.once(\"abort\",x),n.emit(\"request\",O)}catch(O){n.emit(\"error\",new e.RequestError(O))}};return(async()=>{let C=async x=>{await Promise.resolve();let I=x.cache?await this.cache.get(f):void 0;if(typeof I>\"u\")return E(x);let T=$8.fromObject(I.cachePolicy);if(T.satisfiesWithoutRevalidation(x)&&!x.forceRefresh){let O=T.responseHeaders(),U=new Nue(I.statusCode,O,I.body,I.url);U.cachePolicy=T,U.fromCache=!0,n.emit(\"response\",U),typeof s==\"function\"&&s(U)}else p=I,x.headers=T.revalidationHeaders(x),E(x)},S=x=>n.emit(\"error\",new e.CacheError(x));this.cache.once(\"error\",S),n.on(\"response\",()=>this.cache.removeListener(\"error\",S));try{await C(r)}catch(x){r.automaticFailover&&!h&&E(r),n.emit(\"error\",new e.CacheError(x))}})(),n}}};function u$e(e){let t={...e};return t.path=`${e.pathname||\"/\"}${e.search||\"\"}`,delete t.pathname,delete t.search,t}function eH(e){return{protocol:e.protocol,auth:e.auth,hostname:e.hostname||e.host||\"localhost\",port:e.port,pathname:e.pathname,search:e.search}}H2.RequestError=class extends Error{constructor(e){super(e.message),this.name=\"RequestError\",Object.assign(this,e)}};H2.CacheError=class extends Error{constructor(e){super(e.message),this.name=\"CacheError\",Object.assign(this,e)}};Oue.exports=H2});var Uue=G((rOt,Mue)=>{\"use strict\";var f$e=[\"aborted\",\"complete\",\"headers\",\"httpVersion\",\"httpVersionMinor\",\"httpVersionMajor\",\"method\",\"rawHeaders\",\"rawTrailers\",\"setTimeout\",\"socket\",\"statusCode\",\"statusMessage\",\"trailers\",\"url\"];Mue.exports=(e,t)=>{if(t._readableState.autoDestroy)throw new Error(\"The second stream must have the `autoDestroy` option set to `false`\");let r=new Set(Object.keys(e).concat(f$e)),s={};for(let a of r)a in t||(s[a]={get(){let n=e[a];return typeof n==\"function\"?n.bind(e):n},set(n){e[a]=n},enumerable:!0,configurable:!1});return Object.defineProperties(t,s),e.once(\"aborted\",()=>{t.destroy(),t.emit(\"aborted\")}),e.once(\"close\",()=>{e.complete&&t.readable?t.once(\"end\",()=>{t.emit(\"close\")}):t.emit(\"close\")}),t}});var Hue=G((nOt,_ue)=>{\"use strict\";var{Transform:A$e,PassThrough:p$e}=Ie(\"stream\"),tH=Ie(\"zlib\"),h$e=Uue();_ue.exports=e=>{let t=(e.headers[\"content-encoding\"]||\"\").toLowerCase();if(![\"gzip\",\"deflate\",\"br\"].includes(t))return e;let r=t===\"br\";if(r&&typeof tH.createBrotliDecompress!=\"function\")return e.destroy(new Error(\"Brotli is not supported on Node.js < 12\")),e;let s=!0,a=new A$e({transform(f,p,h){s=!1,h(null,f)},flush(f){f()}}),n=new p$e({autoDestroy:!1,destroy(f,p){e.destroy(),p(f)}}),c=r?tH.createBrotliDecompress():tH.createUnzip();return c.once(\"error\",f=>{if(s&&!e.readable){n.end();return}n.destroy(f)}),h$e(e,n),e.pipe(a).pipe(c).pipe(n),n}});var nH=G((iOt,jue)=>{\"use strict\";var rH=class{constructor(t={}){if(!(t.maxSize&&t.maxSize>0))throw new TypeError(\"`maxSize` must be a number greater than 0\");this.maxSize=t.maxSize,this.onEviction=t.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(t,r){if(this.cache.set(t,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction==\"function\")for(let[s,a]of this.oldCache.entries())this.onEviction(s,a);this.oldCache=this.cache,this.cache=new Map}}get(t){if(this.cache.has(t))return this.cache.get(t);if(this.oldCache.has(t)){let r=this.oldCache.get(t);return this.oldCache.delete(t),this._set(t,r),r}}set(t,r){return this.cache.has(t)?this.cache.set(t,r):this._set(t,r),this}has(t){return this.cache.has(t)||this.oldCache.has(t)}peek(t){if(this.cache.has(t))return this.cache.get(t);if(this.oldCache.has(t))return this.oldCache.get(t)}delete(t){let r=this.cache.delete(t);return r&&this._size--,this.oldCache.delete(t)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[t]of this)yield t}*values(){for(let[,t]of this)yield t}*[Symbol.iterator](){for(let t of this.cache)yield t;for(let t of this.oldCache){let[r]=t;this.cache.has(r)||(yield t)}}get size(){let t=0;for(let r of this.oldCache.keys())this.cache.has(r)||t++;return Math.min(this._size+t,this.maxSize)}};jue.exports=rH});var sH=G((sOt,Vue)=>{\"use strict\";var g$e=Ie(\"events\"),d$e=Ie(\"tls\"),m$e=Ie(\"http2\"),y$e=nH(),Qa=Symbol(\"currentStreamsCount\"),Gue=Symbol(\"request\"),Fc=Symbol(\"cachedOriginSet\"),yI=Symbol(\"gracefullyClosing\"),E$e=[\"maxDeflateDynamicTableSize\",\"maxSessionMemory\",\"maxHeaderListPairs\",\"maxOutstandingPings\",\"maxReservedRemoteStreams\",\"maxSendHeaderBlockLength\",\"paddingStrategy\",\"localAddress\",\"path\",\"rejectUnauthorized\",\"minDHSize\",\"ca\",\"cert\",\"clientCertEngine\",\"ciphers\",\"key\",\"pfx\",\"servername\",\"minVersion\",\"maxVersion\",\"secureProtocol\",\"crl\",\"honorCipherOrder\",\"ecdhCurve\",\"dhparam\",\"secureOptions\",\"sessionIdContext\"],I$e=(e,t,r)=>{let s=0,a=e.length;for(;s<a;){let n=s+a>>>1;r(e[n],t)?s=n+1:a=n}return s},C$e=(e,t)=>e.remoteSettings.maxConcurrentStreams>t.remoteSettings.maxConcurrentStreams,iH=(e,t)=>{for(let r of e)r[Fc].length<t[Fc].length&&r[Fc].every(s=>t[Fc].includes(s))&&r[Qa]+t[Qa]<=t.remoteSettings.maxConcurrentStreams&&Wue(r)},w$e=(e,t)=>{for(let r of e)t[Fc].length<r[Fc].length&&t[Fc].every(s=>r[Fc].includes(s))&&t[Qa]+r[Qa]<=r.remoteSettings.maxConcurrentStreams&&Wue(t)},que=({agent:e,isFree:t})=>{let r={};for(let s in e.sessions){let n=e.sessions[s].filter(c=>{let f=c[rm.kCurrentStreamsCount]<c.remoteSettings.maxConcurrentStreams;return t?f:!f});n.length!==0&&(r[s]=n)}return r},Wue=e=>{e[yI]=!0,e[Qa]===0&&e.close()},rm=class e extends g$e{constructor({timeout:t=6e4,maxSessions:r=1/0,maxFreeSessions:s=10,maxCachedTlsSessions:a=100}={}){super(),this.sessions={},this.queue={},this.timeout=t,this.maxSessions=r,this.maxFreeSessions=s,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new y$e({maxSize:a})}static normalizeOrigin(t,r){return typeof t==\"string\"&&(t=new URL(t)),r&&t.hostname!==r&&(t.hostname=r),t.origin}normalizeOptions(t){let r=\"\";if(t)for(let s of E$e)t[s]&&(r+=`:${t[s]}`);return r}_tryToCreateNewSession(t,r){if(!(t in this.queue)||!(r in this.queue[t]))return;let s=this.queue[t][r];this._sessionsCount<this.maxSessions&&!s.completed&&(s.completed=!0,s())}getSession(t,r,s){return new Promise((a,n)=>{Array.isArray(s)?(s=[...s],a()):s=[{resolve:a,reject:n}];let c=this.normalizeOptions(r),f=e.normalizeOrigin(t,r&&r.servername);if(f===void 0){for(let{reject:E}of s)E(new TypeError(\"The `origin` argument needs to be a string or an URL object\"));return}if(c in this.sessions){let E=this.sessions[c],C=-1,S=-1,x;for(let I of E){let T=I.remoteSettings.maxConcurrentStreams;if(T<C)break;if(I[Fc].includes(f)){let O=I[Qa];if(O>=T||I[yI]||I.destroyed)continue;x||(C=T),O>S&&(x=I,S=O)}}if(x){if(s.length!==1){for(let{reject:I}of s){let T=new Error(`Expected the length of listeners to be 1, got ${s.length}.\nPlease report this to https://github.com/szmarczak/http2-wrapper/`);I(T)}return}s[0].resolve(x);return}}if(c in this.queue){if(f in this.queue[c]){this.queue[c][f].listeners.push(...s),this._tryToCreateNewSession(c,f);return}}else this.queue[c]={};let p=()=>{c in this.queue&&this.queue[c][f]===h&&(delete this.queue[c][f],Object.keys(this.queue[c]).length===0&&delete this.queue[c])},h=()=>{let E=`${f}:${c}`,C=!1;try{let S=m$e.connect(t,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(E),...r});S[Qa]=0,S[yI]=!1;let x=()=>S[Qa]<S.remoteSettings.maxConcurrentStreams,I=!0;S.socket.once(\"session\",O=>{this.tlsSessionCache.set(E,O)}),S.once(\"error\",O=>{for(let{reject:U}of s)U(O);this.tlsSessionCache.delete(E)}),S.setTimeout(this.timeout,()=>{S.destroy()}),S.once(\"close\",()=>{if(C){I&&this._freeSessionsCount--,this._sessionsCount--;let O=this.sessions[c];O.splice(O.indexOf(S),1),O.length===0&&delete this.sessions[c]}else{let O=new Error(\"Session closed without receiving a SETTINGS frame\");O.code=\"HTTP2WRAPPER_NOSETTINGS\";for(let{reject:U}of s)U(O);p()}this._tryToCreateNewSession(c,f)});let T=()=>{if(!(!(c in this.queue)||!x())){for(let O of S[Fc])if(O in this.queue[c]){let{listeners:U}=this.queue[c][O];for(;U.length!==0&&x();)U.shift().resolve(S);let Y=this.queue[c];if(Y[O].listeners.length===0&&(delete Y[O],Object.keys(Y).length===0)){delete this.queue[c];break}if(!x())break}}};S.on(\"origin\",()=>{S[Fc]=S.originSet,x()&&(T(),iH(this.sessions[c],S))}),S.once(\"remoteSettings\",()=>{if(S.ref(),S.unref(),this._sessionsCount++,h.destroyed){let O=new Error(\"Agent has been destroyed\");for(let U of s)U.reject(O);S.destroy();return}S[Fc]=S.originSet;{let O=this.sessions;if(c in O){let U=O[c];U.splice(I$e(U,S,C$e),0,S)}else O[c]=[S]}this._freeSessionsCount+=1,C=!0,this.emit(\"session\",S),T(),p(),S[Qa]===0&&this._freeSessionsCount>this.maxFreeSessions&&S.close(),s.length!==0&&(this.getSession(f,r,s),s.length=0),S.on(\"remoteSettings\",()=>{T(),iH(this.sessions[c],S)})}),S[Gue]=S.request,S.request=(O,U)=>{if(S[yI])throw new Error(\"The session is gracefully closing. No new streams are allowed.\");let Y=S[Gue](O,U);return S.ref(),++S[Qa],S[Qa]===S.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,Y.once(\"close\",()=>{if(I=x(),--S[Qa],!S.destroyed&&!S.closed&&(w$e(this.sessions[c],S),x()&&!S.closed)){I||(this._freeSessionsCount++,I=!0);let te=S[Qa]===0;te&&S.unref(),te&&(this._freeSessionsCount>this.maxFreeSessions||S[yI])?S.close():(iH(this.sessions[c],S),T())}}),Y}}catch(S){for(let x of s)x.reject(S);p()}};h.listeners=s,h.completed=!1,h.destroyed=!1,this.queue[c][f]=h,this._tryToCreateNewSession(c,f)})}request(t,r,s,a){return new Promise((n,c)=>{this.getSession(t,r,[{reject:c,resolve:f=>{try{n(f.request(s,a))}catch(p){c(p)}}}])})}createConnection(t,r){return e.connect(t,r)}static connect(t,r){r.ALPNProtocols=[\"h2\"];let s=t.port||443,a=t.hostname||t.host;return typeof r.servername>\"u\"&&(r.servername=a),d$e.connect(s,a,r)}closeFreeSessions(){for(let t of Object.values(this.sessions))for(let r of t)r[Qa]===0&&r.close()}destroy(t){for(let r of Object.values(this.sessions))for(let s of r)s.destroy(t);for(let r of Object.values(this.queue))for(let s of Object.values(r))s.destroyed=!0;this.queue={}}get freeSessions(){return que({agent:this,isFree:!0})}get busySessions(){return que({agent:this,isFree:!1})}};rm.kCurrentStreamsCount=Qa;rm.kGracefullyClosing=yI;Vue.exports={Agent:rm,globalAgent:new rm}});var aH=G((oOt,Yue)=>{\"use strict\";var{Readable:B$e}=Ie(\"stream\"),oH=class extends B$e{constructor(t,r){super({highWaterMark:r,autoDestroy:!1}),this.statusCode=null,this.statusMessage=\"\",this.httpVersion=\"2.0\",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=t,this.connection=t,this._dumped=!1}_destroy(t){this.req._request.destroy(t)}setTimeout(t,r){return this.req.setTimeout(t,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners(\"data\"),this.resume())}_read(){this.req&&this.req._request.resume()}};Yue.exports=oH});var lH=G((aOt,Kue)=>{\"use strict\";Kue.exports=e=>{let t={protocol:e.protocol,hostname:typeof e.hostname==\"string\"&&e.hostname.startsWith(\"[\")?e.hostname.slice(1,-1):e.hostname,host:e.host,hash:e.hash,search:e.search,pathname:e.pathname,href:e.href,path:`${e.pathname||\"\"}${e.search||\"\"}`};return typeof e.port==\"string\"&&e.port.length!==0&&(t.port=Number(e.port)),(e.username||e.password)&&(t.auth=`${e.username||\"\"}:${e.password||\"\"}`),t}});var zue=G((lOt,Jue)=>{\"use strict\";Jue.exports=(e,t,r)=>{for(let s of r)e.on(s,(...a)=>t.emit(s,...a))}});var Xue=G((cOt,Zue)=>{\"use strict\";Zue.exports=e=>{switch(e){case\":method\":case\":scheme\":case\":authority\":case\":path\":return!0;default:return!1}}});var efe=G((fOt,$ue)=>{\"use strict\";var EI=(e,t,r)=>{$ue.exports[t]=class extends e{constructor(...a){super(typeof r==\"string\"?r:r(a)),this.name=`${super.name} [${t}]`,this.code=t}}};EI(TypeError,\"ERR_INVALID_ARG_TYPE\",e=>{let t=e[0].includes(\".\")?\"property\":\"argument\",r=e[1],s=Array.isArray(r);return s&&(r=`${r.slice(0,-1).join(\", \")} or ${r.slice(-1)}`),`The \"${e[0]}\" ${t} must be ${s?\"one of\":\"of\"} type ${r}. Received ${typeof e[2]}`});EI(TypeError,\"ERR_INVALID_PROTOCOL\",e=>`Protocol \"${e[0]}\" not supported. Expected \"${e[1]}\"`);EI(Error,\"ERR_HTTP_HEADERS_SENT\",e=>`Cannot ${e[0]} headers after they are sent to the client`);EI(TypeError,\"ERR_INVALID_HTTP_TOKEN\",e=>`${e[0]} must be a valid HTTP token [${e[1]}]`);EI(TypeError,\"ERR_HTTP_INVALID_HEADER_VALUE\",e=>`Invalid value \"${e[0]} for header \"${e[1]}\"`);EI(TypeError,\"ERR_INVALID_CHAR\",e=>`Invalid character in ${e[0]} [${e[1]}]`)});var pH=G((AOt,afe)=>{\"use strict\";var v$e=Ie(\"http2\"),{Writable:S$e}=Ie(\"stream\"),{Agent:tfe,globalAgent:D$e}=sH(),b$e=aH(),P$e=lH(),x$e=zue(),k$e=Xue(),{ERR_INVALID_ARG_TYPE:cH,ERR_INVALID_PROTOCOL:Q$e,ERR_HTTP_HEADERS_SENT:rfe,ERR_INVALID_HTTP_TOKEN:R$e,ERR_HTTP_INVALID_HEADER_VALUE:T$e,ERR_INVALID_CHAR:F$e}=efe(),{HTTP2_HEADER_STATUS:nfe,HTTP2_HEADER_METHOD:ife,HTTP2_HEADER_PATH:sfe,HTTP2_METHOD_CONNECT:N$e}=v$e.constants,ea=Symbol(\"headers\"),uH=Symbol(\"origin\"),fH=Symbol(\"session\"),ofe=Symbol(\"options\"),YQ=Symbol(\"flushedHeaders\"),j2=Symbol(\"jobs\"),O$e=/^[\\^`\\-\\w!#$%&*+.|~]+$/,L$e=/[^\\t\\u0020-\\u007E\\u0080-\\u00FF]/,AH=class extends S$e{constructor(t,r,s){super({autoDestroy:!1});let a=typeof t==\"string\"||t instanceof URL;if(a&&(t=P$e(t instanceof URL?t:new URL(t))),typeof r==\"function\"||r===void 0?(s=r,r=a?t:{...t}):r={...t,...r},r.h2session)this[fH]=r.h2session;else if(r.agent===!1)this.agent=new tfe({maxFreeSessions:0});else if(typeof r.agent>\"u\"||r.agent===null)typeof r.createConnection==\"function\"?(this.agent=new tfe({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=D$e;else if(typeof r.agent.request==\"function\")this.agent=r.agent;else throw new cH(\"options.agent\",[\"Agent-like Object\",\"undefined\",\"false\"],r.agent);if(r.protocol&&r.protocol!==\"https:\")throw new Q$e(r.protocol,\"https:\");let n=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,c=r.hostname||r.host||\"localhost\";delete r.hostname,delete r.host,delete r.port;let{timeout:f}=r;if(r.timeout=void 0,this[ea]=Object.create(null),this[j2]=[],this.socket=null,this.connection=null,this.method=r.method||\"GET\",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[p,h]of Object.entries(r.headers))this.setHeader(p,h);r.auth&&!(\"authorization\"in this[ea])&&(this[ea].authorization=\"Basic \"+Buffer.from(r.auth).toString(\"base64\")),r.session=r.tlsSession,r.path=r.socketPath,this[ofe]=r,n===443?(this[uH]=`https://${c}`,\":authority\"in this[ea]||(this[ea][\":authority\"]=c)):(this[uH]=`https://${c}:${n}`,\":authority\"in this[ea]||(this[ea][\":authority\"]=`${c}:${n}`)),f&&this.setTimeout(f),s&&this.once(\"response\",s),this[YQ]=!1}get method(){return this[ea][ife]}set method(t){t&&(this[ea][ife]=t.toUpperCase())}get path(){return this[ea][sfe]}set path(t){t&&(this[ea][sfe]=t)}get _mustNotHaveABody(){return this.method===\"GET\"||this.method===\"HEAD\"||this.method===\"DELETE\"}_write(t,r,s){if(this._mustNotHaveABody){s(new Error(\"The GET, HEAD and DELETE methods must NOT have a body\"));return}this.flushHeaders();let a=()=>this._request.write(t,r,s);this._request?a():this[j2].push(a)}_final(t){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){t();return}this._request.end(t)};this._request?r():this[j2].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit(\"abort\")),this.aborted=!0,this.destroy())}_destroy(t,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(t)}async flushHeaders(){if(this[YQ]||this.destroyed)return;this[YQ]=!0;let t=this.method===N$e,r=s=>{if(this._request=s,this.destroyed){s.destroy();return}t||x$e(s,this,[\"timeout\",\"continue\",\"close\",\"error\"]);let a=c=>(...f)=>{!this.writable&&!this.destroyed?c(...f):this.once(\"finish\",()=>{c(...f)})};s.once(\"response\",a((c,f,p)=>{let h=new b$e(this.socket,s.readableHighWaterMark);this.res=h,h.req=this,h.statusCode=c[nfe],h.headers=c,h.rawHeaders=p,h.once(\"end\",()=>{this.aborted?(h.aborted=!0,h.emit(\"aborted\")):(h.complete=!0,h.socket=null,h.connection=null)}),t?(h.upgrade=!0,this.emit(\"connect\",h,s,Buffer.alloc(0))?this.emit(\"close\"):s.destroy()):(s.on(\"data\",E=>{!h._dumped&&!h.push(E)&&s.pause()}),s.once(\"end\",()=>{h.push(null)}),this.emit(\"response\",h)||h._dump())})),s.once(\"headers\",a(c=>this.emit(\"information\",{statusCode:c[nfe]}))),s.once(\"trailers\",a((c,f,p)=>{let{res:h}=this;h.trailers=c,h.rawTrailers=p}));let{socket:n}=s.session;this.socket=n,this.connection=n;for(let c of this[j2])c();this.emit(\"socket\",this.socket)};if(this[fH])try{r(this[fH].request(this[ea]))}catch(s){this.emit(\"error\",s)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[uH],this[ofe],this[ea]))}catch(s){this.emit(\"error\",s)}}}getHeader(t){if(typeof t!=\"string\")throw new cH(\"name\",\"string\",t);return this[ea][t.toLowerCase()]}get headersSent(){return this[YQ]}removeHeader(t){if(typeof t!=\"string\")throw new cH(\"name\",\"string\",t);if(this.headersSent)throw new rfe(\"remove\");delete this[ea][t.toLowerCase()]}setHeader(t,r){if(this.headersSent)throw new rfe(\"set\");if(typeof t!=\"string\"||!O$e.test(t)&&!k$e(t))throw new R$e(\"Header name\",t);if(typeof r>\"u\")throw new T$e(r,t);if(L$e.test(r))throw new F$e(\"header content\",t);this[ea][t.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(t,r){let s=()=>this._request.setTimeout(t,r);return this._request?s():this[j2].push(s),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(t){}};afe.exports=AH});var cfe=G((pOt,lfe)=>{\"use strict\";var M$e=Ie(\"tls\");lfe.exports=(e={},t=M$e.connect)=>new Promise((r,s)=>{let a=!1,n,c=async()=>{await p,n.off(\"timeout\",f),n.off(\"error\",s),e.resolveSocket?(r({alpnProtocol:n.alpnProtocol,socket:n,timeout:a}),a&&(await Promise.resolve(),n.emit(\"timeout\"))):(n.destroy(),r({alpnProtocol:n.alpnProtocol,timeout:a}))},f=async()=>{a=!0,c()},p=(async()=>{try{n=await t(e,c),n.on(\"error\",s),n.once(\"timeout\",f)}catch(h){s(h)}})()})});var ffe=G((hOt,ufe)=>{\"use strict\";var U$e=Ie(\"net\");ufe.exports=e=>{let t=e.host,r=e.headers&&e.headers.host;return r&&(r.startsWith(\"[\")?r.indexOf(\"]\")===-1?t=r:t=r.slice(1,-1):t=r.split(\":\",1)[0]),U$e.isIP(t)?\"\":t}});var hfe=G((gOt,gH)=>{\"use strict\";var Afe=Ie(\"http\"),hH=Ie(\"https\"),_$e=cfe(),H$e=nH(),j$e=pH(),G$e=ffe(),q$e=lH(),KQ=new H$e({maxSize:100}),G2=new Map,pfe=(e,t,r)=>{t._httpMessage={shouldKeepAlive:!0};let s=()=>{e.emit(\"free\",t,r)};t.on(\"free\",s);let a=()=>{e.removeSocket(t,r)};t.on(\"close\",a);let n=()=>{e.removeSocket(t,r),t.off(\"close\",a),t.off(\"free\",s),t.off(\"agentRemove\",n)};t.on(\"agentRemove\",n),e.emit(\"free\",t,r)},W$e=async e=>{let t=`${e.host}:${e.port}:${e.ALPNProtocols.sort()}`;if(!KQ.has(t)){if(G2.has(t))return(await G2.get(t)).alpnProtocol;let{path:r,agent:s}=e;e.path=e.socketPath;let a=_$e(e);G2.set(t,a);try{let{socket:n,alpnProtocol:c}=await a;if(KQ.set(t,c),e.path=r,c===\"h2\")n.destroy();else{let{globalAgent:f}=hH,p=hH.Agent.prototype.createConnection;s?s.createConnection===p?pfe(s,n,e):n.destroy():f.createConnection===p?pfe(f,n,e):n.destroy()}return G2.delete(t),c}catch(n){throw G2.delete(t),n}}return KQ.get(t)};gH.exports=async(e,t,r)=>{if((typeof e==\"string\"||e instanceof URL)&&(e=q$e(new URL(e))),typeof t==\"function\"&&(r=t,t=void 0),t={ALPNProtocols:[\"h2\",\"http/1.1\"],...e,...t,resolveSocket:!0},!Array.isArray(t.ALPNProtocols)||t.ALPNProtocols.length===0)throw new Error(\"The `ALPNProtocols` option must be an Array with at least one entry\");t.protocol=t.protocol||\"https:\";let s=t.protocol===\"https:\";t.host=t.hostname||t.host||\"localhost\",t.session=t.tlsSession,t.servername=t.servername||G$e(t),t.port=t.port||(s?443:80),t._defaultAgent=s?hH.globalAgent:Afe.globalAgent;let a=t.agent;if(a){if(a.addRequest)throw new Error(\"The `options.agent` object can contain only `http`, `https` or `http2` properties\");t.agent=a[s?\"https\":\"http\"]}return s&&await W$e(t)===\"h2\"?(a&&(t.agent=a.http2),new j$e(t,r)):Afe.request(t,r)};gH.exports.protocolCache=KQ});var dfe=G((dOt,gfe)=>{\"use strict\";var V$e=Ie(\"http2\"),Y$e=sH(),dH=pH(),K$e=aH(),J$e=hfe(),z$e=(e,t,r)=>new dH(e,t,r),Z$e=(e,t,r)=>{let s=new dH(e,t,r);return s.end(),s};gfe.exports={...V$e,ClientRequest:dH,IncomingMessage:K$e,...Y$e,request:z$e,get:Z$e,auto:J$e}});var yH=G(mH=>{\"use strict\";Object.defineProperty(mH,\"__esModule\",{value:!0});var mfe=Op();mH.default=e=>mfe.default.nodeStream(e)&&mfe.default.function_(e.getBoundary)});var Cfe=G(EH=>{\"use strict\";Object.defineProperty(EH,\"__esModule\",{value:!0});var Efe=Ie(\"fs\"),Ife=Ie(\"util\"),yfe=Op(),X$e=yH(),$$e=Ife.promisify(Efe.stat);EH.default=async(e,t)=>{if(t&&\"content-length\"in t)return Number(t[\"content-length\"]);if(!e)return 0;if(yfe.default.string(e))return Buffer.byteLength(e);if(yfe.default.buffer(e))return e.length;if(X$e.default(e))return Ife.promisify(e.getLength.bind(e))();if(e instanceof Efe.ReadStream){let{size:r}=await $$e(e.path);return r===0?void 0:r}}});var CH=G(IH=>{\"use strict\";Object.defineProperty(IH,\"__esModule\",{value:!0});function eet(e,t,r){let s={};for(let a of r)s[a]=(...n)=>{t.emit(a,...n)},e.on(a,s[a]);return()=>{for(let a of r)e.off(a,s[a])}}IH.default=eet});var wfe=G(wH=>{\"use strict\";Object.defineProperty(wH,\"__esModule\",{value:!0});wH.default=()=>{let e=[];return{once(t,r,s){t.once(r,s),e.push({origin:t,event:r,fn:s})},unhandleAll(){for(let t of e){let{origin:r,event:s,fn:a}=t;r.removeListener(s,a)}e.length=0}}}});var vfe=G(q2=>{\"use strict\";Object.defineProperty(q2,\"__esModule\",{value:!0});q2.TimeoutError=void 0;var tet=Ie(\"net\"),ret=wfe(),Bfe=Symbol(\"reentry\"),net=()=>{},JQ=class extends Error{constructor(t,r){super(`Timeout awaiting '${r}' for ${t}ms`),this.event=r,this.name=\"TimeoutError\",this.code=\"ETIMEDOUT\"}};q2.TimeoutError=JQ;q2.default=(e,t,r)=>{if(Bfe in e)return net;e[Bfe]=!0;let s=[],{once:a,unhandleAll:n}=ret.default(),c=(C,S,x)=>{var I;let T=setTimeout(S,C,C,x);(I=T.unref)===null||I===void 0||I.call(T);let O=()=>{clearTimeout(T)};return s.push(O),O},{host:f,hostname:p}=r,h=(C,S)=>{e.destroy(new JQ(C,S))},E=()=>{for(let C of s)C();n()};if(e.once(\"error\",C=>{if(E(),e.listenerCount(\"error\")===0)throw C}),e.once(\"close\",E),a(e,\"response\",C=>{a(C,\"end\",E)}),typeof t.request<\"u\"&&c(t.request,h,\"request\"),typeof t.socket<\"u\"){let C=()=>{h(t.socket,\"socket\")};e.setTimeout(t.socket,C),s.push(()=>{e.removeListener(\"timeout\",C)})}return a(e,\"socket\",C=>{var S;let{socketPath:x}=e;if(C.connecting){let I=!!(x??tet.isIP((S=p??f)!==null&&S!==void 0?S:\"\")!==0);if(typeof t.lookup<\"u\"&&!I&&typeof C.address().address>\"u\"){let T=c(t.lookup,h,\"lookup\");a(C,\"lookup\",T)}if(typeof t.connect<\"u\"){let T=()=>c(t.connect,h,\"connect\");I?a(C,\"connect\",T()):a(C,\"lookup\",O=>{O===null&&a(C,\"connect\",T())})}typeof t.secureConnect<\"u\"&&r.protocol===\"https:\"&&a(C,\"connect\",()=>{let T=c(t.secureConnect,h,\"secureConnect\");a(C,\"secureConnect\",T)})}if(typeof t.send<\"u\"){let I=()=>c(t.send,h,\"send\");C.connecting?a(C,\"connect\",()=>{a(e,\"upload-complete\",I())}):a(e,\"upload-complete\",I())}}),typeof t.response<\"u\"&&a(e,\"upload-complete\",()=>{let C=c(t.response,h,\"response\");a(e,\"response\",C)}),E}});var Dfe=G(BH=>{\"use strict\";Object.defineProperty(BH,\"__esModule\",{value:!0});var Sfe=Op();BH.default=e=>{e=e;let t={protocol:e.protocol,hostname:Sfe.default.string(e.hostname)&&e.hostname.startsWith(\"[\")?e.hostname.slice(1,-1):e.hostname,host:e.host,hash:e.hash,search:e.search,pathname:e.pathname,href:e.href,path:`${e.pathname||\"\"}${e.search||\"\"}`};return Sfe.default.string(e.port)&&e.port.length>0&&(t.port=Number(e.port)),(e.username||e.password)&&(t.auth=`${e.username||\"\"}:${e.password||\"\"}`),t}});var bfe=G(vH=>{\"use strict\";Object.defineProperty(vH,\"__esModule\",{value:!0});var iet=Ie(\"url\"),set=[\"protocol\",\"host\",\"hostname\",\"port\",\"pathname\",\"search\"];vH.default=(e,t)=>{var r,s;if(t.path){if(t.pathname)throw new TypeError(\"Parameters `path` and `pathname` are mutually exclusive.\");if(t.search)throw new TypeError(\"Parameters `path` and `search` are mutually exclusive.\");if(t.searchParams)throw new TypeError(\"Parameters `path` and `searchParams` are mutually exclusive.\")}if(t.search&&t.searchParams)throw new TypeError(\"Parameters `search` and `searchParams` are mutually exclusive.\");if(!e){if(!t.protocol)throw new TypeError(\"No URL protocol specified\");e=`${t.protocol}//${(s=(r=t.hostname)!==null&&r!==void 0?r:t.host)!==null&&s!==void 0?s:\"\"}`}let a=new iet.URL(e);if(t.path){let n=t.path.indexOf(\"?\");n===-1?t.pathname=t.path:(t.pathname=t.path.slice(0,n),t.search=t.path.slice(n+1)),delete t.path}for(let n of set)t[n]&&(a[n]=t[n].toString());return a}});var Pfe=G(DH=>{\"use strict\";Object.defineProperty(DH,\"__esModule\",{value:!0});var SH=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(t,r){typeof t==\"object\"?this.weakMap.set(t,r):this.map.set(t,r)}get(t){return typeof t==\"object\"?this.weakMap.get(t):this.map.get(t)}has(t){return typeof t==\"object\"?this.weakMap.has(t):this.map.has(t)}};DH.default=SH});var PH=G(bH=>{\"use strict\";Object.defineProperty(bH,\"__esModule\",{value:!0});var oet=async e=>{let t=[],r=0;for await(let s of e)t.push(s),r+=Buffer.byteLength(s);return Buffer.isBuffer(t[0])?Buffer.concat(t,r):Buffer.from(t.join(\"\"))};bH.default=oet});var kfe=G(nm=>{\"use strict\";Object.defineProperty(nm,\"__esModule\",{value:!0});nm.dnsLookupIpVersionToFamily=nm.isDnsLookupIpVersion=void 0;var xfe={auto:0,ipv4:4,ipv6:6};nm.isDnsLookupIpVersion=e=>e in xfe;nm.dnsLookupIpVersionToFamily=e=>{if(nm.isDnsLookupIpVersion(e))return xfe[e];throw new Error(\"Invalid DNS lookup IP version\")}});var xH=G(zQ=>{\"use strict\";Object.defineProperty(zQ,\"__esModule\",{value:!0});zQ.isResponseOk=void 0;zQ.isResponseOk=e=>{let{statusCode:t}=e,r=e.request.options.followRedirect?299:399;return t>=200&&t<=r||t===304}});var Rfe=G(kH=>{\"use strict\";Object.defineProperty(kH,\"__esModule\",{value:!0});var Qfe=new Set;kH.default=e=>{Qfe.has(e)||(Qfe.add(e),process.emitWarning(`Got: ${e}`,{type:\"DeprecationWarning\"}))}});var Tfe=G(QH=>{\"use strict\";Object.defineProperty(QH,\"__esModule\",{value:!0});var Di=Op(),aet=(e,t)=>{if(Di.default.null_(e.encoding))throw new TypeError(\"To get a Buffer, set `options.responseType` to `buffer` instead\");Di.assert.any([Di.default.string,Di.default.undefined],e.encoding),Di.assert.any([Di.default.boolean,Di.default.undefined],e.resolveBodyOnly),Di.assert.any([Di.default.boolean,Di.default.undefined],e.methodRewriting),Di.assert.any([Di.default.boolean,Di.default.undefined],e.isStream),Di.assert.any([Di.default.string,Di.default.undefined],e.responseType),e.responseType===void 0&&(e.responseType=\"text\");let{retry:r}=e;if(t?e.retry={...t.retry}:e.retry={calculateDelay:s=>s.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},Di.default.object(r)?(e.retry={...e.retry,...r},e.retry.methods=[...new Set(e.retry.methods.map(s=>s.toUpperCase()))],e.retry.statusCodes=[...new Set(e.retry.statusCodes)],e.retry.errorCodes=[...new Set(e.retry.errorCodes)]):Di.default.number(r)&&(e.retry.limit=r),Di.default.undefined(e.retry.maxRetryAfter)&&(e.retry.maxRetryAfter=Math.min(...[e.timeout.request,e.timeout.connect].filter(Di.default.number))),Di.default.object(e.pagination)){t&&(e.pagination={...t.pagination,...e.pagination});let{pagination:s}=e;if(!Di.default.function_(s.transform))throw new Error(\"`options.pagination.transform` must be implemented\");if(!Di.default.function_(s.shouldContinue))throw new Error(\"`options.pagination.shouldContinue` must be implemented\");if(!Di.default.function_(s.filter))throw new TypeError(\"`options.pagination.filter` must be implemented\");if(!Di.default.function_(s.paginate))throw new Error(\"`options.pagination.paginate` must be implemented\")}return e.responseType===\"json\"&&e.headers.accept===void 0&&(e.headers.accept=\"application/json\"),e};QH.default=aet});var Ffe=G(W2=>{\"use strict\";Object.defineProperty(W2,\"__esModule\",{value:!0});W2.retryAfterStatusCodes=void 0;W2.retryAfterStatusCodes=new Set([413,429,503]);var cet=({attemptCount:e,retryOptions:t,error:r,retryAfter:s})=>{if(e>t.limit)return 0;let a=t.methods.includes(r.options.method),n=t.errorCodes.includes(r.code),c=r.response&&t.statusCodes.includes(r.response.statusCode);if(!a||!n&&!c)return 0;if(r.response){if(s)return t.maxRetryAfter===void 0||s>t.maxRetryAfter?0:s;if(r.response.statusCode===413)return 0}let f=Math.random()*100;return 2**(e-1)*1e3+f};W2.default=cet});var K2=G(Un=>{\"use strict\";Object.defineProperty(Un,\"__esModule\",{value:!0});Un.UnsupportedProtocolError=Un.ReadError=Un.TimeoutError=Un.UploadError=Un.CacheError=Un.HTTPError=Un.MaxRedirectsError=Un.RequestError=Un.setNonEnumerableProperties=Un.knownHookEvents=Un.withoutBody=Un.kIsNormalizedAlready=void 0;var Nfe=Ie(\"util\"),Ofe=Ie(\"stream\"),uet=Ie(\"fs\"),I0=Ie(\"url\"),Lfe=Ie(\"http\"),RH=Ie(\"http\"),fet=Ie(\"https\"),Aet=Zce(),pet=iue(),Mfe=Lue(),het=Hue(),get=dfe(),det=WQ(),lt=Op(),met=Cfe(),Ufe=yH(),yet=CH(),_fe=vfe(),Eet=Dfe(),Hfe=bfe(),Iet=Pfe(),Cet=PH(),jfe=kfe(),wet=xH(),C0=Rfe(),Bet=Tfe(),vet=Ffe(),TH,Eo=Symbol(\"request\"),$Q=Symbol(\"response\"),II=Symbol(\"responseSize\"),CI=Symbol(\"downloadedSize\"),wI=Symbol(\"bodySize\"),BI=Symbol(\"uploadedSize\"),ZQ=Symbol(\"serverResponsesPiped\"),Gfe=Symbol(\"unproxyEvents\"),qfe=Symbol(\"isFromCache\"),FH=Symbol(\"cancelTimeouts\"),Wfe=Symbol(\"startedReading\"),vI=Symbol(\"stopReading\"),XQ=Symbol(\"triggerRead\"),w0=Symbol(\"body\"),V2=Symbol(\"jobs\"),Vfe=Symbol(\"originalResponse\"),Yfe=Symbol(\"retryTimeout\");Un.kIsNormalizedAlready=Symbol(\"isNormalizedAlready\");var Det=lt.default.string(process.versions.brotli);Un.withoutBody=new Set([\"GET\",\"HEAD\"]);Un.knownHookEvents=[\"init\",\"beforeRequest\",\"beforeRedirect\",\"beforeError\",\"beforeRetry\",\"afterResponse\"];function bet(e){for(let t in e){let r=e[t];if(!lt.default.string(r)&&!lt.default.number(r)&&!lt.default.boolean(r)&&!lt.default.null_(r)&&!lt.default.undefined(r))throw new TypeError(`The \\`searchParams\\` value '${String(r)}' must be a string, number, boolean or null`)}}function Pet(e){return lt.default.object(e)&&!(\"statusCode\"in e)}var NH=new Iet.default,xet=async e=>new Promise((t,r)=>{let s=a=>{r(a)};e.pending||t(),e.once(\"error\",s),e.once(\"ready\",()=>{e.off(\"error\",s),t()})}),ket=new Set([300,301,302,303,304,307,308]),Qet=[\"context\",\"body\",\"json\",\"form\"];Un.setNonEnumerableProperties=(e,t)=>{let r={};for(let s of e)if(s)for(let a of Qet)a in s&&(r[a]={writable:!0,configurable:!0,enumerable:!1,value:s[a]});Object.defineProperties(t,r)};var As=class extends Error{constructor(t,r,s){var a;if(super(t),Error.captureStackTrace(this,this.constructor),this.name=\"RequestError\",this.code=r.code,s instanceof oR?(Object.defineProperty(this,\"request\",{enumerable:!1,value:s}),Object.defineProperty(this,\"response\",{enumerable:!1,value:s[$Q]}),Object.defineProperty(this,\"options\",{enumerable:!1,value:s.options})):Object.defineProperty(this,\"options\",{enumerable:!1,value:s}),this.timings=(a=this.request)===null||a===void 0?void 0:a.timings,lt.default.string(r.stack)&&lt.default.string(this.stack)){let n=this.stack.indexOf(this.message)+this.message.length,c=this.stack.slice(n).split(`\n`).reverse(),f=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(`\n`).reverse();for(;f.length!==0&&f[0]===c[0];)c.shift();this.stack=`${this.stack.slice(0,n)}${c.reverse().join(`\n`)}${f.reverse().join(`\n`)}`}}};Un.RequestError=As;var eR=class extends As{constructor(t){super(`Redirected ${t.options.maxRedirects} times. Aborting.`,{},t),this.name=\"MaxRedirectsError\"}};Un.MaxRedirectsError=eR;var tR=class extends As{constructor(t){super(`Response code ${t.statusCode} (${t.statusMessage})`,{},t.request),this.name=\"HTTPError\"}};Un.HTTPError=tR;var rR=class extends As{constructor(t,r){super(t.message,t,r),this.name=\"CacheError\"}};Un.CacheError=rR;var nR=class extends As{constructor(t,r){super(t.message,t,r),this.name=\"UploadError\"}};Un.UploadError=nR;var iR=class extends As{constructor(t,r,s){super(t.message,t,s),this.name=\"TimeoutError\",this.event=t.event,this.timings=r}};Un.TimeoutError=iR;var Y2=class extends As{constructor(t,r){super(t.message,t,r),this.name=\"ReadError\"}};Un.ReadError=Y2;var sR=class extends As{constructor(t){super(`Unsupported protocol \"${t.url.protocol}\"`,{},t),this.name=\"UnsupportedProtocolError\"}};Un.UnsupportedProtocolError=sR;var Ret=[\"socket\",\"connect\",\"continue\",\"information\",\"upgrade\",\"timeout\"],oR=class extends Ofe.Duplex{constructor(t,r={},s){super({autoDestroy:!1,highWaterMark:0}),this[CI]=0,this[BI]=0,this.requestInitialized=!1,this[ZQ]=new Set,this.redirects=[],this[vI]=!1,this[XQ]=!1,this[V2]=[],this.retryCount=0,this._progressCallbacks=[];let a=()=>this._unlockWrite(),n=()=>this._lockWrite();this.on(\"pipe\",h=>{h.prependListener(\"data\",a),h.on(\"data\",n),h.prependListener(\"end\",a),h.on(\"end\",n)}),this.on(\"unpipe\",h=>{h.off(\"data\",a),h.off(\"data\",n),h.off(\"end\",a),h.off(\"end\",n)}),this.on(\"pipe\",h=>{h instanceof RH.IncomingMessage&&(this.options.headers={...h.headers,...this.options.headers})});let{json:c,body:f,form:p}=r;if((c||f||p)&&this._lockWrite(),Un.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(t,r,s)}catch(h){lt.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(h);return}(async()=>{var h;try{this.options.body instanceof uet.ReadStream&&await xet(this.options.body);let{url:E}=this.options;if(!E)throw new TypeError(\"Missing `url` property\");if(this.requestUrl=E.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(h=this[Eo])===null||h===void 0||h.destroy();return}for(let C of this[V2])C();this[V2].length=0,this.requestInitialized=!0}catch(E){if(E instanceof As){this._beforeError(E);return}this.destroyed||this.destroy(E)}})()}static normalizeArguments(t,r,s){var a,n,c,f,p;let h=r;if(lt.default.object(t)&&!lt.default.urlInstance(t))r={...s,...t,...r};else{if(t&&r&&r.url!==void 0)throw new TypeError(\"The `url` option is mutually exclusive with the `input` argument\");r={...s,...r},t!==void 0&&(r.url=t),lt.default.urlInstance(r.url)&&(r.url=new I0.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),lt.assert.any([lt.default.string,lt.default.undefined],r.method),lt.assert.any([lt.default.object,lt.default.undefined],r.headers),lt.assert.any([lt.default.string,lt.default.urlInstance,lt.default.undefined],r.prefixUrl),lt.assert.any([lt.default.object,lt.default.undefined],r.cookieJar),lt.assert.any([lt.default.object,lt.default.string,lt.default.undefined],r.searchParams),lt.assert.any([lt.default.object,lt.default.string,lt.default.undefined],r.cache),lt.assert.any([lt.default.object,lt.default.number,lt.default.undefined],r.timeout),lt.assert.any([lt.default.object,lt.default.undefined],r.context),lt.assert.any([lt.default.object,lt.default.undefined],r.hooks),lt.assert.any([lt.default.boolean,lt.default.undefined],r.decompress),lt.assert.any([lt.default.boolean,lt.default.undefined],r.ignoreInvalidCookies),lt.assert.any([lt.default.boolean,lt.default.undefined],r.followRedirect),lt.assert.any([lt.default.number,lt.default.undefined],r.maxRedirects),lt.assert.any([lt.default.boolean,lt.default.undefined],r.throwHttpErrors),lt.assert.any([lt.default.boolean,lt.default.undefined],r.http2),lt.assert.any([lt.default.boolean,lt.default.undefined],r.allowGetBody),lt.assert.any([lt.default.string,lt.default.undefined],r.localAddress),lt.assert.any([jfe.isDnsLookupIpVersion,lt.default.undefined],r.dnsLookupIpVersion),lt.assert.any([lt.default.object,lt.default.undefined],r.https),lt.assert.any([lt.default.boolean,lt.default.undefined],r.rejectUnauthorized),r.https&&(lt.assert.any([lt.default.boolean,lt.default.undefined],r.https.rejectUnauthorized),lt.assert.any([lt.default.function_,lt.default.undefined],r.https.checkServerIdentity),lt.assert.any([lt.default.string,lt.default.object,lt.default.array,lt.default.undefined],r.https.certificateAuthority),lt.assert.any([lt.default.string,lt.default.object,lt.default.array,lt.default.undefined],r.https.key),lt.assert.any([lt.default.string,lt.default.object,lt.default.array,lt.default.undefined],r.https.certificate),lt.assert.any([lt.default.string,lt.default.undefined],r.https.passphrase),lt.assert.any([lt.default.string,lt.default.buffer,lt.default.array,lt.default.undefined],r.https.pfx)),lt.assert.any([lt.default.object,lt.default.undefined],r.cacheOptions),lt.default.string(r.method)?r.method=r.method.toUpperCase():r.method=\"GET\",r.headers===s?.headers?r.headers={...r.headers}:r.headers=det({...s?.headers,...r.headers}),\"slashes\"in r)throw new TypeError(\"The legacy `url.Url` has been deprecated. Use `URL` instead.\");if(\"auth\"in r)throw new TypeError(\"Parameter `auth` is deprecated. Use `username` / `password` instead.\");if(\"searchParams\"in r&&r.searchParams&&r.searchParams!==s?.searchParams){let x;if(lt.default.string(r.searchParams)||r.searchParams instanceof I0.URLSearchParams)x=new I0.URLSearchParams(r.searchParams);else{bet(r.searchParams),x=new I0.URLSearchParams;for(let I in r.searchParams){let T=r.searchParams[I];T===null?x.append(I,\"\"):T!==void 0&&x.append(I,T)}}(a=s?.searchParams)===null||a===void 0||a.forEach((I,T)=>{x.has(T)||x.append(T,I)}),r.searchParams=x}if(r.username=(n=r.username)!==null&&n!==void 0?n:\"\",r.password=(c=r.password)!==null&&c!==void 0?c:\"\",lt.default.undefined(r.prefixUrl)?r.prefixUrl=(f=s?.prefixUrl)!==null&&f!==void 0?f:\"\":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==\"\"&&!r.prefixUrl.endsWith(\"/\")&&(r.prefixUrl+=\"/\")),lt.default.string(r.url)){if(r.url.startsWith(\"/\"))throw new Error(\"`input` must not start with a slash when using `prefixUrl`\");r.url=Hfe.default(r.prefixUrl+r.url,r)}else(lt.default.undefined(r.url)&&r.prefixUrl!==\"\"||r.protocol)&&(r.url=Hfe.default(r.prefixUrl,r));if(r.url){\"port\"in r&&delete r.port;let{prefixUrl:x}=r;Object.defineProperty(r,\"prefixUrl\",{set:T=>{let O=r.url;if(!O.href.startsWith(T))throw new Error(`Cannot change \\`prefixUrl\\` from ${x} to ${T}: ${O.href}`);r.url=new I0.URL(T+O.href.slice(x.length)),x=T},get:()=>x});let{protocol:I}=r.url;if(I===\"unix:\"&&(I=\"http:\",r.url=new I0.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),I!==\"http:\"&&I!==\"https:\")throw new sR(r);r.username===\"\"?r.username=r.url.username:r.url.username=r.username,r.password===\"\"?r.password=r.url.password:r.url.password=r.password}let{cookieJar:E}=r;if(E){let{setCookie:x,getCookieString:I}=E;lt.assert.function_(x),lt.assert.function_(I),x.length===4&&I.length===0&&(x=Nfe.promisify(x.bind(r.cookieJar)),I=Nfe.promisify(I.bind(r.cookieJar)),r.cookieJar={setCookie:x,getCookieString:I})}let{cache:C}=r;if(C&&(NH.has(C)||NH.set(C,new Mfe((x,I)=>{let T=x[Eo](x,I);return lt.default.promise(T)&&(T.once=(O,U)=>{if(O===\"error\")T.catch(U);else if(O===\"abort\")(async()=>{try{(await T).once(\"abort\",U)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${O}`);return T}),T},C))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)TH||(TH=new pet.default),r.dnsCache=TH;else if(!lt.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \\`dnsCache\\` must be a CacheableLookup instance or a boolean, got ${lt.default(r.dnsCache)}`);lt.default.number(r.timeout)?r.timeout={request:r.timeout}:s&&r.timeout!==s.timeout?r.timeout={...s.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||(r.context={});let S=r.hooks===s?.hooks;r.hooks={...r.hooks};for(let x of Un.knownHookEvents)if(x in r.hooks)if(lt.default.array(r.hooks[x]))r.hooks[x]=[...r.hooks[x]];else throw new TypeError(`Parameter \\`${x}\\` must be an Array, got ${lt.default(r.hooks[x])}`);else r.hooks[x]=[];if(s&&!S)for(let x of Un.knownHookEvents)s.hooks[x].length>0&&(r.hooks[x]=[...s.hooks[x],...r.hooks[x]]);if(\"family\"in r&&C0.default('\"options.family\" was never documented, please use \"options.dnsLookupIpVersion\"'),s?.https&&(r.https={...s.https,...r.https}),\"rejectUnauthorized\"in r&&C0.default('\"options.rejectUnauthorized\" is now deprecated, please use \"options.https.rejectUnauthorized\"'),\"checkServerIdentity\"in r&&C0.default('\"options.checkServerIdentity\" was never documented, please use \"options.https.checkServerIdentity\"'),\"ca\"in r&&C0.default('\"options.ca\" was never documented, please use \"options.https.certificateAuthority\"'),\"key\"in r&&C0.default('\"options.key\" was never documented, please use \"options.https.key\"'),\"cert\"in r&&C0.default('\"options.cert\" was never documented, please use \"options.https.certificate\"'),\"passphrase\"in r&&C0.default('\"options.passphrase\" was never documented, please use \"options.https.passphrase\"'),\"pfx\"in r&&C0.default('\"options.pfx\" was never documented, please use \"options.https.pfx\"'),\"followRedirects\"in r)throw new TypeError(\"The `followRedirects` option does not exist. Use `followRedirect` instead.\");if(r.agent){for(let x in r.agent)if(x!==\"http\"&&x!==\"https\"&&x!==\"http2\")throw new TypeError(`Expected the \\`options.agent\\` properties to be \\`http\\`, \\`https\\` or \\`http2\\`, got \\`${x}\\``)}return r.maxRedirects=(p=r.maxRedirects)!==null&&p!==void 0?p:0,Un.setNonEnumerableProperties([s,h],r),Bet.default(r,s)}_lockWrite(){let t=()=>{throw new TypeError(\"The payload has been already provided\")};this.write=t,this.end=t}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:t}=this,{headers:r}=t,s=!lt.default.undefined(t.form),a=!lt.default.undefined(t.json),n=!lt.default.undefined(t.body),c=s||a||n,f=Un.withoutBody.has(t.method)&&!(t.method===\"GET\"&&t.allowGetBody);if(this._cannotHaveBody=f,c){if(f)throw new TypeError(`The \\`${t.method}\\` method cannot be used with a body`);if([n,s,a].filter(p=>p).length>1)throw new TypeError(\"The `body`, `json` and `form` options are mutually exclusive\");if(n&&!(t.body instanceof Ofe.Readable)&&!lt.default.string(t.body)&&!lt.default.buffer(t.body)&&!Ufe.default(t.body))throw new TypeError(\"The `body` option must be a stream.Readable, string or Buffer\");if(s&&!lt.default.object(t.form))throw new TypeError(\"The `form` option must be an Object\");{let p=!lt.default.string(r[\"content-type\"]);n?(Ufe.default(t.body)&&p&&(r[\"content-type\"]=`multipart/form-data; boundary=${t.body.getBoundary()}`),this[w0]=t.body):s?(p&&(r[\"content-type\"]=\"application/x-www-form-urlencoded\"),this[w0]=new I0.URLSearchParams(t.form).toString()):(p&&(r[\"content-type\"]=\"application/json\"),this[w0]=t.stringifyJson(t.json));let h=await met.default(this[w0],t.headers);lt.default.undefined(r[\"content-length\"])&&lt.default.undefined(r[\"transfer-encoding\"])&&!f&&!lt.default.undefined(h)&&(r[\"content-length\"]=String(h))}}else f?this._lockWrite():this._unlockWrite();this[wI]=Number(r[\"content-length\"])||void 0}async _onResponseBase(t){let{options:r}=this,{url:s}=r;this[Vfe]=t,r.decompress&&(t=het(t));let a=t.statusCode,n=t;n.statusMessage=n.statusMessage?n.statusMessage:Lfe.STATUS_CODES[a],n.url=r.url.toString(),n.requestUrl=this.requestUrl,n.redirectUrls=this.redirects,n.request=this,n.isFromCache=t.fromCache||!1,n.ip=this.ip,n.retryCount=this.retryCount,this[qfe]=n.isFromCache,this[II]=Number(t.headers[\"content-length\"])||void 0,this[$Q]=t,t.once(\"end\",()=>{this[II]=this[CI],this.emit(\"downloadProgress\",this.downloadProgress)}),t.once(\"error\",f=>{t.destroy(),this._beforeError(new Y2(f,this))}),t.once(\"aborted\",()=>{this._beforeError(new Y2({name:\"Error\",message:\"The server aborted pending request\",code:\"ECONNRESET\"},this))}),this.emit(\"downloadProgress\",this.downloadProgress);let c=t.headers[\"set-cookie\"];if(lt.default.object(r.cookieJar)&&c){let f=c.map(async p=>r.cookieJar.setCookie(p,s.toString()));r.ignoreInvalidCookies&&(f=f.map(async p=>p.catch(()=>{})));try{await Promise.all(f)}catch(p){this._beforeError(p);return}}if(r.followRedirect&&t.headers.location&&ket.has(a)){if(t.resume(),this[Eo]&&(this[FH](),delete this[Eo],this[Gfe]()),(a===303&&r.method!==\"GET\"&&r.method!==\"HEAD\"||!r.methodRewriting)&&(r.method=\"GET\",\"body\"in r&&delete r.body,\"json\"in r&&delete r.json,\"form\"in r&&delete r.form,this[w0]=void 0,delete r.headers[\"content-length\"]),this.redirects.length>=r.maxRedirects){this._beforeError(new eR(this));return}try{let p=Buffer.from(t.headers.location,\"binary\").toString(),h=new I0.URL(p,s),E=h.toString();decodeURI(E),h.hostname!==s.hostname||h.port!==s.port?(\"host\"in r.headers&&delete r.headers.host,\"cookie\"in r.headers&&delete r.headers.cookie,\"authorization\"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username=\"\",r.password=\"\")):(h.username=r.username,h.password=r.password),this.redirects.push(E),r.url=h;for(let C of r.hooks.beforeRedirect)await C(r,n);this.emit(\"redirect\",n,r),await this._makeRequest()}catch(p){this._beforeError(p);return}return}if(r.isStream&&r.throwHttpErrors&&!wet.isResponseOk(n)){this._beforeError(new tR(n));return}t.on(\"readable\",()=>{this[XQ]&&this._read()}),this.on(\"resume\",()=>{t.resume()}),this.on(\"pause\",()=>{t.pause()}),t.once(\"end\",()=>{this.push(null)}),this.emit(\"response\",t);for(let f of this[ZQ])if(!f.headersSent){for(let p in t.headers){let h=r.decompress?p!==\"content-encoding\":!0,E=t.headers[p];h&&f.setHeader(p,E)}f.statusCode=a}}async _onResponse(t){try{await this._onResponseBase(t)}catch(r){this._beforeError(r)}}_onRequest(t){let{options:r}=this,{timeout:s,url:a}=r;Aet.default(t),this[FH]=_fe.default(t,s,a);let n=r.cache?\"cacheableResponse\":\"response\";t.once(n,p=>{this._onResponse(p)}),t.once(\"error\",p=>{var h;t.destroy(),(h=t.res)===null||h===void 0||h.removeAllListeners(\"end\"),p=p instanceof _fe.TimeoutError?new iR(p,this.timings,this):new As(p.message,p,this),this._beforeError(p)}),this[Gfe]=yet.default(t,this,Ret),this[Eo]=t,this.emit(\"uploadProgress\",this.uploadProgress);let c=this[w0],f=this.redirects.length===0?this:t;lt.default.nodeStream(c)?(c.pipe(f),c.once(\"error\",p=>{this._beforeError(new nR(p,this))})):(this._unlockWrite(),lt.default.undefined(c)?(this._cannotHaveBody||this._noPipe)&&(f.end(),this._lockWrite()):(this._writeRequest(c,void 0,()=>{}),f.end(),this._lockWrite())),this.emit(\"request\",t)}async _createCacheableRequest(t,r){return new Promise((s,a)=>{Object.assign(r,Eet.default(t)),delete r.url;let n,c=NH.get(r.cache)(r,async f=>{f._readableState.autoDestroy=!1,n&&(await n).emit(\"cacheableResponse\",f),s(f)});r.url=t,c.once(\"error\",a),c.once(\"request\",async f=>{n=f,s(n)})})}async _makeRequest(){var t,r,s,a,n;let{options:c}=this,{headers:f}=c;for(let U in f)if(lt.default.undefined(f[U]))delete f[U];else if(lt.default.null_(f[U]))throw new TypeError(`Use \\`undefined\\` instead of \\`null\\` to delete the \\`${U}\\` header`);if(c.decompress&&lt.default.undefined(f[\"accept-encoding\"])&&(f[\"accept-encoding\"]=Det?\"gzip, deflate, br\":\"gzip, deflate\"),c.cookieJar){let U=await c.cookieJar.getCookieString(c.url.toString());lt.default.nonEmptyString(U)&&(c.headers.cookie=U)}for(let U of c.hooks.beforeRequest){let Y=await U(c);if(!lt.default.undefined(Y)){c.request=()=>Y;break}}c.body&&this[w0]!==c.body&&(this[w0]=c.body);let{agent:p,request:h,timeout:E,url:C}=c;if(c.dnsCache&&!(\"lookup\"in c)&&(c.lookup=c.dnsCache.lookup),C.hostname===\"unix\"){let U=/(?<socketPath>.+?):(?<path>.+)/.exec(`${C.pathname}${C.search}`);if(U?.groups){let{socketPath:Y,path:te}=U.groups;Object.assign(c,{socketPath:Y,path:te,host:\"\"})}}let S=C.protocol===\"https:\",x;c.http2?x=get.auto:x=S?fet.request:Lfe.request;let I=(t=c.request)!==null&&t!==void 0?t:x,T=c.cache?this._createCacheableRequest:I;p&&!c.http2&&(c.agent=p[S?\"https\":\"http\"]),c[Eo]=I,delete c.request,delete c.timeout;let O=c;if(O.shared=(r=c.cacheOptions)===null||r===void 0?void 0:r.shared,O.cacheHeuristic=(s=c.cacheOptions)===null||s===void 0?void 0:s.cacheHeuristic,O.immutableMinTimeToLive=(a=c.cacheOptions)===null||a===void 0?void 0:a.immutableMinTimeToLive,O.ignoreCargoCult=(n=c.cacheOptions)===null||n===void 0?void 0:n.ignoreCargoCult,c.dnsLookupIpVersion!==void 0)try{O.family=jfe.dnsLookupIpVersionToFamily(c.dnsLookupIpVersion)}catch{throw new Error(\"Invalid `dnsLookupIpVersion` option value\")}c.https&&(\"rejectUnauthorized\"in c.https&&(O.rejectUnauthorized=c.https.rejectUnauthorized),c.https.checkServerIdentity&&(O.checkServerIdentity=c.https.checkServerIdentity),c.https.certificateAuthority&&(O.ca=c.https.certificateAuthority),c.https.certificate&&(O.cert=c.https.certificate),c.https.key&&(O.key=c.https.key),c.https.passphrase&&(O.passphrase=c.https.passphrase),c.https.pfx&&(O.pfx=c.https.pfx));try{let U=await T(C,O);lt.default.undefined(U)&&(U=x(C,O)),c.request=h,c.timeout=E,c.agent=p,c.https&&(\"rejectUnauthorized\"in c.https&&delete O.rejectUnauthorized,c.https.checkServerIdentity&&delete O.checkServerIdentity,c.https.certificateAuthority&&delete O.ca,c.https.certificate&&delete O.cert,c.https.key&&delete O.key,c.https.passphrase&&delete O.passphrase,c.https.pfx&&delete O.pfx),Pet(U)?this._onRequest(U):this.writable?(this.once(\"finish\",()=>{this._onResponse(U)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(U)}catch(U){throw U instanceof Mfe.CacheError?new rR(U,this):new As(U.message,U,this)}}async _error(t){try{for(let r of this.options.hooks.beforeError)t=await r(t)}catch(r){t=new As(r.message,r,this)}this.destroy(t)}_beforeError(t){if(this[vI])return;let{options:r}=this,s=this.retryCount+1;this[vI]=!0,t instanceof As||(t=new As(t.message,t,this));let a=t,{response:n}=a;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await Cet.default(n),n.body=n.rawBody.toString()}catch{}}if(this.listenerCount(\"retry\")!==0){let c;try{let f;n&&\"retry-after\"in n.headers&&(f=Number(n.headers[\"retry-after\"]),Number.isNaN(f)?(f=Date.parse(n.headers[\"retry-after\"])-Date.now(),f<=0&&(f=1)):f*=1e3),c=await r.retry.calculateDelay({attemptCount:s,retryOptions:r.retry,error:a,retryAfter:f,computedValue:vet.default({attemptCount:s,retryOptions:r.retry,error:a,retryAfter:f,computedValue:0})})}catch(f){this._error(new As(f.message,f,this));return}if(c){let f=async()=>{try{for(let p of this.options.hooks.beforeRetry)await p(this.options,a,s)}catch(p){this._error(new As(p.message,t,this));return}this.destroyed||(this.destroy(),this.emit(\"retry\",s,t))};this[Yfe]=setTimeout(f,c);return}}this._error(a)})()}_read(){this[XQ]=!0;let t=this[$Q];if(t&&!this[vI]){t.readableLength&&(this[XQ]=!1);let r;for(;(r=t.read())!==null;){this[CI]+=r.length,this[Wfe]=!0;let s=this.downloadProgress;s.percent<1&&this.emit(\"downloadProgress\",s),this.push(r)}}}_write(t,r,s){let a=()=>{this._writeRequest(t,r,s)};this.requestInitialized?a():this[V2].push(a)}_writeRequest(t,r,s){this[Eo].destroyed||(this._progressCallbacks.push(()=>{this[BI]+=Buffer.byteLength(t,r);let a=this.uploadProgress;a.percent<1&&this.emit(\"uploadProgress\",a)}),this[Eo].write(t,r,a=>{!a&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),s(a)}))}_final(t){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(Eo in this)){t();return}if(this[Eo].destroyed){t();return}this[Eo].end(s=>{s||(this[wI]=this[BI],this.emit(\"uploadProgress\",this.uploadProgress),this[Eo].emit(\"upload-complete\")),t(s)})};this.requestInitialized?r():this[V2].push(r)}_destroy(t,r){var s;this[vI]=!0,clearTimeout(this[Yfe]),Eo in this&&(this[FH](),!((s=this[$Q])===null||s===void 0)&&s.complete||this[Eo].destroy()),t!==null&&!lt.default.undefined(t)&&!(t instanceof As)&&(t=new As(t.message,t,this)),r(t)}get _isAboutToError(){return this[vI]}get ip(){var t;return(t=this.socket)===null||t===void 0?void 0:t.remoteAddress}get aborted(){var t,r,s;return((r=(t=this[Eo])===null||t===void 0?void 0:t.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!(!((s=this[Vfe])===null||s===void 0)&&s.complete)}get socket(){var t,r;return(r=(t=this[Eo])===null||t===void 0?void 0:t.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let t;return this[II]?t=this[CI]/this[II]:this[II]===this[CI]?t=1:t=0,{percent:t,transferred:this[CI],total:this[II]}}get uploadProgress(){let t;return this[wI]?t=this[BI]/this[wI]:this[wI]===this[BI]?t=1:t=0,{percent:t,transferred:this[BI],total:this[wI]}}get timings(){var t;return(t=this[Eo])===null||t===void 0?void 0:t.timings}get isFromCache(){return this[qfe]}pipe(t,r){if(this[Wfe])throw new Error(\"Failed to pipe. The response has been emitted already.\");return t instanceof RH.ServerResponse&&this[ZQ].add(t),super.pipe(t,r)}unpipe(t){return t instanceof RH.ServerResponse&&this[ZQ].delete(t),super.unpipe(t),this}};Un.default=oR});var J2=G(ju=>{\"use strict\";var Tet=ju&&ju.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Fet=ju&&ju.__exportStar||function(e,t){for(var r in e)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(t,r)&&Tet(t,e,r)};Object.defineProperty(ju,\"__esModule\",{value:!0});ju.CancelError=ju.ParseError=void 0;var Kfe=K2(),OH=class extends Kfe.RequestError{constructor(t,r){let{options:s}=r.request;super(`${t.message} in \"${s.url.toString()}\"`,t,r.request),this.name=\"ParseError\"}};ju.ParseError=OH;var LH=class extends Kfe.RequestError{constructor(t){super(\"Promise was canceled\",{},t),this.name=\"CancelError\"}get isCanceled(){return!0}};ju.CancelError=LH;Fet(K2(),ju)});var zfe=G(MH=>{\"use strict\";Object.defineProperty(MH,\"__esModule\",{value:!0});var Jfe=J2(),Net=(e,t,r,s)=>{let{rawBody:a}=e;try{if(t===\"text\")return a.toString(s);if(t===\"json\")return a.length===0?\"\":r(a.toString());if(t===\"buffer\")return a;throw new Jfe.ParseError({message:`Unknown body type '${t}'`,name:\"Error\"},e)}catch(n){throw new Jfe.ParseError(n,e)}};MH.default=Net});var UH=G(B0=>{\"use strict\";var Oet=B0&&B0.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Let=B0&&B0.__exportStar||function(e,t){for(var r in e)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(t,r)&&Oet(t,e,r)};Object.defineProperty(B0,\"__esModule\",{value:!0});var Met=Ie(\"events\"),Uet=Op(),_et=Jce(),aR=J2(),Zfe=zfe(),Xfe=K2(),Het=CH(),jet=PH(),$fe=xH(),Get=[\"request\",\"response\",\"redirect\",\"uploadProgress\",\"downloadProgress\"];function eAe(e){let t,r,s=new Met.EventEmitter,a=new _et((c,f,p)=>{let h=E=>{let C=new Xfe.default(void 0,e);C.retryCount=E,C._noPipe=!0,p(()=>C.destroy()),p.shouldReject=!1,p(()=>f(new aR.CancelError(C))),t=C,C.once(\"response\",async I=>{var T;if(I.retryCount=E,I.request.aborted)return;let O;try{O=await jet.default(C),I.rawBody=O}catch{return}if(C._isAboutToError)return;let U=((T=I.headers[\"content-encoding\"])!==null&&T!==void 0?T:\"\").toLowerCase(),Y=[\"gzip\",\"deflate\",\"br\"].includes(U),{options:te}=C;if(Y&&!te.decompress)I.body=O;else try{I.body=Zfe.default(I,te.responseType,te.parseJson,te.encoding)}catch(ie){if(I.body=O.toString(),$fe.isResponseOk(I)){C._beforeError(ie);return}}try{for(let[ie,ue]of te.hooks.afterResponse.entries())I=await ue(I,async ae=>{let de=Xfe.default.normalizeArguments(void 0,{...ae,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},te);de.hooks.afterResponse=de.hooks.afterResponse.slice(0,ie);for(let Ce of de.hooks.beforeRetry)await Ce(de);let Ae=eAe(de);return p(()=>{Ae.catch(()=>{}),Ae.cancel()}),Ae})}catch(ie){C._beforeError(new aR.RequestError(ie.message,ie,C));return}if(!$fe.isResponseOk(I)){C._beforeError(new aR.HTTPError(I));return}r=I,c(C.options.resolveBodyOnly?I.body:I)});let S=I=>{if(a.isCanceled)return;let{options:T}=C;if(I instanceof aR.HTTPError&&!T.throwHttpErrors){let{response:O}=I;c(C.options.resolveBodyOnly?O.body:O);return}f(I)};C.once(\"error\",S);let x=C.options.body;C.once(\"retry\",(I,T)=>{var O,U;if(x===((O=T.request)===null||O===void 0?void 0:O.options.body)&&Uet.default.nodeStream((U=T.request)===null||U===void 0?void 0:U.options.body)){S(T);return}h(I)}),Het.default(C,s,Get)};h(0)});a.on=(c,f)=>(s.on(c,f),a);let n=c=>{let f=(async()=>{await a;let{options:p}=r.request;return Zfe.default(r,c,p.parseJson,p.encoding)})();return Object.defineProperties(f,Object.getOwnPropertyDescriptors(a)),f};return a.json=()=>{let{headers:c}=t.options;return!t.writableFinished&&c.accept===void 0&&(c.accept=\"application/json\"),n(\"json\")},a.buffer=()=>n(\"buffer\"),a.text=()=>n(\"text\"),a}B0.default=eAe;Let(J2(),B0)});var tAe=G(_H=>{\"use strict\";Object.defineProperty(_H,\"__esModule\",{value:!0});var qet=J2();function Wet(e,...t){let r=(async()=>{if(e instanceof qet.RequestError)try{for(let a of t)if(a)for(let n of a)e=await n(e)}catch(a){e=a}throw e})(),s=()=>r;return r.json=s,r.text=s,r.buffer=s,r.on=s,r}_H.default=Wet});var iAe=G(HH=>{\"use strict\";Object.defineProperty(HH,\"__esModule\",{value:!0});var rAe=Op();function nAe(e){for(let t of Object.values(e))(rAe.default.plainObject(t)||rAe.default.array(t))&&nAe(t);return Object.freeze(e)}HH.default=nAe});var oAe=G(sAe=>{\"use strict\";Object.defineProperty(sAe,\"__esModule\",{value:!0})});var jH=G(Oc=>{\"use strict\";var Vet=Oc&&Oc.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Yet=Oc&&Oc.__exportStar||function(e,t){for(var r in e)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(t,r)&&Vet(t,e,r)};Object.defineProperty(Oc,\"__esModule\",{value:!0});Oc.defaultHandler=void 0;var aAe=Op(),Nc=UH(),Ket=tAe(),cR=K2(),Jet=iAe(),zet={RequestError:Nc.RequestError,CacheError:Nc.CacheError,ReadError:Nc.ReadError,HTTPError:Nc.HTTPError,MaxRedirectsError:Nc.MaxRedirectsError,TimeoutError:Nc.TimeoutError,ParseError:Nc.ParseError,CancelError:Nc.CancelError,UnsupportedProtocolError:Nc.UnsupportedProtocolError,UploadError:Nc.UploadError},Zet=async e=>new Promise(t=>{setTimeout(t,e)}),{normalizeArguments:lR}=cR.default,lAe=(...e)=>{let t;for(let r of e)t=lR(void 0,r,t);return t},Xet=e=>e.isStream?new cR.default(void 0,e):Nc.default(e),$et=e=>\"defaults\"in e&&\"options\"in e.defaults,ett=[\"get\",\"post\",\"put\",\"patch\",\"head\",\"delete\"];Oc.defaultHandler=(e,t)=>t(e);var cAe=(e,t)=>{if(e)for(let r of e)r(t)},uAe=e=>{e._rawHandlers=e.handlers,e.handlers=e.handlers.map(s=>(a,n)=>{let c,f=s(a,p=>(c=n(p),c));if(f!==c&&!a.isStream&&c){let p=f,{then:h,catch:E,finally:C}=p;Object.setPrototypeOf(p,Object.getPrototypeOf(c)),Object.defineProperties(p,Object.getOwnPropertyDescriptors(c)),p.then=h,p.catch=E,p.finally=C}return f});let t=(s,a={},n)=>{var c,f;let p=0,h=E=>e.handlers[p++](E,p===e.handlers.length?Xet:h);if(aAe.default.plainObject(s)){let E={...s,...a};cR.setNonEnumerableProperties([s,a],E),a=E,s=void 0}try{let E;try{cAe(e.options.hooks.init,a),cAe((c=a.hooks)===null||c===void 0?void 0:c.init,a)}catch(S){E=S}let C=lR(s,a,n??e.options);if(C[cR.kIsNormalizedAlready]=!0,E)throw new Nc.RequestError(E.message,E,C);return h(C)}catch(E){if(a.isStream)throw E;return Ket.default(E,e.options.hooks.beforeError,(f=a.hooks)===null||f===void 0?void 0:f.beforeError)}};t.extend=(...s)=>{let a=[e.options],n=[...e._rawHandlers],c;for(let f of s)$et(f)?(a.push(f.defaults.options),n.push(...f.defaults._rawHandlers),c=f.defaults.mutableDefaults):(a.push(f),\"handlers\"in f&&n.push(...f.handlers),c=f.mutableDefaults);return n=n.filter(f=>f!==Oc.defaultHandler),n.length===0&&n.push(Oc.defaultHandler),uAe({options:lAe(...a),handlers:n,mutableDefaults:!!c})};let r=async function*(s,a){let n=lR(s,a,e.options);n.resolveBodyOnly=!1;let c=n.pagination;if(!aAe.default.object(c))throw new TypeError(\"`options.pagination` must be implemented\");let f=[],{countLimit:p}=c,h=0;for(;h<c.requestLimit;){h!==0&&await Zet(c.backoff);let E=await t(void 0,void 0,n),C=await c.transform(E),S=[];for(let I of C)if(c.filter(I,f,S)&&(!c.shouldContinue(I,f,S)||(yield I,c.stackAllItems&&f.push(I),S.push(I),--p<=0)))return;let x=c.paginate(E,f,S);if(x===!1)return;x===E.request.options?n=E.request.options:x!==void 0&&(n=lR(void 0,x,n)),h++}};t.paginate=r,t.paginate.all=async(s,a)=>{let n=[];for await(let c of r(s,a))n.push(c);return n},t.paginate.each=r,t.stream=(s,a)=>t(s,{...a,isStream:!0});for(let s of ett)t[s]=(a,n)=>t(a,{...n,method:s}),t.stream[s]=(a,n)=>t(a,{...n,method:s,isStream:!0});return Object.assign(t,zet),Object.defineProperty(t,\"defaults\",{value:e.mutableDefaults?e:Jet.default(e),writable:e.mutableDefaults,configurable:e.mutableDefaults,enumerable:!0}),t.mergeOptions=lAe,t};Oc.default=uAe;Yet(oAe(),Oc)});var pAe=G((Lp,uR)=>{\"use strict\";var ttt=Lp&&Lp.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),fAe=Lp&&Lp.__exportStar||function(e,t){for(var r in e)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(t,r)&&ttt(t,e,r)};Object.defineProperty(Lp,\"__esModule\",{value:!0});var rtt=Ie(\"url\"),AAe=jH(),ntt={options:{method:\"GET\",retry:{limit:2,methods:[\"GET\",\"PUT\",\"HEAD\",\"DELETE\",\"OPTIONS\",\"TRACE\"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:[\"ETIMEDOUT\",\"ECONNRESET\",\"EADDRINUSE\",\"ECONNREFUSED\",\"EPIPE\",\"ENOTFOUND\",\"ENETUNREACH\",\"EAI_AGAIN\"],maxRetryAfter:void 0,calculateDelay:({computedValue:e})=>e},timeout:{},headers:{\"user-agent\":\"got (https://github.com/sindresorhus/got)\"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:\"text\",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:\"\",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:e=>e.request.options.responseType===\"json\"?e.body:JSON.parse(e.body),paginate:e=>{if(!Reflect.has(e.headers,\"link\"))return!1;let t=e.headers.link.split(\",\"),r;for(let s of t){let a=s.split(\";\");if(a[1].includes(\"next\")){r=a[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new rtt.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:e=>JSON.parse(e),stringifyJson:e=>JSON.stringify(e),cacheOptions:{}},handlers:[AAe.defaultHandler],mutableDefaults:!1},GH=AAe.default(ntt);Lp.default=GH;uR.exports=GH;uR.exports.default=GH;uR.exports.__esModule=!0;fAe(jH(),Lp);fAe(UH(),Lp)});var nn={};Yt(nn,{Method:()=>EAe,del:()=>ltt,get:()=>VH,getNetworkSettings:()=>yAe,post:()=>YH,put:()=>att,request:()=>z2});async function qH(e){return Zl(gAe,e,()=>le.readFilePromise(e).then(t=>(gAe.set(e,t),t)))}function ott({statusCode:e,statusMessage:t},r){let s=jt(r,e,gt.NUMBER),a=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${e}`;return XE(r,`${s}${t?` (${t})`:\"\"}`,a)}async function fR(e,{configuration:t,customErrorMessage:r}){try{return await e}catch(s){if(s.name!==\"HTTPError\")throw s;let a=r?.(s,t)??s.response.body?.error;a==null&&(s.message.startsWith(\"Response code\")?a=\"The remote server failed to provide the requested resource\":a=s.message),s.code===\"ETIMEDOUT\"&&s.event===\"socket\"&&(a+=`(can be increased via ${jt(t,\"httpTimeout\",gt.SETTING)})`);let n=new _t(35,a,c=>{s.response&&c.reportError(35,`  ${Zf(t,{label:\"Response Code\",value:Mu(gt.NO_HINT,ott(s.response,t))})}`),s.request&&(c.reportError(35,`  ${Zf(t,{label:\"Request Method\",value:Mu(gt.NO_HINT,s.request.options.method)})}`),c.reportError(35,`  ${Zf(t,{label:\"Request URL\",value:Mu(gt.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&c.reportError(35,`  ${Zf(t,{label:\"Request Redirects\",value:Mu(gt.NO_HINT,O4(t,s.request.redirects,gt.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&c.reportError(35,`  ${Zf(t,{label:\"Request Retry Count\",value:Mu(gt.NO_HINT,`${jt(t,s.request.retryCount,gt.NUMBER)} (can be increased via ${jt(t,\"httpRetry\",gt.SETTING)})`)})}`)});throw n.originalError=s,n}}function yAe(e,t){let r=[...t.configuration.get(\"networkSettings\")].sort(([c],[f])=>f.length-c.length),s={enableNetwork:void 0,httpsCaFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},a=Object.keys(s),n=typeof e==\"string\"?new URL(e):e;for(let[c,f]of r)if(WH.default.isMatch(n.hostname,c))for(let p of a){let h=f.get(p);h!==null&&typeof s[p]>\"u\"&&(s[p]=h)}for(let c of a)typeof s[c]>\"u\"&&(s[c]=t.configuration.get(c));return s}async function z2(e,t,{configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c=\"GET\",wrapNetworkRequest:f}){let p={target:e,body:t,configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c},h=async()=>await ctt(e,t,p),E=typeof f<\"u\"?await f(h,p):h;return await(await r.reduceHook(S=>S.wrapNetworkRequest,E,p))()}async function VH(e,{configuration:t,jsonResponse:r,customErrorMessage:s,wrapNetworkRequest:a,...n}){let c=()=>fR(z2(e,null,{configuration:t,wrapNetworkRequest:a,...n}),{configuration:t,customErrorMessage:s}).then(p=>p.body),f=await(typeof a<\"u\"?c():Zl(hAe,e,()=>c().then(p=>(hAe.set(e,p),p))));return r?JSON.parse(f.toString()):f}async function att(e,t,{customErrorMessage:r,...s}){return(await fR(z2(e,t,{...s,method:\"PUT\"}),{customErrorMessage:r,configuration:s.configuration})).body}async function YH(e,t,{customErrorMessage:r,...s}){return(await fR(z2(e,t,{...s,method:\"POST\"}),{customErrorMessage:r,configuration:s.configuration})).body}async function ltt(e,{customErrorMessage:t,...r}){return(await fR(z2(e,null,{...r,method:\"DELETE\"}),{customErrorMessage:t,configuration:r.configuration})).body}async function ctt(e,t,{configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c=\"GET\"}){let f=typeof e==\"string\"?new URL(e):e,p=yAe(f,{configuration:r});if(p.enableNetwork===!1)throw new _t(80,`Request to '${f.href}' has been blocked because of your configuration settings`);if(f.protocol===\"http:\"&&!WH.default.isMatch(f.hostname,r.get(\"unsafeHttpWhitelist\")))throw new _t(81,`Unsafe http requests must be explicitly whitelisted in your configuration (${f.hostname})`);let h={headers:s,method:c};h.responseType=n?\"json\":\"buffer\",t!==null&&(Buffer.isBuffer(t)||!a&&typeof t==\"string\"?h.body=t:h.json=t);let E=r.get(\"httpTimeout\"),C=r.get(\"httpRetry\"),S=r.get(\"enableStrictSsl\"),x=p.httpsCaFilePath,I=p.httpsCertFilePath,T=p.httpsKeyFilePath,{default:O}=await Promise.resolve().then(()=>et(pAe())),U=x?await qH(x):void 0,Y=I?await qH(I):void 0,te=T?await qH(T):void 0,ie={rejectUnauthorized:S,ca:U,cert:Y,key:te},ue={http:p.httpProxy?new jce({proxy:p.httpProxy,proxyRequestOptions:ie}):itt,https:p.httpsProxy?new Gce({proxy:p.httpsProxy,proxyRequestOptions:ie}):stt},ae=O.extend({timeout:{socket:E},retry:C,agent:ue,https:{rejectUnauthorized:S,certificateAuthority:U,certificate:Y,key:te},...h});return r.getLimit(\"networkConcurrency\")(()=>ae(f))}var dAe,mAe,WH,hAe,gAe,itt,stt,EAe,AR=Ze(()=>{Dt();qce();dAe=Ie(\"https\"),mAe=Ie(\"http\"),WH=et(Jo());Tc();kc();xc();hAe=new Map,gAe=new Map,itt=new mAe.Agent({keepAlive:!0}),stt=new dAe.Agent({keepAlive:!0});EAe=(a=>(a.GET=\"GET\",a.PUT=\"PUT\",a.POST=\"POST\",a.DELETE=\"DELETE\",a))(EAe||{})});var Ui={};Yt(Ui,{availableParallelism:()=>JH,getArchitecture:()=>Z2,getArchitectureName:()=>htt,getArchitectureSet:()=>KH,getCaller:()=>ytt,major:()=>utt,openUrl:()=>ftt});function ptt(){if(process.platform!==\"linux\")return null;let e;try{e=le.readFileSync(Att)}catch{}if(typeof e<\"u\"){if(e&&(e.includes(\"GLIBC\")||e.includes(\"GNU libc\")||e.includes(\"GNU C Library\")))return\"glibc\";if(e&&e.includes(\"musl\"))return\"musl\"}let r=(process.report?.getReport()??{}).sharedObjects??[],s=/\\/(?:(ld-linux-|[^/]+-linux-gnu\\/)|(libc.musl-|ld-musl-))/;return f0(r,a=>{let n=a.match(s);if(!n)return f0.skip;if(n[1])return\"glibc\";if(n[2])return\"musl\";throw new Error(\"Assertion failed: Expected the libc variant to have been detected\")})??null}function Z2(){return CAe=CAe??{os:(process.env.YARN_IS_TEST_ENV?process.env.YARN_OS_OVERRIDE:void 0)??process.platform,cpu:(process.env.YARN_IS_TEST_ENV?process.env.YARN_CPU_OVERRIDE:void 0)??process.arch,libc:(process.env.YARN_IS_TEST_ENV?process.env.YARN_LIBC_OVERRIDE:void 0)??ptt()}}function htt(e=Z2()){return e.libc?`${e.os}-${e.cpu}-${e.libc}`:`${e.os}-${e.cpu}`}function KH(){let e=Z2();return wAe=wAe??{os:[e.os],cpu:[e.cpu],libc:e.libc?[e.libc]:[]}}function mtt(e){let t=gtt.exec(e);if(!t)return null;let r=t[2]&&t[2].indexOf(\"native\")===0,s=t[2]&&t[2].indexOf(\"eval\")===0,a=dtt.exec(t[2]);return s&&a!=null&&(t[2]=a[1],t[3]=a[2],t[4]=a[3]),{file:r?null:t[2],methodName:t[1]||\"<unknown>\",arguments:r?[t[2]]:[],line:t[3]?+t[3]:null,column:t[4]?+t[4]:null}}function ytt(){let t=new Error().stack.split(`\n`)[3];return mtt(t)}function JH(){return typeof pR.default.availableParallelism<\"u\"?pR.default.availableParallelism():Math.max(1,pR.default.cpus().length)}var pR,utt,IAe,ftt,Att,CAe,wAe,gtt,dtt,hR=Ze(()=>{Dt();pR=et(Ie(\"os\"));gR();xc();utt=Number(process.versions.node.split(\".\")[0]),IAe=new Map([[\"darwin\",\"open\"],[\"linux\",\"xdg-open\"],[\"win32\",\"explorer.exe\"]]).get(process.platform),ftt=typeof IAe<\"u\"?async e=>{try{return await zH(IAe,[e],{cwd:K.cwd()}),!0}catch{return!1}}:void 0,Att=\"/usr/bin/ldd\";gtt=/^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,dtt=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/});function rj(e,t,r,s,a){let n=M2(r);if(s.isArray||s.type===\"ANY\"&&Array.isArray(n))return Array.isArray(n)?n.map((c,f)=>ZH(e,`${t}[${f}]`,c,s,a)):String(n).split(/,/).map(c=>ZH(e,t,c,s,a));if(Array.isArray(n))throw new Error(`Non-array configuration settings \"${t}\" cannot be an array`);return ZH(e,t,r,s,a)}function ZH(e,t,r,s,a){let n=M2(r);switch(s.type){case\"ANY\":return FQ(n);case\"SHAPE\":return wtt(e,t,r,s,a);case\"MAP\":return Btt(e,t,r,s,a)}if(n===null&&!s.isNullable&&s.default!==null)throw new Error(`Non-nullable configuration settings \"${t}\" cannot be set to null`);if(\"values\"in s&&s.values?.includes(n))return n;let f=(()=>{if(s.type===\"BOOLEAN\"&&typeof n!=\"string\")return w2(n);if(typeof n!=\"string\")throw new Error(`Expected configuration setting \"${t}\" to be a string, got ${typeof n}`);let p=Vk(n,{env:e.env});switch(s.type){case\"ABSOLUTE_PATH\":{let h=a,E=S8(r);return E&&E[0]!==\"<\"&&(h=K.dirname(E)),K.resolve(h,fe.toPortablePath(p))}case\"LOCATOR_LOOSE\":return Rp(p,!1);case\"NUMBER\":return parseInt(p);case\"LOCATOR\":return Rp(p);case\"BOOLEAN\":return w2(p);case\"DURATION\":return Yk(p,s.unit);default:return p}})();if(\"values\"in s&&s.values&&!s.values.includes(f))throw new Error(`Invalid value, expected one of ${s.values.join(\", \")}`);return f}function wtt(e,t,r,s,a){let n=M2(r);if(typeof n!=\"object\"||Array.isArray(n))throw new st(`Object configuration settings \"${t}\" must be an object`);let c=nj(e,s,{ignoreArrays:!0});if(n===null)return c;for(let[f,p]of Object.entries(n)){let h=`${t}.${f}`;if(!s.properties[f])throw new st(`Unrecognized configuration settings found: ${t}.${f} - run \"yarn config\" to see the list of settings supported in Yarn`);c.set(f,rj(e,h,p,s.properties[f],a))}return c}function Btt(e,t,r,s,a){let n=M2(r),c=new Map;if(typeof n!=\"object\"||Array.isArray(n))throw new st(`Map configuration settings \"${t}\" must be an object`);if(n===null)return c;for(let[f,p]of Object.entries(n)){let h=s.normalizeKeys?s.normalizeKeys(f):f,E=`${t}['${h}']`,C=s.valueDefinition;c.set(h,rj(e,E,p,C,a))}return c}function nj(e,t,{ignoreArrays:r=!1}={}){switch(t.type){case\"SHAPE\":{if(t.isArray&&!r)return[];let s=new Map;for(let[a,n]of Object.entries(t.properties))s.set(a,nj(e,n));return s}case\"MAP\":return t.isArray&&!r?[]:new Map;case\"ABSOLUTE_PATH\":return t.default===null?null:e.projectCwd===null?Array.isArray(t.default)?t.default.map(s=>K.normalize(s)):K.isAbsolute(t.default)?K.normalize(t.default):t.isNullable?null:void 0:Array.isArray(t.default)?t.default.map(s=>K.resolve(e.projectCwd,s)):K.resolve(e.projectCwd,t.default);case\"DURATION\":return Yk(t.default,t.unit);default:return t.default}}function mR(e,t,r){if(t.type===\"SECRET\"&&typeof e==\"string\"&&r.hideSecrets)return Ctt;if(t.type===\"ABSOLUTE_PATH\"&&typeof e==\"string\"&&r.getNativePaths)return fe.fromPortablePath(e);if(t.isArray&&Array.isArray(e)){let s=[];for(let a of e)s.push(mR(a,t,r));return s}if(t.type===\"MAP\"&&e instanceof Map){if(e.size===0)return;let s=new Map;for(let[a,n]of e.entries()){let c=mR(n,t.valueDefinition,r);typeof c<\"u\"&&s.set(a,c)}return s}if(t.type===\"SHAPE\"&&e instanceof Map){if(e.size===0)return;let s=new Map;for(let[a,n]of e.entries()){let c=t.properties[a],f=mR(n,c,r);typeof f<\"u\"&&s.set(a,f)}return s}return e}function vtt(){let e={};for(let[t,r]of Object.entries(process.env))t=t.toLowerCase(),t.startsWith(yR)&&(t=(0,vAe.default)(t.slice(yR.length)),e[t]=r);return e}function $H(){let e=`${yR}rc_filename`;for(let[t,r]of Object.entries(process.env))if(t.toLowerCase()===e&&typeof r==\"string\")return r;return ej}async function BAe(e){try{return await le.readFilePromise(e)}catch{return Buffer.of()}}async function Stt(e,t){return Buffer.compare(...await Promise.all([BAe(e),BAe(t)]))===0}async function Dtt(e,t){let[r,s]=await Promise.all([le.statPromise(e),le.statPromise(t)]);return r.dev===s.dev&&r.ino===s.ino}async function Ptt({configuration:e,selfPath:t}){let r=e.get(\"yarnPath\");return e.get(\"ignorePath\")||r===null||r===t||await btt(r,t)?null:r}var vAe,Mp,SAe,DAe,bAe,XH,Ett,X2,Itt,Up,yR,ej,Ctt,SI,PAe,tj,ER,dR,btt,ze,$2=Ze(()=>{Dt();Bc();vAe=et(jte()),Mp=et(Rd());Vt();SAe=et(Nre()),DAe=Ie(\"module\"),bAe=et(Nd()),XH=Ie(\"stream\");Cce();cI();m8();y8();E8();Tce();I8();$d();Mce();OQ();kc();y0();AR();xc();hR();Fp();Zo();Ett=function(){if(!Mp.GITHUB_ACTIONS||!process.env.GITHUB_EVENT_PATH)return!1;let e=fe.toPortablePath(process.env.GITHUB_EVENT_PATH),t;try{t=le.readJsonSync(e)}catch{return!1}return!(!(\"repository\"in t)||!t.repository||(t.repository.private??!0))}(),X2=new Set([\"@yarnpkg/plugin-constraints\",\"@yarnpkg/plugin-exec\",\"@yarnpkg/plugin-interactive-tools\",\"@yarnpkg/plugin-stage\",\"@yarnpkg/plugin-typescript\",\"@yarnpkg/plugin-version\",\"@yarnpkg/plugin-workspace-tools\"]),Itt=new Set([\"isTestEnv\",\"injectNpmUser\",\"injectNpmPassword\",\"injectNpm2FaToken\",\"zipDataEpilogue\",\"cacheCheckpointOverride\",\"cacheVersionOverride\",\"lockfileVersionOverride\",\"osOverride\",\"cpuOverride\",\"libcOverride\",\"binFolder\",\"version\",\"flags\",\"profile\",\"gpg\",\"ignoreNode\",\"wrapOutput\",\"home\",\"confDir\",\"registry\",\"ignoreCwd\"]),Up=/^(?!v)[a-z0-9._-]+$/i,yR=\"yarn_\",ej=\".yarnrc.yml\",Ctt=\"********\",SI=(C=>(C.ANY=\"ANY\",C.BOOLEAN=\"BOOLEAN\",C.ABSOLUTE_PATH=\"ABSOLUTE_PATH\",C.LOCATOR=\"LOCATOR\",C.LOCATOR_LOOSE=\"LOCATOR_LOOSE\",C.NUMBER=\"NUMBER\",C.STRING=\"STRING\",C.DURATION=\"DURATION\",C.SECRET=\"SECRET\",C.SHAPE=\"SHAPE\",C.MAP=\"MAP\",C))(SI||{}),PAe=gt,tj=(c=>(c.MILLISECONDS=\"ms\",c.SECONDS=\"s\",c.MINUTES=\"m\",c.HOURS=\"h\",c.DAYS=\"d\",c.WEEKS=\"w\",c))(tj||{}),ER=(r=>(r.JUNCTIONS=\"junctions\",r.SYMLINKS=\"symlinks\",r))(ER||{}),dR={lastUpdateCheck:{description:\"Last timestamp we checked whether new Yarn versions were available\",type:\"STRING\",default:null},yarnPath:{description:\"Path to the local executable that must be used over the global one\",type:\"ABSOLUTE_PATH\",default:null},ignorePath:{description:\"If true, the local executable will be ignored when using the global one\",type:\"BOOLEAN\",default:!1},globalFolder:{description:\"Folder where all system-global files are stored\",type:\"ABSOLUTE_PATH\",default:b8()},cacheFolder:{description:\"Folder where the cache files must be written\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/cache\"},compressionLevel:{description:\"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)\",type:\"NUMBER\",values:[\"mixed\",0,1,2,3,4,5,6,7,8,9],default:0},virtualFolder:{description:\"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/__virtual__\"},installStatePath:{description:\"Path of the file where the install state will be persisted\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/install-state.gz\"},immutablePatterns:{description:\"Array of glob patterns; files matching them won't be allowed to change during immutable installs\",type:\"STRING\",default:[],isArray:!0},rcFilename:{description:\"Name of the files where the configuration can be found\",type:\"STRING\",default:$H()},enableGlobalCache:{description:\"If true, the system-wide cache folder will be used regardless of `cache-folder`\",type:\"BOOLEAN\",default:!0},cacheMigrationMode:{description:\"Defines the conditions under which Yarn upgrades should cause the cache archives to be regenerated.\",type:\"STRING\",values:[\"always\",\"match-spec\",\"required-only\"],default:\"always\"},enableColors:{description:\"If true, the CLI is allowed to use colors in its output\",type:\"BOOLEAN\",default:Zk,defaultText:\"<dynamic>\"},enableHyperlinks:{description:\"If true, the CLI is allowed to use hyperlinks in its output\",type:\"BOOLEAN\",default:N4,defaultText:\"<dynamic>\"},enableInlineBuilds:{description:\"If true, the CLI will print the build output on the command line\",type:\"BOOLEAN\",default:Mp.isCI,defaultText:\"<dynamic>\"},enableMessageNames:{description:\"If true, the CLI will prefix most messages with codes suitable for search engines\",type:\"BOOLEAN\",default:!0},enableProgressBars:{description:\"If true, the CLI is allowed to show a progress bar for long-running events\",type:\"BOOLEAN\",default:!Mp.isCI,defaultText:\"<dynamic>\"},enableTimers:{description:\"If true, the CLI is allowed to print the time spent executing commands\",type:\"BOOLEAN\",default:!0},enableTips:{description:\"If true, installs will print a helpful message every day of the week\",type:\"BOOLEAN\",default:!Mp.isCI,defaultText:\"<dynamic>\"},preferInteractive:{description:\"If true, the CLI will automatically use the interactive mode when called from a TTY\",type:\"BOOLEAN\",default:!1},preferTruncatedLines:{description:\"If true, the CLI will truncate lines that would go beyond the size of the terminal\",type:\"BOOLEAN\",default:!1},progressBarStyle:{description:\"Which style of progress bar should be used (only when progress bars are enabled)\",type:\"STRING\",default:void 0,defaultText:\"<dynamic>\"},defaultLanguageName:{description:\"Default language mode that should be used when a package doesn't offer any insight\",type:\"STRING\",default:\"node\"},defaultProtocol:{description:\"Default resolution protocol used when resolving pure semver and tag ranges\",type:\"STRING\",default:\"npm:\"},enableTransparentWorkspaces:{description:\"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol\",type:\"BOOLEAN\",default:!0},supportedArchitectures:{description:\"Architectures that Yarn will fetch and inject into the resolver\",type:\"SHAPE\",properties:{os:{description:\"Array of supported process.platform strings, or null to target them all\",type:\"STRING\",isArray:!0,isNullable:!0,default:[\"current\"]},cpu:{description:\"Array of supported process.arch strings, or null to target them all\",type:\"STRING\",isArray:!0,isNullable:!0,default:[\"current\"]},libc:{description:\"Array of supported libc libraries, or null to target them all\",type:\"STRING\",isArray:!0,isNullable:!0,default:[\"current\"]}}},enableMirror:{description:\"If true, the downloaded packages will be retrieved and stored in both the local and global folders\",type:\"BOOLEAN\",default:!0},enableNetwork:{description:\"If false, Yarn will refuse to use the network if required to\",type:\"BOOLEAN\",default:!0},enableOfflineMode:{description:\"If true, Yarn will attempt to retrieve files and metadata from the global cache rather than the network\",type:\"BOOLEAN\",default:!1},httpProxy:{description:\"URL of the http proxy that must be used for outgoing http requests\",type:\"STRING\",default:null},httpsProxy:{description:\"URL of the http proxy that must be used for outgoing https requests\",type:\"STRING\",default:null},unsafeHttpWhitelist:{description:\"List of the hostnames for which http queries are allowed (glob patterns are supported)\",type:\"STRING\",default:[],isArray:!0},httpTimeout:{description:\"Timeout of each http request\",type:\"DURATION\",unit:\"ms\",default:\"1m\"},httpRetry:{description:\"Retry times on http failure\",type:\"NUMBER\",default:3},networkConcurrency:{description:\"Maximal number of concurrent requests\",type:\"NUMBER\",default:50},taskPoolConcurrency:{description:\"Maximal amount of concurrent heavy task processing\",type:\"NUMBER\",default:JH()},taskPoolMode:{description:\"Execution strategy for heavy tasks\",type:\"STRING\",values:[\"async\",\"workers\"],default:\"workers\"},networkSettings:{description:\"Network settings per hostname (glob patterns are supported)\",type:\"MAP\",valueDefinition:{description:\"\",type:\"SHAPE\",properties:{httpsCaFilePath:{description:\"Path to file containing one or multiple Certificate Authority signing certificates\",type:\"ABSOLUTE_PATH\",default:null},enableNetwork:{description:\"If false, the package manager will refuse to use the network if required to\",type:\"BOOLEAN\",default:null},httpProxy:{description:\"URL of the http proxy that must be used for outgoing http requests\",type:\"STRING\",default:null},httpsProxy:{description:\"URL of the http proxy that must be used for outgoing https requests\",type:\"STRING\",default:null},httpsKeyFilePath:{description:\"Path to file containing private key in PEM format\",type:\"ABSOLUTE_PATH\",default:null},httpsCertFilePath:{description:\"Path to file containing certificate chain in PEM format\",type:\"ABSOLUTE_PATH\",default:null}}}},httpsCaFilePath:{description:\"A path to a file containing one or multiple Certificate Authority signing certificates\",type:\"ABSOLUTE_PATH\",default:null},httpsKeyFilePath:{description:\"Path to file containing private key in PEM format\",type:\"ABSOLUTE_PATH\",default:null},httpsCertFilePath:{description:\"Path to file containing certificate chain in PEM format\",type:\"ABSOLUTE_PATH\",default:null},enableStrictSsl:{description:\"If false, SSL certificate errors will be ignored\",type:\"BOOLEAN\",default:!0},logFilters:{description:\"Overrides for log levels\",type:\"SHAPE\",isArray:!0,concatenateValues:!0,properties:{code:{description:\"Code of the messages covered by this override\",type:\"STRING\",default:void 0},text:{description:\"Code of the texts covered by this override\",type:\"STRING\",default:void 0},pattern:{description:\"Code of the patterns covered by this override\",type:\"STRING\",default:void 0},level:{description:\"Log level override, set to null to remove override\",type:\"STRING\",values:Object.values($k),isNullable:!0,default:void 0}}},enableTelemetry:{description:\"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry\",type:\"BOOLEAN\",default:!0},telemetryInterval:{description:\"Minimal amount of time between two telemetry uploads\",type:\"DURATION\",unit:\"d\",default:\"7d\"},telemetryUserId:{description:\"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.\",type:\"STRING\",default:null},enableHardenedMode:{description:\"If true, automatically enable --check-resolutions --refresh-lockfile on installs\",type:\"BOOLEAN\",default:Mp.isPR&&Ett,defaultText:\"<true on public PRs>\"},enableScripts:{description:\"If true, packages are allowed to have install scripts by default\",type:\"BOOLEAN\",default:!0},enableStrictSettings:{description:\"If true, unknown settings will cause Yarn to abort\",type:\"BOOLEAN\",default:!0},enableImmutableCache:{description:\"If true, the cache is reputed immutable and actions that would modify it will throw\",type:\"BOOLEAN\",default:!1},enableCacheClean:{description:\"If false, disallows the `cache clean` command\",type:\"BOOLEAN\",default:!0},checksumBehavior:{description:\"Enumeration defining what to do when a checksum doesn't match expectations\",type:\"STRING\",default:\"throw\"},injectEnvironmentFiles:{description:\"List of all the environment files that Yarn should inject inside the process when it starts\",type:\"ABSOLUTE_PATH\",default:[\".env.yarn?\"],isArray:!0},packageExtensions:{description:\"Map of package corrections to apply on the dependency tree\",type:\"MAP\",valueDefinition:{description:\"The extension that will be applied to any package whose version matches the specified range\",type:\"SHAPE\",properties:{dependencies:{description:\"The set of dependencies that must be made available to the current package in order for it to work properly\",type:\"MAP\",valueDefinition:{description:\"A range\",type:\"STRING\"}},peerDependencies:{description:\"Inherited dependencies - the consumer of the package will be tasked to provide them\",type:\"MAP\",valueDefinition:{description:\"A semver range\",type:\"STRING\"}},peerDependenciesMeta:{description:\"Extra information related to the dependencies listed in the peerDependencies field\",type:\"MAP\",valueDefinition:{description:\"The peerDependency meta\",type:\"SHAPE\",properties:{optional:{description:\"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error\",type:\"BOOLEAN\",default:!1}}}}}}}};btt=process.platform===\"win32\"?Stt:Dtt;ze=class e{constructor(t){this.isCI=Mp.isCI;this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.env={};this.limits=new Map;this.packageExtensions=null;this.startingCwd=t}static{this.deleteProperty=Symbol()}static{this.telemetry=null}static create(t,r,s){let a=new e(t);typeof r<\"u\"&&!(r instanceof Map)&&(a.projectCwd=r),a.importSettings(dR);let n=typeof s<\"u\"?s:r instanceof Map?r:new Map;for(let[c,f]of n)a.activatePlugin(c,f);return a}static async find(t,r,{strict:s=!0,usePathCheck:a=null,useRc:n=!0}={}){let c=vtt();delete c.rcFilename;let f=new e(t),p=await e.findRcFiles(t),h=await e.findFolderRcFile(hI());h&&(p.find(de=>de.path===h.path)||p.unshift(h));let E=Lce(p.map(ae=>[ae.path,ae.data])),C=vt.dot,S=new Set(Object.keys(dR)),x=({yarnPath:ae,ignorePath:de,injectEnvironmentFiles:Ae})=>({yarnPath:ae,ignorePath:de,injectEnvironmentFiles:Ae}),I=({yarnPath:ae,ignorePath:de,injectEnvironmentFiles:Ae,...Ce})=>{let Ee={};for(let[g,Se]of Object.entries(Ce))S.has(g)&&(Ee[g]=Se);return Ee},T=({yarnPath:ae,ignorePath:de,...Ae})=>{let Ce={};for(let[Ee,g]of Object.entries(Ae))S.has(Ee)||(Ce[Ee]=g);return Ce};if(f.importSettings(x(dR)),f.useWithSource(\"<environment>\",x(c),t,{strict:!1}),E){let[ae,de]=E;f.useWithSource(ae,x(de),C,{strict:!1})}if(a){if(await Ptt({configuration:f,selfPath:a})!==null)return f;f.useWithSource(\"<override>\",{ignorePath:!0},t,{strict:!1,overwrite:!0})}let O=await e.findProjectCwd(t);f.startingCwd=t,f.projectCwd=O;let U=Object.assign(Object.create(null),process.env);f.env=U;let Y=await Promise.all(f.get(\"injectEnvironmentFiles\").map(async ae=>{let de=ae.endsWith(\"?\")?await le.readFilePromise(ae.slice(0,-1),\"utf8\").catch(()=>\"\"):await le.readFilePromise(ae,\"utf8\");return(0,SAe.parse)(de)}));for(let ae of Y)for(let[de,Ae]of Object.entries(ae))f.env[de]=Vk(Ae,{env:U});if(f.importSettings(I(dR)),f.useWithSource(\"<environment>\",I(c),t,{strict:s}),E){let[ae,de]=E;f.useWithSource(ae,I(de),C,{strict:s})}let te=ae=>\"default\"in ae?ae.default:ae,ie=new Map([[\"@@core\",Ice]]);if(r!==null)for(let ae of r.plugins.keys())ie.set(ae,te(r.modules.get(ae)));for(let[ae,de]of ie)f.activatePlugin(ae,de);let ue=new Map([]);if(r!==null){let ae=new Map;for(let[Ce,Ee]of r.modules)ae.set(Ce,()=>Ee);let de=new Set,Ae=async(Ce,Ee)=>{let{factory:g,name:Se}=xp(Ce);if(!g||de.has(Se))return;let Be=new Map(ae),me=X=>{if((0,DAe.isBuiltin)(X))return xp(X);if(Be.has(X))return Be.get(X)();throw new st(`This plugin cannot access the package referenced via ${X} which is neither a builtin, nor an exposed entry`)},ce=await YE(async()=>te(await g(me)),X=>`${X} (when initializing ${Se}, defined in ${Ee})`);ae.set(Se,()=>ce),de.add(Se),ue.set(Se,ce)};if(c.plugins)for(let Ce of c.plugins.split(\";\")){let Ee=K.resolve(t,fe.toPortablePath(Ce));await Ae(Ee,\"<environment>\")}for(let{path:Ce,cwd:Ee,data:g}of p)if(n&&Array.isArray(g.plugins))for(let Se of g.plugins){let Be=typeof Se!=\"string\"?Se.path:Se,me=Se?.spec??\"\",ce=Se?.checksum??\"\";if(X2.has(me))continue;let X=K.resolve(Ee,fe.toPortablePath(Be));if(!await le.existsPromise(X)){if(!me){let it=jt(f,K.basename(X,\".cjs\"),gt.NAME),_=jt(f,\".gitignore\",gt.NAME),tt=jt(f,f.values.get(\"rcFilename\"),gt.NAME),Ne=jt(f,\"https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored\",gt.URL);throw new st(`Missing source for the ${it} plugin - please try to remove the plugin from ${tt} then reinstall it manually. This error usually occurs because ${_} is incorrect, check ${Ne} to make sure your plugin folder isn't gitignored.`)}if(!me.match(/^https?:/)){let it=jt(f,K.basename(X,\".cjs\"),gt.NAME),_=jt(f,f.values.get(\"rcFilename\"),gt.NAME);throw new st(`Failed to recognize the source for the ${it} plugin - please try to delete the plugin from ${_} then reinstall it manually.`)}let De=await VH(me,{configuration:f}),Qe=fs(De);if(ce&&ce!==Qe){let it=jt(f,K.basename(X,\".cjs\"),gt.NAME),_=jt(f,f.values.get(\"rcFilename\"),gt.NAME),tt=jt(f,`yarn plugin import ${me}`,gt.CODE);throw new st(`Failed to fetch the ${it} plugin from its remote location: its checksum seems to have changed. If this is expected, please remove the plugin from ${_} then run ${tt} to reimport it.`)}await le.mkdirPromise(K.dirname(X),{recursive:!0}),await le.writeFilePromise(X,De)}await Ae(X,Ce)}}for(let[ae,de]of ue)f.activatePlugin(ae,de);if(f.useWithSource(\"<environment>\",T(c),t,{strict:s}),E){let[ae,de]=E;f.useWithSource(ae,T(de),C,{strict:s})}return f.get(\"enableGlobalCache\")&&(f.values.set(\"cacheFolder\",`${f.get(\"globalFolder\")}/cache`),f.sources.set(\"cacheFolder\",\"<internal>\")),f}static async findRcFiles(t){let r=$H(),s=[],a=t,n=null;for(;a!==n;){n=a;let c=K.join(n,r);if(le.existsSync(c)){let f,p;try{p=await le.readFilePromise(c,\"utf8\"),f=cs(p)}catch{let h=\"\";throw p?.match(/^\\s+(?!-)[^:]+\\s+\\S+/m)&&(h=\" (in particular, make sure you list the colons after each key name)\"),new st(`Parse error when loading ${c}; please check it's proper Yaml${h}`)}s.unshift({path:c,cwd:n,data:f})}a=K.dirname(n)}return s}static async findFolderRcFile(t){let r=K.join(t,Er.rc),s;try{s=await le.readFilePromise(r,\"utf8\")}catch(n){if(n.code===\"ENOENT\")return null;throw n}let a=cs(s);return{path:r,cwd:t,data:a}}static async findProjectCwd(t){let r=null,s=t,a=null;for(;s!==a;){if(a=s,le.existsSync(K.join(a,Er.lockfile)))return a;le.existsSync(K.join(a,Er.manifest))&&(r=a),s=K.dirname(a)}return r}static async updateConfiguration(t,r,s={}){let a=$H(),n=K.join(t,a),c=le.existsSync(n)?cs(await le.readFilePromise(n,\"utf8\")):{},f=!1,p;if(typeof r==\"function\"){try{p=r(c)}catch{p=r({})}if(p===c)return!1}else{p=c;for(let h of Object.keys(r)){let E=c[h],C=r[h],S;if(typeof C==\"function\")try{S=C(E)}catch{S=C(void 0)}else S=C;E!==S&&(S===e.deleteProperty?delete p[h]:p[h]=S,f=!0)}if(!f)return!1}return await le.changeFilePromise(n,cl(p),{automaticNewlines:!0}),!0}static async addPlugin(t,r){r.length!==0&&await e.updateConfiguration(t,s=>{let a=s.plugins??[];if(a.length===0)return{...s,plugins:r};let n=[],c=[...r];for(let f of a){let p=typeof f!=\"string\"?f.path:f,h=c.find(E=>E.path===p);h?(n.push(h),c=c.filter(E=>E!==h)):n.push(f)}return n.push(...c),{...s,plugins:n}})}static async updateHomeConfiguration(t){let r=hI();return await e.updateConfiguration(r,t)}activatePlugin(t,r){this.plugins.set(t,r),typeof r.configuration<\"u\"&&this.importSettings(r.configuration)}importSettings(t){for(let[r,s]of Object.entries(t))if(s!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings \"${r}\"`);this.settings.set(r,s),this.values.set(r,nj(this,s))}}useWithSource(t,r,s,a){try{this.use(t,r,s,a)}catch(n){throw n.message+=` (in ${jt(this,t,gt.PATH)})`,n}}use(t,r,s,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get(\"enableStrictSettings\");for(let c of[\"enableStrictSettings\",...Object.keys(r)]){let f=r[c],p=S8(f);if(p&&(t=p),typeof f>\"u\"||c===\"plugins\"||t===\"<environment>\"&&Itt.has(c))continue;if(c===\"rcFilename\")throw new st(`The rcFilename settings can only be set via ${`${yR}RC_FILENAME`.toUpperCase()}, not via a rc file`);let h=this.settings.get(c);if(!h){let C=hI(),S=t[0]!==\"<\"?K.dirname(t):null;if(a&&!(S!==null?C===S:!1))throw new st(`Unrecognized or legacy configuration settings found: ${c} - run \"yarn config\" to see the list of settings supported in Yarn`);this.invalid.set(c,t);continue}if(this.sources.has(c)&&!(n||h.type===\"MAP\"||h.isArray&&h.concatenateValues))continue;let E;try{E=rj(this,c,f,h,s)}catch(C){throw C.message+=` in ${jt(this,t,gt.PATH)}`,C}if(c===\"enableStrictSettings\"&&t!==\"<environment>\"){a=E;continue}if(h.type===\"MAP\"){let C=this.values.get(c);this.values.set(c,new Map(n?[...C,...E]:[...E,...C])),this.sources.set(c,`${this.sources.get(c)}, ${t}`)}else if(h.isArray&&h.concatenateValues){let C=this.values.get(c);this.values.set(c,n?[...C,...E]:[...E,...C]),this.sources.set(c,`${this.sources.get(c)}, ${t}`)}else this.values.set(c,E),this.sources.set(c,t)}}get(t){if(!this.values.has(t))throw new Error(`Invalid configuration key \"${t}\"`);return this.values.get(t)}getSpecial(t,{hideSecrets:r=!1,getNativePaths:s=!1}){let a=this.get(t),n=this.settings.get(t);if(typeof n>\"u\")throw new st(`Couldn't find a configuration settings named \"${t}\"`);return mR(a,n,{hideSecrets:r,getNativePaths:s})}getSubprocessStreams(t,{header:r,prefix:s,report:a}){let n,c,f=le.createWriteStream(t);if(this.get(\"enableInlineBuilds\")){let p=a.createStreamReporter(`${s} ${jt(this,\"STDOUT\",\"green\")}`),h=a.createStreamReporter(`${s} ${jt(this,\"STDERR\",\"red\")}`);n=new XH.PassThrough,n.pipe(p),n.pipe(f),c=new XH.PassThrough,c.pipe(h),c.pipe(f)}else n=f,c=f,typeof r<\"u\"&&n.write(`${r}\n`);return{stdout:n,stderr:c}}makeResolver(){let t=[];for(let r of this.plugins.values())for(let s of r.resolvers||[])t.push(new s);return new em([new TQ,new Ii,...t])}makeFetcher(){let t=[];for(let r of this.plugins.values())for(let s of r.fetchers||[])t.push(new s);return new uI([new fI,new AI,...t])}getLinkers(){let t=[];for(let r of this.plugins.values())for(let s of r.linkers||[])t.push(new s);return t}getSupportedArchitectures(){let t=Z2(),r=this.get(\"supportedArchitectures\"),s=r.get(\"os\");s!==null&&(s=s.map(c=>c===\"current\"?t.os:c));let a=r.get(\"cpu\");a!==null&&(a=a.map(c=>c===\"current\"?t.cpu:c));let n=r.get(\"libc\");return n!==null&&(n=zl(n,c=>c===\"current\"?t.libc??zl.skip:c)),{os:s,cpu:a,libc:n}}isInteractive({interactive:t,stdout:r}){return r.isTTY?t??this.get(\"preferInteractive\"):!1}async getPackageExtensions(){if(this.packageExtensions!==null)return this.packageExtensions;this.packageExtensions=new Map;let t=this.packageExtensions,r=(s,a,{userProvided:n=!1}={})=>{if(!dl(s.range))throw new Error(\"Only semver ranges are allowed as keys for the packageExtensions setting\");let c=new Ut;c.load(a,{yamlCompatibilityMode:!0});let f=C2(t,s.identHash),p=[];f.push([s.range,p]);let h={status:\"inactive\",userProvided:n,parentDescriptor:s};for(let E of c.dependencies.values())p.push({...h,type:\"Dependency\",descriptor:E});for(let E of c.peerDependencies.values())p.push({...h,type:\"PeerDependency\",descriptor:E});for(let[E,C]of c.peerDependenciesMeta)for(let[S,x]of Object.entries(C))p.push({...h,type:\"PeerDependencyMeta\",selector:E,key:S,value:x})};await this.triggerHook(s=>s.registerPackageExtensions,this,r);for(let[s,a]of this.get(\"packageExtensions\"))r(E0(s,!0),Wk(a),{userProvided:!0});return t}normalizeLocator(t){return dl(t.reference)?Ks(t,`${this.get(\"defaultProtocol\")}${t.reference}`):Up.test(t.reference)?Ks(t,`${this.get(\"defaultProtocol\")}${t.reference}`):t}normalizeDependency(t){return dl(t.range)?Mn(t,`${this.get(\"defaultProtocol\")}${t.range}`):Up.test(t.range)?Mn(t,`${this.get(\"defaultProtocol\")}${t.range}`):t}normalizeDependencyMap(t){return new Map([...t].map(([r,s])=>[r,this.normalizeDependency(s)]))}normalizePackage(t,{packageExtensions:r}){let s=x2(t),a=r.get(t.identHash);if(typeof a<\"u\"){let c=t.version;if(c!==null){for(let[f,p]of a)if(eA(c,f))for(let h of p)switch(h.status===\"inactive\"&&(h.status=\"redundant\"),h.type){case\"Dependency\":typeof s.dependencies.get(h.descriptor.identHash)>\"u\"&&(h.status=\"active\",s.dependencies.set(h.descriptor.identHash,this.normalizeDependency(h.descriptor)));break;case\"PeerDependency\":typeof s.peerDependencies.get(h.descriptor.identHash)>\"u\"&&(h.status=\"active\",s.peerDependencies.set(h.descriptor.identHash,h.descriptor));break;case\"PeerDependencyMeta\":{let E=s.peerDependenciesMeta.get(h.selector);(typeof E>\"u\"||!Object.hasOwn(E,h.key)||E[h.key]!==h.value)&&(h.status=\"active\",Zl(s.peerDependenciesMeta,h.selector,()=>({}))[h.key]=h.value)}break;default:b4(h)}}}let n=c=>c.scope?`${c.scope}__${c.name}`:`${c.name}`;for(let c of s.peerDependenciesMeta.keys()){let f=Pa(c);s.peerDependencies.has(f.identHash)||s.peerDependencies.set(f.identHash,Mn(f,\"*\"))}for(let c of s.peerDependencies.values()){if(c.scope===\"types\")continue;let f=n(c),p=xa(\"types\",f),h=fn(p);s.peerDependencies.has(p.identHash)||s.peerDependenciesMeta.has(h)||s.dependencies.has(p.identHash)||(s.peerDependencies.set(p.identHash,Mn(p,\"*\")),s.peerDependenciesMeta.set(h,{optional:!0}))}return s.dependencies=new Map(Ys(s.dependencies,([,c])=>hl(c))),s.peerDependencies=new Map(Ys(s.peerDependencies,([,c])=>hl(c))),s}getLimit(t){return Zl(this.limits,t,()=>(0,bAe.default)(this.get(t)))}async triggerHook(t,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=t(a);n&&await n(...r)}}async triggerMultipleHooks(t,r){for(let s of r)await this.triggerHook(t,...s)}async reduceHook(t,r,...s){let a=r;for(let n of this.plugins.values()){let c=n.hooks;if(!c)continue;let f=t(c);f&&(a=await f(a,...s))}return a}async firstHook(t,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=t(a);if(!n)continue;let c=await n(...r);if(typeof c<\"u\")return c}return null}}});var qr={};Yt(qr,{EndStrategy:()=>aj,ExecError:()=>IR,PipeError:()=>ev,execvp:()=>zH,pipevp:()=>Gu});function im(e){return e!==null&&typeof e.fd==\"number\"}function ij(){}function sj(){for(let e of sm)e.kill()}async function Gu(e,t,{cwd:r,env:s=process.env,strict:a=!1,stdin:n=null,stdout:c,stderr:f,end:p=2}){let h=[\"pipe\",\"pipe\",\"pipe\"];n===null?h[0]=\"ignore\":im(n)&&(h[0]=n),im(c)&&(h[1]=c),im(f)&&(h[2]=f);let E=(0,oj.default)(e,t,{cwd:fe.fromPortablePath(r),env:{...s,PWD:fe.fromPortablePath(r)},stdio:h});sm.add(E),sm.size===1&&(process.on(\"SIGINT\",ij),process.on(\"SIGTERM\",sj)),!im(n)&&n!==null&&n.pipe(E.stdin),im(c)||E.stdout.pipe(c,{end:!1}),im(f)||E.stderr.pipe(f,{end:!1});let C=()=>{for(let S of new Set([c,f]))im(S)||S.end()};return new Promise((S,x)=>{E.on(\"error\",I=>{sm.delete(E),sm.size===0&&(process.off(\"SIGINT\",ij),process.off(\"SIGTERM\",sj)),(p===2||p===1)&&C(),x(I)}),E.on(\"close\",(I,T)=>{sm.delete(E),sm.size===0&&(process.off(\"SIGINT\",ij),process.off(\"SIGTERM\",sj)),(p===2||p===1&&I!==0)&&C(),I===0||!a?S({code:lj(I,T)}):x(new ev({fileName:e,code:I,signal:T}))})})}async function zH(e,t,{cwd:r,env:s=process.env,encoding:a=\"utf8\",strict:n=!1}){let c=[\"ignore\",\"pipe\",\"pipe\"],f=[],p=[],h=fe.fromPortablePath(r);typeof s.PWD<\"u\"&&(s={...s,PWD:h});let E=(0,oj.default)(e,t,{cwd:h,env:s,stdio:c});return E.stdout.on(\"data\",C=>{f.push(C)}),E.stderr.on(\"data\",C=>{p.push(C)}),await new Promise((C,S)=>{E.on(\"error\",x=>{let I=ze.create(r),T=jt(I,e,gt.PATH);S(new _t(1,`Process ${T} failed to spawn`,O=>{O.reportError(1,`  ${Zf(I,{label:\"Thrown Error\",value:Mu(gt.NO_HINT,x.message)})}`)}))}),E.on(\"close\",(x,I)=>{let T=a===\"buffer\"?Buffer.concat(f):Buffer.concat(f).toString(a),O=a===\"buffer\"?Buffer.concat(p):Buffer.concat(p).toString(a);x===0||!n?C({code:lj(x,I),stdout:T,stderr:O}):S(new IR({fileName:e,code:x,signal:I,stdout:T,stderr:O}))})})}function lj(e,t){let r=xtt.get(t);return typeof r<\"u\"?128+r:e??1}function ktt(e,t,{configuration:r,report:s}){s.reportError(1,`  ${Zf(r,e!==null?{label:\"Exit Code\",value:Mu(gt.NUMBER,e)}:{label:\"Exit Signal\",value:Mu(gt.CODE,t)})}`)}var oj,aj,ev,IR,sm,xtt,gR=Ze(()=>{Dt();oj=et(vU());$2();Tc();kc();aj=(s=>(s[s.Never=0]=\"Never\",s[s.ErrorCode=1]=\"ErrorCode\",s[s.Always=2]=\"Always\",s))(aj||{}),ev=class extends _t{constructor({fileName:t,code:r,signal:s}){let a=ze.create(K.cwd()),n=jt(a,t,gt.PATH);super(1,`Child ${n} reported an error`,c=>{ktt(r,s,{configuration:a,report:c})}),this.code=lj(r,s)}},IR=class extends ev{constructor({fileName:t,code:r,signal:s,stdout:a,stderr:n}){super({fileName:t,code:r,signal:s}),this.stdout=a,this.stderr=n}};sm=new Set;xtt=new Map([[\"SIGINT\",2],[\"SIGQUIT\",3],[\"SIGKILL\",9],[\"SIGTERM\",15]])});function kAe(e){xAe=e}function tv(){return typeof cj>\"u\"&&(cj=xAe()),cj}var cj,xAe,uj=Ze(()=>{xAe=()=>{throw new Error(\"Assertion failed: No libzip instance is available, and no factory was configured\")}});var QAe=G((CR,Aj)=>{var Qtt=Object.assign({},Ie(\"fs\")),fj=function(){var e=typeof document<\"u\"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<\"u\"&&(e=e||__filename),function(t){t=t||{};var r=typeof t<\"u\"?t:{},s,a;r.ready=new Promise(function(Je,ot){s=Je,a=ot});var n={},c;for(c in r)r.hasOwnProperty(c)&&(n[c]=r[c]);var f=[],p=\"./this.program\",h=function(Je,ot){throw ot},E=!1,C=!0,S=\"\";function x(Je){return r.locateFile?r.locateFile(Je,S):S+Je}var I,T,O,U;C&&(E?S=Ie(\"path\").dirname(S)+\"/\":S=__dirname+\"/\",I=function(ot,St){var lr=Ue(ot);return lr?St?lr:lr.toString():(O||(O=Qtt),U||(U=Ie(\"path\")),ot=U.normalize(ot),O.readFileSync(ot,St?null:\"utf8\"))},T=function(ot){var St=I(ot,!0);return St.buffer||(St=new Uint8Array(St)),Se(St.buffer),St},process.argv.length>1&&(p=process.argv[1].replace(/\\\\/g,\"/\")),f=process.argv.slice(2),h=function(Je){process.exit(Je)},r.inspect=function(){return\"[Emscripten Module object]\"});var Y=r.print||console.log.bind(console),te=r.printErr||console.warn.bind(console);for(c in n)n.hasOwnProperty(c)&&(r[c]=n[c]);n=null,r.arguments&&(f=r.arguments),r.thisProgram&&(p=r.thisProgram),r.quit&&(h=r.quit);var ie=0,ue=function(Je){ie=Je},ae;r.wasmBinary&&(ae=r.wasmBinary);var de=r.noExitRuntime||!0;typeof WebAssembly!=\"object\"&&ns(\"no native wasm support detected\");function Ae(Je,ot,St){switch(ot=ot||\"i8\",ot.charAt(ot.length-1)===\"*\"&&(ot=\"i32\"),ot){case\"i1\":return je[Je>>0];case\"i8\":return je[Je>>0];case\"i16\":return gh((Je>>1)*2);case\"i32\":return ao((Je>>2)*4);case\"i64\":return ao((Je>>2)*4);case\"float\":return hf((Je>>2)*4);case\"double\":return hh((Je>>3)*8);default:ns(\"invalid type for getValue: \"+ot)}return null}var Ce,Ee=!1,g;function Se(Je,ot){Je||ns(\"Assertion failed: \"+ot)}function Be(Je){var ot=r[\"_\"+Je];return Se(ot,\"Cannot call unknown function \"+Je+\", make sure it is exported\"),ot}function me(Je,ot,St,lr,ee){var ye={string:function(qi){var Fn=0;if(qi!=null&&qi!==0){var Ja=(qi.length<<2)+1;Fn=Bi(Ja),it(qi,Fn,Ja)}return Fn},array:function(qi){var Fn=Bi(qi.length);return Ne(qi,Fn),Fn}};function Oe(qi){return ot===\"string\"?De(qi):ot===\"boolean\"?!!qi:qi}var mt=Be(Je),Et=[],bt=0;if(lr)for(var tr=0;tr<lr.length;tr++){var pn=ye[St[tr]];pn?(bt===0&&(bt=mf()),Et[tr]=pn(lr[tr])):Et[tr]=lr[tr]}var ci=mt.apply(null,Et);return ci=Oe(ci),bt!==0&&Ac(bt),ci}function ce(Je,ot,St,lr){St=St||[];var ee=St.every(function(Oe){return Oe===\"number\"}),ye=ot!==\"string\";return ye&&ee&&!lr?Be(Je):function(){return me(Je,ot,St,arguments,lr)}}var X=new TextDecoder(\"utf8\");function De(Je,ot){if(!Je)return\"\";for(var St=Je+ot,lr=Je;!(lr>=St)&&Re[lr];)++lr;return X.decode(Re.subarray(Je,lr))}function Qe(Je,ot,St,lr){if(!(lr>0))return 0;for(var ee=St,ye=St+lr-1,Oe=0;Oe<Je.length;++Oe){var mt=Je.charCodeAt(Oe);if(mt>=55296&&mt<=57343){var Et=Je.charCodeAt(++Oe);mt=65536+((mt&1023)<<10)|Et&1023}if(mt<=127){if(St>=ye)break;ot[St++]=mt}else if(mt<=2047){if(St+1>=ye)break;ot[St++]=192|mt>>6,ot[St++]=128|mt&63}else if(mt<=65535){if(St+2>=ye)break;ot[St++]=224|mt>>12,ot[St++]=128|mt>>6&63,ot[St++]=128|mt&63}else{if(St+3>=ye)break;ot[St++]=240|mt>>18,ot[St++]=128|mt>>12&63,ot[St++]=128|mt>>6&63,ot[St++]=128|mt&63}}return ot[St]=0,St-ee}function it(Je,ot,St){return Qe(Je,Re,ot,St)}function _(Je){for(var ot=0,St=0;St<Je.length;++St){var lr=Je.charCodeAt(St);lr>=55296&&lr<=57343&&(lr=65536+((lr&1023)<<10)|Je.charCodeAt(++St)&1023),lr<=127?++ot:lr<=2047?ot+=2:lr<=65535?ot+=3:ot+=4}return ot}function tt(Je){var ot=_(Je)+1,St=qa(ot);return St&&Qe(Je,je,St,ot),St}function Ne(Je,ot){je.set(Je,ot)}function ke(Je,ot){return Je%ot>0&&(Je+=ot-Je%ot),Je}var be,je,Re,ct,Me,P,w,b,y,F;function z(Je){be=Je,r.HEAP_DATA_VIEW=F=new DataView(Je),r.HEAP8=je=new Int8Array(Je),r.HEAP16=ct=new Int16Array(Je),r.HEAP32=P=new Int32Array(Je),r.HEAPU8=Re=new Uint8Array(Je),r.HEAPU16=Me=new Uint16Array(Je),r.HEAPU32=w=new Uint32Array(Je),r.HEAPF32=b=new Float32Array(Je),r.HEAPF64=y=new Float64Array(Je)}var Z=r.INITIAL_MEMORY||16777216,$,se=[],xe=[],Fe=[],ut=!1;function Ct(){if(r.preRun)for(typeof r.preRun==\"function\"&&(r.preRun=[r.preRun]);r.preRun.length;)Pt(r.preRun.shift());Ns(se)}function qt(){ut=!0,Ns(xe)}function ir(){if(r.postRun)for(typeof r.postRun==\"function\"&&(r.postRun=[r.postRun]);r.postRun.length;)Pr(r.postRun.shift());Ns(Fe)}function Pt(Je){se.unshift(Je)}function dn(Je){xe.unshift(Je)}function Pr(Je){Fe.unshift(Je)}var Ir=0,Or=null,on=null;function li(Je){Ir++,r.monitorRunDependencies&&r.monitorRunDependencies(Ir)}function So(Je){if(Ir--,r.monitorRunDependencies&&r.monitorRunDependencies(Ir),Ir==0&&(Or!==null&&(clearInterval(Or),Or=null),on)){var ot=on;on=null,ot()}}r.preloadedImages={},r.preloadedAudios={};function ns(Je){r.onAbort&&r.onAbort(Je),Je+=\"\",te(Je),Ee=!0,g=1,Je=\"abort(\"+Je+\"). Build with -s ASSERTIONS=1 for more info.\";var ot=new WebAssembly.RuntimeError(Je);throw a(ot),ot}var so=\"data:application/octet-stream;base64,\";function Do(Je){return Je.startsWith(so)}var ji=\"data:application/octet-stream;base64,AGFzbQEAAAAB/wEkYAN/f38Bf2ABfwF/YAJ/fwF/YAF/AGAEf39/fwF/YAN/f38AYAV/f39/fwF/YAJ/fwBgBH9/f38AYAABf2AFf39/fn8BfmAEf35/fwF/YAR/f35/AX5gAn9+AX9gA398fwBgA39/fgF/YAF/AX5gBn9/f39/fwF/YAN/fn8Bf2AEf39/fwF+YAV/f35/fwF/YAR/f35/AX9gA39/fgF+YAJ/fgBgAn9/AX5gBX9/f39/AGADf35/AX5gBX5+f35/AX5gA39/fwF+YAZ/fH9/f38Bf2AAAGAHf35/f39+fwF/YAV/fn9/fwF/YAV/f39/fwF+YAJ+fwF/YAJ/fAACJQYBYQFhAAMBYQFiAAEBYQFjAAABYQFkAAEBYQFlAAIBYQFmAAED5wHlAQMAAwEDAwEHDAgDFgcNEgEDDRcFAQ8DEAUQAwIBAhgECxkEAQMBBQsFAwMDARACBAMAAggLBwEAAwADGgQDGwYGABwBBgMTFBEHBwcVCx4ABAgHBAICAgAfAQICAgIGFSAAIQAiAAIBBgIHAg0LEw0FAQUCACMDAQAUAAAGBQECBQUDCwsSAgEDBQIHAQEICAACCQQEAQABCAEBCQoBAwkBAQEBBgEGBgYABAIEBAQGEQQEAAARAAEDCQEJAQAJCQkBAQECCgoAAAMPAQEBAwACAgICBQIABwAKBgwHAAADAgICBQEEBQFwAT8/BQcBAYACgIACBgkBfwFBgInBAgsH+gEzAWcCAAFoAFQBaQDqAQFqALsBAWsAwQEBbACpAQFtAKgBAW4ApwEBbwClAQFwAKMBAXEAoAEBcgCbAQFzAMABAXQAugEBdQC5AQF2AEsBdwDiAQF4AMgBAXkAxwEBegDCAQFBAMkBAUIAuAEBQwAGAUQACQFFAKYBAUYAtwEBRwC2AQFIALUBAUkAtAEBSgCzAQFLALIBAUwAsQEBTQCwAQFOAK8BAU8AvAEBUACuAQFRAK0BAVIArAEBUwAaAVQACwFVAKQBAVYAMgFXAQABWACrAQFZAKoBAVoAxgEBXwDFAQEkAMQBAmFhAL8BAmJhAL4BAmNhAL0BCXgBAEEBCz6iAeMBjgGQAVpbjwFYnwGdAVeeAV1coQFZVlWcAZoBmQGYAZcBlgGVAZQBkwGSAZEB6QHoAecB5gHlAeQB4QHfAeAB3gHdAdwB2gHbAYUB2QHYAdcB1gHVAdQB0wHSAdEB0AHPAc4BzQHMAcsBygE4wwEK1N8G5QHMDAEHfwJAIABFDQAgAEEIayIDIABBBGsoAgAiAUF4cSIAaiEFAkAgAUEBcQ0AIAFBA3FFDQEgAyADKAIAIgFrIgNBxIQBKAIASQ0BIAAgAWohACADQciEASgCAEcEQCABQf8BTQRAIAMoAggiAiABQQN2IgRBA3RB3IQBakYaIAIgAygCDCIBRgRAQbSEAUG0hAEoAgBBfiAEd3E2AgAMAwsgAiABNgIMIAEgAjYCCAwCCyADKAIYIQYCQCADIAMoAgwiAUcEQCADKAIIIgIgATYCDCABIAI2AggMAQsCQCADQRRqIgIoAgAiBA0AIANBEGoiAigCACIEDQBBACEBDAELA0AgAiEHIAQiAUEUaiICKAIAIgQNACABQRBqIQIgASgCECIEDQALIAdBADYCAAsgBkUNAQJAIAMgAygCHCICQQJ0QeSGAWoiBCgCAEYEQCAEIAE2AgAgAQ0BQbiEAUG4hAEoAgBBfiACd3E2AgAMAwsgBkEQQRQgBigCECADRhtqIAE2AgAgAUUNAgsgASAGNgIYIAMoAhAiAgRAIAEgAjYCECACIAE2AhgLIAMoAhQiAkUNASABIAI2AhQgAiABNgIYDAELIAUoAgQiAUEDcUEDRw0AQbyEASAANgIAIAUgAUF+cTYCBCADIABBAXI2AgQgACADaiAANgIADwsgAyAFTw0AIAUoAgQiAUEBcUUNAAJAIAFBAnFFBEAgBUHMhAEoAgBGBEBBzIQBIAM2AgBBwIQBQcCEASgCACAAaiIANgIAIAMgAEEBcjYCBCADQciEASgCAEcNA0G8hAFBADYCAEHIhAFBADYCAA8LIAVByIQBKAIARgRAQciEASADNgIAQbyEAUG8hAEoAgAgAGoiADYCACADIABBAXI2AgQgACADaiAANgIADwsgAUF4cSAAaiEAAkAgAUH/AU0EQCAFKAIIIgIgAUEDdiIEQQN0QdyEAWpGGiACIAUoAgwiAUYEQEG0hAFBtIQBKAIAQX4gBHdxNgIADAILIAIgATYCDCABIAI2AggMAQsgBSgCGCEGAkAgBSAFKAIMIgFHBEAgBSgCCCICQcSEASgCAEkaIAIgATYCDCABIAI2AggMAQsCQCAFQRRqIgIoAgAiBA0AIAVBEGoiAigCACIEDQBBACEBDAELA0AgAiEHIAQiAUEUaiICKAIAIgQNACABQRBqIQIgASgCECIEDQALIAdBADYCAAsgBkUNAAJAIAUgBSgCHCICQQJ0QeSGAWoiBCgCAEYEQCAEIAE2AgAgAQ0BQbiEAUG4hAEoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAE2AgAgAUUNAQsgASAGNgIYIAUoAhAiAgRAIAEgAjYCECACIAE2AhgLIAUoAhQiAkUNACABIAI2AhQgAiABNgIYCyADIABBAXI2AgQgACADaiAANgIAIANByIQBKAIARw0BQbyEASAANgIADwsgBSABQX5xNgIEIAMgAEEBcjYCBCAAIANqIAA2AgALIABB/wFNBEAgAEEDdiIBQQN0QdyEAWohAAJ/QbSEASgCACICQQEgAXQiAXFFBEBBtIQBIAEgAnI2AgAgAAwBCyAAKAIICyECIAAgAzYCCCACIAM2AgwgAyAANgIMIAMgAjYCCA8LQR8hAiADQgA3AhAgAEH///8HTQRAIABBCHYiASABQYD+P2pBEHZBCHEiAXQiAiACQYDgH2pBEHZBBHEiAnQiBCAEQYCAD2pBEHZBAnEiBHRBD3YgASACciAEcmsiAUEBdCAAIAFBFWp2QQFxckEcaiECCyADIAI2AhwgAkECdEHkhgFqIQECQAJAAkBBuIQBKAIAIgRBASACdCIHcUUEQEG4hAEgBCAHcjYCACABIAM2AgAgAyABNgIYDAELIABBAEEZIAJBAXZrIAJBH0YbdCECIAEoAgAhAQNAIAEiBCgCBEF4cSAARg0CIAJBHXYhASACQQF0IQIgBCABQQRxaiIHQRBqKAIAIgENAAsgByADNgIQIAMgBDYCGAsgAyADNgIMIAMgAzYCCAwBCyAEKAIIIgAgAzYCDCAEIAM2AgggA0EANgIYIAMgBDYCDCADIAA2AggLQdSEAUHUhAEoAgBBAWsiAEF/IAAbNgIACwuDBAEDfyACQYAETwRAIAAgASACEAIaIAAPCyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAEEDcUUEQCAAIQIMAQsgAkEBSARAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCwJAIANBfHEiBEHAAEkNACACIARBQGoiBUsNAANAIAIgASgCADYCACACIAEoAgQ2AgQgAiABKAIINgIIIAIgASgCDDYCDCACIAEoAhA2AhAgAiABKAIUNgIUIAIgASgCGDYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCACIAEoAig2AiggAiABKAIsNgIsIAIgASgCMDYCMCACIAEoAjQ2AjQgAiABKAI4NgI4IAIgASgCPDYCPCABQUBrIQEgAkFAayICIAVNDQALCyACIARPDQEDQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiAESQ0ACwwBCyADQQRJBEAgACECDAELIAAgA0EEayIESwRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAUEEaiEBIAJBBGoiAiAETQ0ACwsgAiADSQRAA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA0cNAAsLIAALGgAgAARAIAAtAAEEQCAAKAIEEAYLIAAQBgsLoi4BDH8jAEEQayIMJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEH0AU0EQEG0hAEoAgAiBUEQIABBC2pBeHEgAEELSRsiCEEDdiICdiIBQQNxBEAgAUF/c0EBcSACaiIDQQN0IgFB5IQBaigCACIEQQhqIQACQCAEKAIIIgIgAUHchAFqIgFGBEBBtIQBIAVBfiADd3E2AgAMAQsgAiABNgIMIAEgAjYCCAsgBCADQQN0IgFBA3I2AgQgASAEaiIBIAEoAgRBAXI2AgQMDQsgCEG8hAEoAgAiCk0NASABBEACQEECIAJ0IgBBACAAa3IgASACdHEiAEEAIABrcUEBayIAIABBDHZBEHEiAnYiAUEFdkEIcSIAIAJyIAEgAHYiAUECdkEEcSIAciABIAB2IgFBAXZBAnEiAHIgASAAdiIBQQF2QQFxIgByIAEgAHZqIgNBA3QiAEHkhAFqKAIAIgQoAggiASAAQdyEAWoiAEYEQEG0hAEgBUF+IAN3cSIFNgIADAELIAEgADYCDCAAIAE2AggLIARBCGohACAEIAhBA3I2AgQgBCAIaiICIANBA3QiASAIayIDQQFyNgIEIAEgBGogAzYCACAKBEAgCkEDdiIBQQN0QdyEAWohB0HIhAEoAgAhBAJ/IAVBASABdCIBcUUEQEG0hAEgASAFcjYCACAHDAELIAcoAggLIQEgByAENgIIIAEgBDYCDCAEIAc2AgwgBCABNgIIC0HIhAEgAjYCAEG8hAEgAzYCAAwNC0G4hAEoAgAiBkUNASAGQQAgBmtxQQFrIgAgAEEMdkEQcSICdiIBQQV2QQhxIgAgAnIgASAAdiIBQQJ2QQRxIgByIAEgAHYiAUEBdkECcSIAciABIAB2IgFBAXZBAXEiAHIgASAAdmpBAnRB5IYBaigCACIBKAIEQXhxIAhrIQMgASECA0ACQCACKAIQIgBFBEAgAigCFCIARQ0BCyAAKAIEQXhxIAhrIgIgAyACIANJIgIbIQMgACABIAIbIQEgACECDAELCyABIAhqIgkgAU0NAiABKAIYIQsgASABKAIMIgRHBEAgASgCCCIAQcSEASgCAEkaIAAgBDYCDCAEIAA2AggMDAsgAUEUaiICKAIAIgBFBEAgASgCECIARQ0EIAFBEGohAgsDQCACIQcgACIEQRRqIgIoAgAiAA0AIARBEGohAiAEKAIQIgANAAsgB0EANgIADAsLQX8hCCAAQb9/Sw0AIABBC2oiAEF4cSEIQbiEASgCACIJRQ0AQQAgCGshAwJAAkACQAJ/QQAgCEGAAkkNABpBHyAIQf///wdLDQAaIABBCHYiACAAQYD+P2pBEHZBCHEiAnQiACAAQYDgH2pBEHZBBHEiAXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgASACciAAcmsiAEEBdCAIIABBFWp2QQFxckEcagsiBUECdEHkhgFqKAIAIgJFBEBBACEADAELQQAhACAIQQBBGSAFQQF2ayAFQR9GG3QhAQNAAkAgAigCBEF4cSAIayIHIANPDQAgAiEEIAciAw0AQQAhAyACIQAMAwsgACACKAIUIgcgByACIAFBHXZBBHFqKAIQIgJGGyAAIAcbIQAgAUEBdCEBIAINAAsLIAAgBHJFBEBBAiAFdCIAQQAgAGtyIAlxIgBFDQMgAEEAIABrcUEBayIAIABBDHZBEHEiAnYiAUEFdkEIcSIAIAJyIAEgAHYiAUECdkEEcSIAciABIAB2IgFBAXZBAnEiAHIgASAAdiIBQQF2QQFxIgByIAEgAHZqQQJ0QeSGAWooAgAhAAsgAEUNAQsDQCAAKAIEQXhxIAhrIgEgA0khAiABIAMgAhshAyAAIAQgAhshBCAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAERQ0AIANBvIQBKAIAIAhrTw0AIAQgCGoiBiAETQ0BIAQoAhghBSAEIAQoAgwiAUcEQCAEKAIIIgBBxIQBKAIASRogACABNgIMIAEgADYCCAwKCyAEQRRqIgIoAgAiAEUEQCAEKAIQIgBFDQQgBEEQaiECCwNAIAIhByAAIgFBFGoiAigCACIADQAgAUEQaiECIAEoAhAiAA0ACyAHQQA2AgAMCQsgCEG8hAEoAgAiAk0EQEHIhAEoAgAhAwJAIAIgCGsiAUEQTwRAQbyEASABNgIAQciEASADIAhqIgA2AgAgACABQQFyNgIEIAIgA2ogATYCACADIAhBA3I2AgQMAQtByIQBQQA2AgBBvIQBQQA2AgAgAyACQQNyNgIEIAIgA2oiACAAKAIEQQFyNgIECyADQQhqIQAMCwsgCEHAhAEoAgAiBkkEQEHAhAEgBiAIayIBNgIAQcyEAUHMhAEoAgAiAiAIaiIANgIAIAAgAUEBcjYCBCACIAhBA3I2AgQgAkEIaiEADAsLQQAhACAIQS9qIgkCf0GMiAEoAgAEQEGUiAEoAgAMAQtBmIgBQn83AgBBkIgBQoCggICAgAQ3AgBBjIgBIAxBDGpBcHFB2KrVqgVzNgIAQaCIAUEANgIAQfCHAUEANgIAQYAgCyIBaiIFQQAgAWsiB3EiAiAITQ0KQeyHASgCACIEBEBB5IcBKAIAIgMgAmoiASADTQ0LIAEgBEsNCwtB8IcBLQAAQQRxDQUCQAJAQcyEASgCACIDBEBB9IcBIQADQCADIAAoAgAiAU8EQCABIAAoAgRqIANLDQMLIAAoAggiAA0ACwtBABApIgFBf0YNBiACIQVBkIgBKAIAIgNBAWsiACABcQRAIAIgAWsgACABakEAIANrcWohBQsgBSAITQ0GIAVB/v///wdLDQZB7IcBKAIAIgQEQEHkhwEoAgAiAyAFaiIAIANNDQcgACAESw0HCyAFECkiACABRw0BDAgLIAUgBmsgB3EiBUH+////B0sNBSAFECkiASAAKAIAIAAoAgRqRg0EIAEhAAsCQCAAQX9GDQAgCEEwaiAFTQ0AQZSIASgCACIBIAkgBWtqQQAgAWtxIgFB/v///wdLBEAgACEBDAgLIAEQKUF/RwRAIAEgBWohBSAAIQEMCAtBACAFaxApGgwFCyAAIgFBf0cNBgwECwALQQAhBAwHC0EAIQEMBQsgAUF/Rw0CC0HwhwFB8IcBKAIAQQRyNgIACyACQf7///8HSw0BIAIQKSEBQQAQKSEAIAFBf0YNASAAQX9GDQEgACABTQ0BIAAgAWsiBSAIQShqTQ0BC0HkhwFB5IcBKAIAIAVqIgA2AgBB6IcBKAIAIABJBEBB6IcBIAA2AgALAkACQAJAQcyEASgCACIHBEBB9IcBIQADQCABIAAoAgAiAyAAKAIEIgJqRg0CIAAoAggiAA0ACwwCC0HEhAEoAgAiAEEAIAAgAU0bRQRAQcSEASABNgIAC0EAIQBB+IcBIAU2AgBB9IcBIAE2AgBB1IQBQX82AgBB2IQBQYyIASgCADYCAEGAiAFBADYCAANAIABBA3QiA0HkhAFqIANB3IQBaiICNgIAIANB6IQBaiACNgIAIABBAWoiAEEgRw0AC0HAhAEgBUEoayIDQXggAWtBB3FBACABQQhqQQdxGyIAayICNgIAQcyEASAAIAFqIgA2AgAgACACQQFyNgIEIAEgA2pBKDYCBEHQhAFBnIgBKAIANgIADAILIAAtAAxBCHENACADIAdLDQAgASAHTQ0AIAAgAiAFajYCBEHMhAEgB0F4IAdrQQdxQQAgB0EIakEHcRsiAGoiAjYCAEHAhAFBwIQBKAIAIAVqIgEgAGsiADYCACACIABBAXI2AgQgASAHakEoNgIEQdCEAUGciAEoAgA2AgAMAQtBxIQBKAIAIAFLBEBBxIQBIAE2AgALIAEgBWohAkH0hwEhAAJAAkACQAJAAkACQANAIAIgACgCAEcEQCAAKAIIIgANAQwCCwsgAC0ADEEIcUUNAQtB9IcBIQADQCAHIAAoAgAiAk8EQCACIAAoAgRqIgQgB0sNAwsgACgCCCEADAALAAsgACABNgIAIAAgACgCBCAFajYCBCABQXggAWtBB3FBACABQQhqQQdxG2oiCSAIQQNyNgIEIAJBeCACa0EHcUEAIAJBCGpBB3EbaiIFIAggCWoiBmshAiAFIAdGBEBBzIQBIAY2AgBBwIQBQcCEASgCACACaiIANgIAIAYgAEEBcjYCBAwDCyAFQciEASgCAEYEQEHIhAEgBjYCAEG8hAFBvIQBKAIAIAJqIgA2AgAgBiAAQQFyNgIEIAAgBmogADYCAAwDCyAFKAIEIgBBA3FBAUYEQCAAQXhxIQcCQCAAQf8BTQRAIAUoAggiAyAAQQN2IgBBA3RB3IQBakYaIAMgBSgCDCIBRgRAQbSEAUG0hAEoAgBBfiAAd3E2AgAMAgsgAyABNgIMIAEgAzYCCAwBCyAFKAIYIQgCQCAFIAUoAgwiAUcEQCAFKAIIIgAgATYCDCABIAA2AggMAQsCQCAFQRRqIgAoAgAiAw0AIAVBEGoiACgCACIDDQBBACEBDAELA0AgACEEIAMiAUEUaiIAKAIAIgMNACABQRBqIQAgASgCECIDDQALIARBADYCAAsgCEUNAAJAIAUgBSgCHCIDQQJ0QeSGAWoiACgCAEYEQCAAIAE2AgAgAQ0BQbiEAUG4hAEoAgBBfiADd3E2AgAMAgsgCEEQQRQgCCgCECAFRhtqIAE2AgAgAUUNAQsgASAINgIYIAUoAhAiAARAIAEgADYCECAAIAE2AhgLIAUoAhQiAEUNACABIAA2AhQgACABNgIYCyAFIAdqIQUgAiAHaiECCyAFIAUoAgRBfnE2AgQgBiACQQFyNgIEIAIgBmogAjYCACACQf8BTQRAIAJBA3YiAEEDdEHchAFqIQICf0G0hAEoAgAiAUEBIAB0IgBxRQRAQbSEASAAIAFyNgIAIAIMAQsgAigCCAshACACIAY2AgggACAGNgIMIAYgAjYCDCAGIAA2AggMAwtBHyEAIAJB////B00EQCACQQh2IgAgAEGA/j9qQRB2QQhxIgN0IgAgAEGA4B9qQRB2QQRxIgF0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAEgA3IgAHJrIgBBAXQgAiAAQRVqdkEBcXJBHGohAAsgBiAANgIcIAZCADcCECAAQQJ0QeSGAWohBAJAQbiEASgCACIDQQEgAHQiAXFFBEBBuIQBIAEgA3I2AgAgBCAGNgIAIAYgBDYCGAwBCyACQQBBGSAAQQF2ayAAQR9GG3QhACAEKAIAIQEDQCABIgMoAgRBeHEgAkYNAyAAQR12IQEgAEEBdCEAIAMgAUEEcWoiBCgCECIBDQALIAQgBjYCECAGIAM2AhgLIAYgBjYCDCAGIAY2AggMAgtBwIQBIAVBKGsiA0F4IAFrQQdxQQAgAUEIakEHcRsiAGsiAjYCAEHMhAEgACABaiIANgIAIAAgAkEBcjYCBCABIANqQSg2AgRB0IQBQZyIASgCADYCACAHIARBJyAEa0EHcUEAIARBJ2tBB3EbakEvayIAIAAgB0EQakkbIgJBGzYCBCACQfyHASkCADcCECACQfSHASkCADcCCEH8hwEgAkEIajYCAEH4hwEgBTYCAEH0hwEgATYCAEGAiAFBADYCACACQRhqIQADQCAAQQc2AgQgAEEIaiEBIABBBGohACABIARJDQALIAIgB0YNAyACIAIoAgRBfnE2AgQgByACIAdrIgRBAXI2AgQgAiAENgIAIARB/wFNBEAgBEEDdiIAQQN0QdyEAWohAgJ/QbSEASgCACIBQQEgAHQiAHFFBEBBtIQBIAAgAXI2AgAgAgwBCyACKAIICyEAIAIgBzYCCCAAIAc2AgwgByACNgIMIAcgADYCCAwEC0EfIQAgB0IANwIQIARB////B00EQCAEQQh2IgAgAEGA/j9qQRB2QQhxIgJ0IgAgAEGA4B9qQRB2QQRxIgF0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAEgAnIgAHJrIgBBAXQgBCAAQRVqdkEBcXJBHGohAAsgByAANgIcIABBAnRB5IYBaiEDAkBBuIQBKAIAIgJBASAAdCIBcUUEQEG4hAEgASACcjYCACADIAc2AgAgByADNgIYDAELIARBAEEZIABBAXZrIABBH0YbdCEAIAMoAgAhAQNAIAEiAigCBEF4cSAERg0EIABBHXYhASAAQQF0IQAgAiABQQRxaiIDKAIQIgENAAsgAyAHNgIQIAcgAjYCGAsgByAHNgIMIAcgBzYCCAwDCyADKAIIIgAgBjYCDCADIAY2AgggBkEANgIYIAYgAzYCDCAGIAA2AggLIAlBCGohAAwFCyACKAIIIgAgBzYCDCACIAc2AgggB0EANgIYIAcgAjYCDCAHIAA2AggLQcCEASgCACIAIAhNDQBBwIQBIAAgCGsiATYCAEHMhAFBzIQBKAIAIgIgCGoiADYCACAAIAFBAXI2AgQgAiAIQQNyNgIEIAJBCGohAAwDC0GEhAFBMDYCAEEAIQAMAgsCQCAFRQ0AAkAgBCgCHCICQQJ0QeSGAWoiACgCACAERgRAIAAgATYCACABDQFBuIQBIAlBfiACd3EiCTYCAAwCCyAFQRBBFCAFKAIQIARGG2ogATYCACABRQ0BCyABIAU2AhggBCgCECIABEAgASAANgIQIAAgATYCGAsgBCgCFCIARQ0AIAEgADYCFCAAIAE2AhgLAkAgA0EPTQRAIAQgAyAIaiIAQQNyNgIEIAAgBGoiACAAKAIEQQFyNgIEDAELIAQgCEEDcjYCBCAGIANBAXI2AgQgAyAGaiADNgIAIANB/wFNBEAgA0EDdiIAQQN0QdyEAWohAgJ/QbSEASgCACIBQQEgAHQiAHFFBEBBtIQBIAAgAXI2AgAgAgwBCyACKAIICyEAIAIgBjYCCCAAIAY2AgwgBiACNgIMIAYgADYCCAwBC0EfIQAgA0H///8HTQRAIANBCHYiACAAQYD+P2pBEHZBCHEiAnQiACAAQYDgH2pBEHZBBHEiAXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgASACciAAcmsiAEEBdCADIABBFWp2QQFxckEcaiEACyAGIAA2AhwgBkIANwIQIABBAnRB5IYBaiECAkACQCAJQQEgAHQiAXFFBEBBuIQBIAEgCXI2AgAgAiAGNgIAIAYgAjYCGAwBCyADQQBBGSAAQQF2ayAAQR9GG3QhACACKAIAIQgDQCAIIgEoAgRBeHEgA0YNAiAAQR12IQIgAEEBdCEAIAEgAkEEcWoiAigCECIIDQALIAIgBjYCECAGIAE2AhgLIAYgBjYCDCAGIAY2AggMAQsgASgCCCIAIAY2AgwgASAGNgIIIAZBADYCGCAGIAE2AgwgBiAANgIICyAEQQhqIQAMAQsCQCALRQ0AAkAgASgCHCICQQJ0QeSGAWoiACgCACABRgRAIAAgBDYCACAEDQFBuIQBIAZBfiACd3E2AgAMAgsgC0EQQRQgCygCECABRhtqIAQ2AgAgBEUNAQsgBCALNgIYIAEoAhAiAARAIAQgADYCECAAIAQ2AhgLIAEoAhQiAEUNACAEIAA2AhQgACAENgIYCwJAIANBD00EQCABIAMgCGoiAEEDcjYCBCAAIAFqIgAgACgCBEEBcjYCBAwBCyABIAhBA3I2AgQgCSADQQFyNgIEIAMgCWogAzYCACAKBEAgCkEDdiIAQQN0QdyEAWohBEHIhAEoAgAhAgJ/QQEgAHQiACAFcUUEQEG0hAEgACAFcjYCACAEDAELIAQoAggLIQAgBCACNgIIIAAgAjYCDCACIAQ2AgwgAiAANgIIC0HIhAEgCTYCAEG8hAEgAzYCAAsgAUEIaiEACyAMQRBqJAAgAAuJAQEDfyAAKAIcIgEQMAJAIAAoAhAiAiABKAIQIgMgAiADSRsiAkUNACAAKAIMIAEoAgggAhAHGiAAIAAoAgwgAmo2AgwgASABKAIIIAJqNgIIIAAgACgCFCACajYCFCAAIAAoAhAgAms2AhAgASABKAIQIAJrIgA2AhAgAA0AIAEgASgCBDYCCAsLzgEBBX8CQCAARQ0AIAAoAjAiAQRAIAAgAUEBayIBNgIwIAENAQsgACgCIARAIABBATYCICAAEBoaCyAAKAIkQQFGBEAgABBDCwJAIAAoAiwiAUUNACAALQAoDQACQCABKAJEIgNFDQAgASgCTCEEA0AgACAEIAJBAnRqIgUoAgBHBEAgAyACQQFqIgJHDQEMAgsLIAUgBCADQQFrIgJBAnRqKAIANgIAIAEgAjYCRAsLIABBAEIAQQUQDhogACgCACIBBEAgARALCyAAEAYLC1oCAn4BfwJ/AkACQCAALQAARQ0AIAApAxAiAUJ9Vg0AIAFCAnwiAiAAKQMIWA0BCyAAQQA6AABBAAwBC0EAIAAoAgQiA0UNABogACACNwMQIAMgAadqLwAACwthAgJ+AX8CQAJAIAAtAABFDQAgACkDECICQn1WDQAgAkICfCIDIAApAwhYDQELIABBADoAAA8LIAAoAgQiBEUEQA8LIAAgAzcDECAEIAKnaiIAIAFBCHY6AAEgACABOgAAC8wCAQJ/IwBBEGsiBCQAAkAgACkDGCADrYinQQFxRQRAIABBDGoiAARAIABBADYCBCAAQRw2AgALQn8hAgwBCwJ+IAAoAgAiBUUEQCAAKAIIIAEgAiADIAAoAgQRDAAMAQsgBSAAKAIIIAEgAiADIAAoAgQRCgALIgJCf1UNAAJAIANBBGsOCwEAAAAAAAAAAAABAAsCQAJAIAAtABhBEHFFBEAgAEEMaiIBBEAgAUEANgIEIAFBHDYCAAsMAQsCfiAAKAIAIgFFBEAgACgCCCAEQQhqQghBBCAAKAIEEQwADAELIAEgACgCCCAEQQhqQghBBCAAKAIEEQoAC0J/VQ0BCyAAQQxqIgAEQCAAQQA2AgQgAEEUNgIACwwBCyAEKAIIIQEgBCgCDCEDIABBDGoiAARAIAAgAzYCBCAAIAE2AgALCyAEQRBqJAAgAguTFQIOfwN+AkACQAJAAkACQAJAAkACQAJAAkACQCAAKALwLQRAIAAoAogBQQFIDQEgACgCACIEKAIsQQJHDQQgAC8B5AENAyAALwHoAQ0DIAAvAewBDQMgAC8B8AENAyAALwH0AQ0DIAAvAfgBDQMgAC8B/AENAyAALwGcAg0DIAAvAaACDQMgAC8BpAINAyAALwGoAg0DIAAvAawCDQMgAC8BsAINAyAALwG0Ag0DIAAvAbgCDQMgAC8BvAINAyAALwHAAg0DIAAvAcQCDQMgAC8ByAINAyAALwHUAg0DIAAvAdgCDQMgAC8B3AINAyAALwHgAg0DIAAvAYgCDQIgAC8BjAINAiAALwGYAg0CQSAhBgNAIAAgBkECdCIFai8B5AENAyAAIAVBBHJqLwHkAQ0DIAAgBUEIcmovAeQBDQMgACAFQQxyai8B5AENAyAGQQRqIgZBgAJHDQALDAMLIABBBzYC/C0gAkF8Rw0FIAFFDQUMBgsgAkEFaiIEIQcMAwtBASEHCyAEIAc2AiwLIAAgAEHoFmoQUSAAIABB9BZqEFEgAC8B5gEhBCAAIABB7BZqKAIAIgxBAnRqQf//AzsB6gEgAEGQFmohECAAQZQWaiERIABBjBZqIQdBACEGIAxBAE4EQEEHQYoBIAQbIQ1BBEEDIAQbIQpBfyEJA0AgBCEIIAAgCyIOQQFqIgtBAnRqLwHmASEEAkACQCAGQQFqIgVB//8DcSIPIA1B//8DcU8NACAEIAhHDQAgBSEGDAELAn8gACAIQQJ0akHMFWogCkH//wNxIA9LDQAaIAgEQEEBIQUgByAIIAlGDQEaIAAgCEECdGpBzBVqIgYgBi8BAEEBajsBACAHDAELQQEhBSAQIBEgBkH//wNxQQpJGwsiBiAGLwEAIAVqOwEAQQAhBgJ/IARFBEBBAyEKQYoBDAELQQNBBCAEIAhGIgUbIQpBBkEHIAUbCyENIAghCQsgDCAORw0ACwsgAEHaE2ovAQAhBCAAIABB+BZqKAIAIgxBAnRqQd4TakH//wM7AQBBACEGIAxBAE4EQEEHQYoBIAQbIQ1BBEEDIAQbIQpBfyEJQQAhCwNAIAQhCCAAIAsiDkEBaiILQQJ0akHaE2ovAQAhBAJAAkAgBkEBaiIFQf//A3EiDyANQf//A3FPDQAgBCAIRw0AIAUhBgwBCwJ/IAAgCEECdGpBzBVqIApB//8DcSAPSw0AGiAIBEBBASEFIAcgCCAJRg0BGiAAIAhBAnRqQcwVaiIGIAYvAQBBAWo7AQAgBwwBC0EBIQUgECARIAZB//8DcUEKSRsLIgYgBi8BACAFajsBAEEAIQYCfyAERQRAQQMhCkGKAQwBC0EDQQQgBCAIRiIFGyEKQQZBByAFGwshDSAIIQkLIAwgDkcNAAsLIAAgAEGAF2oQUSAAIAAoAvgtAn9BEiAAQYoWai8BAA0AGkERIABB0hVqLwEADQAaQRAgAEGGFmovAQANABpBDyAAQdYVai8BAA0AGkEOIABBghZqLwEADQAaQQ0gAEHaFWovAQANABpBDCAAQf4Vai8BAA0AGkELIABB3hVqLwEADQAaQQogAEH6FWovAQANABpBCSAAQeIVai8BAA0AGkEIIABB9hVqLwEADQAaQQcgAEHmFWovAQANABpBBiAAQfIVai8BAA0AGkEFIABB6hVqLwEADQAaQQQgAEHuFWovAQANABpBA0ECIABBzhVqLwEAGwsiBkEDbGoiBEERajYC+C0gACgC/C1BCmpBA3YiByAEQRtqQQN2IgRNBEAgByEEDAELIAAoAowBQQRHDQAgByEECyAEIAJBBGpPQQAgARsNASAEIAdHDQQLIANBAmqtIRIgACkDmC4hFCAAKAKgLiIBQQNqIgdBP0sNASASIAGthiAUhCESDAILIAAgASACIAMQOQwDCyABQcAARgRAIAAoAgQgACgCEGogFDcAACAAIAAoAhBBCGo2AhBBAyEHDAELIAAoAgQgACgCEGogEiABrYYgFIQ3AAAgACAAKAIQQQhqNgIQIAFBPWshByASQcAAIAFrrYghEgsgACASNwOYLiAAIAc2AqAuIABBgMEAQYDKABCHAQwBCyADQQRqrSESIAApA5guIRQCQCAAKAKgLiIBQQNqIgRBP00EQCASIAGthiAUhCESDAELIAFBwABGBEAgACgCBCAAKAIQaiAUNwAAIAAgACgCEEEIajYCEEEDIQQMAQsgACgCBCAAKAIQaiASIAGthiAUhDcAACAAIAAoAhBBCGo2AhAgAUE9ayEEIBJBwAAgAWutiCESCyAAIBI3A5guIAAgBDYCoC4gAEHsFmooAgAiC6xCgAJ9IRMgAEH4FmooAgAhCQJAAkACfwJ+AkACfwJ/IARBOk0EQCATIASthiAShCETIARBBWoMAQsgBEHAAEYEQCAAKAIEIAAoAhBqIBI3AAAgACAAKAIQQQhqNgIQIAmsIRJCBSEUQQoMAgsgACgCBCAAKAIQaiATIASthiAShDcAACAAIAAoAhBBCGo2AhAgE0HAACAEa62IIRMgBEE7awshBSAJrCESIAVBOksNASAFrSEUIAVBBWoLIQcgEiAUhiAThAwBCyAFQcAARgRAIAAoAgQgACgCEGogEzcAACAAIAAoAhBBCGo2AhAgBq1CA30hE0IFIRRBCQwCCyAAKAIEIAAoAhBqIBIgBa2GIBOENwAAIAAgACgCEEEIajYCECAFQTtrIQcgEkHAACAFa62ICyESIAatQgN9IRMgB0E7Sw0BIAetIRQgB0EEagshBCATIBSGIBKEIRMMAQsgB0HAAEYEQCAAKAIEIAAoAhBqIBI3AAAgACAAKAIQQQhqNgIQQQQhBAwBCyAAKAIEIAAoAhBqIBMgB62GIBKENwAAIAAgACgCEEEIajYCECAHQTxrIQQgE0HAACAHa62IIRMLQQAhBQNAIAAgBSIBQZDWAGotAABBAnRqQc4VajMBACEUAn8gBEE8TQRAIBQgBK2GIBOEIRMgBEEDagwBCyAEQcAARgRAIAAoAgQgACgCEGogEzcAACAAIAAoAhBBCGo2AhAgFCETQQMMAQsgACgCBCAAKAIQaiAUIASthiAThDcAACAAIAAoAhBBCGo2AhAgFEHAACAEa62IIRMgBEE9awshBCABQQFqIQUgASAGRw0ACyAAIAQ2AqAuIAAgEzcDmC4gACAAQeQBaiICIAsQhgEgACAAQdgTaiIBIAkQhgEgACACIAEQhwELIAAQiAEgAwRAAkAgACgCoC4iBEE5TgRAIAAoAgQgACgCEGogACkDmC43AAAgACAAKAIQQQhqNgIQDAELIARBGU4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgQ2AqAuCyAEQQlOBH8gACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACgCoC5BEGsFIAQLQQFIDQAgACAAKAIQIgFBAWo2AhAgASAAKAIEaiAAKQOYLjwAAAsgAEEANgKgLiAAQgA3A5guCwsZACAABEAgACgCABAGIAAoAgwQBiAAEAYLC6wBAQJ+Qn8hAwJAIAAtACgNAAJAAkAgACgCIEUNACACQgBTDQAgAlANASABDQELIABBDGoiAARAIABBADYCBCAAQRI2AgALQn8PCyAALQA1DQBCACEDIAAtADQNACACUA0AA0AgACABIAOnaiACIAN9QQEQDiIEQn9XBEAgAEEBOgA1Qn8gAyADUBsPCyAEUEUEQCADIAR8IgMgAloNAgwBCwsgAEEBOgA0CyADC3UCAn4BfwJAAkAgAC0AAEUNACAAKQMQIgJCe1YNACACQgR8IgMgACkDCFgNAQsgAEEAOgAADwsgACgCBCIERQRADwsgACADNwMQIAQgAqdqIgAgAUEYdjoAAyAAIAFBEHY6AAIgACABQQh2OgABIAAgAToAAAtUAgF+AX8CQAJAIAAtAABFDQAgASAAKQMQIgF8IgIgAVQNACACIAApAwhYDQELIABBADoAAEEADwsgACgCBCIDRQRAQQAPCyAAIAI3AxAgAyABp2oLdwECfyMAQRBrIgMkAEF/IQQCQCAALQAoDQAgACgCIEEAIAJBA0kbRQRAIABBDGoiAARAIABBADYCBCAAQRI2AgALDAELIAMgAjYCCCADIAE3AwAgACADQhBBBhAOQgBTDQBBACEEIABBADoANAsgA0EQaiQAIAQLVwICfgF/AkACQCAALQAARQ0AIAApAxAiAUJ7Vg0AIAFCBHwiAiAAKQMIWA0BCyAAQQA6AABBAA8LIAAoAgQiA0UEQEEADwsgACACNwMQIAMgAadqKAAAC1UCAX4BfyAABEACQCAAKQMIUA0AQgEhAQNAIAAoAgAgAkEEdGoQPiABIAApAwhaDQEgAachAiABQgF8IQEMAAsACyAAKAIAEAYgACgCKBAQIAAQBgsLZAECfwJAAkACQCAARQRAIAGnEAkiA0UNAkEYEAkiAkUNAQwDCyAAIQNBGBAJIgINAkEADwsgAxAGC0EADwsgAkIANwMQIAIgATcDCCACIAM2AgQgAkEBOgAAIAIgAEU6AAEgAgudAQICfgF/AkACQCAALQAARQ0AIAApAxAiAkJ3Vg0AIAJCCHwiAyAAKQMIWA0BCyAAQQA6AAAPCyAAKAIEIgRFBEAPCyAAIAM3AxAgBCACp2oiACABQjiIPAAHIAAgAUIwiDwABiAAIAFCKIg8AAUgACABQiCIPAAEIAAgAUIYiDwAAyAAIAFCEIg8AAIgACABQgiIPAABIAAgATwAAAvwAgICfwF+AkAgAkUNACAAIAJqIgNBAWsgAToAACAAIAE6AAAgAkEDSQ0AIANBAmsgAToAACAAIAE6AAEgA0EDayABOgAAIAAgAToAAiACQQdJDQAgA0EEayABOgAAIAAgAToAAyACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiADYCACADIAIgBGtBfHEiAmoiAUEEayAANgIAIAJBCUkNACADIAA2AgggAyAANgIEIAFBCGsgADYCACABQQxrIAA2AgAgAkEZSQ0AIAMgADYCGCADIAA2AhQgAyAANgIQIAMgADYCDCABQRBrIAA2AgAgAUEUayAANgIAIAFBGGsgADYCACABQRxrIAA2AgAgAiADQQRxQRhyIgFrIgJBIEkNACAArUKBgICAEH4hBSABIANqIQEDQCABIAU3AxggASAFNwMQIAEgBTcDCCABIAU3AwAgAUEgaiEBIAJBIGsiAkEfSw0ACwsLbwEDfyAAQQxqIQICQAJ/IAAoAiAiAUUEQEF/IQFBEgwBCyAAIAFBAWsiAzYCIEEAIQEgAw0BIABBAEIAQQIQDhogACgCACIARQ0BIAAQGkF/Sg0BQRQLIQAgAgRAIAJBADYCBCACIAA2AgALCyABC58BAgF/AX4CfwJAAn4gACgCACIDKAIkQQFGQQAgAkJ/VRtFBEAgA0EMaiIBBEAgAUEANgIEIAFBEjYCAAtCfwwBCyADIAEgAkELEA4LIgRCf1cEQCAAKAIAIQEgAEEIaiIABEAgACABKAIMNgIAIAAgASgCEDYCBAsMAQtBACACIARRDQEaIABBCGoEQCAAQRs2AgwgAEEGNgIICwtBfwsLJAEBfyAABEADQCAAKAIAIQEgACgCDBAGIAAQBiABIgANAAsLC5gBAgJ+AX8CQAJAIAAtAABFDQAgACkDECIBQndWDQAgAUIIfCICIAApAwhYDQELIABBADoAAEIADwsgACgCBCIDRQRAQgAPCyAAIAI3AxAgAyABp2oiADEABkIwhiAAMQAHQjiGhCAAMQAFQiiGhCAAMQAEQiCGhCAAMQADQhiGhCAAMQACQhCGhCAAMQABQgiGhCAAMQAAfAsjACAAQShGBEAgAhAGDwsgAgRAIAEgAkEEaygCACAAEQcACwsyACAAKAIkQQFHBEAgAEEMaiIABEAgAEEANgIEIABBEjYCAAtCfw8LIABBAEIAQQ0QDgsPACAABEAgABA2IAAQBgsLgAEBAX8gAC0AKAR/QX8FIAFFBEAgAEEMagRAIABBADYCECAAQRI2AgwLQX8PCyABECoCQCAAKAIAIgJFDQAgAiABECFBf0oNACAAKAIAIQEgAEEMaiIABEAgACABKAIMNgIAIAAgASgCEDYCBAtBfw8LIAAgAUI4QQMQDkI/h6cLC38BA38gACEBAkAgAEEDcQRAA0AgAS0AAEUNAiABQQFqIgFBA3ENAAsLA0AgASICQQRqIQEgAigCACIDQX9zIANBgYKECGtxQYCBgoR4cUUNAAsgA0H/AXFFBEAgAiAAaw8LA0AgAi0AASEDIAJBAWoiASECIAMNAAsLIAEgAGsL3wIBCH8gAEUEQEEBDwsCQCAAKAIIIgINAEEBIQQgAC8BBCIHRQRAQQEhAgwBCyAAKAIAIQgDQAJAIAMgCGoiBS0AACICQSBPBEAgAkEYdEEYdUF/Sg0BCyACQQ1NQQBBASACdEGAzABxGw0AAn8CfyACQeABcUHAAUYEQEEBIQYgA0EBagwBCyACQfABcUHgAUYEQCADQQJqIQNBACEGQQEMAgsgAkH4AXFB8AFHBEBBBCECDAULQQAhBiADQQNqCyEDQQALIQlBBCECIAMgB08NAiAFLQABQcABcUGAAUcNAkEDIQQgBg0AIAUtAAJBwAFxQYABRw0CIAkNACAFLQADQcABcUGAAUcNAgsgBCECIANBAWoiAyAHSQ0ACwsgACACNgIIAn8CQCABRQ0AAkAgAUECRw0AIAJBA0cNAEECIQIgAEECNgIICyABIAJGDQBBBSACQQFHDQEaCyACCwtIAgJ+An8jAEEQayIEIAE2AgxCASAArYYhAgNAIAQgAUEEaiIANgIMIAIiA0IBIAEoAgAiBa2GhCECIAAhASAFQX9KDQALIAMLhwUBB38CQAJAIABFBEBBxRQhAiABRQ0BIAFBADYCAEHFFA8LIAJBwABxDQEgACgCCEUEQCAAQQAQIxoLIAAoAgghBAJAIAJBgAFxBEAgBEEBa0ECTw0BDAMLIARBBEcNAgsCQCAAKAIMIgINACAAAn8gACgCACEIIABBEGohCUEAIQICQAJAAkACQCAALwEEIgUEQEEBIQQgBUEBcSEHIAVBAUcNAQwCCyAJRQ0CIAlBADYCAEEADAQLIAVBfnEhBgNAIARBAUECQQMgAiAIai0AAEEBdEHQFGovAQAiCkGAEEkbIApBgAFJG2pBAUECQQMgCCACQQFyai0AAEEBdEHQFGovAQAiBEGAEEkbIARBgAFJG2ohBCACQQJqIQIgBkECayIGDQALCwJ/IAcEQCAEQQFBAkEDIAIgCGotAABBAXRB0BRqLwEAIgJBgBBJGyACQYABSRtqIQQLIAQLEAkiB0UNASAFQQEgBUEBSxshCkEAIQVBACEGA0AgBSAHaiEDAn8gBiAIai0AAEEBdEHQFGovAQAiAkH/AE0EQCADIAI6AAAgBUEBagwBCyACQf8PTQRAIAMgAkE/cUGAAXI6AAEgAyACQQZ2QcABcjoAACAFQQJqDAELIAMgAkE/cUGAAXI6AAIgAyACQQx2QeABcjoAACADIAJBBnZBP3FBgAFyOgABIAVBA2oLIQUgBkEBaiIGIApHDQALIAcgBEEBayICakEAOgAAIAlFDQAgCSACNgIACyAHDAELIAMEQCADQQA2AgQgA0EONgIAC0EACyICNgIMIAINAEEADwsgAUUNACABIAAoAhA2AgALIAIPCyABBEAgASAALwEENgIACyAAKAIAC4MBAQR/QRIhBQJAAkAgACkDMCABWA0AIAGnIQYgACgCQCEEIAJBCHEiB0UEQCAEIAZBBHRqKAIEIgINAgsgBCAGQQR0aiIEKAIAIgJFDQAgBC0ADEUNAUEXIQUgBw0BC0EAIQIgAyAAQQhqIAMbIgAEQCAAQQA2AgQgACAFNgIACwsgAgtuAQF/IwBBgAJrIgUkAAJAIARBgMAEcQ0AIAIgA0wNACAFIAFB/wFxIAIgA2siAkGAAiACQYACSSIBGxAZIAFFBEADQCAAIAVBgAIQLiACQYACayICQf8BSw0ACwsgACAFIAIQLgsgBUGAAmokAAuBAQEBfyMAQRBrIgQkACACIANsIQICQCAAQSdGBEAgBEEMaiACEIwBIQBBACAEKAIMIAAbIQAMAQsgAUEBIAJBxABqIAARAAAiAUUEQEEAIQAMAQtBwAAgAUE/cWsiACABakHAAEEAIABBBEkbaiIAQQRrIAE2AAALIARBEGokACAAC1IBAn9BhIEBKAIAIgEgAEEDakF8cSICaiEAAkAgAkEAIAAgAU0bDQAgAD8AQRB0SwRAIAAQA0UNAQtBhIEBIAA2AgAgAQ8LQYSEAUEwNgIAQX8LNwAgAEJ/NwMQIABBADYCCCAAQgA3AwAgAEEANgIwIABC/////w83AyggAEIANwMYIABCADcDIAulAQEBf0HYABAJIgFFBEBBAA8LAkAgAARAIAEgAEHYABAHGgwBCyABQgA3AyAgAUEANgIYIAFC/////w83AxAgAUEAOwEMIAFBv4YoNgIIIAFBAToABiABQQA6AAQgAUIANwNIIAFBgIDYjXg2AkQgAUIANwMoIAFCADcDMCABQgA3AzggAUFAa0EAOwEAIAFCADcDUAsgAUEBOgAFIAFBADYCACABC1gCAn4BfwJAAkAgAC0AAEUNACAAKQMQIgMgAq18IgQgA1QNACAEIAApAwhYDQELIABBADoAAA8LIAAoAgQiBUUEQA8LIAAgBDcDECAFIAOnaiABIAIQBxoLlgEBAn8CQAJAIAJFBEAgAacQCSIFRQ0BQRgQCSIEDQIgBRAGDAELIAIhBUEYEAkiBA0BCyADBEAgA0EANgIEIANBDjYCAAtBAA8LIARCADcDECAEIAE3AwggBCAFNgIEIARBAToAACAEIAJFOgABIAAgBSABIAMQZUEASAR/IAQtAAEEQCAEKAIEEAYLIAQQBkEABSAECwubAgEDfyAALQAAQSBxRQRAAkAgASEDAkAgAiAAIgEoAhAiAAR/IAAFAn8gASABLQBKIgBBAWsgAHI6AEogASgCACIAQQhxBEAgASAAQSByNgIAQX8MAQsgAUIANwIEIAEgASgCLCIANgIcIAEgADYCFCABIAAgASgCMGo2AhBBAAsNASABKAIQCyABKAIUIgVrSwRAIAEgAyACIAEoAiQRAAAaDAILAn8gASwAS0F/SgRAIAIhAANAIAIgACIERQ0CGiADIARBAWsiAGotAABBCkcNAAsgASADIAQgASgCJBEAACAESQ0CIAMgBGohAyABKAIUIQUgAiAEawwBCyACCyEAIAUgAyAAEAcaIAEgASgCFCAAajYCFAsLCwvNBQEGfyAAKAIwIgNBhgJrIQYgACgCPCECIAMhAQNAIAAoAkQgAiAAKAJoIgRqayECIAEgBmogBE0EQCAAKAJIIgEgASADaiADEAcaAkAgAyAAKAJsIgFNBEAgACABIANrNgJsDAELIABCADcCbAsgACAAKAJoIANrIgE2AmggACAAKAJYIANrNgJYIAEgACgChC5JBEAgACABNgKELgsgAEH8gAEoAgARAwAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJoaiAFaiEFIAEgBCACazYCBAJAAkACQAJAIAEoAhwiBCgCFEEBaw4CAQACCyAEQaABaiAFIAEoAgAgAkHcgAEoAgARCAAMAgsgASABKAIwIAUgASgCACACQcSAASgCABEEADYCMAwBCyAFIAEoAgAgAhAHGgsgASABKAIAIAJqNgIAIAEgASgCCCACajYCCCAAKAI8BSAFCyACaiICNgI8AkAgACgChC4iASACakEDSQ0AIAAoAmggAWshAQJAIAAoAnRBgQhPBEAgACAAIAAoAkggAWoiAi0AACACLQABIAAoAnwRAAA2AlQMAQsgAUUNACAAIAFBAWsgACgChAERAgAaCyAAKAKELiAAKAI8IgJBAUZrIgRFDQAgACABIAQgACgCgAERBQAgACAAKAKELiAEazYChC4gACgCPCECCyACQYUCSw0AIAAoAgAoAgRFDQAgACgCMCEBDAELCwJAIAAoAkQiAiAAKAJAIgNNDQAgAAJ/IAAoAjwgACgCaGoiASADSwRAIAAoAkggAWpBACACIAFrIgNBggIgA0GCAkkbIgMQGSABIANqDAELIAFBggJqIgEgA00NASAAKAJIIANqQQAgAiADayICIAEgA2siAyACIANJGyIDEBkgACgCQCADags2AkALC50CAQF/AkAgAAJ/IAAoAqAuIgFBwABGBEAgACgCBCAAKAIQaiAAKQOYLjcAACAAQgA3A5guIAAgACgCEEEIajYCEEEADAELIAFBIE4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgE2AqAuCyABQRBOBEAgACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACAAKAKgLkEQayIBNgKgLgsgAUEISA0BIAAgACgCECIBQQFqNgIQ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KAJUIgEEfyABQQAgARAiEBkgACgCVAVBAAsQBiAAQQA2AlQLC9wMAgl/AX4jAEFAaiIGJAACQAJAAkACQAJAIAEoAjBBABAjIgVBAkZBACABKAI4QQAQIyIEQQFGGw0AIAVBAUZBACAEQQJGGw0AIAVBAkciAw0BIARBAkcNAQsgASABLwEMQYAQcjsBDEEAIQMMAQsgASABLwEMQf/vA3E7AQxBACEFIANFBEBB9eABIAEoAjAgAEEIahBpIgVFDQILIAJBgAJxBEAgBSEDDAELIARBAkcEQCAFIQMMAQtB9cYBIAEoAjggAEEIahBpIgNFBEAgBRAcDAILIAMgBTYCAAsgASABLwEMQf7/A3EgAS8BUiIFQQBHcjsBDAJAAkACQAJAAn8CQAJAIAEpAyhC/v///w9WDQAgASkDIEL+////D1YNACACQYAEcUUNASABKQNIQv////8PVA0BCyAFQYECa0H//wNxQQNJIQdBAQwBCyAFQYECa0H//wNxIQQgAkGACnFBgApHDQEgBEEDSSEHQQALIQkgBkIcEBciBEUEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyADEBwMBQsgAkGACHEhBQJAAkAgAkGAAnEEQAJAIAUNACABKQMgQv////8PVg0AIAEpAyhCgICAgBBUDQMLIAQgASkDKBAYIAEpAyAhDAwBCwJAAkACQCAFDQAgASkDIEL/////D1YNACABKQMoIgxC/////w9WDQEgASkDSEKAgICAEFQNBAsgASkDKCIMQv////8PVA0BCyAEIAwQGAsgASkDICIMQv////8PWgRAIAQgDBAYCyABKQNIIgxC/////w9UDQELIAQgDBAYCyAELQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAQQCCADEBwMBQtBASEKQQEgBC0AAAR+IAQpAxAFQgALp0H//wNxIAYQRyEFIAQQCCAFIAM2AgAgBw0BDAILIAMhBSAEQQJLDQELIAZCBxAXIgRFBEAgAEEIaiIABEAgAEEANgIEIABBDjYCAAsgBRAcDAMLIARBAhANIARBhxJBAhAsIAQgAS0AUhBwIAQgAS8BEBANIAQtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAsgBBAIDAILQYGyAkEHIAYQRyEDIAQQCCADIAU2AgBBASEL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NgIEIABB7A42AhggGiEdDAMLIARB/wFxIgJBwABxRQRAIAggDSADLwECQQJ0aiAdp0F/IAJ0QX9zcUECdGoiAy0AASICayEIIB0gAq2IIR0gAy0AACIERQ0HDAELCyAEQSBxBEAgB0G//gA2AgQgASECDAgLIAdB0f4ANgIEIABB0A42AhggASECDAcLIB1BfyAGdEF/c62DIBt8IhunIQUgCCAEQQ9xIgNrIQggGiAErUIPg4ghHSABIBdrIgYgAjMBAiAaQX8gA3RBf3Otg3ynIgRPDQIgBCAGayIGIBlNDQEgBygCjEdFDQEgB0HR/gA2AgQgAEG5DDYCGAsgASECIAshBQwFCwJAIA5FBEAgDCARIAZraiEDDAELIAYgDk0EQCAMIA4gBmtqIQMMAQsgDCARIAYgDmsiBmtqIQMgBSAGTQ0AIAUgBmshBQJAAkAgASADTSABIA8gAWusIhogBq0iGyAaIBtUGyIapyIGaiICIANLcQ0AIAMgBmogAUsgASADT3ENACABIAMgBhAHGiACIQEMAQsgASADIAMgAWsiASABQR91IgFqIAFzIgIQByACaiEBIBogAq0iHn0iHFANACACIANqIQIDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgASACKQAANwAAIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIBpCIH0hGiACQSBqIQIgAUEgaiEBIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAEgAikAADcAACABIAIpABg3ABggASACKQAQNwAQIAEgAikACDcACCABIAIpADg3ADggASACKQAwNwAwIAEgAikAKDcAKCABIAIpACA3ACAgASACKQBYNwBYIAEgAikAUDcAUCABIAIpAEg3AEggASACKQBANwBAIAEgAikAYDcAYCABIAIpAGg3AGggASACKQBwNwBwIAEgAikAeDcAeCACQYABaiECIAFBgAFqIQEgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAEgAikAADcAACABIAIpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCABIAIpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCABIAIoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCABIAIvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCABIAItAAA6AAAgAkEBaiECIAFBAWohAQsgHEIAUg0ACwsgDiEGIAwhAwsgBSAGSwRAAkACQCABIANNIAEgDyABa6wiGiAGrSIbIBogG1QbIhqnIglqIgIgA0txDQAgAyAJaiABSyABIANPcQ0AIAEgAyAJEAcaDAELIAEgAyADIAFrIgEgAUEfdSIBaiABcyIBEAcgAWohAiAaIAGtIh59IhxQDQAgASADaiEBA0ACQCAcIB4gHCAeVBsiG0IgVARAIBshGgwBCyAbIhpCIH0iIEIFiEIBfEIDgyIfUEUEQANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCAaQiB9IRogAUEgaiEBIAJBIGohAiAfQgF9Ih9CAFINAAsLICBC4ABUDQADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggAiABKQA4NwA4IAIgASkAMDcAMCACIAEpACg3ACggAiABKQAgNwAgIAIgASkAWDcAWCACIAEpAFA3AFAgAiABKQBINwBIIAIgASkAQDcAQCACIAEpAGA3AGAgAiABKQBoNwBoIAIgASkAcDcAcCACIAEpAHg3AHggAUGAAWohASACQYABaiECIBpCgAF9IhpCH1YNAAsLIBpCEFoEQCACIAEpAAA3AAAgAiABKQAINwAIIBpCEH0hGiACQRBqIQIgAUEQaiEBCyAaQghaBEAgAiABKQAANwAAIBpCCH0hGiACQQhqIQIgAUEIaiEBCyAaQgRaBEAgAiABKAAANgAAIBpCBH0hGiACQQRqIQIgAUEEaiEBCyAaQgJaBEAgAiABLwAAOwAAIBpCAn0hGiACQQJqIQIgAUECaiEBCyAcIBt9IRwgGlBFBEAgAiABLQAAOgAAIAJBAWohAiABQQFqIQELIBxCAFINAAsLIAUgBmshAUEAIARrIQUCQCAEQQdLBEAgBCEDDAELIAEgBE0EQCAEIQMMAQsgAiAEayEFA0ACQCACIAUpAAA3AAAgBEEBdCEDIAEgBGshASACIARqIQIgBEEDSw0AIAMhBCABIANLDQELC0EAIANrIQULIAIgBWohBAJAIAUgDyACa6wiGiABrSIbIBogG1QbIhqnIgFIIAVBf0pxDQAgBUEBSCABIARqIAJLcQ0AIAIgBCABEAcgAWohAgwDCyACIAQgAyADQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANAiABIARqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAILAkAgASADTSABIA8gAWusIhogBa0iGyAaIBtUGyIapyIEaiICIANLcQ0AIAMgBGogAUsgASADT3ENACABIAMgBBAHGgwCCyABIAMgAyABayIBIAFBH3UiAWogAXMiARAHIAFqIQIgGiABrSIefSIcUA0BIAEgA2ohAQNAAkAgHCAeIBwgHlQbIhtCIFQEQCAbIRoMAQsgGyIaQiB9IiBCBYhCAXxCA4MiH1BFBEADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggGkIgfSEaIAFBIGohASACQSBqIQIgH0IBfSIfQgBSDQALCyAgQuAAVA0AA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIAIgASkAODcAOCACIAEpADA3ADAgAiABKQAoNwAoIAIgASkAIDcAICACIAEpAFg3AFggAiABKQBQNwBQIAIgASkASDcASCACIAEpAEA3AEAgAiABKQBgNwBgIAIgASkAaDcAaCACIAEpAHA3AHAgAiABKQB4NwB4IAFBgAFqIQEgAkGAAWohAiAaQoABfSIaQh9WDQALCyAaQhBaBEAgAiABKQAANwAAIAIgASkACDcACCAaQhB9IRogAkEQaiECIAFBEGohAQsgGkIIWgRAIAIgASkAADcAACAaQgh9IRogAkEIaiECIAFBCGohAQsgGkIEWgRAIAIgASgAADYAACAaQgR9IRogAkEEaiECIAFBBGohAQsgGkICWgRAIAIgAS8AADsAACAaQgJ9IRogAkECaiECIAFBAmohAQsgHCAbfSEcIBpQRQRAIAIgAS0AADoAACACQQFqIQIgAUEBaiEBCyAcUEUNAAsMAQsCQAJAIBYEQAJAIAQgBUkEQCAHKAKYRyAESw0BCyABIARrIQMCQEEAIARrIgVBf0ogDyABa6wiGiAbIBogG1QbIhqnIgIgBUpxDQAgBUEBSCACIANqIAFLcQ0AIAEgAyACEAcgAmohAgwFCyABIAMgBCAEQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANBCABIANqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAQLIBAgAWsiCUEBaiIGIAUgBSAGSxshAyABIARrIQIgAUEHcUUNAiADRQ0CIAEgAi0AADoAACACQQFqIQIgAUEBaiIGQQdxQQAgA0EBayIFGw0BIAYhASAFIQMgCSEGDAILAkAgBCAFSQRAIAcoAphHIARLDQELIAEgASAEayIGKQAANwAAIAEgBUEBa0EHcUEBaiIDaiECIAUgA2siBEUNAyADIAZqIQEDQCACIAEpAAA3AAAgAUEIaiEBIAJBCGohAiAEQQhrIgQNAAsMAwsgASAEIAUQPyECDAILIAEgAi0AADoAASAJQQFrIQYgA0ECayEFIAJBAWohAgJAIAFBAmoiCkEHcUUNACAFRQ0AIAEgAi0AADoAAiAJQQJrIQYgA0EDayEFIAJBAWohAgJAIAFBA2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAAyAJQQNrIQYgA0EEayEFIAJBAWohAgJAIAFBBGoiCkEHcUUNACAFRQ0AIAEgAi0AADoABCAJQQRrIQYgA0EFayEFIAJBAWohAgJAIAFBBWoiCkEHcUUNACAFRQ0AIAEgAi0AADoABSAJQQVrIQYgA0EGayEFIAJBAWohAgJAIAFBBmoiCkEHcUUNACAFRQ0AIAEgAi0AADoABiAJQQZrIQYgA0EHayEFIAJBAWohAgJAIAFBB2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAByAJQQdrIQYgA0EIayEDIAFBCGohASACQQFqIQIMBgsgCiEBIAUhAwwFCyAKIQEgBSEDDAQLIAohASAFIQMMAwsgCiEBIAUhAwwCCyAKIQEgBSEDDAELIAohASAFIQMLAkACQCAGQRdNBEAgA0UNASADQQFrIQUgA0EHcSIEBEADQCABIAItAAA6AAAgA0EBayEDIAFBAWohASACQQFqIQIgBEEBayIEDQALCyAFQQdJDQEDQCABIAItAAA6AAAgASACLQABOgABIAEgAi0AAjoAAiABIAItAAM6AAMgASACLQAEOgAEIAEgAi0ABToABSABIAItAAY6AAYgASACLQAHOgAHIAFBCGohASACQQhqIQIgA0EIayIDDQALDAELIAMNAQsgASECDAELIAEgBCADED8hAgsgCyEFDAELIAEgAy0AAjoAACABQQFqIQILIAUgFE8NACACIBNJDQELCyAAIAI2AgwgACAFIAhBA3ZrIgE2AgAgACATIAJrQYMCajYCECAAIBQgAWtBDmo2AgQgByAIQQdxIgA2AogBIAcgHUJ/IACthkJ/hYM+AoQBC+cFAQR/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsi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CyAAIAMtAAAEfiADKQMQBUIAC6dB//8DcSADKAIEEEcLIQUgAxAICyAEQRBqJAAgBQvgAQICfwF+QTAQCSICRQRAIAEEQCABQQA2AgQgAUEONgIAC0EADwsgAkIANwMIIAJBADYCACACQgA3AxAgAkIANwMYIAJCADcDICACQgA3ACUgAFAEQCACDwsCQCAAQv////8AVg0AIACnQQR0EAkiA0UNACACIAM2AgBBACEBQgEhBANAIAMgAUEEdGoiAUIANwIAIAFCADcABSAAIARSBEAgBKchASAEQgF8IQQMAQsLIAIgADcDCCACIAA3AxAgAg8LIAEEQCABQQA2AgQgAUEONgIAC0EAEBAgAhAGQQAL7gECA38BfiMAQRBrIgQkAAJAIARBDGpCBBAXIgNFBEBBfyECDAELAkAgAQRAIAJBgAZxIQUDQAJAIAUgASgCBHFFDQACQCADKQMIQgBUBEAgA0EAOgAADAELIANCADcDECADQQE6AAALIAMgAS8BCBANIAMgAS8BChANIAMtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAtBfyECDAQLQX8hAiAAIARBDGpCBBAbQQBIDQMgATMBCiIGUA0AIAAgASgCDCAGEBtBAEgNAwsgASgCACIBDQALC0EAIQILIAMQCAsgBEEQaiQAIAILPAEBfyAABEAgAUGABnEhAQNAIAEgACgCBHEEQCACIAAvAQpqQQRqIQILIAAoAgAiAA0ACwsgAkH//wNxC5wBAQN/IABFBEBBAA8LIAAhAwNAAn8CQAJAIAAvAQgiAUH04AFNBEAgAUEBRg0BIAFB9cYBRg0BDAILIAFBgbICRg0AIAFB9eABRw0BCyAAKAIAIQEgAEEANgIAIAAoAgwQBiAAEAYgASADIAAgA0YbIQMCQCACRQRAQQAhAgwBCyACIAE2AgALIAEMAQsgACICKAIACyIADQALIAMLsgQCBX8BfgJAAkACQCAAIAGtEBciAQRAIAEtAAANAUEAIQAMAgsgBARAIARBADYCBCAEQQ42AgALQQAPC0EAIQADQCABLQAABH4gASkDCCABKQMQfQVCAAtCBFQNASABEAwhByABIAEQDCIGrRATIghFBEBBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAwNAIAAoAgAhASAAKAIMEAYg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DCAAQRg2AggLDAMLIAAgBiAFLwFqQQAgBCABEQYAIQEgBhALIAFFDQILAkAgDUUEQCABIQMMAQsgACABIAUvAWgQgQEhAyABEAsgA0UNAQsCQCAJRSAMckUEQCADIQEMAQsgACADQQEQgAEhASADEAsgAUUNAQsgASEDDAELQQAhAwsgBUHwAGokACADC4UBAQF/IAFFBEAgAEEIaiIABEAgAEEANgIEIABBEjYCAAtBAA8LQTgQCSIDRQRAIABBCGoiAARAIABBADYCBCAAQQ42AgALQQAPCyADQQA2AhAgA0IANwIIIANCADcDKCADQQA2AgQgAyACNgIAIANCADcDGCADQQA2AjAgACABQTsgAxBCCw8AIAAgASACQQBBABCCAQusAgECfyABRQRAIABBCGoiAARAIABBADYCBCAAQRI2AgALQQAPCwJAIAJBfUsNACACQf//A3FBCEYNACAAQQhqIgAEQCAAQQA2AgQgAEEQNgIAC0EADwsCQEGwwAAQCSIFBEAgBUEANgIIIAVCADcCACAFQYiBAUGogQEgAxs2AqhAIAUgAjYCFCAFIAM6ABAgBUEAOgAPIAVBADsBDCAFIAMgAkF9SyIGcToADiAFQQggAiAGG0H//wNxIAQgBUGIgQFBqIEBIAMbKAIAEQAAIgI2AqxAIAINASAFEDEgBRAGCyAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0EADwsgACABQTogBRBCIgAEfyAABSAFKAKsQCAFKAKoQCgCBBEDACAFEDEgBRAGQQALC6ABAQF/IAIgACgCBCIDIAIgA0kbIgIEQCAAIAMgAms2AgQCQAJAAkACQCAAKAIcIgMoAhRBAWsOAgEAAgsgA0GgAWogASAAKAIAIAJB3IABKAIAEQgADAILIAAgACgCMCABIAAoAgAgAkHEgAEoAgARBAA2AjAMAQsgASAAKAIAIAIQBxoLIAAgACgCACACajYCACAAIAAoAgggAmo2AggLC7cCAQR/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkIgRFDQAgACgCHCIBRQ0AIAEoAgAgAEcNAAJAAkAgASgCICIDQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyADQZoFRg0AIANBKkcN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DCABajYCDCAGIAYoAgggAWo2AgggBSAFKAIUIAFqNgIUIAUgBSgCECABazYCECAGIAYoAhAgAWsiATYCECABDQAgBiAGKAIENgIIC0EAIQRBACEJIAMoAhBFDQAMCgsgAygCHCgCJCEGIAMgAygCGCIBQQFqNgIYIAEgBmotAAAhASADIARBAWo2AhAgAygCBCAEaiABOgAAIAEEQCADKAIQIQQMAQsLIAMoAhwoAixFDQAgAygCECIGIAlNDQAgBQJ/IAUoAjAhBEEAIAMoAgQgCWoiAUUNABogBCABIAYgCWtB1IABKAIAEQAACzYCMAsgA0HnADYCIAsCQCADKAIcKAIsBEAgAygCDCADKAIQIgFBAmpJBH8gBRAKIAMoAhANAkEABSABCyADKAIEaiAFKAIwOwAAIAMgAygCEEECajYCECADQaABakHkgAEoAgARAQAaCyADQfEANgIgIAUQCiADKAIQRQ0BDAcLDAYLIAUoAgQNAQsgAygCPA0AIApFDQEgAygCIEGaBUYNAQsCfyADKAKIASIBRQRAIAMgChCFAQwBCwJAAkACQCADKAKMAUECaw4CAAECCwJ/AkADQAJAAkAgAygCPA0AIAMQLyADKAI8DQAgCg0BQQAMBAsgAygCSCADKAJoai0AACEEIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qQQA6AAAgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtaiAEOgAAIAMgBEECdGoiASABLwHkAUEBajsB5AEgAyADKAI8QQFrNgI8IAMgAygCaEEBaiIBNgJoIAMoAvAtIAMoAvQtRw0BQQAhBCADIAMoAlgiBkEATgR/IAMoAkggBmoFQQALIAEgBmtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEA0BDAILCyADQQA2AoQuIApBBEYEQCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBARAPIAMgAygCaDYCWCADKAIAEApBA0ECIAMoAgAoAhAbDAILIAMoAvAtBEBBACEEIAMgAygCWCIBQQBOBH8gAygCSCABagVBAAsgAygCaCABa0EAEA8gAyADKAJoNgJYIAMoAgAQCiADKAIAKAIQRQ0BC0EBIQQLIAQL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bGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRl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UgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkA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SXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w==\";Do(ji)||(ji=x(ji));function oo(Je){try{if(Je==ji&&ae)return new Uint8Array(ae);var ot=Ue(Je);if(ot)return ot;if(T)return T(Je);throw\"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)\"}catch(St){ns(St)}}function bo(Je,ot){var St,lr,ee;try{ee=oo(Je),lr=new WebAssembly.Module(ee),St=new WebAssembly.Instance(lr,ot)}catch(Oe){var ye=Oe.toString();throw te(\"failed to compile wasm module: \"+ye),(ye.includes(\"imported Memory\")||ye.includes(\"memory import\"))&&te(\"Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time).\"),Oe}return[St,lr]}function RA(){var Je={a:au};function ot(ee,ye){var Oe=ee.exports;r.asm=Oe,Ce=r.asm.g,z(Ce.buffer),$=r.asm.W,dn(r.asm.h),So(\"wasm-instantiate\")}if(li(\"wasm-instantiate\"),r.instantiateWasm)try{var St=r.instantiateWasm(Je,ot);return St}catch(ee){return te(\"Module.instantiateWasm callback failed with error: \"+ee),!1}var lr=bo(ji,Je);return ot(lr[0]),r.asm}function hf(Je){return F.getFloat32(Je,!0)}function hh(Je){return F.getFloat64(Je,!0)}function gh(Je){return F.getInt16(Je,!0)}function ao(Je){return F.getInt32(Je,!0)}function Gn(Je,ot){F.setInt32(Je,ot,!0)}function Ns(Je){for(;Je.length>0;){var ot=Je.shift();if(typeof ot==\"function\"){ot(r);continue}var St=ot.func;typeof St==\"number\"?ot.arg===void 0?$.get(St)():$.get(St)(ot.arg):St(ot.arg===void 0?null:ot.arg)}}function lo(Je,ot){var St=new Date(ao((Je>>2)*4)*1e3);Gn((ot>>2)*4,St.getUTCSeconds()),Gn((ot+4>>2)*4,St.getUTCMinutes()),Gn((ot+8>>2)*4,St.getUTCHours()),Gn((ot+12>>2)*4,St.getUTCDate()),Gn((ot+16>>2)*4,St.getUTCMonth()),Gn((ot+20>>2)*4,St.getUTCFullYear()-1900),Gn((ot+24>>2)*4,St.getUTCDay()),Gn((ot+36>>2)*4,0),Gn((ot+32>>2)*4,0);var lr=Date.UTC(St.getUTCFullYear(),0,1,0,0,0,0),ee=(St.getTime()-lr)/(1e3*60*60*24)|0;return Gn((ot+28>>2)*4,ee),lo.GMTString||(lo.GMTString=tt(\"GMT\")),Gn((ot+40>>2)*4,lo.GMTString),ot}function iu(Je,ot){return lo(Je,ot)}function su(Je,ot,St){Re.copyWithin(Je,ot,ot+St)}function ou(Je){try{return Ce.grow(Je-be.byteLength+65535>>>16),z(Ce.buffer),1}catch{}}function TA(Je){var ot=Re.length;Je=Je>>>0;var St=2147483648;if(Je>St)return!1;for(var lr=1;lr<=4;lr*=2){var ee=ot*(1+.2/lr);ee=Math.min(ee,Je+100663296);var ye=Math.min(St,ke(Math.max(Je,ee),65536)),Oe=ou(ye);if(Oe)return!0}return!1}function FA(Je){ue(Je)}function ua(Je){var ot=Date.now()/1e3|0;return Je&&Gn((Je>>2)*4,ot),ot}function fa(){if(fa.called)return;fa.called=!0;var Je=new Date().getFullYear(),ot=new Date(Je,0,1),St=new Date(Je,6,1),lr=ot.getTimezoneOffset(),ee=St.getTimezoneOffset(),ye=Math.max(lr,ee);Gn((kl()>>2)*4,ye*60),Gn((Bs()>>2)*4,+(lr!=ee));function Oe(pn){var ci=pn.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return ci?ci[1]:\"GMT\"}var mt=Oe(ot),Et=Oe(St),bt=tt(mt),tr=tt(Et);ee<lr?(Gn((Mi()>>2)*4,bt),Gn((Mi()+4>>2)*4,tr)):(Gn((Mi()>>2)*4,tr),Gn((Mi()+4>>2)*4,bt))}function NA(Je){fa();var ot=Date.UTC(ao((Je+20>>2)*4)+1900,ao((Je+16>>2)*4),ao((Je+12>>2)*4),ao((Je+8>>2)*4),ao((Je+4>>2)*4),ao((Je>>2)*4),0),St=new Date(ot);Gn((Je+24>>2)*4,St.getUTCDay());var lr=Date.UTC(St.getUTCFullYear(),0,1,0,0,0,0),ee=(St.getTime()-lr)/(1e3*60*60*24)|0;return Gn((Je+28>>2)*4,ee),St.getTime()/1e3|0}var gr=typeof atob==\"function\"?atob:function(Je){var ot=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",St=\"\",lr,ee,ye,Oe,mt,Et,bt,tr=0;Je=Je.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");do Oe=ot.indexOf(Je.charAt(tr++)),mt=ot.indexOf(Je.charAt(tr++)),Et=ot.indexOf(Je.charAt(tr++)),bt=ot.indexOf(Je.charAt(tr++)),lr=Oe<<2|mt>>4,ee=(mt&15)<<4|Et>>2,ye=(Et&3)<<6|bt,St=St+String.fromCharCode(lr),Et!==64&&(St=St+String.fromCharCode(ee)),bt!==64&&(St=St+String.fromCharCode(ye));while(tr<Je.length);return St};function Po(Je){if(typeof C==\"boolean\"&&C){var ot;try{ot=Buffer.from(Je,\"base64\")}catch{ot=new Buffer(Je,\"base64\")}return new Uint8Array(ot.buffer,ot.byteOffset,ot.byteLength)}try{for(var St=gr(Je),lr=new Uint8Array(St.length),ee=0;ee<St.length;++ee)lr[ee]=St.charCodeAt(ee);return lr}catch{throw new Error(\"Converting base64 string to bytes failed.\")}}function Ue(Je){if(Do(Je))return Po(Je.slice(so.length))}var au={e:iu,c:su,d:TA,a:FA,b:ua,f:NA},Cr=RA(),gf=r.___wasm_call_ctors=Cr.h,OA=r._zip_ext_count_symlinks=Cr.i,LA=r._zip_file_get_external_attributes=Cr.j,lu=r._zipstruct_statS=Cr.k,cu=r._zipstruct_stat_size=Cr.l,ac=r._zipstruct_stat_mtime=Cr.m,we=r._zipstruct_stat_crc=Cr.n,Nt=r._zipstruct_errorS=Cr.o,lc=r._zipstruct_error_code_zip=Cr.p,Oi=r._zipstruct_stat_comp_size=Cr.q,co=r._zipstruct_stat_comp_method=Cr.r,Tt=r._zip_close=Cr.s,Qn=r._zip_delete=Cr.t,Aa=r._zip_dir_add=Cr.u,Gi=r._zip_discard=Cr.v,Li=r._zip_error_init_with_code=Cr.w,ja=r._zip_get_error=Cr.x,mn=r._zip_file_get_error=Cr.y,Zn=r._zip_error_strerror=Cr.z,uu=r._zip_fclose=Cr.A,dh=r._zip_file_add=Cr.B,Ga=r._free=Cr.C,qa=r._malloc=Cr.D,Wa=r._zip_source_error=Cr.E,$e=r._zip_source_seek=Cr.F,Va=r._zip_file_set_external_attributes=Cr.G,df=r._zip_file_set_mtime=Cr.H,cc=r._zip_fopen_index=Cr.I,vn=r._zip_fread=Cr.J,pa=r._zip_get_name=Cr.K,MA=r._zip_get_num_entries=Cr.L,UA=r._zip_source_read=Cr.M,ha=r._zip_name_locate=Cr.N,xl=r._zip_open_from_source=Cr.O,Mt=r._zip_set_file_compression=Cr.P,Rn=r._zip_source_buffer=Cr.Q,ga=r._zip_source_buffer_create=Cr.R,Ya=r._zip_source_close=Cr.S,is=r._zip_source_free=Cr.T,uc=r._zip_source_keep=Cr.U,fu=r._zip_source_open=Cr.V,fc=r._zip_source_tell=Cr.X,Ka=r._zip_stat_index=Cr.Y,Mi=r.__get_tzname=Cr.Z,Bs=r.__get_daylight=Cr._,kl=r.__get_timezone=Cr.$,mf=r.stackSave=Cr.aa,Ac=r.stackRestore=Cr.ba,Bi=r.stackAlloc=Cr.ca;r.cwrap=ce,r.getValue=Ae;var Tn;on=function Je(){Tn||pc(),Tn||(on=Je)};function pc(Je){if(Je=Je||f,Ir>0||(Ct(),Ir>0))return;function ot(){Tn||(Tn=!0,r.calledRun=!0,!Ee&&(qt(),s(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),ir()))}r.setStatus?(r.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){r.setStatus(\"\")},1),ot()},1)):ot()}if(r.run=pc,r.preInit)for(typeof r.preInit==\"function\"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return pc(),t}}();typeof CR==\"object\"&&typeof Aj==\"object\"?Aj.exports=fj:typeof define==\"function\"&&define.amd?define([],function(){return fj}):typeof CR==\"object\"&&(CR.createModule=fj)});var _p,RAe,TAe,FAe=Ze(()=>{_p=[\"number\",\"number\"],RAe=(X=>(X[X.ZIP_ER_OK=0]=\"ZIP_ER_OK\",X[X.ZIP_ER_MULTIDISK=1]=\"ZIP_ER_MULTIDISK\",X[X.ZIP_ER_RENAME=2]=\"ZIP_ER_RENAME\",X[X.ZIP_ER_CLOSE=3]=\"ZIP_ER_CLOSE\",X[X.ZIP_ER_SEEK=4]=\"ZIP_ER_SEEK\",X[X.ZIP_ER_READ=5]=\"ZIP_ER_READ\",X[X.ZIP_ER_WRITE=6]=\"ZIP_ER_WRITE\",X[X.ZIP_ER_CRC=7]=\"ZIP_ER_CRC\",X[X.ZIP_ER_ZIPCLOSED=8]=\"ZIP_ER_ZIPCLOSED\",X[X.ZIP_ER_NOENT=9]=\"ZIP_ER_NOENT\",X[X.ZIP_ER_EXISTS=10]=\"ZIP_ER_EXISTS\",X[X.ZIP_ER_OPEN=11]=\"ZIP_ER_OPEN\",X[X.ZIP_ER_TMPOPEN=12]=\"ZIP_ER_TMPOPEN\",X[X.ZIP_ER_ZLIB=13]=\"ZIP_ER_ZLIB\",X[X.ZIP_ER_MEMORY=14]=\"ZIP_ER_MEMORY\",X[X.ZIP_ER_CHANGED=15]=\"ZIP_ER_CHANGED\",X[X.ZIP_ER_COMPNOTSUPP=16]=\"ZIP_ER_COMPNOTSUPP\",X[X.ZIP_ER_EOF=17]=\"ZIP_ER_EOF\",X[X.ZIP_ER_INVAL=18]=\"ZIP_ER_INVAL\",X[X.ZIP_ER_NOZIP=19]=\"ZIP_ER_NOZIP\",X[X.ZIP_ER_INTERNAL=20]=\"ZIP_ER_INTERNAL\",X[X.ZIP_ER_INCONS=21]=\"ZIP_ER_INCONS\",X[X.ZIP_ER_REMOVE=22]=\"ZIP_ER_REMOVE\",X[X.ZIP_ER_DELETED=23]=\"ZIP_ER_DELETED\",X[X.ZIP_ER_ENCRNOTSUPP=24]=\"ZIP_ER_ENCRNOTSUPP\",X[X.ZIP_ER_RDONLY=25]=\"ZIP_ER_RDONLY\",X[X.ZIP_ER_NOPASSWD=26]=\"ZIP_ER_NOPASSWD\",X[X.ZIP_ER_WRONGPASSWD=27]=\"ZIP_ER_WRONGPASSWD\",X[X.ZIP_ER_OPNOTSUPP=28]=\"ZIP_ER_OPNOTSUPP\",X[X.ZIP_ER_INUSE=29]=\"ZIP_ER_INUSE\",X[X.ZIP_ER_TELL=30]=\"ZIP_ER_TELL\",X[X.ZIP_ER_COMPRESSED_DATA=31]=\"ZIP_ER_COMPRESSED_DATA\",X))(RAe||{}),TAe=e=>({get HEAPU8(){return e.HEAPU8},errors:RAe,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_EXCL:2,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:e._malloc(1),uint32S:e._malloc(4),malloc:e._malloc,free:e._free,getValue:e.getValue,openFromSource:e.cwrap(\"zip_open_from_source\",\"number\",[\"number\",\"number\",\"number\"]),close:e.cwrap(\"zip_close\",\"number\",[\"number\"]),discard:e.cwrap(\"zip_discard\",null,[\"number\"]),getError:e.cwrap(\"zip_get_error\",\"number\",[\"number\"]),getName:e.cwrap(\"zip_get_name\",\"string\",[\"number\",\"number\",\"number\"]),getNumEntries:e.cwrap(\"zip_get_num_entries\",\"number\",[\"number\",\"number\"]),delete:e.cwrap(\"zip_delete\",\"number\",[\"number\",\"number\"]),statIndex:e.cwrap(\"zip_stat_index\",\"number\",[\"number\",..._p,\"number\",\"number\"]),fopenIndex:e.cwrap(\"zip_fopen_index\",\"number\",[\"number\",..._p,\"number\"]),fread:e.cwrap(\"zip_fread\",\"number\",[\"number\",\"number\",\"number\",\"number\"]),fclose:e.cwrap(\"zip_fclose\",\"number\",[\"number\"]),dir:{add:e.cwrap(\"zip_dir_add\",\"number\",[\"number\",\"string\"])},file:{add:e.cwrap(\"zip_file_add\",\"number\",[\"number\",\"string\",\"number\",\"number\"]),getError:e.cwrap(\"zip_file_get_error\",\"number\",[\"number\"]),getExternalAttributes:e.cwrap(\"zip_file_get_external_attributes\",\"number\",[\"number\",..._p,\"number\",\"number\",\"number\"]),setExternalAttributes:e.cwrap(\"zip_file_set_external_attributes\",\"number\",[\"number\",..._p,\"number\",\"number\",\"number\"]),setMtime:e.cwrap(\"zip_file_set_mtime\",\"number\",[\"number\",..._p,\"number\",\"number\"]),setCompression:e.cwrap(\"zip_set_file_compression\",\"number\",[\"number\",..._p,\"number\",\"number\"])},ext:{countSymlinks:e.cwrap(\"zip_ext_count_symlinks\",\"number\",[\"number\"])},error:{initWithCode:e.cwrap(\"zip_error_init_with_code\",null,[\"number\",\"number\"]),strerror:e.cwrap(\"zip_error_strerror\",\"string\",[\"number\"])},name:{locate:e.cwrap(\"zip_name_locate\",\"number\",[\"number\",\"string\",\"number\"])},source:{fromUnattachedBuffer:e.cwrap(\"zip_source_buffer_create\",\"number\",[\"number\",..._p,\"number\",\"number\"]),fromBuffer:e.cwrap(\"zip_source_buffer\",\"number\",[\"number\",\"number\",..._p,\"number\"]),free:e.cwrap(\"zip_source_free\",null,[\"number\"]),keep:e.cwrap(\"zip_source_keep\",null,[\"number\"]),open:e.cwrap(\"zip_source_open\",\"number\",[\"number\"]),close:e.cwrap(\"zip_source_close\",\"number\",[\"number\"]),seek:e.cwrap(\"zip_source_seek\",\"number\",[\"number\",..._p,\"number\"]),tell:e.cwrap(\"zip_source_tell\",\"number\",[\"number\"]),read:e.cwrap(\"zip_source_read\",\"number\",[\"number\",\"number\",\"number\"]),error:e.cwrap(\"zip_source_error\",\"number\",[\"number\"])},struct:{statS:e.cwrap(\"zipstruct_statS\",\"number\",[]),statSize:e.cwrap(\"zipstruct_stat_size\",\"number\",[\"number\"]),statCompSize:e.cwrap(\"zipstruct_stat_comp_size\",\"number\",[\"number\"]),statCompMethod:e.cwrap(\"zipstruct_stat_comp_method\",\"number\",[\"number\"]),statMtime:e.cwrap(\"zipstruct_stat_mtime\",\"number\",[\"number\"]),statCrc:e.cwrap(\"zipstruct_stat_crc\",\"number\",[\"number\"]),errorS:e.cwrap(\"zipstruct_errorS\",\"number\",[]),errorCodeZip:e.cwrap(\"zipstruct_error_code_zip\",\"number\",[\"number\"])}})});function pj(e,t){let r=e.indexOf(t);if(r<=0)return null;let s=r;for(;r>=0&&(s=r+t.length,e[s]!==K.sep);){if(e[r-1]===K.sep)return null;r=e.indexOf(t,s)}return e.length>s&&e[s]!==K.sep?null:e.slice(0,s)}var tA,NAe=Ze(()=>{Dt();Dt();rA();tA=class e extends Xh{static async openPromise(t,r){let s=new e(r);try{return await t(s)}finally{s.saveAndClose()}}constructor(t={}){let r=t.fileExtensions,s=t.readOnlyArchives,a=typeof r>\"u\"?f=>pj(f,\".zip\"):f=>{for(let p of r){let h=pj(f,p);if(h)return h}return null},n=(f,p)=>new ps(p,{baseFs:f,readOnly:s,stats:f.statSync(p),customZipImplementation:t.customZipImplementation}),c=async(f,p)=>{let h={baseFs:f,readOnly:s,stats:await f.statPromise(p),customZipImplementation:t.customZipImplementation};return()=>new ps(p,h)};super({...t,factorySync:n,factoryPromise:c,getMountPoint:a})}}});var hj,DI,gj=Ze(()=>{uj();hj=class extends Error{constructor(t,r){super(t),this.name=\"Libzip Error\",this.code=r}},DI=class{constructor(t){this.filesShouldBeCached=!0;let r=\"buffer\"in t?t.buffer:t.baseFs.readFileSync(t.path);this.libzip=tv();let s=this.libzip.malloc(4);try{let c=0;t.readOnly&&(c|=this.libzip.ZIP_RDONLY);let f=this.allocateUnattachedSource(r);try{this.zip=this.libzip.openFromSource(f,c,s),this.lzSource=f}catch(p){throw this.libzip.source.free(f),p}if(this.zip===0){let p=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(p,this.libzip.getValue(s,\"i32\")),this.makeLibzipError(p)}}finally{this.libzip.free(s)}let a=this.libzip.getNumEntries(this.zip,0),n=new Array(a);for(let c=0;c<a;++c)n[c]=this.libzip.getName(this.zip,c,0);if(this.listings=n,this.symlinkCount=this.libzip.ext.countSymlinks(this.zip),this.symlinkCount===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}getSymlinkCount(){return this.symlinkCount}getListings(){return this.listings}stat(t){let r=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,t,0,0,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.libzip.struct.statSize(r)>>>0,n=this.libzip.struct.statMtime(r)>>>0,c=this.libzip.struct.statCrc(r)>>>0;return{size:a,mtime:n,crc:c}}makeLibzipError(t){let r=this.libzip.struct.errorCodeZip(t),s=this.libzip.error.strerror(t),a=new hj(s,this.libzip.errors[r]);if(r===this.libzip.errors.ZIP_ER_CHANGED)throw new Error(`Assertion failed: Unexpected libzip error: ${a.message}`);return a}setFileSource(t,r,s){let a=this.allocateSource(s);try{let n=this.libzip.file.add(this.zip,t,a,this.libzip.ZIP_FL_OVERWRITE);if(n===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(r!==null&&this.libzip.file.setCompression(this.zip,n,0,r[0],r[1])===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return n}catch(n){throw this.libzip.source.free(a),n}}setMtime(t,r){if(this.libzip.file.setMtime(this.zip,t,0,r,0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}getExternalAttributes(t){if(this.libzip.file.getExternalAttributes(this.zip,t,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let s=this.libzip.getValue(this.libzip.uint08S,\"i8\")>>>0,a=this.libzip.getValue(this.libzip.uint32S,\"i32\")>>>0;return[s,a]}setExternalAttributes(t,r,s){if(this.libzip.file.setExternalAttributes(this.zip,t,0,0,r,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}locate(t){return this.libzip.name.locate(this.zip,t,0)}getFileSource(t){let r=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,t,0,0,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.libzip.struct.statCompSize(r),n=this.libzip.struct.statCompMethod(r),c=this.libzip.malloc(a);try{let f=this.libzip.fopenIndex(this.zip,t,0,this.libzip.ZIP_FL_COMPRESSED);if(f===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let p=this.libzip.fread(f,c,a,0);if(p===-1)throw this.makeLibzipError(this.libzip.file.getError(f));if(p<a)throw new Error(\"Incomplete read\");if(p>a)throw new Error(\"Overread\");let h=this.libzip.HEAPU8.subarray(c,c+a);return{data:Buffer.from(h),compressionMethod:n}}finally{this.libzip.fclose(f)}}finally{this.libzip.free(c)}}deleteEntry(t){if(this.libzip.delete(this.zip,t)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}addDirectory(t){let r=this.libzip.dir.add(this.zip,t);if(r===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return r}getBufferAndClose(){try{if(this.libzip.source.keep(this.lzSource),this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.libzip.source.open(this.lzSource)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_END)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let t=this.libzip.source.tell(this.lzSource);if(t===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_SET)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let r=this.libzip.malloc(t);if(!r)throw new Error(\"Couldn't allocate enough memory\");try{let s=this.libzip.source.read(this.lzSource,r,t);if(s===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(s<t)throw new Error(\"Incomplete read\");if(s>t)throw new Error(\"Overread\");let a=Buffer.from(this.libzip.HEAPU8.subarray(r,r+t));return process.env.YARN_IS_TEST_ENV&&process.env.YARN_ZIP_DATA_EPILOGUE&&(a=Buffer.concat([a,Buffer.from(process.env.YARN_ZIP_DATA_EPILOGUE)])),a}finally{this.libzip.free(r)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource)}}allocateBuffer(t){Buffer.isBuffer(t)||(t=Buffer.from(t));let r=this.libzip.malloc(t.byteLength);if(!r)throw new Error(\"Couldn't allocate enough memory\");return new Uint8Array(this.libzip.HEAPU8.buffer,r,t.byteLength).set(t),{buffer:r,byteLength:t.byteLength}}allocateUnattachedSource(t){let r=this.libzip.struct.errorS(),{buffer:s,byteLength:a}=this.allocateBuffer(t),n=this.libzip.source.fromUnattachedBuffer(s,a,0,1,r);if(n===0)throw this.libzip.free(r),this.makeLibzipError(r);return n}allocateSource(t){let{buffer:r,byteLength:s}=this.allocateBuffer(t),a=this.libzip.source.fromBuffer(this.zip,r,s,0,1);if(a===0)throw this.libzip.free(r),this.makeLibzipError(this.libzip.getError(this.zip));return a}discard(){this.libzip.discard(this.zip)}}});function Rtt(e){if(typeof e==\"string\"&&String(+e)===e)return+e;if(typeof e==\"number\"&&Number.isFinite(e))return e<0?Date.now()/1e3:e;if(OAe.types.isDate(e))return e.getTime()/1e3;throw new Error(\"Invalid time\")}function wR(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var Ra,dj,OAe,mj,om,yj,Ej,LAe,ps,BR=Ze(()=>{Dt();Dt();Dt();Dt();Dt();Dt();Ra=Ie(\"fs\"),dj=Ie(\"stream\"),OAe=Ie(\"util\"),mj=et(Ie(\"zlib\"));gj();om=3,yj=0,Ej=8,LAe=\"mixed\";ps=class extends Hf{constructor(r,s={}){super();this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;s.readOnly&&(this.readOnly=!0);let a=s;this.level=typeof a.level<\"u\"?a.level:LAe;let n=s.customZipImplementation??DI;if(typeof r==\"string\"){let{baseFs:f=new Yn}=a;this.baseFs=f,this.path=r}else this.path=null,this.baseFs=null;if(s.stats)this.stats=s.stats;else if(typeof r==\"string\")try{this.stats=this.baseFs.statSync(r)}catch(f){if(f.code===\"ENOENT\"&&a.create)this.stats=sl.makeDefaultStats();else throw f}else this.stats=sl.makeDefaultStats();typeof r==\"string\"?s.create?this.zipImpl=new n({buffer:wR(),readOnly:this.readOnly}):this.zipImpl=new n({path:r,baseFs:this.baseFs,readOnly:this.readOnly,size:this.stats.size}):this.zipImpl=new n({buffer:r??wR(),readOnly:this.readOnly}),this.listings.set(vt.root,new Set);let c=this.zipImpl.getListings();for(let f=0;f<c.length;f++){let p=c[f];if(K.isAbsolute(p))continue;let h=K.resolve(vt.root,p);this.registerEntry(h,f),p.endsWith(\"/\")&&this.registerListing(h)}this.symlinkCount=this.zipImpl.getSymlinkCount(),this.ready=!0}getExtractHint(r){for(let s of this.entries.keys()){let a=this.pathUtils.extname(s);if(r.relevantExtensions.has(a))return!0}return!1}getAllFiles(){return Array.from(this.entries.keys())}getRealPath(){if(!this.path)throw new Error(\"ZipFS don't have real paths when loaded from a buffer\");return this.path}prepareClose(){if(!this.ready)throw or.EBUSY(\"archive closed, close\");dd(this)}getBufferAndClose(){if(this.prepareClose(),this.entries.size===0)return this.discardAndClose(),wR();try{return this.zipImpl.getBufferAndClose()}finally{this.ready=!1}}discardAndClose(){this.prepareClose(),this.zipImpl.discard(),this.ready=!1}saveAndClose(){if(!this.path||!this.baseFs)throw new Error(\"ZipFS cannot be saved and must be discarded when loaded from a buffer\");if(this.readOnly){this.discardAndClose();return}let r=this.baseFs.existsSync(this.path)||this.stats.mode===sl.DEFAULT_MODE?void 0:this.stats.mode;this.baseFs.writeFileSync(this.path,this.getBufferAndClose(),{mode:r}),this.ready=!1}resolve(r){return K.resolve(vt.root,r)}async openPromise(r,s,a){return this.openSync(r,s,a)}openSync(r,s,a){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:r}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(r,s){return this.opendirSync(r,s)}opendirSync(r,s={}){let a=this.resolveFilename(`opendir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`opendir '${r}'`);let n=this.listings.get(a);if(!n)throw or.ENOTDIR(`opendir '${r}'`);let c=[...n],f=this.openSync(a,\"r\");return ex(this,a,c,{onClose:()=>{this.closeSync(f)}})}async readPromise(r,s,a,n,c){return this.readSync(r,s,a,n,c)}readSync(r,s,a=0,n=s.byteLength,c=-1){let f=this.fds.get(r);if(typeof f>\"u\")throw or.EBADF(\"read\");let p=c===-1||c===null?f.cursor:c,h=this.readFileSync(f.p);h.copy(s,a,p,p+n);let E=Math.max(0,Math.min(h.length-p,n));return(c===-1||c===null)&&(f.cursor+=E),E}async writePromise(r,s,a,n,c){return typeof s==\"string\"?this.writeSync(r,s,c):this.writeSync(r,s,a,n,c)}writeSync(r,s,a,n,c){throw typeof this.fds.get(r)>\"u\"?or.EBADF(\"read\"):new Error(\"Unimplemented\")}async closePromise(r){return this.closeSync(r)}closeSync(r){if(typeof this.fds.get(r)>\"u\")throw or.EBADF(\"read\");this.fds.delete(r)}createReadStream(r,{encoding:s}={}){if(r===null)throw new Error(\"Unimplemented\");let a=this.openSync(r,\"r\"),n=Object.assign(new dj.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(f,p)=>{clearImmediate(c),this.closeSync(a),p(f)}}),{close(){n.destroy()},bytesRead:0,path:r,pending:!1}),c=setImmediate(async()=>{try{let f=await this.readFilePromise(r,s);n.bytesRead=f.length,n.end(f)}catch(f){n.destroy(f)}});return n}createWriteStream(r,{encoding:s}={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);if(r===null)throw new Error(\"Unimplemented\");let a=[],n=this.openSync(r,\"w\"),c=Object.assign(new dj.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(f,p)=>{try{f?p(f):(this.writeFileSync(r,Buffer.concat(a),s),p(null))}catch(h){p(h)}finally{this.closeSync(n)}}}),{close(){c.destroy()},bytesWritten:0,path:r,pending:!1});return c.on(\"data\",f=>{let p=Buffer.from(f);c.bytesWritten+=p.length,a.push(p)}),c}async realpathPromise(r){return this.realpathSync(r)}realpathSync(r){let s=this.resolveFilename(`lstat '${r}'`,r);if(!this.entries.has(s)&&!this.listings.has(s))throw or.ENOENT(`lstat '${r}'`);return s}async existsPromise(r){return this.existsSync(r)}existsSync(r){if(!this.ready)throw or.EBUSY(`archive closed, existsSync '${r}'`);if(this.symlinkCount===0){let a=K.resolve(vt.root,r);return this.entries.has(a)||this.listings.has(a)}let s;try{s=this.resolveFilename(`stat '${r}'`,r,void 0,!1)}catch{return!1}return s===void 0?!1:this.entries.has(s)||this.listings.has(s)}async accessPromise(r,s){return this.accessSync(r,s)}accessSync(r,s=Ra.constants.F_OK){let a=this.resolveFilename(`access '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`access '${r}'`);if(this.readOnly&&s&Ra.constants.W_OK)throw or.EROFS(`access '${r}'`)}async statPromise(r,s={bigint:!1}){return s.bigint?this.statSync(r,{bigint:!0}):this.statSync(r)}statSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`stat '${r}'`,r,void 0,s.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(s.throwIfNoEntry===!1)return;throw or.ENOENT(`stat '${r}'`)}if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw or.ENOTDIR(`stat '${r}'`);return this.statImpl(`stat '${r}'`,a,s)}}async fstatPromise(r,s){return this.fstatSync(r,s)}fstatSync(r,s){let a=this.fds.get(r);if(typeof a>\"u\")throw or.EBADF(\"fstatSync\");let{p:n}=a,c=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(c)&&!this.listings.has(c))throw or.ENOENT(`stat '${n}'`);if(n[n.length-1]===\"/\"&&!this.listings.has(c))throw or.ENOTDIR(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,c,s)}async lstatPromise(r,s={bigint:!1}){return s.bigint?this.lstatSync(r,{bigint:!0}):this.lstatSync(r)}lstatSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`lstat '${r}'`,r,!1,s.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(s.throwIfNoEntry===!1)return;throw or.ENOENT(`lstat '${r}'`)}if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw or.ENOTDIR(`lstat '${r}'`);return this.statImpl(`lstat '${r}'`,a,s)}}statImpl(r,s,a={}){let n=this.entries.get(s);if(typeof n<\"u\"){let c=this.zipImpl.stat(n),f=c.crc,p=c.size,h=c.mtime*1e3,E=this.stats.uid,C=this.stats.gid,S=512,x=Math.ceil(c.size/S),I=h,T=h,O=h,U=new Date(I),Y=new Date(T),te=new Date(O),ie=new Date(h),ue=this.listings.has(s)?Ra.constants.S_IFDIR:this.isSymbolicLink(n)?Ra.constants.S_IFLNK:Ra.constants.S_IFREG,ae=ue===Ra.constants.S_IFDIR?493:420,de=ue|this.getUnixMode(n,ae)&511,Ae=Object.assign(new sl.StatEntry,{uid:E,gid:C,size:p,blksize:S,blocks:x,atime:U,birthtime:Y,ctime:te,mtime:ie,atimeMs:I,birthtimeMs:T,ctimeMs:O,mtimeMs:h,mode:de,crc:f});return a.bigint===!0?sl.convertToBigIntStats(Ae):Ae}if(this.listings.has(s)){let c=this.stats.uid,f=this.stats.gid,p=0,h=512,E=0,C=this.stats.mtimeMs,S=this.stats.mtimeMs,x=this.stats.mtimeMs,I=this.stats.mtimeMs,T=new Date(C),O=new Date(S),U=new Date(x),Y=new Date(I),te=Ra.constants.S_IFDIR|493,ue=Object.assign(new sl.StatEntry,{uid:c,gid:f,size:p,blksize:h,blocks:E,atime:T,birthtime:O,ctime:U,mtime:Y,atimeMs:C,birthtimeMs:S,ctimeMs:x,mtimeMs:I,mode:te,crc:0});return a.bigint===!0?sl.convertToBigIntStats(ue):ue}throw new Error(\"Unreachable\")}getUnixMode(r,s){let[a,n]=this.zipImpl.getExternalAttributes(r);return a!==om?s:n>>>16}registerListing(r){let s=this.listings.get(r);if(s)return s;this.registerListing(K.dirname(r)).add(K.basename(r));let n=new Set;return this.listings.set(r,n),n}registerEntry(r,s){this.registerListing(K.dirname(r)).add(K.basename(r)),this.entries.set(r,s)}unregisterListing(r){this.listings.delete(r),this.listings.get(K.dirname(r))?.delete(K.basename(r))}unregisterEntry(r){this.unregisterListing(r);let s=this.entries.get(r);this.entries.delete(r),!(typeof s>\"u\")&&(this.fileSources.delete(s),this.isSymbolicLink(s)&&this.symlinkCount--)}deleteEntry(r,s){this.unregisterEntry(r),this.zipImpl.deleteEntry(s)}resolveFilename(r,s,a=!0,n=!0){if(!this.ready)throw or.EBUSY(`archive closed, ${r}`);let c=K.resolve(vt.root,s);if(c===\"/\")return vt.root;let f=this.entries.get(c);if(a&&f!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(f)){let p=this.getFileSource(f).toString();return this.resolveFilename(r,K.resolve(K.dirname(c),p),!0,n)}else return c;for(;;){let p=this.resolveFilename(r,K.dirname(c),!0,n);if(p===void 0)return p;let h=this.listings.has(p),E=this.entries.has(p);if(!h&&!E){if(n===!1)return;throw or.ENOENT(r)}if(!h)throw or.ENOTDIR(r);if(c=K.resolve(p,K.basename(c)),!a||this.symlinkCount===0)break;let C=this.zipImpl.locate(c.slice(1));if(C===-1)break;if(this.isSymbolicLink(C)){let S=this.getFileSource(C).toString();c=K.resolve(K.dirname(c),S)}else break}return c}setFileSource(r,s){let a=Buffer.isBuffer(s)?s:Buffer.from(s),n=K.relative(vt.root,r),c=null;this.level!==\"mixed\"&&(c=[this.level===0?yj:Ej,this.level]);let f=this.zipImpl.setFileSource(n,c,a);return this.fileSources.set(f,a),f}isSymbolicLink(r){if(this.symlinkCount===0)return!1;let[s,a]=this.zipImpl.getExternalAttributes(r);return s!==om?!1:(a>>>16&Ra.constants.S_IFMT)===Ra.constants.S_IFLNK}getFileSource(r,s={asyncDecompress:!1}){let a=this.fileSources.get(r);if(typeof a<\"u\")return a;let{data:n,compressionMethod:c}=this.zipImpl.getFileSource(r);if(c===yj)return this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,n),n;if(c===Ej){if(s.asyncDecompress)return new Promise((f,p)=>{mj.default.inflateRaw(n,(h,E)=>{h?p(h):(this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,E),f(E))})});{let f=mj.default.inflateRawSync(n);return this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,f),f}}else throw new Error(`Unsupported compression method: ${c}`)}async fchmodPromise(r,s){return this.chmodPromise(this.fdToPath(r,\"fchmod\"),s)}fchmodSync(r,s){return this.chmodSync(this.fdToPath(r,\"fchmodSync\"),s)}async chmodPromise(r,s){return this.chmodSync(r,s)}chmodSync(r,s){if(this.readOnly)throw or.EROFS(`chmod '${r}'`);s&=493;let a=this.resolveFilename(`chmod '${r}'`,r,!1),n=this.entries.get(a);if(typeof n>\"u\")throw new Error(`Assertion failed: The entry should have been registered (${a})`);let f=this.getUnixMode(n,Ra.constants.S_IFREG|0)&-512|s;this.zipImpl.setExternalAttributes(n,om,f<<16)}async fchownPromise(r,s,a){return this.chownPromise(this.fdToPath(r,\"fchown\"),s,a)}fchownSync(r,s,a){return this.chownSync(this.fdToPath(r,\"fchownSync\"),s,a)}async chownPromise(r,s,a){return this.chownSync(r,s,a)}chownSync(r,s,a){throw new Error(\"Unimplemented\")}async renamePromise(r,s){return this.renameSync(r,s)}renameSync(r,s){throw new Error(\"Unimplemented\")}async copyFilePromise(r,s,a){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,s,a),p=await this.getFileSource(n,{asyncDecompress:!0}),h=this.setFileSource(f,p);h!==c&&this.registerEntry(f,h)}copyFileSync(r,s,a=0){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,s,a),p=this.getFileSource(n),h=this.setFileSource(f,p);h!==c&&this.registerEntry(f,h)}prepareCopyFile(r,s,a=0){if(this.readOnly)throw or.EROFS(`copyfile '${r} -> '${s}'`);if(a&Ra.constants.COPYFILE_FICLONE_FORCE)throw or.ENOSYS(\"unsupported clone operation\",`copyfile '${r}' -> ${s}'`);let n=this.resolveFilename(`copyfile '${r} -> ${s}'`,r),c=this.entries.get(n);if(typeof c>\"u\")throw or.EINVAL(`copyfile '${r}' -> '${s}'`);let f=this.resolveFilename(`copyfile '${r}' -> ${s}'`,s),p=this.entries.get(f);if(a&(Ra.constants.COPYFILE_EXCL|Ra.constants.COPYFILE_FICLONE_FORCE)&&typeof p<\"u\")throw or.EEXIST(`copyfile '${r}' -> '${s}'`);return{indexSource:c,resolvedDestP:f,indexDest:p}}async appendFilePromise(r,s,a){if(this.readOnly)throw or.EROFS(`open '${r}'`);return typeof a>\"u\"?a={flag:\"a\"}:typeof a==\"string\"?a={flag:\"a\",encoding:a}:typeof a.flag>\"u\"&&(a={flag:\"a\",...a}),this.writeFilePromise(r,s,a)}appendFileSync(r,s,a={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);return typeof a>\"u\"?a={flag:\"a\"}:typeof a==\"string\"?a={flag:\"a\",encoding:a}:typeof a.flag>\"u\"&&(a={flag:\"a\",...a}),this.writeFileSync(r,s,a)}fdToPath(r,s){let a=this.fds.get(r)?.p;if(typeof a>\"u\")throw or.EBADF(s);return a}async writeFilePromise(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.prepareWriteFile(r,a);f!==void 0&&typeof a==\"object\"&&a.flag&&a.flag.includes(\"a\")&&(s=Buffer.concat([await this.getFileSource(f,{asyncDecompress:!0}),Buffer.from(s)])),n!==null&&(s=s.toString(n));let h=this.setFileSource(p,s);h!==f&&this.registerEntry(p,h),c!==null&&await this.chmodPromise(p,c)}writeFileSync(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.prepareWriteFile(r,a);f!==void 0&&typeof a==\"object\"&&a.flag&&a.flag.includes(\"a\")&&(s=Buffer.concat([this.getFileSource(f),Buffer.from(s)])),n!==null&&(s=s.toString(n));let h=this.setFileSource(p,s);h!==f&&this.registerEntry(p,h),c!==null&&this.chmodSync(p,c)}prepareWriteFile(r,s){if(typeof r==\"number\"&&(r=this.fdToPath(r,\"read\")),this.readOnly)throw or.EROFS(`open '${r}'`);let a=this.resolveFilename(`open '${r}'`,r);if(this.listings.has(a))throw or.EISDIR(`open '${r}'`);let n=null,c=null;typeof s==\"string\"?n=s:typeof s==\"object\"&&({encoding:n=null,mode:c=null}=s);let f=this.entries.get(a);return{encoding:n,mode:c,resolvedP:a,index:f}}async unlinkPromise(r){return this.unlinkSync(r)}unlinkSync(r){if(this.readOnly)throw or.EROFS(`unlink '${r}'`);let s=this.resolveFilename(`unlink '${r}'`,r);if(this.listings.has(s))throw or.EISDIR(`unlink '${r}'`);let a=this.entries.get(s);if(typeof a>\"u\")throw or.EINVAL(`unlink '${r}'`);this.deleteEntry(s,a)}async utimesPromise(r,s,a){return this.utimesSync(r,s,a)}utimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`utimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r);this.utimesImpl(n,a)}async lutimesPromise(r,s,a){return this.lutimesSync(r,s,a)}lutimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`lutimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r,!1);this.utimesImpl(n,a)}utimesImpl(r,s){this.listings.has(r)&&(this.entries.has(r)||this.hydrateDirectory(r));let a=this.entries.get(r);if(a===void 0)throw new Error(\"Unreachable\");this.zipImpl.setMtime(a,Rtt(s))}async mkdirPromise(r,s){return this.mkdirSync(r,s)}mkdirSync(r,{mode:s=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(r,{chmod:s});if(this.readOnly)throw or.EROFS(`mkdir '${r}'`);let n=this.resolveFilename(`mkdir '${r}'`,r);if(this.entries.has(n)||this.listings.has(n))throw or.EEXIST(`mkdir '${r}'`);this.hydrateDirectory(n),this.chmodSync(n,s)}async rmdirPromise(r,s){return this.rmdirSync(r,s)}rmdirSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rmdir '${r}'`);if(s){this.removeSync(r);return}let a=this.resolveFilename(`rmdir '${r}'`,r),n=this.listings.get(a);if(!n)throw or.ENOTDIR(`rmdir '${r}'`);if(n.size>0)throw or.ENOTEMPTY(`rmdir '${r}'`);let c=this.entries.get(a);if(typeof c>\"u\")throw or.EINVAL(`rmdir '${r}'`);this.deleteEntry(r,c)}async rmPromise(r,s){return this.rmSync(r,s)}rmSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rm '${r}'`);if(s){this.removeSync(r);return}let a=this.resolveFilename(`rm '${r}'`,r),n=this.listings.get(a);if(!n)throw or.ENOTDIR(`rm '${r}'`);if(n.size>0)throw or.ENOTEMPTY(`rm '${r}'`);let c=this.entries.get(a);if(typeof c>\"u\")throw or.EINVAL(`rm '${r}'`);this.deleteEntry(r,c)}hydrateDirectory(r){let s=this.zipImpl.addDirectory(K.relative(vt.root,r));return this.registerListing(r),this.registerEntry(r,s),s}async linkPromise(r,s){return this.linkSync(r,s)}linkSync(r,s){throw or.EOPNOTSUPP(`link '${r}' -> '${s}'`)}async symlinkPromise(r,s){return this.symlinkSync(r,s)}symlinkSync(r,s){if(this.readOnly)throw or.EROFS(`symlink '${r}' -> '${s}'`);let a=this.resolveFilename(`symlink '${r}' -> '${s}'`,s);if(this.listings.has(a))throw or.EISDIR(`symlink '${r}' -> '${s}'`);if(this.entries.has(a))throw or.EEXIST(`symlink '${r}' -> '${s}'`);let n=this.setFileSource(a,r);this.registerEntry(a,n),this.zipImpl.setExternalAttributes(n,om,(Ra.constants.S_IFLNK|511)<<16),this.symlinkCount+=1}async readFilePromise(r,s){typeof s==\"object\"&&(s=s?s.encoding:void 0);let a=await this.readFileBuffer(r,{asyncDecompress:!0});return s?a.toString(s):a}readFileSync(r,s){typeof s==\"object\"&&(s=s?s.encoding:void 0);let a=this.readFileBuffer(r);return s?a.toString(s):a}readFileBuffer(r,s={asyncDecompress:!1}){typeof r==\"number\"&&(r=this.fdToPath(r,\"read\"));let a=this.resolveFilename(`open '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`open '${r}'`);if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw or.ENOTDIR(`open '${r}'`);if(this.listings.has(a))throw or.EISDIR(\"read\");let n=this.entries.get(a);if(n===void 0)throw new Error(\"Unreachable\");return this.getFileSource(n,s)}async readdirPromise(r,s){return this.readdirSync(r,s)}readdirSync(r,s){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`scandir '${r}'`);let n=this.listings.get(a);if(!n)throw or.ENOTDIR(`scandir '${r}'`);if(s?.recursive)if(s?.withFileTypes){let c=Array.from(n,f=>Object.assign(this.statImpl(\"lstat\",K.join(r,f)),{name:f,path:vt.dot,parentPath:vt.dot}));for(let f of c){if(!f.isDirectory())continue;let p=K.join(f.path,f.name),h=this.listings.get(K.join(a,p));for(let E of h)c.push(Object.assign(this.statImpl(\"lstat\",K.join(r,p,E)),{name:E,path:p,parentPath:p}))}return c}else{let c=[...n];for(let f of c){let p=this.listings.get(K.join(a,f));if(!(typeof p>\"u\"))for(let h of p)c.push(K.join(f,h))}return c}else return s?.withFileTypes?Array.from(n,c=>Object.assign(this.statImpl(\"lstat\",K.join(r,c)),{name:c,path:void 0,parentPath:void 0})):[...n]}async readlinkPromise(r){let s=this.prepareReadlink(r);return(await this.getFileSource(s,{asyncDecompress:!0})).toString()}readlinkSync(r){let s=this.prepareReadlink(r);return this.getFileSource(s).toString()}prepareReadlink(r){let s=this.resolveFilename(`readlink '${r}'`,r,!1);if(!this.entries.has(s)&&!this.listings.has(s))throw or.ENOENT(`readlink '${r}'`);if(r[r.length-1]===\"/\"&&!this.listings.has(s))throw or.ENOTDIR(`open '${r}'`);if(this.listings.has(s))throw or.EINVAL(`readlink '${r}'`);let a=this.entries.get(s);if(a===void 0)throw new Error(\"Unreachable\");if(!this.isSymbolicLink(a))throw or.EINVAL(`readlink '${r}'`);return a}async truncatePromise(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>\"u\")throw or.EINVAL(`open '${r}'`);let c=await this.getFileSource(n,{asyncDecompress:!0}),f=Buffer.alloc(s,0);return c.copy(f),await this.writeFilePromise(r,f)}truncateSync(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>\"u\")throw or.EINVAL(`open '${r}'`);let c=this.getFileSource(n),f=Buffer.alloc(s,0);return c.copy(f),this.writeFileSync(r,f)}async ftruncatePromise(r,s){return this.truncatePromise(this.fdToPath(r,\"ftruncate\"),s)}ftruncateSync(r,s){return this.truncateSync(this.fdToPath(r,\"ftruncateSync\"),s)}watch(r,s,a){let n;switch(typeof s){case\"function\":case\"string\":case\"undefined\":n=!0;break;default:({persistent:n=!0}=s);break}if(!n)return{on:()=>{},close:()=>{}};let c=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(c)}}}watchFile(r,s,a){let n=K.resolve(vt.root,r);return lE(this,n,s,a)}unwatchFile(r,s){let a=K.resolve(vt.root,r);return gd(this,a,s)}}});function UAe(e,t,r=Buffer.alloc(0),s){let a=new ps(r),n=C=>C===t||C.startsWith(`${t}/`)?C.slice(0,t.length):null,c=async(C,S)=>()=>a,f=(C,S)=>a,p={...e},h=new Yn(p),E=new Xh({baseFs:h,getMountPoint:n,factoryPromise:c,factorySync:f,magicByte:21,maxAge:1/0,typeCheck:s?.typeCheck});return QB(MAe.default,new $h(E)),a}var MAe,_Ae=Ze(()=>{Dt();MAe=et(Ie(\"fs\"));BR()});var HAe=Ze(()=>{NAe();BR();_Ae()});var Ij,rv,vR,jAe=Ze(()=>{Dt();BR();Ij={CENTRAL_DIRECTORY:33639248,END_OF_CENTRAL_DIRECTORY:101010256},rv=22,vR=class e{constructor(t){this.filesShouldBeCached=!1;if(\"buffer\"in t)throw new Error(\"Buffer based zip archives are not supported\");if(!t.readOnly)throw new Error(\"Writable zip archives are not supported\");this.baseFs=t.baseFs,this.fd=this.baseFs.openSync(t.path,\"r\");try{this.entries=e.readZipSync(this.fd,this.baseFs,t.size)}catch(r){throw this.baseFs.closeSync(this.fd),this.fd=\"closed\",r}}static readZipSync(t,r,s){if(s<rv)throw new Error(\"Invalid ZIP file: EOCD not found\");let a=-1,n=Buffer.alloc(rv);if(r.readSync(t,n,0,rv,s-rv),n.readUInt32LE(0)===Ij.END_OF_CENTRAL_DIRECTORY)a=0;else{let T=Math.min(65557,s);n=Buffer.alloc(T),r.readSync(t,n,0,T,Math.max(0,s-T));for(let O=n.length-4;O>=0;O--)if(n.readUInt32LE(O)===Ij.END_OF_CENTRAL_DIRECTORY){a=O;break}if(a===-1)throw new Error(\"Not a zip archive\")}let c=n.readUInt16LE(a+10),f=n.readUInt32LE(a+12),p=n.readUInt32LE(a+16),h=n.readUInt16LE(a+20);if(a+h+rv>n.length)throw new Error(\"Zip archive inconsistent\");if(c==65535||f==4294967295||p==4294967295)throw new Error(\"Zip 64 is not supported\");if(f>s)throw new Error(\"Zip archive inconsistent\");if(c>f/46)throw new Error(\"Zip archive inconsistent\");let E=Buffer.alloc(f);if(r.readSync(t,E,0,E.length,p)!==E.length)throw new Error(\"Zip archive inconsistent\");let C=[],S=0,x=0,I=0;for(;x<c;){if(S+46>E.length)throw new Error(\"Zip archive inconsistent\");if(E.readUInt32LE(S)!==Ij.CENTRAL_DIRECTORY)throw new Error(\"Zip archive inconsistent\");let O=E.readUInt16LE(S+4)>>>8;if(E.readUInt16LE(S+8)&1)throw new Error(\"Encrypted zip files are not supported\");let Y=E.readUInt16LE(S+10),te=E.readUInt32LE(S+16),ie=E.readUInt16LE(S+28),ue=E.readUInt16LE(S+30),ae=E.readUInt16LE(S+32),de=E.readUInt32LE(S+42),Ae=E.toString(\"utf8\",S+46,S+46+ie).replaceAll(\"\\0\",\" \");if(Ae.includes(\"\\0\"))throw new Error(\"Invalid ZIP file\");let Ce=E.readUInt32LE(S+20),Ee=E.readUInt32LE(S+38);C.push({name:Ae,os:O,mtime:Ai.SAFE_TIME,crc:te,compressionMethod:Y,isSymbolicLink:O===om&&(Ee>>>16&Ai.S_IFMT)===Ai.S_IFLNK,size:E.readUInt32LE(S+24),compressedSize:Ce,externalAttributes:Ee,localHeaderOffset:de}),I+=Ce,x+=1,S+=46+ie+ue+ae}if(I>s)throw new Error(\"Zip archive inconsistent\");if(S!==E.length)throw new Error(\"Zip archive inconsistent\");return C}getExternalAttributes(t){let r=this.entries[t];return[r.os,r.externalAttributes]}getListings(){return this.entries.map(t=>t.name)}getSymlinkCount(){let t=0;for(let r of this.entries)r.isSymbolicLink&&(t+=1);return t}stat(t){let r=this.entries[t];return{crc:r.crc,mtime:r.mtime,size:r.size}}locate(t){for(let r=0;r<this.entries.length;r++)if(this.entries[r].name===t)return r;return-1}getFileSource(t){if(this.fd===\"closed\")throw new Error(\"ZIP file is closed\");let r=this.entries[t],s=Buffer.alloc(30);this.baseFs.readSync(this.fd,s,0,s.length,r.localHeaderOffset);let a=s.readUInt16LE(26),n=s.readUInt16LE(28),c=Buffer.alloc(r.compressedSize);if(this.baseFs.readSync(this.fd,c,0,r.compressedSize,r.localHeaderOffset+30+a+n)!==r.compressedSize)throw new Error(\"Invalid ZIP file\");return{data:c,compressionMethod:r.compressionMethod}}discard(){this.fd!==\"closed\"&&(this.baseFs.closeSync(this.fd),this.fd=\"closed\")}addDirectory(t){throw new Error(\"Not implemented\")}deleteEntry(t){throw new Error(\"Not implemented\")}setMtime(t,r){throw new Error(\"Not implemented\")}getBufferAndClose(){throw new Error(\"Not implemented\")}setFileSource(t,r,s){throw new Error(\"Not implemented\")}setExternalAttributes(t,r,s){throw new Error(\"Not implemented\")}}});var nv={};Yt(nv,{DEFAULT_COMPRESSION_LEVEL:()=>LAe,DEFLATE:()=>Ej,JsZipImpl:()=>vR,LibZipImpl:()=>DI,STORE:()=>yj,ZIP_UNIX:()=>om,ZipFS:()=>ps,ZipOpenFS:()=>tA,getArchivePart:()=>pj,getLibzipPromise:()=>Ftt,getLibzipSync:()=>Ttt,makeEmptyArchive:()=>wR,mountMemoryDrive:()=>UAe});function Ttt(){return tv()}async function Ftt(){return tv()}var GAe,rA=Ze(()=>{uj();GAe=et(QAe());FAe();HAe();jAe();gj();kAe(()=>{let e=(0,GAe.default)();return TAe(e)})});var iv,qAe=Ze(()=>{Dt();Vt();sv();iv=class extends at{constructor(){super(...arguments);this.cwd=he.String(\"--cwd\",process.cwd(),{description:\"The directory to run the command in\"});this.commandName=he.String();this.args=he.Proxy()}static{this.usage={description:\"run a command using yarn's portable shell\",details:`\n      This command will run a command using Yarn's portable shell.\n\n      Make sure to escape glob patterns, redirections, and other features that might be expanded by your own shell.\n\n      Note: To escape something from Yarn's shell, you might have to escape it twice, the first time from your own shell.\n\n      Note: Don't use this command in Yarn scripts, as Yarn's shell is automatically used.\n\n      For a list of features, visit: https://github.com/yarnpkg/berry/blob/master/packages/yarnpkg-shell/README.md.\n    `,examples:[[\"Run a simple command\",\"$0 echo Hello\"],[\"Run a command with a glob pattern\",\"$0 echo '*.js'\"],[\"Run a command with a redirection\",\"$0 echo Hello World '>' hello.txt\"],[\"Run a command with an escaped glob pattern (The double escape is needed in Unix shells)\",`$0 echo '\"*.js\"'`],[\"Run a command with a variable (Double quotes are needed in Unix shells, to prevent them from expanding the variable)\",'$0 \"GREETING=Hello echo $GREETING World\"']]}}async execute(){let r=this.args.length>0?`${this.commandName} ${this.args.join(\" \")}`:this.commandName;return await bI(r,[],{cwd:fe.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}}});var Xl,WAe=Ze(()=>{Xl=class extends Error{constructor(t){super(t),this.name=\"ShellError\"}}});var bR={};Yt(bR,{fastGlobOptions:()=>KAe,isBraceExpansion:()=>Cj,isGlobPattern:()=>Ntt,match:()=>Ott,micromatchOptions:()=>DR});function Ntt(e){if(!SR.default.scan(e,DR).isGlob)return!1;try{SR.default.parse(e,DR)}catch{return!1}return!0}function Ott(e,{cwd:t,baseFs:r}){return(0,VAe.default)(e,{...KAe,cwd:fe.fromPortablePath(t),fs:ax(YAe.default,new $h(r))})}function Cj(e){return SR.default.scan(e,DR).isBrace}var VAe,YAe,SR,DR,KAe,JAe=Ze(()=>{Dt();VAe=et(wQ()),YAe=et(Ie(\"fs\")),SR=et(Jo()),DR={strictBrackets:!0},KAe={onlyDirectories:!1,onlyFiles:!1}});function wj(){}function Bj(){for(let e of am)e.kill()}function $Ae(e,t,r,s){return a=>{let n=a[0]instanceof nA.Transform?\"pipe\":a[0],c=a[1]instanceof nA.Transform?\"pipe\":a[1],f=a[2]instanceof nA.Transform?\"pipe\":a[2],p=(0,ZAe.default)(e,t,{...s,stdio:[n,c,f]});return am.add(p),am.size===1&&(process.on(\"SIGINT\",wj),process.on(\"SIGTERM\",Bj)),a[0]instanceof nA.Transform&&a[0].pipe(p.stdin),a[1]instanceof nA.Transform&&p.stdout.pipe(a[1],{end:!1}),a[2]instanceof nA.Transform&&p.stderr.pipe(a[2],{end:!1}),{stdin:p.stdin,promise:new Promise(h=>{p.on(\"error\",E=>{switch(am.delete(p),am.size===0&&(process.off(\"SIGINT\",wj),process.off(\"SIGTERM\",Bj)),E.code){case\"ENOENT\":a[2].write(`command not found: ${e}\n`),h(127);break;case\"EACCES\":a[2].write(`permission denied: ${e}\n`),h(128);break;default:a[2].write(`uncaught error: ${E.message}\n`),h(1);break}}),p.on(\"close\",E=>{am.delete(p),am.size===0&&(process.off(\"SIGINT\",wj),process.off(\"SIGTERM\",Bj)),h(E!==null?E:129)})})}}}function epe(e){return t=>{let r=t[0]===\"pipe\"?new nA.PassThrough:t[0];return{stdin:r,promise:Promise.resolve().then(()=>e({stdin:r,stdout:t[1],stderr:t[2]}))}}}function PR(e,t){return Sj.start(e,t)}function zAe(e,t=null){let r=new nA.PassThrough,s=new XAe.StringDecoder,a=\"\";return r.on(\"data\",n=>{let c=s.write(n),f;do if(f=c.indexOf(`\n`),f!==-1){let p=a+c.substring(0,f);c=c.substring(f+1),a=\"\",e(t!==null?`${t} ${p}`:p)}while(f!==-1);a+=c}),r.on(\"end\",()=>{let n=s.end();n!==\"\"&&e(t!==null?`${t} ${n}`:n)}),r}function tpe(e,{prefix:t}){return{stdout:zAe(r=>e.stdout.write(`${r}\n`),e.stdout.isTTY?t:null),stderr:zAe(r=>e.stderr.write(`${r}\n`),e.stderr.isTTY?t:null)}}var ZAe,nA,XAe,am,Lc,vj,Sj,Dj=Ze(()=>{ZAe=et(vU()),nA=Ie(\"stream\"),XAe=Ie(\"string_decoder\"),am=new Set;Lc=class{constructor(t){this.stream=t}close(){}get(){return this.stream}},vj=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error(\"Assertion failed: No stream attached\");this.stream.end()}attach(t){this.stream=t}get(){if(this.stream===null)throw new Error(\"Assertion failed: No stream attached\");return this.stream}},Sj=class e{constructor(t,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=t,this.implementation=r}static start(t,{stdin:r,stdout:s,stderr:a}){let n=new e(null,t);return n.stdin=r,n.stdout=s,n.stderr=a,n}pipeTo(t,r=1){let s=new e(this,t),a=new vj;return s.pipe=a,s.stdout=this.stdout,s.stderr=this.stderr,(r&1)===1?this.stdout=a:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)===2?this.stderr=a:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),s}async exec(){let t=[\"ignore\",\"ignore\",\"ignore\"];if(this.pipe)t[0]=\"pipe\";else{if(this.stdin===null)throw new Error(\"Assertion failed: No input stream registered\");t[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error(\"Assertion failed: No output stream registered\");r=this.stdout,t[1]=r.get();let s;if(this.stderr===null)throw new Error(\"Assertion failed: No error stream registered\");s=this.stderr,t[2]=s.get();let a=this.implementation(t);return this.pipe&&this.pipe.attach(a.stdin),await a.promise.then(n=>(r.close(),s.close(),n))}async run(){let t=[];for(let s=this;s;s=s.ancestor)t.push(s.exec());return(await Promise.all(t))[0]}}});var cv={};Yt(cv,{EntryCommand:()=>iv,ShellError:()=>Xl,execute:()=>bI,globUtils:()=>bR});function rpe(e,t,r){let s=new $l.PassThrough({autoDestroy:!0});switch(e){case 0:(t&1)===1&&r.stdin.pipe(s,{end:!1}),(t&2)===2&&r.stdin instanceof $l.Writable&&s.pipe(r.stdin,{end:!1});break;case 1:(t&1)===1&&r.stdout.pipe(s,{end:!1}),(t&2)===2&&s.pipe(r.stdout,{end:!1});break;case 2:(t&1)===1&&r.stderr.pipe(s,{end:!1}),(t&2)===2&&s.pipe(r.stderr,{end:!1});break;default:throw new Xl(`Bad file descriptor: \"${e}\"`)}return s}function kR(e,t={}){let r={...e,...t};return r.environment={...e.environment,...t.environment},r.variables={...e.variables,...t.variables},r}async function Mtt(e,t,r){let s=[],a=new $l.PassThrough;return a.on(\"data\",n=>s.push(n)),await QR(e,t,kR(r,{stdout:a})),Buffer.concat(s).toString().replace(/[\\r\\n]+$/,\"\")}async function npe(e,t,r){let s=e.map(async n=>{let c=await lm(n.args,t,r);return{name:n.name,value:c.join(\" \")}});return(await Promise.all(s)).reduce((n,c)=>(n[c.name]=c.value,n),{})}function xR(e){return e.match(/[^ \\r\\n\\t]+/g)||[]}async function cpe(e,t,r,s,a=s){switch(e.name){case\"$\":s(String(process.pid));break;case\"#\":s(String(t.args.length));break;case\"@\":if(e.quoted)for(let n of t.args)a(n);else for(let n of t.args){let c=xR(n);for(let f=0;f<c.length-1;++f)a(c[f]);s(c[c.length-1])}break;case\"*\":{let n=t.args.join(\" \");if(e.quoted)s(n);else for(let c of xR(n))a(c)}break;case\"PPID\":s(String(process.ppid));break;case\"RANDOM\":s(String(Math.floor(Math.random()*32768)));break;default:{let n=parseInt(e.name,10),c,f=Number.isFinite(n);if(f?n>=0&&n<t.args.length&&(c=t.args[n]):Object.hasOwn(r.variables,e.name)?c=r.variables[e.name]:Object.hasOwn(r.environment,e.name)&&(c=r.environment[e.name]),typeof c<\"u\"&&e.alternativeValue?c=(await lm(e.alternativeValue,t,r)).join(\" \"):typeof c>\"u\"&&(e.defaultValue?c=(await lm(e.defaultValue,t,r)).join(\" \"):e.alternativeValue&&(c=\"\")),typeof c>\"u\")throw f?new Xl(`Unbound argument #${n}`):new Xl(`Unbound variable \"${e.name}\"`);if(e.quoted)s(c);else{let p=xR(c);for(let E=0;E<p.length-1;++E)a(p[E]);let h=p[p.length-1];typeof h<\"u\"&&s(h)}}break}}async function ov(e,t,r){if(e.type===\"number\"){if(Number.isInteger(e.value))return e.value;throw new Error(`Invalid number: \"${e.value}\", only integers are allowed`)}else if(e.type===\"variable\"){let s=[];await cpe({...e,quoted:!0},t,r,n=>s.push(n));let a=Number(s.join(\" \"));return Number.isNaN(a)?ov({type:\"variable\",name:s.join(\" \")},t,r):ov({type:\"number\",value:a},t,r)}else return Utt[e.type](await ov(e.left,t,r),await ov(e.right,t,r))}async function lm(e,t,r){let s=new Map,a=[],n=[],c=E=>{n.push(E)},f=()=>{n.length>0&&a.push(n.join(\"\")),n=[]},p=E=>{c(E),f()},h=(E,C,S)=>{let x=JSON.stringify({type:E,fd:C}),I=s.get(x);typeof I>\"u\"&&s.set(x,I=[]),I.push(S)};for(let E of e){let C=!1;switch(E.type){case\"redirection\":{let S=await lm(E.args,t,r);for(let x of S)h(E.subtype,E.fd,x)}break;case\"argument\":for(let S of E.segments)switch(S.type){case\"text\":c(S.text);break;case\"glob\":c(S.pattern),C=!0;break;case\"shell\":{let x=await Mtt(S.shell,t,r);if(S.quoted)c(x);else{let I=xR(x);for(let T=0;T<I.length-1;++T)p(I[T]);c(I[I.length-1])}}break;case\"variable\":await cpe(S,t,r,c,p);break;case\"arithmetic\":c(String(await ov(S.arithmetic,t,r)));break}break}if(f(),C){let S=a.pop();if(typeof S>\"u\")throw new Error(\"Assertion failed: Expected a glob pattern to have been set\");let x=await t.glob.match(S,{cwd:r.cwd,baseFs:t.baseFs});if(x.length===0){let I=Cj(S)?\". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22\":\"\";throw new Xl(`No matches found: \"${S}\"${I}`)}for(let I of x.sort())p(I)}}if(s.size>0){let E=[];for(let[C,S]of s.entries())E.splice(E.length,0,C,String(S.length),...S);a.splice(0,0,\"__ysh_set_redirects\",...E,\"--\")}return a}function av(e,t,r){t.builtins.has(e[0])||(e=[\"command\",...e]);let s=fe.fromPortablePath(r.cwd),a=r.environment;typeof a.PWD<\"u\"&&(a={...a,PWD:s});let[n,...c]=e;if(n===\"command\")return $Ae(c[0],c.slice(1),t,{cwd:s,env:a});let f=t.builtins.get(n);if(typeof f>\"u\")throw new Error(`Assertion failed: A builtin should exist for \"${n}\"`);return epe(async({stdin:p,stdout:h,stderr:E})=>{let{stdin:C,stdout:S,stderr:x}=r;r.stdin=p,r.stdout=h,r.stderr=E;try{return await f(c,t,r)}finally{r.stdin=C,r.stdout=S,r.stderr=x}})}function _tt(e,t,r){return s=>{let a=new $l.PassThrough,n=QR(e,t,kR(r,{stdin:a}));return{stdin:a,promise:n}}}function Htt(e,t,r){return s=>{let a=new $l.PassThrough,n=QR(e,t,r);return{stdin:a,promise:n}}}function ipe(e,t,r,s){if(t.length===0)return e;{let a;do a=String(Math.random());while(Object.hasOwn(s.procedures,a));return s.procedures={...s.procedures},s.procedures[a]=e,av([...t,\"__ysh_run_procedure\",a],r,s)}}async function spe(e,t,r){let s=e,a=null,n=null;for(;s;){let c=s.then?{...r}:r,f;switch(s.type){case\"command\":{let p=await lm(s.args,t,r),h=await npe(s.envs,t,r);f=s.envs.length?av(p,t,kR(c,{environment:h})):av(p,t,c)}break;case\"subshell\":{let p=await lm(s.args,t,r),h=_tt(s.subshell,t,c);f=ipe(h,p,t,c)}break;case\"group\":{let p=await lm(s.args,t,r),h=Htt(s.group,t,c);f=ipe(h,p,t,c)}break;case\"envs\":{let p=await npe(s.envs,t,r);c.environment={...c.environment,...p},f=av([\"true\"],t,c)}break}if(typeof f>\"u\")throw new Error(\"Assertion failed: An action should have been generated\");if(a===null)n=PR(f,{stdin:new Lc(c.stdin),stdout:new Lc(c.stdout),stderr:new Lc(c.stderr)});else{if(n===null)throw new Error(\"Assertion failed: The execution pipeline should have been setup\");switch(a){case\"|\":n=n.pipeTo(f,1);break;case\"|&\":n=n.pipeTo(f,3);break}}s.then?(a=s.then.type,s=s.then.chain):s=null}if(n===null)throw new Error(\"Assertion failed: The execution pipeline should have been setup\");return await n.run()}async function jtt(e,t,r,{background:s=!1}={}){function a(n){let c=[\"#2E86AB\",\"#A23B72\",\"#F18F01\",\"#C73E1D\",\"#CCE2A3\"],f=c[n%c.length];return ope.default.hex(f)}if(s){let n=r.nextBackgroundJobIndex++,c=a(n),f=`[${n}]`,p=c(f),{stdout:h,stderr:E}=tpe(r,{prefix:p});return r.backgroundJobs.push(spe(e,t,kR(r,{stdout:h,stderr:E})).catch(C=>E.write(`${C.message}\n`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${p}, '${c(gE(e))}' has ended\n`)})),0}return await spe(e,t,r)}async function Gtt(e,t,r,{background:s=!1}={}){let a,n=f=>{a=f,r.variables[\"?\"]=String(f)},c=async f=>{try{return await jtt(f.chain,t,r,{background:s&&typeof f.then>\"u\"})}catch(p){if(!(p instanceof Xl))throw p;return r.stderr.write(`${p.message}\n`),1}};for(n(await c(e));e.then;){if(r.exitCode!==null)return r.exitCode;switch(e.then.type){case\"&&\":a===0&&n(await c(e.then.line));break;case\"||\":a!==0&&n(await c(e.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: \"${e.then.type}\"`)}e=e.then.line}return a}async function QR(e,t,r){let s=r.backgroundJobs;r.backgroundJobs=[];let a=0;for(let{command:n,type:c}of e){if(a=await Gtt(n,t,r,{background:c===\"&\"}),r.exitCode!==null)return r.exitCode;r.variables[\"?\"]=String(a)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=s,a}function upe(e){switch(e.type){case\"variable\":return e.name===\"@\"||e.name===\"#\"||e.name===\"*\"||Number.isFinite(parseInt(e.name,10))||\"defaultValue\"in e&&!!e.defaultValue&&e.defaultValue.some(t=>lv(t))||\"alternativeValue\"in e&&!!e.alternativeValue&&e.alternativeValue.some(t=>lv(t));case\"arithmetic\":return bj(e.arithmetic);case\"shell\":return Pj(e.shell);default:return!1}}function lv(e){switch(e.type){case\"redirection\":return e.args.some(t=>lv(t));case\"argument\":return e.segments.some(t=>upe(t));default:throw new Error(`Assertion failed: Unsupported argument type: \"${e.type}\"`)}}function bj(e){switch(e.type){case\"variable\":return upe(e);case\"number\":return!1;default:return bj(e.left)||bj(e.right)}}function Pj(e){return e.some(({command:t})=>{for(;t;){let r=t.chain;for(;r;){let s;switch(r.type){case\"subshell\":s=Pj(r.subshell);break;case\"command\":s=r.envs.some(a=>a.args.some(n=>lv(n)))||r.args.some(a=>lv(a));break}if(s)return!0;if(!r.then)break;r=r.then.chain}if(!t.then)break;t=t.then.line}return!1})}async function bI(e,t=[],{baseFs:r=new Yn,builtins:s={},cwd:a=fe.toPortablePath(process.cwd()),env:n=process.env,stdin:c=process.stdin,stdout:f=process.stdout,stderr:p=process.stderr,variables:h={},glob:E=bR}={}){let C={};for(let[I,T]of Object.entries(n))typeof T<\"u\"&&(C[I]=T);let S=new Map(Ltt);for(let[I,T]of Object.entries(s))S.set(I,T);c===null&&(c=new $l.PassThrough,c.end());let x=ux(e,E);if(!Pj(x)&&x.length>0&&t.length>0){let{command:I}=x[x.length-1];for(;I.then;)I=I.then.line;let T=I.chain;for(;T.then;)T=T.then.chain;T.type===\"command\"&&(T.args=T.args.concat(t.map(O=>({type:\"argument\",segments:[{type:\"text\",text:O}]}))))}return await QR(x,{args:t,baseFs:r,builtins:S,initialStdin:c,initialStdout:f,initialStderr:p,glob:E},{cwd:a,environment:C,exitCode:null,procedures:{},stdin:c,stdout:f,stderr:p,variables:Object.assign({},h,{\"?\":0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var ope,ape,$l,lpe,Ltt,Utt,sv=Ze(()=>{Dt();Bc();ope=et(NE()),ape=Ie(\"os\"),$l=Ie(\"stream\"),lpe=Ie(\"timers/promises\");qAe();WAe();JAe();Dj();Dj();Ltt=new Map([[\"cd\",async([e=(0,ape.homedir)(),...t],r,s)=>{let a=K.resolve(s.cwd,fe.toPortablePath(e));if(!(await r.baseFs.statPromise(a).catch(c=>{throw c.code===\"ENOENT\"?new Xl(`cd: no such file or directory: ${e}`):c})).isDirectory())throw new Xl(`cd: not a directory: ${e}`);return s.cwd=a,0}],[\"pwd\",async(e,t,r)=>(r.stdout.write(`${fe.fromPortablePath(r.cwd)}\n`),0)],[\":\",async(e,t,r)=>0],[\"true\",async(e,t,r)=>0],[\"false\",async(e,t,r)=>1],[\"exit\",async([e,...t],r,s)=>s.exitCode=parseInt(e??s.variables[\"?\"],10)],[\"echo\",async(e,t,r)=>(r.stdout.write(`${e.join(\" \")}\n`),0)],[\"sleep\",async([e],t,r)=>{if(typeof e>\"u\")throw new Xl(\"sleep: missing operand\");let s=Number(e);if(Number.isNaN(s))throw new Xl(`sleep: invalid time interval '${e}'`);return await(0,lpe.setTimeout)(1e3*s,0)}],[\"unset\",async(e,t,r)=>{for(let s of e)delete r.environment[s],delete r.variables[s];return 0}],[\"__ysh_run_procedure\",async(e,t,r)=>{let s=r.procedures[e[0]];return await PR(s,{stdin:new Lc(r.stdin),stdout:new Lc(r.stdout),stderr:new Lc(r.stderr)}).run()}],[\"__ysh_set_redirects\",async(e,t,r)=>{let s=r.stdin,a=r.stdout,n=r.stderr,c=[],f=[],p=[],h=0;for(;e[h]!==\"--\";){let C=e[h++],{type:S,fd:x}=JSON.parse(C),I=Y=>{switch(x){case null:case 0:c.push(Y);break;default:throw new Error(`Unsupported file descriptor: \"${x}\"`)}},T=Y=>{switch(x){case null:case 1:f.push(Y);break;case 2:p.push(Y);break;default:throw new Error(`Unsupported file descriptor: \"${x}\"`)}},O=Number(e[h++]),U=h+O;for(let Y=h;Y<U;++h,++Y)switch(S){case\"<\":I(()=>t.baseFs.createReadStream(K.resolve(r.cwd,fe.toPortablePath(e[Y]))));break;case\"<<<\":I(()=>{let te=new $l.PassThrough;return process.nextTick(()=>{te.write(`${e[Y]}\n`),te.end()}),te});break;case\"<&\":I(()=>rpe(Number(e[Y]),1,r));break;case\">\":case\">>\":{let te=K.resolve(r.cwd,fe.toPortablePath(e[Y]));T(te===\"/dev/null\"?new $l.Writable({autoDestroy:!0,emitClose:!0,write(ie,ue,ae){setImmediate(ae)}}):t.baseFs.createWriteStream(te,S===\">>\"?{flags:\"a\"}:void 0))}break;case\">&\":T(rpe(Number(e[Y]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: \"${S}\"`)}}if(c.length>0){let C=new $l.PassThrough;s=C;let S=x=>{if(x===c.length)C.end();else{let I=c[x]();I.pipe(C,{end:!1}),I.on(\"end\",()=>{S(x+1)})}};S(0)}if(f.length>0){let C=new $l.PassThrough;a=C;for(let S of f)C.pipe(S)}if(p.length>0){let C=new $l.PassThrough;n=C;for(let S of p)C.pipe(S)}let E=await PR(av(e.slice(h+1),t,r),{stdin:new Lc(s),stdout:new Lc(a),stderr:new Lc(n)}).run();return await Promise.all(f.map(C=>new Promise((S,x)=>{C.on(\"error\",I=>{x(I)}),C.on(\"close\",()=>{S()}),C.end()}))),await Promise.all(p.map(C=>new Promise((S,x)=>{C.on(\"error\",I=>{x(I)}),C.on(\"close\",()=>{S()}),C.end()}))),E}]]);Utt={addition:(e,t)=>e+t,subtraction:(e,t)=>e-t,multiplication:(e,t)=>e*t,division:(e,t)=>Math.trunc(e/t)}});var fpe=G((UMt,RR)=>{function qtt(){var e=0,t=1,r=2,s=3,a=4,n=5,c=6,f=7,p=8,h=9,E=10,C=11,S=12,x=13,I=14,T=15,O=16,U=17,Y=0,te=1,ie=2,ue=3,ae=4;function de(g,Se){return 55296<=g.charCodeAt(Se)&&g.charCodeAt(Se)<=56319&&56320<=g.charCodeAt(Se+1)&&g.charCodeAt(Se+1)<=57343}function Ae(g,Se){Se===void 0&&(Se=0);var Be=g.charCodeAt(Se);if(55296<=Be&&Be<=56319&&Se<g.length-1){var me=Be,ce=g.charCodeAt(Se+1);return 56320<=ce&&ce<=57343?(me-55296)*1024+(ce-56320)+65536:me}if(56320<=Be&&Be<=57343&&Se>=1){var me=g.charCodeAt(Se-1),ce=Be;return 55296<=me&&me<=56319?(me-55296)*1024+(ce-56320)+65536:ce}return Be}function Ce(g,Se,Be){var me=[g].concat(Se).concat([Be]),ce=me[me.length-2],X=Be,De=me.lastIndexOf(I);if(De>1&&me.slice(1,De).every(function(_){return _==s})&&[s,x,U].indexOf(g)==-1)return ie;var Qe=me.lastIndexOf(a);if(Qe>0&&me.slice(1,Qe).every(function(_){return _==a})&&[S,a].indexOf(ce)==-1)return me.filter(function(_){return _==a}).length%2==1?ue:ae;if(ce==e&&X==t)return Y;if(ce==r||ce==e||ce==t)return X==I&&Se.every(function(_){return _==s})?ie:te;if(X==r||X==e||X==t)return te;if(ce==c&&(X==c||X==f||X==h||X==E))return Y;if((ce==h||ce==f)&&(X==f||X==p))return Y;if((ce==E||ce==p)&&X==p)return Y;if(X==s||X==T)return Y;if(X==n)return Y;if(ce==S)return Y;var it=me.indexOf(s)!=-1?me.lastIndexOf(s)-1:me.length-2;return[x,U].indexOf(me[it])!=-1&&me.slice(it+1,-1).every(function(_){return _==s})&&X==I||ce==T&&[O,U].indexOf(X)!=-1?Y:Se.indexOf(a)!=-1?ie:ce==a&&X==a?Y:te}this.nextBreak=function(g,Se){if(Se===void 0&&(Se=0),Se<0)return 0;if(Se>=g.length-1)return g.length;for(var Be=Ee(Ae(g,Se)),me=[],ce=Se+1;ce<g.length;ce++)if(!de(g,ce-1)){var X=Ee(Ae(g,ce));if(Ce(Be,me,X))return ce;me.push(X)}return g.length},this.splitGraphemes=function(g){for(var Se=[],Be=0,me;(me=this.nextBreak(g,Be))<g.length;)Se.push(g.slice(Be,me)),Be=me;return Be<g.length&&Se.push(g.slice(Be)),Se},this.iterateGraphemes=function(g){var Se=0,Be={next:function(){var me,ce;return(ce=this.nextBreak(g,Se))<g.length?(me=g.slice(Se,ce),Se=ce,{value:me,done:!1}):Se<g.length?(me=g.slice(Se),Se=g.length,{value:me,done:!1}):{value:void 0,done:!0}}.bind(this)};return typeof Symbol<\"u\"&&Symbol.iterator&&(Be[Symbol.iterator]=function(){return Be}),Be},this.countGraphemes=function(g){for(var Se=0,Be=0,me;(me=this.nextBreak(g,Be))<g.length;)Be=me,Se++;return Be<g.length&&Se++,Se};function Ee(g){return 1536<=g&&g<=1541||g==1757||g==1807||g==2274||g==3406||g==69821||70082<=g&&g<=70083||g==72250||72326<=g&&g<=72329||g==73030?S:g==13?e:g==10?t:0<=g&&g<=9||11<=g&&g<=12||14<=g&&g<=31||127<=g&&g<=159||g==173||g==1564||g==6158||g==8203||8206<=g&&g<=8207||g==8232||g==8233||8234<=g&&g<=8238||8288<=g&&g<=8292||g==8293||8294<=g&&g<=8303||55296<=g&&g<=57343||g==65279||65520<=g&&g<=65528||65529<=g&&g<=65531||113824<=g&&g<=113827||119155<=g&&g<=119162||g==917504||g==917505||917506<=g&&g<=917535||917632<=g&&g<=917759||918e3<=g&&g<=921599?r:768<=g&&g<=879||1155<=g&&g<=1159||1160<=g&&g<=1161||1425<=g&&g<=1469||g==1471||1473<=g&&g<=1474||1476<=g&&g<=1477||g==1479||1552<=g&&g<=1562||1611<=g&&g<=1631||g==1648||1750<=g&&g<=1756||1759<=g&&g<=1764||1767<=g&&g<=1768||1770<=g&&g<=1773||g==1809||1840<=g&&g<=1866||1958<=g&&g<=1968||2027<=g&&g<=2035||2070<=g&&g<=2073||2075<=g&&g<=2083||2085<=g&&g<=2087||2089<=g&&g<=2093||2137<=g&&g<=2139||2260<=g&&g<=2273||2275<=g&&g<=2306||g==2362||g==2364||2369<=g&&g<=2376||g==2381||2385<=g&&g<=2391||2402<=g&&g<=2403||g==2433||g==2492||g==2494||2497<=g&&g<=2500||g==2509||g==2519||2530<=g&&g<=2531||2561<=g&&g<=2562||g==2620||2625<=g&&g<=2626||2631<=g&&g<=2632||2635<=g&&g<=2637||g==2641||2672<=g&&g<=2673||g==2677||2689<=g&&g<=2690||g==2748||2753<=g&&g<=2757||2759<=g&&g<=2760||g==2765||2786<=g&&g<=2787||2810<=g&&g<=2815||g==2817||g==2876||g==2878||g==2879||2881<=g&&g<=2884||g==2893||g==2902||g==2903||2914<=g&&g<=2915||g==2946||g==3006||g==3008||g==3021||g==3031||g==3072||3134<=g&&g<=3136||3142<=g&&g<=3144||3146<=g&&g<=3149||3157<=g&&g<=3158||3170<=g&&g<=3171||g==3201||g==3260||g==3263||g==3266||g==3270||3276<=g&&g<=3277||3285<=g&&g<=3286||3298<=g&&g<=3299||3328<=g&&g<=3329||3387<=g&&g<=3388||g==3390||3393<=g&&g<=3396||g==3405||g==3415||3426<=g&&g<=3427||g==3530||g==3535||3538<=g&&g<=3540||g==3542||g==3551||g==3633||3636<=g&&g<=3642||3655<=g&&g<=3662||g==3761||3764<=g&&g<=3769||3771<=g&&g<=3772||3784<=g&&g<=3789||3864<=g&&g<=3865||g==3893||g==3895||g==3897||3953<=g&&g<=3966||3968<=g&&g<=3972||3974<=g&&g<=3975||3981<=g&&g<=3991||3993<=g&&g<=4028||g==4038||4141<=g&&g<=4144||4146<=g&&g<=4151||4153<=g&&g<=4154||4157<=g&&g<=4158||4184<=g&&g<=4185||4190<=g&&g<=4192||4209<=g&&g<=4212||g==4226||4229<=g&&g<=4230||g==4237||g==4253||4957<=g&&g<=4959||5906<=g&&g<=5908||5938<=g&&g<=5940||5970<=g&&g<=5971||6002<=g&&g<=6003||6068<=g&&g<=6069||6071<=g&&g<=6077||g==6086||6089<=g&&g<=6099||g==6109||6155<=g&&g<=6157||6277<=g&&g<=6278||g==6313||6432<=g&&g<=6434||6439<=g&&g<=6440||g==6450||6457<=g&&g<=6459||6679<=g&&g<=6680||g==6683||g==6742||6744<=g&&g<=6750||g==6752||g==6754||6757<=g&&g<=6764||6771<=g&&g<=6780||g==6783||6832<=g&&g<=6845||g==6846||6912<=g&&g<=6915||g==6964||6966<=g&&g<=6970||g==6972||g==6978||7019<=g&&g<=7027||7040<=g&&g<=7041||7074<=g&&g<=7077||7080<=g&&g<=7081||7083<=g&&g<=7085||g==7142||7144<=g&&g<=7145||g==7149||7151<=g&&g<=7153||7212<=g&&g<=7219||7222<=g&&g<=7223||7376<=g&&g<=7378||7380<=g&&g<=7392||7394<=g&&g<=7400||g==7405||g==7412||7416<=g&&g<=7417||7616<=g&&g<=7673||7675<=g&&g<=7679||g==8204||8400<=g&&g<=8412||8413<=g&&g<=8416||g==8417||8418<=g&&g<=8420||8421<=g&&g<=8432||11503<=g&&g<=11505||g==11647||11744<=g&&g<=11775||12330<=g&&g<=12333||12334<=g&&g<=12335||12441<=g&&g<=12442||g==42607||42608<=g&&g<=42610||42612<=g&&g<=42621||42654<=g&&g<=42655||42736<=g&&g<=42737||g==43010||g==43014||g==43019||43045<=g&&g<=43046||43204<=g&&g<=43205||43232<=g&&g<=43249||43302<=g&&g<=43309||43335<=g&&g<=43345||43392<=g&&g<=43394||g==43443||43446<=g&&g<=43449||g==43452||g==43493||43561<=g&&g<=43566||43569<=g&&g<=43570||43573<=g&&g<=43574||g==43587||g==43596||g==43644||g==43696||43698<=g&&g<=43700||43703<=g&&g<=43704||43710<=g&&g<=43711||g==43713||43756<=g&&g<=43757||g==43766||g==44005||g==44008||g==44013||g==64286||65024<=g&&g<=65039||65056<=g&&g<=65071||65438<=g&&g<=65439||g==66045||g==66272||66422<=g&&g<=66426||68097<=g&&g<=68099||68101<=g&&g<=68102||68108<=g&&g<=68111||68152<=g&&g<=68154||g==68159||68325<=g&&g<=68326||g==69633||69688<=g&&g<=69702||69759<=g&&g<=69761||69811<=g&&g<=69814||69817<=g&&g<=69818||69888<=g&&g<=69890||69927<=g&&g<=69931||69933<=g&&g<=69940||g==70003||70016<=g&&g<=70017||70070<=g&&g<=70078||70090<=g&&g<=70092||70191<=g&&g<=70193||g==70196||70198<=g&&g<=70199||g==70206||g==70367||70371<=g&&g<=70378||70400<=g&&g<=70401||g==70460||g==70462||g==70464||g==70487||70502<=g&&g<=70508||70512<=g&&g<=70516||70712<=g&&g<=70719||70722<=g&&g<=70724||g==70726||g==70832||70835<=g&&g<=70840||g==70842||g==70845||70847<=g&&g<=70848||70850<=g&&g<=70851||g==71087||71090<=g&&g<=71093||71100<=g&&g<=71101||71103<=g&&g<=71104||71132<=g&&g<=71133||71219<=g&&g<=71226||g==71229||71231<=g&&g<=71232||g==71339||g==71341||71344<=g&&g<=71349||g==71351||71453<=g&&g<=71455||71458<=g&&g<=71461||71463<=g&&g<=71467||72193<=g&&g<=72198||72201<=g&&g<=72202||72243<=g&&g<=72248||72251<=g&&g<=72254||g==72263||72273<=g&&g<=72278||72281<=g&&g<=72283||72330<=g&&g<=72342||72344<=g&&g<=72345||72752<=g&&g<=72758||72760<=g&&g<=72765||g==72767||72850<=g&&g<=72871||72874<=g&&g<=72880||72882<=g&&g<=72883||72885<=g&&g<=72886||73009<=g&&g<=73014||g==73018||73020<=g&&g<=73021||73023<=g&&g<=73029||g==73031||92912<=g&&g<=92916||92976<=g&&g<=92982||94095<=g&&g<=94098||113821<=g&&g<=113822||g==119141||119143<=g&&g<=119145||119150<=g&&g<=119154||119163<=g&&g<=119170||119173<=g&&g<=119179||119210<=g&&g<=119213||119362<=g&&g<=119364||121344<=g&&g<=121398||121403<=g&&g<=121452||g==121461||g==121476||121499<=g&&g<=121503||121505<=g&&g<=121519||122880<=g&&g<=122886||122888<=g&&g<=122904||122907<=g&&g<=122913||122915<=g&&g<=122916||122918<=g&&g<=122922||125136<=g&&g<=125142||125252<=g&&g<=125258||917536<=g&&g<=917631||917760<=g&&g<=917999?s:127462<=g&&g<=127487?a:g==2307||g==2363||2366<=g&&g<=2368||2377<=g&&g<=2380||2382<=g&&g<=2383||2434<=g&&g<=2435||2495<=g&&g<=2496||2503<=g&&g<=2504||2507<=g&&g<=2508||g==2563||2622<=g&&g<=2624||g==2691||2750<=g&&g<=2752||g==2761||2763<=g&&g<=2764||2818<=g&&g<=2819||g==2880||2887<=g&&g<=2888||2891<=g&&g<=2892||g==3007||3009<=g&&g<=3010||3014<=g&&g<=3016||3018<=g&&g<=3020||3073<=g&&g<=3075||3137<=g&&g<=3140||3202<=g&&g<=3203||g==3262||3264<=g&&g<=3265||3267<=g&&g<=3268||3271<=g&&g<=3272||3274<=g&&g<=3275||3330<=g&&g<=3331||3391<=g&&g<=3392||3398<=g&&g<=3400||3402<=g&&g<=3404||3458<=g&&g<=3459||3536<=g&&g<=3537||3544<=g&&g<=3550||3570<=g&&g<=3571||g==3635||g==3763||3902<=g&&g<=3903||g==3967||g==4145||4155<=g&&g<=4156||4182<=g&&g<=4183||g==4228||g==6070||6078<=g&&g<=6085||6087<=g&&g<=6088||6435<=g&&g<=6438||6441<=g&&g<=6443||6448<=g&&g<=6449||6451<=g&&g<=6456||6681<=g&&g<=6682||g==6741||g==6743||6765<=g&&g<=6770||g==6916||g==6965||g==6971||6973<=g&&g<=6977||6979<=g&&g<=6980||g==7042||g==7073||7078<=g&&g<=7079||g==7082||g==7143||7146<=g&&g<=7148||g==7150||7154<=g&&g<=7155||7204<=g&&g<=7211||7220<=g&&g<=7221||g==7393||7410<=g&&g<=7411||g==7415||43043<=g&&g<=43044||g==43047||43136<=g&&g<=43137||43188<=g&&g<=43203||43346<=g&&g<=43347||g==43395||43444<=g&&g<=43445||43450<=g&&g<=43451||43453<=g&&g<=43456||43567<=g&&g<=43568||43571<=g&&g<=43572||g==43597||g==43755||43758<=g&&g<=43759||g==43765||44003<=g&&g<=44004||44006<=g&&g<=44007||44009<=g&&g<=44010||g==44012||g==69632||g==69634||g==69762||69808<=g&&g<=69810||69815<=g&&g<=69816||g==69932||g==70018||70067<=g&&g<=70069||70079<=g&&g<=70080||70188<=g&&g<=70190||70194<=g&&g<=70195||g==70197||70368<=g&&g<=70370||70402<=g&&g<=70403||g==70463||70465<=g&&g<=70468||70471<=g&&g<=70472||70475<=g&&g<=70477||70498<=g&&g<=70499||70709<=g&&g<=70711||70720<=g&&g<=70721||g==70725||70833<=g&&g<=70834||g==70841||70843<=g&&g<=70844||g==70846||g==70849||71088<=g&&g<=71089||71096<=g&&g<=71099||g==71102||71216<=g&&g<=71218||71227<=g&&g<=71228||g==71230||g==71340||71342<=g&&g<=71343||g==71350||71456<=g&&g<=71457||g==71462||72199<=g&&g<=72200||g==72249||72279<=g&&g<=72280||g==72343||g==72751||g==72766||g==72873||g==72881||g==72884||94033<=g&&g<=94078||g==119142||g==119149?n:4352<=g&&g<=4447||43360<=g&&g<=43388?c:4448<=g&&g<=4519||55216<=g&&g<=55238?f:4520<=g&&g<=4607||55243<=g&&g<=55291?p:g==44032||g==44060||g==44088||g==44116||g==44144||g==44172||g==44200||g==44228||g==44256||g==44284||g==44312||g==44340||g==44368||g==44396||g==44424||g==44452||g==44480||g==44508||g==44536||g==44564||g==44592||g==44620||g==44648||g==44676||g==44704||g==44732||g==44760||g==44788||g==44816||g==44844||g==44872||g==44900||g==44928||g==44956||g==44984||g==45012||g==45040||g==45068||g==45096||g==45124||g==45152||g==45180||g==45208||g==45236||g==45264||g==45292||g==45320||g==45348||g==45376||g==45404||g==45432||g==45460||g==45488||g==45516||g==45544||g==45572||g==45600||g==45628||g==45656||g==45684||g==45712||g==45740||g==45768||g==45796||g==45824||g==45852||g==45880||g==45908||g==45936||g==45964||g==45992||g==46020||g==46048||g==46076||g==46104||g==46132||g==46160||g==46188||g==46216||g==46244||g==46272||g==46300||g==46328||g==46356||g==46384||g==46412||g==46440||g==46468||g==46496||g==46524||g==46552||g==46580||g==46608||g==46636||g==46664||g==46692||g==46720||g==46748||g==46776||g==46804||g==46832||g==46860||g==46888||g==46916||g==46944||g==46972||g==47e3||g==47028||g==47056||g==47084||g==47112||g==47140||g==47168||g==47196||g==47224||g==47252||g==47280||g==47308||g==47336||g==47364||g==47392||g==47420||g==47448||g==47476||g==47504||g==47532||g==47560||g==47588||g==47616||g==47644||g==47672||g==47700||g==47728||g==47756||g==47784||g==47812||g==47840||g==47868||g==47896||g==47924||g==47952||g==47980||g==48008||g==48036||g==48064||g==48092||g==48120||g==48148||g==48176||g==48204||g==48232||g==48260||g==48288||g==48316||g==48344||g==48372||g==48400||g==48428||g==48456||g==48484||g==48512||g==48540||g==48568||g==48596||g==48624||g==48652||g==48680||g==48708||g==48736||g==48764||g==48792||g==48820||g==48848||g==48876||g==48904||g==48932||g==48960||g==48988||g==49016||g==49044||g==49072||g==49100||g==49128||g==49156||g==49184||g==49212||g==49240||g==49268||g==49296||g==49324||g==49352||g==49380||g==49408||g==49436||g==49464||g==49492||g==49520||g==49548||g==49576||g==49604||g==49632||g==49660||g==49688||g==49716||g==49744||g==49772||g==49800||g==49828||g==49856||g==49884||g==49912||g==49940||g==49968||g==49996||g==50024||g==50052||g==50080||g==50108||g==50136||g==50164||g==50192||g==50220||g==50248||g==50276||g==50304||g==50332||g==50360||g==50388||g==50416||g==50444||g==50472||g==50500||g==50528||g==50556||g==50584||g==50612||g==50640||g==50668||g==50696||g==50724||g==50752||g==50780||g==50808||g==50836||g==50864||g==50892||g==50920||g==50948||g==50976||g==51004||g==51032||g==51060||g==51088||g==51116||g==51144||g==51172||g==51200||g==51228||g==51256||g==51284||g==51312||g==51340||g==51368||g==51396||g==51424||g==51452||g==51480||g==51508||g==51536||g==51564||g==51592||g==51620||g==51648||g==51676||g==51704||g==51732||g==51760||g==51788||g==51816||g==51844||g==51872||g==51900||g==51928||g==51956||g==51984||g==52012||g==52040||g==52068||g==52096||g==52124||g==52152||g==52180||g==52208||g==52236||g==52264||g==52292||g==52320||g==52348||g==52376||g==52404||g==52432||g==52460||g==52488||g==52516||g==52544||g==52572||g==52600||g==52628||g==52656||g==52684||g==52712||g==52740||g==52768||g==52796||g==52824||g==52852||g==52880||g==52908||g==52936||g==52964||g==52992||g==53020||g==53048||g==53076||g==53104||g==53132||g==53160||g==53188||g==53216||g==53244||g==53272||g==53300||g==53328||g==53356||g==53384||g==53412||g==53440||g==53468||g==53496||g==53524||g==53552||g==53580||g==53608||g==53636||g==53664||g==53692||g==53720||g==53748||g==53776||g==53804||g==53832||g==53860||g==53888||g==53916||g==53944||g==53972||g==54e3||g==54028||g==54056||g==54084||g==54112||g==54140||g==54168||g==54196||g==54224||g==54252||g==54280||g==54308||g==54336||g==54364||g==54392||g==54420||g==54448||g==54476||g==54504||g==54532||g==54560||g==54588||g==54616||g==54644||g==54672||g==54700||g==54728||g==54756||g==54784||g==54812||g==54840||g==54868||g==54896||g==54924||g==54952||g==54980||g==55008||g==55036||g==55064||g==55092||g==55120||g==55148||g==55176?h:44033<=g&&g<=44059||44061<=g&&g<=44087||44089<=g&&g<=44115||44117<=g&&g<=44143||44145<=g&&g<=44171||44173<=g&&g<=44199||44201<=g&&g<=44227||44229<=g&&g<=44255||44257<=g&&g<=44283||44285<=g&&g<=44311||44313<=g&&g<=44339||44341<=g&&g<=44367||44369<=g&&g<=44395||44397<=g&&g<=44423||44425<=g&&g<=44451||44453<=g&&g<=44479||44481<=g&&g<=44507||44509<=g&&g<=44535||44537<=g&&g<=44563||44565<=g&&g<=44591||44593<=g&&g<=44619||44621<=g&&g<=44647||44649<=g&&g<=44675||44677<=g&&g<=44703||44705<=g&&g<=44731||44733<=g&&g<=44759||44761<=g&&g<=44787||44789<=g&&g<=44815||44817<=g&&g<=44843||44845<=g&&g<=44871||44873<=g&&g<=44899||44901<=g&&g<=44927||44929<=g&&g<=44955||44957<=g&&g<=44983||44985<=g&&g<=45011||45013<=g&&g<=45039||45041<=g&&g<=45067||45069<=g&&g<=45095||45097<=g&&g<=45123||45125<=g&&g<=45151||45153<=g&&g<=45179||45181<=g&&g<=45207||45209<=g&&g<=45235||45237<=g&&g<=45263||45265<=g&&g<=45291||45293<=g&&g<=45319||45321<=g&&g<=45347||45349<=g&&g<=45375||45377<=g&&g<=45403||45405<=g&&g<=45431||45433<=g&&g<=45459||45461<=g&&g<=45487||45489<=g&&g<=45515||45517<=g&&g<=45543||45545<=g&&g<=45571||45573<=g&&g<=45599||45601<=g&&g<=45627||45629<=g&&g<=45655||45657<=g&&g<=45683||45685<=g&&g<=45711||45713<=g&&g<=45739||45741<=g&&g<=45767||45769<=g&&g<=45795||45797<=g&&g<=45823||45825<=g&&g<=45851||45853<=g&&g<=45879||45881<=g&&g<=45907||45909<=g&&g<=45935||45937<=g&&g<=45963||45965<=g&&g<=45991||45993<=g&&g<=46019||46021<=g&&g<=46047||46049<=g&&g<=46075||46077<=g&&g<=46103||46105<=g&&g<=46131||46133<=g&&g<=46159||46161<=g&&g<=46187||46189<=g&&g<=46215||46217<=g&&g<=46243||46245<=g&&g<=46271||46273<=g&&g<=46299||46301<=g&&g<=46327||46329<=g&&g<=46355||46357<=g&&g<=46383||46385<=g&&g<=46411||46413<=g&&g<=46439||46441<=g&&g<=46467||46469<=g&&g<=46495||46497<=g&&g<=46523||46525<=g&&g<=46551||46553<=g&&g<=46579||46581<=g&&g<=46607||46609<=g&&g<=46635||46637<=g&&g<=46663||46665<=g&&g<=46691||46693<=g&&g<=46719||46721<=g&&g<=46747||46749<=g&&g<=46775||46777<=g&&g<=46803||46805<=g&&g<=46831||46833<=g&&g<=46859||46861<=g&&g<=46887||46889<=g&&g<=46915||46917<=g&&g<=46943||46945<=g&&g<=46971||46973<=g&&g<=46999||47001<=g&&g<=47027||47029<=g&&g<=47055||47057<=g&&g<=47083||47085<=g&&g<=47111||47113<=g&&g<=47139||47141<=g&&g<=47167||47169<=g&&g<=47195||47197<=g&&g<=47223||47225<=g&&g<=47251||47253<=g&&g<=47279||47281<=g&&g<=47307||47309<=g&&g<=47335||47337<=g&&g<=47363||47365<=g&&g<=47391||47393<=g&&g<=47419||47421<=g&&g<=47447||47449<=g&&g<=47475||47477<=g&&g<=47503||47505<=g&&g<=47531||47533<=g&&g<=47559||47561<=g&&g<=47587||47589<=g&&g<=47615||47617<=g&&g<=47643||47645<=g&&g<=47671||47673<=g&&g<=47699||47701<=g&&g<=47727||47729<=g&&g<=47755||47757<=g&&g<=47783||47785<=g&&g<=47811||47813<=g&&g<=47839||47841<=g&&g<=47867||47869<=g&&g<=47895||47897<=g&&g<=47923||47925<=g&&g<=47951||47953<=g&&g<=47979||47981<=g&&g<=48007||48009<=g&&g<=48035||48037<=g&&g<=48063||48065<=g&&g<=48091||48093<=g&&g<=48119||48121<=g&&g<=48147||48149<=g&&g<=48175||48177<=g&&g<=48203||48205<=g&&g<=48231||48233<=g&&g<=48259||48261<=g&&g<=48287||48289<=g&&g<=48315||48317<=g&&g<=48343||48345<=g&&g<=48371||48373<=g&&g<=48399||48401<=g&&g<=48427||48429<=g&&g<=48455||48457<=g&&g<=48483||48485<=g&&g<=48511||48513<=g&&g<=48539||48541<=g&&g<=48567||48569<=g&&g<=48595||48597<=g&&g<=48623||48625<=g&&g<=48651||48653<=g&&g<=48679||48681<=g&&g<=48707||48709<=g&&g<=48735||48737<=g&&g<=48763||48765<=g&&g<=48791||48793<=g&&g<=48819||48821<=g&&g<=48847||48849<=g&&g<=48875||48877<=g&&g<=48903||48905<=g&&g<=48931||48933<=g&&g<=48959||48961<=g&&g<=48987||48989<=g&&g<=49015||49017<=g&&g<=49043||49045<=g&&g<=49071||49073<=g&&g<=49099||49101<=g&&g<=49127||49129<=g&&g<=49155||49157<=g&&g<=49183||49185<=g&&g<=49211||49213<=g&&g<=49239||49241<=g&&g<=49267||49269<=g&&g<=49295||49297<=g&&g<=49323||49325<=g&&g<=49351||49353<=g&&g<=49379||49381<=g&&g<=49407||49409<=g&&g<=49435||49437<=g&&g<=49463||49465<=g&&g<=49491||49493<=g&&g<=49519||49521<=g&&g<=49547||49549<=g&&g<=49575||49577<=g&&g<=49603||49605<=g&&g<=49631||49633<=g&&g<=49659||49661<=g&&g<=49687||49689<=g&&g<=49715||49717<=g&&g<=49743||49745<=g&&g<=49771||49773<=g&&g<=49799||49801<=g&&g<=49827||49829<=g&&g<=49855||49857<=g&&g<=49883||49885<=g&&g<=49911||49913<=g&&g<=49939||49941<=g&&g<=49967||49969<=g&&g<=49995||49997<=g&&g<=50023||50025<=g&&g<=50051||50053<=g&&g<=50079||50081<=g&&g<=50107||50109<=g&&g<=50135||50137<=g&&g<=50163||50165<=g&&g<=50191||50193<=g&&g<=50219||50221<=g&&g<=50247||50249<=g&&g<=50275||50277<=g&&g<=50303||50305<=g&&g<=50331||50333<=g&&g<=50359||50361<=g&&g<=50387||50389<=g&&g<=50415||50417<=g&&g<=50443||50445<=g&&g<=50471||50473<=g&&g<=50499||50501<=g&&g<=50527||50529<=g&&g<=50555||50557<=g&&g<=50583||50585<=g&&g<=50611||50613<=g&&g<=50639||50641<=g&&g<=50667||50669<=g&&g<=50695||50697<=g&&g<=50723||50725<=g&&g<=50751||50753<=g&&g<=50779||50781<=g&&g<=50807||50809<=g&&g<=50835||50837<=g&&g<=50863||50865<=g&&g<=50891||50893<=g&&g<=50919||50921<=g&&g<=50947||50949<=g&&g<=50975||50977<=g&&g<=51003||51005<=g&&g<=51031||51033<=g&&g<=51059||51061<=g&&g<=51087||51089<=g&&g<=51115||51117<=g&&g<=51143||51145<=g&&g<=51171||51173<=g&&g<=51199||51201<=g&&g<=51227||51229<=g&&g<=51255||51257<=g&&g<=51283||51285<=g&&g<=51311||51313<=g&&g<=51339||51341<=g&&g<=51367||51369<=g&&g<=51395||51397<=g&&g<=51423||51425<=g&&g<=51451||51453<=g&&g<=51479||51481<=g&&g<=51507||51509<=g&&g<=51535||51537<=g&&g<=51563||51565<=g&&g<=51591||51593<=g&&g<=51619||51621<=g&&g<=51647||51649<=g&&g<=51675||51677<=g&&g<=51703||51705<=g&&g<=51731||51733<=g&&g<=51759||51761<=g&&g<=51787||51789<=g&&g<=51815||51817<=g&&g<=51843||51845<=g&&g<=51871||51873<=g&&g<=51899||51901<=g&&g<=51927||51929<=g&&g<=51955||51957<=g&&g<=51983||51985<=g&&g<=52011||52013<=g&&g<=52039||52041<=g&&g<=52067||52069<=g&&g<=52095||52097<=g&&g<=52123||52125<=g&&g<=52151||52153<=g&&g<=52179||52181<=g&&g<=52207||52209<=g&&g<=52235||52237<=g&&g<=52263||52265<=g&&g<=52291||52293<=g&&g<=52319||52321<=g&&g<=52347||52349<=g&&g<=52375||52377<=g&&g<=52403||52405<=g&&g<=52431||52433<=g&&g<=52459||52461<=g&&g<=52487||52489<=g&&g<=52515||52517<=g&&g<=52543||52545<=g&&g<=52571||52573<=g&&g<=52599||52601<=g&&g<=52627||52629<=g&&g<=52655||52657<=g&&g<=52683||52685<=g&&g<=52711||52713<=g&&g<=52739||52741<=g&&g<=52767||52769<=g&&g<=52795||52797<=g&&g<=52823||52825<=g&&g<=52851||52853<=g&&g<=52879||52881<=g&&g<=52907||52909<=g&&g<=52935||52937<=g&&g<=52963||52965<=g&&g<=52991||52993<=g&&g<=53019||53021<=g&&g<=53047||53049<=g&&g<=53075||53077<=g&&g<=53103||53105<=g&&g<=53131||53133<=g&&g<=53159||53161<=g&&g<=53187||53189<=g&&g<=53215||53217<=g&&g<=53243||53245<=g&&g<=53271||53273<=g&&g<=53299||53301<=g&&g<=53327||53329<=g&&g<=53355||53357<=g&&g<=53383||53385<=g&&g<=53411||53413<=g&&g<=53439||53441<=g&&g<=53467||53469<=g&&g<=53495||53497<=g&&g<=53523||53525<=g&&g<=53551||53553<=g&&g<=53579||53581<=g&&g<=53607||53609<=g&&g<=53635||53637<=g&&g<=53663||53665<=g&&g<=53691||53693<=g&&g<=53719||53721<=g&&g<=53747||53749<=g&&g<=53775||53777<=g&&g<=53803||53805<=g&&g<=53831||53833<=g&&g<=53859||53861<=g&&g<=53887||53889<=g&&g<=53915||53917<=g&&g<=53943||53945<=g&&g<=53971||53973<=g&&g<=53999||54001<=g&&g<=54027||54029<=g&&g<=54055||54057<=g&&g<=54083||54085<=g&&g<=54111||54113<=g&&g<=54139||54141<=g&&g<=54167||54169<=g&&g<=54195||54197<=g&&g<=54223||54225<=g&&g<=54251||54253<=g&&g<=54279||54281<=g&&g<=54307||54309<=g&&g<=54335||54337<=g&&g<=54363||54365<=g&&g<=54391||54393<=g&&g<=54419||54421<=g&&g<=54447||54449<=g&&g<=54475||54477<=g&&g<=54503||54505<=g&&g<=54531||54533<=g&&g<=54559||54561<=g&&g<=54587||54589<=g&&g<=54615||54617<=g&&g<=54643||54645<=g&&g<=54671||54673<=g&&g<=54699||54701<=g&&g<=54727||54729<=g&&g<=54755||54757<=g&&g<=54783||54785<=g&&g<=54811||54813<=g&&g<=54839||54841<=g&&g<=54867||54869<=g&&g<=54895||54897<=g&&g<=54923||54925<=g&&g<=54951||54953<=g&&g<=54979||54981<=g&&g<=55007||55009<=g&&g<=55035||55037<=g&&g<=55063||55065<=g&&g<=55091||55093<=g&&g<=55119||55121<=g&&g<=55147||55149<=g&&g<=55175||55177<=g&&g<=55203?E:g==9757||g==9977||9994<=g&&g<=9997||g==127877||127938<=g&&g<=127940||g==127943||127946<=g&&g<=127948||128066<=g&&g<=128067||128070<=g&&g<=128080||g==128110||128112<=g&&g<=128120||g==128124||128129<=g&&g<=128131||128133<=g&&g<=128135||g==128170||128372<=g&&g<=128373||g==128378||g==128400||128405<=g&&g<=128406||128581<=g&&g<=128583||128587<=g&&g<=128591||g==128675||128692<=g&&g<=128694||g==128704||g==128716||129304<=g&&g<=129308||129310<=g&&g<=129311||g==129318||129328<=g&&g<=129337||129341<=g&&g<=129342||129489<=g&&g<=129501?x:127995<=g&&g<=127999?I:g==8205?T:g==9792||g==9794||9877<=g&&g<=9878||g==9992||g==10084||g==127752||g==127806||g==127859||g==127891||g==127908||g==127912||g==127979||g==127981||g==128139||128187<=g&&g<=128188||g==128295||g==128300||g==128488||g==128640||g==128658?O:128102<=g&&g<=128105?U:C}return this}typeof RR<\"u\"&&RR.exports&&(RR.exports=qtt)});var ppe=G((_Mt,Ape)=>{var Wtt=/^(.*?)(\\x1b\\[[^m]+m|\\x1b\\]8;;.*?(\\x1b\\\\|\\u0007))/,TR;function Vtt(){if(TR)return TR;if(typeof Intl.Segmenter<\"u\"){let e=new Intl.Segmenter(\"en\",{granularity:\"grapheme\"});return TR=t=>Array.from(e.segment(t),({segment:r})=>r)}else{let e=fpe(),t=new e;return TR=r=>t.splitGraphemes(r)}}Ape.exports=(e,t=0,r=e.length)=>{if(t<0||r<0)throw new RangeError(\"Negative indices aren't supported by this implementation\");let s=r-t,a=\"\",n=0,c=0;for(;e.length>0;){let f=e.match(Wtt)||[e,e,void 0],p=Vtt()(f[1]),h=Math.min(t-n,p.length);p=p.slice(h);let E=Math.min(s-c,p.length);a+=p.slice(0,E).join(\"\"),n+=h,c+=E,typeof f[2]<\"u\"&&(a+=f[2]),e=e.slice(f[0].length)}return a}});var An,uv=Ze(()=>{An=process.env.YARN_IS_TEST_ENV?\"0.0.0\":\"4.13.0\"});function Epe(e,{configuration:t,json:r}){if(!t.get(\"enableMessageNames\"))return\"\";let a=Kf(e===null?0:e);return!r&&e===null?jt(t,a,\"grey\"):a}function xj(e,{configuration:t,json:r}){let s=Epe(e,{configuration:t,json:r});if(!s||e===null||e===0)return s;let a=Br[e],n=`https://yarnpkg.com/advanced/error-codes#${s}---${a}`.toLowerCase();return XE(t,s,n)}async function PI({configuration:e,stdout:t,forceError:r},s){let a=await Ot.start({configuration:e,stdout:t,includeFooter:!1},async n=>{let c=!1,f=!1;for(let p of s)typeof p.option<\"u\"&&(p.error||r?(f=!0,n.reportError(50,p.message)):(c=!0,n.reportWarning(50,p.message)),p.callback?.());c&&!f&&n.reportSeparator()});return a.hasErrors()?a.exitCode():null}var mpe,FR,Ytt,hpe,gpe,v0,ype,dpe,Ktt,Jtt,NR,ztt,Ot,fv=Ze(()=>{mpe=et(ppe()),FR=et(Rd());Gx();Tc();uv();kc();Ytt=\"\\xB7\",hpe=[\"\\u280B\",\"\\u2819\",\"\\u2839\",\"\\u2838\",\"\\u283C\",\"\\u2834\",\"\\u2826\",\"\\u2827\",\"\\u2807\",\"\\u280F\"],gpe=80,v0=FR.default.GITHUB_ACTIONS?{start:e=>`::group::${e}\n`,end:e=>`::endgroup::\n`}:FR.default.TRAVIS?{start:e=>`travis_fold:start:${e}\n`,end:e=>`travis_fold:end:${e}\n`}:FR.default.GITLAB?{start:e=>`section_start:${Math.floor(Date.now()/1e3)}:${e.toLowerCase().replace(/\\W+/g,\"_\")}[collapsed=true]\\r\\x1B[0K${e}\n`,end:e=>`section_end:${Math.floor(Date.now()/1e3)}:${e.toLowerCase().replace(/\\W+/g,\"_\")}\\r\\x1B[0K`}:null,ype=v0!==null,dpe=new Date,Ktt=[\"iTerm.app\",\"Apple_Terminal\",\"WarpTerminal\",\"vscode\"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,Jtt=e=>e,NR=Jtt({patrick:{date:[17,3],chars:[\"\\u{1F340}\",\"\\u{1F331}\"],size:40},simba:{date:[19,7],chars:[\"\\u{1F981}\",\"\\u{1F334}\"],size:40},jack:{date:[31,10],chars:[\"\\u{1F383}\",\"\\u{1F987}\"],size:40},hogsfather:{date:[31,12],chars:[\"\\u{1F389}\",\"\\u{1F384}\"],size:40},default:{chars:[\"=\",\"-\"],size:80}}),ztt=Ktt&&Object.keys(NR).find(e=>{let t=NR[e];return!(t.date&&(t.date[0]!==dpe.getDate()||t.date[1]!==dpe.getMonth()+1))})||\"default\";Ot=class extends yo{constructor({configuration:r,stdout:s,json:a=!1,forceSectionAlignment:n=!1,includeNames:c=!0,includePrefix:f=!0,includeFooter:p=!0,includeLogs:h=!a,includeInfos:E=h,includeWarnings:C=h}){super();this.uncommitted=new Set;this.warningCount=0;this.errorCount=0;this.timerFooter=[];this.startTime=Date.now();this.indent=0;this.level=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;if(S2(this,{configuration:r}),this.configuration=r,this.forceSectionAlignment=n,this.includeNames=c,this.includePrefix=f,this.includeFooter=p,this.includeInfos=E,this.includeWarnings=C,this.json=a,this.stdout=s,r.get(\"enableProgressBars\")&&!a&&s.isTTY&&s.columns>22){let S=r.get(\"progressBarStyle\")||ztt;if(!Object.hasOwn(NR,S))throw new Error(\"Assertion failed: Invalid progress bar style\");this.progressStyle=NR[S];let x=Math.min(this.getRecommendedLength(),80);this.progressMaxScaledSize=Math.floor(this.progressStyle.size*x/80)}}static async start(r,s){let a=new this(r),n=process.emitWarning;process.emitWarning=(c,f)=>{if(typeof c!=\"string\"){let h=c;c=h.message,f=f??h.name}let p=typeof f<\"u\"?`${f}: ${c}`:c;a.reportWarning(0,p)},r.includeVersion&&a.reportInfo(0,Kd(r.configuration,`Yarn ${An}`,2));try{await s(a)}catch(c){a.reportExceptionOnce(c)}finally{await a.finalize(),process.emitWarning=n}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}getRecommendedLength(){let s=this.progressStyle!==null?this.stdout.columns-1:super.getRecommendedLength();return Math.max(40,s-12-this.indent*2)}startSectionSync({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(c),c.committed&&s?.(p-f)}}async startSectionPromise({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return await n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(c),c.committed&&s?.(p-f)}}startTimerImpl(r,s,a){return{cb:typeof s==\"function\"?s:a,reportHeader:()=>{this.level+=1,this.reportInfo(null,`\\u250C ${r}`),this.indent+=1,v0!==null&&!this.json&&this.includeInfos&&this.stdout.write(v0.start(r))},reportFooter:f=>{if(this.indent-=1,v0!==null&&!this.json&&this.includeInfos){this.stdout.write(v0.end(r));for(let p of this.timerFooter)p()}this.configuration.get(\"enableTimers\")&&f>200?this.reportInfo(null,`\\u2514 Completed in ${jt(this.configuration,f,gt.DURATION)}`):this.reportInfo(null,\"\\u2514 Completed\"),this.level-=1},skipIfEmpty:(typeof s==\"function\"?{}:s).skipIfEmpty}}startTimerSync(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return this.startSectionSync(c,n)}async startTimerPromise(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return this.startSectionPromise(c,n)}reportSeparator(){this.indent===0?this.writeLine(\"\"):this.reportInfo(null,\"\")}reportInfo(r,s){if(!this.includeInfos)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\",c=`${this.formatPrefix(n,\"blueBright\")}${s}`;this.json?this.reportJson({type:\"info\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(c)}reportWarning(r,s){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\";this.json?this.reportJson({type:\"warning\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,\"yellowBright\")}${s}`)}reportError(r,s){this.errorCount+=1,this.timerFooter.push(()=>this.reportErrorImpl(r,s)),this.reportErrorImpl(r,s)}reportErrorImpl(r,s){this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\";this.json?this.reportJson({type:\"error\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,\"redBright\")}${s}`,{truncate:!1})}reportFold(r,s){if(!v0)return;let a=`${v0.start(r)}${s}${v0.end(r)}`;this.timerFooter.push(()=>this.stdout.write(a))}reportProgress(r){if(this.progressStyle===null)return{...Promise.resolve(),stop:()=>{}};if(r.hasProgress&&r.hasTitle)throw new Error(\"Unimplemented: Progress bars can't have both progress and titles.\");let s=!1,a=Promise.resolve().then(async()=>{let c={progress:r.hasProgress?0:void 0,title:r.hasTitle?\"\":void 0};this.progress.set(r,{definition:c,lastScaledSize:r.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:f,title:p}of r)s||c.progress===f&&c.title===p||(c.progress=f,c.title=p,this.refreshProgress());n()}),n=()=>{s||(s=!0,this.progress.delete(r),this.refreshProgress({delta:1}))};return{...a,stop:n}}reportJson(r){this.json&&this.writeLine(`${JSON.stringify(r)}`)}async finalize(){if(!this.includeFooter)return;let r=\"\";this.errorCount>0?r=\"Failed with errors\":this.warningCount>0?r=\"Done with warnings\":r=\"Done\";let s=jt(this.configuration,Date.now()-this.startTime,gt.DURATION),a=this.configuration.get(\"enableTimers\")?`${r} in ${s}`:r;this.errorCount>0?this.reportError(0,a):this.warningCount>0?this.reportWarning(0,a):this.reportInfo(0,a)}writeLine(r,{truncate:s}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(r,{truncate:s})}\n`),this.writeProgress()}writeLines(r,{truncate:s}={}){this.clearProgress({delta:r.length});for(let a of r)this.stdout.write(`${this.truncate(a,{truncate:s})}\n`);this.writeProgress()}commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let s of r)s.committed=!0,s.action()}clearProgress({delta:r=0,clear:s=!1}){this.progressStyle!==null&&this.progress.size+r>0&&(this.stdout.write(`\\x1B[${this.progress.size+r}A`),(r>0||s)&&this.stdout.write(\"\\x1B[0J\"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let r=Date.now();r-this.progressTime>gpe&&(this.progressFrame=(this.progressFrame+1)%hpe.length,this.progressTime=r);let s=hpe[this.progressFrame];for(let a of this.progress.values()){let n=\"\";if(typeof a.lastScaledSize<\"u\"){let h=this.progressStyle.chars[0].repeat(a.lastScaledSize),E=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-a.lastScaledSize);n=` ${h}${E}`}let c=this.formatName(null),f=c?`${c}: `:\"\",p=a.definition.title?` ${a.definition.title}`:\"\";this.stdout.write(`${jt(this.configuration,\"\\u27A4\",\"blueBright\")} ${f}${s}${n}${p}\n`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},gpe)}refreshProgress({delta:r=0,force:s=!1}={}){let a=!1,n=!1;if(s||this.progress.size===0)a=!0;else for(let c of this.progress.values()){let f=typeof c.definition.progress<\"u\"?Math.trunc(this.progressMaxScaledSize*c.definition.progress):void 0,p=c.lastScaledSize;c.lastScaledSize=f;let h=c.lastTitle;if(c.lastTitle=c.definition.title,f!==p||(n=h!==c.definition.title)){a=!0;break}}a&&(this.clearProgress({delta:r,clear:n}),this.writeProgress())}truncate(r,{truncate:s}={}){return this.progressStyle===null&&(s=!1),typeof s>\"u\"&&(s=this.configuration.get(\"preferTruncatedLines\")),s&&(r=(0,mpe.default)(r,0,this.stdout.columns-1)),r}formatName(r){return this.includeNames?Epe(r,{configuration:this.configuration,json:this.json}):\"\"}formatPrefix(r,s){return this.includePrefix?`${jt(this.configuration,\"\\u27A4\",s)} ${r}${this.formatIndent()}`:\"\"}formatNameWithHyperlink(r){return this.includeNames?xj(r,{configuration:this.configuration,json:this.json}):\"\"}formatIndent(){return this.level>0||!this.forceSectionAlignment?\"\\u2502 \".repeat(this.indent):`${Ytt} `}}});var Cn={};Yt(Cn,{PackageManager:()=>Cpe,detectPackageManager:()=>wpe,executePackageAccessibleBinary:()=>bpe,executePackageScript:()=>OR,executePackageShellcode:()=>kj,executeWorkspaceAccessibleBinary:()=>nrt,executeWorkspaceLifecycleScript:()=>Spe,executeWorkspaceScript:()=>vpe,getPackageAccessibleBinaries:()=>LR,getWorkspaceAccessibleBinaries:()=>Dpe,hasPackageScript:()=>ert,hasWorkspaceScript:()=>Qj,isNodeScript:()=>Rj,makeScriptEnv:()=>Av,maybeExecuteWorkspaceLifecycleScript:()=>rrt,prepareExternalProject:()=>$tt});async function S0(e,t,r,s=[]){if(process.platform===\"win32\"){let a=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @\"${r}\" ${s.map(n=>`\"${n.replace('\"','\"\"')}\"`).join(\" \")} %*`;await le.writeFilePromise(K.format({dir:e,name:t,ext:\".cmd\"}),a)}await le.writeFilePromise(K.join(e,t),`#!/bin/sh\nexec \"${r}\" ${s.map(a=>`'${a.replace(/'/g,`'\"'\"'`)}'`).join(\" \")} \"$@\"\n`,{mode:493})}async function wpe(e){let t=await Ut.tryFind(e);if(t?.packageManager){let s=PQ(t.packageManager);if(s?.name){let a=`found ${JSON.stringify({packageManager:t.packageManager})} in manifest`,[n]=s.reference.split(\".\");switch(s.name){case\"yarn\":return{packageManagerField:!0,packageManager:Number(n)===1?\"Yarn Classic\":\"Yarn\",reason:a};case\"npm\":return{packageManagerField:!0,packageManager:\"npm\",reason:a};case\"pnpm\":return{packageManagerField:!0,packageManager:\"pnpm\",reason:a}}}}let r;try{r=await le.readFilePromise(K.join(e,Er.lockfile),\"utf8\")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:\"Yarn\",reason:'\"__metadata\" key found in yarn.lock'}:{packageManager:\"Yarn Classic\",reason:'\"__metadata\" key not found in yarn.lock, must be a Yarn classic lockfile'}:le.existsSync(K.join(e,\"package-lock.json\"))?{packageManager:\"npm\",reason:`found npm's \"package-lock.json\" lockfile`}:le.existsSync(K.join(e,\"pnpm-lock.yaml\"))?{packageManager:\"pnpm\",reason:`found pnpm's \"pnpm-lock.yaml\" lockfile`}:null}async function Av({project:e,locator:t,binFolder:r,ignoreCorepack:s,lifecycleScript:a,baseEnv:n=e?.configuration.env??process.env}){let c={};for(let[E,C]of Object.entries(n))typeof C<\"u\"&&(c[E.toLowerCase()!==\"path\"?E:\"PATH\"]=C);let f=fe.fromPortablePath(r);c.BERRY_BIN_FOLDER=fe.fromPortablePath(f);let p=process.env.COREPACK_ROOT&&!s?fe.join(process.env.COREPACK_ROOT,\"dist/yarn.js\"):process.argv[1];if(await Promise.all([S0(r,\"node\",process.execPath),...An!==null?[S0(r,\"run\",process.execPath,[p,\"run\"]),S0(r,\"yarn\",process.execPath,[p]),S0(r,\"yarnpkg\",process.execPath,[p]),S0(r,\"node-gyp\",process.execPath,[p,\"run\",\"--top-level\",\"node-gyp\"])]:[]]),e&&(c.INIT_CWD=fe.fromPortablePath(e.configuration.startingCwd),c.PROJECT_CWD=fe.fromPortablePath(e.cwd)),c.PATH=c.PATH?`${f}${fe.delimiter}${c.PATH}`:`${f}`,c.npm_execpath=`${f}${fe.sep}yarn`,c.npm_node_execpath=`${f}${fe.sep}node`,t){if(!e)throw new Error(\"Assertion failed: Missing project\");let E=e.tryWorkspaceByLocator(t),C=E?E.manifest.version??\"\":e.storedPackages.get(t.locatorHash).version??\"\";c.npm_package_name=fn(t),c.npm_package_version=C;let S;if(E)S=E.cwd;else{let x=e.storedPackages.get(t.locatorHash);if(!x)throw new Error(`Package for ${Vr(e.configuration,t)} not found in the project`);let I=e.configuration.getLinkers(),T={project:e,report:new Ot({stdout:new D0.PassThrough,configuration:e.configuration})},O=I.find(U=>U.supportsPackage(x,T));if(!O)throw new Error(`The package ${Vr(e.configuration,x)} isn't supported by any of the available linkers`);S=await O.findPackageLocation(x,T)}c.npm_package_json=fe.fromPortablePath(K.join(S,Er.manifest))}let h=An!==null?`yarn/${An}`:`yarn/${xp(\"@yarnpkg/core\").version}-core`;return c.npm_config_user_agent=`${h} npm/? node/${process.version} ${process.platform} ${process.arch}`,a&&(c.npm_lifecycle_event=a),e&&await e.configuration.triggerHook(E=>E.setupScriptEnvironment,e,c,async(E,C,S)=>await S0(r,E,C,S)),c}async function $tt(e,t,{configuration:r,report:s,workspace:a=null,locator:n=null}){await Xtt(async()=>{await le.mktempPromise(async c=>{let f=K.join(c,\"pack.log\"),p=null,{stdout:h,stderr:E}=r.getSubprocessStreams(f,{prefix:fe.fromPortablePath(e),report:s}),C=n&&Hu(n)?sI(n):n,S=C?gl(C):\"an external project\";h.write(`Packing ${S} from sources\n`);let x=await wpe(e),I;x!==null?(h.write(`Using ${x.packageManager} for bootstrap. Reason: ${x.reason}\n\n`),I=x.packageManager):(h.write(`No package manager configuration detected; defaulting to Yarn\n\n`),I=\"Yarn\");let T=I===\"Yarn\"&&!x?.packageManagerField;await le.mktempPromise(async O=>{let U=await Av({binFolder:O,ignoreCorepack:T,baseEnv:{...process.env,COREPACK_ENABLE_AUTO_PIN:\"0\"}}),te=new Map([[\"Yarn Classic\",async()=>{let ue=a!==null?[\"workspace\",a]:[],ae=K.join(e,Er.manifest),de=await le.readFilePromise(ae),Ae=await Gu(process.execPath,[process.argv[1],\"set\",\"version\",\"classic\",\"--only-if-needed\",\"--yarn-path\"],{cwd:e,env:U,stdin:p,stdout:h,stderr:E,end:1});if(Ae.code!==0)return Ae.code;await le.writeFilePromise(ae,de),await le.appendFilePromise(K.join(e,\".npmignore\"),`/.yarn\n`),h.write(`\n`),delete U.NODE_ENV;let Ce=await Gu(\"yarn\",[\"install\"],{cwd:e,env:U,stdin:p,stdout:h,stderr:E,end:1});if(Ce.code!==0)return Ce.code;h.write(`\n`);let Ee=await Gu(\"yarn\",[...ue,\"pack\",\"--filename\",fe.fromPortablePath(t)],{cwd:e,env:U,stdin:p,stdout:h,stderr:E});return Ee.code!==0?Ee.code:0}],[\"Yarn\",async()=>{let ue=a!==null?[\"workspace\",a]:[];U.YARN_ENABLE_INLINE_BUILDS=\"1\";let ae=K.join(e,Er.lockfile);await le.existsPromise(ae)||await le.writeFilePromise(ae,\"\");let de=await Gu(\"yarn\",[...ue,\"pack\",\"--install-if-needed\",\"--filename\",fe.fromPortablePath(t)],{cwd:e,env:U,stdin:p,stdout:h,stderr:E});return de.code!==0?de.code:0}],[\"npm\",async()=>{if(a!==null){let Se=new D0.PassThrough,Be=KE(Se);Se.pipe(h,{end:!1});let me=await Gu(\"npm\",[\"--version\"],{cwd:e,env:U,stdin:p,stdout:Se,stderr:E,end:0});if(Se.end(),me.code!==0)return h.end(),E.end(),me.code;let ce=(await Be).toString().trim();if(!eA(ce,\">=7.x\")){let X=xa(null,\"npm\"),De=Mn(X,ce),Qe=Mn(X,\">=7.x\");throw new Error(`Workspaces aren't supported by ${oi(r,De)}; please upgrade to ${oi(r,Qe)} (npm has been detected as the primary package manager for ${jt(r,e,gt.PATH)})`)}}let ue=a!==null?[\"--workspace\",a]:[];delete U.npm_config_user_agent,delete U.npm_config_production,delete U.NPM_CONFIG_PRODUCTION,delete U.NODE_ENV;let ae=await Gu(\"npm\",[\"install\",\"--legacy-peer-deps\"],{cwd:e,env:U,stdin:p,stdout:h,stderr:E,end:1});if(ae.code!==0)return ae.code;let de=new D0.PassThrough,Ae=KE(de);de.pipe(h);let Ce=await Gu(\"npm\",[\"pack\",\"--silent\",...ue],{cwd:e,env:U,stdin:p,stdout:de,stderr:E});if(Ce.code!==0)return Ce.code;let Ee=(await Ae).toString().trim().replace(/^.*\\n/s,\"\"),g=K.resolve(e,fe.toPortablePath(Ee));return await le.renamePromise(g,t),0}]]).get(I);if(typeof te>\"u\")throw new Error(\"Assertion failed: Unsupported workflow\");let ie=await te();if(!(ie===0||typeof ie>\"u\"))throw le.detachTemp(c),new _t(58,`Packing the package failed (exit code ${ie}, logs can be found here: ${jt(r,f,gt.PATH)})`)})})})}async function ert(e,t,{project:r}){let s=r.tryWorkspaceByLocator(e);if(s!==null)return Qj(s,t);let a=r.storedPackages.get(e.locatorHash);if(!a)throw new Error(`Package for ${Vr(r.configuration,e)} not found in the project`);return await tA.openPromise(async n=>{let c=r.configuration,f=r.configuration.getLinkers(),p={project:r,report:new Ot({stdout:new D0.PassThrough,configuration:c})},h=f.find(x=>x.supportsPackage(a,p));if(!h)throw new Error(`The package ${Vr(r.configuration,a)} isn't supported by any of the available linkers`);let E=await h.findPackageLocation(a,p),C=new bn(E,{baseFs:n});return(await Ut.find(vt.dot,{baseFs:C})).scripts.has(t)})}async function OR(e,t,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){return await le.mktempPromise(async p=>{let{manifest:h,env:E,cwd:C}=await Bpe(e,{project:a,binFolder:p,cwd:s,lifecycleScript:t}),S=h.scripts.get(t);if(typeof S>\"u\")return 1;let x=async()=>await bI(S,r,{cwd:C,env:E,stdin:n,stdout:c,stderr:f});return await(await a.configuration.reduceHook(T=>T.wrapScriptExecution,x,a,e,t,{script:S,args:r,cwd:C,env:E,stdin:n,stdout:c,stderr:f}))()})}async function kj(e,t,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){return await le.mktempPromise(async p=>{let{env:h,cwd:E}=await Bpe(e,{project:a,binFolder:p,cwd:s});return await bI(t,r,{cwd:E,env:h,stdin:n,stdout:c,stderr:f})})}async function trt(e,{binFolder:t,cwd:r,lifecycleScript:s}){let a=await Av({project:e.project,locator:e.anchoredLocator,binFolder:t,lifecycleScript:s});return await Tj(t,await Dpe(e)),typeof r>\"u\"&&(r=K.dirname(await le.realpathPromise(K.join(e.cwd,\"package.json\")))),{manifest:e.manifest,binFolder:t,env:a,cwd:r}}async function Bpe(e,{project:t,binFolder:r,cwd:s,lifecycleScript:a}){let n=t.tryWorkspaceByLocator(e);if(n!==null)return trt(n,{binFolder:r,cwd:s,lifecycleScript:a});let c=t.storedPackages.get(e.locatorHash);if(!c)throw new Error(`Package for ${Vr(t.configuration,e)} not found in the project`);return await tA.openPromise(async f=>{let p=t.configuration,h=t.configuration.getLinkers(),E={project:t,report:new Ot({stdout:new D0.PassThrough,configuration:p})},C=h.find(O=>O.supportsPackage(c,E));if(!C)throw new Error(`The package ${Vr(t.configuration,c)} isn't supported by any of the available linkers`);let S=await Av({project:t,locator:e,binFolder:r,lifecycleScript:a});await Tj(r,await LR(e,{project:t}));let x=await C.findPackageLocation(c,E),I=new bn(x,{baseFs:f}),T=await Ut.find(vt.dot,{baseFs:I});return typeof s>\"u\"&&(s=x),{manifest:T,binFolder:r,env:S,cwd:s}})}async function vpe(e,t,r,{cwd:s,stdin:a,stdout:n,stderr:c}){return await OR(e.anchoredLocator,t,r,{cwd:s,project:e.project,stdin:a,stdout:n,stderr:c})}function Qj(e,t){return e.manifest.scripts.has(t)}async function Spe(e,t,{cwd:r,report:s}){let{configuration:a}=e.project,n=null;await le.mktempPromise(async c=>{let f=K.join(c,`${t}.log`),p=`# This file contains the result of Yarn calling the \"${t}\" lifecycle script inside a workspace (\"${fe.fromPortablePath(e.cwd)}\")\n`,{stdout:h,stderr:E}=a.getSubprocessStreams(f,{report:s,prefix:Vr(a,e.anchoredLocator),header:p});s.reportInfo(36,`Calling the \"${t}\" lifecycle script`);let C=await vpe(e,t,[],{cwd:r,stdin:n,stdout:h,stderr:E});if(h.end(),E.end(),C!==0)throw le.detachTemp(c),new _t(36,`${E2(t)} script failed (exit code ${jt(a,C,gt.NUMBER)}, logs can be found here: ${jt(a,f,gt.PATH)}); run ${jt(a,`yarn ${t}`,gt.CODE)} to investigate`)})}async function rrt(e,t,r){Qj(e,t)&&await Spe(e,t,r)}function Rj(e){let t=K.extname(e);if(t.match(/\\.[cm]?[jt]sx?$/))return!0;if(t===\".exe\"||t===\".bin\")return!1;let r=Buffer.alloc(4),s;try{s=le.openSync(e,\"r\")}catch{return!0}try{le.readSync(s,r,0,r.length,0)}finally{le.closeSync(s)}let a=r.readUint32BE();return!(a===3405691582||a===3489328638||a===2135247942||(a&4294901760)===1297743872)}async function LR(e,{project:t}){let r=t.configuration,s=new Map,a=t.storedPackages.get(e.locatorHash);if(!a)throw new Error(`Package for ${Vr(r,e)} not found in the project`);let n=new D0.Writable,c=r.getLinkers(),f={project:t,report:new Ot({configuration:r,stdout:n})},p=new Set([e.locatorHash]);for(let E of a.dependencies.values()){let C=t.storedResolutions.get(E.descriptorHash);if(!C)throw new Error(`Assertion failed: The resolution (${oi(r,E)}) should have been registered`);p.add(C)}let h=await Promise.all(Array.from(p,async E=>{let C=t.storedPackages.get(E);if(!C)throw new Error(`Assertion failed: The package (${E}) should have been registered`);if(C.bin.size===0)return zl.skip;let S=c.find(I=>I.supportsPackage(C,f));if(!S)return zl.skip;let x=null;try{x=await S.findPackageLocation(C,f)}catch(I){if(I.code===\"LOCATOR_NOT_INSTALLED\")return zl.skip;throw I}return{dependency:C,packageLocation:x}}));for(let E of h){if(E===zl.skip)continue;let{dependency:C,packageLocation:S}=E;for(let[x,I]of C.bin){let T=K.resolve(S,I);s.set(x,[C,fe.fromPortablePath(T),Rj(T)])}}return s}async function Dpe(e){return await LR(e.anchoredLocator,{project:e.project})}async function Tj(e,t){await Promise.all(Array.from(t,([r,[,s,a]])=>a?S0(e,r,process.execPath,[s]):S0(e,r,s,[])))}async function bpe(e,t,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f,nodeArgs:p=[],packageAccessibleBinaries:h}){h??=await LR(e,{project:a});let E=h.get(t);if(!E)throw new Error(`Binary not found (${t}) for ${Vr(a.configuration,e)}`);return await le.mktempPromise(async C=>{let[,S]=E,x=await Av({project:a,locator:e,binFolder:C});await Tj(x.BERRY_BIN_FOLDER,h);let I=Rj(fe.toPortablePath(S))?Gu(process.execPath,[...p,S,...r],{cwd:s,env:x,stdin:n,stdout:c,stderr:f}):Gu(S,r,{cwd:s,env:x,stdin:n,stdout:c,stderr:f}),T;try{T=await I}finally{await le.removePromise(x.BERRY_BIN_FOLDER)}return T.code})}async function nrt(e,t,r,{cwd:s,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f}){return await bpe(e.anchoredLocator,t,r,{project:e.project,cwd:s,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f})}var Ipe,D0,Cpe,Ztt,Xtt,Fj=Ze(()=>{Dt();Dt();rA();sv();Jl();Ipe=et(Nd()),D0=Ie(\"stream\");cI();Tc();fv();uv();gR();kc();xc();Fp();Zo();Cpe=(a=>(a.Yarn1=\"Yarn Classic\",a.Yarn2=\"Yarn\",a.Npm=\"npm\",a.Pnpm=\"pnpm\",a))(Cpe||{});Ztt=2,Xtt=(0,Ipe.default)(Ztt)});function dnt(e,t,r){let s=t,a=t?t.next:e.head,n=new M6(r,s,a,e);return n.next===void 0&&(e.tail=n),n.prev===void 0&&(e.head=n),e.length++,n}function mnt(e,t){e.tail=new M6(t,e.tail,void 0,e),e.head||(e.head=e.tail),e.length++}function ynt(e,t){e.head=new M6(t,void 0,e.head,e),e.tail||(e.tail=e.head),e.length++}var ihe,Fa,pT,k6,she,R6,Em,gT,lhe,cT,N0,Rpe,che,ym,ghe,Fv,Yu,A6,Ihe,I6,_6,Dhe,H6,wn,gs,j6,Lv,MI,yl,Qhe,Nv,G6,ml,W6,irt,srt,Ppe,ort,art,lrt,Hp,jp,b0,MR,pv,UR,xpe,_R,kpe,qu,xI,Js,hv,TI,zs,Ta,Zs,Nj,HR,ta,es,Oj,Lj,Qpe,Mj,iA,Uj,jR,gv,cm,ec,dv,crt,urt,frt,Art,ohe,prt,hrt,grt,vm,drt,L0,Ju,mv,Kn,_j,Vp,Hj,l6,c6,bv,GR,LI,UI,jj,FI,M0,Ku,Q0,sA,NI,Gj,Wp,yv,qj,XR,um,$R,Im,Q6,mrt,hT,ahe,yrt,Ert,Irt,Crt,wrt,Brt,vrt,T6,Ov,Srt,lA,Drt,Tpe,brt,Wj,Cm,qR,Vj,F6,uhe,Prt,xrt,fhe,krt,Qrt,Ahe,Rrt,Trt,Frt,Nrt,Ort,Lrt,Mrt,Urt,phe,hhe,_rt,eT,Hrt,dT,N6,wm,jrt,fm,Yj,Grt,R0,qrt,Wrt,Vrt,T0,Yrt,Krt,Jrt,Kj,zrt,Am,uT,Zrt,Xrt,$rt,ent,cn,mhe,mT,tnt,u6,f6,rnt,Mc,pm,Gp,Jj,Fpe,oA,Ev,P0,Npe,Ci,qp,x0,zj,hm,hs,WR,VR,Zj,Ope,Lpe,Iv,Xj,YR,kI,k0,KR,gm,JR,zR,Mpe,nnt,Bm,Pv,int,yhe,snt,ont,yT,Ehe,ant,Upe,O6,ET,L6,lnt,cnt,_pe,unt,Che,fnt,Hpe,jpe,Gpe,p6,qpe,Cv,tT,h6,rT,g6,d6,m6,y6,F0,fT,E6,$j,aA,whe,Ant,pnt,hnt,gnt,M6,Wpe,Vpe,nT,wv,Wu,dm,mm,Bv,e6,Vu,t6,iT,Ype,C6,w6,sT,oT,Kpe,r6,aT,Bhe,n6,IT,U6,Ent,Int,vhe,She,Cnt,wnt,lUt,Bnt,vnt,Snt,Dnt,bnt,bhe,Pnt,xnt,knt,Phe,B6,AT,Qnt,xhe,Rnt,khe,Rhe,CT,Tnt,Fnt,v6,The,Nnt,Ont,i6,Jpe,QI,Lnt,Mnt,Unt,_nt,Hnt,jnt,zpe,S6,Zpe,D6,Uc,b6,P6,lT,Xpe,$pe,Dv,ehe,the,s6,O0,Xs,ZR,rhe,RI,o6,a6,x6,xv,kv,Qv,Rv,Gnt,Tv,qnt,Wnt,Vnt,nhe,q6,vv,Fhe,Ynt,Knt,cUt,Jnt,znt,Znt,Xnt,$nt,Sv,uUt,eit,Nhe=Ze(()=>{ihe=et(Ie(\"events\"),1),Fa=et(Ie(\"fs\"),1),pT=Ie(\"node:events\"),k6=et(Ie(\"node:stream\"),1),she=Ie(\"node:string_decoder\"),R6=et(Ie(\"node:path\"),1),Em=et(Ie(\"node:fs\"),1),gT=Ie(\"path\"),lhe=Ie(\"events\"),cT=et(Ie(\"assert\"),1),N0=Ie(\"buffer\"),Rpe=et(Ie(\"zlib\"),1),che=et(Ie(\"zlib\"),1),ym=Ie(\"node:path\"),ghe=Ie(\"node:path\"),Fv=et(Ie(\"fs\"),1),Yu=et(Ie(\"fs\"),1),A6=et(Ie(\"path\"),1),Ihe=Ie(\"node:path\"),I6=et(Ie(\"path\"),1),_6=et(Ie(\"node:fs\"),1),Dhe=et(Ie(\"node:assert\"),1),H6=Ie(\"node:crypto\"),wn=et(Ie(\"node:fs\"),1),gs=et(Ie(\"node:path\"),1),j6=et(Ie(\"fs\"),1),Lv=et(Ie(\"node:fs\"),1),MI=et(Ie(\"node:path\"),1),yl=et(Ie(\"node:fs\"),1),Qhe=et(Ie(\"node:fs/promises\"),1),Nv=et(Ie(\"node:path\"),1),G6=Ie(\"node:path\"),ml=et(Ie(\"node:fs\"),1),W6=et(Ie(\"node:path\"),1),irt=Object.defineProperty,srt=(e,t)=>{for(var r in t)irt(e,r,{get:t[r],enumerable:!0})},Ppe=typeof process==\"object\"&&process?process:{stdout:null,stderr:null},ort=e=>!!e&&typeof e==\"object\"&&(e instanceof vm||e instanceof k6.default||art(e)||lrt(e)),art=e=>!!e&&typeof e==\"object\"&&e instanceof pT.EventEmitter&&typeof e.pipe==\"function\"&&e.pipe!==k6.default.Writable.prototype.pipe,lrt=e=>!!e&&typeof e==\"object\"&&e instanceof pT.EventEmitter&&typeof e.write==\"function\"&&typeof e.end==\"function\",Hp=Symbol(\"EOF\"),jp=Symbol(\"maybeEmitEnd\"),b0=Symbol(\"emittedEnd\"),MR=Symbol(\"emittingEnd\"),pv=Symbol(\"emittedError\"),UR=Symbol(\"closed\"),xpe=Symbol(\"read\"),_R=Symbol(\"flush\"),kpe=Symbol(\"flushChunk\"),qu=Symbol(\"encoding\"),xI=Symbol(\"decoder\"),Js=Symbol(\"flowing\"),hv=Symbol(\"paused\"),TI=Symbol(\"resume\"),zs=Symbol(\"buffer\"),Ta=Symbol(\"pipes\"),Zs=Symbol(\"bufferLength\"),Nj=Symbol(\"bufferPush\"),HR=Symbol(\"bufferShift\"),ta=Symbol(\"objectMode\"),es=Symbol(\"destroyed\"),Oj=Symbol(\"error\"),Lj=Symbol(\"emitData\"),Qpe=Symbol(\"emitEnd\"),Mj=Symbol(\"emitEnd2\"),iA=Symbol(\"async\"),Uj=Symbol(\"abort\"),jR=Symbol(\"aborted\"),gv=Symbol(\"signal\"),cm=Symbol(\"dataListeners\"),ec=Symbol(\"discarded\"),dv=e=>Promise.resolve().then(e),crt=e=>e(),urt=e=>e===\"end\"||e===\"finish\"||e===\"prefinish\",frt=e=>e instanceof ArrayBuffer||!!e&&typeof e==\"object\"&&e.constructor&&e.constructor.name===\"ArrayBuffer\"&&e.byteLength>=0,Art=e=>!Buffer.isBuffer(e)&&ArrayBuffer.isView(e),ohe=class{src;dest;opts;ondrain;constructor(e,t,r){this.src=e,this.dest=t,this.opts=r,this.ondrain=()=>e[TI](),this.dest.on(\"drain\",this.ondrain)}unpipe(){this.dest.removeListener(\"drain\",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},prt=class extends ohe{unpipe(){this.src.removeListener(\"error\",this.proxyErrors),super.unpipe()}constructor(e,t,r){super(e,t,r),this.proxyErrors=s=>t.emit(\"error\",s),e.on(\"error\",this.proxyErrors)}},hrt=e=>!!e.objectMode,grt=e=>!e.objectMode&&!!e.encoding&&e.encoding!==\"buffer\",vm=class extends pT.EventEmitter{[Js]=!1;[hv]=!1;[Ta]=[];[zs]=[];[ta];[qu];[iA];[xI];[Hp]=!1;[b0]=!1;[MR]=!1;[UR]=!1;[pv]=null;[Zs]=0;[es]=!1;[gv];[jR]=!1;[cm]=0;[ec]=!1;writable=!0;readable=!0;constructor(...e){let t=e[0]||{};if(super(),t.objectMode&&typeof t.encoding==\"string\")throw new TypeError(\"Encoding and objectMode may not be used together\");hrt(t)?(this[ta]=!0,this[qu]=null):grt(t)?(this[qu]=t.encoding,this[ta]=!1):(this[ta]=!1,this[qu]=null),this[iA]=!!t.async,this[xI]=this[qu]?new she.StringDecoder(this[qu]):null,t&&t.debugExposeBuffer===!0&&Object.defineProperty(this,\"buffer\",{get:()=>this[zs]}),t&&t.debugExposePipes===!0&&Object.defineProperty(this,\"pipes\",{get:()=>this[Ta]});let{signal:r}=t;r&&(this[gv]=r,r.aborted?this[Uj]():r.addEventListener(\"abort\",()=>this[Uj]()))}get bufferLength(){return this[Zs]}get encoding(){return this[qu]}set encoding(e){throw new Error(\"Encoding must be set at instantiation time\")}setEncoding(e){throw new Error(\"Encoding must be set at instantiation time\")}get objectMode(){return this[ta]}set objectMode(e){throw new Error(\"objectMode must be set at instantiation time\")}get async(){return this[iA]}set async(e){this[iA]=this[iA]||!!e}[Uj](){this[jR]=!0,this.emit(\"abort\",this[gv]?.reason),this.destroy(this[gv]?.reason)}get aborted(){return this[jR]}set aborted(e){}write(e,t,r){if(this[jR])return!1;if(this[Hp])throw new Error(\"write after end\");if(this[es])return this.emit(\"error\",Object.assign(new Error(\"Cannot call write after a stream was destroyed\"),{code:\"ERR_STREAM_DESTROYED\"})),!0;typeof t==\"function\"&&(r=t,t=\"utf8\"),t||(t=\"utf8\");let s=this[iA]?dv:crt;if(!this[ta]&&!Buffer.isBuffer(e)){if(Art(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(frt(e))e=Buffer.from(e);else if(typeof e!=\"string\")throw new Error(\"Non-contiguous data written to non-objectMode stream\")}return this[ta]?(this[Js]&&this[Zs]!==0&&this[_R](!0),this[Js]?this.emit(\"data\",e):this[Nj](e),this[Zs]!==0&&this.emit(\"readable\"),r&&s(r),this[Js]):e.length?(typeof e==\"string\"&&!(t===this[qu]&&!this[xI]?.lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[qu]&&(e=this[xI].write(e)),this[Js]&&this[Zs]!==0&&this[_R](!0),this[Js]?this.emit(\"data\",e):this[Nj](e),this[Zs]!==0&&this.emit(\"readable\"),r&&s(r),this[Js]):(this[Zs]!==0&&this.emit(\"readable\"),r&&s(r),this[Js])}read(e){if(this[es])return null;if(this[ec]=!1,this[Zs]===0||e===0||e&&e>this[Zs])return this[jp](),null;this[ta]&&(e=null),this[zs].length>1&&!this[ta]&&(this[zs]=[this[qu]?this[zs].join(\"\"):Buffer.concat(this[zs],this[Zs])]);let t=this[xpe](e||null,this[zs][0]);return this[jp](),t}[xpe](e,t){if(this[ta])this[HR]();else{let r=t;e===r.length||e===null?this[HR]():typeof r==\"string\"?(this[zs][0]=r.slice(e),t=r.slice(0,e),this[Zs]-=e):(this[zs][0]=r.subarray(e),t=r.subarray(0,e),this[Zs]-=e)}return this.emit(\"data\",t),!this[zs].length&&!this[Hp]&&this.emit(\"drain\"),t}end(e,t,r){return typeof e==\"function\"&&(r=e,e=void 0),typeof t==\"function\"&&(r=t,t=\"utf8\"),e!==void 0&&this.write(e,t),r&&this.once(\"end\",r),this[Hp]=!0,this.writable=!1,(this[Js]||!this[hv])&&this[jp](),this}[TI](){this[es]||(!this[cm]&&!this[Ta].length&&(this[ec]=!0),this[hv]=!1,this[Js]=!0,this.emit(\"resume\"),this[zs].length?this[_R]():this[Hp]?this[jp]():this.emit(\"drain\"))}resume(){return this[TI]()}pause(){this[Js]=!1,this[hv]=!0,this[ec]=!1}get destroyed(){return this[es]}get flowing(){return this[Js]}get paused(){return this[hv]}[Nj](e){this[ta]?this[Zs]+=1:this[Zs]+=e.length,this[zs].push(e)}[HR](){return this[ta]?this[Zs]-=1:this[Zs]-=this[zs][0].length,this[zs].shift()}[_R](e=!1){do;while(this[kpe](this[HR]())&&this[zs].length);!e&&!this[zs].length&&!this[Hp]&&this.emit(\"drain\")}[kpe](e){return this.emit(\"data\",e),this[Js]}pipe(e,t){if(this[es])return e;this[ec]=!1;let r=this[b0];return t=t||{},e===Ppe.stdout||e===Ppe.stderr?t.end=!1:t.end=t.end!==!1,t.proxyErrors=!!t.proxyErrors,r?t.end&&e.end():(this[Ta].push(t.proxyErrors?new prt(this,e,t):new ohe(this,e,t)),this[iA]?dv(()=>this[TI]()):this[TI]()),e}unpipe(e){let t=this[Ta].find(r=>r.dest===e);t&&(this[Ta].length===1?(this[Js]&&this[cm]===0&&(this[Js]=!1),this[Ta]=[]):this[Ta].splice(this[Ta].indexOf(t),1),t.unpipe())}addListener(e,t){return this.on(e,t)}on(e,t){let r=super.on(e,t);if(e===\"data\")this[ec]=!1,this[cm]++,!this[Ta].length&&!this[Js]&&this[TI]();else if(e===\"readable\"&&this[Zs]!==0)super.emit(\"readable\");else if(urt(e)&&this[b0])super.emit(e),this.removeAllListeners(e);else if(e===\"error\"&&this[pv]){let s=t;this[iA]?dv(()=>s.call(this,this[pv])):s.call(this,this[pv])}return r}removeListener(e,t){return this.off(e,t)}off(e,t){let r=super.off(e,t);return e===\"data\"&&(this[cm]=this.listeners(\"data\").length,this[cm]===0&&!this[ec]&&!this[Ta].length&&(this[Js]=!1)),r}removeAllListeners(e){let t=super.removeAllListeners(e);return(e===\"data\"||e===void 0)&&(this[cm]=0,!this[ec]&&!this[Ta].length&&(this[Js]=!1)),t}get emittedEnd(){return this[b0]}[jp](){!this[MR]&&!this[b0]&&!this[es]&&this[zs].length===0&&this[Hp]&&(this[MR]=!0,this.emit(\"end\"),this.emit(\"prefinish\"),this.emit(\"finish\"),this[UR]&&this.emit(\"close\"),this[MR]=!1)}emit(e,...t){let r=t[0];if(e!==\"error\"&&e!==\"close\"&&e!==es&&this[es])return!1;if(e===\"data\")return!this[ta]&&!r?!1:this[iA]?(dv(()=>this[Lj](r)),!0):this[Lj](r);if(e===\"end\")return this[Qpe]();if(e===\"close\"){if(this[UR]=!0,!this[b0]&&!this[es])return!1;let a=super.emit(\"close\");return this.removeAllListeners(\"close\"),a}else if(e===\"error\"){this[pv]=r,super.emit(Oj,r);let a=!this[gv]||this.listeners(\"error\").length?super.emit(\"error\",r):!1;return this[jp](),a}else if(e===\"resume\"){let a=super.emit(\"resume\");return this[jp](),a}else if(e===\"finish\"||e===\"prefinish\"){let a=super.emit(e);return this.removeAllListeners(e),a}let s=super.emit(e,...t);return this[jp](),s}[Lj](e){for(let r of this[Ta])r.dest.write(e)===!1&&this.pause();let t=this[ec]?!1:super.emit(\"data\",e);return this[jp](),t}[Qpe](){return this[b0]?!1:(this[b0]=!0,this.readable=!1,this[iA]?(dv(()=>this[Mj]()),!0):this[Mj]())}[Mj](){if(this[xI]){let t=this[xI].end();if(t){for(let r of this[Ta])r.dest.write(t);this[ec]||super.emit(\"data\",t)}}for(let t of this[Ta])t.end();let e=super.emit(\"end\");return this.removeAllListeners(\"end\"),e}async collect(){let e=Object.assign([],{dataLength:0});this[ta]||(e.dataLength=0);let t=this.promise();return this.on(\"data\",r=>{e.push(r),this[ta]||(e.dataLength+=r.length)}),await t,e}async concat(){if(this[ta])throw new Error(\"cannot concat in objectMode\");let e=await this.collect();return this[qu]?e.join(\"\"):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,t)=>{this.on(es,()=>t(new Error(\"stream destroyed\"))),this.on(\"error\",r=>t(r)),this.on(\"end\",()=>e())})}[Symbol.asyncIterator](){this[ec]=!1;let e=!1,t=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return t();let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[Hp])return t();let s,a,n=h=>{this.off(\"data\",c),this.off(\"end\",f),this.off(es,p),t(),a(h)},c=h=>{this.off(\"error\",n),this.off(\"end\",f),this.off(es,p),this.pause(),s({value:h,done:!!this[Hp]})},f=()=>{this.off(\"error\",n),this.off(\"data\",c),this.off(es,p),t(),s({done:!0,value:void 0})},p=()=>n(new Error(\"stream destroyed\"));return new Promise((h,E)=>{a=E,s=h,this.once(es,p),this.once(\"error\",n),this.once(\"end\",f),this.once(\"data\",c)})},throw:t,return:t,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[ec]=!1;let e=!1,t=()=>(this.pause(),this.off(Oj,t),this.off(es,t),this.off(\"end\",t),e=!0,{done:!0,value:void 0}),r=()=>{if(e)return t();let s=this.read();return s===null?t():{done:!1,value:s}};return this.once(\"end\",t),this.once(Oj,t),this.once(es,t),{next:r,throw:t,return:t,[Symbol.iterator](){return this}}}destroy(e){if(this[es])return e?this.emit(\"error\",e):this.emit(es),this;this[es]=!0,this[ec]=!0,this[zs].length=0,this[Zs]=0;let t=this;return typeof t.close==\"function\"&&!this[UR]&&t.close(),e?this.emit(\"error\",e):this.emit(es),this}static get isStream(){return ort}},drt=Fa.default.writev,L0=Symbol(\"_autoClose\"),Ju=Symbol(\"_close\"),mv=Symbol(\"_ended\"),Kn=Symbol(\"_fd\"),_j=Symbol(\"_finished\"),Vp=Symbol(\"_flags\"),Hj=Symbol(\"_flush\"),l6=Symbol(\"_handleChunk\"),c6=Symbol(\"_makeBuf\"),bv=Symbol(\"_mode\"),GR=Symbol(\"_needDrain\"),LI=Symbol(\"_onerror\"),UI=Symbol(\"_onopen\"),jj=Symbol(\"_onread\"),FI=Symbol(\"_onwrite\"),M0=Symbol(\"_open\"),Ku=Symbol(\"_path\"),Q0=Symbol(\"_pos\"),sA=Symbol(\"_queue\"),NI=Symbol(\"_read\"),Gj=Symbol(\"_readSize\"),Wp=Symbol(\"_reading\"),yv=Symbol(\"_remain\"),qj=Symbol(\"_size\"),XR=Symbol(\"_write\"),um=Symbol(\"_writing\"),$R=Symbol(\"_defaultFlag\"),Im=Symbol(\"_errored\"),Q6=class extends vm{[Im]=!1;[Kn];[Ku];[Gj];[Wp]=!1;[qj];[yv];[L0];constructor(e,t){if(t=t||{},super(t),this.readable=!0,this.writable=!1,typeof e!=\"string\")throw new TypeError(\"path must be a string\");this[Im]=!1,this[Kn]=typeof t.fd==\"number\"?t.fd:void 0,this[Ku]=e,this[Gj]=t.readSize||16*1024*1024,this[Wp]=!1,this[qj]=typeof t.size==\"number\"?t.size:1/0,this[yv]=this[qj],this[L0]=typeof t.autoClose==\"boolean\"?t.autoClose:!0,typeof this[Kn]==\"number\"?this[NI]():this[M0]()}get fd(){return this[Kn]}get path(){return this[Ku]}write(){throw new TypeError(\"this is a readable stream\")}end(){throw new TypeError(\"this is a readable stream\")}[M0](){Fa.default.open(this[Ku],\"r\",(e,t)=>this[UI](e,t))}[UI](e,t){e?this[LI](e):(this[Kn]=t,this.emit(\"open\",t),this[NI]())}[c6](){return Buffer.allocUnsafe(Math.min(this[Gj],this[yv]))}[NI](){if(!this[Wp]){this[Wp]=!0;let e=this[c6]();if(e.length===0)return process.nextTick(()=>this[jj](null,0,e));Fa.default.read(this[Kn],e,0,e.length,null,(t,r,s)=>this[jj](t,r,s))}}[jj](e,t,r){this[Wp]=!1,e?this[LI](e):this[l6](t,r)&&this[NI]()}[Ju](){if(this[L0]&&typeof this[Kn]==\"number\"){let e=this[Kn];this[Kn]=void 0,Fa.default.close(e,t=>t?this.emit(\"error\",t):this.emit(\"close\"))}}[LI](e){this[Wp]=!0,this[Ju](),this.emit(\"error\",e)}[l6](e,t){let r=!1;return this[yv]-=e,e>0&&(r=super.write(e<t.length?t.subarray(0,e):t)),(e===0||this[yv]<=0)&&(r=!1,this[Ju](),super.end()),r}emit(e,...t){switch(e){case\"prefinish\":case\"finish\":return!1;case\"drain\":return typeof this[Kn]==\"number\"&&this[NI](),!1;case\"error\":return this[Im]?!1:(this[Im]=!0,super.emit(e,...t));default:return super.emit(e,...t)}}},mrt=class extends Q6{[M0](){let e=!0;try{this[UI](null,Fa.default.openSync(this[Ku],\"r\")),e=!1}finally{e&&this[Ju]()}}[NI](){let e=!0;try{if(!this[Wp]){this[Wp]=!0;do{let t=this[c6](),r=t.length===0?0:Fa.default.readSync(this[Kn],t,0,t.length,null);if(!this[l6](r,t))break}while(!0);this[Wp]=!1}e=!1}finally{e&&this[Ju]()}}[Ju](){if(this[L0]&&typeof this[Kn]==\"number\"){let e=this[Kn];this[Kn]=void 0,Fa.default.closeSync(e),this.emit(\"close\")}}},hT=class extends ihe.default{readable=!1;writable=!0;[Im]=!1;[um]=!1;[mv]=!1;[sA]=[];[GR]=!1;[Ku];[bv];[L0];[Kn];[$R];[Vp];[_j]=!1;[Q0];constructor(e,t){t=t||{},super(t),this[Ku]=e,this[Kn]=typeof t.fd==\"number\"?t.fd:void 0,this[bv]=t.mode===void 0?438:t.mode,this[Q0]=typeof t.start==\"number\"?t.start:void 0,this[L0]=typeof t.autoClose==\"boolean\"?t.autoClose:!0;let r=this[Q0]!==void 0?\"r+\":\"w\";this[$R]=t.flags===void 0,this[Vp]=t.flags===void 0?r:t.flags,this[Kn]===void 0&&this[M0]()}emit(e,...t){if(e===\"error\"){if(this[Im])return!1;this[Im]=!0}return super.emit(e,...t)}get fd(){return this[Kn]}get path(){return this[Ku]}[LI](e){this[Ju](),this[um]=!0,this.emit(\"error\",e)}[M0](){Fa.default.open(this[Ku],this[Vp],this[bv],(e,t)=>this[UI](e,t))}[UI](e,t){this[$R]&&this[Vp]===\"r+\"&&e&&e.code===\"ENOENT\"?(this[Vp]=\"w\",this[M0]()):e?this[LI](e):(this[Kn]=t,this.emit(\"open\",t),this[um]||this[Hj]())}end(e,t){return e&&this.write(e,t),this[mv]=!0,!this[um]&&!this[sA].length&&typeof this[Kn]==\"number\"&&this[FI](null,0),this}write(e,t){return typeof e==\"string\"&&(e=Buffer.from(e,t)),this[mv]?(this.emit(\"error\",new Error(\"write() after end()\")),!1):this[Kn]===void 0||this[um]||this[sA].length?(this[sA].push(e),this[GR]=!0,!1):(this[um]=!0,this[XR](e),!0)}[XR](e){Fa.default.write(this[Kn],e,0,e.length,this[Q0],(t,r)=>this[FI](t,r))}[FI](e,t){e?this[LI](e):(this[Q0]!==void 0&&typeof t==\"number\"&&(this[Q0]+=t),this[sA].length?this[Hj]():(this[um]=!1,this[mv]&&!this[_j]?(this[_j]=!0,this[Ju](),this.emit(\"finish\")):this[GR]&&(this[GR]=!1,this.emit(\"drain\"))))}[Hj](){if(this[sA].length===0)this[mv]&&this[FI](null,0);else if(this[sA].length===1)this[XR](this[sA].pop());else{let e=this[sA];this[sA]=[],drt(this[Kn],e,this[Q0],(t,r)=>this[FI](t,r))}}[Ju](){if(this[L0]&&typeof this[Kn]==\"number\"){let e=this[Kn];this[Kn]=void 0,Fa.default.close(e,t=>t?this.emit(\"error\",t):this.emit(\"close\"))}}},ahe=class extends hT{[M0](){let e;if(this[$R]&&this[Vp]===\"r+\")try{e=Fa.default.openSync(this[Ku],this[Vp],this[bv])}catch(t){if(t?.code===\"ENOENT\")return this[Vp]=\"w\",this[M0]();throw t}else e=Fa.default.openSync(this[Ku],this[Vp],this[bv]);this[UI](null,e)}[Ju](){if(this[L0]&&typeof this[Kn]==\"number\"){let e=this[Kn];this[Kn]=void 0,Fa.default.closeSync(e),this.emit(\"close\")}}[XR](e){let t=!0;try{this[FI](null,Fa.default.writeSync(this[Kn],e,0,e.length,this[Q0])),t=!1}finally{if(t)try{this[Ju]()}catch{}}}},yrt=new Map([[\"C\",\"cwd\"],[\"f\",\"file\"],[\"z\",\"gzip\"],[\"P\",\"preservePaths\"],[\"U\",\"unlink\"],[\"strip-components\",\"strip\"],[\"stripComponents\",\"strip\"],[\"keep-newer\",\"newer\"],[\"keepNewer\",\"newer\"],[\"keep-newer-files\",\"newer\"],[\"keepNewerFiles\",\"newer\"],[\"k\",\"keep\"],[\"keep-existing\",\"keep\"],[\"keepExisting\",\"keep\"],[\"m\",\"noMtime\"],[\"no-mtime\",\"noMtime\"],[\"p\",\"preserveOwner\"],[\"L\",\"follow\"],[\"h\",\"follow\"],[\"onentry\",\"onReadEntry\"]]),Ert=e=>!!e.sync&&!!e.file,Irt=e=>!e.sync&&!!e.file,Crt=e=>!!e.sync&&!e.file,wrt=e=>!e.sync&&!e.file,Brt=e=>!!e.file,vrt=e=>yrt.get(e)||e,T6=(e={})=>{if(!e)return{};let t={};for(let[r,s]of Object.entries(e)){let a=vrt(r);t[a]=s}return t.chmod===void 0&&t.noChmod===!1&&(t.chmod=!0),delete t.noChmod,t},Ov=(e,t,r,s,a)=>Object.assign((n=[],c,f)=>{Array.isArray(n)&&(c=n,n={}),typeof c==\"function\"&&(f=c,c=void 0),c?c=Array.from(c):c=[];let p=T6(n);if(a?.(p,c),Ert(p)){if(typeof f==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");return e(p,c)}else if(Irt(p)){let h=t(p,c),E=f||void 0;return E?h.then(()=>E(),E):h}else if(Crt(p)){if(typeof f==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");return r(p,c)}else if(wrt(p)){if(typeof f==\"function\")throw new TypeError(\"callback only supported with file option\");return s(p,c)}else throw new Error(\"impossible options??\")},{syncFile:e,asyncFile:t,syncNoFile:r,asyncNoFile:s,validate:a}),Srt=che.default.constants||{ZLIB_VERNUM:4736},lA=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Srt)),Drt=N0.Buffer.concat,Tpe=Object.getOwnPropertyDescriptor(N0.Buffer,\"concat\"),brt=e=>e,Wj=Tpe?.writable===!0||Tpe?.set!==void 0?e=>{N0.Buffer.concat=e?brt:Drt}:e=>{},Cm=Symbol(\"_superWrite\"),qR=class extends Error{code;errno;constructor(e,t){super(\"zlib: \"+e.message,{cause:e}),this.code=e.code,this.errno=e.errno,this.code||(this.code=\"ZLIB_ERROR\"),this.message=\"zlib: \"+e.message,Error.captureStackTrace(this,t??this.constructor)}get name(){return\"ZlibError\"}},Vj=Symbol(\"flushFlag\"),F6=class extends vm{#e=!1;#t=!1;#s;#r;#i;#n;#o;get sawError(){return this.#e}get handle(){return this.#n}get flushFlag(){return this.#s}constructor(e,t){if(!e||typeof e!=\"object\")throw new TypeError(\"invalid options for ZlibBase constructor\");if(super(e),this.#s=e.flush??0,this.#r=e.finishFlush??0,this.#i=e.fullFlushFlag??0,typeof Rpe[t]!=\"function\")throw new TypeError(\"Compression method not supported: \"+t);try{this.#n=new Rpe[t](e)}catch(r){throw new qR(r,this.constructor)}this.#o=r=>{this.#e||(this.#e=!0,this.close(),this.emit(\"error\",r))},this.#n?.on(\"error\",r=>this.#o(new qR(r))),this.once(\"end\",()=>this.close)}close(){this.#n&&(this.#n.close(),this.#n=void 0,this.emit(\"close\"))}reset(){if(!this.#e)return(0,cT.default)(this.#n,\"zlib binding closed\"),this.#n.reset?.()}flush(e){this.ended||(typeof e!=\"number\"&&(e=this.#i),this.write(Object.assign(N0.Buffer.alloc(0),{[Vj]:e})))}end(e,t,r){return typeof e==\"function\"&&(r=e,t=void 0,e=void 0),typeof t==\"function\"&&(r=t,t=void 0),e&&(t?this.write(e,t):this.write(e)),this.flush(this.#r),this.#t=!0,super.end(r)}get ended(){return this.#t}[Cm](e){return super.write(e)}write(e,t,r){if(typeof t==\"function\"&&(r=t,t=\"utf8\"),typeof e==\"string\"&&(e=N0.Buffer.from(e,t)),this.#e)return;(0,cT.default)(this.#n,\"zlib binding closed\");let s=this.#n._handle,a=s.close;s.close=()=>{};let n=this.#n.close;this.#n.close=()=>{},Wj(!0);let c;try{let p=typeof e[Vj]==\"number\"?e[Vj]:this.#s;c=this.#n._processChunk(e,p),Wj(!1)}catch(p){Wj(!1),this.#o(new qR(p,this.write))}finally{this.#n&&(this.#n._handle=s,s.close=a,this.#n.close=n,this.#n.removeAllListeners(\"error\"))}this.#n&&this.#n.on(\"error\",p=>this.#o(new qR(p,this.write)));let f;if(c)if(Array.isArray(c)&&c.length>0){let p=c[0];f=this[Cm](N0.Buffer.from(p));for(let h=1;h<c.length;h++)f=this[Cm](c[h])}else f=this[Cm](N0.Buffer.from(c));return r&&r(),f}},uhe=class extends F6{#e;#t;constructor(e,t){e=e||{},e.flush=e.flush||lA.Z_NO_FLUSH,e.finishFlush=e.finishFlush||lA.Z_FINISH,e.fullFlushFlag=lA.Z_FULL_FLUSH,super(e,t),this.#e=e.level,this.#t=e.strategy}params(e,t){if(!this.sawError){if(!this.handle)throw new Error(\"cannot switch params when binding is closed\");if(!this.handle.params)throw new Error(\"not supported in this implementation\");if(this.#e!==e||this.#t!==t){this.flush(lA.Z_SYNC_FLUSH),(0,cT.default)(this.handle,\"zlib binding closed\");let r=this.handle.flush;this.handle.flush=(s,a)=>{typeof s==\"function\"&&(a=s,s=this.flushFlag),this.flush(s),a?.()};try{this.handle.params(e,t)}finally{this.handle.flush=r}this.handle&&(this.#e=e,this.#t=t)}}}},Prt=class extends uhe{#e;constructor(e){super(e,\"Gzip\"),this.#e=e&&!!e.portable}[Cm](e){return this.#e?(this.#e=!1,e[9]=255,super[Cm](e)):super[Cm](e)}},xrt=class extends uhe{constructor(e){super(e,\"Unzip\")}},fhe=class extends F6{constructor(e,t){e=e||{},e.flush=e.flush||lA.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||lA.BROTLI_OPERATION_FINISH,e.fullFlushFlag=lA.BROTLI_OPERATION_FLUSH,super(e,t)}},krt=class extends fhe{constructor(e){super(e,\"BrotliCompress\")}},Qrt=class extends fhe{constructor(e){super(e,\"BrotliDecompress\")}},Ahe=class extends F6{constructor(e,t){e=e||{},e.flush=e.flush||lA.ZSTD_e_continue,e.finishFlush=e.finishFlush||lA.ZSTD_e_end,e.fullFlushFlag=lA.ZSTD_e_flush,super(e,t)}},Rrt=class extends Ahe{constructor(e){super(e,\"ZstdCompress\")}},Trt=class extends Ahe{constructor(e){super(e,\"ZstdDecompress\")}},Frt=(e,t)=>{if(Number.isSafeInteger(e))e<0?Ort(e,t):Nrt(e,t);else throw Error(\"cannot encode number outside of javascript safe integer range\");return t},Nrt=(e,t)=>{t[0]=128;for(var r=t.length;r>1;r--)t[r-1]=e&255,e=Math.floor(e/256)},Ort=(e,t)=>{t[0]=255;var r=!1;e=e*-1;for(var s=t.length;s>1;s--){var a=e&255;e=Math.floor(e/256),r?t[s-1]=phe(a):a===0?t[s-1]=0:(r=!0,t[s-1]=hhe(a))}},Lrt=e=>{let t=e[0],r=t===128?Urt(e.subarray(1,e.length)):t===255?Mrt(e):null;if(r===null)throw Error(\"invalid base256 encoding\");if(!Number.isSafeInteger(r))throw Error(\"parsed number outside of javascript safe integer range\");return r},Mrt=e=>{for(var t=e.length,r=0,s=!1,a=t-1;a>-1;a--){var n=Number(e[a]),c;s?c=phe(n):n===0?c=n:(s=!0,c=hhe(n)),c!==0&&(r-=c*Math.pow(256,t-a-1))}return r},Urt=e=>{for(var t=e.length,r=0,s=t-1;s>-1;s--){var a=Number(e[s]);a!==0&&(r+=a*Math.pow(256,t-s-1))}return r},phe=e=>(255^e)&255,hhe=e=>(255^e)+1&255,_rt={};srt(_rt,{code:()=>N6,isCode:()=>eT,isName:()=>Hrt,name:()=>dT});eT=e=>dT.has(e),Hrt=e=>N6.has(e),dT=new Map([[\"0\",\"File\"],[\"\",\"OldFile\"],[\"1\",\"Link\"],[\"2\",\"SymbolicLink\"],[\"3\",\"CharacterDevice\"],[\"4\",\"BlockDevice\"],[\"5\",\"Directory\"],[\"6\",\"FIFO\"],[\"7\",\"ContiguousFile\"],[\"g\",\"GlobalExtendedHeader\"],[\"x\",\"ExtendedHeader\"],[\"A\",\"SolarisACL\"],[\"D\",\"GNUDumpDir\"],[\"I\",\"Inode\"],[\"K\",\"NextFileHasLongLinkpath\"],[\"L\",\"NextFileHasLongPath\"],[\"M\",\"ContinuationFile\"],[\"N\",\"OldGnuLongPath\"],[\"S\",\"SparseFile\"],[\"V\",\"TapeVolumeHeader\"],[\"X\",\"OldExtendedHeader\"]]),N6=new Map(Array.from(dT).map(e=>[e[1],e[0]])),wm=class{cksumValid=!1;needPax=!1;nullBlock=!1;block;path;mode;uid;gid;size;cksum;#e=\"Unsupported\";linkpath;uname;gname;devmaj=0;devmin=0;atime;ctime;mtime;charset;comment;constructor(e,t=0,r,s){Buffer.isBuffer(e)?this.decode(e,t||0,r,s):e&&this.#t(e)}decode(e,t,r,s){if(t||(t=0),!e||!(e.length>=t+512))throw new Error(\"need 512 bytes for header\");this.path=r?.path??fm(e,t,100),this.mode=r?.mode??s?.mode??R0(e,t+100,8),this.uid=r?.uid??s?.uid??R0(e,t+108,8),this.gid=r?.gid??s?.gid??R0(e,t+116,8),this.size=r?.size??s?.size??R0(e,t+124,12),this.mtime=r?.mtime??s?.mtime??Yj(e,t+136,12),this.cksum=R0(e,t+148,12),s&&this.#t(s,!0),r&&this.#t(r);let a=fm(e,t+156,1);if(eT(a)&&(this.#e=a||\"0\"),this.#e===\"0\"&&this.path.slice(-1)===\"/\"&&(this.#e=\"5\"),this.#e===\"5\"&&(this.size=0),this.linkpath=fm(e,t+157,100),e.subarray(t+257,t+265).toString()===\"ustar\\x0000\")if(this.uname=r?.uname??s?.uname??fm(e,t+265,32),this.gname=r?.gname??s?.gname??fm(e,t+297,32),this.devmaj=r?.devmaj??s?.devmaj??R0(e,t+329,8)??0,this.devmin=r?.devmin??s?.devmin??R0(e,t+337,8)??0,e[t+475]!==0){let c=fm(e,t+345,155);this.path=c+\"/\"+this.path}else{let c=fm(e,t+345,130);c&&(this.path=c+\"/\"+this.path),this.atime=r?.atime??s?.atime??Yj(e,t+476,12),this.ctime=r?.ctime??s?.ctime??Yj(e,t+488,12)}let n=256;for(let c=t;c<t+148;c++)n+=e[c];for(let c=t+156;c<t+512;c++)n+=e[c];this.cksumValid=n===this.cksum,this.cksum===void 0&&n===256&&(this.nullBlock=!0)}#t(e,t=!1){Object.assign(this,Object.fromEntries(Object.entries(e).filter(([r,s])=>!(s==null||r===\"path\"&&t||r===\"linkpath\"&&t||r===\"global\"))))}encode(e,t=0){if(e||(e=this.block=Buffer.alloc(512)),this.#e===\"Unsupported\"&&(this.#e=\"0\"),!(e.length>=t+512))throw new Error(\"need 512 bytes for header\");let r=this.ctime||this.atime?130:155,s=jrt(this.path||\"\",r),a=s[0],n=s[1];this.needPax=!!s[2],this.needPax=Am(e,t,100,a)||this.needPax,this.needPax=T0(e,t+100,8,this.mode)||this.needPax,this.needPax=T0(e,t+108,8,this.uid)||this.needPax,this.needPax=T0(e,t+116,8,this.gid)||this.needPax,this.needPax=T0(e,t+124,12,this.size)||this.needPax,this.needPax=Kj(e,t+136,12,this.mtime)||this.needPax,e[t+156]=this.#e.charCodeAt(0),this.needPax=Am(e,t+157,100,this.linkpath)||this.needPax,e.write(\"ustar\\x0000\",t+257,8),this.needPax=Am(e,t+265,32,this.uname)||this.needPax,this.needPax=Am(e,t+297,32,this.gname)||this.needPax,this.needPax=T0(e,t+329,8,this.devmaj)||this.needPax,this.needPax=T0(e,t+337,8,this.devmin)||this.needPax,this.needPax=Am(e,t+345,r,n)||this.needPax,e[t+475]!==0?this.needPax=Am(e,t+345,155,n)||this.needPax:(this.needPax=Am(e,t+345,130,n)||this.needPax,this.needPax=Kj(e,t+476,12,this.atime)||this.needPax,this.needPax=Kj(e,t+488,12,this.ctime)||this.needPax);let c=256;for(let f=t;f<t+148;f++)c+=e[f];for(let f=t+156;f<t+512;f++)c+=e[f];return this.cksum=c,T0(e,t+148,8,this.cksum),this.cksumValid=!0,this.needPax}get type(){return this.#e===\"Unsupported\"?this.#e:dT.get(this.#e)}get typeKey(){return this.#e}set type(e){let t=String(N6.get(e));if(eT(t)||t===\"Unsupported\")this.#e=t;else if(eT(e))this.#e=e;else throw new TypeError(\"invalid entry type: \"+e)}},jrt=(e,t)=>{let r=e,s=\"\",a,n=ym.posix.parse(e).root||\".\";if(Buffer.byteLength(r)<100)a=[r,s,!1];else{s=ym.posix.dirname(r),r=ym.posix.basename(r);do Buffer.byteLength(r)<=100&&Buffer.byteLength(s)<=t?a=[r,s,!1]:Buffer.byteLength(r)>100&&Buffer.byteLength(s)<=t?a=[r.slice(0,99),s,!0]:(r=ym.posix.join(ym.posix.basename(s),r),s=ym.posix.dirname(s));while(s!==n&&a===void 0);a||(a=[e.slice(0,99),\"\",!0])}return a},fm=(e,t,r)=>e.subarray(t,t+r).toString(\"utf8\").replace(/\\0.*/,\"\"),Yj=(e,t,r)=>Grt(R0(e,t,r)),Grt=e=>e===void 0?void 0:new Date(e*1e3),R0=(e,t,r)=>Number(e[t])&128?Lrt(e.subarray(t,t+r)):Wrt(e,t,r),qrt=e=>isNaN(e)?void 0:e,Wrt=(e,t,r)=>qrt(parseInt(e.subarray(t,t+r).toString(\"utf8\").replace(/\\0.*$/,\"\").trim(),8)),Vrt={12:8589934591,8:2097151},T0=(e,t,r,s)=>s===void 0?!1:s>Vrt[r]||s<0?(Frt(s,e.subarray(t,t+r)),!0):(Yrt(e,t,r,s),!1),Yrt=(e,t,r,s)=>e.write(Krt(s,r),t,r,\"ascii\"),Krt=(e,t)=>Jrt(Math.floor(e).toString(8),t),Jrt=(e,t)=>(e.length===t-1?e:new Array(t-e.length-1).join(\"0\")+e+\" \")+\"\\0\",Kj=(e,t,r,s)=>s===void 0?!1:T0(e,t,r,s.getTime()/1e3),zrt=new Array(156).join(\"\\0\"),Am=(e,t,r,s)=>s===void 0?!1:(e.write(s+zrt,t,r,\"utf8\"),s.length!==Buffer.byteLength(s)||s.length>r),uT=class dhe{atime;mtime;ctime;charset;comment;gid;uid;gname;uname;linkpath;dev;ino;nlink;path;size;mode;global;constructor(t,r=!1){this.atime=t.atime,this.charset=t.charset,this.comment=t.comment,this.ctime=t.ctime,this.dev=t.dev,this.gid=t.gid,this.global=r,this.gname=t.gname,this.ino=t.ino,this.linkpath=t.linkpath,this.mtime=t.mtime,this.nlink=t.nlink,this.path=t.path,this.size=t.size,this.uid=t.uid,this.uname=t.uname}encode(){let t=this.encodeBody();if(t===\"\")return Buffer.allocUnsafe(0);let r=Buffer.byteLength(t),s=512*Math.ceil(1+r/512),a=Buffer.allocUnsafe(s);for(let n=0;n<512;n++)a[n]=0;new wm({path:(\"PaxHeader/\"+(0,ghe.basename)(this.path??\"\")).slice(0,99),mode:this.mode||420,uid:this.uid,gid:this.gid,size:r,mtime:this.mtime,type:this.global?\"GlobalExtendedHeader\":\"ExtendedHeader\",linkpath:\"\",uname:this.uname||\"\",gname:this.gname||\"\",devmaj:0,devmin:0,atime:this.atime,ctime:this.ctime}).encode(a),a.write(t,512,r,\"utf8\");for(let n=r+512;n<a.length;n++)a[n]=0;return a}encodeBody(){return this.encodeField(\"path\")+this.encodeField(\"ctime\")+this.encodeField(\"atime\")+this.encodeField(\"dev\")+this.encodeField(\"ino\")+this.encodeField(\"nlink\")+this.encodeField(\"charset\")+this.encodeField(\"comment\")+this.encodeField(\"gid\")+this.encodeField(\"gname\")+this.encodeField(\"linkpath\")+this.encodeField(\"mtime\")+this.encodeField(\"size\")+this.encodeField(\"uid\")+this.encodeField(\"uname\")}encodeField(t){if(this[t]===void 0)return\"\";let r=this[t],s=r instanceof Date?r.getTime()/1e3:r,a=\" \"+(t===\"dev\"||t===\"ino\"||t===\"nlink\"?\"SCHILY.\":\"\")+t+\"=\"+s+`\n`,n=Buffer.byteLength(a),c=Math.floor(Math.log(n)/Math.log(10))+1;return n+c>=Math.pow(10,c)&&(c+=1),c+n+a}static parse(t,r,s=!1){return new dhe(Zrt(Xrt(t),r),s)}},Zrt=(e,t)=>t?Object.assign({},t,e):e,Xrt=e=>e.replace(/\\n$/,\"\").split(`\n`).reduce($rt,Object.create(null)),$rt=(e,t)=>{let r=parseInt(t,10);if(r!==Buffer.byteLength(t)+1)return e;t=t.slice((r+\" \").length);let s=t.split(\"=\"),a=s.shift();if(!a)return e;let n=a.replace(/^SCHILY\\.(dev|ino|nlink)/,\"$1\"),c=s.join(\"=\");return e[n]=/^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(n)?new Date(Number(c)*1e3):/^[0-9]+$/.test(c)?+c:c,e},ent=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,cn=ent!==\"win32\"?e=>e:e=>e&&e.replace(/\\\\/g,\"/\"),mhe=class extends vm{extended;globalExtended;header;startBlockSize;blockRemain;remain;type;meta=!1;ignore=!1;path;mode;uid;gid;uname;gname;size=0;mtime;atime;ctime;linkpath;dev;ino;nlink;invalid=!1;absolute;unsupported=!1;constructor(e,t,r){switch(super({}),this.pause(),this.extended=t,this.globalExtended=r,this.header=e,this.remain=e.size??0,this.startBlockSize=512*Math.ceil(this.remain/512),this.blockRemain=this.startBlockSize,this.type=e.type,this.type){case\"File\":case\"OldFile\":case\"Link\":case\"SymbolicLink\":case\"CharacterDevice\":case\"BlockDevice\":case\"Directory\":case\"FIFO\":case\"ContiguousFile\":case\"GNUDumpDir\":break;case\"NextFileHasLongLinkpath\":case\"NextFileHasLongPath\":case\"OldGnuLongPath\":case\"GlobalExtendedHeader\":case\"ExtendedHeader\":case\"OldExtendedHeader\":this.meta=!0;break;default:this.ignore=!0}if(!e.path)throw new Error(\"no path provided for tar.ReadEntry\");this.path=cn(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=this.remain,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath?cn(e.linkpath):void 0,this.uname=e.uname,this.gname=e.gname,t&&this.#e(t),r&&this.#e(r,!0)}write(e){let t=e.length;if(t>this.blockRemain)throw new Error(\"writing more to entry than is appropriate\");let r=this.remain,s=this.blockRemain;return this.remain=Math.max(0,r-t),this.blockRemain=Math.max(0,s-t),this.ignore?!0:r>=t?super.write(e):super.write(e.subarray(0,r))}#e(e,t=!1){e.path&&(e.path=cn(e.path)),e.linkpath&&(e.linkpath=cn(e.linkpath)),Object.assign(this,Object.fromEntries(Object.entries(e).filter(([r,s])=>!(s==null||r===\"path\"&&t))))}},mT=(e,t,r,s={})=>{e.file&&(s.file=e.file),e.cwd&&(s.cwd=e.cwd),s.code=r instanceof Error&&r.code||t,s.tarCode=t,!e.strict&&s.recoverable!==!1?(r instanceof Error&&(s=Object.assign(r,s),r=r.message),e.emit(\"warn\",t,r,s)):r instanceof Error?e.emit(\"error\",Object.assign(r,s)):e.emit(\"error\",Object.assign(new Error(`${t}: ${r}`),s))},tnt=1024*1024,u6=Buffer.from([31,139]),f6=Buffer.from([40,181,47,253]),rnt=Math.max(u6.length,f6.length),Mc=Symbol(\"state\"),pm=Symbol(\"writeEntry\"),Gp=Symbol(\"readEntry\"),Jj=Symbol(\"nextEntry\"),Fpe=Symbol(\"processEntry\"),oA=Symbol(\"extendedHeader\"),Ev=Symbol(\"globalExtendedHeader\"),P0=Symbol(\"meta\"),Npe=Symbol(\"emitMeta\"),Ci=Symbol(\"buffer\"),qp=Symbol(\"queue\"),x0=Symbol(\"ended\"),zj=Symbol(\"emittedEnd\"),hm=Symbol(\"emit\"),hs=Symbol(\"unzip\"),WR=Symbol(\"consumeChunk\"),VR=Symbol(\"consumeChunkSub\"),Zj=Symbol(\"consumeBody\"),Ope=Symbol(\"consumeMeta\"),Lpe=Symbol(\"consumeHeader\"),Iv=Symbol(\"consuming\"),Xj=Symbol(\"bufferConcat\"),YR=Symbol(\"maybeEnd\"),kI=Symbol(\"writing\"),k0=Symbol(\"aborted\"),KR=Symbol(\"onDone\"),gm=Symbol(\"sawValidEntry\"),JR=Symbol(\"sawNullBlock\"),zR=Symbol(\"sawEOF\"),Mpe=Symbol(\"closeStream\"),nnt=()=>!0,Bm=class extends lhe.EventEmitter{file;strict;maxMetaEntrySize;filter;brotli;zstd;writable=!0;readable=!1;[qp]=[];[Ci];[Gp];[pm];[Mc]=\"begin\";[P0]=\"\";[oA];[Ev];[x0]=!1;[hs];[k0]=!1;[gm];[JR]=!1;[zR]=!1;[kI]=!1;[Iv]=!1;[zj]=!1;constructor(e={}){super(),this.file=e.file||\"\",this.on(KR,()=>{(this[Mc]===\"begin\"||this[gm]===!1)&&this.warn(\"TAR_BAD_ARCHIVE\",\"Unrecognized archive format\")}),e.ondone?this.on(KR,e.ondone):this.on(KR,()=>{this.emit(\"prefinish\"),this.emit(\"finish\"),this.emit(\"end\")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||tnt,this.filter=typeof e.filter==\"function\"?e.filter:nnt;let t=e.file&&(e.file.endsWith(\".tar.br\")||e.file.endsWith(\".tbr\"));this.brotli=!(e.gzip||e.zstd)&&e.brotli!==void 0?e.brotli:t?void 0:!1;let r=e.file&&(e.file.endsWith(\".tar.zst\")||e.file.endsWith(\".tzst\"));this.zstd=!(e.gzip||e.brotli)&&e.zstd!==void 0?e.zstd:r?!0:void 0,this.on(\"end\",()=>this[Mpe]()),typeof e.onwarn==\"function\"&&this.on(\"warn\",e.onwarn),typeof e.onReadEntry==\"function\"&&this.on(\"entry\",e.onReadEntry)}warn(e,t,r={}){mT(this,e,t,r)}[Lpe](e,t){this[gm]===void 0&&(this[gm]=!1);let r;try{r=new wm(e,t,this[oA],this[Ev])}catch(s){return this.warn(\"TAR_ENTRY_INVALID\",s)}if(r.nullBlock)this[JR]?(this[zR]=!0,this[Mc]===\"begin\"&&(this[Mc]=\"header\"),this[hm](\"eof\")):(this[JR]=!0,this[hm](\"nullBlock\"));else if(this[JR]=!1,!r.cksumValid)this.warn(\"TAR_ENTRY_INVALID\",\"checksum failure\",{header:r});else if(!r.path)this.warn(\"TAR_ENTRY_INVALID\",\"path is required\",{header:r});else{let s=r.type;if(/^(Symbolic)?Link$/.test(s)&&!r.linkpath)this.warn(\"TAR_ENTRY_INVALID\",\"linkpath required\",{header:r});else if(!/^(Symbolic)?Link$/.test(s)&&!/^(Global)?ExtendedHeader$/.test(s)&&r.linkpath)this.warn(\"TAR_ENTRY_INVALID\",\"linkpath forbidden\",{header:r});else{let a=this[pm]=new mhe(r,this[oA],this[Ev]);if(!this[gm])if(a.remain){let n=()=>{a.invalid||(this[gm]=!0)};a.on(\"end\",n)}else this[gm]=!0;a.meta?a.size>this.maxMetaEntrySize?(a.ignore=!0,this[hm](\"ignoredEntry\",a),this[Mc]=\"ignore\",a.resume()):a.size>0&&(this[P0]=\"\",a.on(\"data\",n=>this[P0]+=n),this[Mc]=\"meta\"):(this[oA]=void 0,a.ignore=a.ignore||!this.filter(a.path,a),a.ignore?(this[hm](\"ignoredEntry\",a),this[Mc]=a.remain?\"ignore\":\"header\",a.resume()):(a.remain?this[Mc]=\"body\":(this[Mc]=\"header\",a.end()),this[Gp]?this[qp].push(a):(this[qp].push(a),this[Jj]())))}}}[Mpe](){queueMicrotask(()=>this.emit(\"close\"))}[Fpe](e){let t=!0;if(!e)this[Gp]=void 0,t=!1;else if(Array.isArray(e)){let[r,...s]=e;this.emit(r,...s)}else this[Gp]=e,this.emit(\"entry\",e),e.emittedEnd||(e.on(\"end\",()=>this[Jj]()),t=!1);return t}[Jj](){do;while(this[Fpe](this[qp].shift()));if(!this[qp].length){let e=this[Gp];!e||e.flowing||e.size===e.remain?this[kI]||this.emit(\"drain\"):e.once(\"drain\",()=>this.emit(\"drain\"))}}[Zj](e,t){let r=this[pm];if(!r)throw new Error(\"attempt to consume body without entry??\");let s=r.blockRemain??0,a=s>=e.length&&t===0?e:e.subarray(t,t+s);return r.write(a),r.blockRemain||(this[Mc]=\"header\",this[pm]=void 0,r.end()),a.length}[Ope](e,t){let r=this[pm],s=this[Zj](e,t);return!this[pm]&&r&&this[Npe](r),s}[hm](e,t,r){!this[qp].length&&!this[Gp]?this.emit(e,t,r):this[qp].push([e,t,r])}[Npe](e){switch(this[hm](\"meta\",this[P0]),e.type){case\"ExtendedHeader\":case\"OldExtendedHeader\":this[oA]=uT.parse(this[P0],this[oA],!1);break;case\"GlobalExtendedHeader\":this[Ev]=uT.parse(this[P0],this[Ev],!0);break;case\"NextFileHasLongPath\":case\"OldGnuLongPath\":{let t=this[oA]??Object.create(null);this[oA]=t,t.path=this[P0].replace(/\\0.*/,\"\");break}case\"NextFileHasLongLinkpath\":{let t=this[oA]||Object.create(null);this[oA]=t,t.linkpath=this[P0].replace(/\\0.*/,\"\");break}default:throw new Error(\"unknown meta: \"+e.type)}}abort(e){this[k0]=!0,this.emit(\"abort\",e),this.warn(\"TAR_ABORT\",e,{recoverable:!1})}write(e,t,r){if(typeof t==\"function\"&&(r=t,t=void 0),typeof e==\"string\"&&(e=Buffer.from(e,typeof t==\"string\"?t:\"utf8\")),this[k0])return r?.(),!1;if((this[hs]===void 0||this.brotli===void 0&&this[hs]===!1)&&e){if(this[Ci]&&(e=Buffer.concat([this[Ci],e]),this[Ci]=void 0),e.length<rnt)return this[Ci]=e,r?.(),!0;for(let c=0;this[hs]===void 0&&c<u6.length;c++)e[c]!==u6[c]&&(this[hs]=!1);let a=!1;if(this[hs]===!1&&this.zstd!==!1){a=!0;for(let c=0;c<f6.length;c++)if(e[c]!==f6[c]){a=!1;break}}let n=this.brotli===void 0&&!a;if(this[hs]===!1&&n)if(e.length<512)if(this[x0])this.brotli=!0;else return this[Ci]=e,r?.(),!0;else try{new wm(e.subarray(0,512)),this.brotli=!1}catch{this.brotli=!0}if(this[hs]===void 0||this[hs]===!1&&(this.brotli||a)){let c=this[x0];this[x0]=!1,this[hs]=this[hs]===void 0?new xrt({}):a?new Trt({}):new Qrt({}),this[hs].on(\"data\",p=>this[WR](p)),this[hs].on(\"error\",p=>this.abort(p)),this[hs].on(\"end\",()=>{this[x0]=!0,this[WR]()}),this[kI]=!0;let f=!!this[hs][c?\"end\":\"write\"](e);return this[kI]=!1,r?.(),f}}this[kI]=!0,this[hs]?this[hs].write(e):this[WR](e),this[kI]=!1;let s=this[qp].length?!1:this[Gp]?this[Gp].flowing:!0;return!s&&!this[qp].length&&this[Gp]?.once(\"drain\",()=>this.emit(\"drain\")),r?.(),s}[Xj](e){e&&!this[k0]&&(this[Ci]=this[Ci]?Buffer.concat([this[Ci],e]):e)}[YR](){if(this[x0]&&!this[zj]&&!this[k0]&&!this[Iv]){this[zj]=!0;let e=this[pm];if(e&&e.blockRemain){let t=this[Ci]?this[Ci].length:0;this.warn(\"TAR_BAD_ARCHIVE\",`Truncated input (needed ${e.blockRemain} more bytes, only ${t} available)`,{entry:e}),this[Ci]&&e.write(this[Ci]),e.end()}this[hm](KR)}}[WR](e){if(this[Iv]&&e)this[Xj](e);else if(!e&&!this[Ci])this[YR]();else if(e){if(this[Iv]=!0,this[Ci]){this[Xj](e);let t=this[Ci];this[Ci]=void 0,this[VR](t)}else this[VR](e);for(;this[Ci]&&this[Ci]?.length>=512&&!this[k0]&&!this[zR];){let t=this[Ci];this[Ci]=void 0,this[VR](t)}this[Iv]=!1}(!this[Ci]||this[x0])&&this[YR]()}[VR](e){let t=0,r=e.length;for(;t+512<=r&&!this[k0]&&!this[zR];)switch(this[Mc]){case\"begin\":case\"header\":this[Lpe](e,t),t+=512;break;case\"ignore\":case\"body\":t+=this[Zj](e,t);break;case\"meta\":t+=this[Ope](e,t);break;default:throw new Error(\"invalid state: \"+this[Mc])}t<r&&(this[Ci]?this[Ci]=Buffer.concat([e.subarray(t),this[Ci]]):this[Ci]=e.subarray(t))}end(e,t,r){return typeof e==\"function\"&&(r=e,t=void 0,e=void 0),typeof t==\"function\"&&(r=t,t=void 0),typeof e==\"string\"&&(e=Buffer.from(e,t)),r&&this.once(\"finish\",r),this[k0]||(this[hs]?(e&&this[hs].write(e),this[hs].end()):(this[x0]=!0,(this.brotli===void 0||this.zstd===void 0)&&(e=e||Buffer.alloc(0)),e&&this.write(e),this[YR]())),this}},Pv=e=>{let t=e.length-1,r=-1;for(;t>-1&&e.charAt(t)===\"/\";)r=t,t--;return r===-1?e:e.slice(0,r)},int=e=>{let t=e.onReadEntry;e.onReadEntry=t?r=>{t(r),r.resume()}:r=>r.resume()},yhe=(e,t)=>{let r=new Map(t.map(n=>[Pv(n),!0])),s=e.filter,a=(n,c=\"\")=>{let f=c||(0,gT.parse)(n).root||\".\",p;if(n===f)p=!1;else{let h=r.get(n);h!==void 0?p=h:p=a((0,gT.dirname)(n),f)}return r.set(n,p),p};e.filter=s?(n,c)=>s(n,c)&&a(Pv(n)):n=>a(Pv(n))},snt=e=>{let t=new Bm(e),r=e.file,s;try{s=Em.default.openSync(r,\"r\");let a=Em.default.fstatSync(s),n=e.maxReadSize||16*1024*1024;if(a.size<n){let c=Buffer.allocUnsafe(a.size),f=Em.default.readSync(s,c,0,a.size,0);t.end(f===c.byteLength?c:c.subarray(0,f))}else{let c=0,f=Buffer.allocUnsafe(n);for(;c<a.size;){let p=Em.default.readSync(s,f,0,n,c);if(p===0)break;c+=p,t.write(f.subarray(0,p))}t.end()}}finally{if(typeof s==\"number\")try{Em.default.closeSync(s)}catch{}}},ont=(e,t)=>{let r=new Bm(e),s=e.maxReadSize||16*1024*1024,a=e.file;return new Promise((n,c)=>{r.on(\"error\",c),r.on(\"end\",n),Em.default.stat(a,(f,p)=>{if(f)c(f);else{let h=new Q6(a,{readSize:s,size:p.size});h.on(\"error\",c),h.pipe(r)}})})},yT=Ov(snt,ont,e=>new Bm(e),e=>new Bm(e),(e,t)=>{t?.length&&yhe(e,t),e.noResume||int(e)}),Ehe=(e,t,r)=>(e&=4095,r&&(e=(e|384)&-19),t&&(e&256&&(e|=64),e&32&&(e|=8),e&4&&(e|=1)),e),{isAbsolute:ant,parse:Upe}=Ihe.win32,O6=e=>{let t=\"\",r=Upe(e);for(;ant(e)||r.root;){let s=e.charAt(0)===\"/\"&&e.slice(0,4)!==\"//?/\"?\"/\":r.root;e=e.slice(s.length),t+=s,r=Upe(e)}return[t,e]},ET=[\"|\",\"<\",\">\",\"?\",\":\"],L6=ET.map(e=>String.fromCharCode(61440+e.charCodeAt(0))),lnt=new Map(ET.map((e,t)=>[e,L6[t]])),cnt=new Map(L6.map((e,t)=>[e,ET[t]])),_pe=e=>ET.reduce((t,r)=>t.split(r).join(lnt.get(r)),e),unt=e=>L6.reduce((t,r)=>t.split(r).join(cnt.get(r)),e),Che=(e,t)=>t?(e=cn(e).replace(/^\\.(\\/|$)/,\"\"),Pv(t)+\"/\"+e):cn(e),fnt=16*1024*1024,Hpe=Symbol(\"process\"),jpe=Symbol(\"file\"),Gpe=Symbol(\"directory\"),p6=Symbol(\"symlink\"),qpe=Symbol(\"hardlink\"),Cv=Symbol(\"header\"),tT=Symbol(\"read\"),h6=Symbol(\"lstat\"),rT=Symbol(\"onlstat\"),g6=Symbol(\"onread\"),d6=Symbol(\"onreadlink\"),m6=Symbol(\"openfile\"),y6=Symbol(\"onopenfile\"),F0=Symbol(\"close\"),fT=Symbol(\"mode\"),E6=Symbol(\"awaitDrain\"),$j=Symbol(\"ondrain\"),aA=Symbol(\"prefix\"),whe=class extends vm{path;portable;myuid=process.getuid&&process.getuid()||0;myuser=process.env.USER||\"\";maxReadSize;linkCache;statCache;preservePaths;cwd;strict;mtime;noPax;noMtime;prefix;fd;blockLen=0;blockRemain=0;buf;pos=0;remain=0;length=0;offset=0;win32;absolute;header;type;linkpath;stat;onWriteEntry;#e=!1;constructor(e,t={}){let r=T6(t);super(),this.path=cn(e),this.portable=!!r.portable,this.maxReadSize=r.maxReadSize||fnt,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=cn(r.cwd||process.cwd()),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime,this.prefix=r.prefix?cn(r.prefix):void 0,this.onWriteEntry=r.onWriteEntry,typeof r.onwarn==\"function\"&&this.on(\"warn\",r.onwarn);let s=!1;if(!this.preservePaths){let[n,c]=O6(this.path);n&&typeof c==\"string\"&&(this.path=c,s=n)}this.win32=!!r.win32||process.platform===\"win32\",this.win32&&(this.path=unt(this.path.replace(/\\\\/g,\"/\")),e=e.replace(/\\\\/g,\"/\")),this.absolute=cn(r.absolute||A6.default.resolve(this.cwd,e)),this.path===\"\"&&(this.path=\"./\"),s&&this.warn(\"TAR_ENTRY_INFO\",`stripping ${s} from absolute path`,{entry:this,path:s+this.path});let a=this.statCache.get(this.absolute);a?this[rT](a):this[h6]()}warn(e,t,r={}){return mT(this,e,t,r)}emit(e,...t){return e===\"error\"&&(this.#e=!0),super.emit(e,...t)}[h6](){Yu.default.lstat(this.absolute,(e,t)=>{if(e)return this.emit(\"error\",e);this[rT](t)})}[rT](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=hnt(e),this.emit(\"stat\",e),this[Hpe]()}[Hpe](){switch(this.type){case\"File\":return this[jpe]();case\"Directory\":return this[Gpe]();case\"SymbolicLink\":return this[p6]();default:return this.end()}}[fT](e){return Ehe(e,this.type===\"Directory\",this.portable)}[aA](e){return Che(e,this.prefix)}[Cv](){if(!this.stat)throw new Error(\"cannot write header before stat\");this.type===\"Directory\"&&this.portable&&(this.noMtime=!0),this.onWriteEntry?.(this),this.header=new wm({path:this[aA](this.path),linkpath:this.type===\"Link\"&&this.linkpath!==void 0?this[aA](this.linkpath):this.linkpath,mode:this[fT](this.stat.mode),uid:this.portable?void 0:this.stat.uid,gid:this.portable?void 0:this.stat.gid,size:this.stat.size,mtime:this.noMtime?void 0:this.mtime||this.stat.mtime,type:this.type===\"Unsupported\"?void 0:this.type,uname:this.portable?void 0:this.stat.uid===this.myuid?this.myuser:\"\",atime:this.portable?void 0:this.stat.atime,ctime:this.portable?void 0:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new uT({atime:this.portable?void 0:this.header.atime,ctime:this.portable?void 0:this.header.ctime,gid:this.portable?void 0:this.header.gid,mtime:this.noMtime?void 0:this.mtime||this.header.mtime,path:this[aA](this.path),linkpath:this.type===\"Link\"&&this.linkpath!==void 0?this[aA](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?void 0:this.header.uid,uname:this.portable?void 0:this.header.uname,dev:this.portable?void 0:this.stat.dev,ino:this.portable?void 0:this.stat.ino,nlink:this.portable?void 0:this.stat.nlink}).encode());let e=this.header?.block;if(!e)throw new Error(\"failed to encode header\");super.write(e)}[Gpe](){if(!this.stat)throw new Error(\"cannot create directory entry without stat\");this.path.slice(-1)!==\"/\"&&(this.path+=\"/\"),this.stat.size=0,this[Cv](),this.end()}[p6](){Yu.default.readlink(this.absolute,(e,t)=>{if(e)return this.emit(\"error\",e);this[d6](t)})}[d6](e){this.linkpath=cn(e),this[Cv](),this.end()}[qpe](e){if(!this.stat)throw new Error(\"cannot create link entry without stat\");this.type=\"Link\",this.linkpath=cn(A6.default.relative(this.cwd,e)),this.stat.size=0,this[Cv](),this.end()}[jpe](){if(!this.stat)throw new Error(\"cannot create file entry without stat\");if(this.stat.nlink>1){let e=`${this.stat.dev}:${this.stat.ino}`,t=this.linkCache.get(e);if(t?.indexOf(this.cwd)===0)return this[qpe](t);this.linkCache.set(e,this.absolute)}if(this[Cv](),this.stat.size===0)return this.end();this[m6]()}[m6](){Yu.default.open(this.absolute,\"r\",(e,t)=>{if(e)return this.emit(\"error\",e);this[y6](t)})}[y6](e){if(this.fd=e,this.#e)return this[F0]();if(!this.stat)throw new Error(\"should stat before calling onopenfile\");this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let t=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(t),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[tT]()}[tT](){let{fd:e,buf:t,offset:r,length:s,pos:a}=this;if(e===void 0||t===void 0)throw new Error(\"cannot read file without first opening\");Yu.default.read(e,t,r,s,a,(n,c)=>{if(n)return this[F0](()=>this.emit(\"error\",n));this[g6](c)})}[F0](e=()=>{}){this.fd!==void 0&&Yu.default.close(this.fd,e)}[g6](e){if(e<=0&&this.remain>0){let r=Object.assign(new Error(\"encountered unexpected EOF\"),{path:this.absolute,syscall:\"read\",code:\"EOF\"});return this[F0](()=>this.emit(\"error\",r))}if(e>this.remain){let r=Object.assign(new Error(\"did not encounter expected EOF\"),{path:this.absolute,syscall:\"read\",code:\"EOF\"});return this[F0](()=>this.emit(\"error\",r))}if(!this.buf)throw new Error(\"should have created buffer prior to reading\");if(e===this.remain)for(let r=e;r<this.length&&e<this.blockRemain;r++)this.buf[r+this.offset]=0,e++,this.remain++;let t=this.offset===0&&e===this.buf.length?this.buf:this.buf.subarray(this.offset,this.offset+e);this.write(t)?this[$j]():this[E6](()=>this[$j]())}[E6](e){this.once(\"drain\",e)}write(e,t,r){if(typeof t==\"function\"&&(r=t,t=void 0),typeof e==\"string\"&&(e=Buffer.from(e,typeof t==\"string\"?t:\"utf8\")),this.blockRemain<e.length){let s=Object.assign(new Error(\"writing more data than expected\"),{path:this.absolute});return this.emit(\"error\",s)}return this.remain-=e.length,this.blockRemain-=e.length,this.pos+=e.length,this.offset+=e.length,super.write(e,null,r)}[$j](){if(!this.remain)return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),this[F0](e=>e?this.emit(\"error\",e):this.end());if(!this.buf)throw new Error(\"buffer lost somehow in ONDRAIN\");this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[tT]()}},Ant=class extends whe{sync=!0;[h6](){this[rT](Yu.default.lstatSync(this.absolute))}[p6](){this[d6](Yu.default.readlinkSync(this.absolute))}[m6](){this[y6](Yu.default.openSync(this.absolute,\"r\"))}[tT](){let e=!0;try{let{fd:t,buf:r,offset:s,length:a,pos:n}=this;if(t===void 0||r===void 0)throw new Error(\"fd and buf must be set in READ method\");let c=Yu.default.readSync(t,r,s,a,n);this[g6](c),e=!1}finally{if(e)try{this[F0](()=>{})}catch{}}}[E6](e){e()}[F0](e=()=>{}){this.fd!==void 0&&Yu.default.closeSync(this.fd),e()}},pnt=class extends vm{blockLen=0;blockRemain=0;buf=0;pos=0;remain=0;length=0;preservePaths;portable;strict;noPax;noMtime;readEntry;type;prefix;path;mode;uid;gid;uname;gname;header;mtime;atime;ctime;linkpath;size;onWriteEntry;warn(e,t,r={}){return mT(this,e,t,r)}constructor(e,t={}){let r=T6(t);super(),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.onWriteEntry=r.onWriteEntry,this.readEntry=e;let{type:s}=e;if(s===\"Unsupported\")throw new Error(\"writing entry that should be ignored\");this.type=s,this.type===\"Directory\"&&this.portable&&(this.noMtime=!0),this.prefix=r.prefix,this.path=cn(e.path),this.mode=e.mode!==void 0?this[fT](e.mode):void 0,this.uid=this.portable?void 0:e.uid,this.gid=this.portable?void 0:e.gid,this.uname=this.portable?void 0:e.uname,this.gname=this.portable?void 0:e.gname,this.size=e.size,this.mtime=this.noMtime?void 0:r.mtime||e.mtime,this.atime=this.portable?void 0:e.atime,this.ctime=this.portable?void 0:e.ctime,this.linkpath=e.linkpath!==void 0?cn(e.linkpath):void 0,typeof r.onwarn==\"function\"&&this.on(\"warn\",r.onwarn);let a=!1;if(!this.preservePaths){let[c,f]=O6(this.path);c&&typeof f==\"string\"&&(this.path=f,a=c)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.onWriteEntry?.(this),this.header=new wm({path:this[aA](this.path),linkpath:this.type===\"Link\"&&this.linkpath!==void 0?this[aA](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?void 0:this.uid,gid:this.portable?void 0:this.gid,size:this.size,mtime:this.noMtime?void 0:this.mtime,type:this.type,uname:this.portable?void 0:this.uname,atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime}),a&&this.warn(\"TAR_ENTRY_INFO\",`stripping ${a} from absolute path`,{entry:this,path:a+this.path}),this.header.encode()&&!this.noPax&&super.write(new uT({atime:this.portable?void 0:this.atime,ctime:this.portable?void 0:this.ctime,gid:this.portable?void 0:this.gid,mtime:this.noMtime?void 0:this.mtime,path:this[aA](this.path),linkpath:this.type===\"Link\"&&this.linkpath!==void 0?this[aA](this.linkpath):this.linkpath,size:this.size,uid:this.portable?void 0:this.uid,uname:this.portable?void 0:this.uname,dev:this.portable?void 0:this.readEntry.dev,ino:this.portable?void 0:this.readEntry.ino,nlink:this.portable?void 0:this.readEntry.nlink}).encode());let n=this.header?.block;if(!n)throw new Error(\"failed to encode header\");super.write(n),e.pipe(this)}[aA](e){return Che(e,this.prefix)}[fT](e){return Ehe(e,this.type===\"Directory\",this.portable)}write(e,t,r){typeof t==\"function\"&&(r=t,t=void 0),typeof e==\"string\"&&(e=Buffer.from(e,typeof t==\"string\"?t:\"utf8\"));let s=e.length;if(s>this.blockRemain)throw new Error(\"writing more to entry than is appropriate\");return this.blockRemain-=s,super.write(e,r)}end(e,t,r){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),typeof e==\"function\"&&(r=e,t=void 0,e=void 0),typeof t==\"function\"&&(r=t,t=void 0),typeof e==\"string\"&&(e=Buffer.from(e,t??\"utf8\")),r&&this.once(\"finish\",r),e?super.end(e,r):super.end(r),this}},hnt=e=>e.isFile()?\"File\":e.isDirectory()?\"Directory\":e.isSymbolicLink()?\"SymbolicLink\":\"Unsupported\",gnt=class OI{tail;head;length=0;static create(t=[]){return new OI(t)}constructor(t=[]){for(let r of t)this.push(r)}*[Symbol.iterator](){for(let t=this.head;t;t=t.next)yield t.value}removeNode(t){if(t.list!==this)throw new Error(\"removing node which does not belong to this list\");let r=t.next,s=t.prev;return r&&(r.prev=s),s&&(s.next=r),t===this.head&&(this.head=r),t===this.tail&&(this.tail=s),this.length--,t.next=void 0,t.prev=void 0,t.list=void 0,r}unshiftNode(t){if(t===this.head)return;t.list&&t.list.removeNode(t);let r=this.head;t.list=this,t.next=r,r&&(r.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}pushNode(t){if(t===this.tail)return;t.list&&t.list.removeNode(t);let r=this.tail;t.list=this,t.prev=r,r&&(r.next=t),this.tail=t,this.head||(this.head=t),this.length++}push(...t){for(let r=0,s=t.length;r<s;r++)mnt(this,t[r]);return this.length}unshift(...t){for(var r=0,s=t.length;r<s;r++)ynt(this,t[r]);return this.length}pop(){if(!this.tail)return;let t=this.tail.value,r=this.tail;return this.tail=this.tail.prev,this.tail?this.tail.next=void 0:this.head=void 0,r.list=void 0,this.length--,t}shift(){if(!this.head)return;let t=this.head.value,r=this.head;return this.head=this.head.next,this.head?this.head.prev=void 0:this.tail=void 0,r.list=void 0,this.length--,t}forEach(t,r){r=r||this;for(let s=this.head,a=0;s;a++)t.call(r,s.value,a,this),s=s.next}forEachReverse(t,r){r=r||this;for(let s=this.tail,a=this.length-1;s;a--)t.call(r,s.value,a,this),s=s.prev}get(t){let r=0,s=this.head;for(;s&&r<t;r++)s=s.next;if(r===t&&s)return s.value}getReverse(t){let r=0,s=this.tail;for(;s&&r<t;r++)s=s.prev;if(r===t&&s)return s.value}map(t,r){r=r||this;let s=new OI;for(let a=this.head;a;)s.push(t.call(r,a.value,this)),a=a.next;return s}mapReverse(t,r){r=r||this;var s=new OI;for(let a=this.tail;a;)s.push(t.call(r,a.value,this)),a=a.prev;return s}reduce(t,r){let s,a=this.head;if(arguments.length>1)s=r;else if(this.head)a=this.head.next,s=this.head.value;else throw new TypeError(\"Reduce of empty list with no initial value\");for(var n=0;a;n++)s=t(s,a.value,n),a=a.next;return s}reduceReverse(t,r){let s,a=this.tail;if(arguments.length>1)s=r;else if(this.tail)a=this.tail.prev,s=this.tail.value;else throw new TypeError(\"Reduce of empty list with no initial value\");for(let n=this.length-1;a;n--)s=t(s,a.value,n),a=a.prev;return s}toArray(){let t=new Array(this.length);for(let r=0,s=this.head;s;r++)t[r]=s.value,s=s.next;return t}toArrayReverse(){let t=new Array(this.length);for(let r=0,s=this.tail;s;r++)t[r]=s.value,s=s.prev;return t}slice(t=0,r=this.length){r<0&&(r+=this.length),t<0&&(t+=this.length);let s=new OI;if(r<t||r<0)return s;t<0&&(t=0),r>this.length&&(r=this.length);let a=this.head,n=0;for(n=0;a&&n<t;n++)a=a.next;for(;a&&n<r;n++,a=a.next)s.push(a.value);return s}sliceReverse(t=0,r=this.length){r<0&&(r+=this.length),t<0&&(t+=this.length);let s=new OI;if(r<t||r<0)return s;t<0&&(t=0),r>this.length&&(r=this.length);let a=this.length,n=this.tail;for(;n&&a>r;a--)n=n.prev;for(;n&&a>t;a--,n=n.prev)s.push(n.value);return s}splice(t,r=0,...s){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);let a=this.head;for(let c=0;a&&c<t;c++)a=a.next;let n=[];for(let c=0;a&&c<r;c++)n.push(a.value),a=this.removeNode(a);a?a!==this.tail&&(a=a.prev):a=this.tail;for(let c of s)a=dnt(this,a,c);return n}reverse(){let t=this.head,r=this.tail;for(let s=t;s;s=s.prev){let a=s.prev;s.prev=s.next,s.next=a}return this.head=r,this.tail=t,this}};M6=class{list;next;prev;value;constructor(e,t,r,s){this.list=s,this.value=e,t?(t.next=this,this.prev=t):this.prev=void 0,r?(r.prev=this,this.next=r):this.next=void 0}},Wpe=class{path;absolute;entry;stat;readdir;pending=!1;ignore=!1;piped=!1;constructor(e,t){this.path=e||\"./\",this.absolute=t}},Vpe=Buffer.alloc(1024),nT=Symbol(\"onStat\"),wv=Symbol(\"ended\"),Wu=Symbol(\"queue\"),dm=Symbol(\"current\"),mm=Symbol(\"process\"),Bv=Symbol(\"processing\"),e6=Symbol(\"processJob\"),Vu=Symbol(\"jobs\"),t6=Symbol(\"jobDone\"),iT=Symbol(\"addFSEntry\"),Ype=Symbol(\"addTarEntry\"),C6=Symbol(\"stat\"),w6=Symbol(\"readdir\"),sT=Symbol(\"onreaddir\"),oT=Symbol(\"pipe\"),Kpe=Symbol(\"entry\"),r6=Symbol(\"entryOpt\"),aT=Symbol(\"writeEntryClass\"),Bhe=Symbol(\"write\"),n6=Symbol(\"ondrain\"),IT=class extends vm{sync=!1;opt;cwd;maxReadSize;preservePaths;strict;noPax;prefix;linkCache;statCache;file;portable;zip;readdirCache;noDirRecurse;follow;noMtime;mtime;filter;jobs;[aT];onWriteEntry;[Wu];[Vu]=0;[Bv]=!1;[wv]=!1;constructor(e={}){if(super(),this.opt=e,this.file=e.file||\"\",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=cn(e.prefix||\"\"),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this.onWriteEntry=e.onWriteEntry,this[aT]=whe,typeof e.onwarn==\"function\"&&this.on(\"warn\",e.onwarn),this.portable=!!e.portable,e.gzip||e.brotli||e.zstd){if((e.gzip?1:0)+(e.brotli?1:0)+(e.zstd?1:0)>1)throw new TypeError(\"gzip, brotli, zstd are mutually exclusive\");if(e.gzip&&(typeof e.gzip!=\"object\"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new Prt(e.gzip)),e.brotli&&(typeof e.brotli!=\"object\"&&(e.brotli={}),this.zip=new krt(e.brotli)),e.zstd&&(typeof e.zstd!=\"object\"&&(e.zstd={}),this.zip=new Rrt(e.zstd)),!this.zip)throw new Error(\"impossible\");let t=this.zip;t.on(\"data\",r=>super.write(r)),t.on(\"end\",()=>super.end()),t.on(\"drain\",()=>this[n6]()),this.on(\"resume\",()=>t.resume())}else this.on(\"drain\",this[n6]);this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,e.mtime&&(this.mtime=e.mtime),this.filter=typeof e.filter==\"function\"?e.filter:()=>!0,this[Wu]=new gnt,this[Vu]=0,this.jobs=Number(e.jobs)||4,this[Bv]=!1,this[wv]=!1}[Bhe](e){return super.write(e)}add(e){return this.write(e),this}end(e,t,r){return typeof e==\"function\"&&(r=e,e=void 0),typeof t==\"function\"&&(r=t,t=void 0),e&&this.add(e),this[wv]=!0,this[mm](),r&&r(),this}write(e){if(this[wv])throw new Error(\"write after end\");return e instanceof mhe?this[Ype](e):this[iT](e),this.flowing}[Ype](e){let t=cn(I6.default.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let r=new Wpe(e.path,t);r.entry=new pnt(e,this[r6](r)),r.entry.on(\"end\",()=>this[t6](r)),this[Vu]+=1,this[Wu].push(r)}this[mm]()}[iT](e){let t=cn(I6.default.resolve(this.cwd,e));this[Wu].push(new Wpe(e,t)),this[mm]()}[C6](e){e.pending=!0,this[Vu]+=1;let t=this.follow?\"stat\":\"lstat\";Fv.default[t](e.absolute,(r,s)=>{e.pending=!1,this[Vu]-=1,r?this.emit(\"error\",r):this[nT](e,s)})}[nT](e,t){this.statCache.set(e.absolute,t),e.stat=t,this.filter(e.path,t)?t.isFile()&&t.nlink>1&&e===this[dm]&&!this.linkCache.get(`${t.dev}:${t.ino}`)&&!this.sync&&this[e6](e):e.ignore=!0,this[mm]()}[w6](e){e.pending=!0,this[Vu]+=1,Fv.default.readdir(e.absolute,(t,r)=>{if(e.pending=!1,this[Vu]-=1,t)return this.emit(\"error\",t);this[sT](e,r)})}[sT](e,t){this.readdirCache.set(e.absolute,t),e.readdir=t,this[mm]()}[mm](){if(!this[Bv]){this[Bv]=!0;for(let e=this[Wu].head;e&&this[Vu]<this.jobs;e=e.next)if(this[e6](e.value),e.value.ignore){let t=e.next;this[Wu].removeNode(e),e.next=t}this[Bv]=!1,this[wv]&&!this[Wu].length&&this[Vu]===0&&(this.zip?this.zip.end(Vpe):(super.write(Vpe),super.end()))}}get[dm](){return this[Wu]&&this[Wu].head&&this[Wu].head.value}[t6](e){this[Wu].shift(),this[Vu]-=1,this[mm]()}[e6](e){if(!e.pending){if(e.entry){e===this[dm]&&!e.piped&&this[oT](e);return}if(!e.stat){let t=this.statCache.get(e.absolute);t?this[nT](e,t):this[C6](e)}if(e.stat&&!e.ignore){if(!this.noDirRecurse&&e.stat.isDirectory()&&!e.readdir){let t=this.readdirCache.get(e.absolute);if(t?this[sT](e,t):this[w6](e),!e.readdir)return}if(e.entry=this[Kpe](e),!e.entry){e.ignore=!0;return}e===this[dm]&&!e.piped&&this[oT](e)}}}[r6](e){return{onwarn:(t,r,s)=>this.warn(t,r,s),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix,onWriteEntry:this.onWriteEntry}}[Kpe](e){this[Vu]+=1;try{return new this[aT](e.path,this[r6](e)).on(\"end\",()=>this[t6](e)).on(\"error\",t=>this.emit(\"error\",t))}catch(t){this.emit(\"error\",t)}}[n6](){this[dm]&&this[dm].entry&&this[dm].entry.resume()}[oT](e){e.piped=!0,e.readdir&&e.readdir.forEach(s=>{let a=e.path,n=a===\"./\"?\"\":a.replace(/\\/*$/,\"/\");this[iT](n+s)});let t=e.entry,r=this.zip;if(!t)throw new Error(\"cannot pipe without source\");r?t.on(\"data\",s=>{r.write(s)||t.pause()}):t.on(\"data\",s=>{super.write(s)||t.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}warn(e,t,r={}){mT(this,e,t,r)}},U6=class extends IT{sync=!0;constructor(e){super(e),this[aT]=Ant}pause(){}resume(){}[C6](e){let t=this.follow?\"statSync\":\"lstatSync\";this[nT](e,Fv.default[t](e.absolute))}[w6](e){this[sT](e,Fv.default.readdirSync(e.absolute))}[oT](e){let t=e.entry,r=this.zip;if(e.readdir&&e.readdir.forEach(s=>{let a=e.path,n=a===\"./\"?\"\":a.replace(/\\/*$/,\"/\");this[iT](n+s)}),!t)throw new Error(\"Cannot pipe without source\");r?t.on(\"data\",s=>{r.write(s)}):t.on(\"data\",s=>{super[Bhe](s)})}},Ent=(e,t)=>{let r=new U6(e),s=new ahe(e.file,{mode:e.mode||438});r.pipe(s),vhe(r,t)},Int=(e,t)=>{let r=new IT(e),s=new hT(e.file,{mode:e.mode||438});r.pipe(s);let a=new Promise((n,c)=>{s.on(\"error\",c),s.on(\"close\",n),r.on(\"error\",c)});return She(r,t),a},vhe=(e,t)=>{t.forEach(r=>{r.charAt(0)===\"@\"?yT({file:R6.default.resolve(e.cwd,r.slice(1)),sync:!0,noResume:!0,onReadEntry:s=>e.add(s)}):e.add(r)}),e.end()},She=async(e,t)=>{for(let r=0;r<t.length;r++){let s=String(t[r]);s.charAt(0)===\"@\"?await yT({file:R6.default.resolve(String(e.cwd),s.slice(1)),noResume:!0,onReadEntry:a=>{e.add(a)}}):e.add(s)}e.end()},Cnt=(e,t)=>{let r=new U6(e);return vhe(r,t),r},wnt=(e,t)=>{let r=new IT(e);return She(r,t),r},lUt=Ov(Ent,Int,Cnt,wnt,(e,t)=>{if(!t?.length)throw new TypeError(\"no paths specified to add to archive\")}),Bnt=process.platform,vnt=Bnt===\"win32\",{O_CREAT:Snt,O_TRUNC:Dnt,O_WRONLY:bnt}=j6.default.constants,bhe=Number(process.env.__FAKE_FS_O_FILENAME__)||j6.default.constants.UV_FS_O_FILEMAP||0,Pnt=vnt&&!!bhe,xnt=512*1024,knt=bhe|Dnt|Snt|bnt,Phe=Pnt?e=>e<xnt?knt:\"w\":()=>\"w\",B6=(e,t,r)=>{try{return Lv.default.lchownSync(e,t,r)}catch(s){if(s?.code!==\"ENOENT\")throw s}},AT=(e,t,r,s)=>{Lv.default.lchown(e,t,r,a=>{s(a&&a?.code!==\"ENOENT\"?a:null)})},Qnt=(e,t,r,s,a)=>{if(t.isDirectory())xhe(MI.default.resolve(e,t.name),r,s,n=>{if(n)return a(n);let c=MI.default.resolve(e,t.name);AT(c,r,s,a)});else{let n=MI.default.resolve(e,t.name);AT(n,r,s,a)}},xhe=(e,t,r,s)=>{Lv.default.readdir(e,{withFileTypes:!0},(a,n)=>{if(a){if(a.code===\"ENOENT\")return s();if(a.code!==\"ENOTDIR\"&&a.code!==\"ENOTSUP\")return s(a)}if(a||!n.length)return AT(e,t,r,s);let c=n.length,f=null,p=h=>{if(!f){if(h)return s(f=h);if(--c===0)return AT(e,t,r,s)}};for(let h of n)Qnt(e,h,t,r,p)})},Rnt=(e,t,r,s)=>{t.isDirectory()&&khe(MI.default.resolve(e,t.name),r,s),B6(MI.default.resolve(e,t.name),r,s)},khe=(e,t,r)=>{let s;try{s=Lv.default.readdirSync(e,{withFileTypes:!0})}catch(a){let n=a;if(n?.code===\"ENOENT\")return;if(n?.code===\"ENOTDIR\"||n?.code===\"ENOTSUP\")return B6(e,t,r);throw n}for(let a of s)Rnt(e,a,t,r);return B6(e,t,r)},Rhe=class extends Error{path;code;syscall=\"chdir\";constructor(e,t){super(`${t}: Cannot cd into '${e}'`),this.path=e,this.code=t}get name(){return\"CwdError\"}},CT=class extends Error{path;symlink;syscall=\"symlink\";code=\"TAR_SYMLINK_ERROR\";constructor(e,t){super(\"TAR_SYMLINK_ERROR: Cannot extract through symbolic link\"),this.symlink=e,this.path=t}get name(){return\"SymlinkError\"}},Tnt=(e,t)=>{yl.default.stat(e,(r,s)=>{(r||!s.isDirectory())&&(r=new Rhe(e,r?.code||\"ENOTDIR\")),t(r)})},Fnt=(e,t,r)=>{e=cn(e);let s=t.umask??18,a=t.mode|448,n=(a&s)!==0,c=t.uid,f=t.gid,p=typeof c==\"number\"&&typeof f==\"number\"&&(c!==t.processUid||f!==t.processGid),h=t.preserve,E=t.unlink,C=cn(t.cwd),S=(I,T)=>{I?r(I):T&&p?xhe(T,c,f,O=>S(O)):n?yl.default.chmod(e,a,r):r()};if(e===C)return Tnt(e,S);if(h)return Qhe.default.mkdir(e,{mode:a,recursive:!0}).then(I=>S(null,I??void 0),S);let x=cn(Nv.default.relative(C,e)).split(\"/\");v6(C,x,a,E,C,void 0,S)},v6=(e,t,r,s,a,n,c)=>{if(!t.length)return c(null,n);let f=t.shift(),p=cn(Nv.default.resolve(e+\"/\"+f));yl.default.mkdir(p,r,The(p,t,r,s,a,n,c))},The=(e,t,r,s,a,n,c)=>f=>{f?yl.default.lstat(e,(p,h)=>{if(p)p.path=p.path&&cn(p.path),c(p);else if(h.isDirectory())v6(e,t,r,s,a,n,c);else if(s)yl.default.unlink(e,E=>{if(E)return c(E);yl.default.mkdir(e,r,The(e,t,r,s,a,n,c))});else{if(h.isSymbolicLink())return c(new CT(e,e+\"/\"+t.join(\"/\")));c(f)}}):(n=n||e,v6(e,t,r,s,a,n,c))},Nnt=e=>{let t=!1,r;try{t=yl.default.statSync(e).isDirectory()}catch(s){r=s?.code}finally{if(!t)throw new Rhe(e,r??\"ENOTDIR\")}},Ont=(e,t)=>{e=cn(e);let r=t.umask??18,s=t.mode|448,a=(s&r)!==0,n=t.uid,c=t.gid,f=typeof n==\"number\"&&typeof c==\"number\"&&(n!==t.processUid||c!==t.processGid),p=t.preserve,h=t.unlink,E=cn(t.cwd),C=I=>{I&&f&&khe(I,n,c),a&&yl.default.chmodSync(e,s)};if(e===E)return Nnt(E),C();if(p)return C(yl.default.mkdirSync(e,{mode:s,recursive:!0})??void 0);let S=cn(Nv.default.relative(E,e)).split(\"/\"),x;for(let I=S.shift(),T=E;I&&(T+=\"/\"+I);I=S.shift()){T=cn(Nv.default.resolve(T));try{yl.default.mkdirSync(T,s),x=x||T}catch{let O=yl.default.lstatSync(T);if(O.isDirectory())continue;if(h){yl.default.unlinkSync(T),yl.default.mkdirSync(T,s),x=x||T;continue}else if(O.isSymbolicLink())return new CT(T,T+\"/\"+S.join(\"/\"))}}return C(x)},i6=Object.create(null),Jpe=1e4,QI=new Set,Lnt=e=>{QI.has(e)?QI.delete(e):i6[e]=e.normalize(\"NFD\").toLocaleLowerCase(\"en\").toLocaleUpperCase(\"en\"),QI.add(e);let t=i6[e],r=QI.size-Jpe;if(r>Jpe/10){for(let s of QI)if(QI.delete(s),delete i6[s],--r<=0)break}return t},Mnt=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Unt=Mnt===\"win32\",_nt=e=>e.split(\"/\").slice(0,-1).reduce((t,r)=>{let s=t[t.length-1];return s!==void 0&&(r=(0,G6.join)(s,r)),t.push(r||\"/\"),t},[]),Hnt=class{#e=new Map;#t=new Map;#s=new Set;reserve(e,t){e=Unt?[\"win32 parallelization disabled\"]:e.map(s=>Pv((0,G6.join)(Lnt(s))));let r=new Set(e.map(s=>_nt(s)).reduce((s,a)=>s.concat(a)));this.#t.set(t,{dirs:r,paths:e});for(let s of e){let a=this.#e.get(s);a?a.push(t):this.#e.set(s,[t])}for(let s of r){let a=this.#e.get(s);if(!a)this.#e.set(s,[new Set([t])]);else{let n=a[a.length-1];n instanceof Set?n.add(t):a.push(new Set([t]))}}return this.#i(t)}#r(e){let t=this.#t.get(e);if(!t)throw new Error(\"function does not have any path reservations\");return{paths:t.paths.map(r=>this.#e.get(r)),dirs:[...t.dirs].map(r=>this.#e.get(r))}}check(e){let{paths:t,dirs:r}=this.#r(e);return t.every(s=>s&&s[0]===e)&&r.every(s=>s&&s[0]instanceof Set&&s[0].has(e))}#i(e){return this.#s.has(e)||!this.check(e)?!1:(this.#s.add(e),e(()=>this.#n(e)),!0)}#n(e){if(!this.#s.has(e))return!1;let t=this.#t.get(e);if(!t)throw new Error(\"invalid reservation\");let{paths:r,dirs:s}=t,a=new Set;for(let n of r){let c=this.#e.get(n);if(!c||c?.[0]!==e)continue;let f=c[1];if(!f){this.#e.delete(n);continue}if(c.shift(),typeof f==\"function\")a.add(f);else for(let p of f)a.add(p)}for(let n of s){let c=this.#e.get(n),f=c?.[0];if(!(!c||!(f instanceof Set)))if(f.size===1&&c.length===1){this.#e.delete(n);continue}else if(f.size===1){c.shift();let p=c[0];typeof p==\"function\"&&a.add(p)}else f.delete(e)}return this.#s.delete(e),a.forEach(n=>this.#i(n)),!0}},jnt=()=>process.umask(),zpe=Symbol(\"onEntry\"),S6=Symbol(\"checkFs\"),Zpe=Symbol(\"checkFs2\"),D6=Symbol(\"isReusable\"),Uc=Symbol(\"makeFs\"),b6=Symbol(\"file\"),P6=Symbol(\"directory\"),lT=Symbol(\"link\"),Xpe=Symbol(\"symlink\"),$pe=Symbol(\"hardlink\"),Dv=Symbol(\"ensureNoSymlink\"),ehe=Symbol(\"unsupported\"),the=Symbol(\"checkPath\"),s6=Symbol(\"stripAbsolutePath\"),O0=Symbol(\"mkdir\"),Xs=Symbol(\"onError\"),ZR=Symbol(\"pending\"),rhe=Symbol(\"pend\"),RI=Symbol(\"unpend\"),o6=Symbol(\"ended\"),a6=Symbol(\"maybeClose\"),x6=Symbol(\"skip\"),xv=Symbol(\"doChown\"),kv=Symbol(\"uid\"),Qv=Symbol(\"gid\"),Rv=Symbol(\"checkedCwd\"),Gnt=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Tv=Gnt===\"win32\",qnt=1024,Wnt=(e,t)=>{if(!Tv)return wn.default.unlink(e,t);let r=e+\".DELETE.\"+(0,H6.randomBytes)(16).toString(\"hex\");wn.default.rename(e,r,s=>{if(s)return t(s);wn.default.unlink(r,t)})},Vnt=e=>{if(!Tv)return wn.default.unlinkSync(e);let t=e+\".DELETE.\"+(0,H6.randomBytes)(16).toString(\"hex\");wn.default.renameSync(e,t),wn.default.unlinkSync(t)},nhe=(e,t,r)=>e!==void 0&&e===e>>>0?e:t!==void 0&&t===t>>>0?t:r,q6=class extends Bm{[o6]=!1;[Rv]=!1;[ZR]=0;reservations=new Hnt;transform;writable=!0;readable=!1;uid;gid;setOwner;preserveOwner;processGid;processUid;maxDepth;forceChown;win32;newer;keep;noMtime;preservePaths;unlink;cwd;strip;processUmask;umask;dmode;fmode;chmod;constructor(e={}){if(e.ondone=()=>{this[o6]=!0,this[a6]()},super(e),this.transform=e.transform,this.chmod=!!e.chmod,typeof e.uid==\"number\"||typeof e.gid==\"number\"){if(typeof e.uid!=\"number\"||typeof e.gid!=\"number\")throw new TypeError(\"cannot set owner without number uid and gid\");if(e.preserveOwner)throw new TypeError(\"cannot preserve owner in archive and also set owner explicitly\");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=void 0,this.gid=void 0,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!=\"number\"?this.preserveOwner=!!(process.getuid&&process.getuid()===0):this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():void 0,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():void 0,this.maxDepth=typeof e.maxDepth==\"number\"?e.maxDepth:qnt,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||Tv,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=cn(gs.default.resolve(e.cwd||process.cwd())),this.strip=Number(e.strip)||0,this.processUmask=this.chmod?typeof e.processUmask==\"number\"?e.processUmask:jnt():0,this.umask=typeof e.umask==\"number\"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on(\"entry\",t=>this[zpe](t))}warn(e,t,r={}){return(e===\"TAR_BAD_ARCHIVE\"||e===\"TAR_ABORT\")&&(r.recoverable=!1),super.warn(e,t,r)}[a6](){this[o6]&&this[ZR]===0&&(this.emit(\"prefinish\"),this.emit(\"finish\"),this.emit(\"end\"))}[s6](e,t){let r=e[t],{type:s}=e;if(!r||this.preservePaths)return!0;let a=r.split(\"/\");if(a.includes(\"..\")||Tv&&/^[a-z]:\\.\\.$/i.test(a[0]??\"\")){if(t===\"path\"||s===\"Link\")return this.warn(\"TAR_ENTRY_ERROR\",`${t} contains '..'`,{entry:e,[t]:r}),!1;{let f=gs.default.posix.dirname(e.path),p=gs.default.posix.normalize(gs.default.posix.join(f,r));if(p.startsWith(\"../\")||p===\"..\")return this.warn(\"TAR_ENTRY_ERROR\",`${t} escapes extraction directory`,{entry:e,[t]:r}),!1}}let[n,c]=O6(r);return n&&(e[t]=String(c),this.warn(\"TAR_ENTRY_INFO\",`stripping ${n} from absolute ${t}`,{entry:e,[t]:r})),!0}[the](e){let t=cn(e.path),r=t.split(\"/\");if(this.strip){if(r.length<this.strip)return!1;if(e.type===\"Link\"){let s=cn(String(e.linkpath)).split(\"/\");if(s.length>=this.strip)e.linkpath=s.slice(this.strip).join(\"/\");else return!1}r.splice(0,this.strip),e.path=r.join(\"/\")}if(isFinite(this.maxDepth)&&r.length>this.maxDepth)return this.warn(\"TAR_ENTRY_ERROR\",\"path excessively deep\",{entry:e,path:t,depth:r.length,maxDepth:this.maxDepth}),!1;if(!this[s6](e,\"path\")||!this[s6](e,\"linkpath\"))return!1;if(gs.default.isAbsolute(e.path)?e.absolute=cn(gs.default.resolve(e.path)):e.absolute=cn(gs.default.resolve(this.cwd,e.path)),!this.preservePaths&&typeof e.absolute==\"string\"&&e.absolute.indexOf(this.cwd+\"/\")!==0&&e.absolute!==this.cwd)return this.warn(\"TAR_ENTRY_ERROR\",\"path escaped extraction target\",{entry:e,path:cn(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!==\"Directory\"&&e.type!==\"GNUDumpDir\")return!1;if(this.win32){let{root:s}=gs.default.win32.parse(String(e.absolute));e.absolute=s+_pe(String(e.absolute).slice(s.length));let{root:a}=gs.default.win32.parse(e.path);e.path=a+_pe(e.path.slice(a.length))}return!0}[zpe](e){if(!this[the](e))return e.resume();switch(Dhe.default.equal(typeof e.absolute,\"string\"),e.type){case\"Directory\":case\"GNUDumpDir\":e.mode&&(e.mode=e.mode|448);case\"File\":case\"OldFile\":case\"ContiguousFile\":case\"Link\":case\"SymbolicLink\":return this[S6](e);default:return this[ehe](e)}}[Xs](e,t){e.name===\"CwdError\"?this.emit(\"error\",e):(this.warn(\"TAR_ENTRY_ERROR\",e,{entry:t}),this[RI](),t.resume())}[O0](e,t,r){Fnt(cn(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t},r)}[xv](e){return this.forceChown||this.preserveOwner&&(typeof e.uid==\"number\"&&e.uid!==this.processUid||typeof e.gid==\"number\"&&e.gid!==this.processGid)||typeof this.uid==\"number\"&&this.uid!==this.processUid||typeof this.gid==\"number\"&&this.gid!==this.processGid}[kv](e){return nhe(this.uid,e.uid,this.processUid)}[Qv](e){return nhe(this.gid,e.gid,this.processGid)}[b6](e,t){let r=typeof e.mode==\"number\"?e.mode&4095:this.fmode,s=new hT(String(e.absolute),{flags:Phe(e.size),mode:r,autoClose:!1});s.on(\"error\",f=>{s.fd&&wn.default.close(s.fd,()=>{}),s.write=()=>!0,this[Xs](f,e),t()});let a=1,n=f=>{if(f){s.fd&&wn.default.close(s.fd,()=>{}),this[Xs](f,e),t();return}--a===0&&s.fd!==void 0&&wn.default.close(s.fd,p=>{p?this[Xs](p,e):this[RI](),t()})};s.on(\"finish\",()=>{let f=String(e.absolute),p=s.fd;if(typeof p==\"number\"&&e.mtime&&!this.noMtime){a++;let h=e.atime||new Date,E=e.mtime;wn.default.futimes(p,h,E,C=>C?wn.default.utimes(f,h,E,S=>n(S&&C)):n())}if(typeof p==\"number\"&&this[xv](e)){a++;let h=this[kv](e),E=this[Qv](e);typeof h==\"number\"&&typeof E==\"number\"&&wn.default.fchown(p,h,E,C=>C?wn.default.chown(f,h,E,S=>n(S&&C)):n())}n()});let c=this.transform&&this.transform(e)||e;c!==e&&(c.on(\"error\",f=>{this[Xs](f,e),t()}),e.pipe(c)),c.pipe(s)}[P6](e,t){let r=typeof e.mode==\"number\"?e.mode&4095:this.dmode;this[O0](String(e.absolute),r,s=>{if(s){this[Xs](s,e),t();return}let a=1,n=()=>{--a===0&&(t(),this[RI](),e.resume())};e.mtime&&!this.noMtime&&(a++,wn.default.utimes(String(e.absolute),e.atime||new Date,e.mtime,n)),this[xv](e)&&(a++,wn.default.chown(String(e.absolute),Number(this[kv](e)),Number(this[Qv](e)),n)),n()})}[ehe](e){e.unsupported=!0,this.warn(\"TAR_ENTRY_UNSUPPORTED\",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Xpe](e,t){let r=cn(gs.default.relative(this.cwd,gs.default.resolve(gs.default.dirname(String(e.absolute)),String(e.linkpath)))).split(\"/\");this[Dv](e,this.cwd,r,()=>this[lT](e,String(e.linkpath),\"symlink\",t),s=>{this[Xs](s,e),t()})}[$pe](e,t){let r=cn(gs.default.resolve(this.cwd,String(e.linkpath))),s=cn(String(e.linkpath)).split(\"/\");this[Dv](e,this.cwd,s,()=>this[lT](e,r,\"link\",t),a=>{this[Xs](a,e),t()})}[Dv](e,t,r,s,a){let n=r.shift();if(this.preservePaths||n===void 0)return s();let c=gs.default.resolve(t,n);wn.default.lstat(c,(f,p)=>{if(f)return s();if(p?.isSymbolicLink())return a(new CT(c,gs.default.resolve(c,r.join(\"/\"))));this[Dv](e,c,r,s,a)})}[rhe](){this[ZR]++}[RI](){this[ZR]--,this[a6]()}[x6](e){this[RI](),e.resume()}[D6](e,t){return e.type===\"File\"&&!this.unlink&&t.isFile()&&t.nlink<=1&&!Tv}[S6](e){this[rhe]();let t=[e.path];e.linkpath&&t.push(e.linkpath),this.reservations.reserve(t,r=>this[Zpe](e,r))}[Zpe](e,t){let r=c=>{t(c)},s=()=>{this[O0](this.cwd,this.dmode,c=>{if(c){this[Xs](c,e),r();return}this[Rv]=!0,a()})},a=()=>{if(e.absolute!==this.cwd){let c=cn(gs.default.dirname(String(e.absolute)));if(c!==this.cwd)return this[O0](c,this.dmode,f=>{if(f){this[Xs](f,e),r();return}n()})}n()},n=()=>{wn.default.lstat(String(e.absolute),(c,f)=>{if(f&&(this.keep||this.newer&&f.mtime>(e.mtime??f.mtime))){this[x6](e),r();return}if(c||this[D6](e,f))return this[Uc](null,e,r);if(f.isDirectory()){if(e.type===\"Directory\"){let p=this.chmod&&e.mode&&(f.mode&4095)!==e.mode,h=E=>this[Uc](E??null,e,r);return p?wn.default.chmod(String(e.absolute),Number(e.mode),h):h()}if(e.absolute!==this.cwd)return wn.default.rmdir(String(e.absolute),p=>this[Uc](p??null,e,r))}if(e.absolute===this.cwd)return this[Uc](null,e,r);Wnt(String(e.absolute),p=>this[Uc](p??null,e,r))})};this[Rv]?a():s()}[Uc](e,t,r){if(e){this[Xs](e,t),r();return}switch(t.type){case\"File\":case\"OldFile\":case\"ContiguousFile\":return this[b6](t,r);case\"Link\":return this[$pe](t,r);case\"SymbolicLink\":return this[Xpe](t,r);case\"Directory\":case\"GNUDumpDir\":return this[P6](t,r)}}[lT](e,t,r,s){wn.default[r](t,String(e.absolute),a=>{a?this[Xs](a,e):(this[RI](),e.resume()),s()})}},vv=e=>{try{return[null,e()]}catch(t){return[t,null]}},Fhe=class extends q6{sync=!0;[Uc](e,t){return super[Uc](e,t,()=>{})}[S6](e){if(!this[Rv]){let a=this[O0](this.cwd,this.dmode);if(a)return this[Xs](a,e);this[Rv]=!0}if(e.absolute!==this.cwd){let a=cn(gs.default.dirname(String(e.absolute)));if(a!==this.cwd){let n=this[O0](a,this.dmode);if(n)return this[Xs](n,e)}}let[t,r]=vv(()=>wn.default.lstatSync(String(e.absolute)));if(r&&(this.keep||this.newer&&r.mtime>(e.mtime??r.mtime)))return this[x6](e);if(t||this[D6](e,r))return this[Uc](null,e);if(r.isDirectory()){if(e.type===\"Directory\"){let n=this.chmod&&e.mode&&(r.mode&4095)!==e.mode,[c]=n?vv(()=>{wn.default.chmodSync(String(e.absolute),Number(e.mode))}):[];return this[Uc](c,e)}let[a]=vv(()=>wn.default.rmdirSync(String(e.absolute)));this[Uc](a,e)}let[s]=e.absolute===this.cwd?[]:vv(()=>Vnt(String(e.absolute)));this[Uc](s,e)}[b6](e,t){let r=typeof e.mode==\"number\"?e.mode&4095:this.fmode,s=c=>{let f;try{wn.default.closeSync(a)}catch(p){f=p}(c||f)&&this[Xs](c||f,e),t()},a;try{a=wn.default.openSync(String(e.absolute),Phe(e.size),r)}catch(c){return s(c)}let n=this.transform&&this.transform(e)||e;n!==e&&(n.on(\"error\",c=>this[Xs](c,e)),e.pipe(n)),n.on(\"data\",c=>{try{wn.default.writeSync(a,c,0,c.length)}catch(f){s(f)}}),n.on(\"end\",()=>{let c=null;if(e.mtime&&!this.noMtime){let f=e.atime||new Date,p=e.mtime;try{wn.default.futimesSync(a,f,p)}catch(h){try{wn.default.utimesSync(String(e.absolute),f,p)}catch{c=h}}}if(this[xv](e)){let f=this[kv](e),p=this[Qv](e);try{wn.default.fchownSync(a,Number(f),Number(p))}catch(h){try{wn.default.chownSync(String(e.absolute),Number(f),Number(p))}catch{c=c||h}}}s(c)})}[P6](e,t){let r=typeof e.mode==\"number\"?e.mode&4095:this.dmode,s=this[O0](String(e.absolute),r);if(s){this[Xs](s,e),t();return}if(e.mtime&&!this.noMtime)try{wn.default.utimesSync(String(e.absolute),e.atime||new Date,e.mtime)}catch{}if(this[xv](e))try{wn.default.chownSync(String(e.absolute),Number(this[kv](e)),Number(this[Qv](e)))}catch{}t(),e.resume()}[O0](e,t){try{return Ont(cn(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cwd:this.cwd,mode:t})}catch(r){return r}}[Dv](e,t,r,s,a){if(this.preservePaths||!r.length)return s();let n=t;for(let c of r){n=gs.default.resolve(n,c);let[f,p]=vv(()=>wn.default.lstatSync(n));if(f)return s();if(p.isSymbolicLink())return a(new CT(n,gs.default.resolve(t,r.join(\"/\"))))}s()}[lT](e,t,r,s){let a=`${r}Sync`;try{wn.default[a](t,String(e.absolute)),s(),e.resume()}catch(n){return this[Xs](n,e)}}},Ynt=e=>{let t=new Fhe(e),r=e.file,s=_6.default.statSync(r),a=e.maxReadSize||16*1024*1024;new mrt(r,{readSize:a,size:s.size}).pipe(t)},Knt=(e,t)=>{let r=new q6(e),s=e.maxReadSize||16*1024*1024,a=e.file;return new Promise((n,c)=>{r.on(\"error\",c),r.on(\"close\",n),_6.default.stat(a,(f,p)=>{if(f)c(f);else{let h=new Q6(a,{readSize:s,size:p.size});h.on(\"error\",c),h.pipe(r)}})})},cUt=Ov(Ynt,Knt,e=>new Fhe(e),e=>new q6(e),(e,t)=>{t?.length&&yhe(e,t)}),Jnt=(e,t)=>{let r=new U6(e),s=!0,a,n;try{try{a=ml.default.openSync(e.file,\"r+\")}catch(p){if(p?.code===\"ENOENT\")a=ml.default.openSync(e.file,\"w+\");else throw p}let c=ml.default.fstatSync(a),f=Buffer.alloc(512);e:for(n=0;n<c.size;n+=512){for(let E=0,C=0;E<512;E+=C){if(C=ml.default.readSync(a,f,E,f.length-E,n+E),n===0&&f[0]===31&&f[1]===139)throw new Error(\"cannot append to compressed archives\");if(!C)break e}let p=new wm(f);if(!p.cksumValid)break;let h=512*Math.ceil((p.size||0)/512);if(n+h+512>c.size)break;n+=h,e.mtimeCache&&p.mtime&&e.mtimeCache.set(String(p.path),p.mtime)}s=!1,znt(e,r,n,a,t)}finally{if(s)try{ml.default.closeSync(a)}catch{}}},znt=(e,t,r,s,a)=>{let n=new ahe(e.file,{fd:s,start:r});t.pipe(n),Xnt(t,a)},Znt=(e,t)=>{t=Array.from(t);let r=new IT(e),s=(a,n,c)=>{let f=(S,x)=>{S?ml.default.close(a,I=>c(S)):c(null,x)},p=0;if(n===0)return f(null,0);let h=0,E=Buffer.alloc(512),C=(S,x)=>{if(S||typeof x>\"u\")return f(S);if(h+=x,h<512&&x)return ml.default.read(a,E,h,E.length-h,p+h,C);if(p===0&&E[0]===31&&E[1]===139)return f(new Error(\"cannot append to compressed archives\"));if(h<512)return f(null,p);let I=new wm(E);if(!I.cksumValid)return f(null,p);let T=512*Math.ceil((I.size??0)/512);if(p+T+512>n||(p+=T+512,p>=n))return f(null,p);e.mtimeCache&&I.mtime&&e.mtimeCache.set(String(I.path),I.mtime),h=0,ml.default.read(a,E,0,512,p,C)};ml.default.read(a,E,0,512,p,C)};return new Promise((a,n)=>{r.on(\"error\",n);let c=\"r+\",f=(p,h)=>{if(p&&p.code===\"ENOENT\"&&c===\"r+\")return c=\"w+\",ml.default.open(e.file,c,f);if(p||!h)return n(p);ml.default.fstat(h,(E,C)=>{if(E)return ml.default.close(h,()=>n(E));s(h,C.size,(S,x)=>{if(S)return n(S);let I=new hT(e.file,{fd:h,start:x});r.pipe(I),I.on(\"error\",n),I.on(\"close\",a),$nt(r,t)})})};ml.default.open(e.file,c,f)})},Xnt=(e,t)=>{t.forEach(r=>{r.charAt(0)===\"@\"?yT({file:W6.default.resolve(e.cwd,r.slice(1)),sync:!0,noResume:!0,onReadEntry:s=>e.add(s)}):e.add(r)}),e.end()},$nt=async(e,t)=>{for(let r=0;r<t.length;r++){let s=String(t[r]);s.charAt(0)===\"@\"?await yT({file:W6.default.resolve(String(e.cwd),s.slice(1)),noResume:!0,onReadEntry:a=>e.add(a)}):e.add(s)}e.end()},Sv=Ov(Jnt,Znt,()=>{throw new TypeError(\"file is required\")},()=>{throw new TypeError(\"file is required\")},(e,t)=>{if(!Brt(e))throw new TypeError(\"file is required\");if(e.gzip||e.brotli||e.zstd||e.file.endsWith(\".br\")||e.file.endsWith(\".tbr\"))throw new TypeError(\"cannot append to compressed archives\");if(!t?.length)throw new TypeError(\"no paths specified to add/replace\")}),uUt=Ov(Sv.syncFile,Sv.asyncFile,Sv.syncNoFile,Sv.asyncNoFile,(e,t=[])=>{Sv.validate?.(e,t),eit(e)}),eit=e=>{let t=e.filter;e.mtimeCache||(e.mtimeCache=new Map),e.filter=t?(r,s)=>t(r,s)&&!((e.mtimeCache?.get(r)??s.mtime??0)>(s.mtime??0)):(r,s)=>!((e.mtimeCache?.get(r)??s.mtime??0)>(s.mtime??0))}});var V6,Ohe,U0,Mv,Uv,Lhe=Ze(()=>{V6=et(Nd()),Ohe=Ie(\"worker_threads\"),U0=Symbol(\"kTaskInfo\"),Mv=class{constructor(t,r){this.fn=t;this.limit=(0,V6.default)(r.poolSize)}run(t){return this.limit(()=>this.fn(t))}},Uv=class{constructor(t,r){this.source=t;this.workers=[];this.limit=(0,V6.default)(r.poolSize),this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let s=this.workers.pop();s?s.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let t=new Ohe.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,\"--unhandled-rejections=strict\"]});return t.on(\"message\",r=>{if(!t[U0])throw new Error(\"Assertion failed: Worker sent a result without having a task assigned\");t[U0].resolve(r),t[U0]=null,t.unref(),this.workers.push(t)}),t.on(\"error\",r=>{t[U0]?.reject(r),t[U0]=null}),t.on(\"exit\",r=>{r!==0&&t[U0]?.reject(new Error(`Worker exited with code ${r}`)),t[U0]=null}),t}run(t){return this.limit(()=>{let r=this.workers.pop()??this.createWorker();return r.ref(),new Promise((s,a)=>{r[U0]={resolve:s,reject:a},r.postMessage(t)})})}}});var Uhe=G((VUt,Mhe)=>{var Y6;Mhe.exports.getContent=()=>(typeof Y6>\"u\"&&(Y6=Ie(\"zlib\").brotliDecompressSync(Buffer.from(\"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\",\"base64\")).toString()),Y6)});var ds={};Yt(ds,{convertToZip:()=>sit,convertToZipWorker:()=>z6,extractArchiveTo:()=>Ghe,getDefaultTaskPool:()=>Hhe,getTaskPoolForConfiguration:()=>jhe,makeArchiveFromDirectory:()=>iit});function rit(e,t){switch(e){case\"async\":return new Mv(z6,{poolSize:t});case\"workers\":return new Uv((0,J6.getContent)(),{poolSize:t});default:throw new Error(`Assertion failed: Unknown value ${e} for taskPoolMode`)}}function Hhe(){return typeof K6>\"u\"&&(K6=rit(\"workers\",Ui.availableParallelism())),K6}function jhe(e){return typeof e>\"u\"?Hhe():Zl(nit,e,()=>{let t=e.get(\"taskPoolMode\"),r=e.get(\"taskPoolConcurrency\");switch(t){case\"async\":return new Mv(z6,{poolSize:r});case\"workers\":return new Uv((0,J6.getContent)(),{poolSize:r});default:throw new Error(`Assertion failed: Unknown value ${t} for taskPoolMode`)}})}async function z6(e){let{tmpFile:t,tgz:r,compressionLevel:s,extractBufferOpts:a}=e,n=new ps(t,{create:!0,level:s,stats:sl.makeDefaultStats()}),c=Buffer.from(r.buffer,r.byteOffset,r.byteLength);return await Ghe(c,n,a),n.saveAndClose(),t}async function iit(e,{baseFs:t=new Yn,prefixPath:r=vt.root,compressionLevel:s,inMemory:a=!1}={}){let n;if(a)n=new ps(null,{level:s});else{let f=await le.mktempPromise(),p=K.join(f,\"archive.zip\");n=new ps(p,{create:!0,level:s})}let c=K.resolve(vt.root,r);return await n.copyPromise(c,e,{baseFs:t,stableTime:!0,stableSort:!0}),n}async function sit(e,t={}){let r=await le.mktempPromise(),s=K.join(r,\"archive.zip\"),a=t.compressionLevel??t.configuration?.get(\"compressionLevel\")??\"mixed\",n={prefixPath:t.prefixPath,stripComponents:t.stripComponents};return await(t.taskPool??jhe(t.configuration)).run({tmpFile:s,tgz:e,compressionLevel:a,extractBufferOpts:n}),new ps(s,{level:t.compressionLevel})}async function*oit(e){let t=new Bm,r=new _he.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});t.on(\"entry\",s=>{r.write(s)}),t.on(\"error\",s=>{r.destroy(s)}),t.on(\"close\",()=>{r.destroyed||r.end()}),t.end(e);for await(let s of r){let a=s;yield a,a.resume()}}async function Ghe(e,t,{stripComponents:r=0,prefixPath:s=vt.dot}={}){function a(n){if(n.path[0]===\"/\")return!0;let c=n.path.split(/\\//g);return!!(c.some(f=>f===\"..\")||c.length<=r)}for await(let n of oit(e)){if(a(n))continue;let c=K.normalize(fe.toPortablePath(n.path)).replace(/\\/$/,\"\").split(/\\//g);if(c.length<=r)continue;let f=c.slice(r).join(\"/\"),p=K.join(s,f),h=420;switch((n.type===\"Directory\"||(n.mode??0)&73)&&(h|=73),n.type){case\"Directory\":t.mkdirpSync(K.dirname(p),{chmod:493,utimes:[Ai.SAFE_TIME,Ai.SAFE_TIME]}),t.mkdirSync(p,{mode:h}),t.utimesSync(p,Ai.SAFE_TIME,Ai.SAFE_TIME);break;case\"OldFile\":case\"File\":t.mkdirpSync(K.dirname(p),{chmod:493,utimes:[Ai.SAFE_TIME,Ai.SAFE_TIME]}),t.writeFileSync(p,await KE(n),{mode:h}),t.utimesSync(p,Ai.SAFE_TIME,Ai.SAFE_TIME);break;case\"SymbolicLink\":t.mkdirpSync(K.dirname(p),{chmod:493,utimes:[Ai.SAFE_TIME,Ai.SAFE_TIME]}),t.symlinkSync(n.linkpath,p),t.lutimesSync(p,Ai.SAFE_TIME,Ai.SAFE_TIME);break}}return t}var _he,J6,K6,nit,qhe=Ze(()=>{qe();Dt();rA();_he=Ie(\"stream\");Nhe();Lhe();xc();J6=et(Uhe());nit=new WeakMap});var Vhe=G((Z6,Whe)=>{(function(e,t){typeof Z6==\"object\"?Whe.exports=t():typeof define==\"function\"&&define.amd?define(t):e.treeify=t()})(Z6,function(){function e(a,n){var c=n?\"\\u2514\":\"\\u251C\";return a?c+=\"\\u2500 \":c+=\"\\u2500\\u2500\\u2510\",c}function t(a,n){var c=[];for(var f in a)a.hasOwnProperty(f)&&(n&&typeof a[f]==\"function\"||c.push(f));return c}function r(a,n,c,f,p,h,E){var C=\"\",S=0,x,I,T=f.slice(0);if(T.push([n,c])&&f.length>0&&(f.forEach(function(U,Y){Y>0&&(C+=(U[1]?\" \":\"\\u2502\")+\"  \"),!I&&U[0]===n&&(I=!0)}),C+=e(a,c)+a,p&&(typeof n!=\"object\"||n instanceof Date)&&(C+=\": \"+n),I&&(C+=\" (circular ref.)\"),E(C)),!I&&typeof n==\"object\"){var O=t(n,h);O.forEach(function(U){x=++S===O.length,r(U,n[U],x,T,p,h,E)})}}var s={};return s.asLines=function(a,n,c,f){var p=typeof c!=\"function\"?c:!1;r(\".\",a,!1,[],n,p,f||c)},s.asTree=function(a,n,c){var f=\"\";return r(\".\",a,!1,[],n,c,function(p){f+=p+`\n`}),f},s})});var Rs={};Yt(Rs,{emitList:()=>ait,emitTree:()=>zhe,treeNodeToJson:()=>Jhe,treeNodeToTreeify:()=>Khe});function Khe(e,{configuration:t}){let r={},s=0,a=(n,c)=>{let f=Array.isArray(n)?n.entries():Object.entries(n);for(let[p,h]of f){if(!h)continue;let{label:E,value:C,children:S}=h,x=[];typeof E<\"u\"&&x.push(Kd(t,E,2)),typeof C<\"u\"&&x.push(jt(t,C[0],C[1])),x.length===0&&x.push(Kd(t,`${p}`,2));let I=x.join(\": \").trim(),T=`\\0${s++}\\0`,O=c[`${T}${I}`]={};typeof S<\"u\"&&a(S,O)}};if(typeof e.children>\"u\")throw new Error(\"The root node must only contain children\");return a(e.children,r),r}function Jhe(e){let t=r=>{if(typeof r.children>\"u\"){if(typeof r.value>\"u\")throw new Error(\"Assertion failed: Expected a value to be set if the children are missing\");return Jd(r.value[0],r.value[1])}let s=Array.isArray(r.children)?r.children.entries():Object.entries(r.children??{}),a=Array.isArray(r.children)?[]:{};for(let[n,c]of s)c&&(a[lit(n)]=t(c));return typeof r.value>\"u\"?a:{value:Jd(r.value[0],r.value[1]),children:a}};return t(e)}function ait(e,{configuration:t,stdout:r,json:s}){let a=e.map(n=>({value:n}));zhe({children:a},{configuration:t,stdout:r,json:s})}function zhe(e,{configuration:t,stdout:r,json:s,separators:a=0}){if(s){let c=Array.isArray(e.children)?e.children.values():Object.values(e.children??{});for(let f of c)f&&r.write(`${JSON.stringify(Jhe(f))}\n`);return}let n=(0,Yhe.asTree)(Khe(e,{configuration:t}),!1,!1);if(n=n.replace(/\\0[0-9]+\\0/g,\"\"),a>=1&&(n=n.replace(/^([├└]─)/gm,`\\u2502\n$1`).replace(/^│\\n/,\"\")),a>=2)for(let c=0;c<2;++c)n=n.replace(/^([│ ].{2}[├│ ].{2}[^\\n]+\\n)(([│ ]).{2}[├└].{2}[^\\n]*\\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3  \\u2502 \n$2`).replace(/^│\\n/,\"\");if(a>=3)throw new Error(\"Only the first two levels are accepted by treeUtils.emitTree\");r.write(n)}function lit(e){return typeof e==\"string\"?e.replace(/^\\0[0-9]+\\0/,\"\"):e}var Yhe,Zhe=Ze(()=>{Yhe=et(Vhe());kc()});var wT,Xhe=Ze(()=>{wT=class{constructor(t){this.releaseFunction=t;this.map=new Map}addOrCreate(t,r){let s=this.map.get(t);if(typeof s<\"u\"){if(s.refCount<=0)throw new Error(`Race condition in RefCountedMap. While adding a new key the refCount is: ${s.refCount} for ${JSON.stringify(t)}`);return s.refCount++,{value:s.value,release:()=>this.release(t)}}else{let a=r();return this.map.set(t,{refCount:1,value:a}),{value:a,release:()=>this.release(t)}}}release(t){let r=this.map.get(t);if(!r)throw new Error(`Unbalanced calls to release. No known instances of: ${JSON.stringify(t)}`);let s=r.refCount;if(s<=0)throw new Error(`Unbalanced calls to release. Too many release vs alloc refcount would become: ${s-1} of ${JSON.stringify(t)}`);s==1?(this.map.delete(t),this.releaseFunction(r.value)):r.refCount--}}});function _v(e){let t=e.match(cit);if(!t?.groups)throw new Error(\"Assertion failed: Expected the checksum to match the requested pattern\");let r=t.groups.cacheVersion?parseInt(t.groups.cacheVersion):null;return{cacheKey:t.groups.cacheKey??null,cacheVersion:r,cacheSpec:t.groups.cacheSpec??null,hash:t.groups.hash}}var $he,X6,$6,BT,Jr,cit,eG=Ze(()=>{qe();Dt();Dt();rA();$he=Ie(\"crypto\"),X6=et(Ie(\"fs\"));Xhe();Tc();y0();xc();Zo();$6=JE(process.env.YARN_CACHE_CHECKPOINT_OVERRIDE??process.env.YARN_CACHE_VERSION_OVERRIDE??9),BT=JE(process.env.YARN_CACHE_VERSION_OVERRIDE??10),Jr=class e{constructor(t,{configuration:r,immutable:s=r.get(\"enableImmutableCache\"),check:a=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.refCountedZipFsCache=new wT(t=>{t.discardAndClose()});this.cacheId=`-${(0,$he.randomBytes)(8).toString(\"hex\")}.tmp`;this.configuration=r,this.cwd=t,this.immutable=s,this.check=a;let{cacheSpec:n,cacheKey:c}=e.getCacheKey(r);this.cacheSpec=n,this.cacheKey=c}static async find(t,{immutable:r,check:s}={}){let a=new e(t.get(\"cacheFolder\"),{configuration:t,immutable:r,check:s});return await a.setup(),a}static getCacheKey(t){let r=t.get(\"compressionLevel\"),s=r!==\"mixed\"?`c${r}`:\"\";return{cacheKey:[BT,s].join(\"\"),cacheSpec:s}}get mirrorCwd(){if(!this.configuration.get(\"enableMirror\"))return null;let t=`${this.configuration.get(\"globalFolder\")}/cache`;return t!==this.cwd?t:null}getVersionFilename(t){return`${oI(t)}-${this.cacheKey}.zip`}getChecksumFilename(t,r){let a=_v(r).hash.slice(0,10);return`${oI(t)}-${a}.zip`}isChecksumCompatible(t){if(t===null)return!1;let{cacheVersion:r,cacheSpec:s}=_v(t);if(r===null||r<$6)return!1;let a=this.configuration.get(\"cacheMigrationMode\");return!(r<BT&&a===\"always\"||s!==this.cacheSpec&&a!==\"required-only\")}getLocatorPath(t,r){return this.mirrorCwd===null?K.resolve(this.cwd,this.getVersionFilename(t)):r===null?K.resolve(this.cwd,this.getVersionFilename(t)):K.resolve(this.cwd,this.getChecksumFilename(t,r))}getLocatorMirrorPath(t){let r=this.mirrorCwd;return r!==null?K.resolve(r,this.getVersionFilename(t)):null}async setup(){if(!this.configuration.get(\"enableGlobalCache\"))if(this.immutable){if(!await le.existsPromise(this.cwd))throw new _t(56,\"Cache path does not exist.\")}else{await le.mkdirPromise(this.cwd,{recursive:!0});let t=K.resolve(this.cwd,\".gitignore\");await le.changeFilePromise(t,`/.gitignore\n*.flock\n*.tmp\n`)}(this.mirrorCwd||!this.immutable)&&await le.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(t,r,{onHit:s,onMiss:a,loader:n,...c}){let f=this.getLocatorMirrorPath(t),p=new Yn,h=()=>{let Ae=new ps,Ce=K.join(vt.root,p8(t));return Ae.mkdirSync(Ce,{recursive:!0}),Ae.writeJsonSync(K.join(Ce,Er.manifest),{name:fn(t),mocked:!0}),Ae},E=async(Ae,{isColdHit:Ce,controlPath:Ee=null})=>{if(Ee===null&&c.unstablePackages?.has(t.locatorHash))return{isValid:!0,hash:null};let g=r&&!Ce?_v(r).cacheKey:this.cacheKey,Se=!c.skipIntegrityCheck||!r?`${g}/${await vQ(Ae)}`:r;if(Ee!==null){let me=!c.skipIntegrityCheck||!r?`${this.cacheKey}/${await vQ(Ee)}`:r;if(Se!==me)throw new _t(18,\"The remote archive doesn't match the local checksum - has the local cache been corrupted?\")}let Be=null;switch(r!==null&&Se!==r&&(this.check?Be=\"throw\":_v(r).cacheKey!==_v(Se).cacheKey?Be=\"update\":Be=this.configuration.get(\"checksumBehavior\")),Be){case null:case\"update\":return{isValid:!0,hash:Se};case\"ignore\":return{isValid:!0,hash:r};case\"reset\":return{isValid:!1,hash:r};default:case\"throw\":throw new _t(18,\"The remote archive doesn't match the expected checksum\")}},C=async Ae=>{if(!n)throw new Error(`Cache check required but no loader configured for ${Vr(this.configuration,t)}`);let Ce=await n(),Ee=Ce.getRealPath();Ce.saveAndClose(),await le.chmodPromise(Ee,420);let g=await E(Ae,{controlPath:Ee,isColdHit:!1});if(!g.isValid)throw new Error(\"Assertion failed: Expected a valid checksum\");return g.hash},S=async()=>{if(f===null||!await le.existsPromise(f)){let Ae=await n(),Ce=Ae.getRealPath();return Ae.saveAndClose(),{source:\"loader\",path:Ce}}return{source:\"mirror\",path:f}},x=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${Vr(this.configuration,t)}`);if(this.immutable)throw new _t(56,`Cache entry required but missing for ${Vr(this.configuration,t)}`);let{path:Ae,source:Ce}=await S(),{hash:Ee}=await E(Ae,{isColdHit:!0}),g=this.getLocatorPath(t,Ee),Se=[];Ce!==\"mirror\"&&f!==null&&Se.push(async()=>{let me=`${f}${this.cacheId}`;await le.copyFilePromise(Ae,me,X6.default.constants.COPYFILE_FICLONE),await le.chmodPromise(me,420),await le.renamePromise(me,f)}),(!c.mirrorWriteOnly||f===null)&&Se.push(async()=>{let me=`${g}${this.cacheId}`;await le.copyFilePromise(Ae,me,X6.default.constants.COPYFILE_FICLONE),await le.chmodPromise(me,420),await le.renamePromise(me,g)});let Be=c.mirrorWriteOnly?f??g:g;return await Promise.all(Se.map(me=>me())),[!1,Be,Ee]},I=async()=>{let Ce=(async()=>{let Ee=c.unstablePackages?.has(t.locatorHash),g=Ee||!r||this.isChecksumCompatible(r)?this.getLocatorPath(t,r):null,Se=g!==null?this.markedFiles.has(g)||await p.existsPromise(g):!1,Be=!!c.mockedPackages?.has(t.locatorHash)&&(!this.check||!Se),me=Be||Se,ce=me?s:a;if(ce&&ce(),me){let X=null,De=g;if(!Be)if(this.check)X=await C(De);else{let Qe=await E(De,{isColdHit:!1});if(Qe.isValid)X=Qe.hash;else return x()}return[Be,De,X]}else{if(this.immutable&&Ee)throw new _t(56,`Cache entry required but missing for ${Vr(this.configuration,t)}; consider defining ${pe.pretty(this.configuration,\"supportedArchitectures\",pe.Type.CODE)} to cache packages for multiple systems`);return x()}})();this.mutexes.set(t.locatorHash,Ce);try{return await Ce}finally{this.mutexes.delete(t.locatorHash)}};for(let Ae;Ae=this.mutexes.get(t.locatorHash);)await Ae;let[T,O,U]=await I();T||this.markedFiles.add(O);let Y=()=>this.refCountedZipFsCache.addOrCreate(O,()=>T?h():new ps(O,{baseFs:p,readOnly:!0})),te,ie=new cE(()=>x4(()=>(te=Y(),te.value),Ae=>`Failed to open the cache entry for ${Vr(this.configuration,t)}: ${Ae}`),K),ue=new jf(O,{baseFs:ie,pathUtils:K}),ae=()=>{te?.release()},de=c.unstablePackages?.has(t.locatorHash)?null:U;return[ue,ae,de]}},cit=/^(?:(?<cacheKey>(?<cacheVersion>[0-9]+)(?<cacheSpec>.*))\\/)?(?<hash>.*)$/});var vT,e0e=Ze(()=>{vT=(r=>(r[r.SCRIPT=0]=\"SCRIPT\",r[r.SHELLCODE=1]=\"SHELLCODE\",r))(vT||{})});var uit,_I,tG=Ze(()=>{Dt();Bc();Fp();Zo();uit=[[/^(git(?:\\+(?:https|ssh))?:\\/\\/.*(?:\\.git)?)#(.*)$/,(e,t,r,s)=>`${r}#commit=${s}`],[/^https:\\/\\/((?:[^/]+?)@)?codeload\\.github\\.com\\/([^/]+\\/[^/]+)\\/tar\\.gz\\/([0-9a-f]+)$/,(e,t,r=\"\",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https:\\/\\/((?:[^/]+?)@)?github\\.com\\/([^/]+\\/[^/]+?)(?:\\.git)?#([0-9a-f]+)$/,(e,t,r=\"\",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https?:\\/\\/[^/]+\\/(?:[^/]+\\/)*(?:@.+(?:\\/|(?:%2f)))?([^/]+)\\/(?:-|download)\\/\\1-[^/]+\\.tgz(?:#|$)/,e=>`npm:${e}`],[/^https:\\/\\/npm\\.pkg\\.github\\.com\\/download\\/(?:@[^/]+)\\/(?:[^/]+)\\/(?:[^/]+)\\/(?:[0-9a-f]+)(?:#|$)/,e=>`npm:${e}`],[/^https:\\/\\/npm\\.fontawesome\\.com\\/(?:@[^/]+)\\/([^/]+)\\/-\\/([^/]+)\\/\\1-\\2.tgz(?:#|$)/,e=>`npm:${e}`],[/^https?:\\/\\/[^/]+\\/.*\\/(@[^/]+)\\/([^/]+)\\/-\\/\\1\\/\\2-(?:[.\\d\\w-]+)\\.tgz(?:#|$)/,(e,t)=>xQ({protocol:\"npm:\",source:null,selector:e,params:{__archiveUrl:t}})],[/^[^/]+\\.tgz#[0-9a-f]+$/,e=>`npm:${e}`]],_I=class{constructor(t){this.resolver=t;this.resolutions=null}async setup(t,{report:r}){let s=K.join(t.cwd,Er.lockfile);if(!le.existsSync(s))return;let a=await le.readFilePromise(s,\"utf8\"),n=cs(a);if(Object.hasOwn(n,\"__metadata\"))return;let c=this.resolutions=new Map;for(let f of Object.keys(n)){let p=T2(f);if(!p){r.reportWarning(14,`Failed to parse the string \"${f}\" into a proper descriptor`);continue}let h=dl(p.range)?Mn(p,`npm:${p.range}`):p,{version:E,resolved:C}=n[f];if(!C)continue;let S;for(let[I,T]of uit){let O=C.match(I);if(O){S=T(E,...O);break}}if(!S){r.reportWarning(14,`${oi(t.configuration,h)}: Only some patterns can be imported from legacy lockfiles (not \"${C}\")`);continue}let x=h;try{let I=Xd(h.range),T=T2(I.selector,!0);T&&(x=T)}catch{}c.set(h.descriptorHash,Ks(x,S))}}supportsDescriptor(t,r){return this.resolutions?this.resolutions.has(t.descriptorHash):!1}supportsLocator(t,r){return!1}shouldPersistResolution(t,r){throw new Error(\"Assertion failed: This resolver doesn't support resolving locators to packages\")}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){if(!this.resolutions)throw new Error(\"Assertion failed: The resolution store should have been setup\");let a=this.resolutions.get(t.descriptorHash);if(!a)throw new Error(\"Assertion failed: The resolution should have been registered\");let n=c8(a),c=s.project.configuration.normalizeDependency(n);return await this.resolver.getCandidates(c,r,s)}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){throw new Error(\"Assertion failed: This resolver doesn't support resolving locators to packages\")}}});var cA,t0e=Ze(()=>{Tc();fv();kc();cA=class extends yo{constructor({configuration:r,stdout:s,suggestInstall:a=!0}){super();this.errorCount=0;S2(this,{configuration:r}),this.configuration=r,this.stdout=s,this.suggestInstall=a}static async start(r,s){let a=new this(r);try{await s(a)}catch(n){a.reportExceptionOnce(n)}finally{await a.finalize()}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(r){}reportCacheMiss(r){}startSectionSync(r,s){return s()}async startSectionPromise(r,s){return await s()}startTimerSync(r,s,a){return(typeof s==\"function\"?s:a)()}async startTimerPromise(r,s,a){return await(typeof s==\"function\"?s:a)()}reportSeparator(){}reportInfo(r,s){}reportWarning(r,s){}reportError(r,s){this.errorCount+=1,this.stdout.write(`${jt(this.configuration,\"\\u27A4\",\"redBright\")} ${this.formatNameWithHyperlink(r)}: ${s}\n`)}reportProgress(r){return{...Promise.resolve().then(async()=>{for await(let{}of r);}),stop:()=>{}}}reportJson(r){}reportFold(r,s){}async finalize(){this.errorCount>0&&(this.stdout.write(`\n`),this.stdout.write(`${jt(this.configuration,\"\\u27A4\",\"redBright\")} Errors happened when preparing the environment required to run this command.\n`),this.suggestInstall&&this.stdout.write(`${jt(this.configuration,\"\\u27A4\",\"redBright\")} This might be caused by packages being missing from the lockfile, in which case running \"yarn install\" might help.\n`))}formatNameWithHyperlink(r){return xj(r,{configuration:this.configuration,json:!1})}}});var HI,rG=Ze(()=>{Zo();HI=class{constructor(t){this.resolver=t}supportsDescriptor(t,r){return!!(r.project.storedResolutions.get(t.descriptorHash)||r.project.originalPackages.has(DQ(t).locatorHash))}supportsLocator(t,r){return!!(r.project.originalPackages.has(t.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(t,r){throw new Error(\"The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes\")}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return this.resolver.getResolutionDependencies(t,r)}async getCandidates(t,r,s){let a=s.project.storedResolutions.get(t.descriptorHash);if(a){let c=s.project.originalPackages.get(a);if(c)return[c]}let n=s.project.originalPackages.get(DQ(t).locatorHash);if(n)return[n];throw new Error(\"Resolution expected from the lockfile data\")}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){let s=r.project.originalPackages.get(t.locatorHash);if(!s)throw new Error(\"The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache\");return s}}});function Yp(){}function fit(e,t,r,s,a){for(var n=0,c=t.length,f=0,p=0;n<c;n++){var h=t[n];if(h.removed){if(h.value=e.join(s.slice(p,p+h.count)),p+=h.count,n&&t[n-1].added){var C=t[n-1];t[n-1]=t[n],t[n]=C}}else{if(!h.added&&a){var E=r.slice(f,f+h.count);E=E.map(function(x,I){var T=s[p+I];return T.length>x.length?T:x}),h.value=e.join(E)}else h.value=e.join(r.slice(f,f+h.count));f+=h.count,h.added||(p+=h.count)}}var S=t[c-1];return c>1&&typeof S.value==\"string\"&&(S.added||S.removed)&&e.equals(\"\",S.value)&&(t[c-2].value+=S.value,t.pop()),t}function Ait(e){return{newPos:e.newPos,components:e.components.slice(0)}}function pit(e,t){if(typeof e==\"function\")t.callback=e;else if(e)for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}function i0e(e,t,r){return r=pit(r,{ignoreWhitespace:!0}),aG.diff(e,t,r)}function hit(e,t,r){return lG.diff(e,t,r)}function ST(e){\"@babel/helpers - typeof\";return typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?ST=function(t){return typeof t}:ST=function(t){return t&&typeof Symbol==\"function\"&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},ST(e)}function nG(e){return mit(e)||yit(e)||Eit(e)||Iit()}function mit(e){if(Array.isArray(e))return iG(e)}function yit(e){if(typeof Symbol<\"u\"&&Symbol.iterator in Object(e))return Array.from(e)}function Eit(e,t){if(e){if(typeof e==\"string\")return iG(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r===\"Object\"&&e.constructor&&(r=e.constructor.name),r===\"Map\"||r===\"Set\")return Array.from(e);if(r===\"Arguments\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return iG(e,t)}}function iG(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,s=new Array(t);r<t;r++)s[r]=e[r];return s}function Iit(){throw new TypeError(`Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function sG(e,t,r,s,a){t=t||[],r=r||[],s&&(e=s(a,e));var n;for(n=0;n<t.length;n+=1)if(t[n]===e)return r[n];var c;if(Cit.call(e)===\"[object Array]\"){for(t.push(e),c=new Array(e.length),r.push(c),n=0;n<e.length;n+=1)c[n]=sG(e[n],t,r,s,a);return t.pop(),r.pop(),c}if(e&&e.toJSON&&(e=e.toJSON()),ST(e)===\"object\"&&e!==null){t.push(e),c={},r.push(c);var f=[],p;for(p in e)e.hasOwnProperty(p)&&f.push(p);for(f.sort(),n=0;n<f.length;n+=1)p=f[n],c[p]=sG(e[p],t,r,s,p);t.pop(),r.pop()}else c=e;return c}function s0e(e,t,r,s,a,n,c){c||(c={}),typeof c.context>\"u\"&&(c.context=4);var f=hit(r,s,c);if(!f)return;f.push({value:\"\",lines:[]});function p(U){return U.map(function(Y){return\" \"+Y})}for(var h=[],E=0,C=0,S=[],x=1,I=1,T=function(Y){var te=f[Y],ie=te.lines||te.value.replace(/\\n$/,\"\").split(`\n`);if(te.lines=ie,te.added||te.removed){var ue;if(!E){var ae=f[Y-1];E=x,C=I,ae&&(S=c.context>0?p(ae.lines.slice(-c.context)):[],E-=S.length,C-=S.length)}(ue=S).push.apply(ue,nG(ie.map(function(me){return(te.added?\"+\":\"-\")+me}))),te.added?I+=ie.length:x+=ie.length}else{if(E)if(ie.length<=c.context*2&&Y<f.length-2){var de;(de=S).push.apply(de,nG(p(ie)))}else{var Ae,Ce=Math.min(ie.length,c.context);(Ae=S).push.apply(Ae,nG(p(ie.slice(0,Ce))));var Ee={oldStart:E,oldLines:x-E+Ce,newStart:C,newLines:I-C+Ce,lines:S};if(Y>=f.length-2&&ie.length<=c.context){var g=/\\n$/.test(r),Se=/\\n$/.test(s),Be=ie.length==0&&S.length>Ee.oldLines;!g&&Be&&r.length>0&&S.splice(Ee.oldLines,0,\"\\\\ No newline at end of file\"),(!g&&!Be||!Se)&&S.push(\"\\\\ No newline at end of file\")}h.push(Ee),E=0,C=0,S=[]}x+=ie.length,I+=ie.length}},O=0;O<f.length;O++)T(O);return{oldFileName:e,newFileName:t,oldHeader:a,newHeader:n,hunks:h}}var w_t,r0e,n0e,aG,lG,git,dit,Cit,Hv,oG,cG=Ze(()=>{Yp.prototype={diff:function(t,r){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=s.callback;typeof s==\"function\"&&(a=s,s={}),this.options=s;var n=this;function c(T){return a?(setTimeout(function(){a(void 0,T)},0),!0):T}t=this.castInput(t),r=this.castInput(r),t=this.removeEmpty(this.tokenize(t)),r=this.removeEmpty(this.tokenize(r));var f=r.length,p=t.length,h=1,E=f+p;s.maxEditLength&&(E=Math.min(E,s.maxEditLength));var C=[{newPos:-1,components:[]}],S=this.extractCommon(C[0],r,t,0);if(C[0].newPos+1>=f&&S+1>=p)return c([{value:this.join(r),count:r.length}]);function x(){for(var T=-1*h;T<=h;T+=2){var O=void 0,U=C[T-1],Y=C[T+1],te=(Y?Y.newPos:0)-T;U&&(C[T-1]=void 0);var ie=U&&U.newPos+1<f,ue=Y&&0<=te&&te<p;if(!ie&&!ue){C[T]=void 0;continue}if(!ie||ue&&U.newPos<Y.newPos?(O=Ait(Y),n.pushComponent(O.components,void 0,!0)):(O=U,O.newPos++,n.pushComponent(O.components,!0,void 0)),te=n.extractCommon(O,r,t,T),O.newPos+1>=f&&te+1>=p)return c(fit(n,O.components,r,t,n.useLongestToken));C[T]=O}h++}if(a)(function T(){setTimeout(function(){if(h>E)return a();x()||T()},0)})();else for(;h<=E;){var I=x();if(I)return I}},pushComponent:function(t,r,s){var a=t[t.length-1];a&&a.added===r&&a.removed===s?t[t.length-1]={count:a.count+1,added:r,removed:s}:t.push({count:1,added:r,removed:s})},extractCommon:function(t,r,s,a){for(var n=r.length,c=s.length,f=t.newPos,p=f-a,h=0;f+1<n&&p+1<c&&this.equals(r[f+1],s[p+1]);)f++,p++,h++;return h&&t.components.push({count:h}),t.newPos=f,p},equals:function(t,r){return this.options.comparator?this.options.comparator(t,r):t===r||this.options.ignoreCase&&t.toLowerCase()===r.toLowerCase()},removeEmpty:function(t){for(var r=[],s=0;s<t.length;s++)t[s]&&r.push(t[s]);return r},castInput:function(t){return t},tokenize:function(t){return t.split(\"\")},join:function(t){return t.join(\"\")}};w_t=new Yp;r0e=/^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/,n0e=/\\S/,aG=new Yp;aG.equals=function(e,t){return this.options.ignoreCase&&(e=e.toLowerCase(),t=t.toLowerCase()),e===t||this.options.ignoreWhitespace&&!n0e.test(e)&&!n0e.test(t)};aG.tokenize=function(e){for(var t=e.split(/([^\\S\\r\\n]+|[()[\\]{}'\"\\r\\n]|\\b)/),r=0;r<t.length-1;r++)!t[r+1]&&t[r+2]&&r0e.test(t[r])&&r0e.test(t[r+2])&&(t[r]+=t[r+2],t.splice(r+1,2),r--);return t};lG=new Yp;lG.tokenize=function(e){var t=[],r=e.split(/(\\n|\\r\\n)/);r[r.length-1]||r.pop();for(var s=0;s<r.length;s++){var a=r[s];s%2&&!this.options.newlineIsToken?t[t.length-1]+=a:(this.options.ignoreWhitespace&&(a=a.trim()),t.push(a))}return t};git=new Yp;git.tokenize=function(e){return e.split(/(\\S.+?[.!?])(?=\\s+|$)/)};dit=new Yp;dit.tokenize=function(e){return e.split(/([{}:;,]|\\s+)/)};Cit=Object.prototype.toString,Hv=new Yp;Hv.useLongestToken=!0;Hv.tokenize=lG.tokenize;Hv.castInput=function(e){var t=this.options,r=t.undefinedReplacement,s=t.stringifyReplacer,a=s===void 0?function(n,c){return typeof c>\"u\"?r:c}:s;return typeof e==\"string\"?e:JSON.stringify(sG(e,null,null,a),a,\"  \")};Hv.equals=function(e,t){return Yp.prototype.equals.call(Hv,e.replace(/,([\\r\\n])/g,\"$1\"),t.replace(/,([\\r\\n])/g,\"$1\"))};oG=new Yp;oG.tokenize=function(e){return e.slice()};oG.join=oG.removeEmpty=function(e){return e}});var DT,o0e=Ze(()=>{Tc();DT=class{constructor(t){this.resolver=t}supportsDescriptor(t,r){return this.resolver.supportsDescriptor(t,r)}supportsLocator(t,r){return this.resolver.supportsLocator(t,r)}shouldPersistResolution(t,r){return this.resolver.shouldPersistResolution(t,r)}bindDescriptor(t,r,s){return this.resolver.bindDescriptor(t,r,s)}getResolutionDependencies(t,r){return this.resolver.getResolutionDependencies(t,r)}async getCandidates(t,r,s){throw new _t(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}async getSatisfying(t,r,s,a){throw new _t(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}async resolve(t,r){throw new _t(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}}});var ki,uG=Ze(()=>{Tc();ki=class extends yo{reportCacheHit(t){}reportCacheMiss(t){}startSectionSync(t,r){return r()}async startSectionPromise(t,r){return await r()}startTimerSync(t,r,s){return(typeof r==\"function\"?r:s)()}async startTimerPromise(t,r,s){return await(typeof r==\"function\"?r:s)()}reportSeparator(){}reportInfo(t,r){}reportWarning(t,r){}reportError(t,r){}reportProgress(t){return{...Promise.resolve().then(async()=>{for await(let{}of t);}),stop:()=>{}}}reportJson(t){}reportFold(t,r){}async finalize(){}}});var a0e,jI,fG=Ze(()=>{Dt();a0e=et(wQ());cI();$d();kc();y0();Fp();Zo();jI=class{constructor(t,{project:r}){this.workspacesCwds=new Set;this.project=r,this.cwd=t}async setup(){this.manifest=await Ut.tryFind(this.cwd)??new Ut,this.relativeCwd=K.relative(this.project.cwd,this.cwd)||vt.dot;let t=this.manifest.name?this.manifest.name:xa(null,`${this.computeCandidateName()}-${fs(this.relativeCwd).substring(0,6)}`);this.anchoredDescriptor=Mn(t,`${Ii.protocol}${this.relativeCwd}`),this.anchoredLocator=Ks(t,`${Ii.protocol}${this.relativeCwd}`);let r=this.manifest.workspaceDefinitions.map(({pattern:a})=>a);if(r.length===0)return;let s=await(0,a0e.default)(r,{cwd:fe.fromPortablePath(this.cwd),onlyDirectories:!0,ignore:[\"**/node_modules\",\"**/.git\",\"**/.yarn\"]});s.sort(),await s.reduce(async(a,n)=>{let c=K.resolve(this.cwd,fe.toPortablePath(n)),f=await le.existsPromise(K.join(c,\"package.json\"));await a,f&&this.workspacesCwds.add(c)},Promise.resolve())}get anchoredPackage(){let t=this.project.storedPackages.get(this.anchoredLocator.locatorHash);if(!t)throw new Error(`Assertion failed: Expected workspace ${N2(this.project.configuration,this)} (${jt(this.project.configuration,K.join(this.cwd,Er.manifest),gt.PATH)}) to have been resolved. Run \"yarn install\" to update the lockfile`);return t}accepts(t){let r=t.indexOf(\":\"),s=r!==-1?t.slice(0,r+1):null,a=r!==-1?t.slice(r+1):t;if(s===Ii.protocol&&K.normalize(a)===this.relativeCwd||s===Ii.protocol&&(a===\"*\"||a===\"^\"||a===\"~\"))return!0;let n=dl(a);return n?s===Ii.protocol?n.test(this.manifest.version??\"0.0.0\"):this.project.configuration.get(\"enableTransparentWorkspaces\")&&this.manifest.version!==null?n.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?\"root-workspace\":`${K.basename(this.cwd)}`||\"unnamed-workspace\"}getRecursiveWorkspaceDependencies({dependencies:t=Ut.hardDependencies}={}){let r=new Set,s=a=>{for(let n of t)for(let c of a.manifest[n].values()){let f=this.project.tryWorkspaceByDescriptor(c);f===null||r.has(f)||(r.add(f),s(f))}};return s(this),r}getRecursiveWorkspaceDependents({dependencies:t=Ut.hardDependencies}={}){let r=new Set,s=a=>{for(let n of this.project.workspaces)t.some(f=>[...n.manifest[f].values()].some(p=>{let h=this.project.tryWorkspaceByDescriptor(p);return h!==null&&R2(h.anchoredLocator,a.anchoredLocator)}))&&!r.has(n)&&(r.add(n),s(n))};return s(this),r}getRecursiveWorkspaceChildren(){let t=new Set([this]);for(let r of t)for(let s of r.workspacesCwds){let a=this.project.workspacesByCwd.get(s);a&&t.add(a)}return t.delete(this),Array.from(t)}async persistManifest(){let t={};this.manifest.exportTo(t);let r=K.join(this.cwd,Ut.fileName),s=`${JSON.stringify(t,null,this.manifest.indent)}\n`;await le.changeFilePromise(r,s,{automaticNewlines:!0}),this.manifest.raw=t}}});function bit({project:e,allDescriptors:t,allResolutions:r,allPackages:s,accessibleLocators:a=new Set,optionalBuilds:n=new Set,peerRequirements:c=new Map,peerWarnings:f=[],peerRequirementNodes:p=new Map,volatileDescriptors:h=new Set}){let E=new Map,C=[],S=new Map,x=new Map,I=new Map,T=new Map,O=new Map,U=new Map(e.workspaces.map(ae=>{let de=ae.anchoredLocator.locatorHash,Ae=s.get(de);if(typeof Ae>\"u\")throw new Error(\"Assertion failed: The workspace should have an associated package\");return[de,x2(Ae)]})),Y=()=>{let ae=le.mktempSync(),de=K.join(ae,\"stacktrace.log\"),Ae=String(C.length+1).length,Ce=C.map((Ee,g)=>`${`${g+1}.`.padStart(Ae,\" \")} ${gl(Ee)}\n`).join(\"\");throw le.writeFileSync(de,Ce),le.detachTemp(ae),new _t(45,`Encountered a stack overflow when resolving peer dependencies; cf ${fe.fromPortablePath(de)}`)},te=ae=>{let de=r.get(ae.descriptorHash);if(typeof de>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let Ae=s.get(de);if(!Ae)throw new Error(\"Assertion failed: The package could not be found\");return Ae},ie=(ae,de,Ae,{top:Ce,optional:Ee})=>{C.length>1e3&&Y(),C.push(de);let g=ue(ae,de,Ae,{top:Ce,optional:Ee});return C.pop(),g},ue=(ae,de,Ae,{top:Ce,optional:Ee})=>{if(Ee||n.delete(de.locatorHash),a.has(de.locatorHash))return;a.add(de.locatorHash);let g=s.get(de.locatorHash);if(!g)throw new Error(`Assertion failed: The package (${Vr(e.configuration,de)}) should have been registered`);let Se=new Set,Be=new Map,me=[],ce=[],X=[],De=[];for(let Qe of Array.from(g.dependencies.values())){if(g.peerDependencies.has(Qe.identHash)&&g.locatorHash!==Ce)continue;if(Qp(Qe))throw new Error(\"Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch\");h.delete(Qe.descriptorHash);let it=Ee;if(!it){let Re=g.dependenciesMeta.get(fn(Qe));if(typeof Re<\"u\"){let ct=Re.get(null);typeof ct<\"u\"&&ct.optional&&(it=!0)}}let _=r.get(Qe.descriptorHash);if(!_)throw new Error(`Assertion failed: The resolution (${oi(e.configuration,Qe)}) should have been registered`);let tt=U.get(_)||s.get(_);if(!tt)throw new Error(`Assertion failed: The package (${_}, resolved from ${oi(e.configuration,Qe)}) should have been registered`);if(tt.peerDependencies.size===0){ie(Qe,tt,new Map,{top:Ce,optional:it});continue}let Ne,ke,be=new Set,je=new Map;me.push(()=>{Ne=f8(Qe,de.locatorHash),ke=A8(tt,de.locatorHash),g.dependencies.set(Qe.identHash,Ne),r.set(Ne.descriptorHash,ke.locatorHash),t.set(Ne.descriptorHash,Ne),s.set(ke.locatorHash,ke),Pp(T,ke.locatorHash).add(Ne.descriptorHash),Se.add(ke.locatorHash)}),ce.push(()=>{O.set(ke.locatorHash,je);for(let Re of ke.peerDependencies.values()){let Me=Zl(Be,Re.identHash,()=>{let P=Ae.get(Re.identHash)??null,w=g.dependencies.get(Re.identHash);return!w&&Q2(de,Re)&&(ae.identHash===de.identHash?w=ae:(w=Mn(de,ae.range),t.set(w.descriptorHash,w),r.set(w.descriptorHash,de.locatorHash),h.delete(w.descriptorHash),P=null)),w||(w=Mn(Re,\"missing:\")),{subject:de,ident:Re,provided:w,root:!P,requests:new Map,hash:`p${fs(de.locatorHash,Re.identHash).slice(0,6)}`}}).provided;if(Me.range===\"missing:\"&&ke.dependencies.has(Re.identHash)){ke.peerDependencies.delete(Re.identHash);continue}if(je.set(Re.identHash,{requester:ke,descriptor:Re,meta:ke.peerDependenciesMeta.get(fn(Re)),children:new Map}),ke.dependencies.set(Re.identHash,Me),Qp(Me)){let P=r.get(Me.descriptorHash);Pp(I,P).add(ke.locatorHash)}S.set(Me.identHash,Me),Me.range===\"missing:\"&&be.add(Me.identHash)}ke.dependencies=new Map(Ys(ke.dependencies,([Re,ct])=>fn(ct)))}),X.push(()=>{if(!s.has(ke.locatorHash))return;let Re=E.get(tt.locatorHash);typeof Re==\"number\"&&Re>=2&&Y();let ct=E.get(tt.locatorHash),Me=typeof ct<\"u\"?ct+1:1;E.set(tt.locatorHash,Me),ie(Ne,ke,je,{top:Ce,optional:it}),E.set(tt.locatorHash,Me-1)}),De.push(()=>{let Re=r.get(Ne.descriptorHash);if(typeof Re>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");let ct=O.get(Re);if(typeof ct>\"u\")throw new Error(\"Assertion failed: Expected the peer requests to be registered\");for(let Me of Be.values()){let P=ct.get(Me.ident.identHash);P&&(Me.requests.set(Ne.descriptorHash,P),p.set(Me.hash,Me),Me.root||Ae.get(Me.ident.identHash)?.children.set(Ne.descriptorHash,P))}if(s.has(ke.locatorHash))for(let Me of be)ke.dependencies.delete(Me)})}for(let Qe of[...me,...ce])Qe();for(let Qe of Se){Se.delete(Qe);let it=s.get(Qe),_=fs(sI(it).locatorHash,...Array.from(it.dependencies.values(),be=>{let je=be.range!==\"missing:\"?r.get(be.descriptorHash):\"missing:\";if(typeof je>\"u\")throw new Error(`Assertion failed: Expected the resolution for ${oi(e.configuration,be)} to have been registered`);return je===Ce?`${je} (top)`:je})),tt=x.get(_);if(typeof tt>\"u\"){x.set(_,it);continue}let Ne=Pp(T,tt.locatorHash);for(let be of T.get(it.locatorHash)??[])r.set(be,tt.locatorHash),Ne.add(be);s.delete(it.locatorHash),a.delete(it.locatorHash),Se.delete(it.locatorHash);let ke=I.get(it.locatorHash);if(ke!==void 0){let be=Pp(I,tt.locatorHash);for(let je of ke)be.add(je),Se.add(je)}}for(let Qe of[...X,...De])Qe()};for(let ae of e.workspaces){let de=ae.anchoredLocator;h.delete(ae.anchoredDescriptor.descriptorHash),ie(ae.anchoredDescriptor,de,new Map,{top:de.locatorHash,optional:!1})}for(let ae of p.values()){if(!ae.root)continue;let de=s.get(ae.subject.locatorHash);if(typeof de>\"u\")continue;for(let Ce of ae.requests.values()){let Ee=`p${fs(ae.subject.locatorHash,fn(ae.ident),Ce.requester.locatorHash).slice(0,6)}`;c.set(Ee,{subject:ae.subject.locatorHash,requested:ae.ident,rootRequester:Ce.requester.locatorHash,allRequesters:Array.from(O2(Ce),g=>g.requester.locatorHash)})}let Ae=[...O2(ae)];if(ae.provided.range!==\"missing:\"){let Ce=te(ae.provided),Ee=Ce.version??\"0.0.0\",g=Be=>{if(Be.startsWith(Ii.protocol)){if(!e.tryWorkspaceByLocator(Ce))return null;Be=Be.slice(Ii.protocol.length),(Be===\"^\"||Be===\"~\")&&(Be=\"*\")}return Be},Se=!0;for(let Be of Ae){let me=g(Be.descriptor.range);if(me===null){Se=!1;continue}if(!eA(Ee,me)){Se=!1;let ce=`p${fs(ae.subject.locatorHash,fn(ae.ident),Be.requester.locatorHash).slice(0,6)}`;f.push({type:1,subject:de,requested:ae.ident,requester:Be.requester,version:Ee,hash:ce,requirementCount:Ae.length})}}if(!Se){let Be=Ae.map(me=>g(me.descriptor.range));f.push({type:3,node:ae,range:Be.includes(null)?null:g8(Be),hash:ae.hash})}}else{let Ce=!0;for(let Ee of Ae)if(!Ee.meta?.optional){Ce=!1;let g=`p${fs(ae.subject.locatorHash,fn(ae.ident),Ee.requester.locatorHash).slice(0,6)}`;f.push({type:0,subject:de,requested:ae.ident,requester:Ee.requester,hash:g})}Ce||f.push({type:2,node:ae,hash:ae.hash})}}}function*Pit(e){let t=new Map;if(\"children\"in e)t.set(e,e);else for(let r of e.requests.values())t.set(r,r);for(let[r,s]of t){yield{request:r,root:s};for(let a of r.children.values())t.has(a)||t.set(a,s)}}function xit(e,t){let r=[],s=[],a=!1;for(let n of e.peerWarnings)if(!(n.type===1||n.type===0)){if(!e.tryWorkspaceByLocator(n.node.subject)){a=!0;continue}if(n.type===3){let c=e.storedResolutions.get(n.node.provided.descriptorHash);if(typeof c>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");let f=e.storedPackages.get(c);if(typeof f>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");let p=f0(Pit(n.node),({request:C,root:S})=>eA(f.version??\"0.0.0\",C.descriptor.range)?f0.skip:C===S?$i(e.configuration,C.requester):`${$i(e.configuration,C.requester)} (via ${$i(e.configuration,S.requester)})`),h=[...O2(n.node)].length>1?\"and other dependencies request\":\"requests\",E=n.range?aI(e.configuration,n.range):jt(e.configuration,\"but they have non-overlapping ranges!\",\"redBright\");r.push(`${$i(e.configuration,n.node.ident)} is listed by your project with version ${F2(e.configuration,f.version??\"0.0.0\")} (${jt(e.configuration,n.hash,gt.CODE)}), which doesn't satisfy what ${p} ${h} (${E}).`)}if(n.type===2){let c=n.node.requests.size>1?\" and other dependencies\":\"\";s.push(`${Vr(e.configuration,n.node.subject)} doesn't provide ${$i(e.configuration,n.node.ident)} (${jt(e.configuration,n.hash,gt.CODE)}), requested by ${$i(e.configuration,n.node.requests.values().next().value.requester)}${c}.`)}}t.startSectionSync({reportFooter:()=>{t.reportWarning(86,`Some peer dependencies are incorrectly met by your project; run ${jt(e.configuration,\"yarn explain peer-requirements <hash>\",gt.CODE)} for details, where ${jt(e.configuration,\"<hash>\",gt.CODE)} is the six-letter p-prefixed code.`)},skipIfEmpty:!0},()=>{for(let n of Ys(r,c=>ZE.default(c)))t.reportWarning(60,n);for(let n of Ys(s,c=>ZE.default(c)))t.reportWarning(2,n)}),a&&t.reportWarning(86,`Some peer dependencies are incorrectly met by dependencies; run ${jt(e.configuration,\"yarn explain peer-requirements\",gt.CODE)} for details.`)}var bT,PT,u0e,hG,pG,gG,xT,wit,Bit,l0e,vit,Sit,Dit,Na,AG,kT,c0e,Rt,f0e=Ze(()=>{Dt();Dt();Bc();Vt();bT=Ie(\"crypto\");cG();Jl();PT=et(Nd()),u0e=et(pi()),hG=Ie(\"util\"),pG=et(Ie(\"v8\")),gG=et(Ie(\"zlib\"));eG();$2();tG();rG();cI();y8();Tc();o0e();fv();uG();$d();fG();OQ();kc();y0();xc();hR();Fj();Fp();Zo();xT=JE(process.env.YARN_LOCKFILE_VERSION_OVERRIDE??8),wit=3,Bit=/ *, */g,l0e=/\\/$/,vit=32,Sit=(0,hG.promisify)(gG.default.gzip),Dit=(0,hG.promisify)(gG.default.gunzip),Na=(r=>(r.UpdateLockfile=\"update-lockfile\",r.SkipBuild=\"skip-build\",r))(Na||{}),AG={restoreLinkersCustomData:[\"linkersCustomData\"],restoreResolutions:[\"accessibleLocators\",\"conditionalLocators\",\"disabledLocators\",\"optionalBuilds\",\"storedDescriptors\",\"storedResolutions\",\"storedPackages\",\"lockFileChecksum\"],restoreBuildState:[\"skippedBuilds\",\"storedBuildState\"]},kT=(a=>(a[a.NotProvided=0]=\"NotProvided\",a[a.NotCompatible=1]=\"NotCompatible\",a[a.NodeNotProvided=2]=\"NodeNotProvided\",a[a.NodeNotCompatible=3]=\"NodeNotCompatible\",a))(kT||{}),c0e=e=>fs(`${wit}`,e),Rt=class e{constructor(t,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.skippedBuilds=new Set;this.lockfileLastVersion=null;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.peerWarnings=[];this.peerRequirementNodes=new Map;this.linkersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=t}static async find(t,r){if(!t.projectCwd)throw new st(`No project found in ${r}`);let s=t.projectCwd,a=r,n=null;for(;n!==t.projectCwd;){if(n=a,le.existsSync(K.join(n,Er.manifest))){s=n;break}a=K.dirname(n)}let c=new e(t.projectCwd,{configuration:t});ze.telemetry?.reportProject(c.cwd),await c.setupResolutions(),await c.setupWorkspaces(),ze.telemetry?.reportWorkspaceCount(c.workspaces.length),ze.telemetry?.reportDependencyCount(c.workspaces.reduce((I,T)=>I+T.manifest.dependencies.size+T.manifest.devDependencies.size,0));let f=c.tryWorkspaceByCwd(s);if(f)return{project:c,workspace:f,locator:f.anchoredLocator};let p=await c.findLocatorForLocation(`${s}/`,{strict:!0});if(p)return{project:c,locator:p,workspace:null};let h=jt(t,c.cwd,gt.PATH),E=jt(t,K.relative(c.cwd,s),gt.PATH),C=`- If ${h} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,S=`- If ${h} is intended to be a project, it might be that you forgot to list ${E} in its workspace configuration.`,x=`- Finally, if ${h} is fine and you intend ${E} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new st(`The nearest package directory (${jt(t,s,gt.PATH)}) doesn't seem to be part of the project declared in ${jt(t,c.cwd,gt.PATH)}.\n\n${[C,S,x].join(`\n`)}`)}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let t=K.join(this.cwd,Er.lockfile),r=this.configuration.get(\"defaultLanguageName\");if(le.existsSync(t)){let s=await le.readFilePromise(t,\"utf8\");this.lockFileChecksum=c0e(s);let a=cs(s);if(a.__metadata){let n=a.__metadata.version,c=a.__metadata.cacheKey;this.lockfileLastVersion=n,this.lockfileNeedsRefresh=n<xT;for(let f of Object.keys(a)){if(f===\"__metadata\")continue;let p=a[f];if(typeof p.resolution>\"u\")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${f})`);let h=Rp(p.resolution,!0),E=new Ut;E.load(p,{yamlCompatibilityMode:!0});let C=E.version,S=E.languageName||r,x=p.linkType.toUpperCase(),I=p.conditions??null,T=E.dependencies,O=E.peerDependencies,U=E.dependenciesMeta,Y=E.peerDependenciesMeta,te=E.bin;if(p.checksum!=null){let ue=typeof c<\"u\"&&!p.checksum.includes(\"/\")?`${c}/${p.checksum}`:p.checksum;this.storedChecksums.set(h.locatorHash,ue)}let ie={...h,version:C,languageName:S,linkType:x,conditions:I,dependencies:T,peerDependencies:O,dependenciesMeta:U,peerDependenciesMeta:Y,bin:te};this.originalPackages.set(ie.locatorHash,ie);for(let ue of f.split(Bit)){let ae=E0(ue);n<=6&&(ae=this.configuration.normalizeDependency(ae),ae=Mn(ae,ae.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,\"$1npm%3A\"))),this.storedDescriptors.set(ae.descriptorHash,ae),this.storedResolutions.set(ae.descriptorHash,h.locatorHash)}}}else s.includes(\"yarn lockfile v1\")&&(this.lockfileLastVersion=-1)}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let t=new Set,r=(0,PT.default)(4),s=async(a,n)=>{if(t.has(n))return a;t.add(n);let c=new jI(n,{project:this});await r(()=>c.setup());let f=a.then(()=>{this.addWorkspace(c)});return Array.from(c.workspacesCwds).reduce(s,f)};await s(Promise.resolve(),this.cwd)}addWorkspace(t){let r=this.workspacesByIdent.get(t.anchoredLocator.identHash);if(typeof r<\"u\")throw new Error(`Duplicate workspace name ${$i(this.configuration,t.anchoredLocator)}: ${fe.fromPortablePath(t.cwd)} conflicts with ${fe.fromPortablePath(r.cwd)}`);this.workspaces.push(t),this.workspacesByCwd.set(t.cwd,t),this.workspacesByIdent.set(t.anchoredLocator.identHash,t)}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(t){K.isAbsolute(t)||(t=K.resolve(this.cwd,t)),t=K.normalize(t).replace(/\\/+$/,\"\");let r=this.workspacesByCwd.get(t);return r||null}getWorkspaceByCwd(t){let r=this.tryWorkspaceByCwd(t);if(!r)throw new Error(`Workspace not found (${t})`);return r}tryWorkspaceByFilePath(t){let r=null;for(let s of this.workspaces)K.relative(s.cwd,t).startsWith(\"../\")||r&&r.cwd.length>=s.cwd.length||(r=s);return r||null}getWorkspaceByFilePath(t){let r=this.tryWorkspaceByFilePath(t);if(!r)throw new Error(`Workspace not found (${t})`);return r}tryWorkspaceByIdent(t){let r=this.workspacesByIdent.get(t.identHash);return typeof r>\"u\"?null:r}getWorkspaceByIdent(t){let r=this.tryWorkspaceByIdent(t);if(!r)throw new Error(`Workspace not found (${$i(this.configuration,t)})`);return r}tryWorkspaceByDescriptor(t){if(t.range.startsWith(Ii.protocol)){let s=t.range.slice(Ii.protocol.length);if(s!==\"^\"&&s!==\"~\"&&s!==\"*\"&&!dl(s))return this.tryWorkspaceByCwd(s)}let r=this.tryWorkspaceByIdent(t);return r===null||(Qp(t)&&(t=k2(t)),!r.accepts(t.range))?null:r}getWorkspaceByDescriptor(t){let r=this.tryWorkspaceByDescriptor(t);if(r===null)throw new Error(`Workspace not found (${oi(this.configuration,t)})`);return r}tryWorkspaceByLocator(t){let r=this.tryWorkspaceByIdent(t);return r===null||(Hu(t)&&(t=sI(t)),r.anchoredLocator.locatorHash!==t.locatorHash)?null:r}getWorkspaceByLocator(t){let r=this.tryWorkspaceByLocator(t);if(!r)throw new Error(`Workspace not found (${Vr(this.configuration,t)})`);return r}deleteDescriptor(t){this.storedResolutions.delete(t),this.storedDescriptors.delete(t)}deleteLocator(t){this.originalPackages.delete(t),this.storedPackages.delete(t),this.accessibleLocators.delete(t)}forgetResolution(t){if(\"descriptorHash\"in t){let r=this.storedResolutions.get(t.descriptorHash);this.deleteDescriptor(t.descriptorHash);let s=new Set(this.storedResolutions.values());typeof r<\"u\"&&!s.has(r)&&this.deleteLocator(r)}if(\"locatorHash\"in t){this.deleteLocator(t.locatorHash);for(let[r,s]of this.storedResolutions)s===t.locatorHash&&this.deleteDescriptor(r)}}forgetTransientResolutions(){let t=this.configuration.makeResolver(),r=new Map;for(let[s,a]of this.storedResolutions.entries()){let n=r.get(a);n||r.set(a,n=new Set),n.add(s)}for(let s of this.originalPackages.values()){let a;try{a=t.shouldPersistResolution(s,{project:this,resolver:t})}catch{a=!1}if(!a){this.deleteLocator(s.locatorHash);let n=r.get(s.locatorHash);if(n){r.delete(s.locatorHash);for(let c of n)this.deleteDescriptor(c)}}}}forgetVirtualResolutions(){for(let t of this.storedPackages.values())for(let[r,s]of t.dependencies)Qp(s)&&t.dependencies.set(r,k2(s))}getDependencyMeta(t,r){let s={},n=this.topLevelWorkspace.manifest.dependenciesMeta.get(fn(t));if(!n)return s;let c=n.get(null);if(c&&Object.assign(s,c),r===null||!u0e.default.valid(r))return s;for(let[f,p]of n)f!==null&&f===r&&Object.assign(s,p);return s}async findLocatorForLocation(t,{strict:r=!1}={}){let s=new ki,a=this.configuration.getLinkers(),n={project:this,report:s};for(let c of a){let f=await c.findPackageLocator(t,n);if(f){if(r&&(await c.findPackageLocation(f,n)).replace(l0e,\"\")!==t.replace(l0e,\"\"))continue;return f}}return null}async loadUserConfig(){let t=K.join(this.cwd,\".pnp.cjs\");await le.existsPromise(t)&&xp(t).setup();let r=K.join(this.cwd,\"yarn.config.cjs\");return await le.existsPromise(r)?xp(r):null}async preparePackage(t,{resolver:r,resolveOptions:s}){let a=await this.configuration.getPackageExtensions(),n=this.configuration.normalizePackage(t,{packageExtensions:a});for(let[c,f]of n.dependencies){let p=await this.configuration.reduceHook(E=>E.reduceDependency,f,this,n,f,{resolver:r,resolveOptions:s});if(!Q2(f,p))throw new Error(\"Assertion failed: The descriptor ident cannot be changed through aliases\");let h=r.bindDescriptor(p,n,s);n.dependencies.set(c,h)}return n}async resolveEverything(t){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error(\"Workspaces must have been setup before calling this function\");this.forgetVirtualResolutions();let r=new Map(this.originalPackages),s=[];t.lockfileOnly||this.forgetTransientResolutions();let a=t.resolver||this.configuration.makeResolver(),n=new _I(a);await n.setup(this,{report:t.report});let c=t.lockfileOnly?[new DT(a)]:[n,a],f=new em([new HI(a),...c]),p=new em([...c]),h=this.configuration.makeFetcher(),E=t.lockfileOnly?{project:this,report:t.report,resolver:f}:{project:this,report:t.report,resolver:f,fetchOptions:{project:this,cache:t.cache,checksums:this.storedChecksums,report:t.report,fetcher:h,cacheOptions:{mirrorWriteOnly:!0}}},C=new Map,S=new Map,x=new Map,I=new Map,T=new Map,O=new Map,U=this.topLevelWorkspace.anchoredLocator,Y=new Set,te=[],ie=KH(),ue=this.configuration.getSupportedArchitectures();await t.report.startProgressPromise(yo.progressViaTitle(),async ce=>{let X=async tt=>{let Ne=await YE(async()=>await f.resolve(tt,E),Re=>`${Vr(this.configuration,tt)}: ${Re}`);if(!R2(tt,Ne))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${Vr(this.configuration,tt)} to ${Vr(this.configuration,Ne)})`);I.set(Ne.locatorHash,Ne),!r.delete(Ne.locatorHash)&&!this.tryWorkspaceByLocator(Ne)&&s.push(Ne);let be=await this.preparePackage(Ne,{resolver:f,resolveOptions:E}),je=Lu([...be.dependencies.values()].map(Re=>_(Re)));return te.push(je),je.catch(()=>{}),S.set(be.locatorHash,be),be},De=async tt=>{let Ne=T.get(tt.locatorHash);if(typeof Ne<\"u\")return Ne;let ke=Promise.resolve().then(()=>X(tt));return T.set(tt.locatorHash,ke),ke},Qe=async(tt,Ne)=>{let ke=await _(Ne);return C.set(tt.descriptorHash,tt),x.set(tt.descriptorHash,ke.locatorHash),ke},it=async tt=>{ce.setTitle(oi(this.configuration,tt));let Ne=this.resolutionAliases.get(tt.descriptorHash);if(typeof Ne<\"u\")return Qe(tt,this.storedDescriptors.get(Ne));let ke=f.getResolutionDependencies(tt,E),be=Object.fromEntries(await Lu(Object.entries(ke).map(async([ct,Me])=>{let P=f.bindDescriptor(Me,U,E),w=await _(P);return Y.add(w.locatorHash),[ct,w]}))),Re=(await YE(async()=>await f.getCandidates(tt,be,E),ct=>`${oi(this.configuration,tt)}: ${ct}`))[0];if(typeof Re>\"u\")throw new _t(82,`${oi(this.configuration,tt)}: No candidates found`);if(t.checkResolutions){let{locators:ct}=await p.getSatisfying(tt,be,[Re],{...E,resolver:p});if(!ct.find(Me=>Me.locatorHash===Re.locatorHash))throw new _t(78,`Invalid resolution ${D2(this.configuration,tt,Re)}`)}return C.set(tt.descriptorHash,tt),x.set(tt.descriptorHash,Re.locatorHash),De(Re)},_=tt=>{let Ne=O.get(tt.descriptorHash);if(typeof Ne<\"u\")return Ne;C.set(tt.descriptorHash,tt);let ke=Promise.resolve().then(()=>it(tt));return O.set(tt.descriptorHash,ke),ke};for(let tt of this.workspaces){let Ne=tt.anchoredDescriptor;te.push(_(Ne))}for(;te.length>0;){let tt=[...te];te.length=0,await Lu(tt)}});let ae=zl(r.values(),ce=>this.tryWorkspaceByLocator(ce)?zl.skip:ce);if(s.length>0||ae.length>0){let ce=new Set(this.workspaces.flatMap(tt=>{let Ne=S.get(tt.anchoredLocator.locatorHash);if(!Ne)throw new Error(\"Assertion failed: The workspace should have been resolved\");return Array.from(Ne.dependencies.values(),ke=>{let be=x.get(ke.descriptorHash);if(!be)throw new Error(\"Assertion failed: The resolution should have been registered\");return be})})),X=tt=>ce.has(tt.locatorHash)?\"0\":\"1\",De=tt=>gl(tt),Qe=Ys(s,[X,De]),it=Ys(ae,[X,De]),_=t.report.getRecommendedLength();Qe.length>0&&t.report.reportInfo(85,`${jt(this.configuration,\"+\",gt.ADDED)} ${Xk(this.configuration,Qe,_)}`),it.length>0&&t.report.reportInfo(85,`${jt(this.configuration,\"-\",gt.REMOVED)} ${Xk(this.configuration,it,_)}`)}let de=new Set(this.resolutionAliases.values()),Ae=new Set(S.keys()),Ce=new Set,Ee=new Map,g=[],Se=new Map;bit({project:this,accessibleLocators:Ce,volatileDescriptors:de,optionalBuilds:Ae,peerRequirements:Ee,peerWarnings:g,peerRequirementNodes:Se,allDescriptors:C,allResolutions:x,allPackages:S});for(let ce of Y)Ae.delete(ce);for(let ce of de)C.delete(ce),x.delete(ce);let Be=new Set,me=new Set;for(let ce of S.values())ce.conditions!=null&&Ae.has(ce.locatorHash)&&(QQ(ce,ue)||(QQ(ce,ie)&&t.report.reportWarningOnce(77,`${Vr(this.configuration,ce)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${jt(this.configuration,\"supportedArchitectures\",gt.SETTING)} setting`),me.add(ce.locatorHash)),Be.add(ce.locatorHash));this.storedResolutions=x,this.storedDescriptors=C,this.storedPackages=S,this.accessibleLocators=Ce,this.conditionalLocators=Be,this.disabledLocators=me,this.originalPackages=I,this.optionalBuilds=Ae,this.peerRequirements=Ee,this.peerWarnings=g,this.peerRequirementNodes=Se}async fetchEverything({cache:t,report:r,fetcher:s,mode:a,persistProject:n=!0}){let c={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},f=s||this.configuration.makeFetcher(),p={checksums:this.storedChecksums,project:this,cache:t,fetcher:f,report:r,cacheOptions:c},h=Array.from(new Set(Ys(this.storedResolutions.values(),[I=>{let T=this.storedPackages.get(I);if(!T)throw new Error(\"Assertion failed: The locator should have been registered\");return gl(T)}])));a===\"update-lockfile\"&&(h=h.filter(I=>!this.storedChecksums.has(I)));let E=!1,C=yo.progressViaCounter(h.length);await r.reportProgress(C);let S=(0,PT.default)(vit);if(await Lu(h.map(I=>S(async()=>{let T=this.storedPackages.get(I);if(!T)throw new Error(\"Assertion failed: The locator should have been registered\");if(Hu(T))return;let O;try{O=await f.fetch(T,p)}catch(U){U.message=`${Vr(this.configuration,T)}: ${U.message}`,r.reportExceptionOnce(U),E=U;return}O.checksum!=null?this.storedChecksums.set(T.locatorHash,O.checksum):this.storedChecksums.delete(T.locatorHash),O.releaseFs&&O.releaseFs()}).finally(()=>{C.tick()}))),E)throw E;let x=n&&a!==\"update-lockfile\"?await this.cacheCleanup({cache:t,report:r}):null;if(r.cacheMisses.size>0||x){let T=(await Promise.all([...r.cacheMisses].map(async ae=>{let de=this.storedPackages.get(ae),Ae=this.storedChecksums.get(ae)??null,Ce=t.getLocatorPath(de,Ae);return(await le.statPromise(Ce)).size}))).reduce((ae,de)=>ae+de,0)-(x?.size??0),O=r.cacheMisses.size,U=x?.count??0,Y=`${qk(O,{zero:\"No new packages\",one:\"A package was\",more:`${jt(this.configuration,O,gt.NUMBER)} packages were`})} added to the project`,te=`${qk(U,{zero:\"none were\",one:\"one was\",more:`${jt(this.configuration,U,gt.NUMBER)} were`})} removed`,ie=T!==0?` (${jt(this.configuration,T,gt.SIZE_DIFF)})`:\"\",ue=U>0?O>0?`${Y}, and ${te}${ie}.`:`${Y}, but ${te}${ie}.`:`${Y}${ie}.`;r.reportInfo(13,ue)}}async linkEverything({cache:t,report:r,fetcher:s,mode:a}){let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},c=s||this.configuration.makeFetcher(),f={checksums:this.storedChecksums,project:this,cache:t,fetcher:c,report:r,cacheOptions:n},p=this.configuration.getLinkers(),h={project:this,report:r},E=new Map(p.map(Be=>{let me=Be.makeInstaller(h),ce=Be.getCustomDataKey(),X=this.linkersCustomData.get(ce);return typeof X<\"u\"&&me.attachCustomData(X),[Be,me]})),C=new Map,S=new Map,x=new Map,I=new Map(await Lu([...this.accessibleLocators].map(async Be=>{let me=this.storedPackages.get(Be);if(!me)throw new Error(\"Assertion failed: The locator should have been registered\");return[Be,await c.fetch(me,f)]}))),T=[],O=new Set,U=[];for(let Be of this.accessibleLocators){let me=this.storedPackages.get(Be);if(typeof me>\"u\")throw new Error(\"Assertion failed: The locator should have been registered\");let ce=I.get(me.locatorHash);if(typeof ce>\"u\")throw new Error(\"Assertion failed: The fetch result should have been registered\");let X=[],De=it=>{X.push(it)},Qe=this.tryWorkspaceByLocator(me);if(Qe!==null){let it=[],{scripts:_}=Qe.manifest;for(let Ne of[\"preinstall\",\"install\",\"postinstall\"])_.has(Ne)&&it.push({type:0,script:Ne});try{for(let[Ne,ke]of E)if(Ne.supportsPackage(me,h)&&(await ke.installPackage(me,ce,{holdFetchResult:De})).buildRequest!==null)throw new Error(\"Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core\")}finally{X.length===0?ce.releaseFs?.():T.push(Lu(X).catch(()=>{}).then(()=>{ce.releaseFs?.()}))}let tt=K.join(ce.packageFs.getRealPath(),ce.prefixPath);S.set(me.locatorHash,tt),!Hu(me)&&it.length>0&&x.set(me.locatorHash,{buildDirectives:it,buildLocations:[tt]})}else{let it=p.find(Ne=>Ne.supportsPackage(me,h));if(!it)throw new _t(12,`${Vr(this.configuration,me)} isn't supported by any available linker`);let _=E.get(it);if(!_)throw new Error(\"Assertion failed: The installer should have been registered\");let tt;try{tt=await _.installPackage(me,ce,{holdFetchResult:De})}finally{X.length===0?ce.releaseFs?.():T.push(Lu(X).then(()=>{}).then(()=>{ce.releaseFs?.()}))}C.set(me.locatorHash,it),S.set(me.locatorHash,tt.packageLocation),tt.buildRequest&&tt.packageLocation&&(tt.buildRequest.skipped?(O.add(me.locatorHash),this.skippedBuilds.has(me.locatorHash)||U.push([me,tt.buildRequest.explain])):x.set(me.locatorHash,{buildDirectives:tt.buildRequest.directives,buildLocations:[tt.packageLocation]}))}}let Y=new Map;for(let Be of this.accessibleLocators){let me=this.storedPackages.get(Be);if(!me)throw new Error(\"Assertion failed: The locator should have been registered\");let ce=this.tryWorkspaceByLocator(me)!==null,X=async(De,Qe)=>{let it=S.get(me.locatorHash);if(typeof it>\"u\")throw new Error(`Assertion failed: The package (${Vr(this.configuration,me)}) should have been registered`);let _=[];for(let tt of me.dependencies.values()){let Ne=this.storedResolutions.get(tt.descriptorHash);if(typeof Ne>\"u\")throw new Error(`Assertion failed: The resolution (${oi(this.configuration,tt)}, from ${Vr(this.configuration,me)})should have been registered`);let ke=this.storedPackages.get(Ne);if(typeof ke>\"u\")throw new Error(`Assertion failed: The package (${Ne}, resolved from ${oi(this.configuration,tt)}) should have been registered`);let be=this.tryWorkspaceByLocator(ke)===null?C.get(Ne):null;if(typeof be>\"u\")throw new Error(`Assertion failed: The package (${Ne}, resolved from ${oi(this.configuration,tt)}) should have been registered`);be===De||be===null?S.get(ke.locatorHash)!==null&&_.push([tt,ke]):!ce&&it!==null&&C2(Y,Ne).push(it)}it!==null&&await Qe.attachInternalDependencies(me,_)};if(ce)for(let[De,Qe]of E)De.supportsPackage(me,h)&&await X(De,Qe);else{let De=C.get(me.locatorHash);if(!De)throw new Error(\"Assertion failed: The linker should have been found\");let Qe=E.get(De);if(!Qe)throw new Error(\"Assertion failed: The installer should have been registered\");await X(De,Qe)}}for(let[Be,me]of Y){let ce=this.storedPackages.get(Be);if(!ce)throw new Error(\"Assertion failed: The package should have been registered\");let X=C.get(ce.locatorHash);if(!X)throw new Error(\"Assertion failed: The linker should have been found\");let De=E.get(X);if(!De)throw new Error(\"Assertion failed: The installer should have been registered\");await De.attachExternalDependents(ce,me)}let te=new Map;for(let[Be,me]of E){let ce=await me.finalizeInstall();for(let X of ce?.records??[])X.buildRequest.skipped?(O.add(X.locator.locatorHash),this.skippedBuilds.has(X.locator.locatorHash)||U.push([X.locator,X.buildRequest.explain])):x.set(X.locator.locatorHash,{buildDirectives:X.buildRequest.directives,buildLocations:X.buildLocations});typeof ce?.customData<\"u\"&&te.set(Be.getCustomDataKey(),ce.customData)}if(this.linkersCustomData=te,await Lu(T),a===\"skip-build\")return;for(let[,Be]of Ys(U,([me])=>gl(me)))Be(r);let ie=new Set(x.keys()),ue=(0,bT.createHash)(\"sha512\");ue.update(process.versions.node),await this.configuration.triggerHook(Be=>Be.globalHashGeneration,this,Be=>{ue.update(\"\\0\"),ue.update(Be)});let ae=ue.digest(\"hex\"),de=new Map,Ae=Be=>{let me=de.get(Be.locatorHash);if(typeof me<\"u\")return me;let ce=this.storedPackages.get(Be.locatorHash);if(typeof ce>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");let X=(0,bT.createHash)(\"sha512\");X.update(Be.locatorHash),de.set(Be.locatorHash,\"<recursive>\");for(let De of ce.dependencies.values()){let Qe=this.storedResolutions.get(De.descriptorHash);if(typeof Qe>\"u\")throw new Error(`Assertion failed: The resolution (${oi(this.configuration,De)}) should have been registered`);let it=this.storedPackages.get(Qe);if(typeof it>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");X.update(Ae(it))}return me=X.digest(\"hex\"),de.set(Be.locatorHash,me),me},Ce=(Be,me)=>{let ce=(0,bT.createHash)(\"sha512\");ce.update(ae),ce.update(Ae(Be));for(let X of me)ce.update(X);return ce.digest(\"hex\")},Ee=new Map,g=!1,Se=Be=>{let me=new Set([Be.locatorHash]);for(let ce of me){let X=this.storedPackages.get(ce);if(!X)throw new Error(\"Assertion failed: The package should have been registered\");for(let De of X.dependencies.values()){let Qe=this.storedResolutions.get(De.descriptorHash);if(!Qe)throw new Error(`Assertion failed: The resolution (${oi(this.configuration,De)}) should have been registered`);if(Qe!==Be.locatorHash&&ie.has(Qe))return!1;let it=this.storedPackages.get(Qe);if(!it)throw new Error(\"Assertion failed: The package should have been registered\");let _=this.tryWorkspaceByLocator(it);if(_){if(_.anchoredLocator.locatorHash!==Be.locatorHash&&ie.has(_.anchoredLocator.locatorHash))return!1;me.add(_.anchoredLocator.locatorHash)}me.add(Qe)}}return!0};for(;ie.size>0;){let Be=ie.size,me=[];for(let ce of ie){let X=this.storedPackages.get(ce);if(!X)throw new Error(\"Assertion failed: The package should have been registered\");if(!Se(X))continue;let De=x.get(X.locatorHash);if(!De)throw new Error(\"Assertion failed: The build directive should have been registered\");let Qe=Ce(X,De.buildLocations);if(this.storedBuildState.get(X.locatorHash)===Qe){Ee.set(X.locatorHash,Qe),ie.delete(ce);continue}g||(await this.persistInstallStateFile(),g=!0),this.storedBuildState.has(X.locatorHash)?r.reportInfo(8,`${Vr(this.configuration,X)} must be rebuilt because its dependency tree changed`):r.reportInfo(7,`${Vr(this.configuration,X)} must be built because it never has been before or the last one failed`);let it=De.buildLocations.map(async _=>{if(!K.isAbsolute(_))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${_})`);for(let tt of De.buildDirectives){let Ne=`# This file contains the result of Yarn building a package (${gl(X)})\n`;switch(tt.type){case 0:Ne+=`# Script name: ${tt.script}\n`;break;case 1:Ne+=`# Script code: ${tt.script}\n`;break}let ke=null;if(!await le.mktempPromise(async je=>{let Re=K.join(je,\"build.log\"),{stdout:ct,stderr:Me}=this.configuration.getSubprocessStreams(Re,{header:Ne,prefix:Vr(this.configuration,X),report:r}),P;try{switch(tt.type){case 0:P=await OR(X,tt.script,[],{cwd:_,project:this,stdin:ke,stdout:ct,stderr:Me});break;case 1:P=await kj(X,tt.script,[],{cwd:_,project:this,stdin:ke,stdout:ct,stderr:Me});break}}catch(y){Me.write(y.stack),P=1}if(ct.end(),Me.end(),P===0)return!0;le.detachTemp(je);let w=`${Vr(this.configuration,X)} couldn't be built successfully (exit code ${jt(this.configuration,P,gt.NUMBER)}, logs can be found here: ${jt(this.configuration,Re,gt.PATH)})`,b=this.optionalBuilds.has(X.locatorHash);return b?r.reportInfo(9,w):r.reportError(9,w),ype&&r.reportFold(fe.fromPortablePath(Re),le.readFileSync(Re,\"utf8\")),b}))return!1}return!0});me.push(...it,Promise.allSettled(it).then(_=>{ie.delete(ce),_.every(tt=>tt.status===\"fulfilled\"&&tt.value===!0)&&Ee.set(X.locatorHash,Qe)}))}if(await Lu(me),Be===ie.size){let ce=Array.from(ie).map(X=>{let De=this.storedPackages.get(X);if(!De)throw new Error(\"Assertion failed: The package should have been registered\");return Vr(this.configuration,De)}).join(\", \");r.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${ce})`);break}}this.storedBuildState=Ee,this.skippedBuilds=O}async installWithNewReport(t,r){return(await Ot.start({configuration:this.configuration,json:t.json,stdout:t.stdout,forceSectionAlignment:!0,includeLogs:!t.json&&!t.quiet,includeVersion:!0},async a=>{await this.install({...r,report:a})})).exitCode()}async install(t){let r=this.configuration.get(\"nodeLinker\");ze.telemetry?.reportInstall(r);let s=!1;if(await t.report.startTimerPromise(\"Project validation\",{skipIfEmpty:!0},async()=>{this.configuration.get(\"enableOfflineMode\")&&t.report.reportWarning(90,\"Offline work is enabled; Yarn won't fetch packages from the remote registry if it can avoid it\"),await this.configuration.triggerHook(E=>E.validateProject,this,{reportWarning:(E,C)=>{t.report.reportWarning(E,C)},reportError:(E,C)=>{t.report.reportError(E,C),s=!0}})}),s)return;let a=await this.configuration.getPackageExtensions();for(let E of a.values())for(let[,C]of E)for(let S of C)S.status=\"inactive\";let n=K.join(this.cwd,Er.lockfile),c=null;if(t.immutable)try{c=await le.readFilePromise(n,\"utf8\")}catch(E){throw E.code===\"ENOENT\"?new _t(28,\"The lockfile would have been created by this install, which is explicitly forbidden.\"):E}await t.report.startTimerPromise(\"Resolution step\",async()=>{await this.resolveEverything(t)}),await t.report.startTimerPromise(\"Post-resolution validation\",{skipIfEmpty:!0},async()=>{xit(this,t.report);for(let[,E]of a)for(let[,C]of E)for(let S of C)if(S.userProvided){let x=jt(this.configuration,S,gt.PACKAGE_EXTENSION);switch(S.status){case\"inactive\":t.report.reportWarning(68,`${x}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case\"redundant\":t.report.reportWarning(69,`${x}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(c!==null){let E=md(c,this.generateLockfile());if(E!==c){let C=s0e(n,n,c,E,void 0,void 0,{maxEditLength:100});if(C){t.report.reportSeparator();for(let S of C.hunks){t.report.reportInfo(null,`@@ -${S.oldStart},${S.oldLines} +${S.newStart},${S.newLines} @@`);for(let x of S.lines)x.startsWith(\"+\")?t.report.reportError(28,jt(this.configuration,x,gt.ADDED)):x.startsWith(\"-\")?t.report.reportError(28,jt(this.configuration,x,gt.REMOVED)):t.report.reportInfo(null,jt(this.configuration,x,\"grey\"))}t.report.reportSeparator()}throw new _t(28,\"The lockfile would have been modified by this install, which is explicitly forbidden.\")}}});for(let E of a.values())for(let[,C]of E)for(let S of C)S.userProvided&&S.status===\"active\"&&ze.telemetry?.reportPackageExtension(Jd(S,gt.PACKAGE_EXTENSION));await t.report.startTimerPromise(\"Fetch step\",async()=>{await this.fetchEverything(t)});let f=t.immutable?[...new Set(this.configuration.get(\"immutablePatterns\"))].sort():[],p=await Promise.all(f.map(async E=>SQ(E,{cwd:this.cwd})));(typeof t.persistProject>\"u\"||t.persistProject)&&await this.persist(),await t.report.startTimerPromise(\"Link step\",async()=>{if(t.mode===\"update-lockfile\"){t.report.reportWarning(73,`Skipped due to ${jt(this.configuration,\"mode=update-lockfile\",gt.CODE)}`);return}await this.linkEverything(t);let E=await Promise.all(f.map(async C=>SQ(C,{cwd:this.cwd})));for(let C=0;C<f.length;++C)p[C]!==E[C]&&t.report.reportError(64,`The checksum for ${f[C]} has been modified by this install, which is explicitly forbidden.`)}),await this.persistInstallStateFile();let h=!1;await t.report.startTimerPromise(\"Post-install validation\",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(E=>E.validateProjectAfterInstall,this,{reportWarning:(E,C)=>{t.report.reportWarning(E,C)},reportError:(E,C)=>{t.report.reportError(E,C),h=!0}})}),!h&&await this.configuration.triggerHook(E=>E.afterAllInstalled,this,t)}generateLockfile(){let t=new Map;for(let[n,c]of this.storedResolutions.entries()){let f=t.get(c);f||t.set(c,f=new Set),f.add(n)}let r={},{cacheKey:s}=Jr.getCacheKey(this.configuration);r.__metadata={version:xT,cacheKey:s};for(let[n,c]of t.entries()){let f=this.originalPackages.get(n);if(!f)continue;let p=[];for(let C of c){let S=this.storedDescriptors.get(C);if(!S)throw new Error(\"Assertion failed: The descriptor should have been registered\");p.push(S)}let h=p.map(C=>hl(C)).sort().join(\", \"),E=new Ut;E.version=f.linkType===\"HARD\"?f.version:\"0.0.0-use.local\",E.languageName=f.languageName,E.dependencies=new Map(f.dependencies),E.peerDependencies=new Map(f.peerDependencies),E.dependenciesMeta=new Map(f.dependenciesMeta),E.peerDependenciesMeta=new Map(f.peerDependenciesMeta),E.bin=new Map(f.bin),r[h]={...E.exportTo({},{compatibilityMode:!1}),linkType:f.linkType.toLowerCase(),resolution:gl(f),checksum:this.storedChecksums.get(f.locatorHash),conditions:f.conditions||void 0}}return`${[`# This file is generated by running \"yarn install\" inside your project.\n`,`# Manual changes might be lost - proceed with caution!\n`].join(\"\")}\n`+cl(r)}async persistLockfile(){let t=K.join(this.cwd,Er.lockfile),r=\"\";try{r=await le.readFilePromise(t,\"utf8\")}catch{}let s=this.generateLockfile(),a=md(r,s);a!==r&&(await le.writeFilePromise(t,a),this.lockFileChecksum=c0e(a),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let t=[];for(let c of Object.values(AG))t.push(...c);let r=Yd(this,t),s=pG.default.serialize(r),a=fs(s);if(this.installStateChecksum===a)return;let n=this.configuration.get(\"installStatePath\");await le.mkdirPromise(K.dirname(n),{recursive:!0}),await le.writeFilePromise(n,await Sit(s)),this.installStateChecksum=a}async restoreInstallState({restoreLinkersCustomData:t=!0,restoreResolutions:r=!0,restoreBuildState:s=!0}={}){let a=this.configuration.get(\"installStatePath\"),n;try{let c=await Dit(await le.readFilePromise(a));n=pG.default.deserialize(c),this.installStateChecksum=fs(c)}catch{r&&await this.applyLightResolution();return}t&&typeof n.linkersCustomData<\"u\"&&(this.linkersCustomData=n.linkersCustomData),s&&Object.assign(this,Yd(n,AG.restoreBuildState)),r&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,Yd(n,AG.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new ki}),await this.persistInstallStateFile()}async persist(){let t=(0,PT.default)(4);await Promise.all([this.persistLockfile(),...this.workspaces.map(r=>t(()=>r.persistManifest()))])}async cacheCleanup({cache:t,report:r}){if(this.configuration.get(\"enableGlobalCache\"))return null;let s=new Set([\".gitignore\"]);if(!P8(t.cwd,this.cwd)||!await le.existsPromise(t.cwd))return null;let a=[];for(let c of await le.readdirPromise(t.cwd)){if(s.has(c))continue;let f=K.resolve(t.cwd,c);t.markedFiles.has(f)||(t.immutable?r.reportError(56,`${jt(this.configuration,K.basename(f),\"magenta\")} appears to be unused and would be marked for deletion, but the cache is immutable`):a.push(le.lstatPromise(f).then(async p=>(await le.removePromise(f),p.size))))}if(a.length===0)return null;let n=await Promise.all(a);return{count:a.length,size:n.reduce((c,f)=>c+f,0)}}}});function kit(e){let s=Math.floor(e.timeNow/864e5),a=e.updateInterval*864e5,n=e.state.lastUpdate??e.timeNow+a+Math.floor(a*e.randomInitialInterval),c=n+a,f=e.state.lastTips??s*864e5,p=f+864e5+8*36e5-e.timeZone,h=c<=e.timeNow,E=p<=e.timeNow,C=null;return(h||E||!e.state.lastUpdate||!e.state.lastTips)&&(C={},C.lastUpdate=h?e.timeNow:n,C.lastTips=f,C.blocks=h?{}:e.state.blocks,C.displayedTips=e.state.displayedTips),{nextState:C,triggerUpdate:h,triggerTips:E,nextTips:E?s*864e5:f}}var GI,A0e=Ze(()=>{Dt();uv();y0();AR();xc();Fp();GI=class{constructor(t,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.nextTips=0;this.displayedTips=[];this.shouldCommitTips=!1;this.configuration=t;let s=this.getRegistryPath();this.isNew=!le.existsSync(s),this.shouldShowTips=!1,this.sendReport(r),this.startBuffer()}commitTips(){this.shouldShowTips&&(this.shouldCommitTips=!0)}selectTip(t){let r=new Set(this.displayedTips),s=f=>f&&An?eA(An,f):!1,a=t.map((f,p)=>p).filter(f=>t[f]&&s(t[f]?.selector));if(a.length===0)return null;let n=a.filter(f=>!r.has(f));if(n.length===0){let f=Math.floor(a.length*.2);this.displayedTips=f>0?this.displayedTips.slice(-f):[],n=a.filter(p=>!r.has(p))}let c=n[Math.floor(Math.random()*n.length)];return this.displayedTips.push(c),this.commitTips(),t[c]}reportVersion(t){this.reportValue(\"version\",t.replace(/-git\\..*/,\"-git\"))}reportCommandName(t){this.reportValue(\"commandName\",t||\"<none>\")}reportPluginName(t){this.reportValue(\"pluginName\",t)}reportProject(t){this.reportEnumerator(\"projectCount\",t)}reportInstall(t){this.reportHit(\"installCount\",t)}reportPackageExtension(t){this.reportValue(\"packageExtension\",t)}reportWorkspaceCount(t){this.reportValue(\"workspaceCount\",String(t))}reportDependencyCount(t){this.reportValue(\"dependencyCount\",String(t))}reportValue(t,r){Pp(this.values,t).add(r)}reportEnumerator(t,r){Pp(this.enumerators,t).add(fs(r))}reportHit(t,r=\"*\"){let s=P4(this.hits,t),a=Zl(s,r,()=>0);s.set(r,a+1)}getRegistryPath(){let t=this.configuration.get(\"globalFolder\");return K.join(t,\"telemetry.json\")}sendReport(t){let r=this.getRegistryPath(),s;try{s=le.readJsonSync(r)}catch{s={}}let{nextState:a,triggerUpdate:n,triggerTips:c,nextTips:f}=kit({state:s,timeNow:Date.now(),timeZone:new Date().getTimezoneOffset()*60*1e3,randomInitialInterval:Math.random(),updateInterval:this.configuration.get(\"telemetryInterval\")});if(this.nextTips=f,this.displayedTips=s.displayedTips??[],a!==null)try{le.mkdirSync(K.dirname(r),{recursive:!0}),le.writeJsonSync(r,a)}catch{return!1}if(c&&this.configuration.get(\"enableTips\")&&(this.shouldShowTips=!0),n){let p=s.blocks??{};if(Object.keys(p).length===0){let h=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${t}?ddsource=yarn`,E=C=>YH(h,C,{configuration:this.configuration}).catch(()=>{});for(let[C,S]of Object.entries(s.blocks??{})){if(Object.keys(S).length===0)continue;let x=S;x.userId=C,x.reportType=\"primary\";for(let O of Object.keys(x.enumerators??{}))x.enumerators[O]=x.enumerators[O].length;E(x);let I=new Map,T=20;for(let[O,U]of Object.entries(x.values))U.length>0&&I.set(O,U.slice(0,T));for(;I.size>0;){let O={};O.userId=C,O.reportType=\"secondary\",O.metrics={};for(let[U,Y]of I)O.metrics[U]=Y.shift(),Y.length===0&&I.delete(U);E(O)}}}}return!0}applyChanges(){let t=this.getRegistryPath(),r;try{r=le.readJsonSync(t)}catch{r={}}let s=this.configuration.get(\"telemetryUserId\")??\"*\",a=r.blocks=r.blocks??{},n=a[s]=a[s]??{};for(let c of this.hits.keys()){let f=n.hits=n.hits??{},p=f[c]=f[c]??{};for(let[h,E]of this.hits.get(c))p[h]=(p[h]??0)+E}for(let c of[\"values\",\"enumerators\"])for(let f of this[c].keys()){let p=n[c]=n[c]??{};p[f]=[...new Set([...p[f]??[],...this[c].get(f)??[]])]}this.shouldCommitTips&&(r.lastTips=this.nextTips,r.displayedTips=this.displayedTips),le.mkdirSync(K.dirname(t),{recursive:!0}),le.writeJsonSync(t,r)}startBuffer(){process.on(\"exit\",()=>{try{this.applyChanges()}catch{}})}}});var jv={};Yt(jv,{BuildDirectiveType:()=>vT,CACHE_CHECKPOINT:()=>$6,CACHE_VERSION:()=>BT,Cache:()=>Jr,Configuration:()=>ze,DEFAULT_RC_FILENAME:()=>ej,DurationUnit:()=>tj,FormatType:()=>PAe,InstallMode:()=>Na,LEGACY_PLUGINS:()=>X2,LOCKFILE_VERSION:()=>xT,LegacyMigrationResolver:()=>_I,LightReport:()=>cA,LinkType:()=>zE,LockfileResolver:()=>HI,Manifest:()=>Ut,MessageName:()=>Br,MultiFetcher:()=>uI,PackageExtensionStatus:()=>R4,PackageExtensionType:()=>Q4,PeerWarningType:()=>kT,Project:()=>Rt,Report:()=>yo,ReportError:()=>_t,SettingsType:()=>SI,StreamReport:()=>Ot,TAG_REGEXP:()=>Up,TelemetryManager:()=>GI,ThrowReport:()=>ki,VirtualFetcher:()=>fI,WindowsLinkType:()=>ER,Workspace:()=>jI,WorkspaceFetcher:()=>AI,WorkspaceResolver:()=>Ii,YarnVersion:()=>An,execUtils:()=>qr,folderUtils:()=>NQ,formatUtils:()=>pe,hashUtils:()=>Ln,httpUtils:()=>nn,miscUtils:()=>Ge,nodeUtils:()=>Ui,parseMessageName:()=>jx,reportOptionDeprecations:()=>PI,scriptUtils:()=>Cn,semverUtils:()=>Fr,stringifyMessageName:()=>Kf,structUtils:()=>j,tgzUtils:()=>ds,treeUtils:()=>Rs});var qe=Ze(()=>{gR();OQ();kc();y0();AR();xc();hR();Fj();Fp();Zo();qhe();Zhe();eG();$2();$2();e0e();tG();t0e();rG();cI();Gx();m8();f0e();Tc();fv();A0e();uG();E8();I8();$d();fG();uv();Rae()});var y0e=G((J4t,qv)=>{\"use strict\";var Rit=process.env.TERM_PROGRAM===\"Hyper\",Tit=process.platform===\"win32\",g0e=process.platform===\"linux\",dG={ballotDisabled:\"\\u2612\",ballotOff:\"\\u2610\",ballotOn:\"\\u2611\",bullet:\"\\u2022\",bulletWhite:\"\\u25E6\",fullBlock:\"\\u2588\",heart:\"\\u2764\",identicalTo:\"\\u2261\",line:\"\\u2500\",mark:\"\\u203B\",middot:\"\\xB7\",minus:\"\\uFF0D\",multiplication:\"\\xD7\",obelus:\"\\xF7\",pencilDownRight:\"\\u270E\",pencilRight:\"\\u270F\",pencilUpRight:\"\\u2710\",percent:\"%\",pilcrow2:\"\\u2761\",pilcrow:\"\\xB6\",plusMinus:\"\\xB1\",section:\"\\xA7\",starsOff:\"\\u2606\",starsOn:\"\\u2605\",upDownArrow:\"\\u2195\"},d0e=Object.assign({},dG,{check:\"\\u221A\",cross:\"\\xD7\",ellipsisLarge:\"...\",ellipsis:\"...\",info:\"i\",question:\"?\",questionSmall:\"?\",pointer:\">\",pointerSmall:\"\\xBB\",radioOff:\"( )\",radioOn:\"(*)\",warning:\"\\u203C\"}),m0e=Object.assign({},dG,{ballotCross:\"\\u2718\",check:\"\\u2714\",cross:\"\\u2716\",ellipsisLarge:\"\\u22EF\",ellipsis:\"\\u2026\",info:\"\\u2139\",question:\"?\",questionFull:\"\\uFF1F\",questionSmall:\"\\uFE56\",pointer:g0e?\"\\u25B8\":\"\\u276F\",pointerSmall:g0e?\"\\u2023\":\"\\u203A\",radioOff:\"\\u25EF\",radioOn:\"\\u25C9\",warning:\"\\u26A0\"});qv.exports=Tit&&!Rit?d0e:m0e;Reflect.defineProperty(qv.exports,\"common\",{enumerable:!1,value:dG});Reflect.defineProperty(qv.exports,\"windows\",{enumerable:!1,value:d0e});Reflect.defineProperty(qv.exports,\"other\",{enumerable:!1,value:m0e})});var zu=G((z4t,mG)=>{\"use strict\";var Fit=e=>e!==null&&typeof e==\"object\"&&!Array.isArray(e),Nit=/[\\u001b\\u009b][[\\]#;?()]*(?:(?:(?:[^\\W_]*;?[^\\W_]*)\\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,E0e=()=>{let e={enabled:!0,visible:!0,styles:{},keys:{}};\"FORCE_COLOR\"in process.env&&(e.enabled=process.env.FORCE_COLOR!==\"0\");let t=n=>{let c=n.open=`\\x1B[${n.codes[0]}m`,f=n.close=`\\x1B[${n.codes[1]}m`,p=n.regex=new RegExp(`\\\\u001b\\\\[${n.codes[1]}m`,\"g\");return n.wrap=(h,E)=>{h.includes(f)&&(h=h.replace(p,f+c));let C=c+h+f;return E?C.replace(/\\r*\\n/g,`${f}$&${c}`):C},n},r=(n,c,f)=>typeof n==\"function\"?n(c):n.wrap(c,f),s=(n,c)=>{if(n===\"\"||n==null)return\"\";if(e.enabled===!1)return n;if(e.visible===!1)return\"\";let f=\"\"+n,p=f.includes(`\n`),h=c.length;for(h>0&&c.includes(\"unstyle\")&&(c=[...new Set([\"unstyle\",...c])].reverse());h-- >0;)f=r(e.styles[c[h]],f,p);return f},a=(n,c,f)=>{e.styles[n]=t({name:n,codes:c}),(e.keys[f]||(e.keys[f]=[])).push(n),Reflect.defineProperty(e,n,{configurable:!0,enumerable:!0,set(h){e.alias(n,h)},get(){let h=E=>s(E,h.stack);return Reflect.setPrototypeOf(h,e),h.stack=this.stack?this.stack.concat(n):[n],h}})};return a(\"reset\",[0,0],\"modifier\"),a(\"bold\",[1,22],\"modifier\"),a(\"dim\",[2,22],\"modifier\"),a(\"italic\",[3,23],\"modifier\"),a(\"underline\",[4,24],\"modifier\"),a(\"inverse\",[7,27],\"modifier\"),a(\"hidden\",[8,28],\"modifier\"),a(\"strikethrough\",[9,29],\"modifier\"),a(\"black\",[30,39],\"color\"),a(\"red\",[31,39],\"color\"),a(\"green\",[32,39],\"color\"),a(\"yellow\",[33,39],\"color\"),a(\"blue\",[34,39],\"color\"),a(\"magenta\",[35,39],\"color\"),a(\"cyan\",[36,39],\"color\"),a(\"white\",[37,39],\"color\"),a(\"gray\",[90,39],\"color\"),a(\"grey\",[90,39],\"color\"),a(\"bgBlack\",[40,49],\"bg\"),a(\"bgRed\",[41,49],\"bg\"),a(\"bgGreen\",[42,49],\"bg\"),a(\"bgYellow\",[43,49],\"bg\"),a(\"bgBlue\",[44,49],\"bg\"),a(\"bgMagenta\",[45,49],\"bg\"),a(\"bgCyan\",[46,49],\"bg\"),a(\"bgWhite\",[47,49],\"bg\"),a(\"blackBright\",[90,39],\"bright\"),a(\"redBright\",[91,39],\"bright\"),a(\"greenBright\",[92,39],\"bright\"),a(\"yellowBright\",[93,39],\"bright\"),a(\"blueBright\",[94,39],\"bright\"),a(\"magentaBright\",[95,39],\"bright\"),a(\"cyanBright\",[96,39],\"bright\"),a(\"whiteBright\",[97,39],\"bright\"),a(\"bgBlackBright\",[100,49],\"bgBright\"),a(\"bgRedBright\",[101,49],\"bgBright\"),a(\"bgGreenBright\",[102,49],\"bgBright\"),a(\"bgYellowBright\",[103,49],\"bgBright\"),a(\"bgBlueBright\",[104,49],\"bgBright\"),a(\"bgMagentaBright\",[105,49],\"bgBright\"),a(\"bgCyanBright\",[106,49],\"bgBright\"),a(\"bgWhiteBright\",[107,49],\"bgBright\"),e.ansiRegex=Nit,e.hasColor=e.hasAnsi=n=>(e.ansiRegex.lastIndex=0,typeof n==\"string\"&&n!==\"\"&&e.ansiRegex.test(n)),e.alias=(n,c)=>{let f=typeof c==\"string\"?e[c]:c;if(typeof f!=\"function\")throw new TypeError(\"Expected alias to be the name of an existing color (string) or a function\");f.stack||(Reflect.defineProperty(f,\"name\",{value:n}),e.styles[n]=f,f.stack=[n]),Reflect.defineProperty(e,n,{configurable:!0,enumerable:!0,set(p){e.alias(n,p)},get(){let p=h=>s(h,p.stack);return Reflect.setPrototypeOf(p,e),p.stack=this.stack?this.stack.concat(f.stack):f.stack,p}})},e.theme=n=>{if(!Fit(n))throw new TypeError(\"Expected theme to be an object\");for(let c of Object.keys(n))e.alias(c,n[c]);return e},e.alias(\"unstyle\",n=>typeof n==\"string\"&&n!==\"\"?(e.ansiRegex.lastIndex=0,n.replace(e.ansiRegex,\"\")):\"\"),e.alias(\"noop\",n=>n),e.none=e.clear=e.noop,e.stripColor=e.unstyle,e.symbols=y0e(),e.define=a,e};mG.exports=E0e();mG.exports.create=E0e});var ra=G(hn=>{\"use strict\";var Oit=Object.prototype.toString,_c=zu(),I0e=!1,yG=[],C0e={yellow:\"blue\",cyan:\"red\",green:\"magenta\",black:\"white\",blue:\"yellow\",red:\"cyan\",magenta:\"green\",white:\"black\"};hn.longest=(e,t)=>e.reduce((r,s)=>Math.max(r,t?s[t].length:s.length),0);hn.hasColor=e=>!!e&&_c.hasColor(e);var RT=hn.isObject=e=>e!==null&&typeof e==\"object\"&&!Array.isArray(e);hn.nativeType=e=>Oit.call(e).slice(8,-1).toLowerCase().replace(/\\s/g,\"\");hn.isAsyncFn=e=>hn.nativeType(e)===\"asyncfunction\";hn.isPrimitive=e=>e!=null&&typeof e!=\"object\"&&typeof e!=\"function\";hn.resolve=(e,t,...r)=>typeof t==\"function\"?t.call(e,...r):t;hn.scrollDown=(e=[])=>[...e.slice(1),e[0]];hn.scrollUp=(e=[])=>[e.pop(),...e];hn.reorder=(e=[])=>{let t=e.slice();return t.sort((r,s)=>r.index>s.index?1:r.index<s.index?-1:0),t};hn.swap=(e,t,r)=>{let s=e.length,a=r===s?0:r<0?s-1:r,n=e[t];e[t]=e[a],e[a]=n};hn.width=(e,t=80)=>{let r=e&&e.columns?e.columns:t;return e&&typeof e.getWindowSize==\"function\"&&(r=e.getWindowSize()[0]),process.platform===\"win32\"?r-1:r};hn.height=(e,t=20)=>{let r=e&&e.rows?e.rows:t;return e&&typeof e.getWindowSize==\"function\"&&(r=e.getWindowSize()[1]),r};hn.wordWrap=(e,t={})=>{if(!e)return e;typeof t==\"number\"&&(t={width:t});let{indent:r=\"\",newline:s=`\n`+r,width:a=80}=t,n=(s+r).match(/[^\\S\\n]/g)||[];a-=n.length;let c=`.{1,${a}}([\\\\s\\\\u200B]+|$)|[^\\\\s\\\\u200B]+?([\\\\s\\\\u200B]+|$)`,f=e.trim(),p=new RegExp(c,\"g\"),h=f.match(p)||[];return h=h.map(E=>E.replace(/\\n$/,\"\")),t.padEnd&&(h=h.map(E=>E.padEnd(a,\" \"))),t.padStart&&(h=h.map(E=>E.padStart(a,\" \"))),r+h.join(s)};hn.unmute=e=>{let t=e.stack.find(s=>_c.keys.color.includes(s));return t?_c[t]:e.stack.find(s=>s.slice(2)===\"bg\")?_c[t.slice(2)]:s=>s};hn.pascal=e=>e?e[0].toUpperCase()+e.slice(1):\"\";hn.inverse=e=>{if(!e||!e.stack)return e;let t=e.stack.find(s=>_c.keys.color.includes(s));if(t){let s=_c[\"bg\"+hn.pascal(t)];return s?s.black:e}let r=e.stack.find(s=>s.slice(0,2)===\"bg\");return r?_c[r.slice(2).toLowerCase()]||e:_c.none};hn.complement=e=>{if(!e||!e.stack)return e;let t=e.stack.find(s=>_c.keys.color.includes(s)),r=e.stack.find(s=>s.slice(0,2)===\"bg\");if(t&&!r)return _c[C0e[t]||t];if(r){let s=r.slice(2).toLowerCase(),a=C0e[s];return a&&_c[\"bg\"+hn.pascal(a)]||e}return _c.none};hn.meridiem=e=>{let t=e.getHours(),r=e.getMinutes(),s=t>=12?\"pm\":\"am\";t=t%12;let a=t===0?12:t,n=r<10?\"0\"+r:r;return a+\":\"+n+\" \"+s};hn.set=(e={},t=\"\",r)=>t.split(\".\").reduce((s,a,n,c)=>{let f=c.length-1>n?s[a]||{}:r;return!hn.isObject(f)&&n<c.length-1&&(f={}),s[a]=f},e);hn.get=(e={},t=\"\",r)=>{let s=e[t]==null?t.split(\".\").reduce((a,n)=>a&&a[n],e):e[t];return s??r};hn.mixin=(e,t)=>{if(!RT(e))return t;if(!RT(t))return e;for(let r of Object.keys(t)){let s=Object.getOwnPropertyDescriptor(t,r);if(s.hasOwnProperty(\"value\"))if(e.hasOwnProperty(r)&&RT(s.value)){let a=Object.getOwnPropertyDescriptor(e,r);RT(a.value)?e[r]=hn.merge({},e[r],t[r]):Reflect.defineProperty(e,r,s)}else Reflect.defineProperty(e,r,s);else Reflect.defineProperty(e,r,s)}return e};hn.merge=(...e)=>{let t={};for(let r of e)hn.mixin(t,r);return t};hn.mixinEmitter=(e,t)=>{let r=t.constructor.prototype;for(let s of Object.keys(r)){let a=r[s];typeof a==\"function\"?hn.define(e,s,a.bind(t)):hn.define(e,s,a)}};hn.onExit=e=>{let t=(r,s)=>{I0e||(I0e=!0,yG.forEach(a=>a()),r===!0&&process.exit(128+s))};yG.length===0&&(process.once(\"SIGTERM\",t.bind(null,!0,15)),process.once(\"SIGINT\",t.bind(null,!0,2)),process.once(\"exit\",t)),yG.push(e)};hn.define=(e,t,r)=>{Reflect.defineProperty(e,t,{value:r})};hn.defineExport=(e,t,r)=>{let s;Reflect.defineProperty(e,t,{enumerable:!0,configurable:!0,set(a){s=a},get(){return s?s():r()}})}});var w0e=G(YI=>{\"use strict\";YI.ctrl={a:\"first\",b:\"backward\",c:\"cancel\",d:\"deleteForward\",e:\"last\",f:\"forward\",g:\"reset\",i:\"tab\",k:\"cutForward\",l:\"reset\",n:\"newItem\",m:\"cancel\",j:\"submit\",p:\"search\",r:\"remove\",s:\"save\",u:\"undo\",w:\"cutLeft\",x:\"toggleCursor\",v:\"paste\"};YI.shift={up:\"shiftUp\",down:\"shiftDown\",left:\"shiftLeft\",right:\"shiftRight\",tab:\"prev\"};YI.fn={up:\"pageUp\",down:\"pageDown\",left:\"pageLeft\",right:\"pageRight\",delete:\"deleteForward\"};YI.option={b:\"backward\",f:\"forward\",d:\"cutRight\",left:\"cutLeft\",up:\"altUp\",down:\"altDown\"};YI.keys={pageup:\"pageUp\",pagedown:\"pageDown\",home:\"home\",end:\"end\",cancel:\"cancel\",delete:\"deleteForward\",backspace:\"delete\",down:\"down\",enter:\"submit\",escape:\"cancel\",left:\"left\",space:\"space\",number:\"number\",return:\"submit\",right:\"right\",tab:\"next\",up:\"up\"}});var S0e=G(($4t,v0e)=>{\"use strict\";var B0e=Ie(\"readline\"),Lit=w0e(),Mit=/^(?:\\x1b)([a-zA-Z0-9])$/,Uit=/^(?:\\x1b+)(O|N|\\[|\\[\\[)(?:(\\d+)(?:;(\\d+))?([~^$])|(?:1;)?(\\d+)?([a-zA-Z]))/,_it={OP:\"f1\",OQ:\"f2\",OR:\"f3\",OS:\"f4\",\"[11~\":\"f1\",\"[12~\":\"f2\",\"[13~\":\"f3\",\"[14~\":\"f4\",\"[[A\":\"f1\",\"[[B\":\"f2\",\"[[C\":\"f3\",\"[[D\":\"f4\",\"[[E\":\"f5\",\"[15~\":\"f5\",\"[17~\":\"f6\",\"[18~\":\"f7\",\"[19~\":\"f8\",\"[20~\":\"f9\",\"[21~\":\"f10\",\"[23~\":\"f11\",\"[24~\":\"f12\",\"[A\":\"up\",\"[B\":\"down\",\"[C\":\"right\",\"[D\":\"left\",\"[E\":\"clear\",\"[F\":\"end\",\"[H\":\"home\",OA:\"up\",OB:\"down\",OC:\"right\",OD:\"left\",OE:\"clear\",OF:\"end\",OH:\"home\",\"[1~\":\"home\",\"[2~\":\"insert\",\"[3~\":\"delete\",\"[4~\":\"end\",\"[5~\":\"pageup\",\"[6~\":\"pagedown\",\"[[5~\":\"pageup\",\"[[6~\":\"pagedown\",\"[7~\":\"home\",\"[8~\":\"end\",\"[a\":\"up\",\"[b\":\"down\",\"[c\":\"right\",\"[d\":\"left\",\"[e\":\"clear\",\"[2$\":\"insert\",\"[3$\":\"delete\",\"[5$\":\"pageup\",\"[6$\":\"pagedown\",\"[7$\":\"home\",\"[8$\":\"end\",Oa:\"up\",Ob:\"down\",Oc:\"right\",Od:\"left\",Oe:\"clear\",\"[2^\":\"insert\",\"[3^\":\"delete\",\"[5^\":\"pageup\",\"[6^\":\"pagedown\",\"[7^\":\"home\",\"[8^\":\"end\",\"[Z\":\"tab\"};function Hit(e){return[\"[a\",\"[b\",\"[c\",\"[d\",\"[e\",\"[2$\",\"[3$\",\"[5$\",\"[6$\",\"[7$\",\"[8$\",\"[Z\"].includes(e)}function jit(e){return[\"Oa\",\"Ob\",\"Oc\",\"Od\",\"Oe\",\"[2^\",\"[3^\",\"[5^\",\"[6^\",\"[7^\",\"[8^\"].includes(e)}var TT=(e=\"\",t={})=>{let r,s={name:t.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:e,raw:e,...t};if(Buffer.isBuffer(e)?e[0]>127&&e[1]===void 0?(e[0]-=128,e=\"\\x1B\"+String(e)):e=String(e):e!==void 0&&typeof e!=\"string\"?e=String(e):e||(e=s.sequence||\"\"),s.sequence=s.sequence||e||s.name,e===\"\\r\")s.raw=void 0,s.name=\"return\";else if(e===`\n`)s.name=\"enter\";else if(e===\"\t\")s.name=\"tab\";else if(e===\"\\b\"||e===\"\\x7F\"||e===\"\\x1B\\x7F\"||e===\"\\x1B\\b\")s.name=\"backspace\",s.meta=e.charAt(0)===\"\\x1B\";else if(e===\"\\x1B\"||e===\"\\x1B\\x1B\")s.name=\"escape\",s.meta=e.length===2;else if(e===\" \"||e===\"\\x1B \")s.name=\"space\",s.meta=e.length===2;else if(e<=\"\u001a\")s.name=String.fromCharCode(e.charCodeAt(0)+97-1),s.ctrl=!0;else if(e.length===1&&e>=\"0\"&&e<=\"9\")s.name=\"number\";else if(e.length===1&&e>=\"a\"&&e<=\"z\")s.name=e;else if(e.length===1&&e>=\"A\"&&e<=\"Z\")s.name=e.toLowerCase(),s.shift=!0;else if(r=Mit.exec(e))s.meta=!0,s.shift=/^[A-Z]$/.test(r[1]);else if(r=Uit.exec(e)){let a=[...e];a[0]===\"\\x1B\"&&a[1]===\"\\x1B\"&&(s.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(\"\"),c=(r[3]||r[5]||1)-1;s.ctrl=!!(c&4),s.meta=!!(c&10),s.shift=!!(c&1),s.code=n,s.name=_it[n],s.shift=Hit(n)||s.shift,s.ctrl=jit(n)||s.ctrl}return s};TT.listen=(e={},t)=>{let{stdin:r}=e;if(!r||r!==process.stdin&&!r.isTTY)throw new Error(\"Invalid stream passed\");let s=B0e.createInterface({terminal:!0,input:r});B0e.emitKeypressEvents(r,s);let a=(f,p)=>t(f,TT(f,p),s),n=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on(\"keypress\",a),s.resume(),()=>{r.isTTY&&r.setRawMode(n),r.removeListener(\"keypress\",a),s.pause(),s.close()}};TT.action=(e,t,r)=>{let s={...Lit,...r};return t.ctrl?(t.action=s.ctrl[t.name],t):t.option&&s.option?(t.action=s.option[t.name],t):t.shift?(t.action=s.shift[t.name],t):(t.action=s.keys[t.name],t)};v0e.exports=TT});var b0e=G((e3t,D0e)=>{\"use strict\";D0e.exports=e=>{e.timers=e.timers||{};let t=e.options.timers;if(t)for(let r of Object.keys(t)){let s=t[r];typeof s==\"number\"&&(s={interval:s}),Git(e,r,s)}};function Git(e,t,r={}){let s=e.timers[t]={name:t,start:Date.now(),ms:0,tick:0},a=r.interval||120;s.frames=r.frames||[],s.loading=!0;let n=setInterval(()=>{s.ms=Date.now()-s.start,s.tick++,e.render()},a);return s.stop=()=>{s.loading=!1,clearInterval(n)},Reflect.defineProperty(s,\"interval\",{value:n}),e.once(\"close\",()=>s.stop()),s.stop}});var x0e=G((t3t,P0e)=>{\"use strict\";var{define:qit,width:Wit}=ra(),EG=class{constructor(t){let r=t.options;qit(this,\"_prompt\",t),this.type=t.type,this.name=t.name,this.message=\"\",this.header=\"\",this.footer=\"\",this.error=\"\",this.hint=\"\",this.input=\"\",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt=\"\",this.buffer=\"\",this.width=Wit(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=t.symbols,this.styles=t.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let t={...this};return t.status=this.status,t.buffer=Buffer.from(t.buffer),delete t.clone,t}set color(t){this._color=t}get color(){let t=this.prompt.styles;if(this.cancelled)return t.cancelled;if(this.submitted)return t.submitted;let r=this._color||t[this.status];return typeof r==\"function\"?r:t.pending}set loading(t){this._loading=t}get loading(){return typeof this._loading==\"boolean\"?this._loading:this.loadingChoices?\"choices\":!1}get status(){return this.cancelled?\"cancelled\":this.submitted?\"submitted\":\"pending\"}};P0e.exports=EG});var Q0e=G((r3t,k0e)=>{\"use strict\";var IG=ra(),Io=zu(),CG={default:Io.noop,noop:Io.noop,set inverse(e){this._inverse=e},get inverse(){return this._inverse||IG.inverse(this.primary)},set complement(e){this._complement=e},get complement(){return this._complement||IG.complement(this.primary)},primary:Io.cyan,success:Io.green,danger:Io.magenta,strong:Io.bold,warning:Io.yellow,muted:Io.dim,disabled:Io.gray,dark:Io.dim.gray,underline:Io.underline,set info(e){this._info=e},get info(){return this._info||this.primary},set em(e){this._em=e},get em(){return this._em||this.primary.underline},set heading(e){this._heading=e},get heading(){return this._heading||this.muted.underline},set pending(e){this._pending=e},get pending(){return this._pending||this.primary},set submitted(e){this._submitted=e},get submitted(){return this._submitted||this.success},set cancelled(e){this._cancelled=e},get cancelled(){return this._cancelled||this.danger},set typing(e){this._typing=e},get typing(){return this._typing||this.dim},set placeholder(e){this._placeholder=e},get placeholder(){return this._placeholder||this.primary.dim},set highlight(e){this._highlight=e},get highlight(){return this._highlight||this.inverse}};CG.merge=(e={})=>{e.styles&&typeof e.styles.enabled==\"boolean\"&&(Io.enabled=e.styles.enabled),e.styles&&typeof e.styles.visible==\"boolean\"&&(Io.visible=e.styles.visible);let t=IG.merge({},CG,e.styles);delete t.merge;for(let r of Object.keys(Io))t.hasOwnProperty(r)||Reflect.defineProperty(t,r,{get:()=>Io[r]});for(let r of Object.keys(Io.styles))t.hasOwnProperty(r)||Reflect.defineProperty(t,r,{get:()=>Io[r]});return t};k0e.exports=CG});var T0e=G((n3t,R0e)=>{\"use strict\";var wG=process.platform===\"win32\",Kp=zu(),Vit=ra(),BG={...Kp.symbols,upDownDoubleArrow:\"\\u21D5\",upDownDoubleArrow2:\"\\u2B0D\",upDownArrow:\"\\u2195\",asterisk:\"*\",asterism:\"\\u2042\",bulletWhite:\"\\u25E6\",electricArrow:\"\\u2301\",ellipsisLarge:\"\\u22EF\",ellipsisSmall:\"\\u2026\",fullBlock:\"\\u2588\",identicalTo:\"\\u2261\",indicator:Kp.symbols.check,leftAngle:\"\\u2039\",mark:\"\\u203B\",minus:\"\\u2212\",multiplication:\"\\xD7\",obelus:\"\\xF7\",percent:\"%\",pilcrow:\"\\xB6\",pilcrow2:\"\\u2761\",pencilUpRight:\"\\u2710\",pencilDownRight:\"\\u270E\",pencilRight:\"\\u270F\",plus:\"+\",plusMinus:\"\\xB1\",pointRight:\"\\u261E\",rightAngle:\"\\u203A\",section:\"\\xA7\",hexagon:{off:\"\\u2B21\",on:\"\\u2B22\",disabled:\"\\u2B22\"},ballot:{on:\"\\u2611\",off:\"\\u2610\",disabled:\"\\u2612\"},stars:{on:\"\\u2605\",off:\"\\u2606\",disabled:\"\\u2606\"},folder:{on:\"\\u25BC\",off:\"\\u25B6\",disabled:\"\\u25B6\"},prefix:{pending:Kp.symbols.question,submitted:Kp.symbols.check,cancelled:Kp.symbols.cross},separator:{pending:Kp.symbols.pointerSmall,submitted:Kp.symbols.middot,cancelled:Kp.symbols.middot},radio:{off:wG?\"( )\":\"\\u25EF\",on:wG?\"(*)\":\"\\u25C9\",disabled:wG?\"(|)\":\"\\u24BE\"},numbers:[\"\\u24EA\",\"\\u2460\",\"\\u2461\",\"\\u2462\",\"\\u2463\",\"\\u2464\",\"\\u2465\",\"\\u2466\",\"\\u2467\",\"\\u2468\",\"\\u2469\",\"\\u246A\",\"\\u246B\",\"\\u246C\",\"\\u246D\",\"\\u246E\",\"\\u246F\",\"\\u2470\",\"\\u2471\",\"\\u2472\",\"\\u2473\",\"\\u3251\",\"\\u3252\",\"\\u3253\",\"\\u3254\",\"\\u3255\",\"\\u3256\",\"\\u3257\",\"\\u3258\",\"\\u3259\",\"\\u325A\",\"\\u325B\",\"\\u325C\",\"\\u325D\",\"\\u325E\",\"\\u325F\",\"\\u32B1\",\"\\u32B2\",\"\\u32B3\",\"\\u32B4\",\"\\u32B5\",\"\\u32B6\",\"\\u32B7\",\"\\u32B8\",\"\\u32B9\",\"\\u32BA\",\"\\u32BB\",\"\\u32BC\",\"\\u32BD\",\"\\u32BE\",\"\\u32BF\"]};BG.merge=e=>{let t=Vit.merge({},Kp.symbols,BG,e.symbols);return delete t.merge,t};R0e.exports=BG});var N0e=G((i3t,F0e)=>{\"use strict\";var Yit=Q0e(),Kit=T0e(),Jit=ra();F0e.exports=e=>{e.options=Jit.merge({},e.options.theme,e.options),e.symbols=Kit.merge(e.options),e.styles=Yit.merge(e.options)}});var _0e=G((M0e,U0e)=>{\"use strict\";var O0e=process.env.TERM_PROGRAM===\"Apple_Terminal\",zit=zu(),vG=ra(),Zu=U0e.exports=M0e,_i=\"\\x1B[\",L0e=\"\\x07\",SG=!1,_0=Zu.code={bell:L0e,beep:L0e,beginning:`${_i}G`,down:`${_i}J`,esc:_i,getPosition:`${_i}6n`,hide:`${_i}?25l`,line:`${_i}2K`,lineEnd:`${_i}K`,lineStart:`${_i}1K`,restorePosition:_i+(O0e?\"8\":\"u\"),savePosition:_i+(O0e?\"7\":\"s\"),screen:`${_i}2J`,show:`${_i}?25h`,up:`${_i}1J`},Sm=Zu.cursor={get hidden(){return SG},hide(){return SG=!0,_0.hide},show(){return SG=!1,_0.show},forward:(e=1)=>`${_i}${e}C`,backward:(e=1)=>`${_i}${e}D`,nextLine:(e=1)=>`${_i}E`.repeat(e),prevLine:(e=1)=>`${_i}F`.repeat(e),up:(e=1)=>e?`${_i}${e}A`:\"\",down:(e=1)=>e?`${_i}${e}B`:\"\",right:(e=1)=>e?`${_i}${e}C`:\"\",left:(e=1)=>e?`${_i}${e}D`:\"\",to(e,t){return t?`${_i}${t+1};${e+1}H`:`${_i}${e+1}G`},move(e=0,t=0){let r=\"\";return r+=e<0?Sm.left(-e):e>0?Sm.right(e):\"\",r+=t<0?Sm.up(-t):t>0?Sm.down(t):\"\",r},restore(e={}){let{after:t,cursor:r,initial:s,input:a,prompt:n,size:c,value:f}=e;if(s=vG.isPrimitive(s)?String(s):\"\",a=vG.isPrimitive(a)?String(a):\"\",f=vG.isPrimitive(f)?String(f):\"\",c){let p=Zu.cursor.up(c)+Zu.cursor.to(n.length),h=a.length-r;return h>0&&(p+=Zu.cursor.left(h)),p}if(f||t){let p=!a&&s?-s.length:-a.length+r;return t&&(p-=t.length),a===\"\"&&s&&!n.includes(s)&&(p+=s.length),Zu.cursor.move(p)}}},DG=Zu.erase={screen:_0.screen,up:_0.up,down:_0.down,line:_0.line,lineEnd:_0.lineEnd,lineStart:_0.lineStart,lines(e){let t=\"\";for(let r=0;r<e;r++)t+=Zu.erase.line+(r<e-1?Zu.cursor.up(1):\"\");return e&&(t+=Zu.code.beginning),t}};Zu.clear=(e=\"\",t=process.stdout.columns)=>{if(!t)return DG.line+Sm.to(0);let r=n=>[...zit.unstyle(n)].length,s=e.split(/\\r?\\n/),a=0;for(let n of s)a+=1+Math.floor(Math.max(r(n)-1,0)/t);return(DG.line+Sm.prevLine()).repeat(a-1)+DG.line+Sm.to(0)}});var KI=G((s3t,j0e)=>{\"use strict\";var Zit=Ie(\"events\"),H0e=zu(),bG=S0e(),Xit=b0e(),$it=x0e(),est=N0e(),El=ra(),Dm=_0e(),PG=class e extends Zit{constructor(t={}){super(),this.name=t.name,this.type=t.type,this.options=t,est(this),Xit(this),this.state=new $it(this),this.initial=[t.initial,t.default].find(r=>r!=null),this.stdout=t.stdout||process.stdout,this.stdin=t.stdin||process.stdin,this.scale=t.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=rst(this.options.margin),this.setMaxListeners(0),tst(this)}async keypress(t,r={}){this.keypressed=!0;let s=bG.action(t,bG(t,r),this.options.actions);this.state.keypress=s,this.emit(\"keypress\",t,s),this.emit(\"state\",this.state.clone());let a=this.options[s.action]||this[s.action]||this.dispatch;if(typeof a==\"function\")return await a.call(this,t,s);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit(\"alert\"):this.stdout.write(Dm.code.beep)}cursorHide(){this.stdout.write(Dm.cursor.hide()),El.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Dm.cursor.show())}write(t){t&&(this.stdout&&this.state.show!==!1&&this.stdout.write(t),this.state.buffer+=t)}clear(t=0){let r=this.state.buffer;this.state.buffer=\"\",!(!r&&!t||this.options.show===!1)&&this.stdout.write(Dm.cursor.down(t)+Dm.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:t,after:r,rest:s}=this.sections(),{cursor:a,initial:n=\"\",input:c=\"\",value:f=\"\"}=this,p=this.state.size=s.length,h={after:r,cursor:a,initial:n,input:c,prompt:t,size:p,value:f},E=Dm.cursor.restore(h);E&&this.stdout.write(E)}sections(){let{buffer:t,input:r,prompt:s}=this.state;s=H0e.unstyle(s);let a=H0e.unstyle(t),n=a.indexOf(s),c=a.slice(0,n),p=a.slice(n).split(`\n`),h=p[0],E=p[p.length-1],S=(s+(r?\" \"+r:\"\")).length,x=S<h.length?h.slice(S+1):\"\";return{header:c,prompt:h,after:x,rest:p.slice(1),last:E}}async submit(){this.state.submitted=!0,this.state.validating=!0,this.options.onSubmit&&await this.options.onSubmit.call(this,this.name,this.value,this);let t=this.state.error||await this.validate(this.value,this.state);if(t!==!0){let r=`\n`+this.symbols.pointer+\" \";typeof t==\"string\"?r+=t.trim():r+=\"Invalid input\",this.state.error=`\n`+this.styles.danger(r),this.state.submitted=!1,await this.render(),await this.alert(),this.state.validating=!1,this.state.error=void 0;return}this.state.validating=!1,await this.render(),await this.close(),this.value=await this.result(this.value),this.emit(\"submit\",this.value)}async cancel(t){this.state.cancelled=this.state.submitted=!0,await this.render(),await this.close(),typeof this.options.onCancel==\"function\"&&await this.options.onCancel.call(this,this.name,this.value,this),this.emit(\"cancel\",await this.error(t))}async close(){this.state.closed=!0;try{let t=this.sections(),r=Math.ceil(t.prompt.length/this.width);t.rest&&this.write(Dm.cursor.down(t.rest.length)),this.write(`\n`.repeat(r))}catch{}this.emit(\"close\")}start(){!this.stop&&this.options.show!==!1&&(this.stop=bG.listen(this,this.keypress.bind(this)),this.once(\"close\",this.stop))}async skip(){return this.skipped=this.options.skip===!0,typeof this.options.skip==\"function\"&&(this.skipped=await this.options.skip.call(this,this.name,this.value)),this.skipped}async initialize(){let{format:t,options:r,result:s}=this;if(this.format=()=>t.call(this,this.value),this.result=()=>s.call(this,this.value),typeof r.initial==\"function\"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun==\"function\"&&await r.onRun.call(this,this),typeof r.onSubmit==\"function\"){let a=r.onSubmit.bind(this),n=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await a(this.name,this.value,this),n())}await this.start(),await this.render()}render(){throw new Error(\"expected prompt to have a custom render method\")}run(){return new Promise(async(t,r)=>{if(this.once(\"submit\",t),this.once(\"cancel\",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit(\"run\")})}async element(t,r,s){let{options:a,state:n,symbols:c,timers:f}=this,p=f&&f[t];n.timer=p;let h=a[t]||n[t]||c[t],E=r&&r[t]!=null?r[t]:await h;if(E===\"\")return E;let C=await this.resolve(E,n,r,s);return!C&&r&&r[t]?this.resolve(h,n,r,s):C}async prefix(){let t=await this.element(\"prefix\")||this.symbols,r=this.timers&&this.timers.prefix,s=this.state;return s.timer=r,El.isObject(t)&&(t=t[s.status]||t.pending),El.hasColor(t)?t:(this.styles[s.status]||this.styles.pending)(t)}async message(){let t=await this.element(\"message\");return El.hasColor(t)?t:this.styles.strong(t)}async separator(){let t=await this.element(\"separator\")||this.symbols,r=this.timers&&this.timers.separator,s=this.state;s.timer=r;let a=t[s.status]||t.pending||s.separator,n=await this.resolve(a,s);return El.isObject(n)&&(n=n[s.status]||n.pending),El.hasColor(n)?n:this.styles.muted(n)}async pointer(t,r){let s=await this.element(\"pointer\",t,r);if(typeof s==\"string\"&&El.hasColor(s))return s;if(s){let a=this.styles,n=this.index===r,c=n?a.primary:h=>h,f=await this.resolve(s[n?\"on\":\"off\"]||s,this.state),p=El.hasColor(f)?f:c(f);return n?p:\" \".repeat(f.length)}}async indicator(t,r){let s=await this.element(\"indicator\",t,r);if(typeof s==\"string\"&&El.hasColor(s))return s;if(s){let a=this.styles,n=t.enabled===!0,c=n?a.success:a.dark,f=s[n?\"on\":\"off\"]||s;return El.hasColor(f)?f:c(f)}return\"\"}body(){return null}footer(){if(this.state.status===\"pending\")return this.element(\"footer\")}header(){if(this.state.status===\"pending\")return this.element(\"header\")}async hint(){if(this.state.status===\"pending\"&&!this.isValue(this.state.input)){let t=await this.element(\"hint\");return El.hasColor(t)?t:this.styles.muted(t)}}error(t){return this.state.submitted?\"\":t||this.state.error}format(t){return t}result(t){return t}validate(t){return this.options.required===!0?this.isValue(t):!0}isValue(t){return t!=null&&t!==\"\"}resolve(t,...r){return El.resolve(this,t,...r)}get base(){return e.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||El.height(this.stdout,25)}get width(){return this.options.columns||El.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(t){this.state.cursor=t}get cursor(){return this.state.cursor}set input(t){this.state.input=t}get input(){return this.state.input}set value(t){this.state.value=t}get value(){let{input:t,value:r}=this.state,s=[r,t].find(this.isValue.bind(this));return this.isValue(s)?s:this.initial}static get prompt(){return t=>new this(t).run()}};function tst(e){let t=a=>e[a]===void 0||typeof e[a]==\"function\",r=[\"actions\",\"choices\",\"initial\",\"margin\",\"roles\",\"styles\",\"symbols\",\"theme\",\"timers\",\"value\"],s=[\"body\",\"footer\",\"error\",\"header\",\"hint\",\"indicator\",\"message\",\"prefix\",\"separator\",\"skip\"];for(let a of Object.keys(e.options)){if(r.includes(a)||/^on[A-Z]/.test(a))continue;let n=e.options[a];typeof n==\"function\"&&t(a)?s.includes(a)||(e[a]=n.bind(e)):typeof e[a]!=\"function\"&&(e[a]=n)}}function rst(e){typeof e==\"number\"&&(e=[e,e,e,e]);let t=[].concat(e||[]),r=a=>a%2===0?`\n`:\" \",s=[];for(let a=0;a<4;a++){let n=r(a);t[a]?s.push(n.repeat(t[a])):s.push(\"\")}return s}j0e.exports=PG});var W0e=G((o3t,q0e)=>{\"use strict\";var nst=ra(),G0e={default(e,t){return t},checkbox(e,t){throw new Error(\"checkbox role is not implemented yet\")},editable(e,t){throw new Error(\"editable role is not implemented yet\")},expandable(e,t){throw new Error(\"expandable role is not implemented yet\")},heading(e,t){return t.disabled=\"\",t.indicator=[t.indicator,\" \"].find(r=>r!=null),t.message=t.message||\"\",t},input(e,t){throw new Error(\"input role is not implemented yet\")},option(e,t){return G0e.default(e,t)},radio(e,t){throw new Error(\"radio role is not implemented yet\")},separator(e,t){return t.disabled=\"\",t.indicator=[t.indicator,\" \"].find(r=>r!=null),t.message=t.message||e.symbols.line.repeat(5),t},spacer(e,t){return t}};q0e.exports=(e,t={})=>{let r=nst.merge({},G0e,t.roles);return r[e]||r.default}});var Wv=G((a3t,K0e)=>{\"use strict\";var ist=zu(),sst=KI(),ost=W0e(),FT=ra(),{reorder:xG,scrollUp:ast,scrollDown:lst,isObject:V0e,swap:cst}=FT,kG=class extends sst{constructor(t){super(t),this.cursorHide(),this.maxSelected=t.maxSelected||1/0,this.multiple=t.multiple||!1,this.initial=t.initial||0,this.delay=t.delay||0,this.longest=0,this.num=\"\"}async initialize(){typeof this.options.initial==\"function\"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:t,initial:r,autofocus:s,suggest:a}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(t)),this.choices.forEach(n=>n.enabled=!1),typeof a!=\"function\"&&this.selectable.length===0)throw new Error(\"At least one choice must be selectable\");V0e(r)&&(r=Object.keys(r)),Array.isArray(r)?(s!=null&&(this.index=this.findIndex(s)),r.forEach(n=>this.enable(this.find(n))),await this.render()):(s!=null&&(r=s),typeof r==\"string\"&&(r=this.findIndex(r)),typeof r==\"number\"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(t,r){this.state.loadingChoices=!0;let s=[],a=0,n=async(c,f)=>{typeof c==\"function\"&&(c=await c.call(this)),c instanceof Promise&&(c=await c);for(let p=0;p<c.length;p++){let h=c[p]=await this.toChoice(c[p],a++,f);s.push(h),h.choices&&await n(h.choices,h)}return s};return n(t,r).then(c=>(this.state.loadingChoices=!1,c))}async toChoice(t,r,s){if(typeof t==\"function\"&&(t=await t.call(this,this)),t instanceof Promise&&(t=await t),typeof t==\"string\"&&(t={name:t}),t.normalized)return t;t.normalized=!0;let a=t.value;if(t=ost(t.role,this.options)(this,t),typeof t.disabled==\"string\"&&!t.hint&&(t.hint=t.disabled,t.disabled=!0),t.disabled===!0&&t.hint==null&&(t.hint=\"(disabled)\"),t.index!=null)return t;t.name=t.name||t.key||t.title||t.value||t.message,t.message=t.message||t.name||\"\",t.value=[t.value,t.name].find(this.isValue.bind(this)),t.input=\"\",t.index=r,t.cursor=0,FT.define(t,\"parent\",s),t.level=s?s.level+1:1,t.indent==null&&(t.indent=s?s.indent+\"  \":t.indent||\"\"),t.path=s?s.path+\".\"+t.name:t.name,t.enabled=!!(this.multiple&&!this.isDisabled(t)&&(t.enabled||this.isSelected(t))),this.isDisabled(t)||(this.longest=Math.max(this.longest,ist.unstyle(t.message).length));let c={...t};return t.reset=(f=c.input,p=c.value)=>{for(let h of Object.keys(c))t[h]=c[h];t.input=f,t.value=p},a==null&&typeof t.initial==\"function\"&&(t.input=await t.initial.call(this,this.state,t,r)),t}async onChoice(t,r){this.emit(\"choice\",t,r,this),typeof t.onChoice==\"function\"&&await t.onChoice.call(this,this.state,t,r)}async addChoice(t,r,s){let a=await this.toChoice(t,r,s);return this.choices.push(a),this.index=this.choices.length-1,this.limit=this.choices.length,a}async newItem(t,r,s){let a={name:\"New choice name?\",editable:!0,newChoice:!0,...t},n=await this.addChoice(a,r,s);return n.updateChoice=()=>{delete n.newChoice,n.name=n.message=n.input,n.input=\"\",n.cursor=0},this.render()}indent(t){return t.indent==null?t.level>1?\"  \".repeat(t.level-1):\"\":t.indent}dispatch(t,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(t,r){return typeof r!=\"boolean\"&&(r=t.enabled),r&&!t.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=t.index,t.enabled=r&&!this.isDisabled(t),t)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelected<this.choices.length)return this.alert();let t=this.selectable.every(r=>r.enabled);return this.choices.forEach(r=>r.enabled=!t),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(t=>t.enabled=!t.enabled),this.render())}g(t=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(t.parent&&!t.choices?t.parent:t),this.render()):this.a()}toggle(t,r){if(!t.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!=\"boolean\"&&(r=!t.enabled),t.enabled=r,t.choices&&t.choices.forEach(a=>this.toggle(a,r));let s=t.parent;for(;s;){let a=s.choices.filter(n=>this.isDisabled(n));s.enabled=a.every(n=>n.enabled===!0),s=s.parent}return Y0e(this,this.choices),this.emit(\"toggle\",t,this),t}enable(t){return this.selected.length>=this.maxSelected?this.alert():(t.enabled=!this.isDisabled(t),t.choices&&t.choices.forEach(this.enable.bind(this)),t)}disable(t){return t.enabled=!1,t.choices&&t.choices.forEach(this.disable.bind(this)),t}number(t){this.num+=t;let r=s=>{let a=Number(s);if(a>this.choices.length-1)return this.alert();let n=this.focused,c=this.choices.find(f=>a===f.index);if(!c.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(c)===-1){let f=xG(this.choices),p=f.indexOf(c);if(n.index>p){let h=f.slice(p,p+this.limit),E=f.filter(C=>!h.includes(C));this.choices=h.concat(E)}else{let h=p-this.limit+1;this.choices=f.slice(h).concat(f.slice(0,h))}}return this.index=this.choices.indexOf(c),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(s=>{let a=this.choices.length,n=this.num,c=(f=!1,p)=>{clearTimeout(this.numberTimeout),f&&(p=r(n)),this.num=\"\",s(p)};if(n===\"0\"||n.length===1&&+(n+\"0\")>a)return c(!0);if(Number(n)>a)return c(!1,this.alert());this.numberTimeout=setTimeout(()=>c(!0),this.delay)})}home(){return this.choices=xG(this.choices),this.index=0,this.render()}end(){let t=this.choices.length-this.limit,r=xG(this.choices);return this.choices=r.slice(t).concat(r.slice(0,t)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let t=this.choices.length,r=this.visible.length,s=this.index;return this.options.scroll===!1&&s===0?this.alert():t>r&&s===0?this.scrollUp():(this.index=(s-1%t+t)%t,this.isDisabled()?this.up():this.render())}down(){let t=this.choices.length,r=this.visible.length,s=this.index;return this.options.scroll===!1&&s===r-1?this.alert():t>r&&s===r-1?this.scrollDown():(this.index=(s+1)%t,this.isDisabled()?this.down():this.render())}scrollUp(t=0){return this.choices=ast(this.choices),this.index=t,this.isDisabled()?this.up():this.render()}scrollDown(t=this.visible.length-1){return this.choices=lst(this.choices),this.index=t,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(t){cst(this.choices,this.index,t)}isDisabled(t=this.focused){return t&&[\"disabled\",\"collapsed\",\"hidden\",\"completing\",\"readonly\"].some(s=>t[s]===!0)?!0:t&&t.role===\"heading\"}isEnabled(t=this.focused){if(Array.isArray(t))return t.every(r=>this.isEnabled(r));if(t.choices){let r=t.choices.filter(s=>!this.isDisabled(s));return t.enabled&&r.every(s=>this.isEnabled(s))}return t.enabled&&!this.isDisabled(t)}isChoice(t,r){return t.name===r||t.index===Number(r)}isSelected(t){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(t,r)):this.isChoice(t,this.initial)}map(t=[],r=\"value\"){return[].concat(t||[]).reduce((s,a)=>(s[a]=this.find(a,r),s),{})}filter(t,r){let a=typeof t==\"function\"?t:(f,p)=>[f.name,p].includes(t),c=(this.options.multiple?this.state._choices:this.choices).filter(a);return r?c.map(f=>f[r]):c}find(t,r){if(V0e(t))return r?t[r]:t;let a=typeof t==\"function\"?t:(c,f)=>[c.name,f].includes(t),n=this.choices.find(a);if(n)return r?n[r]:n}findIndex(t){return this.choices.indexOf(this.find(t))}async submit(){let t=this.focused;if(!t)return this.alert();if(t.newChoice)return t.input?(t.updateChoice(),this.render()):this.alert();if(this.choices.some(c=>c.newChoice))return this.alert();let{reorder:r,sort:s}=this.options,a=this.multiple===!0,n=this.selected;return n===void 0?this.alert():(Array.isArray(n)&&r!==!1&&s!==!0&&(n=FT.reorder(n)),this.value=a?n.map(c=>c.name):n.name,super.submit())}set choices(t=[]){this.state._choices=this.state._choices||[],this.state.choices=t;for(let r of t)this.state._choices.some(s=>s.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r==\"string\"||typeof r==\"number\"){let s=this.find(r);s&&(this.initial=s.index,this.focus(s,!0))}}}get choices(){return Y0e(this,this.state.choices||[])}set visible(t){this.state.visible=t}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(t){this.state.limit=t}get limit(){let{state:t,options:r,choices:s}=this,a=t.limit||this._limit||r.limit||s.length;return Math.min(a,this.height)}set value(t){super.value=t}get value(){return typeof super.value!=\"string\"&&super.value===this.initial?this.input:super.value}set index(t){this.state.index=t}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let t=this.choices[this.index];return t&&this.state.submitted&&this.multiple!==!0&&(t.enabled=!0),t}get selectable(){return this.choices.filter(t=>!this.isDisabled(t))}get selected(){return this.multiple?this.enabled:this.focused}};function Y0e(e,t){if(t instanceof Promise)return t;if(typeof t==\"function\"){if(FT.isAsyncFn(t))return t;t=t.call(e,e)}for(let r of t){if(Array.isArray(r.choices)){let s=r.choices.filter(a=>!e.isDisabled(a));r.enabled=s.every(a=>a.enabled===!0)}e.isDisabled(r)===!0&&delete r.enabled}return t}K0e.exports=kG});var H0=G((l3t,J0e)=>{\"use strict\";var ust=Wv(),QG=ra(),RG=class extends ust{constructor(t){super(t),this.emptyError=this.options.emptyError||\"No items were selected\"}async dispatch(t,r){if(this.multiple)return this[r.name]?await this[r.name](t,r):await super.dispatch(t,r);this.alert()}separator(){if(this.options.separator)return super.separator();let t=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():t}pointer(t,r){return!this.multiple||this.options.pointer?super.pointer(t,r):\"\"}indicator(t,r){return this.multiple?super.indicator(t,r):\"\"}choiceMessage(t,r){let s=this.resolve(t.message,this.state,t,r);return t.role===\"heading\"&&!QG.hasColor(s)&&(s=this.styles.strong(s)),this.resolve(s,this.state,t,r)}choiceSeparator(){return\":\"}async renderChoice(t,r){await this.onChoice(t,r);let s=this.index===r,a=await this.pointer(t,r),n=await this.indicator(t,r)+(t.pad||\"\"),c=await this.resolve(t.hint,this.state,t,r);c&&!QG.hasColor(c)&&(c=this.styles.muted(c));let f=this.indent(t),p=await this.choiceMessage(t,r),h=()=>[this.margin[3],f+a+n,p,this.margin[1],c].filter(Boolean).join(\" \");return t.role===\"heading\"?h():t.disabled?(QG.hasColor(p)||(p=this.styles.disabled(p)),h()):(s&&(p=this.styles.em(p)),h())}async renderChoices(){if(this.state.loading===\"choices\")return this.styles.warning(\"Loading choices\");if(this.state.submitted)return\"\";let t=this.visible.map(async(n,c)=>await this.renderChoice(n,c)),r=await Promise.all(t);r.length||r.push(this.styles.danger(\"No matching choices\"));let s=this.margin[0]+r.join(`\n`),a;return this.options.choicesHeader&&(a=await this.resolve(this.options.choicesHeader,this.state)),[a,s].filter(Boolean).join(`\n`)}format(){return!this.state.submitted||this.state.cancelled?\"\":Array.isArray(this.selected)?this.selected.map(t=>this.styles.primary(t.name)).join(\", \"):this.styles.primary(this.selected.name)}async render(){let{submitted:t,size:r}=this.state,s=\"\",a=await this.header(),n=await this.prefix(),c=await this.separator(),f=await this.message();this.options.promptLine!==!1&&(s=[n,f,c,\"\"].join(\" \"),this.state.prompt=s);let p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),C=await this.footer();p&&(s+=p),h&&!s.includes(h)&&(s+=\" \"+h),t&&!p&&!E.trim()&&this.multiple&&this.emptyError!=null&&(s+=this.styles.danger(this.emptyError)),this.clear(r),this.write([a,s,E,C].filter(Boolean).join(`\n`)),this.write(this.margin[2]),this.restore()}};J0e.exports=RG});var Z0e=G((c3t,z0e)=>{\"use strict\";var fst=H0(),Ast=(e,t)=>{let r=e.toLowerCase();return s=>{let n=s.toLowerCase().indexOf(r),c=t(s.slice(n,n+r.length));return n>=0?s.slice(0,n)+c+s.slice(n+r.length):s}},TG=class extends fst{constructor(t){super(t),this.cursorShow()}moveCursor(t){this.state.cursor+=t}dispatch(t){return this.append(t)}space(t){return this.options.multiple?super.space(t):this.append(t)}append(t){let{cursor:r,input:s}=this.state;return this.input=s.slice(0,r)+t+s.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:t,input:r}=this.state;return r?(this.input=r.slice(0,t-1)+r.slice(t),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:t,input:r}=this.state;return r[t]===void 0?this.alert():(this.input=`${r}`.slice(0,t)+`${r}`.slice(t+1),this.complete())}number(t){return this.append(t)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(t=this.input,r=this.state._choices){if(typeof this.options.suggest==\"function\")return this.options.suggest.call(this,t,r);let s=t.toLowerCase();return r.filter(a=>a.message.toLowerCase().includes(s))}pointer(){return\"\"}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(t=>this.styles.primary(t.message)).join(\", \");if(this.state.submitted){let t=this.value=this.input=this.focused.value;return this.styles.primary(t)}return this.input}async render(){if(this.state.status!==\"pending\")return super.render();let t=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=Ast(this.input,t),s=this.choices;this.choices=s.map(a=>({...a,message:r(a.message)})),await super.render(),this.choices=s}submit(){return this.options.multiple&&(this.value=this.selected.map(t=>t.name)),super.submit()}};z0e.exports=TG});var NG=G((u3t,X0e)=>{\"use strict\";var FG=ra();X0e.exports=(e,t={})=>{e.cursorHide();let{input:r=\"\",initial:s=\"\",pos:a,showCursor:n=!0,color:c}=t,f=c||e.styles.placeholder,p=FG.inverse(e.styles.primary),h=T=>p(e.styles.black(T)),E=r,C=\" \",S=h(C);if(e.blink&&e.blink.off===!0&&(h=T=>T,S=\"\"),n&&a===0&&s===\"\"&&r===\"\")return h(C);if(n&&a===0&&(r===s||r===\"\"))return h(s[0])+f(s.slice(1));s=FG.isPrimitive(s)?`${s}`:\"\",r=FG.isPrimitive(r)?`${r}`:\"\";let x=s&&s.startsWith(r)&&s!==r,I=x?h(s[r.length]):S;if(a!==r.length&&n===!0&&(E=r.slice(0,a)+h(r[a])+r.slice(a+1),I=\"\"),n===!1&&(I=\"\"),x){let T=e.styles.unstyle(E+I);return E+I+f(s.slice(T.length))}return E+I}});var NT=G((f3t,$0e)=>{\"use strict\";var pst=zu(),hst=H0(),gst=NG(),OG=class extends hst{constructor(t){super({...t,multiple:!0}),this.type=\"form\",this.initial=this.options.initial,this.align=[this.options.align,\"right\"].find(r=>r!=null),this.emptyError=\"\",this.values={}}async reset(t){return await super.reset(),t===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(t){return!!t&&this.append(t)}append(t){let r=this.focused;if(!r)return this.alert();let{cursor:s,input:a}=r;return r.value=r.input=a.slice(0,s)+t+a.slice(s),r.cursor++,this.render()}delete(){let t=this.focused;if(!t||t.cursor<=0)return this.alert();let{cursor:r,input:s}=t;return t.value=t.input=s.slice(0,r-1)+s.slice(r),t.cursor--,this.render()}deleteForward(){let t=this.focused;if(!t)return this.alert();let{cursor:r,input:s}=t;if(s[r]===void 0)return this.alert();let a=`${s}`.slice(0,r)+`${s}`.slice(r+1);return t.value=t.input=a,this.render()}right(){let t=this.focused;return t?t.cursor>=t.input.length?this.alert():(t.cursor++,this.render()):this.alert()}left(){let t=this.focused;return t?t.cursor<=0?this.alert():(t.cursor--,this.render()):this.alert()}space(t,r){return this.dispatch(t,r)}number(t,r){return this.dispatch(t,r)}next(){let t=this.focused;if(!t)return this.alert();let{initial:r,input:s}=t;return r&&r.startsWith(s)&&s!==r?(t.value=t.input=r,t.cursor=t.value.length,this.render()):super.next()}prev(){let t=this.focused;return t?t.cursor===0?super.prev():(t.value=t.input=\"\",t.cursor=0,this.render()):this.alert()}separator(){return\"\"}format(t){return this.state.submitted?\"\":super.format(t)}pointer(){return\"\"}indicator(t){return t.input?\"\\u29BF\":\"\\u2299\"}async choiceSeparator(t,r){let s=await this.resolve(t.separator,this.state,t,r)||\":\";return s?\" \"+this.styles.disabled(s):\"\"}async renderChoice(t,r){await this.onChoice(t,r);let{state:s,styles:a}=this,{cursor:n,initial:c=\"\",name:f,hint:p,input:h=\"\"}=t,{muted:E,submitted:C,primary:S,danger:x}=a,I=p,T=this.index===r,O=t.validate||(()=>!0),U=await this.choiceSeparator(t,r),Y=t.message;this.align===\"right\"&&(Y=Y.padStart(this.longest+1,\" \")),this.align===\"left\"&&(Y=Y.padEnd(this.longest+1,\" \"));let te=this.values[f]=h||c,ie=h?\"success\":\"dark\";await O.call(t,te,this.state)!==!0&&(ie=\"danger\");let ue=a[ie],ae=ue(await this.indicator(t,r))+(t.pad||\"\"),de=this.indent(t),Ae=()=>[de,ae,Y+U,h,I].filter(Boolean).join(\" \");if(s.submitted)return Y=pst.unstyle(Y),h=C(h),I=\"\",Ae();if(t.format)h=await t.format.call(this,h,t,r);else{let Ce=this.styles.muted;h=gst(this,{input:h,initial:c,pos:n,showCursor:T,color:Ce})}return this.isValue(h)||(h=this.styles.muted(this.symbols.ellipsis)),t.result&&(this.values[f]=await t.result.call(this,te,t,r)),T&&(Y=S(Y)),t.error?h+=(h?\" \":\"\")+x(t.error.trim()):t.hint&&(h+=(h?\" \":\"\")+E(t.hint.trim())),Ae()}async submit(){return this.value=this.values,super.base.submit.call(this)}};$0e.exports=OG});var LG=G((A3t,tge)=>{\"use strict\";var dst=NT(),mst=()=>{throw new Error(\"expected prompt to have a custom authenticate method\")},ege=(e=mst)=>{class t extends dst{constructor(s){super(s)}async submit(){this.value=await e.call(this,this.values,this.state),super.base.submit.call(this)}static create(s){return ege(s)}}return t};tge.exports=ege()});var ige=G((p3t,nge)=>{\"use strict\";var yst=LG();function Est(e,t){return e.username===this.options.username&&e.password===this.options.password}var rge=(e=Est)=>{let t=[{name:\"username\",message:\"username\"},{name:\"password\",message:\"password\",format(s){return this.options.showPassword?s:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(s.length))}}];class r extends yst.create(e){constructor(a){super({...a,choices:t})}static create(a){return rge(a)}}return r};nge.exports=rge()});var OT=G((h3t,sge)=>{\"use strict\";var Ist=KI(),{isPrimitive:Cst,hasColor:wst}=ra(),MG=class extends Ist{constructor(t){super(t),this.cursorHide()}async initialize(){let t=await this.resolve(this.initial,this.state);this.input=await this.cast(t),await super.initialize()}dispatch(t){return this.isValue(t)?(this.input=t,this.submit()):this.alert()}format(t){let{styles:r,state:s}=this;return s.submitted?r.success(t):r.primary(t)}cast(t){return this.isTrue(t)}isTrue(t){return/^[ty1]/i.test(t)}isFalse(t){return/^[fn0]/i.test(t)}isValue(t){return Cst(t)&&(this.isTrue(t)||this.isFalse(t))}async hint(){if(this.state.status===\"pending\"){let t=await this.element(\"hint\");return wst(t)?t:this.styles.muted(t)}}async render(){let{input:t,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=this.styles.muted(this.default),f=[s,n,c,a].filter(Boolean).join(\" \");this.state.prompt=f;let p=await this.header(),h=this.value=this.cast(t),E=await this.format(h),C=await this.error()||await this.hint(),S=await this.footer();C&&!f.includes(C)&&(E+=\" \"+C),f+=\" \"+E,this.clear(r),this.write([p,f,S].filter(Boolean).join(`\n`)),this.restore()}set value(t){super.value=t}get value(){return this.cast(super.value)}};sge.exports=MG});var age=G((g3t,oge)=>{\"use strict\";var Bst=OT(),UG=class extends Bst{constructor(t){super(t),this.default=this.options.default||(this.initial?\"(Y/n)\":\"(y/N)\")}};oge.exports=UG});var cge=G((d3t,lge)=>{\"use strict\";var vst=H0(),Sst=NT(),JI=Sst.prototype,_G=class extends vst{constructor(t){super({...t,multiple:!0}),this.align=[this.options.align,\"left\"].find(r=>r!=null),this.emptyError=\"\",this.values={}}dispatch(t,r){let s=this.focused,a=s.parent||{};return!s.editable&&!a.editable&&(t===\"a\"||t===\"i\")?super[t]():JI.dispatch.call(this,t,r)}append(t,r){return JI.append.call(this,t,r)}delete(t,r){return JI.delete.call(this,t,r)}space(t){return this.focused.editable?this.append(t):super.space()}number(t){return this.focused.editable?this.append(t):super.number(t)}next(){return this.focused.editable?JI.next.call(this):super.next()}prev(){return this.focused.editable?JI.prev.call(this):super.prev()}async indicator(t,r){let s=t.indicator||\"\",a=t.editable?s:super.indicator(t,r);return await this.resolve(a,this.state,t,r)||\"\"}indent(t){return t.role===\"heading\"?\"\":t.editable?\" \":\"  \"}async renderChoice(t,r){return t.indent=\"\",t.editable?JI.renderChoice.call(this,t,r):super.renderChoice(t,r)}error(){return\"\"}footer(){return this.state.error}async validate(){let t=!0;for(let r of this.choices){if(typeof r.validate!=\"function\"||r.role===\"heading\")continue;let s=r.parent?this.value[r.parent.name]:this.value;if(r.editable?s=r.value===r.name?r.initial||\"\":r.value:this.isDisabled(r)||(s=r.enabled===!0),t=await r.validate(s,this.state),t!==!0)break}return t!==!0&&(this.state.error=typeof t==\"string\"?t:\"Invalid Input\"),t}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(t=>t.newChoice))return this.alert();this.value={};for(let t of this.choices){let r=t.parent?this.value[t.parent.name]:this.value;if(t.role===\"heading\"){this.value[t.name]={};continue}t.editable?r[t.name]=t.value===t.name?t.initial||\"\":t.value:this.isDisabled(t)||(r[t.name]=t.enabled===!0)}return this.base.submit.call(this)}};lge.exports=_G});var bm=G((m3t,uge)=>{\"use strict\";var Dst=KI(),bst=NG(),{isPrimitive:Pst}=ra(),HG=class extends Dst{constructor(t){super(t),this.initial=Pst(this.initial)?String(this.initial):\"\",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(t,r={}){let s=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name===\"return\"&&(!s||s.name!==\"return\")?this.append(`\n`,r):super.keypress(t,r)}moveCursor(t){this.cursor+=t}reset(){return this.input=this.value=\"\",this.cursor=0,this.render()}dispatch(t,r){if(!t||r.ctrl||r.code)return this.alert();this.append(t)}append(t){let{cursor:r,input:s}=this.state;this.input=`${s}`.slice(0,r)+t+`${s}`.slice(r),this.moveCursor(String(t).length),this.render()}insert(t){this.append(t)}delete(){let{cursor:t,input:r}=this.state;if(t<=0)return this.alert();this.input=`${r}`.slice(0,t-1)+`${r}`.slice(t),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:t,input:r}=this.state;if(r[t]===void 0)return this.alert();this.input=`${r}`.slice(0,t)+`${r}`.slice(t+1),this.render()}cutForward(){let t=this.cursor;if(this.input.length<=t)return this.alert();this.state.clipboard.push(this.input.slice(t)),this.input=this.input.slice(0,t),this.render()}cutLeft(){let t=this.cursor;if(t===0)return this.alert();let r=this.input.slice(0,t),s=this.input.slice(t),a=r.split(\" \");this.state.clipboard.push(a.pop()),this.input=a.join(\" \"),this.cursor=this.input.length,this.input+=s,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let t=this.initial!=null?String(this.initial):\"\";if(!t||!t.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(t){return!!t}async format(t=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(t||r):bst(this,{input:t,initial:r,pos:this.cursor})}async render(){let t=this.state.size,r=await this.prefix(),s=await this.separator(),a=await this.message(),n=[r,a,s].filter(Boolean).join(\" \");this.state.prompt=n;let c=await this.header(),f=await this.format(),p=await this.error()||await this.hint(),h=await this.footer();p&&!f.includes(p)&&(f+=\" \"+p),n+=\" \"+f,this.clear(t),this.write([c,n,h].filter(Boolean).join(`\n`)),this.restore()}};uge.exports=HG});var Age=G((y3t,fge)=>{\"use strict\";var xst=e=>e.filter((t,r)=>e.lastIndexOf(t)===r),LT=e=>xst(e).filter(Boolean);fge.exports=(e,t={},r=\"\")=>{let{past:s=[],present:a=\"\"}=t,n,c;switch(e){case\"prev\":case\"undo\":return n=s.slice(0,s.length-1),c=s[s.length-1]||\"\",{past:LT([r,...n]),present:c};case\"next\":case\"redo\":return n=s.slice(1),c=s[0]||\"\",{past:LT([...n,r]),present:c};case\"save\":return{past:LT([...s,r]),present:\"\"};case\"remove\":return c=LT(s.filter(f=>f!==r)),a=\"\",c.length&&(a=c.pop()),{past:c,present:a};default:throw new Error(`Invalid action: \"${e}\"`)}}});var GG=G((E3t,hge)=>{\"use strict\";var kst=bm(),pge=Age(),jG=class extends kst{constructor(t){super(t);let r=this.options.history;if(r&&r.store){let s=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get(\"values\")||{past:[],present:s},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(t){return this.store?(this.data=pge(t,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion(\"prev\")}altDown(){return this.completion(\"next\")}prev(){return this.save(),super.prev()}save(){this.store&&(this.data=pge(\"save\",this.data,this.input),this.store.set(\"values\",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};hge.exports=jG});var dge=G((I3t,gge)=>{\"use strict\";var Qst=bm(),qG=class extends Qst{format(){return\"\"}};gge.exports=qG});var yge=G((C3t,mge)=>{\"use strict\";var Rst=bm(),WG=class extends Rst{constructor(t={}){super(t),this.sep=this.options.separator||/, */,this.initial=t.initial||\"\"}split(t=this.value){return t?String(t).split(this.sep):[]}format(){let t=this.state.submitted?this.styles.primary:r=>r;return this.list.map(t).join(\", \")}async submit(t){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};mge.exports=WG});var Ige=G((w3t,Ege)=>{\"use strict\";var Tst=H0(),VG=class extends Tst{constructor(t){super({...t,multiple:!0})}};Ege.exports=VG});var KG=G((B3t,Cge)=>{\"use strict\";var Fst=bm(),YG=class extends Fst{constructor(t={}){super({style:\"number\",...t}),this.min=this.isValue(t.min)?this.toNumber(t.min):-1/0,this.max=this.isValue(t.max)?this.toNumber(t.max):1/0,this.delay=t.delay!=null?t.delay:1e3,this.float=t.float!==!1,this.round=t.round===!0||t.float===!1,this.major=t.major||10,this.minor=t.minor||1,this.initial=t.initial!=null?t.initial:\"\",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(t){return!/[-+.]/.test(t)||t===\".\"&&this.input.includes(\".\")?this.alert(\"invalid number\"):super.append(t)}number(t){return super.append(t)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(t){let r=t||this.minor,s=this.toNumber(this.input);return s>this.max+r?this.alert():(this.input=`${s+r}`,this.render())}down(t){let r=t||this.minor,s=this.toNumber(this.input);return s<this.min-r?this.alert():(this.input=`${s-r}`,this.render())}shiftDown(){return this.down(this.major)}shiftUp(){return this.up(this.major)}format(t=this.input){return typeof this.options.format==\"function\"?this.options.format.call(this,t):this.styles.info(t)}toNumber(t=\"\"){return this.float?+t:Math.round(+t)}isValue(t){return/^[-+]?[0-9]+((\\.)|(\\.[0-9]+))?$/.test(t)}submit(){let t=[this.input,this.initial].find(r=>this.isValue(r));return this.value=this.toNumber(t||0),super.submit()}};Cge.exports=YG});var Bge=G((v3t,wge)=>{wge.exports=KG()});var Sge=G((S3t,vge)=>{\"use strict\";var Nst=bm(),JG=class extends Nst{constructor(t){super(t),this.cursorShow()}format(t=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(t.length)):\"\"}};vge.exports=JG});var Pge=G((D3t,bge)=>{\"use strict\";var Ost=zu(),Lst=Wv(),Dge=ra(),zG=class extends Lst{constructor(t={}){super(t),this.widths=[].concat(t.messageWidth||50),this.align=[].concat(t.align||\"left\"),this.linebreak=t.linebreak||!1,this.edgeLength=t.edgeLength||3,this.newline=t.newline||`\n   `;let r=t.startNumber||1;typeof this.scale==\"number\"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((s,a)=>({name:a+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let t=0;for(let r of this.choices){t=Math.max(t,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let s=0;s<this.scale.length;s++)r.scale.push({index:s})}this.widths[0]=Math.min(this.widths[0],t+3)}async dispatch(t,r){if(this.multiple)return this[r.name]?await this[r.name](t,r):await super.dispatch(t,r);this.alert()}heading(t,r,s){return this.styles.strong(t)}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let t=this.focused;return t.scaleIndex>=this.scale.length-1?this.alert():(t.scaleIndex++,this.render())}left(){let t=this.focused;return t.scaleIndex<=0?this.alert():(t.scaleIndex--,this.render())}indent(){return\"\"}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(\", \"):\"\"}pointer(){return\"\"}renderScaleKey(){return this.scaleKey===!1||this.state.submitted?\"\":[\"\",...this.scale.map(s=>`   ${s.name} - ${s.message}`)].map(s=>this.styles.muted(s)).join(`\n`)}renderScaleHeading(t){let r=this.scale.map(p=>p.name);typeof this.options.renderScaleHeading==\"function\"&&(r=this.options.renderScaleHeading.call(this,t));let s=this.scaleLength-r.join(\"\").length,a=Math.round(s/(r.length-1)),c=r.map(p=>this.styles.strong(p)).join(\" \".repeat(a)),f=\" \".repeat(this.widths[0]);return this.margin[3]+f+this.margin[1]+c}scaleIndicator(t,r,s){if(typeof this.options.scaleIndicator==\"function\")return this.options.scaleIndicator.call(this,t,r,s);let a=t.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):a?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(t,r){let s=t.scale.map(n=>this.scaleIndicator(t,n,r)),a=this.term===\"Hyper\"?\"\":\" \";return s.join(a+this.symbols.line.repeat(this.edgeLength))}async renderChoice(t,r){await this.onChoice(t,r);let s=this.index===r,a=await this.pointer(t,r),n=await t.hint;n&&!Dge.hasColor(n)&&(n=this.styles.muted(n));let c=I=>this.margin[3]+I.replace(/\\s+$/,\"\").padEnd(this.widths[0],\" \"),f=this.newline,p=this.indent(t),h=await this.resolve(t.message,this.state,t,r),E=await this.renderScale(t,r),C=this.margin[1]+this.margin[3];this.scaleLength=Ost.unstyle(E).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-C.length);let x=Dge.wordWrap(h,{width:this.widths[0],newline:f}).split(`\n`).map(I=>c(I)+this.margin[1]);return s&&(E=this.styles.info(E),x=x.map(I=>this.styles.info(I))),x[0]+=E,this.linebreak&&x.push(\"\"),[p+a,x.join(`\n`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return\"\";this.tableize();let t=this.visible.map(async(a,n)=>await this.renderChoice(a,n)),r=await Promise.all(t),s=await this.renderScaleHeading();return this.margin[0]+[s,...r.map(a=>a.join(\" \"))].join(`\n`)}async render(){let{submitted:t,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=\"\";this.options.promptLine!==!1&&(c=[s,n,a,\"\"].join(\" \"),this.state.prompt=c);let f=await this.header(),p=await this.format(),h=await this.renderScaleKey(),E=await this.error()||await this.hint(),C=await this.renderChoices(),S=await this.footer(),x=this.emptyError;p&&(c+=p),E&&!c.includes(E)&&(c+=\" \"+E),t&&!p&&!C.trim()&&this.multiple&&x!=null&&(c+=this.styles.danger(x)),this.clear(r),this.write([f,c,h,C,S].filter(Boolean).join(`\n`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let t of this.choices)this.value[t.name]=t.scaleIndex;return this.base.submit.call(this)}};bge.exports=zG});var Qge=G((b3t,kge)=>{\"use strict\";var xge=zu(),Mst=(e=\"\")=>typeof e==\"string\"?e.replace(/^['\"]|['\"]$/g,\"\"):\"\",XG=class{constructor(t){this.name=t.key,this.field=t.field||{},this.value=Mst(t.initial||this.field.initial||\"\"),this.message=t.message||this.name,this.cursor=0,this.input=\"\",this.lines=[]}},Ust=async(e={},t={},r=s=>s)=>{let s=new Set,a=e.fields||[],n=e.template,c=[],f=[],p=[],h=1;typeof n==\"function\"&&(n=await n());let E=-1,C=()=>n[++E],S=()=>n[E+1],x=I=>{I.line=h,c.push(I)};for(x({type:\"bos\",value:\"\"});E<n.length-1;){let I=C();if(/^[^\\S\\n ]$/.test(I)){x({type:\"text\",value:I});continue}if(I===`\n`){x({type:\"newline\",value:I}),h++;continue}if(I===\"\\\\\"){I+=C(),x({type:\"text\",value:I});continue}if((I===\"$\"||I===\"#\"||I===\"{\")&&S()===\"{\"){let O=C();I+=O;let U={type:\"template\",open:I,inner:\"\",close:\"\",value:I},Y;for(;Y=C();){if(Y===\"}\"){S()===\"}\"&&(Y+=C()),U.value+=Y,U.close=Y;break}Y===\":\"?(U.initial=\"\",U.key=U.inner):U.initial!==void 0&&(U.initial+=Y),U.value+=Y,U.inner+=Y}U.template=U.open+(U.initial||U.inner)+U.close,U.key=U.key||U.inner,t.hasOwnProperty(U.key)&&(U.initial=t[U.key]),U=r(U),x(U),p.push(U.key),s.add(U.key);let te=f.find(ie=>ie.name===U.key);U.field=a.find(ie=>ie.name===U.key),te||(te=new XG(U),f.push(te)),te.lines.push(U.line-1);continue}let T=c[c.length-1];T.type===\"text\"&&T.line===h?T.value+=I:x({type:\"text\",value:I})}return x({type:\"eos\",value:\"\"}),{input:n,tabstops:c,unique:s,keys:p,items:f}};kge.exports=async e=>{let t=e.options,r=new Set(t.required===!0?[]:t.required||[]),s={...t.values,...t.initial},{tabstops:a,items:n,keys:c}=await Ust(t,s),f=ZG(\"result\",e,t),p=ZG(\"format\",e,t),h=ZG(\"validate\",e,t,!0),E=e.isValue.bind(e);return async(C={},S=!1)=>{let x=0;C.required=r,C.items=n,C.keys=c,C.output=\"\";let I=async(Y,te,ie,ue)=>{let ae=await h(Y,te,ie,ue);return ae===!1?\"Invalid field \"+ie.name:ae};for(let Y of a){let te=Y.value,ie=Y.key;if(Y.type!==\"template\"){te&&(C.output+=te);continue}if(Y.type===\"template\"){let ue=n.find(Ee=>Ee.name===ie);t.required===!0&&C.required.add(ue.name);let ae=[ue.input,C.values[ue.value],ue.value,te].find(E),Ae=(ue.field||{}).message||Y.inner;if(S){let Ee=await I(C.values[ie],C,ue,x);if(Ee&&typeof Ee==\"string\"||Ee===!1){C.invalid.set(ie,Ee);continue}C.invalid.delete(ie);let g=await f(C.values[ie],C,ue,x);C.output+=xge.unstyle(g);continue}ue.placeholder=!1;let Ce=te;te=await p(te,C,ue,x),ae!==te?(C.values[ie]=ae,te=e.styles.typing(ae),C.missing.delete(Ae)):(C.values[ie]=void 0,ae=`<${Ae}>`,te=e.styles.primary(ae),ue.placeholder=!0,C.required.has(ie)&&C.missing.add(Ae)),C.missing.has(Ae)&&C.validating&&(te=e.styles.warning(ae)),C.invalid.has(ie)&&C.validating&&(te=e.styles.danger(ae)),x===C.index&&(Ce!==te?te=e.styles.underline(te):te=e.styles.heading(xge.unstyle(te))),x++}te&&(C.output+=te)}let T=C.output.split(`\n`).map(Y=>\" \"+Y),O=n.length,U=0;for(let Y of n)C.invalid.has(Y.name)&&Y.lines.forEach(te=>{T[te][0]===\" \"&&(T[te]=C.styles.danger(C.symbols.bullet)+T[te].slice(1))}),e.isValue(C.values[Y.name])&&U++;return C.completed=(U/O*100).toFixed(0),C.output=T.join(`\n`),C.output}};function ZG(e,t,r,s){return(a,n,c,f)=>typeof c.field[e]==\"function\"?c.field[e].call(t,a,n,c,f):[s,a].find(p=>t.isValue(p))}});var Tge=G((P3t,Rge)=>{\"use strict\";var _st=zu(),Hst=Qge(),jst=KI(),$G=class extends jst{constructor(t){super(t),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await Hst(this),await super.initialize()}async reset(t){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},t!==!0&&(await this.initialize(),await this.render())}moveCursor(t){let r=this.getItem();this.cursor+=t,r.cursor+=t}dispatch(t,r){if(!r.code&&!r.ctrl&&t!=null&&this.getItem()){this.append(t,r);return}this.alert()}append(t,r){let s=this.getItem(),a=s.input.slice(0,this.cursor),n=s.input.slice(this.cursor);this.input=s.input=`${a}${t}${n}`,this.moveCursor(1),this.render()}delete(){let t=this.getItem();if(this.cursor<=0||!t.input)return this.alert();let r=t.input.slice(this.cursor),s=t.input.slice(0,this.cursor-1);this.input=t.input=`${s}${r}`,this.moveCursor(-1),this.render()}increment(t){return t>=this.state.keys.length-1?0:t+1}decrement(t){return t<=0?this.state.keys.length-1:t-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(t){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:t,keys:r=[],submitted:s,size:a}=this.state,n=[this.options.newline,`\n`].find(Y=>Y!=null),c=await this.prefix(),f=await this.separator(),p=await this.message(),h=[c,p,f].filter(Boolean).join(\" \");this.state.prompt=h;let E=await this.header(),C=await this.error()||\"\",S=await this.hint()||\"\",x=s?\"\":await this.interpolate(this.state),I=this.state.key=r[t]||\"\",T=await this.format(I),O=await this.footer();T&&(h+=\" \"+T),S&&!T&&this.state.completed===0&&(h+=\" \"+S),this.clear(a);let U=[E,h,x,O,C.trim()];this.write(U.filter(Boolean).join(n)),this.restore()}getItem(t){let{items:r,keys:s,index:a}=this.state,n=r.find(c=>c.name===s[a]);return n&&n.input!=null&&(this.input=n.input,this.cursor=n.cursor),n}async submit(){typeof this.interpolate!=\"function\"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:t,missing:r,output:s,values:a}=this.state;if(t.size){let f=\"\";for(let[p,h]of t)f+=`Invalid ${p}: ${h}\n`;return this.state.error=f,super.submit()}if(r.size)return this.state.error=\"Required: \"+[...r.keys()].join(\", \"),super.submit();let c=_st.unstyle(s).split(`\n`).map(f=>f.slice(1)).join(`\n`);return this.value={values:a,result:c},super.submit()}};Rge.exports=$G});var Nge=G((x3t,Fge)=>{\"use strict\";var Gst=\"(Use <shift>+<up/down> to sort)\",qst=H0(),e5=class extends qst{constructor(t){super({...t,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,Gst].find(this.isValue.bind(this))}indicator(){return\"\"}async renderChoice(t,r){let s=await super.renderChoice(t,r),a=this.symbols.identicalTo+\" \",n=this.index===r&&this.sorting?this.styles.muted(a):\"  \";return this.options.drag===!1&&(n=\"\"),this.options.numbered===!0?n+`${r+1} - `+s:n+s}get selected(){return this.choices}submit(){return this.value=this.choices.map(t=>t.value),super.submit()}};Fge.exports=e5});var Lge=G((k3t,Oge)=>{\"use strict\";var Wst=Wv(),t5=class extends Wst{constructor(t={}){if(super(t),this.emptyError=t.emptyError||\"No items were selected\",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=[\"\",\"4 - Strongly Agree\",\"3 - Agree\",\"2 - Neutral\",\"1 - Disagree\",\"0 - Strongly Disagree\",\"\"];r=r.map(s=>this.styles.muted(s)),this.state.header=r.join(`\n   `)}}async toChoices(...t){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...t);for(let s of r)s.scale=Vst(5,this.options),s.scaleIdx=2;return r}dispatch(){this.alert()}space(){let t=this.focused,r=t.scale[t.scaleIdx],s=r.selected;return t.scale.forEach(a=>a.selected=!1),r.selected=!s,this.render()}indicator(){return\"\"}pointer(){return\"\"}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let t=this.focused;return t.scaleIdx>=t.scale.length-1?this.alert():(t.scaleIdx++,this.render())}left(){let t=this.focused;return t.scaleIdx<=0?this.alert():(t.scaleIdx--,this.render())}indent(){return\"   \"}async renderChoice(t,r){await this.onChoice(t,r);let s=this.index===r,a=this.term===\"Hyper\",n=a?9:8,c=a?\"\":\" \",f=this.symbols.line.repeat(n),p=\" \".repeat(n+(a?0:1)),h=te=>(te?this.styles.success(\"\\u25C9\"):\"\\u25EF\")+c,E=r+1+\".\",C=s?this.styles.heading:this.styles.noop,S=await this.resolve(t.message,this.state,t,r),x=this.indent(t),I=x+t.scale.map((te,ie)=>h(ie===t.scaleIdx)).join(f),T=te=>te===t.scaleIdx?C(te):te,O=x+t.scale.map((te,ie)=>T(ie)).join(p),U=()=>[E,S].filter(Boolean).join(\" \"),Y=()=>[U(),I,O,\" \"].filter(Boolean).join(`\n`);return s&&(I=this.styles.cyan(I),O=this.styles.cyan(O)),Y()}async renderChoices(){if(this.state.submitted)return\"\";let t=this.visible.map(async(s,a)=>await this.renderChoice(s,a)),r=await Promise.all(t);return r.length||r.push(this.styles.danger(\"No matching choices\")),r.join(`\n`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(\", \"):\"\"}async render(){let{submitted:t,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=[s,n,a].filter(Boolean).join(\" \");this.state.prompt=c;let f=await this.header(),p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),C=await this.footer();(p||!h)&&(c+=\" \"+p),h&&!c.includes(h)&&(c+=\" \"+h),t&&!p&&!E&&this.multiple&&this.type!==\"form\"&&(c+=this.styles.danger(this.emptyError)),this.clear(r),this.write([c,f,E,C].filter(Boolean).join(`\n`)),this.restore()}submit(){this.value={};for(let t of this.choices)this.value[t.name]=t.scaleIdx;return this.base.submit.call(this)}};function Vst(e,t={}){if(Array.isArray(t.scale))return t.scale.map(s=>({...s}));let r=[];for(let s=1;s<e+1;s++)r.push({i:s,selected:!1});return r}Oge.exports=t5});var Uge=G((Q3t,Mge)=>{Mge.exports=GG()});var Hge=G((R3t,_ge)=>{\"use strict\";var Yst=OT(),r5=class extends Yst{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||\"no\",this.enabled=this.options.enabled||\"yes\",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(t=\"\",r){switch(t.toLowerCase()){case\" \":return this.toggle();case\"1\":case\"y\":case\"t\":return this.enable();case\"0\":case\"n\":case\"f\":return this.disable();default:return this.alert()}}format(){let t=s=>this.styles.primary.underline(s);return[this.value?this.disabled:t(this.disabled),this.value?t(this.enabled):this.enabled].join(this.styles.muted(\" / \"))}async render(){let{size:t}=this.state,r=await this.header(),s=await this.prefix(),a=await this.separator(),n=await this.message(),c=await this.format(),f=await this.error()||await this.hint(),p=await this.footer(),h=[s,n,a,c].join(\" \");this.state.prompt=h,f&&!h.includes(f)&&(h+=\" \"+f),this.clear(t),this.write([r,h,p].filter(Boolean).join(`\n`)),this.write(this.margin[2]),this.restore()}};_ge.exports=r5});var Gge=G((T3t,jge)=>{\"use strict\";var Kst=H0(),n5=class extends Kst{constructor(t){if(super(t),typeof this.options.correctChoice!=\"number\"||this.options.correctChoice<0)throw new Error(\"Please specify the index of the correct answer from the list of choices\")}async toChoices(t,r){let s=await super.toChoices(t,r);if(s.length<2)throw new Error(\"Please give at least two choices to the user\");if(this.options.correctChoice>s.length)throw new Error(\"Please specify the index of the correct answer from the list of choices\");return s}check(t){return t.index===this.options.correctChoice}async result(t){return{selectedAnswer:t,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};jge.exports=n5});var Wge=G(i5=>{\"use strict\";var qge=ra(),Ts=(e,t)=>{qge.defineExport(i5,e,t),qge.defineExport(i5,e.toLowerCase(),t)};Ts(\"AutoComplete\",()=>Z0e());Ts(\"BasicAuth\",()=>ige());Ts(\"Confirm\",()=>age());Ts(\"Editable\",()=>cge());Ts(\"Form\",()=>NT());Ts(\"Input\",()=>GG());Ts(\"Invisible\",()=>dge());Ts(\"List\",()=>yge());Ts(\"MultiSelect\",()=>Ige());Ts(\"Numeral\",()=>Bge());Ts(\"Password\",()=>Sge());Ts(\"Scale\",()=>Pge());Ts(\"Select\",()=>H0());Ts(\"Snippet\",()=>Tge());Ts(\"Sort\",()=>Nge());Ts(\"Survey\",()=>Lge());Ts(\"Text\",()=>Uge());Ts(\"Toggle\",()=>Hge());Ts(\"Quiz\",()=>Gge())});var Yge=G((N3t,Vge)=>{Vge.exports={ArrayPrompt:Wv(),AuthPrompt:LG(),BooleanPrompt:OT(),NumberPrompt:KG(),StringPrompt:bm()}});var Yv=G((O3t,Jge)=>{\"use strict\";var Kge=Ie(\"assert\"),o5=Ie(\"events\"),j0=ra(),Xu=class extends o5{constructor(t,r){super(),this.options=j0.merge({},t),this.answers={...r}}register(t,r){if(j0.isObject(t)){for(let a of Object.keys(t))this.register(a,t[a]);return this}Kge.equal(typeof r,\"function\",\"expected a function\");let s=t.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[s]=r:this.prompts[s]=r(this.Prompt,this),this}async prompt(t=[]){for(let r of[].concat(t))try{typeof r==\"function\"&&(r=await r.call(this)),await this.ask(j0.merge({},this.options,r))}catch(s){return Promise.reject(s)}return this.answers}async ask(t){typeof t==\"function\"&&(t=await t.call(this));let r=j0.merge({},this.options,t),{type:s,name:a}=t,{set:n,get:c}=j0;if(typeof s==\"function\"&&(s=await s.call(this,t,this.answers)),!s)return this.answers[a];Kge(this.prompts[s],`Prompt \"${s}\" is not registered`);let f=new this.prompts[s](r),p=c(this.answers,a);f.state.answers=this.answers,f.enquirer=this,a&&f.on(\"submit\",E=>{this.emit(\"answer\",a,E,f),n(this.answers,a,E)});let h=f.emit.bind(f);return f.emit=(...E)=>(this.emit.call(this,...E),h(...E)),this.emit(\"prompt\",f,this),r.autofill&&p!=null?(f.value=f.input=p,r.autofill===\"show\"&&await f.submit()):p=f.value=await f.run(),p}use(t){return t.call(this,this),this}set Prompt(t){this._Prompt=t}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(t){this._Prompt=t}static get Prompt(){return this._Prompt||KI()}static get prompts(){return Wge()}static get types(){return Yge()}static get prompt(){let t=(r,...s)=>{let a=new this(...s),n=a.emit.bind(a);return a.emit=(...c)=>(t.emit(...c),n(...c)),a.prompt(r)};return j0.mixinEmitter(t,new o5),t}};j0.mixinEmitter(Xu,new o5);var s5=Xu.prompts;for(let e of Object.keys(s5)){let t=e.toLowerCase(),r=s=>new s5[e](s).run();Xu.prompt[t]=r,Xu[t]=r,Xu[e]||Reflect.defineProperty(Xu,e,{get:()=>s5[e]})}var Vv=e=>{j0.defineExport(Xu,e,()=>Xu.types[e])};Vv(\"ArrayPrompt\");Vv(\"AuthPrompt\");Vv(\"BooleanPrompt\");Vv(\"NumberPrompt\");Vv(\"StringPrompt\");Jge.exports=Xu});var nde=G((sHt,not)=>{not.exports={name:\"@yarnpkg/cli\",version:\"4.13.0\",license:\"BSD-2-Clause\",main:\"./sources/index.ts\",exports:{\".\":\"./sources/index.ts\",\"./polyfills\":\"./sources/polyfills.ts\",\"./package.json\":\"./package.json\"},dependencies:{\"@yarnpkg/core\":\"workspace:^\",\"@yarnpkg/fslib\":\"workspace:^\",\"@yarnpkg/libzip\":\"workspace:^\",\"@yarnpkg/parsers\":\"workspace:^\",\"@yarnpkg/plugin-catalog\":\"workspace:^\",\"@yarnpkg/plugin-compat\":\"workspace:^\",\"@yarnpkg/plugin-constraints\":\"workspace:^\",\"@yarnpkg/plugin-dlx\":\"workspace:^\",\"@yarnpkg/plugin-essentials\":\"workspace:^\",\"@yarnpkg/plugin-exec\":\"workspace:^\",\"@yarnpkg/plugin-file\":\"workspace:^\",\"@yarnpkg/plugin-git\":\"workspace:^\",\"@yarnpkg/plugin-github\":\"workspace:^\",\"@yarnpkg/plugin-http\":\"workspace:^\",\"@yarnpkg/plugin-init\":\"workspace:^\",\"@yarnpkg/plugin-interactive-tools\":\"workspace:^\",\"@yarnpkg/plugin-jsr\":\"workspace:^\",\"@yarnpkg/plugin-link\":\"workspace:^\",\"@yarnpkg/plugin-nm\":\"workspace:^\",\"@yarnpkg/plugin-npm\":\"workspace:^\",\"@yarnpkg/plugin-npm-cli\":\"workspace:^\",\"@yarnpkg/plugin-pack\":\"workspace:^\",\"@yarnpkg/plugin-patch\":\"workspace:^\",\"@yarnpkg/plugin-pnp\":\"workspace:^\",\"@yarnpkg/plugin-pnpm\":\"workspace:^\",\"@yarnpkg/plugin-stage\":\"workspace:^\",\"@yarnpkg/plugin-typescript\":\"workspace:^\",\"@yarnpkg/plugin-version\":\"workspace:^\",\"@yarnpkg/plugin-workspace-tools\":\"workspace:^\",\"@yarnpkg/shell\":\"workspace:^\",\"ci-info\":\"^4.0.0\",clipanion:\"^4.0.0-rc.2\",semver:\"^7.1.2\",tslib:\"^2.4.0\",typanion:\"^3.14.0\"},devDependencies:{\"@types/semver\":\"^7.1.0\",\"@yarnpkg/builder\":\"workspace:^\",\"@yarnpkg/monorepo\":\"workspace:^\",\"@yarnpkg/pnpify\":\"workspace:^\"},peerDependencies:{\"@yarnpkg/core\":\"workspace:^\"},scripts:{postpack:\"rm -rf lib\",prepack:'run build:compile \"$(pwd)\"',\"build:cli+hook\":\"run build:pnp:hook && builder build bundle\",\"build:cli\":\"builder build bundle\",\"run:cli\":\"builder run\",\"update-local\":\"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/\"},publishConfig:{main:\"./lib/index.js\",bin:null,exports:{\".\":\"./lib/index.js\",\"./package.json\":\"./package.json\"}},files:[\"/lib/**/*\",\"!/lib/pluginConfiguration.*\",\"!/lib/cli.*\"],\"@yarnpkg/builder\":{bundles:{standard:[\"@yarnpkg/plugin-essentials\",\"@yarnpkg/plugin-catalog\",\"@yarnpkg/plugin-compat\",\"@yarnpkg/plugin-constraints\",\"@yarnpkg/plugin-dlx\",\"@yarnpkg/plugin-exec\",\"@yarnpkg/plugin-file\",\"@yarnpkg/plugin-git\",\"@yarnpkg/plugin-github\",\"@yarnpkg/plugin-http\",\"@yarnpkg/plugin-init\",\"@yarnpkg/plugin-interactive-tools\",\"@yarnpkg/plugin-jsr\",\"@yarnpkg/plugin-link\",\"@yarnpkg/plugin-nm\",\"@yarnpkg/plugin-npm\",\"@yarnpkg/plugin-npm-cli\",\"@yarnpkg/plugin-pack\",\"@yarnpkg/plugin-patch\",\"@yarnpkg/plugin-pnp\",\"@yarnpkg/plugin-pnpm\",\"@yarnpkg/plugin-stage\",\"@yarnpkg/plugin-typescript\",\"@yarnpkg/plugin-version\",\"@yarnpkg/plugin-workspace-tools\"]}},repository:{type:\"git\",url:\"git+https://github.com/yarnpkg/berry.git\",directory:\"packages/yarnpkg-cli\"},engines:{node:\">=18.12.0\"}}});var C5=G((LGt,gde)=>{\"use strict\";gde.exports=function(t,r){r===!0&&(r=0);var s=\"\";if(typeof t==\"string\")try{s=new URL(t).protocol}catch{}else t&&t.constructor===URL&&(s=t.protocol);var a=s.split(/\\:|\\+/).filter(Boolean);return typeof r==\"number\"?a[r]:a}});var mde=G((MGt,dde)=>{\"use strict\";var Bot=C5();function vot(e){var t={protocols:[],protocol:null,port:null,resource:\"\",host:\"\",user:\"\",password:\"\",pathname:\"\",hash:\"\",search:\"\",href:e,query:{},parse_failed:!1};try{var r=new URL(e);t.protocols=Bot(r),t.protocol=t.protocols[0],t.port=r.port,t.resource=r.hostname,t.host=r.host,t.user=r.username||\"\",t.password=r.password||\"\",t.pathname=r.pathname,t.hash=r.hash.slice(1),t.search=r.search.slice(1),t.href=r.href,t.query=Object.fromEntries(r.searchParams)}catch{t.protocols=[\"file\"],t.protocol=t.protocols[0],t.port=\"\",t.resource=\"\",t.user=\"\",t.pathname=\"\",t.hash=\"\",t.search=\"\",t.href=e,t.query={},t.parse_failed=!0}return t}dde.exports=vot});var Ide=G((UGt,Ede)=>{\"use strict\";var Sot=mde();function Dot(e){return e&&typeof e==\"object\"&&\"default\"in e?e:{default:e}}var bot=Dot(Sot),Pot=\"text/plain\",xot=\"us-ascii\",yde=(e,t)=>t.some(r=>r instanceof RegExp?r.test(e):r===e),kot=(e,{stripHash:t})=>{let r=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(e);if(!r)throw new Error(`Invalid URL: ${e}`);let{type:s,data:a,hash:n}=r.groups,c=s.split(\";\");n=t?\"\":n;let f=!1;c[c.length-1]===\"base64\"&&(c.pop(),f=!0);let p=(c.shift()||\"\").toLowerCase(),E=[...c.map(C=>{let[S,x=\"\"]=C.split(\"=\").map(I=>I.trim());return S===\"charset\"&&(x=x.toLowerCase(),x===xot)?\"\":`${S}${x?`=${x}`:\"\"}`}).filter(Boolean)];return f&&E.push(\"base64\"),(E.length>0||p&&p!==Pot)&&E.unshift(p),`data:${E.join(\";\")},${f?a.trim():a}${n?`#${n}`:\"\"}`};function Qot(e,t){if(t={defaultProtocol:\"http:\",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...t},e=e.trim(),/^data:/i.test(e))return kot(e,t);if(/^view-source:/i.test(e))throw new Error(\"`view-source:` is not supported as it is a non-standard protocol\");let r=e.startsWith(\"//\");!r&&/^\\.*\\//.test(e)||(e=e.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//,t.defaultProtocol));let a=new URL(e);if(t.forceHttp&&t.forceHttps)throw new Error(\"The `forceHttp` and `forceHttps` options cannot be used together\");if(t.forceHttp&&a.protocol===\"https:\"&&(a.protocol=\"http:\"),t.forceHttps&&a.protocol===\"http:\"&&(a.protocol=\"https:\"),t.stripAuthentication&&(a.username=\"\",a.password=\"\"),t.stripHash?a.hash=\"\":t.stripTextFragment&&(a.hash=a.hash.replace(/#?:~:text.*?$/i,\"\")),a.pathname){let c=/\\b[a-z][a-z\\d+\\-.]{1,50}:\\/\\//g,f=0,p=\"\";for(;;){let E=c.exec(a.pathname);if(!E)break;let C=E[0],S=E.index,x=a.pathname.slice(f,S);p+=x.replace(/\\/{2,}/g,\"/\"),p+=C,f=S+C.length}let h=a.pathname.slice(f,a.pathname.length);p+=h.replace(/\\/{2,}/g,\"/\"),a.pathname=p}if(a.pathname)try{a.pathname=decodeURI(a.pathname)}catch{}if(t.removeDirectoryIndex===!0&&(t.removeDirectoryIndex=[/^index\\.[a-z]+$/]),Array.isArray(t.removeDirectoryIndex)&&t.removeDirectoryIndex.length>0){let c=a.pathname.split(\"/\"),f=c[c.length-1];yde(f,t.removeDirectoryIndex)&&(c=c.slice(0,-1),a.pathname=c.slice(1).join(\"/\")+\"/\")}if(a.hostname&&(a.hostname=a.hostname.replace(/\\.$/,\"\"),t.stripWWW&&/^www\\.(?!www\\.)[a-z\\-\\d]{1,63}\\.[a-z.\\-\\d]{2,63}$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\\./,\"\"))),Array.isArray(t.removeQueryParameters))for(let c of[...a.searchParams.keys()])yde(c,t.removeQueryParameters)&&a.searchParams.delete(c);if(t.removeQueryParameters===!0&&(a.search=\"\"),t.sortQueryParameters){a.searchParams.sort();try{a.search=decodeURIComponent(a.search)}catch{}}t.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\\/$/,\"\"));let n=e;return e=a.toString(),!t.removeSingleSlash&&a.pathname===\"/\"&&!n.endsWith(\"/\")&&a.hash===\"\"&&(e=e.replace(/\\/$/,\"\")),(t.removeTrailingSlash||a.pathname===\"/\")&&a.hash===\"\"&&t.removeSingleSlash&&(e=e.replace(/\\/$/,\"\")),r&&!t.normalizeProtocol&&(e=e.replace(/^http:\\/\\//,\"//\")),t.stripProtocol&&(e=e.replace(/^(?:https?:)?\\/\\//,\"\")),e}var w5=(e,t=!1)=>{let r=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\\/\\/)([\\w\\.\\-@]+)[\\/:]([\\~,\\.\\w,\\-,\\_,\\/]+?(?:\\.git|\\/)?)$/,s=n=>{let c=new Error(n);throw c.subject_url=e,c};(typeof e!=\"string\"||!e.trim())&&s(\"Invalid url.\"),e.length>w5.MAX_INPUT_LENGTH&&s(\"Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH.\"),t&&(typeof t!=\"object\"&&(t={stripHash:!1}),e=Qot(e,t));let a=bot.default(e);if(a.parse_failed){let n=a.href.match(r);n?(a.protocols=[\"ssh\"],a.protocol=\"ssh\",a.resource=n[2],a.host=n[2],a.user=n[1],a.pathname=`/${n[3]}`,a.parse_failed=!1):s(\"URL parsing failed.\")}return a};w5.MAX_INPUT_LENGTH=2048;Ede.exports=w5});var Bde=G((_Gt,wde)=>{\"use strict\";var Rot=C5();function Cde(e){if(Array.isArray(e))return e.indexOf(\"ssh\")!==-1||e.indexOf(\"rsync\")!==-1;if(typeof e!=\"string\")return!1;var t=Rot(e);if(e=e.substring(e.indexOf(\"://\")+3),Cde(t))return!0;var r=new RegExp(\".([a-zA-Z\\\\d]+):(\\\\d+)/\");return!e.match(r)&&e.indexOf(\"@\")<e.indexOf(\":\")}wde.exports=Cde});var Dde=G((HGt,Sde)=>{\"use strict\";var Tot=Ide(),vde=Bde();function Fot(e){var t=Tot(e);return t.token=\"\",t.password===\"x-oauth-basic\"?t.token=t.user:t.user===\"x-token-auth\"&&(t.token=t.password),vde(t.protocols)||t.protocols.length===0&&vde(e)?t.protocol=\"ssh\":t.protocols.length?t.protocol=t.protocols[0]:(t.protocol=\"file\",t.protocols=[\"file\"]),t.href=t.href.replace(/\\/$/,\"\"),t}Sde.exports=Fot});var Pde=G((jGt,bde)=>{\"use strict\";var Not=Dde();function B5(e){if(typeof e!=\"string\")throw new Error(\"The url must be a string.\");var t=/^([a-z\\d-]{1,39})\\/([-\\.\\w]{1,100})$/i;t.test(e)&&(e=\"https://github.com/\"+e);var r=Not(e),s=r.resource.split(\".\"),a=null;switch(r.toString=function(O){return B5.stringify(this,O)},r.source=s.length>2?s.slice(1-s.length).join(\".\"):r.source=r.resource,r.git_suffix=/\\.git$/.test(r.pathname),r.name=decodeURIComponent((r.pathname||r.href).replace(/(^\\/)|(\\/$)/g,\"\").replace(/\\.git$/,\"\")),r.owner=decodeURIComponent(r.user),r.source){case\"git.cloudforge.com\":r.owner=r.user,r.organization=s[0],r.source=\"cloudforge.com\";break;case\"visualstudio.com\":if(r.resource===\"vs-ssh.visualstudio.com\"){a=r.name.split(\"/\"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3],r.full_name=a[2]+\"/\"+a[3]);break}else{a=r.name.split(\"/\"),a.length===2?(r.owner=a[1],r.name=a[1],r.full_name=\"_git/\"+r.name):a.length===3?(r.name=a[2],a[0]===\"DefaultCollection\"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+\"/_git/\"+r.name):(r.owner=a[0],r.full_name=r.owner+\"/_git/\"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+\"/\"+r.owner+\"/_git/\"+r.name);break}case\"dev.azure.com\":case\"azure.com\":if(r.resource===\"ssh.dev.azure.com\"){a=r.name.split(\"/\"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3]);break}else{a=r.name.split(\"/\"),a.length===5?(r.organization=a[0],r.owner=a[1],r.name=a[4],r.full_name=\"_git/\"+r.name):a.length===3?(r.name=a[2],a[0]===\"DefaultCollection\"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+\"/_git/\"+r.name):(r.owner=a[0],r.full_name=r.owner+\"/_git/\"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+\"/\"+r.owner+\"/_git/\"+r.name),r.query&&r.query.path&&(r.filepath=r.query.path.replace(/^\\/+/g,\"\")),r.query&&r.query.version&&(r.ref=r.query.version.replace(/^GB/,\"\"));break}default:a=r.name.split(\"/\");var n=a.length-1;if(a.length>=2){var c=a.indexOf(\"-\",2),f=a.indexOf(\"blob\",2),p=a.indexOf(\"tree\",2),h=a.indexOf(\"commit\",2),E=a.indexOf(\"src\",2),C=a.indexOf(\"raw\",2),S=a.indexOf(\"edit\",2);n=c>0?c-1:f>0?f-1:p>0?p-1:h>0?h-1:E>0?E-1:C>0?C-1:S>0?S-1:n,r.owner=a.slice(0,n).join(\"/\"),r.name=a[n],h&&(r.commit=a[n+2])}r.ref=\"\",r.filepathtype=\"\",r.filepath=\"\";var x=a.length>n&&a[n+1]===\"-\"?n+1:n;a.length>x+2&&[\"raw\",\"src\",\"blob\",\"tree\",\"edit\"].indexOf(a[x+1])>=0&&(r.filepathtype=a[x+1],r.ref=a[x+2],a.length>x+3&&(r.filepath=a.slice(x+3).join(\"/\"))),r.organization=r.owner;break}r.full_name||(r.full_name=r.owner,r.name&&(r.full_name&&(r.full_name+=\"/\"),r.full_name+=r.name)),r.owner.startsWith(\"scm/\")&&(r.source=\"bitbucket-server\",r.owner=r.owner.replace(\"scm/\",\"\"),r.organization=r.owner,r.full_name=r.owner+\"/\"+r.name);var I=/(projects|users)\\/(.*?)\\/repos\\/(.*?)((\\/.*$)|$)/,T=I.exec(r.pathname);return T!=null&&(r.source=\"bitbucket-server\",T[1]===\"users\"?r.owner=\"~\"+T[2]:r.owner=T[2],r.organization=r.owner,r.name=T[3],a=T[4].split(\"/\"),a.length>1&&([\"raw\",\"browse\"].indexOf(a[1])>=0?(r.filepathtype=a[1],a.length>2&&(r.filepath=a.slice(2).join(\"/\"))):a[1]===\"commits\"&&a.length>2&&(r.commit=a[2])),r.full_name=r.owner+\"/\"+r.name,r.query.at?r.ref=r.query.at:r.ref=\"\"),r}B5.stringify=function(e,t){t=t||(e.protocols&&e.protocols.length?e.protocols.join(\"+\"):e.protocol);var r=e.port?\":\"+e.port:\"\",s=e.user||\"git\",a=e.git_suffix?\".git\":\"\";switch(t){case\"ssh\":return r?\"ssh://\"+s+\"@\"+e.resource+r+\"/\"+e.full_name+a:s+\"@\"+e.resource+\":\"+e.full_name+a;case\"git+ssh\":case\"ssh+git\":case\"ftp\":case\"ftps\":return t+\"://\"+s+\"@\"+e.resource+r+\"/\"+e.full_name+a;case\"http\":case\"https\":var n=e.token?Oot(e):e.user&&(e.protocols.includes(\"http\")||e.protocols.includes(\"https\"))?e.user+\"@\":\"\";return t+\"://\"+n+e.resource+r+\"/\"+Lot(e)+a;default:return e.href}};function Oot(e){switch(e.source){case\"bitbucket.org\":return\"x-token-auth:\"+e.token+\"@\";default:return e.token+\"@\"}}function Lot(e){switch(e.source){case\"bitbucket-server\":return\"scm/\"+e.full_name;default:return\"\"+e.full_name}}bde.exports=B5});function tat(e,t){return t===1&&eat.has(e[0])}function nS(e){let t=Array.isArray(e)?e:Ou(e);return t.map((s,a)=>Xot.test(s)?`[${s}]`:$ot.test(s)&&!tat(t,a)?`.${s}`:`[${JSON.stringify(s)}]`).join(\"\").replace(/^\\./,\"\")}function rat(e,t){let r=[];if(t.methodName!==null&&r.push(pe.pretty(e,t.methodName,pe.Type.CODE)),t.file!==null){let s=[];s.push(pe.pretty(e,t.file,pe.Type.PATH)),t.line!==null&&(s.push(pe.pretty(e,t.line,pe.Type.NUMBER)),t.column!==null&&s.push(pe.pretty(e,t.column,pe.Type.NUMBER))),r.push(`(${s.join(pe.pretty(e,\":\",\"grey\"))})`)}return r.join(\" \")}function jT(e,{manifestUpdates:t,reportedErrors:r},{fix:s}={}){let a=new Map,n=new Map,c=[...r.keys()].map(f=>[f,new Map]);for(let[f,p]of[...c,...t]){let h=r.get(f)?.map(x=>({text:x,fixable:!1}))??[],E=!1,C=e.getWorkspaceByCwd(f),S=C.manifest.exportTo({});for(let[x,I]of p){if(I.size>1){let T=[...I].map(([O,U])=>{let Y=pe.pretty(e.configuration,O,pe.Type.INSPECT),te=U.size>0?rat(e.configuration,U.values().next().value):null;return te!==null?`\n${Y} at ${te}`:`\n${Y}`}).join(\"\");h.push({text:`Conflict detected in constraint targeting ${pe.pretty(e.configuration,x,pe.Type.CODE)}; conflicting values are:${T}`,fixable:!1})}else{let[[T]]=I,O=ba(S,x);if(JSON.stringify(O)===JSON.stringify(T))continue;if(!s){let U=typeof O>\"u\"?`Missing field ${pe.pretty(e.configuration,x,pe.Type.CODE)}; expected ${pe.pretty(e.configuration,T,pe.Type.INSPECT)}`:typeof T>\"u\"?`Extraneous field ${pe.pretty(e.configuration,x,pe.Type.CODE)} currently set to ${pe.pretty(e.configuration,O,pe.Type.INSPECT)}`:`Invalid field ${pe.pretty(e.configuration,x,pe.Type.CODE)}; expected ${pe.pretty(e.configuration,T,pe.Type.INSPECT)}, found ${pe.pretty(e.configuration,O,pe.Type.INSPECT)}`;h.push({text:U,fixable:!0});continue}typeof T>\"u\"?u0(S,x):Vd(S,x,T),E=!0}E&&a.set(C,S)}h.length>0&&n.set(C,h)}return{changedWorkspaces:a,remainingErrors:n}}function Gde(e,{configuration:t}){let r={children:[]};for(let[s,a]of e){let n=[];for(let f of a){let p=f.text.split(/\\n/);f.fixable&&(p[0]=`${pe.pretty(t,\"\\u2699\",\"gray\")} ${p[0]}`),n.push({value:pe.tuple(pe.Type.NO_HINT,p[0]),children:p.slice(1).map(h=>({value:pe.tuple(pe.Type.NO_HINT,h)}))})}let c={value:pe.tuple(pe.Type.LOCATOR,s.anchoredLocator),children:Ge.sortMap(n,f=>f.value[1])};r.children.push(c)}return r.children=Ge.sortMap(r.children,s=>s.value[1]),r}var OC,Xot,$ot,eat,iS=Ze(()=>{qe();Jl();OC=class{constructor(t){this.indexedFields=t;this.items=[];this.indexes={};this.clear()}clear(){this.items=[];for(let t of this.indexedFields)this.indexes[t]=new Map}insert(t){this.items.push(t);for(let r of this.indexedFields){let s=Object.hasOwn(t,r)?t[r]:void 0;if(typeof s>\"u\")continue;Ge.getArrayWithDefault(this.indexes[r],s).push(t)}return t}find(t){if(typeof t>\"u\")return this.items;let r=Object.entries(t);if(r.length===0)return this.items;let s=[],a;for(let[c,f]of r){let p=c,h=Object.hasOwn(this.indexes,p)?this.indexes[p]:void 0;if(typeof h>\"u\"){s.push([p,f]);continue}let E=new Set(h.get(f)??[]);if(E.size===0)return[];if(typeof a>\"u\")a=E;else for(let C of a)E.has(C)||a.delete(C);if(a.size===0)break}let n=[...a??[]];return s.length>0&&(n=n.filter(c=>{for(let[f,p]of s)if(!(typeof p<\"u\"?Object.hasOwn(c,f)&&c[f]===p:Object.hasOwn(c,f)===!1))return!1;return!0})),n}},Xot=/^[0-9]+$/,$ot=/^[a-zA-Z0-9_]+$/,eat=new Set([\"scripts\",...Ut.allDependencies])});var qde=G((qqt,H5)=>{var nat;(function(e){var t=function(){return{\"append/2\":[new e.type.Rule(new e.type.Term(\"append\",[new e.type.Var(\"X\"),new e.type.Var(\"L\")]),new e.type.Term(\"foldl\",[new e.type.Term(\"append\",[]),new e.type.Var(\"X\"),new e.type.Term(\"[]\",[]),new e.type.Var(\"L\")]))],\"append/3\":[new e.type.Rule(new e.type.Term(\"append\",[new e.type.Term(\"[]\",[]),new e.type.Var(\"X\"),new e.type.Var(\"X\")]),null),new e.type.Rule(new e.type.Term(\"append\",[new e.type.Term(\".\",[new e.type.Var(\"H\"),new e.type.Var(\"T\")]),new e.type.Var(\"X\"),new e.type.Term(\".\",[new e.type.Var(\"H\"),new e.type.Var(\"S\")])]),new e.type.Term(\"append\",[new e.type.Var(\"T\"),new e.type.Var(\"X\"),new e.type.Var(\"S\")]))],\"member/2\":[new e.type.Rule(new e.type.Term(\"member\",[new e.type.Var(\"X\"),new e.type.Term(\".\",[new e.type.Var(\"X\"),new e.type.Var(\"_\")])]),null),new e.type.Rule(new e.type.Term(\"member\",[new e.type.Var(\"X\"),new e.type.Term(\".\",[new e.type.Var(\"_\"),new e.type.Var(\"Xs\")])]),new e.type.Term(\"member\",[new e.type.Var(\"X\"),new e.type.Var(\"Xs\")]))],\"permutation/2\":[new e.type.Rule(new e.type.Term(\"permutation\",[new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[])]),null),new e.type.Rule(new e.type.Term(\"permutation\",[new e.type.Term(\".\",[new e.type.Var(\"H\"),new e.type.Var(\"T\")]),new e.type.Var(\"S\")]),new e.type.Term(\",\",[new e.type.Term(\"permutation\",[new e.type.Var(\"T\"),new e.type.Var(\"P\")]),new e.type.Term(\",\",[new e.type.Term(\"append\",[new e.type.Var(\"X\"),new e.type.Var(\"Y\"),new e.type.Var(\"P\")]),new e.type.Term(\"append\",[new e.type.Var(\"X\"),new e.type.Term(\".\",[new e.type.Var(\"H\"),new e.type.Var(\"Y\")]),new e.type.Var(\"S\")])])]))],\"maplist/2\":[new e.type.Rule(new e.type.Term(\"maplist\",[new e.type.Var(\"_\"),new e.type.Term(\"[]\",[])]),null),new e.type.Rule(new e.type.Term(\"maplist\",[new e.type.Var(\"P\"),new e.type.Term(\".\",[new e.type.Var(\"X\"),new e.type.Var(\"Xs\")])]),new e.type.Term(\",\",[new e.type.Term(\"call\",[new e.type.Var(\"P\"),new e.type.Var(\"X\")]),new e.type.Term(\"maplist\",[new e.type.Var(\"P\"),new e.type.Var(\"Xs\")])]))],\"maplist/3\":[new e.type.Rule(new e.type.Term(\"maplist\",[new e.type.Var(\"_\"),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[])]),null),new e.type.Rule(new e.type.Term(\"maplist\",[new e.type.Var(\"P\"),new e.type.Term(\".\",[new e.type.Var(\"A\"),new e.type.Var(\"As\")]),new e.type.Term(\".\",[new e.type.Var(\"B\"),new e.type.Var(\"Bs\")])]),new e.type.Term(\",\",[new e.type.Term(\"call\",[new e.type.Var(\"P\"),new e.type.Var(\"A\"),new e.type.Var(\"B\")]),new e.type.Term(\"maplist\",[new e.type.Var(\"P\"),new e.type.Var(\"As\"),new e.type.Var(\"Bs\")])]))],\"maplist/4\":[new e.type.Rule(new e.type.Term(\"maplist\",[new e.type.Var(\"_\"),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[])]),null),new e.type.Rule(new e.type.Term(\"maplist\",[new e.type.Var(\"P\"),new e.type.Term(\".\",[new e.type.Var(\"A\"),new e.type.Var(\"As\")]),new e.type.Term(\".\",[new e.type.Var(\"B\"),new e.type.Var(\"Bs\")]),new e.type.Term(\".\",[new e.type.Var(\"C\"),new e.type.Var(\"Cs\")])]),new e.type.Term(\",\",[new e.type.Term(\"call\",[new e.type.Var(\"P\"),new e.type.Var(\"A\"),new e.type.Var(\"B\"),new e.type.Var(\"C\")]),new e.type.Term(\"maplist\",[new e.type.Var(\"P\"),new e.type.Var(\"As\"),new e.type.Var(\"Bs\"),new e.type.Var(\"Cs\")])]))],\"maplist/5\":[new e.type.Rule(new e.type.Term(\"maplist\",[new e.type.Var(\"_\"),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[])]),null),new e.type.Rule(new e.type.Term(\"maplist\",[new e.type.Var(\"P\"),new e.type.Term(\".\",[new e.type.Var(\"A\"),new e.type.Var(\"As\")]),new e.type.Term(\".\",[new e.type.Var(\"B\"),new e.type.Var(\"Bs\")]),new e.type.Term(\".\",[new e.type.Var(\"C\"),new e.type.Var(\"Cs\")]),new e.type.Term(\".\",[new e.type.Var(\"D\"),new e.type.Var(\"Ds\")])]),new e.type.Term(\",\",[new e.type.Term(\"call\",[new e.type.Var(\"P\"),new e.type.Var(\"A\"),new e.type.Var(\"B\"),new e.type.Var(\"C\"),new e.type.Var(\"D\")]),new e.type.Term(\"maplist\",[new e.type.Var(\"P\"),new e.type.Var(\"As\"),new e.type.Var(\"Bs\"),new e.type.Var(\"Cs\"),new e.type.Var(\"Ds\")])]))],\"maplist/6\":[new e.type.Rule(new e.type.Term(\"maplist\",[new e.type.Var(\"_\"),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[])]),null),new e.type.Rule(new e.type.Term(\"maplist\",[new e.type.Var(\"P\"),new e.type.Term(\".\",[new e.type.Var(\"A\"),new e.type.Var(\"As\")]),new e.type.Term(\".\",[new e.type.Var(\"B\"),new e.type.Var(\"Bs\")]),new e.type.Term(\".\",[new e.type.Var(\"C\"),new e.type.Var(\"Cs\")]),new e.type.Term(\".\",[new e.type.Var(\"D\"),new e.type.Var(\"Ds\")]),new e.type.Term(\".\",[new e.type.Var(\"E\"),new e.type.Var(\"Es\")])]),new e.type.Term(\",\",[new e.type.Term(\"call\",[new e.type.Var(\"P\"),new e.type.Var(\"A\"),new e.type.Var(\"B\"),new e.type.Var(\"C\"),new e.type.Var(\"D\"),new e.type.Var(\"E\")]),new e.type.Term(\"maplist\",[new e.type.Var(\"P\"),new e.type.Var(\"As\"),new e.type.Var(\"Bs\"),new e.type.Var(\"Cs\"),new e.type.Var(\"Ds\"),new e.type.Var(\"Es\")])]))],\"maplist/7\":[new e.type.Rule(new e.type.Term(\"maplist\",[new e.type.Var(\"_\"),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[])]),null),new e.type.Rule(new e.type.Term(\"maplist\",[new e.type.Var(\"P\"),new e.type.Term(\".\",[new e.type.Var(\"A\"),new e.type.Var(\"As\")]),new e.type.Term(\".\",[new e.type.Var(\"B\"),new e.type.Var(\"Bs\")]),new e.type.Term(\".\",[new e.type.Var(\"C\"),new e.type.Var(\"Cs\")]),new e.type.Term(\".\",[new e.type.Var(\"D\"),new e.type.Var(\"Ds\")]),new e.type.Term(\".\",[new e.type.Var(\"E\"),new e.type.Var(\"Es\")]),new e.type.Term(\".\",[new e.type.Var(\"F\"),new e.type.Var(\"Fs\")])]),new e.type.Term(\",\",[new e.type.Term(\"call\",[new e.type.Var(\"P\"),new e.type.Var(\"A\"),new e.type.Var(\"B\"),new e.type.Var(\"C\"),new e.type.Var(\"D\"),new e.type.Var(\"E\"),new e.type.Var(\"F\")]),new e.type.Term(\"maplist\",[new e.type.Var(\"P\"),new e.type.Var(\"As\"),new e.type.Var(\"Bs\"),new e.type.Var(\"Cs\"),new e.type.Var(\"Ds\"),new e.type.Var(\"Es\"),new e.type.Var(\"Fs\")])]))],\"maplist/8\":[new e.type.Rule(new e.type.Term(\"maplist\",[new e.type.Var(\"_\"),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[])]),null),new e.type.Rule(new e.type.Term(\"maplist\",[new e.type.Var(\"P\"),new e.type.Term(\".\",[new e.type.Var(\"A\"),new e.type.Var(\"As\")]),new e.type.Term(\".\",[new e.type.Var(\"B\"),new e.type.Var(\"Bs\")]),new e.type.Term(\".\",[new e.type.Var(\"C\"),new e.type.Var(\"Cs\")]),new e.type.Term(\".\",[new e.type.Var(\"D\"),new e.type.Var(\"Ds\")]),new e.type.Term(\".\",[new e.type.Var(\"E\"),new e.type.Var(\"Es\")]),new e.type.Term(\".\",[new e.type.Var(\"F\"),new e.type.Var(\"Fs\")]),new e.type.Term(\".\",[new e.type.Var(\"G\"),new e.type.Var(\"Gs\")])]),new e.type.Term(\",\",[new e.type.Term(\"call\",[new e.type.Var(\"P\"),new e.type.Var(\"A\"),new e.type.Var(\"B\"),new e.type.Var(\"C\"),new e.type.Var(\"D\"),new e.type.Var(\"E\"),new e.type.Var(\"F\"),new e.type.Var(\"G\")]),new e.type.Term(\"maplist\",[new e.type.Var(\"P\"),new e.type.Var(\"As\"),new e.type.Var(\"Bs\"),new e.type.Var(\"Cs\"),new e.type.Var(\"Ds\"),new e.type.Var(\"Es\"),new e.type.Var(\"Fs\"),new e.type.Var(\"Gs\")])]))],\"include/3\":[new e.type.Rule(new e.type.Term(\"include\",[new e.type.Var(\"_\"),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[])]),null),new e.type.Rule(new e.type.Term(\"include\",[new e.type.Var(\"P\"),new e.type.Term(\".\",[new e.type.Var(\"H\"),new e.type.Var(\"T\")]),new e.type.Var(\"L\")]),new e.type.Term(\",\",[new e.type.Term(\"=..\",[new e.type.Var(\"P\"),new e.type.Var(\"A\")]),new e.type.Term(\",\",[new e.type.Term(\"append\",[new e.type.Var(\"A\"),new e.type.Term(\".\",[new e.type.Var(\"H\"),new e.type.Term(\"[]\",[])]),new e.type.Var(\"B\")]),new e.type.Term(\",\",[new e.type.Term(\"=..\",[new e.type.Var(\"F\"),new e.type.Var(\"B\")]),new e.type.Term(\",\",[new e.type.Term(\";\",[new e.type.Term(\",\",[new e.type.Term(\"call\",[new e.type.Var(\"F\")]),new e.type.Term(\",\",[new e.type.Term(\"=\",[new e.type.Var(\"L\"),new e.type.Term(\".\",[new e.type.Var(\"H\"),new e.type.Var(\"S\")])]),new e.type.Term(\"!\",[])])]),new e.type.Term(\"=\",[new e.type.Var(\"L\"),new e.type.Var(\"S\")])]),new e.type.Term(\"include\",[new e.type.Var(\"P\"),new e.type.Var(\"T\"),new e.type.Var(\"S\")])])])])]))],\"exclude/3\":[new e.type.Rule(new e.type.Term(\"exclude\",[new e.type.Var(\"_\"),new e.type.Term(\"[]\",[]),new e.type.Term(\"[]\",[])]),null),new e.type.Rule(new e.type.Term(\"exclude\",[new e.type.Var(\"P\"),new e.type.Term(\".\",[new e.type.Var(\"H\"),new e.type.Var(\"T\")]),new e.type.Var(\"S\")]),new e.type.Term(\",\",[new e.type.Term(\"exclude\",[new e.type.Var(\"P\"),new e.type.Var(\"T\"),new e.type.Var(\"E\")]),new e.type.Term(\",\",[new e.type.Term(\"=..\",[new e.type.Var(\"P\"),new e.type.Var(\"L\")]),new e.type.Term(\",\",[new e.type.Term(\"append\",[new e.type.Var(\"L\"),new e.type.Term(\".\",[new e.type.Var(\"H\"),new e.type.Term(\"[]\",[])]),new e.type.Var(\"Q\")]),new e.type.Term(\",\",[new e.type.Term(\"=..\",[new e.type.Var(\"R\"),new e.type.Var(\"Q\")]),new e.type.Term(\";\",[new e.type.Term(\",\",[new e.type.Term(\"call\",[new e.type.Var(\"R\")]),new e.type.Term(\",\",[new e.type.Term(\"!\",[]),new e.type.Term(\"=\",[new e.type.Var(\"S\"),new e.type.Var(\"E\")])])]),new e.type.Term(\"=\",[new e.type.Var(\"S\"),new e.type.Term(\".\",[new e.type.Var(\"H\"),new e.type.Var(\"E\")])])])])])])]))],\"foldl/4\":[new e.type.Rule(new e.type.Term(\"foldl\",[new e.type.Var(\"_\"),new e.type.Term(\"[]\",[]),new e.type.Var(\"I\"),new e.type.Var(\"I\")]),null),new e.type.Rule(new e.type.Term(\"foldl\",[new e.type.Var(\"P\"),new e.type.Term(\".\",[new e.type.Var(\"H\"),new e.type.Var(\"T\")]),new e.type.Var(\"I\"),new e.type.Var(\"R\")]),new e.type.Term(\",\",[new e.type.Term(\"=..\",[new e.type.Var(\"P\"),new e.type.Var(\"L\")]),new e.type.Term(\",\",[new e.type.Term(\"append\",[new e.type.Var(\"L\"),new e.type.Term(\".\",[new e.type.Var(\"I\"),new e.type.Term(\".\",[new e.type.Var(\"H\"),new e.type.Term(\".\",[new e.type.Var(\"X\"),new e.type.Term(\"[]\",[])])])]),new e.type.Var(\"L2\")]),new e.type.Term(\",\",[new e.type.Term(\"=..\",[new e.type.Var(\"P2\"),new e.type.Var(\"L2\")]),new e.type.Term(\",\",[new e.type.Term(\"call\",[new e.type.Var(\"P2\")]),new e.type.Term(\"foldl\",[new e.type.Var(\"P\"),new e.type.Var(\"T\"),new e.type.Var(\"X\"),new e.type.Var(\"R\")])])])])]))],\"select/3\":[new e.type.Rule(new e.type.Term(\"select\",[new e.type.Var(\"E\"),new e.type.Term(\".\",[new e.type.Var(\"E\"),new e.type.Var(\"Xs\")]),new e.type.Var(\"Xs\")]),null),new e.type.Rule(new e.type.Term(\"select\",[new e.type.Var(\"E\"),new e.type.Term(\".\",[new e.type.Var(\"X\"),new e.type.Var(\"Xs\")]),new e.type.Term(\".\",[new e.type.Var(\"X\"),new e.type.Var(\"Ys\")])]),new e.type.Term(\"select\",[new e.type.Var(\"E\"),new e.type.Var(\"Xs\"),new e.type.Var(\"Ys\")]))],\"sum_list/2\":[new e.type.Rule(new e.type.Term(\"sum_list\",[new e.type.Term(\"[]\",[]),new e.type.Num(0,!1)]),null),new e.type.Rule(new e.type.Term(\"sum_list\",[new e.type.Term(\".\",[new e.type.Var(\"X\"),new e.type.Var(\"Xs\")]),new e.type.Var(\"S\")]),new e.type.Term(\",\",[new e.type.Term(\"sum_list\",[new e.type.Var(\"Xs\"),new e.type.Var(\"Y\")]),new e.type.Term(\"is\",[new e.type.Var(\"S\"),new e.type.Term(\"+\",[new e.type.Var(\"X\"),new e.type.Var(\"Y\")])])]))],\"max_list/2\":[new e.type.Rule(new e.type.Term(\"max_list\",[new e.type.Term(\".\",[new e.type.Var(\"X\"),new e.type.Term(\"[]\",[])]),new e.type.Var(\"X\")]),null),new e.type.Rule(new e.type.Term(\"max_list\",[new e.type.Term(\".\",[new e.type.Var(\"X\"),new e.type.Var(\"Xs\")]),new e.type.Var(\"S\")]),new e.type.Term(\",\",[new e.type.Term(\"max_list\",[new e.type.Var(\"Xs\"),new e.type.Var(\"Y\")]),new e.type.Term(\";\",[new e.type.Term(\",\",[new e.type.Term(\">=\",[new e.type.Var(\"X\"),new e.type.Var(\"Y\")]),new e.type.Term(\",\",[new e.type.Term(\"=\",[new e.type.Var(\"S\"),new e.type.Var(\"X\")]),new e.type.Term(\"!\",[])])]),new e.type.Term(\"=\",[new e.type.Var(\"S\"),new e.type.Var(\"Y\")])])]))],\"min_list/2\":[new e.type.Rule(new e.type.Term(\"min_list\",[new e.type.Term(\".\",[new e.type.Var(\"X\"),new e.type.Term(\"[]\",[])]),new e.type.Var(\"X\")]),null),new e.type.Rule(new e.type.Term(\"min_list\",[new e.type.Term(\".\",[new e.type.Var(\"X\"),new e.type.Var(\"Xs\")]),new e.type.Var(\"S\")]),new e.type.Term(\",\",[new e.type.Term(\"min_list\",[new e.type.Var(\"Xs\"),new e.type.Var(\"Y\")]),new e.type.Term(\";\",[new e.type.Term(\",\",[new e.type.Term(\"=<\",[new e.type.Var(\"X\"),new e.type.Var(\"Y\")]),new e.type.Term(\",\",[new e.type.Term(\"=\",[new e.type.Var(\"S\"),new e.type.Var(\"X\")]),new e.type.Term(\"!\",[])])]),new e.type.Term(\"=\",[new e.type.Var(\"S\"),new e.type.Var(\"Y\")])])]))],\"prod_list/2\":[new e.type.Rule(new e.type.Term(\"prod_list\",[new e.type.Term(\"[]\",[]),new e.type.Num(1,!1)]),null),new e.type.Rule(new e.type.Term(\"prod_list\",[new e.type.Term(\".\",[new e.type.Var(\"X\"),new e.type.Var(\"Xs\")]),new e.type.Var(\"S\")]),new e.type.Term(\",\",[new e.type.Term(\"prod_list\",[new e.type.Var(\"Xs\"),new e.type.Var(\"Y\")]),new e.type.Term(\"is\",[new e.type.Var(\"S\"),new e.type.Term(\"*\",[new e.type.Var(\"X\"),new e.type.Var(\"Y\")])])]))],\"last/2\":[new e.type.Rule(new e.type.Term(\"last\",[new e.type.Term(\".\",[new e.type.Var(\"X\"),new e.type.Term(\"[]\",[])]),new e.type.Var(\"X\")]),null),new e.type.Rule(new e.type.Term(\"last\",[new e.type.Term(\".\",[new e.type.Var(\"_\"),new e.type.Var(\"Xs\")]),new e.type.Var(\"X\")]),new e.type.Term(\"last\",[new e.type.Var(\"Xs\"),new e.type.Var(\"X\")]))],\"prefix/2\":[new e.type.Rule(new e.type.Term(\"prefix\",[new e.type.Var(\"Part\"),new e.type.Var(\"Whole\")]),new e.type.Term(\"append\",[new e.type.Var(\"Part\"),new e.type.Var(\"_\"),new e.type.Var(\"Whole\")]))],\"nth0/3\":[new e.type.Rule(new e.type.Term(\"nth0\",[new e.type.Var(\"X\"),new e.type.Var(\"Y\"),new e.type.Var(\"Z\")]),new e.type.Term(\";\",[new e.type.Term(\"->\",[new e.type.Term(\"var\",[new e.type.Var(\"X\")]),new e.type.Term(\"nth\",[new e.type.Num(0,!1),new e.type.Var(\"X\"),new e.type.Var(\"Y\"),new e.type.Var(\"Z\"),new e.type.Var(\"_\")])]),new e.type.Term(\",\",[new e.type.Term(\">=\",[new e.type.Var(\"X\"),new e.type.Num(0,!1)]),new e.type.Term(\",\",[new e.type.Term(\"nth\",[new e.type.Num(0,!1),new e.type.Var(\"X\"),new e.type.Var(\"Y\"),new e.type.Var(\"Z\"),new e.type.Var(\"_\")]),new e.type.Term(\"!\",[])])])]))],\"nth1/3\":[new e.type.Rule(new e.type.Term(\"nth1\",[new e.type.Var(\"X\"),new e.type.Var(\"Y\"),new e.type.Var(\"Z\")]),new e.type.Term(\";\",[new e.type.Term(\"->\",[new e.type.Term(\"var\",[new e.type.Var(\"X\")]),new e.type.Term(\"nth\",[new e.type.Num(1,!1),new e.type.Var(\"X\"),new e.type.Var(\"Y\"),new e.type.Var(\"Z\"),new e.type.Var(\"_\")])]),new e.type.Term(\",\",[new e.type.Term(\">\",[new e.type.Var(\"X\"),new e.type.Num(0,!1)]),new e.type.Term(\",\",[new e.type.Term(\"nth\",[new e.type.Num(1,!1),new e.type.Var(\"X\"),new e.type.Var(\"Y\"),new e.type.Var(\"Z\"),new e.type.Var(\"_\")]),new e.type.Term(\"!\",[])])])]))],\"nth0/4\":[new e.type.Rule(new e.type.Term(\"nth0\",[new e.type.Var(\"X\"),new e.type.Var(\"Y\"),new e.type.Var(\"Z\"),new e.type.Var(\"W\")]),new e.type.Term(\";\",[new e.type.Term(\"->\",[new e.type.Term(\"var\",[new e.type.Var(\"X\")]),new e.type.Term(\"nth\",[new e.type.Num(0,!1),new e.type.Var(\"X\"),new e.type.Var(\"Y\"),new e.type.Var(\"Z\"),new e.type.Var(\"W\")])]),new e.type.Term(\",\",[new e.type.Term(\">=\",[new e.type.Var(\"X\"),new e.type.Num(0,!1)]),new e.type.Term(\",\",[new e.type.Term(\"nth\",[new e.type.Num(0,!1),new e.type.Var(\"X\"),new e.type.Var(\"Y\"),new e.type.Var(\"Z\"),new e.type.Var(\"W\")]),new e.type.Term(\"!\",[])])])]))],\"nth1/4\":[new e.type.Rule(new e.type.Term(\"nth1\",[new e.type.Var(\"X\"),new e.type.Var(\"Y\"),new e.type.Var(\"Z\"),new e.type.Var(\"W\")]),new e.type.Term(\";\",[new e.type.Term(\"->\",[new e.type.Term(\"var\",[new e.type.Var(\"X\")]),new e.type.Term(\"nth\",[new e.type.Num(1,!1),new e.type.Var(\"X\"),new e.type.Var(\"Y\"),new e.type.Var(\"Z\"),new e.type.Var(\"W\")])]),new e.type.Term(\",\",[new e.type.Term(\">\",[new e.type.Var(\"X\"),new e.type.Num(0,!1)]),new e.type.Term(\",\",[new e.type.Term(\"nth\",[new e.type.Num(1,!1),new e.type.Var(\"X\"),new e.type.Var(\"Y\"),new e.type.Var(\"Z\"),new e.type.Var(\"W\")]),new e.type.Term(\"!\",[])])])]))],\"nth/5\":[new e.type.Rule(new e.type.Term(\"nth\",[new e.type.Var(\"N\"),new e.type.Var(\"N\"),new e.type.Term(\".\",[new e.type.Var(\"X\"),new e.type.Var(\"Xs\")]),new e.type.Var(\"X\"),new e.type.Var(\"Xs\")]),null),new e.type.Rule(new e.type.Term(\"nth\",[new e.type.Var(\"N\"),new e.type.Var(\"O\"),new e.type.Term(\".\",[new e.type.Var(\"X\"),new e.type.Var(\"Xs\")]),new e.type.Var(\"Y\"),new e.type.Term(\".\",[new e.type.Var(\"X\"),new e.type.Var(\"Ys\")])]),new e.type.Term(\",\",[new e.type.Term(\"is\",[new e.type.Var(\"M\"),new e.type.Term(\"+\",[new e.type.Var(\"N\"),new e.type.Num(1,!1)])]),new e.type.Term(\"nth\",[new e.type.Var(\"M\"),new e.type.Var(\"O\"),new e.type.Var(\"Xs\"),new e.type.Var(\"Y\"),new e.type.Var(\"Ys\")])]))],\"length/2\":function(s,a,n){var c=n.args[0],f=n.args[1];if(!e.type.is_variable(f)&&!e.type.is_integer(f))s.throw_error(e.error.type(\"integer\",f,n.indicator));else if(e.type.is_integer(f)&&f.value<0)s.throw_error(e.error.domain(\"not_less_than_zero\",f,n.indicator));else{var p=new e.type.Term(\"length\",[c,new e.type.Num(0,!1),f]);e.type.is_integer(f)&&(p=new e.type.Term(\",\",[p,new e.type.Term(\"!\",[])])),s.prepend([new e.type.State(a.goal.replace(p),a.substitution,a)])}},\"length/3\":[new e.type.Rule(new e.type.Term(\"length\",[new e.type.Term(\"[]\",[]),new e.type.Var(\"N\"),new e.type.Var(\"N\")]),null),new e.type.Rule(new e.type.Term(\"length\",[new e.type.Term(\".\",[new e.type.Var(\"_\"),new e.type.Var(\"X\")]),new e.type.Var(\"A\"),new e.type.Var(\"N\")]),new e.type.Term(\",\",[new e.type.Term(\"succ\",[new e.type.Var(\"A\"),new e.type.Var(\"B\")]),new e.type.Term(\"length\",[new e.type.Var(\"X\"),new e.type.Var(\"B\"),new e.type.Var(\"N\")])]))],\"replicate/3\":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(e.type.is_variable(f))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_integer(f))s.throw_error(e.error.type(\"integer\",f,n.indicator));else if(f.value<0)s.throw_error(e.error.domain(\"not_less_than_zero\",f,n.indicator));else if(!e.type.is_variable(p)&&!e.type.is_list(p))s.throw_error(e.error.type(\"list\",p,n.indicator));else{for(var h=new e.type.Term(\"[]\"),E=0;E<f.value;E++)h=new e.type.Term(\".\",[c,h]);s.prepend([new e.type.State(a.goal.replace(new e.type.Term(\"=\",[h,p])),a.substitution,a)])}},\"sort/2\":function(s,a,n){var c=n.args[0],f=n.args[1];if(e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_variable(f)&&!e.type.is_fully_list(f))s.throw_error(e.error.type(\"list\",f,n.indicator));else{for(var p=[],h=c;h.indicator===\"./2\";)p.push(h.args[0]),h=h.args[1];if(e.type.is_variable(h))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_empty_list(h))s.throw_error(e.error.type(\"list\",c,n.indicator));else{for(var E=p.sort(e.compare),C=E.length-1;C>0;C--)E[C].equals(E[C-1])&&E.splice(C,1);for(var S=new e.type.Term(\"[]\"),C=E.length-1;C>=0;C--)S=new e.type.Term(\".\",[E[C],S]);s.prepend([new e.type.State(a.goal.replace(new e.type.Term(\"=\",[S,f])),a.substitution,a)])}}},\"msort/2\":function(s,a,n){var c=n.args[0],f=n.args[1];if(e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_variable(f)&&!e.type.is_fully_list(f))s.throw_error(e.error.type(\"list\",f,n.indicator));else{for(var p=[],h=c;h.indicator===\"./2\";)p.push(h.args[0]),h=h.args[1];if(e.type.is_variable(h))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_empty_list(h))s.throw_error(e.error.type(\"list\",c,n.indicator));else{for(var E=p.sort(e.compare),C=new e.type.Term(\"[]\"),S=E.length-1;S>=0;S--)C=new e.type.Term(\".\",[E[S],C]);s.prepend([new e.type.State(a.goal.replace(new e.type.Term(\"=\",[C,f])),a.substitution,a)])}}},\"keysort/2\":function(s,a,n){var c=n.args[0],f=n.args[1];if(e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_variable(f)&&!e.type.is_fully_list(f))s.throw_error(e.error.type(\"list\",f,n.indicator));else{for(var p=[],h,E=c;E.indicator===\"./2\";){if(h=E.args[0],e.type.is_variable(h)){s.throw_error(e.error.instantiation(n.indicator));return}else if(!e.type.is_term(h)||h.indicator!==\"-/2\"){s.throw_error(e.error.type(\"pair\",h,n.indicator));return}h.args[0].pair=h.args[1],p.push(h.args[0]),E=E.args[1]}if(e.type.is_variable(E))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_empty_list(E))s.throw_error(e.error.type(\"list\",c,n.indicator));else{for(var C=p.sort(e.compare),S=new e.type.Term(\"[]\"),x=C.length-1;x>=0;x--)S=new e.type.Term(\".\",[new e.type.Term(\"-\",[C[x],C[x].pair]),S]),delete C[x].pair;s.prepend([new e.type.State(a.goal.replace(new e.type.Term(\"=\",[S,f])),a.substitution,a)])}}},\"take/3\":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(e.type.is_variable(f)||e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_list(f))s.throw_error(e.error.type(\"list\",f,n.indicator));else if(!e.type.is_integer(c))s.throw_error(e.error.type(\"integer\",c,n.indicator));else if(!e.type.is_variable(p)&&!e.type.is_list(p))s.throw_error(e.error.type(\"list\",p,n.indicator));else{for(var h=c.value,E=[],C=f;h>0&&C.indicator===\"./2\";)E.push(C.args[0]),C=C.args[1],h--;if(h===0){for(var S=new e.type.Term(\"[]\"),h=E.length-1;h>=0;h--)S=new e.type.Term(\".\",[E[h],S]);s.prepend([new e.type.State(a.goal.replace(new e.type.Term(\"=\",[S,p])),a.substitution,a)])}}},\"drop/3\":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(e.type.is_variable(f)||e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_list(f))s.throw_error(e.error.type(\"list\",f,n.indicator));else if(!e.type.is_integer(c))s.throw_error(e.error.type(\"integer\",c,n.indicator));else if(!e.type.is_variable(p)&&!e.type.is_list(p))s.throw_error(e.error.type(\"list\",p,n.indicator));else{for(var h=c.value,E=[],C=f;h>0&&C.indicator===\"./2\";)E.push(C.args[0]),C=C.args[1],h--;h===0&&s.prepend([new e.type.State(a.goal.replace(new e.type.Term(\"=\",[C,p])),a.substitution,a)])}},\"reverse/2\":function(s,a,n){var c=n.args[0],f=n.args[1],p=e.type.is_instantiated_list(c),h=e.type.is_instantiated_list(f);if(e.type.is_variable(c)&&e.type.is_variable(f))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_variable(c)&&!e.type.is_fully_list(c))s.throw_error(e.error.type(\"list\",c,n.indicator));else if(!e.type.is_variable(f)&&!e.type.is_fully_list(f))s.throw_error(e.error.type(\"list\",f,n.indicator));else if(!p&&!h)s.throw_error(e.error.instantiation(n.indicator));else{for(var E=p?c:f,C=new e.type.Term(\"[]\",[]);E.indicator===\"./2\";)C=new e.type.Term(\".\",[E.args[0],C]),E=E.args[1];s.prepend([new e.type.State(a.goal.replace(new e.type.Term(\"=\",[C,p?f:c])),a.substitution,a)])}},\"list_to_set/2\":function(s,a,n){var c=n.args[0],f=n.args[1];if(e.type.is_variable(c))s.throw_error(e.error.instantiation(n.indicator));else{for(var p=c,h=[];p.indicator===\"./2\";)h.push(p.args[0]),p=p.args[1];if(e.type.is_variable(p))s.throw_error(e.error.instantiation(n.indicator));else if(!e.type.is_term(p)||p.indicator!==\"[]/0\")s.throw_error(e.error.type(\"list\",c,n.indicator));else{for(var E=[],C=new e.type.Term(\"[]\",[]),S,x=0;x<h.length;x++){S=!1;for(var I=0;I<E.length&&!S;I++)S=e.compare(h[x],E[I])===0;S||E.push(h[x])}for(x=E.length-1;x>=0;x--)C=new e.type.Term(\".\",[E[x],C]);s.prepend([new e.type.State(a.goal.replace(new e.type.Term(\"=\",[f,C])),a.substitution,a)])}}}}},r=[\"append/2\",\"append/3\",\"member/2\",\"permutation/2\",\"maplist/2\",\"maplist/3\",\"maplist/4\",\"maplist/5\",\"maplist/6\",\"maplist/7\",\"maplist/8\",\"include/3\",\"exclude/3\",\"foldl/4\",\"sum_list/2\",\"max_list/2\",\"min_list/2\",\"prod_list/2\",\"last/2\",\"prefix/2\",\"nth0/3\",\"nth1/3\",\"nth0/4\",\"nth1/4\",\"length/2\",\"replicate/3\",\"select/3\",\"sort/2\",\"msort/2\",\"keysort/2\",\"take/3\",\"drop/3\",\"reverse/2\",\"list_to_set/2\"];typeof H5<\"u\"?H5.exports=function(s){e=s,new e.type.Module(\"lists\",t(),r)}:new e.type.Module(\"lists\",t(),r)})(nat)});var sme=G($r=>{\"use strict\";var km=process.platform===\"win32\",j5=\"aes-256-cbc\",iat=\"sha256\",Yde=\"The current environment doesn't support interactive reading from TTY.\",ai=Ie(\"fs\"),Wde=process.binding(\"tty_wrap\").TTY,q5=Ie(\"child_process\"),W0=Ie(\"path\"),W5={prompt:\"> \",hideEchoBack:!1,mask:\"*\",limit:[],limitMessage:\"Input another, please.$<( [)limit(])>\",defaultInput:\"\",trueValue:[],falseValue:[],caseSensitive:!1,keepWhitespace:!1,encoding:\"utf8\",bufferSize:1024,print:void 0,history:!0,cd:!1,phContent:void 0,preCheck:void 0},Jp=\"none\",ef,MC,Vde=!1,q0,qT,G5,sat=0,z5=\"\",xm=[],WT,Kde=!1,V5=!1,sS=!1;function Jde(e){function t(r){return r.replace(/[^\\w\\u0080-\\uFFFF]/g,function(s){return\"#\"+s.charCodeAt(0)+\";\"})}return qT.concat(function(r){var s=[];return Object.keys(r).forEach(function(a){r[a]===\"boolean\"?e[a]&&s.push(\"--\"+a):r[a]===\"string\"&&e[a]&&s.push(\"--\"+a,t(e[a]))}),s}({display:\"string\",displayOnly:\"boolean\",keyIn:\"boolean\",hideEchoBack:\"boolean\",mask:\"string\",limit:\"string\",caseSensitive:\"boolean\"}))}function oat(e,t){function r(U){var Y,te=\"\",ie;for(G5=G5||Ie(\"os\").tmpdir();;){Y=W0.join(G5,U+te);try{ie=ai.openSync(Y,\"wx\")}catch(ue){if(ue.code===\"EEXIST\"){te++;continue}else throw ue}ai.closeSync(ie);break}return Y}var s,a,n,c={},f,p,h=r(\"readline-sync.stdout\"),E=r(\"readline-sync.stderr\"),C=r(\"readline-sync.exit\"),S=r(\"readline-sync.done\"),x=Ie(\"crypto\"),I,T,O;I=x.createHash(iat),I.update(\"\"+process.pid+sat+++Math.random()),O=I.digest(\"hex\"),T=x.createDecipher(j5,O),s=Jde(e),km?(a=process.env.ComSpec||\"cmd.exe\",process.env.Q='\"',n=[\"/V:ON\",\"/S\",\"/C\",\"(%Q%\"+a+\"%Q% /V:ON /S /C %Q%%Q%\"+q0+\"%Q%\"+s.map(function(U){return\" %Q%\"+U+\"%Q%\"}).join(\"\")+\" & (echo !ERRORLEVEL!)>%Q%\"+C+\"%Q%%Q%) 2>%Q%\"+E+\"%Q% |%Q%\"+process.execPath+\"%Q% %Q%\"+__dirname+\"\\\\encrypt.js%Q% %Q%\"+j5+\"%Q% %Q%\"+O+\"%Q% >%Q%\"+h+\"%Q% & (echo 1)>%Q%\"+S+\"%Q%\"]):(a=\"/bin/sh\",n=[\"-c\",'(\"'+q0+'\"'+s.map(function(U){return\" '\"+U.replace(/'/g,\"'\\\\''\")+\"'\"}).join(\"\")+'; echo $?>\"'+C+'\") 2>\"'+E+'\" |\"'+process.execPath+'\" \"'+__dirname+'/encrypt.js\" \"'+j5+'\" \"'+O+'\" >\"'+h+'\"; echo 1 >\"'+S+'\"']),sS&&sS(\"_execFileSync\",s);try{q5.spawn(a,n,t)}catch(U){c.error=new Error(U.message),c.error.method=\"_execFileSync - spawn\",c.error.program=a,c.error.args=n}for(;ai.readFileSync(S,{encoding:e.encoding}).trim()!==\"1\";);return(f=ai.readFileSync(C,{encoding:e.encoding}).trim())===\"0\"?c.input=T.update(ai.readFileSync(h,{encoding:\"binary\"}),\"hex\",e.encoding)+T.final(e.encoding):(p=ai.readFileSync(E,{encoding:e.encoding}).trim(),c.error=new Error(Yde+(p?`\n`+p:\"\")),c.error.method=\"_execFileSync\",c.error.program=a,c.error.args=n,c.error.extMessage=p,c.error.exitCode=+f),ai.unlinkSync(h),ai.unlinkSync(E),ai.unlinkSync(C),ai.unlinkSync(S),c}function aat(e){var t,r={},s,a={env:process.env,encoding:e.encoding};if(q0||(km?process.env.PSModulePath?(q0=\"powershell.exe\",qT=[\"-ExecutionPolicy\",\"Bypass\",\"-File\",__dirname+\"\\\\read.ps1\"]):(q0=\"cscript.exe\",qT=[\"//nologo\",__dirname+\"\\\\read.cs.js\"]):(q0=\"/bin/sh\",qT=[__dirname+\"/read.sh\"])),km&&!process.env.PSModulePath&&(a.stdio=[process.stdin]),q5.execFileSync){t=Jde(e),sS&&sS(\"execFileSync\",t);try{r.input=q5.execFileSync(q0,t,a)}catch(n){s=n.stderr?(n.stderr+\"\").trim():\"\",r.error=new Error(Yde+(s?`\n`+s:\"\")),r.error.method=\"execFileSync\",r.error.program=q0,r.error.args=t,r.error.extMessage=s,r.error.exitCode=n.status,r.error.code=n.code,r.error.signal=n.signal}}else r=oat(e,a);return r.error||(r.input=r.input.replace(/^\\s*'|'\\s*$/g,\"\"),e.display=\"\"),r}function Y5(e){var t=\"\",r=e.display,s=!e.display&&e.keyIn&&e.hideEchoBack&&!e.mask;function a(){var n=aat(e);if(n.error)throw n.error;return n.input}return V5&&V5(e),function(){var n,c,f;function p(){return n||(n=process.binding(\"fs\"),c=process.binding(\"constants\")),n}if(typeof Jp==\"string\")if(Jp=null,km){if(f=function(h){var E=h.replace(/^\\D+/,\"\").split(\".\"),C=0;return(E[0]=+E[0])&&(C+=E[0]*1e4),(E[1]=+E[1])&&(C+=E[1]*100),(E[2]=+E[2])&&(C+=E[2]),C}(process.version),!(f>=20302&&f<40204||f>=5e4&&f<50100||f>=50600&&f<60200)&&process.stdin.isTTY)process.stdin.pause(),Jp=process.stdin.fd,MC=process.stdin._handle;else try{Jp=p().open(\"CONIN$\",c.O_RDWR,parseInt(\"0666\",8)),MC=new Wde(Jp,!0)}catch{}if(process.stdout.isTTY)ef=process.stdout.fd;else{try{ef=ai.openSync(\"\\\\\\\\.\\\\CON\",\"w\")}catch{}if(typeof ef!=\"number\")try{ef=p().open(\"CONOUT$\",c.O_RDWR,parseInt(\"0666\",8))}catch{}}}else{if(process.stdin.isTTY){process.stdin.pause();try{Jp=ai.openSync(\"/dev/tty\",\"r\"),MC=process.stdin._handle}catch{}}else try{Jp=ai.openSync(\"/dev/tty\",\"r\"),MC=new Wde(Jp,!1)}catch{}if(process.stdout.isTTY)ef=process.stdout.fd;else try{ef=ai.openSync(\"/dev/tty\",\"w\")}catch{}}}(),function(){var n,c,f=!e.hideEchoBack&&!e.keyIn,p,h,E,C,S;WT=\"\";function x(I){return I===Vde?!0:MC.setRawMode(I)!==0?!1:(Vde=I,!0)}if(Kde||!MC||typeof ef!=\"number\"&&(e.display||!f)){t=a();return}if(e.display&&(ai.writeSync(ef,e.display),e.display=\"\"),!e.displayOnly){if(!x(!f)){t=a();return}for(h=e.keyIn?1:e.bufferSize,p=Buffer.allocUnsafe&&Buffer.alloc?Buffer.alloc(h):new Buffer(h),e.keyIn&&e.limit&&(c=new RegExp(\"[^\"+e.limit+\"]\",\"g\"+(e.caseSensitive?\"\":\"i\")));;){E=0;try{E=ai.readSync(Jp,p,0,h)}catch(I){if(I.code!==\"EOF\"){x(!1),t+=a();return}}if(E>0?(C=p.toString(e.encoding,0,E),WT+=C):(C=`\n`,WT+=\"\\0\"),C&&typeof(S=(C.match(/^(.*?)[\\r\\n]/)||[])[1])==\"string\"&&(C=S,n=!0),C&&(C=C.replace(/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]/g,\"\")),C&&c&&(C=C.replace(c,\"\")),C&&(f||(e.hideEchoBack?e.mask&&ai.writeSync(ef,new Array(C.length+1).join(e.mask)):ai.writeSync(ef,C)),t+=C),!e.keyIn&&n||e.keyIn&&t.length>=h)break}!f&&!s&&ai.writeSync(ef,`\n`),x(!1)}}(),e.print&&!s&&e.print(r+(e.displayOnly?\"\":(e.hideEchoBack?new Array(t.length+1).join(e.mask):t)+`\n`),e.encoding),e.displayOnly?\"\":z5=e.keepWhitespace||e.keyIn?t:t.trim()}function lat(e,t){var r=[];function s(a){a!=null&&(Array.isArray(a)?a.forEach(s):(!t||t(a))&&r.push(a))}return s(e),r}function Z5(e){return e.replace(/[\\x00-\\x7f]/g,function(t){return\"\\\\x\"+(\"00\"+t.charCodeAt().toString(16)).substr(-2)})}function $s(){var e=Array.prototype.slice.call(arguments),t,r;return e.length&&typeof e[0]==\"boolean\"&&(r=e.shift(),r&&(t=Object.keys(W5),e.unshift(W5))),e.reduce(function(s,a){return a==null||(a.hasOwnProperty(\"noEchoBack\")&&!a.hasOwnProperty(\"hideEchoBack\")&&(a.hideEchoBack=a.noEchoBack,delete a.noEchoBack),a.hasOwnProperty(\"noTrim\")&&!a.hasOwnProperty(\"keepWhitespace\")&&(a.keepWhitespace=a.noTrim,delete a.noTrim),r||(t=Object.keys(a)),t.forEach(function(n){var c;if(a.hasOwnProperty(n))switch(c=a[n],n){case\"mask\":case\"limitMessage\":case\"defaultInput\":case\"encoding\":c=c!=null?c+\"\":\"\",c&&n!==\"limitMessage\"&&(c=c.replace(/[\\r\\n]/g,\"\")),s[n]=c;break;case\"bufferSize\":!isNaN(c=parseInt(c,10))&&typeof c==\"number\"&&(s[n]=c);break;case\"displayOnly\":case\"keyIn\":case\"hideEchoBack\":case\"caseSensitive\":case\"keepWhitespace\":case\"history\":case\"cd\":s[n]=!!c;break;case\"limit\":case\"trueValue\":case\"falseValue\":s[n]=lat(c,function(f){var p=typeof f;return p===\"string\"||p===\"number\"||p===\"function\"||f instanceof RegExp}).map(function(f){return typeof f==\"string\"?f.replace(/[\\r\\n]/g,\"\"):f});break;case\"print\":case\"phContent\":case\"preCheck\":s[n]=typeof c==\"function\"?c:void 0;break;case\"prompt\":case\"display\":s[n]=c??\"\";break}})),s},{})}function K5(e,t,r){return t.some(function(s){var a=typeof s;return a===\"string\"?r?e===s:e.toLowerCase()===s.toLowerCase():a===\"number\"?parseFloat(e)===s:a===\"function\"?s(e):s instanceof RegExp?s.test(e):!1})}function X5(e,t){var r=W0.normalize(km?(process.env.HOMEDRIVE||\"\")+(process.env.HOMEPATH||\"\"):process.env.HOME||\"\").replace(/[\\/\\\\]+$/,\"\");return e=W0.normalize(e),t?e.replace(/^~(?=\\/|\\\\|$)/,r):e.replace(new RegExp(\"^\"+Z5(r)+\"(?=\\\\/|\\\\\\\\|$)\",km?\"i\":\"\"),\"~\")}function UC(e,t){var r=\"(?:\\\\(([\\\\s\\\\S]*?)\\\\))?(\\\\w+|.-.)(?:\\\\(([\\\\s\\\\S]*?)\\\\))?\",s=new RegExp(\"(\\\\$)?(\\\\$<\"+r+\">)\",\"g\"),a=new RegExp(\"(\\\\$)?(\\\\$\\\\{\"+r+\"\\\\})\",\"g\");function n(c,f,p,h,E,C){var S;return f||typeof(S=t(E))!=\"string\"?p:S?(h||\"\")+S+(C||\"\"):\"\"}return e.replace(s,n).replace(a,n)}function zde(e,t,r){var s,a=[],n=-1,c=0,f=\"\",p;function h(E,C){return C.length>3?(E.push(C[0]+\"...\"+C[C.length-1]),p=!0):C.length&&(E=E.concat(C)),E}return s=e.reduce(function(E,C){return E.concat((C+\"\").split(\"\"))},[]).reduce(function(E,C){var S,x;return t||(C=C.toLowerCase()),S=/^\\d$/.test(C)?1:/^[A-Z]$/.test(C)?2:/^[a-z]$/.test(C)?3:0,r&&S===0?f+=C:(x=C.charCodeAt(0),S&&S===n&&x===c+1?a.push(C):(E=h(E,a),a=[C],n=S),c=x),E},[]),s=h(s,a),f&&(s.push(f),p=!0),{values:s,suppressed:p}}function Zde(e,t){return e.join(e.length>2?\", \":t?\" / \":\"/\")}function Xde(e,t){var r,s,a={},n;if(t.phContent&&(r=t.phContent(e,t)),typeof r!=\"string\")switch(e){case\"hideEchoBack\":case\"mask\":case\"defaultInput\":case\"caseSensitive\":case\"keepWhitespace\":case\"encoding\":case\"bufferSize\":case\"history\":case\"cd\":r=t.hasOwnProperty(e)?typeof t[e]==\"boolean\"?t[e]?\"on\":\"off\":t[e]+\"\":\"\";break;case\"limit\":case\"trueValue\":case\"falseValue\":s=t[t.hasOwnProperty(e+\"Src\")?e+\"Src\":e],t.keyIn?(a=zde(s,t.caseSensitive),s=a.values):s=s.filter(function(c){var f=typeof c;return f===\"string\"||f===\"number\"}),r=Zde(s,a.suppressed);break;case\"limitCount\":case\"limitCountNotZero\":r=t[t.hasOwnProperty(\"limitSrc\")?\"limitSrc\":\"limit\"].length,r=r||e!==\"limitCountNotZero\"?r+\"\":\"\";break;case\"lastInput\":r=z5;break;case\"cwd\":case\"CWD\":case\"cwdHome\":r=process.cwd(),e===\"CWD\"?r=W0.basename(r):e===\"cwdHome\"&&(r=X5(r));break;case\"date\":case\"time\":case\"localeDate\":case\"localeTime\":r=new Date()[\"to\"+e.replace(/^./,function(c){return c.toUpperCase()})+\"String\"]();break;default:typeof(n=(e.match(/^history_m(\\d+)$/)||[])[1])==\"string\"&&(r=xm[xm.length-n]||\"\")}return r}function $de(e){var t=/^(.)-(.)$/.exec(e),r=\"\",s,a,n,c;if(!t)return null;for(s=t[1].charCodeAt(0),a=t[2].charCodeAt(0),c=s<a?1:-1,n=s;n!==a+c;n+=c)r+=String.fromCharCode(n);return r}function J5(e){var t=new RegExp(/(\\s*)(?:(\"|')(.*?)(?:\\2|$)|(\\S+))/g),r,s=\"\",a=[],n;for(e=e.trim();r=t.exec(e);)n=r[3]||r[4]||\"\",r[1]&&(a.push(s),s=\"\"),s+=n;return s&&a.push(s),a}function eme(e,t){return t.trueValue.length&&K5(e,t.trueValue,t.caseSensitive)?!0:t.falseValue.length&&K5(e,t.falseValue,t.caseSensitive)?!1:e}function tme(e){var t,r,s,a,n,c,f;function p(E){return Xde(E,e)}function h(E){e.display+=(/[^\\r\\n]$/.test(e.display)?`\n`:\"\")+E}for(e.limitSrc=e.limit,e.displaySrc=e.display,e.limit=\"\",e.display=UC(e.display+\"\",p);;){if(t=Y5(e),r=!1,s=\"\",e.defaultInput&&!t&&(t=e.defaultInput),e.history&&((a=/^\\s*\\!(?:\\!|-1)(:p)?\\s*$/.exec(t))?(n=xm[0]||\"\",a[1]?r=!0:t=n,h(n+`\n`),r||(e.displayOnly=!0,Y5(e),e.displayOnly=!1)):t&&t!==xm[xm.length-1]&&(xm=[t])),!r&&e.cd&&t)switch(c=J5(t),c[0].toLowerCase()){case\"cd\":if(c[1])try{process.chdir(X5(c[1],!0))}catch(E){h(E+\"\")}r=!0;break;case\"pwd\":h(process.cwd()),r=!0;break}if(!r&&e.preCheck&&(f=e.preCheck(t,e),t=f.res,f.forceNext&&(r=!0)),!r){if(!e.limitSrc.length||K5(t,e.limitSrc,e.caseSensitive))break;e.limitMessage&&(s=UC(e.limitMessage,p))}h((s?s+`\n`:\"\")+UC(e.displaySrc+\"\",p))}return eme(t,e)}$r._DBG_set_useExt=function(e){Kde=e};$r._DBG_set_checkOptions=function(e){V5=e};$r._DBG_set_checkMethod=function(e){sS=e};$r._DBG_clearHistory=function(){z5=\"\",xm=[]};$r.setDefaultOptions=function(e){return W5=$s(!0,e),$s(!0)};$r.question=function(e,t){return tme($s($s(!0,t),{display:e}))};$r.prompt=function(e){var t=$s(!0,e);return t.display=t.prompt,tme(t)};$r.keyIn=function(e,t){var r=$s($s(!0,t),{display:e,keyIn:!0,keepWhitespace:!0});return r.limitSrc=r.limit.filter(function(s){var a=typeof s;return a===\"string\"||a===\"number\"}).map(function(s){return UC(s+\"\",$de)}),r.limit=Z5(r.limitSrc.join(\"\")),[\"trueValue\",\"falseValue\"].forEach(function(s){r[s]=r[s].reduce(function(a,n){var c=typeof n;return c===\"string\"||c===\"number\"?a=a.concat((n+\"\").split(\"\")):a.push(n),a},[])}),r.display=UC(r.display+\"\",function(s){return Xde(s,r)}),eme(Y5(r),r)};$r.questionEMail=function(e,t){return e==null&&(e=\"Input e-mail address: \"),$r.question(e,$s({hideEchoBack:!1,limit:/^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,limitMessage:\"Input valid e-mail address, please.\",trueValue:null,falseValue:null},t,{keepWhitespace:!1,cd:!1}))};$r.questionNewPassword=function(e,t){var r,s,a,n=$s({hideEchoBack:!0,mask:\"*\",limitMessage:`It can include: $<charlist>\nAnd the length must be: $<length>`,trueValue:null,falseValue:null,caseSensitive:!0},t,{history:!1,cd:!1,phContent:function(x){return x===\"charlist\"?r.text:x===\"length\"?s+\"...\"+a:null}}),c,f,p,h,E,C,S;for(t=t||{},c=UC(t.charlist?t.charlist+\"\":\"$<!-~>\",$de),(isNaN(s=parseInt(t.min,10))||typeof s!=\"number\")&&(s=12),(isNaN(a=parseInt(t.max,10))||typeof a!=\"number\")&&(a=24),h=new RegExp(\"^[\"+Z5(c)+\"]{\"+s+\",\"+a+\"}$\"),r=zde([c],n.caseSensitive,!0),r.text=Zde(r.values,r.suppressed),f=t.confirmMessage!=null?t.confirmMessage:\"Reinput a same one to confirm it: \",p=t.unmatchMessage!=null?t.unmatchMessage:\"It differs from first one. Hit only the Enter key if you want to retry from first one.\",e==null&&(e=\"Input new password: \"),E=n.limitMessage;!S;)n.limit=h,n.limitMessage=E,C=$r.question(e,n),n.limit=[C,\"\"],n.limitMessage=p,S=$r.question(f,n);return C};function rme(e,t,r){var s;function a(n){return s=r(n),!isNaN(s)&&typeof s==\"number\"}return $r.question(e,$s({limitMessage:\"Input valid number, please.\"},t,{limit:a,cd:!1})),s}$r.questionInt=function(e,t){return rme(e,t,function(r){return parseInt(r,10)})};$r.questionFloat=function(e,t){return rme(e,t,parseFloat)};$r.questionPath=function(e,t){var r,s=\"\",a=$s({hideEchoBack:!1,limitMessage:`$<error(\n)>Input valid path, please.$<( Min:)min>$<( Max:)max>`,history:!0,cd:!0},t,{keepWhitespace:!1,limit:function(n){var c,f,p;n=X5(n,!0),s=\"\";function h(E){E.split(/\\/|\\\\/).reduce(function(C,S){var x=W0.resolve(C+=S+W0.sep);if(!ai.existsSync(x))ai.mkdirSync(x);else if(!ai.statSync(x).isDirectory())throw new Error(\"Non directory already exists: \"+x);return C},\"\")}try{if(c=ai.existsSync(n),r=c?ai.realpathSync(n):W0.resolve(n),!t.hasOwnProperty(\"exists\")&&!c||typeof t.exists==\"boolean\"&&t.exists!==c)return s=(c?\"Already exists\":\"No such file or directory\")+\": \"+r,!1;if(!c&&t.create&&(t.isDirectory?h(r):(h(W0.dirname(r)),ai.closeSync(ai.openSync(r,\"w\"))),r=ai.realpathSync(r)),c&&(t.min||t.max||t.isFile||t.isDirectory)){if(f=ai.statSync(r),t.isFile&&!f.isFile())return s=\"Not file: \"+r,!1;if(t.isDirectory&&!f.isDirectory())return s=\"Not directory: \"+r,!1;if(t.min&&f.size<+t.min||t.max&&f.size>+t.max)return s=\"Size \"+f.size+\" is out of range: \"+r,!1}if(typeof t.validate==\"function\"&&(p=t.validate(r))!==!0)return typeof p==\"string\"&&(s=p),!1}catch(E){return s=E+\"\",!1}return!0},phContent:function(n){return n===\"error\"?s:n!==\"min\"&&n!==\"max\"?null:t.hasOwnProperty(n)?t[n]+\"\":\"\"}});return t=t||{},e==null&&(e='Input path (you can \"cd\" and \"pwd\"): '),$r.question(e,a),r};function nme(e,t){var r={},s={};return typeof e==\"object\"?(Object.keys(e).forEach(function(a){typeof e[a]==\"function\"&&(s[t.caseSensitive?a:a.toLowerCase()]=e[a])}),r.preCheck=function(a){var n;return r.args=J5(a),n=r.args[0]||\"\",t.caseSensitive||(n=n.toLowerCase()),r.hRes=n!==\"_\"&&s.hasOwnProperty(n)?s[n].apply(a,r.args.slice(1)):s.hasOwnProperty(\"_\")?s._.apply(a,r.args):null,{res:a,forceNext:!1}},s.hasOwnProperty(\"_\")||(r.limit=function(){var a=r.args[0]||\"\";return t.caseSensitive||(a=a.toLowerCase()),s.hasOwnProperty(a)})):r.preCheck=function(a){return r.args=J5(a),r.hRes=typeof e==\"function\"?e.apply(a,r.args):!0,{res:a,forceNext:!1}},r}$r.promptCL=function(e,t){var r=$s({hideEchoBack:!1,limitMessage:\"Requested command is not available.\",caseSensitive:!1,history:!0},t),s=nme(e,r);return r.limit=s.limit,r.preCheck=s.preCheck,$r.prompt(r),s.args};$r.promptLoop=function(e,t){for(var r=$s({hideEchoBack:!1,trueValue:null,falseValue:null,caseSensitive:!1,history:!0},t);!e($r.prompt(r)););};$r.promptCLLoop=function(e,t){var r=$s({hideEchoBack:!1,limitMessage:\"Requested command is not available.\",caseSensitive:!1,history:!0},t),s=nme(e,r);for(r.limit=s.limit,r.preCheck=s.preCheck;$r.prompt(r),!s.hRes;);};$r.promptSimShell=function(e){return $r.prompt($s({hideEchoBack:!1,history:!0},e,{prompt:function(){return km?\"$<cwd>>\":(process.env.USER||\"\")+(process.env.HOSTNAME?\"@\"+process.env.HOSTNAME.replace(/\\..*$/,\"\"):\"\")+\":$<cwdHome>$ \"}()}))};function ime(e,t,r){var s;return e==null&&(e=\"Are you sure? \"),(!t||t.guide!==!1)&&(e+=\"\")&&(e=e.replace(/\\s*:?\\s*$/,\"\")+\" [y/n]: \"),s=$r.keyIn(e,$s(t,{hideEchoBack:!1,limit:r,trueValue:\"y\",falseValue:\"n\",caseSensitive:!1})),typeof s==\"boolean\"?s:\"\"}$r.keyInYN=function(e,t){return ime(e,t)};$r.keyInYNStrict=function(e,t){return ime(e,t,\"yn\")};$r.keyInPause=function(e,t){e==null&&(e=\"Continue...\"),(!t||t.guide!==!1)&&(e+=\"\")&&(e=e.replace(/\\s+$/,\"\")+\" (Hit any key)\"),$r.keyIn(e,$s({limit:null},t,{hideEchoBack:!0,mask:\"\"}))};$r.keyInSelect=function(e,t,r){var s=$s({hideEchoBack:!1},r,{trueValue:null,falseValue:null,caseSensitive:!1,phContent:function(p){return p===\"itemsCount\"?e.length+\"\":p===\"firstItem\"?(e[0]+\"\").trim():p===\"lastItem\"?(e[e.length-1]+\"\").trim():null}}),a=\"\",n={},c=49,f=`\n`;if(!Array.isArray(e)||!e.length||e.length>35)throw\"`items` must be Array (max length: 35).\";return e.forEach(function(p,h){var E=String.fromCharCode(c);a+=E,n[E]=h,f+=\"[\"+E+\"] \"+(p+\"\").trim()+`\n`,c=c===57?97:c+1}),(!r||r.cancel!==!1)&&(a+=\"0\",n[0]=-1,f+=\"[0] \"+(r&&r.cancel!=null&&typeof r.cancel!=\"boolean\"?(r.cancel+\"\").trim():\"CANCEL\")+`\n`),s.limit=a,f+=`\n`,t==null&&(t=\"Choose one from list: \"),(t+=\"\")&&((!r||r.guide!==!1)&&(t=t.replace(/\\s*:?\\s*$/,\"\")+\" [$<limit>]: \"),f+=t),n[$r.keyIn(f,s).toLowerCase()]};$r.getRawInput=function(){return WT};function oS(e,t){var r;return t.length&&(r={},r[e]=t[0]),$r.setDefaultOptions(r)[e]}$r.setPrint=function(){return oS(\"print\",arguments)};$r.setPrompt=function(){return oS(\"prompt\",arguments)};$r.setEncoding=function(){return oS(\"encoding\",arguments)};$r.setMask=function(){return oS(\"mask\",arguments)};$r.setBufferSize=function(){return oS(\"bufferSize\",arguments)}});var $5=G((Vqt,tc)=>{(function(){var e={major:0,minor:2,patch:66,status:\"beta\"};tau_file_system={files:{},open:function(w,b,y){var F=tau_file_system.files[w];if(!F){if(y===\"read\")return null;F={path:w,text:\"\",type:b,get:function(z,Z){return Z===this.text.length||Z>this.text.length?\"end_of_file\":this.text.substring(Z,Z+z)},put:function(z,Z){return Z===\"end_of_file\"?(this.text+=z,!0):Z===\"past_end_of_file\"?null:(this.text=this.text.substring(0,Z)+z+this.text.substring(Z+z.length),!0)},get_byte:function(z){if(z===\"end_of_stream\")return-1;var Z=Math.floor(z/2);if(this.text.length<=Z)return-1;var $=n(this.text[Math.floor(z/2)],0);return z%2===0?$&255:$/256>>>0},put_byte:function(z,Z){var $=Z===\"end_of_stream\"?this.text.length:Math.floor(Z/2);if(this.text.length<$)return null;var se=this.text.length===$?-1:n(this.text[Math.floor(Z/2)],0);return Z%2===0?(se=se/256>>>0,se=(se&255)<<8|z&255):(se=se&255,se=(z&255)<<8|se&255),this.text.length===$?this.text+=c(se):this.text=this.text.substring(0,$)+c(se)+this.text.substring($+1),!0},flush:function(){return!0},close:function(){var z=tau_file_system.files[this.path];return z?!0:null}},tau_file_system.files[w]=F}return y===\"write\"&&(F.text=\"\"),F}},tau_user_input={buffer:\"\",get:function(w,b){for(var y;tau_user_input.buffer.length<w;)y=window.prompt(),y&&(tau_user_input.buffer+=y);return y=tau_user_input.buffer.substr(0,w),tau_user_input.buffer=tau_user_input.buffer.substr(w),y}},tau_user_output={put:function(w,b){return console.log(w),!0},flush:function(){return!0}},nodejs_file_system={open:function(w,b,y){var F=Ie(\"fs\"),z=F.openSync(w,y[0]);return y===\"read\"&&!F.existsSync(w)?null:{get:function(Z,$){var se=new Buffer(Z);return F.readSync(z,se,0,Z,$),se.toString()},put:function(Z,$){var se=Buffer.from(Z);if($===\"end_of_file\")F.writeSync(z,se);else{if($===\"past_end_of_file\")return null;F.writeSync(z,se,0,se.length,$)}return!0},get_byte:function(Z){return null},put_byte:function(Z,$){return null},flush:function(){return!0},close:function(){return F.closeSync(z),!0}}}},nodejs_user_input={buffer:\"\",get:function(w,b){for(var y,F=sme();nodejs_user_input.buffer.length<w;)nodejs_user_input.buffer+=F.question();return y=nodejs_user_input.buffer.substr(0,w),nodejs_user_input.buffer=nodejs_user_input.buffer.substr(w),y}},nodejs_user_output={put:function(w,b){return process.stdout.write(w),!0},flush:function(){return!0}};var t;Array.prototype.indexOf?t=function(w,b){return w.indexOf(b)}:t=function(w,b){for(var y=w.length,F=0;F<y;F++)if(b===w[F])return F;return-1};var r=function(w,b){if(w.length!==0){for(var y=w[0],F=w.length,z=1;z<F;z++)y=b(y,w[z]);return y}},s;Array.prototype.map?s=function(w,b){return w.map(b)}:s=function(w,b){for(var y=[],F=w.length,z=0;z<F;z++)y.push(b(w[z]));return y};var a;Array.prototype.filter?a=function(w,b){return w.filter(b)}:a=function(w,b){for(var y=[],F=w.length,z=0;z<F;z++)b(w[z])&&y.push(w[z]);return y};var n;String.prototype.codePointAt?n=function(w,b){return w.codePointAt(b)}:n=function(w,b){return w.charCodeAt(b)};var c;String.fromCodePoint?c=function(){return String.fromCodePoint.apply(null,arguments)}:c=function(){return String.fromCharCode.apply(null,arguments)};var f=0,p=1,h=/(\\\\a)|(\\\\b)|(\\\\f)|(\\\\n)|(\\\\r)|(\\\\t)|(\\\\v)|\\\\x([0-9a-fA-F]+)\\\\|\\\\([0-7]+)\\\\|(\\\\\\\\)|(\\\\')|('')|(\\\\\")|(\\\\`)|(\\\\.)|(.)/g,E={\"\\\\a\":7,\"\\\\b\":8,\"\\\\f\":12,\"\\\\n\":10,\"\\\\r\":13,\"\\\\t\":9,\"\\\\v\":11};function C(w){var b=[],y=!1;return w.replace(h,function(F,z,Z,$,se,xe,Fe,ut,Ct,qt,ir,Pt,dn,Pr,Ir,Or,on){switch(!0){case Ct!==void 0:return b.push(parseInt(Ct,16)),\"\";case qt!==void 0:return b.push(parseInt(qt,8)),\"\";case ir!==void 0:case Pt!==void 0:case dn!==void 0:case Pr!==void 0:case Ir!==void 0:return b.push(n(F.substr(1),0)),\"\";case on!==void 0:return b.push(n(on,0)),\"\";case Or!==void 0:y=!0;default:return b.push(E[F]),\"\"}}),y?null:b}function S(w,b){var y=\"\";if(w.length<2)return w;try{w=w.replace(/\\\\([0-7]+)\\\\/g,function($,se){return c(parseInt(se,8))}),w=w.replace(/\\\\x([0-9a-fA-F]+)\\\\/g,function($,se){return c(parseInt(se,16))})}catch{return null}for(var F=0;F<w.length;F++){var z=w.charAt(F),Z=w.charAt(F+1);if(z===b&&Z===b)F++,y+=b;else if(z===\"\\\\\")if([\"a\",\"b\",\"f\",\"n\",\"r\",\"t\",\"v\",\"'\",'\"',\"\\\\\",\"a\",\"\\b\",\"\\f\",`\n`,\"\\r\",\"\t\",\"\\v\"].indexOf(Z)!==-1)switch(F+=1,Z){case\"a\":y+=\"a\";break;case\"b\":y+=\"\\b\";break;case\"f\":y+=\"\\f\";break;case\"n\":y+=`\n`;break;case\"r\":y+=\"\\r\";break;case\"t\":y+=\"\t\";break;case\"v\":y+=\"\\v\";break;case\"'\":y+=\"'\";break;case'\"':y+='\"';break;case\"\\\\\":y+=\"\\\\\";break}else return null;else y+=z}return y}function x(w){for(var b=\"\",y=0;y<w.length;y++)switch(w.charAt(y)){case\"'\":b+=\"\\\\'\";break;case\"\\\\\":b+=\"\\\\\\\\\";break;case\"\\b\":b+=\"\\\\b\";break;case\"\\f\":b+=\"\\\\f\";break;case`\n`:b+=\"\\\\n\";break;case\"\\r\":b+=\"\\\\r\";break;case\"\t\":b+=\"\\\\t\";break;case\"\\v\":b+=\"\\\\v\";break;default:b+=w.charAt(y);break}return b}function I(w){var b=w.substr(2);switch(w.substr(0,2).toLowerCase()){case\"0x\":return parseInt(b,16);case\"0b\":return parseInt(b,2);case\"0o\":return parseInt(b,8);case\"0'\":return C(b)[0];default:return parseFloat(w)}}var T={whitespace:/^\\s*(?:(?:%.*)|(?:\\/\\*(?:\\n|\\r|.)*?\\*\\/)|(?:\\s+))\\s*/,variable:/^(?:[A-Z_][a-zA-Z0-9_]*)/,atom:/^(\\!|,|;|[a-z][0-9a-zA-Z_]*|[#\\$\\&\\*\\+\\-\\.\\/\\:\\<\\=\\>\\?\\@\\^\\~\\\\]+|'(?:[^']*?(?:\\\\(?:x?\\d+)?\\\\)*(?:'')*(?:\\\\')*)*')/,number:/^(?:0o[0-7]+|0x[0-9a-fA-F]+|0b[01]+|0'(?:''|\\\\[abfnrtv\\\\'\"`]|\\\\x?\\d+\\\\|[^\\\\])|\\d+(?:\\.\\d+(?:[eE][+-]?\\d+)?)?)/,string:/^(?:\"([^\"]|\"\"|\\\\\")*\"|`([^`]|``|\\\\`)*`)/,l_brace:/^(?:\\[)/,r_brace:/^(?:\\])/,l_bracket:/^(?:\\{)/,r_bracket:/^(?:\\})/,bar:/^(?:\\|)/,l_paren:/^(?:\\()/,r_paren:/^(?:\\))/};function O(w,b){return w.get_flag(\"char_conversion\").id===\"on\"?b.replace(/./g,function(y){return w.get_char_conversion(y)}):b}function U(w){this.thread=w,this.text=\"\",this.tokens=[]}U.prototype.set_last_tokens=function(w){return this.tokens=w},U.prototype.new_text=function(w){this.text=w,this.tokens=[]},U.prototype.get_tokens=function(w){var b,y=0,F=0,z=0,Z=[],$=!1;if(w){var se=this.tokens[w-1];y=se.len,b=O(this.thread,this.text.substr(se.len)),F=se.line,z=se.start}else b=this.text;if(/^\\s*$/.test(b))return null;for(;b!==\"\";){var xe=[],Fe=!1;if(/^\\n/.exec(b)!==null){F++,z=0,y++,b=b.replace(/\\n/,\"\"),$=!0;continue}for(var ut in T)if(T.hasOwnProperty(ut)){var Ct=T[ut].exec(b);Ct&&xe.push({value:Ct[0],name:ut,matches:Ct})}if(!xe.length)return this.set_last_tokens([{value:b,matches:[],name:\"lexical\",line:F,start:z}]);var se=r(xe,function(Pr,Ir){return Pr.value.length>=Ir.value.length?Pr:Ir});switch(se.start=z,se.line=F,b=b.replace(se.value,\"\"),z+=se.value.length,y+=se.value.length,se.name){case\"atom\":se.raw=se.value,se.value.charAt(0)===\"'\"&&(se.value=S(se.value.substr(1,se.value.length-2),\"'\"),se.value===null&&(se.name=\"lexical\",se.value=\"unknown escape sequence\"));break;case\"number\":se.float=se.value.substring(0,2)!==\"0x\"&&se.value.match(/[.eE]/)!==null&&se.value!==\"0'.\",se.value=I(se.value),se.blank=Fe;break;case\"string\":var qt=se.value.charAt(0);se.value=S(se.value.substr(1,se.value.length-2),qt),se.value===null&&(se.name=\"lexical\",se.value=\"unknown escape sequence\");break;case\"whitespace\":var ir=Z[Z.length-1];ir&&(ir.space=!0),Fe=!0;continue;case\"r_bracket\":Z.length>0&&Z[Z.length-1].name===\"l_bracket\"&&(se=Z.pop(),se.name=\"atom\",se.value=\"{}\",se.raw=\"{}\",se.space=!1);break;case\"r_brace\":Z.length>0&&Z[Z.length-1].name===\"l_brace\"&&(se=Z.pop(),se.name=\"atom\",se.value=\"[]\",se.raw=\"[]\",se.space=!1);break}se.len=y,Z.push(se),Fe=!1}var Pt=this.set_last_tokens(Z);return Pt.length===0?null:Pt};function Y(w,b,y,F,z){if(!b[y])return{type:f,value:P.error.syntax(b[y-1],\"expression expected\",!0)};var Z;if(F===\"0\"){var $=b[y];switch($.name){case\"number\":return{type:p,len:y+1,value:new P.type.Num($.value,$.float)};case\"variable\":return{type:p,len:y+1,value:new P.type.Var($.value)};case\"string\":var se;switch(w.get_flag(\"double_quotes\").id){case\"atom\":se=new _($.value,[]);break;case\"codes\":se=new _(\"[]\",[]);for(var xe=$.value.length-1;xe>=0;xe--)se=new _(\".\",[new P.type.Num(n($.value,xe),!1),se]);break;case\"chars\":se=new _(\"[]\",[]);for(var xe=$.value.length-1;xe>=0;xe--)se=new _(\".\",[new P.type.Term($.value.charAt(xe),[]),se]);break}return{type:p,len:y+1,value:se};case\"l_paren\":var Pt=Y(w,b,y+1,w.__get_max_priority(),!0);return Pt.type!==p?Pt:b[Pt.len]&&b[Pt.len].name===\"r_paren\"?(Pt.len++,Pt):{type:f,derived:!0,value:P.error.syntax(b[Pt.len]?b[Pt.len]:b[Pt.len-1],\") or operator expected\",!b[Pt.len])};case\"l_bracket\":var Pt=Y(w,b,y+1,w.__get_max_priority(),!0);return Pt.type!==p?Pt:b[Pt.len]&&b[Pt.len].name===\"r_bracket\"?(Pt.len++,Pt.value=new _(\"{}\",[Pt.value]),Pt):{type:f,derived:!0,value:P.error.syntax(b[Pt.len]?b[Pt.len]:b[Pt.len-1],\"} or operator expected\",!b[Pt.len])}}var Fe=te(w,b,y,z);return Fe.type===p||Fe.derived||(Fe=ie(w,b,y),Fe.type===p||Fe.derived)?Fe:{type:f,derived:!1,value:P.error.syntax(b[y],\"unexpected token\")}}var ut=w.__get_max_priority(),Ct=w.__get_next_priority(F),qt=y;if(b[y].name===\"atom\"&&b[y+1]&&(b[y].space||b[y+1].name!==\"l_paren\")){var $=b[y++],ir=w.__lookup_operator_classes(F,$.value);if(ir&&ir.indexOf(\"fy\")>-1){var Pt=Y(w,b,y,F,z);if(Pt.type!==f)return $.value===\"-\"&&!$.space&&P.type.is_number(Pt.value)?{value:new P.type.Num(-Pt.value.value,Pt.value.is_float),len:Pt.len,type:p}:{value:new P.type.Term($.value,[Pt.value]),len:Pt.len,type:p};Z=Pt}else if(ir&&ir.indexOf(\"fx\")>-1){var Pt=Y(w,b,y,Ct,z);if(Pt.type!==f)return{value:new P.type.Term($.value,[Pt.value]),len:Pt.len,type:p};Z=Pt}}y=qt;var Pt=Y(w,b,y,Ct,z);if(Pt.type===p){y=Pt.len;var $=b[y];if(b[y]&&(b[y].name===\"atom\"&&w.__lookup_operator_classes(F,$.value)||b[y].name===\"bar\"&&w.__lookup_operator_classes(F,\"|\"))){var dn=Ct,Pr=F,ir=w.__lookup_operator_classes(F,$.value);if(ir.indexOf(\"xf\")>-1)return{value:new P.type.Term($.value,[Pt.value]),len:++Pt.len,type:p};if(ir.indexOf(\"xfx\")>-1){var Ir=Y(w,b,y+1,dn,z);return Ir.type===p?{value:new P.type.Term($.value,[Pt.value,Ir.value]),len:Ir.len,type:p}:(Ir.derived=!0,Ir)}else if(ir.indexOf(\"xfy\")>-1){var Ir=Y(w,b,y+1,Pr,z);return Ir.type===p?{value:new P.type.Term($.value,[Pt.value,Ir.value]),len:Ir.len,type:p}:(Ir.derived=!0,Ir)}else if(Pt.type!==f)for(;;){y=Pt.len;var $=b[y];if($&&$.name===\"atom\"&&w.__lookup_operator_classes(F,$.value)){var ir=w.__lookup_operator_classes(F,$.value);if(ir.indexOf(\"yf\")>-1)Pt={value:new P.type.Term($.value,[Pt.value]),len:++y,type:p};else if(ir.indexOf(\"yfx\")>-1){var Ir=Y(w,b,++y,dn,z);if(Ir.type===f)return Ir.derived=!0,Ir;y=Ir.len,Pt={value:new P.type.Term($.value,[Pt.value,Ir.value]),len:y,type:p}}else break}else break}}else Z={type:f,value:P.error.syntax(b[Pt.len-1],\"operator expected\")};return Pt}return Pt}function te(w,b,y,F){if(!b[y]||b[y].name===\"atom\"&&b[y].raw===\".\"&&!F&&(b[y].space||!b[y+1]||b[y+1].name!==\"l_paren\"))return{type:f,derived:!1,value:P.error.syntax(b[y-1],\"unfounded token\")};var z=b[y],Z=[];if(b[y].name===\"atom\"&&b[y].raw!==\",\"){if(y++,b[y-1].space)return{type:p,len:y,value:new P.type.Term(z.value,Z)};if(b[y]&&b[y].name===\"l_paren\"){if(b[y+1]&&b[y+1].name===\"r_paren\")return{type:f,derived:!0,value:P.error.syntax(b[y+1],\"argument expected\")};var $=Y(w,b,++y,\"999\",!0);if($.type===f)return $.derived?$:{type:f,derived:!0,value:P.error.syntax(b[y]?b[y]:b[y-1],\"argument expected\",!b[y])};for(Z.push($.value),y=$.len;b[y]&&b[y].name===\"atom\"&&b[y].value===\",\";){if($=Y(w,b,y+1,\"999\",!0),$.type===f)return $.derived?$:{type:f,derived:!0,value:P.error.syntax(b[y+1]?b[y+1]:b[y],\"argument expected\",!b[y+1])};Z.push($.value),y=$.len}if(b[y]&&b[y].name===\"r_paren\")y++;else return{type:f,derived:!0,value:P.error.syntax(b[y]?b[y]:b[y-1],\", or ) expected\",!b[y])}}return{type:p,len:y,value:new P.type.Term(z.value,Z)}}return{type:f,derived:!1,value:P.error.syntax(b[y],\"term expected\")}}function ie(w,b,y){if(!b[y])return{type:f,derived:!1,value:P.error.syntax(b[y-1],\"[ expected\")};if(b[y]&&b[y].name===\"l_brace\"){var F=Y(w,b,++y,\"999\",!0),z=[F.value],Z=void 0;if(F.type===f)return b[y]&&b[y].name===\"r_brace\"?{type:p,len:y+1,value:new P.type.Term(\"[]\",[])}:{type:f,derived:!0,value:P.error.syntax(b[y],\"] expected\")};for(y=F.len;b[y]&&b[y].name===\"atom\"&&b[y].value===\",\";){if(F=Y(w,b,y+1,\"999\",!0),F.type===f)return F.derived?F:{type:f,derived:!0,value:P.error.syntax(b[y+1]?b[y+1]:b[y],\"argument expected\",!b[y+1])};z.push(F.value),y=F.len}var $=!1;if(b[y]&&b[y].name===\"bar\"){if($=!0,F=Y(w,b,y+1,\"999\",!0),F.type===f)return F.derived?F:{type:f,derived:!0,value:P.error.syntax(b[y+1]?b[y+1]:b[y],\"argument expected\",!b[y+1])};Z=F.value,y=F.len}return b[y]&&b[y].name===\"r_brace\"?{type:p,len:y+1,value:g(z,Z)}:{type:f,derived:!0,value:P.error.syntax(b[y]?b[y]:b[y-1],$?\"] expected\":\", or | or ] expected\",!b[y])}}return{type:f,derived:!1,value:P.error.syntax(b[y],\"list expected\")}}function ue(w,b,y){var F=b[y].line,z=Y(w,b,y,w.__get_max_priority(),!1),Z=null,$;if(z.type!==f)if(y=z.len,b[y]&&b[y].name===\"atom\"&&b[y].raw===\".\")if(y++,P.type.is_term(z.value)){if(z.value.indicator===\":-/2\"?(Z=new P.type.Rule(z.value.args[0],Ee(z.value.args[1])),$={value:Z,len:y,type:p}):z.value.indicator===\"-->/2\"?(Z=Ae(new P.type.Rule(z.value.args[0],z.value.args[1]),w),Z.body=Ee(Z.body),$={value:Z,len:y,type:P.type.is_rule(Z)?p:f}):(Z=new P.type.Rule(z.value,null),$={value:Z,len:y,type:p}),Z){var se=Z.singleton_variables();se.length>0&&w.throw_warning(P.warning.singleton(se,Z.head.indicator,F))}return $}else return{type:f,value:P.error.syntax(b[y],\"callable expected\")};else return{type:f,value:P.error.syntax(b[y]?b[y]:b[y-1],\". or operator expected\")};return z}function ae(w,b,y){y=y||{},y.from=y.from?y.from:\"$tau-js\",y.reconsult=y.reconsult!==void 0?y.reconsult:!0;var F=new U(w),z={},Z;F.new_text(b);var $=0,se=F.get_tokens($);do{if(se===null||!se[$])break;var xe=ue(w,se,$);if(xe.type===f)return new _(\"throw\",[xe.value]);if(xe.value.body===null&&xe.value.head.indicator===\"?-/1\"){var Fe=new ct(w.session);Fe.add_goal(xe.value.head.args[0]),Fe.answer(function(Ct){P.type.is_error(Ct)?w.throw_warning(Ct.args[0]):(Ct===!1||Ct===null)&&w.throw_warning(P.warning.failed_goal(xe.value.head.args[0],xe.len))}),$=xe.len;var ut=!0}else if(xe.value.body===null&&xe.value.head.indicator===\":-/1\"){var ut=w.run_directive(xe.value.head.args[0]);$=xe.len,xe.value.head.args[0].indicator===\"char_conversion/2\"&&(se=F.get_tokens($),$=0)}else{Z=xe.value.head.indicator,y.reconsult!==!1&&z[Z]!==!0&&!w.is_multifile_predicate(Z)&&(w.session.rules[Z]=a(w.session.rules[Z]||[],function(qt){return qt.dynamic}),z[Z]=!0);var ut=w.add_rule(xe.value,y);$=xe.len}if(!ut)return ut}while(!0);return!0}function de(w,b){var y=new U(w);y.new_text(b);var F=0;do{var z=y.get_tokens(F);if(z===null)break;var Z=Y(w,z,0,w.__get_max_priority(),!1);if(Z.type!==f){var $=Z.len,se=$;if(z[$]&&z[$].name===\"atom\"&&z[$].raw===\".\")w.add_goal(Ee(Z.value));else{var xe=z[$];return new _(\"throw\",[P.error.syntax(xe||z[$-1],\". or operator expected\",!xe)])}F=Z.len+1}else return new _(\"throw\",[Z.value])}while(!0);return!0}function Ae(w,b){w=w.rename(b);var y=b.next_free_variable(),F=Ce(w.body,y,b);return F.error?F.value:(w.body=F.value,w.head.args=w.head.args.concat([y,F.variable]),w.head=new _(w.head.id,w.head.args),w)}function Ce(w,b,y){var F;if(P.type.is_term(w)&&w.indicator===\"!/0\")return{value:w,variable:b,error:!1};if(P.type.is_term(w)&&w.indicator===\",/2\"){var z=Ce(w.args[0],b,y);if(z.error)return z;var Z=Ce(w.args[1],z.variable,y);return Z.error?Z:{value:new _(\",\",[z.value,Z.value]),variable:Z.variable,error:!1}}else{if(P.type.is_term(w)&&w.indicator===\"{}/1\")return{value:w.args[0],variable:b,error:!1};if(P.type.is_empty_list(w))return{value:new _(\"true\",[]),variable:b,error:!1};if(P.type.is_list(w)){F=y.next_free_variable();for(var $=w,se;$.indicator===\"./2\";)se=$,$=$.args[1];return P.type.is_variable($)?{value:P.error.instantiation(\"DCG\"),variable:b,error:!0}:P.type.is_empty_list($)?(se.args[1]=F,{value:new _(\"=\",[b,w]),variable:F,error:!1}):{value:P.error.type(\"list\",w,\"DCG\"),variable:b,error:!0}}else return P.type.is_callable(w)?(F=y.next_free_variable(),w.args=w.args.concat([b,F]),w=new _(w.id,w.args),{value:w,variable:F,error:!1}):{value:P.error.type(\"callable\",w,\"DCG\"),variable:b,error:!0}}}function Ee(w){return P.type.is_variable(w)?new _(\"call\",[w]):P.type.is_term(w)&&[\",/2\",\";/2\",\"->/2\"].indexOf(w.indicator)!==-1?new _(w.id,[Ee(w.args[0]),Ee(w.args[1])]):w}function g(w,b){for(var y=b||new P.type.Term(\"[]\",[]),F=w.length-1;F>=0;F--)y=new P.type.Term(\".\",[w[F],y]);return y}function Se(w,b){for(var y=w.length-1;y>=0;y--)w[y]===b&&w.splice(y,1)}function Be(w){for(var b={},y=[],F=0;F<w.length;F++)w[F]in b||(y.push(w[F]),b[w[F]]=!0);return y}function me(w,b,y,F){if(w.session.rules[y]!==null){for(var z=0;z<w.session.rules[y].length;z++)if(w.session.rules[y][z]===F){w.session.rules[y].splice(z,1),w.success(b);break}}}function ce(w){return function(b,y,F){var z=F.args[0],Z=F.args.slice(1,w);if(P.type.is_variable(z))b.throw_error(P.error.instantiation(b.level));else if(!P.type.is_callable(z))b.throw_error(P.error.type(\"callable\",z,b.level));else{var $=new _(z.id,z.args.concat(Z));b.prepend([new be(y.goal.replace($),y.substitution,y)])}}}function X(w){for(var b=w.length-1;b>=0;b--)if(w.charAt(b)===\"/\")return new _(\"/\",[new _(w.substring(0,b)),new Qe(parseInt(w.substring(b+1)),!1)])}function De(w){this.id=w}function Qe(w,b){this.is_float=b!==void 0?b:parseInt(w)!==w,this.value=this.is_float?w:parseInt(w)}var it=0;function _(w,b,y){this.ref=y||++it,this.id=w,this.args=b||[],this.indicator=w+\"/\"+this.args.length}var tt=0;function Ne(w,b,y,F,z,Z){this.id=tt++,this.stream=w,this.mode=b,this.alias=y,this.type=F!==void 0?F:\"text\",this.reposition=z!==void 0?z:!0,this.eof_action=Z!==void 0?Z:\"eof_code\",this.position=this.mode===\"append\"?\"end_of_stream\":0,this.output=this.mode===\"write\"||this.mode===\"append\",this.input=this.mode===\"read\"}function ke(w){w=w||{},this.links=w}function be(w,b,y){b=b||new ke,y=y||null,this.goal=w,this.substitution=b,this.parent=y}function je(w,b,y){this.head=w,this.body=b,this.dynamic=y||!1}function Re(w){w=w===void 0||w<=0?1e3:w,this.rules={},this.src_predicates={},this.rename=0,this.modules=[],this.thread=new ct(this),this.total_threads=1,this.renamed_variables={},this.public_predicates={},this.multifile_predicates={},this.limit=w,this.streams={user_input:new Ne(typeof tc<\"u\"&&tc.exports?nodejs_user_input:tau_user_input,\"read\",\"user_input\",\"text\",!1,\"reset\"),user_output:new Ne(typeof tc<\"u\"&&tc.exports?nodejs_user_output:tau_user_output,\"write\",\"user_output\",\"text\",!1,\"eof_code\")},this.file_system=typeof tc<\"u\"&&tc.exports?nodejs_file_system:tau_file_system,this.standard_input=this.streams.user_input,this.standard_output=this.streams.user_output,this.current_input=this.streams.user_input,this.current_output=this.streams.user_output,this.format_success=function(b){return b.substitution},this.format_error=function(b){return b.goal},this.flag={bounded:P.flag.bounded.value,max_integer:P.flag.max_integer.value,min_integer:P.flag.min_integer.value,integer_rounding_function:P.flag.integer_rounding_function.value,char_conversion:P.flag.char_conversion.value,debug:P.flag.debug.value,max_arity:P.flag.max_arity.value,unknown:P.flag.unknown.value,double_quotes:P.flag.double_quotes.value,occurs_check:P.flag.occurs_check.value,dialect:P.flag.dialect.value,version_data:P.flag.version_data.value,nodejs:P.flag.nodejs.value},this.__loaded_modules=[],this.__char_conversion={},this.__operators={1200:{\":-\":[\"fx\",\"xfx\"],\"-->\":[\"xfx\"],\"?-\":[\"fx\"]},1100:{\";\":[\"xfy\"]},1050:{\"->\":[\"xfy\"]},1e3:{\",\":[\"xfy\"]},900:{\"\\\\+\":[\"fy\"]},700:{\"=\":[\"xfx\"],\"\\\\=\":[\"xfx\"],\"==\":[\"xfx\"],\"\\\\==\":[\"xfx\"],\"@<\":[\"xfx\"],\"@=<\":[\"xfx\"],\"@>\":[\"xfx\"],\"@>=\":[\"xfx\"],\"=..\":[\"xfx\"],is:[\"xfx\"],\"=:=\":[\"xfx\"],\"=\\\\=\":[\"xfx\"],\"<\":[\"xfx\"],\"=<\":[\"xfx\"],\">\":[\"xfx\"],\">=\":[\"xfx\"]},600:{\":\":[\"xfy\"]},500:{\"+\":[\"yfx\"],\"-\":[\"yfx\"],\"/\\\\\":[\"yfx\"],\"\\\\/\":[\"yfx\"]},400:{\"*\":[\"yfx\"],\"/\":[\"yfx\"],\"//\":[\"yfx\"],rem:[\"yfx\"],mod:[\"yfx\"],\"<<\":[\"yfx\"],\">>\":[\"yfx\"]},200:{\"**\":[\"xfx\"],\"^\":[\"xfy\"],\"-\":[\"fy\"],\"+\":[\"fy\"],\"\\\\\":[\"fy\"]}}}function ct(w){this.epoch=Date.now(),this.session=w,this.session.total_threads++,this.total_steps=0,this.cpu_time=0,this.cpu_time_last=0,this.points=[],this.debugger=!1,this.debugger_states=[],this.level=\"top_level/0\",this.__calls=[],this.current_limit=this.session.limit,this.warnings=[]}function Me(w,b,y){this.id=w,this.rules=b,this.exports=y,P.module[w]=this}Me.prototype.exports_predicate=function(w){return this.exports.indexOf(w)!==-1},De.prototype.unify=function(w,b){if(b&&t(w.variables(),this.id)!==-1&&!P.type.is_variable(w))return null;var y={};return y[this.id]=w,new ke(y)},Qe.prototype.unify=function(w,b){return P.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float?new ke:null},_.prototype.unify=function(w,b){if(P.type.is_term(w)&&this.indicator===w.indicator){for(var y=new ke,F=0;F<this.args.length;F++){var z=P.unify(this.args[F].apply(y),w.args[F].apply(y),b);if(z===null)return null;for(var Z in z.links)y.links[Z]=z.links[Z];y=y.apply(z)}return y}return null},Ne.prototype.unify=function(w,b){return P.type.is_stream(w)&&this.id===w.id?new ke:null},De.prototype.toString=function(w){return this.id},Qe.prototype.toString=function(w){return this.is_float&&t(this.value.toString(),\".\")===-1?this.value+\".0\":this.value.toString()},_.prototype.toString=function(w,b,y){if(w=w||{},w.quoted=w.quoted===void 0?!0:w.quoted,w.ignore_ops=w.ignore_ops===void 0?!1:w.ignore_ops,w.numbervars=w.numbervars===void 0?!1:w.numbervars,b=b===void 0?1200:b,y=y===void 0?\"\":y,w.numbervars&&this.indicator===\"$VAR/1\"&&P.type.is_integer(this.args[0])&&this.args[0].value>=0){var F=this.args[0].value,z=Math.floor(F/26),Z=F%26;return\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"[Z]+(z!==0?z:\"\")}switch(this.indicator){case\"[]/0\":case\"{}/0\":case\"!/0\":return this.id;case\"{}/1\":return\"{\"+this.args[0].toString(w)+\"}\";case\"./2\":for(var $=\"[\"+this.args[0].toString(w),se=this.args[1];se.indicator===\"./2\";)$+=\", \"+se.args[0].toString(w),se=se.args[1];return se.indicator!==\"[]/0\"&&($+=\"|\"+se.toString(w)),$+=\"]\",$;case\",/2\":return\"(\"+this.args[0].toString(w)+\", \"+this.args[1].toString(w)+\")\";default:var xe=this.id,Fe=w.session?w.session.lookup_operator(this.id,this.args.length):null;if(w.session===void 0||w.ignore_ops||Fe===null)return w.quoted&&!/^(!|,|;|[a-z][0-9a-zA-Z_]*)$/.test(xe)&&xe!==\"{}\"&&xe!==\"[]\"&&(xe=\"'\"+x(xe)+\"'\"),xe+(this.args.length?\"(\"+s(this.args,function(ir){return ir.toString(w)}).join(\", \")+\")\":\"\");var ut=Fe.priority>b.priority||Fe.priority===b.priority&&(Fe.class===\"xfy\"&&this.indicator!==b.indicator||Fe.class===\"yfx\"&&this.indicator!==b.indicator||this.indicator===b.indicator&&Fe.class===\"yfx\"&&y===\"right\"||this.indicator===b.indicator&&Fe.class===\"xfy\"&&y===\"left\");Fe.indicator=this.indicator;var Ct=ut?\"(\":\"\",qt=ut?\")\":\"\";return this.args.length===0?\"(\"+this.id+\")\":[\"fy\",\"fx\"].indexOf(Fe.class)!==-1?Ct+xe+\" \"+this.args[0].toString(w,Fe)+qt:[\"yf\",\"xf\"].indexOf(Fe.class)!==-1?Ct+this.args[0].toString(w,Fe)+\" \"+xe+qt:Ct+this.args[0].toString(w,Fe,\"left\")+\" \"+this.id+\" \"+this.args[1].toString(w,Fe,\"right\")+qt}},Ne.prototype.toString=function(w){return\"<stream>(\"+this.id+\")\"},ke.prototype.toString=function(w){var b=\"{\";for(var y in this.links)this.links.hasOwnProperty(y)&&(b!==\"{\"&&(b+=\", \"),b+=y+\"/\"+this.links[y].toString(w));return b+=\"}\",b},be.prototype.toString=function(w){return this.goal===null?\"<\"+this.substitution.toString(w)+\">\":\"<\"+this.goal.toString(w)+\", \"+this.substitution.toString(w)+\">\"},je.prototype.toString=function(w){return this.body?this.head.toString(w)+\" :- \"+this.body.toString(w)+\".\":this.head.toString(w)+\".\"},Re.prototype.toString=function(w){for(var b=\"\",y=0;y<this.modules.length;y++)b+=\":- use_module(library(\"+this.modules[y]+`)).\n`;b+=`\n`;for(key in this.rules)for(y=0;y<this.rules[key].length;y++)b+=this.rules[key][y].toString(w),b+=`\n`;return b},De.prototype.clone=function(){return new De(this.id)},Qe.prototype.clone=function(){return new Qe(this.value,this.is_float)},_.prototype.clone=function(){return new _(this.id,s(this.args,function(w){return w.clone()}))},Ne.prototype.clone=function(){return new Stram(this.stream,this.mode,this.alias,this.type,this.reposition,this.eof_action)},ke.prototype.clone=function(){var w={};for(var b in this.links)this.links.hasOwnProperty(b)&&(w[b]=this.links[b].clone());return new ke(w)},be.prototype.clone=function(){return new be(this.goal.clone(),this.substitution.clone(),this.parent)},je.prototype.clone=function(){return new je(this.head.clone(),this.body!==null?this.body.clone():null)},De.prototype.equals=function(w){return P.type.is_variable(w)&&this.id===w.id},Qe.prototype.equals=function(w){return P.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float},_.prototype.equals=function(w){if(!P.type.is_term(w)||this.indicator!==w.indicator)return!1;for(var b=0;b<this.args.length;b++)if(!this.args[b].equals(w.args[b]))return!1;return!0},Ne.prototype.equals=function(w){return P.type.is_stream(w)&&this.id===w.id},ke.prototype.equals=function(w){var b;if(!P.type.is_substitution(w))return!1;for(b in this.links)if(this.links.hasOwnProperty(b)&&(!w.links[b]||!this.links[b].equals(w.links[b])))return!1;for(b in w.links)if(w.links.hasOwnProperty(b)&&!this.links[b])return!1;return!0},be.prototype.equals=function(w){return P.type.is_state(w)&&this.goal.equals(w.goal)&&this.substitution.equals(w.substitution)&&this.parent===w.parent},je.prototype.equals=function(w){return P.type.is_rule(w)&&this.head.equals(w.head)&&(this.body===null&&w.body===null||this.body!==null&&this.body.equals(w.body))},De.prototype.rename=function(w){return w.get_free_variable(this)},Qe.prototype.rename=function(w){return this},_.prototype.rename=function(w){return new _(this.id,s(this.args,function(b){return b.rename(w)}))},Ne.prototype.rename=function(w){return this},je.prototype.rename=function(w){return new je(this.head.rename(w),this.body!==null?this.body.rename(w):null)},De.prototype.variables=function(){return[this.id]},Qe.prototype.variables=function(){return[]},_.prototype.variables=function(){return[].concat.apply([],s(this.args,function(w){return w.variables()}))},Ne.prototype.variables=function(){return[]},je.prototype.variables=function(){return this.body===null?this.head.variables():this.head.variables().concat(this.body.variables())},De.prototype.apply=function(w){return w.lookup(this.id)?w.lookup(this.id):this},Qe.prototype.apply=function(w){return this},_.prototype.apply=function(w){if(this.indicator===\"./2\"){for(var b=[],y=this;y.indicator===\"./2\";)b.push(y.args[0].apply(w)),y=y.args[1];for(var F=y.apply(w),z=b.length-1;z>=0;z--)F=new _(\".\",[b[z],F]);return F}return new _(this.id,s(this.args,function(Z){return Z.apply(w)}),this.ref)},Ne.prototype.apply=function(w){return this},je.prototype.apply=function(w){return new je(this.head.apply(w),this.body!==null?this.body.apply(w):null)},ke.prototype.apply=function(w){var b,y={};for(b in this.links)this.links.hasOwnProperty(b)&&(y[b]=this.links[b].apply(w));return new ke(y)},_.prototype.select=function(){for(var w=this;w.indicator===\",/2\";)w=w.args[0];return w},_.prototype.replace=function(w){return this.indicator===\",/2\"?this.args[0].indicator===\",/2\"?new _(\",\",[this.args[0].replace(w),this.args[1]]):w===null?this.args[1]:new _(\",\",[w,this.args[1]]):w},_.prototype.search=function(w){if(P.type.is_term(w)&&w.ref!==void 0&&this.ref===w.ref)return!0;for(var b=0;b<this.args.length;b++)if(P.type.is_term(this.args[b])&&this.args[b].search(w))return!0;return!1},Re.prototype.get_current_input=function(){return this.current_input},ct.prototype.get_current_input=function(){return this.session.get_current_input()},Re.prototype.get_current_output=function(){return this.current_output},ct.prototype.get_current_output=function(){return this.session.get_current_output()},Re.prototype.set_current_input=function(w){this.current_input=w},ct.prototype.set_current_input=function(w){return this.session.set_current_input(w)},Re.prototype.set_current_output=function(w){this.current_input=w},ct.prototype.set_current_output=function(w){return this.session.set_current_output(w)},Re.prototype.get_stream_by_alias=function(w){return this.streams[w]},ct.prototype.get_stream_by_alias=function(w){return this.session.get_stream_by_alias(w)},Re.prototype.file_system_open=function(w,b,y){return this.file_system.open(w,b,y)},ct.prototype.file_system_open=function(w,b,y){return this.session.file_system_open(w,b,y)},Re.prototype.get_char_conversion=function(w){return this.__char_conversion[w]||w},ct.prototype.get_char_conversion=function(w){return this.session.get_char_conversion(w)},Re.prototype.parse=function(w){return this.thread.parse(w)},ct.prototype.parse=function(w){var b=new U(this);b.new_text(w);var y=b.get_tokens();if(y===null)return!1;var F=Y(this,y,0,this.__get_max_priority(),!1);return F.len!==y.length?!1:{value:F.value,expr:F,tokens:y}},Re.prototype.get_flag=function(w){return this.flag[w]},ct.prototype.get_flag=function(w){return this.session.get_flag(w)},Re.prototype.add_rule=function(w,b){return b=b||{},b.from=b.from?b.from:\"$tau-js\",this.src_predicates[w.head.indicator]=b.from,this.rules[w.head.indicator]||(this.rules[w.head.indicator]=[]),this.rules[w.head.indicator].push(w),this.public_predicates.hasOwnProperty(w.head.indicator)||(this.public_predicates[w.head.indicator]=!1),!0},ct.prototype.add_rule=function(w,b){return this.session.add_rule(w,b)},Re.prototype.run_directive=function(w){this.thread.run_directive(w)},ct.prototype.run_directive=function(w){return P.type.is_directive(w)?(P.directive[w.indicator](this,w),!0):!1},Re.prototype.__get_max_priority=function(){return\"1200\"},ct.prototype.__get_max_priority=function(){return this.session.__get_max_priority()},Re.prototype.__get_next_priority=function(w){var b=0;w=parseInt(w);for(var y in this.__operators)if(this.__operators.hasOwnProperty(y)){var F=parseInt(y);F>b&&F<w&&(b=F)}return b.toString()},ct.prototype.__get_next_priority=function(w){return this.session.__get_next_priority(w)},Re.prototype.__lookup_operator_classes=function(w,b){return this.__operators.hasOwnProperty(w)&&this.__operators[w][b]instanceof Array&&this.__operators[w][b]||!1},ct.prototype.__lookup_operator_classes=function(w,b){return this.session.__lookup_operator_classes(w,b)},Re.prototype.lookup_operator=function(w,b){for(var y in this.__operators)if(this.__operators[y][w]){for(var F=0;F<this.__operators[y][w].length;F++)if(b===0||this.__operators[y][w][F].length===b+1)return{priority:y,class:this.__operators[y][w][F]}}return null},ct.prototype.lookup_operator=function(w,b){return this.session.lookup_operator(w,b)},Re.prototype.throw_warning=function(w){this.thread.throw_warning(w)},ct.prototype.throw_warning=function(w){this.warnings.push(w)},Re.prototype.get_warnings=function(){return this.thread.get_warnings()},ct.prototype.get_warnings=function(){return this.warnings},Re.prototype.add_goal=function(w,b){this.thread.add_goal(w,b)},ct.prototype.add_goal=function(w,b,y){y=y||null,b===!0&&(this.points=[]);for(var F=w.variables(),z={},Z=0;Z<F.length;Z++)z[F[Z]]=new De(F[Z]);this.points.push(new be(w,new ke(z),y))},Re.prototype.consult=function(w,b){return this.thread.consult(w,b)},ct.prototype.consult=function(w,b){var y=\"\";if(typeof w==\"string\"){y=w;var F=y.length;if(y.substring(F-3,F)===\".pl\"&&document.getElementById(y)){var z=document.getElementById(y),Z=z.getAttribute(\"type\");Z!==null&&Z.replace(/ /g,\"\").toLowerCase()===\"text/prolog\"&&(y=z.text)}}else if(w.nodeName)switch(w.nodeName.toLowerCase()){case\"input\":case\"textarea\":y=w.value;break;default:y=w.innerHTML;break}else return!1;return this.warnings=[],ae(this,y,b)},Re.prototype.query=function(w){return this.thread.query(w)},ct.prototype.query=function(w){return this.points=[],this.debugger_points=[],de(this,w)},Re.prototype.head_point=function(){return this.thread.head_point()},ct.prototype.head_point=function(){return this.points[this.points.length-1]},Re.prototype.get_free_variable=function(w){return this.thread.get_free_variable(w)},ct.prototype.get_free_variable=function(w){var b=[];if(w.id===\"_\"||this.session.renamed_variables[w.id]===void 0){for(this.session.rename++,this.points.length>0&&(b=this.head_point().substitution.domain());t(b,P.format_variable(this.session.rename))!==-1;)this.session.rename++;if(w.id===\"_\")return new De(P.format_variable(this.session.rename));this.session.renamed_variables[w.id]=P.format_variable(this.session.rename)}return new De(this.session.renamed_variables[w.id])},Re.prototype.next_free_variable=function(){return this.thread.next_free_variable()},ct.prototype.next_free_variable=function(){this.session.rename++;var w=[];for(this.points.length>0&&(w=this.head_point().substitution.domain());t(w,P.format_variable(this.session.rename))!==-1;)this.session.rename++;return new De(P.format_variable(this.session.rename))},Re.prototype.is_public_predicate=function(w){return!this.public_predicates.hasOwnProperty(w)||this.public_predicates[w]===!0},ct.prototype.is_public_predicate=function(w){return this.session.is_public_predicate(w)},Re.prototype.is_multifile_predicate=function(w){return this.multifile_predicates.hasOwnProperty(w)&&this.multifile_predicates[w]===!0},ct.prototype.is_multifile_predicate=function(w){return this.session.is_multifile_predicate(w)},Re.prototype.prepend=function(w){return this.thread.prepend(w)},ct.prototype.prepend=function(w){for(var b=w.length-1;b>=0;b--)this.points.push(w[b])},Re.prototype.success=function(w,b){return this.thread.success(w,b)},ct.prototype.success=function(w,y){var y=typeof y>\"u\"?w:y;this.prepend([new be(w.goal.replace(null),w.substitution,y)])},Re.prototype.throw_error=function(w){return this.thread.throw_error(w)},ct.prototype.throw_error=function(w){this.prepend([new be(new _(\"throw\",[w]),new ke,null,null)])},Re.prototype.step_rule=function(w,b){return this.thread.step_rule(w,b)},ct.prototype.step_rule=function(w,b){var y=b.indicator;if(w===\"user\"&&(w=null),w===null&&this.session.rules.hasOwnProperty(y))return this.session.rules[y];for(var F=w===null?this.session.modules:t(this.session.modules,w)===-1?[]:[w],z=0;z<F.length;z++){var Z=P.module[F[z]];if(Z.rules.hasOwnProperty(y)&&(Z.rules.hasOwnProperty(this.level)||Z.exports_predicate(y)))return P.module[F[z]].rules[y]}return null},Re.prototype.step=function(){return this.thread.step()},ct.prototype.step=function(){if(this.points.length!==0){var w=!1,b=this.points.pop();if(this.debugger&&this.debugger_states.push(b),P.type.is_term(b.goal)){var y=b.goal.select(),F=null,z=[];if(y!==null){this.total_steps++;for(var Z=b;Z.parent!==null&&Z.parent.goal.search(y);)Z=Z.parent;if(this.level=Z.parent===null?\"top_level/0\":Z.parent.goal.select().indicator,P.type.is_term(y)&&y.indicator===\":/2\"&&(F=y.args[0].id,y=y.args[1]),F===null&&P.type.is_builtin(y))this.__call_indicator=y.indicator,w=P.predicate[y.indicator](this,b,y);else{var $=this.step_rule(F,y);if($===null)this.session.rules.hasOwnProperty(y.indicator)||(this.get_flag(\"unknown\").id===\"error\"?this.throw_error(P.error.existence(\"procedure\",y.indicator,this.level)):this.get_flag(\"unknown\").id===\"warning\"&&this.throw_warning(\"unknown procedure \"+y.indicator+\" (from \"+this.level+\")\"));else if($ instanceof Function)w=$(this,b,y);else{for(var se in $)if($.hasOwnProperty(se)){var xe=$[se];this.session.renamed_variables={},xe=xe.rename(this);var Fe=this.get_flag(\"occurs_check\").indicator===\"true/0\",ut=new be,Ct=P.unify(y,xe.head,Fe);Ct!==null&&(ut.goal=b.goal.replace(xe.body),ut.goal!==null&&(ut.goal=ut.goal.apply(Ct)),ut.substitution=b.substitution.apply(Ct),ut.parent=b,z.push(ut))}this.prepend(z)}}}}else P.type.is_variable(b.goal)?this.throw_error(P.error.instantiation(this.level)):this.throw_error(P.error.type(\"callable\",b.goal,this.level));return w}},Re.prototype.answer=function(w){return this.thread.answer(w)},ct.prototype.answer=function(w){w=w||function(b){},this.__calls.push(w),!(this.__calls.length>1)&&this.again()},Re.prototype.answers=function(w,b,y){return this.thread.answers(w,b,y)},ct.prototype.answers=function(w,b,y){var F=b||1e3,z=this;if(b<=0){y&&y();return}this.answer(function(Z){w(Z),Z!==!1?setTimeout(function(){z.answers(w,b-1,y)},1):y&&y()})},Re.prototype.again=function(w){return this.thread.again(w)},ct.prototype.again=function(w){for(var b,y=Date.now();this.__calls.length>0;){for(this.warnings=[],w!==!1&&(this.current_limit=this.session.limit);this.current_limit>0&&this.points.length>0&&this.head_point().goal!==null&&!P.type.is_error(this.head_point().goal);)if(this.current_limit--,this.step()===!0)return;var F=Date.now();this.cpu_time_last=F-y,this.cpu_time+=this.cpu_time_last;var z=this.__calls.shift();this.current_limit<=0?z(null):this.points.length===0?z(!1):P.type.is_error(this.head_point().goal)?(b=this.session.format_error(this.points.pop()),this.points=[],z(b)):(this.debugger&&this.debugger_states.push(this.head_point()),b=this.session.format_success(this.points.pop()),z(b))}},Re.prototype.unfold=function(w){if(w.body===null)return!1;var b=w.head,y=w.body,F=y.select(),z=new ct(this),Z=[];z.add_goal(F),z.step();for(var $=z.points.length-1;$>=0;$--){var se=z.points[$],xe=b.apply(se.substitution),Fe=y.replace(se.goal);Fe!==null&&(Fe=Fe.apply(se.substitution)),Z.push(new je(xe,Fe))}var ut=this.rules[b.indicator],Ct=t(ut,w);return Z.length>0&&Ct!==-1?(ut.splice.apply(ut,[Ct,1].concat(Z)),!0):!1},ct.prototype.unfold=function(w){return this.session.unfold(w)},De.prototype.interpret=function(w){return P.error.instantiation(w.level)},Qe.prototype.interpret=function(w){return this},_.prototype.interpret=function(w){return P.type.is_unitary_list(this)?this.args[0].interpret(w):P.operate(w,this)},De.prototype.compare=function(w){return this.id<w.id?-1:this.id>w.id?1:0},Qe.prototype.compare=function(w){if(this.value===w.value&&this.is_float===w.is_float)return 0;if(this.value<w.value||this.value===w.value&&this.is_float&&!w.is_float)return-1;if(this.value>w.value)return 1},_.prototype.compare=function(w){if(this.args.length<w.args.length||this.args.length===w.args.length&&this.id<w.id)return-1;if(this.args.length>w.args.length||this.args.length===w.args.length&&this.id>w.id)return 1;for(var b=0;b<this.args.length;b++){var y=P.compare(this.args[b],w.args[b]);if(y!==0)return y}return 0},ke.prototype.lookup=function(w){return this.links[w]?this.links[w]:null},ke.prototype.filter=function(w){var b={};for(var y in this.links)if(this.links.hasOwnProperty(y)){var F=this.links[y];w(y,F)&&(b[y]=F)}return new ke(b)},ke.prototype.exclude=function(w){var b={};for(var y in this.links)this.links.hasOwnProperty(y)&&t(w,y)===-1&&(b[y]=this.links[y]);return new ke(b)},ke.prototype.add=function(w,b){this.links[w]=b},ke.prototype.domain=function(w){var b=w===!0?function(z){return z}:function(z){return new De(z)},y=[];for(var F in this.links)y.push(b(F));return y},De.prototype.compile=function(){return'new pl.type.Var(\"'+this.id.toString()+'\")'},Qe.prototype.compile=function(){return\"new pl.type.Num(\"+this.value.toString()+\", \"+this.is_float.toString()+\")\"},_.prototype.compile=function(){return'new pl.type.Term(\"'+this.id.replace(/\"/g,'\\\\\"')+'\", ['+s(this.args,function(w){return w.compile()})+\"])\"},je.prototype.compile=function(){return\"new pl.type.Rule(\"+this.head.compile()+\", \"+(this.body===null?\"null\":this.body.compile())+\")\"},Re.prototype.compile=function(){var w,b=[],y;for(var F in this.rules)if(this.rules.hasOwnProperty(F)){var z=this.rules[F];y=[],w='\"'+F+'\": [';for(var Z=0;Z<z.length;Z++)y.push(z[Z].compile());w+=y.join(),w+=\"]\",b.push(w)}return\"{\"+b.join()+\"};\"},De.prototype.toJavaScript=function(){},Qe.prototype.toJavaScript=function(){return this.value},_.prototype.toJavaScript=function(){if(this.args.length===0&&this.indicator!==\"[]/0\")return this.id;if(P.type.is_list(this)){for(var w=[],b=this,y;b.indicator===\"./2\";){if(y=b.args[0].toJavaScript(),y===void 0)return;w.push(y),b=b.args[1]}if(b.indicator===\"[]/0\")return w}},je.prototype.singleton_variables=function(){var w=this.head.variables(),b={},y=[];this.body!==null&&(w=w.concat(this.body.variables()));for(var F=0;F<w.length;F++)b[w[F]]===void 0&&(b[w[F]]=0),b[w[F]]++;for(var z in b)z!==\"_\"&&b[z]===1&&y.push(z);return y};var P={__env:typeof tc<\"u\"&&tc.exports?global:window,module:{},version:e,parser:{tokenizer:U,expression:Y},utils:{str_indicator:X,codePointAt:n,fromCodePoint:c},statistics:{getCountTerms:function(){return it}},fromJavaScript:{test:{boolean:function(w){return w===!0||w===!1},number:function(w){return typeof w==\"number\"},string:function(w){return typeof w==\"string\"},list:function(w){return w instanceof Array},variable:function(w){return w===void 0},any:function(w){return!0}},conversion:{boolean:function(w){return new _(w?\"true\":\"false\",[])},number:function(w){return new Qe(w,w%1!==0)},string:function(w){return new _(w,[])},list:function(w){for(var b=[],y,F=0;F<w.length;F++){if(y=P.fromJavaScript.apply(w[F]),y===void 0)return;b.push(y)}return g(b)},variable:function(w){return new De(\"_\")},any:function(w){}},apply:function(w){for(var b in P.fromJavaScript.test)if(b!==\"any\"&&P.fromJavaScript.test[b](w))return P.fromJavaScript.conversion[b](w);return P.fromJavaScript.conversion.any(w)}},type:{Var:De,Num:Qe,Term:_,Rule:je,State:be,Stream:Ne,Module:Me,Thread:ct,Session:Re,Substitution:ke,order:[De,Qe,_,Ne],compare:function(w,b){var y=t(P.type.order,w.constructor),F=t(P.type.order,b.constructor);if(y<F)return-1;if(y>F)return 1;if(w.constructor===Qe){if(w.is_float&&b.is_float)return 0;if(w.is_float)return-1;if(b.is_float)return 1}return 0},is_substitution:function(w){return w instanceof ke},is_state:function(w){return w instanceof be},is_rule:function(w){return w instanceof je},is_variable:function(w){return w instanceof De},is_stream:function(w){return w instanceof Ne},is_anonymous_var:function(w){return w instanceof De&&w.id===\"_\"},is_callable:function(w){return w instanceof _},is_number:function(w){return w instanceof Qe},is_integer:function(w){return w instanceof Qe&&!w.is_float},is_float:function(w){return w instanceof Qe&&w.is_float},is_term:function(w){return w instanceof _},is_atom:function(w){return w instanceof _&&w.args.length===0},is_ground:function(w){if(w instanceof De)return!1;if(w instanceof _){for(var b=0;b<w.args.length;b++)if(!P.type.is_ground(w.args[b]))return!1}return!0},is_atomic:function(w){return w instanceof _&&w.args.length===0||w instanceof Qe},is_compound:function(w){return w instanceof _&&w.args.length>0},is_list:function(w){return w instanceof _&&(w.indicator===\"[]/0\"||w.indicator===\"./2\")},is_empty_list:function(w){return w instanceof _&&w.indicator===\"[]/0\"},is_non_empty_list:function(w){return w instanceof _&&w.indicator===\"./2\"},is_fully_list:function(w){for(;w instanceof _&&w.indicator===\"./2\";)w=w.args[1];return w instanceof De||w instanceof _&&w.indicator===\"[]/0\"},is_instantiated_list:function(w){for(;w instanceof _&&w.indicator===\"./2\";)w=w.args[1];return w instanceof _&&w.indicator===\"[]/0\"},is_unitary_list:function(w){return w instanceof _&&w.indicator===\"./2\"&&w.args[1]instanceof _&&w.args[1].indicator===\"[]/0\"},is_character:function(w){return w instanceof _&&(w.id.length===1||w.id.length>0&&w.id.length<=2&&n(w.id,0)>=65536)},is_character_code:function(w){return w instanceof Qe&&!w.is_float&&w.value>=0&&w.value<=1114111},is_byte:function(w){return w instanceof Qe&&!w.is_float&&w.value>=0&&w.value<=255},is_operator:function(w){return w instanceof _&&P.arithmetic.evaluation[w.indicator]},is_directive:function(w){return w instanceof _&&P.directive[w.indicator]!==void 0},is_builtin:function(w){return w instanceof _&&P.predicate[w.indicator]!==void 0},is_error:function(w){return w instanceof _&&w.indicator===\"throw/1\"},is_predicate_indicator:function(w){return w instanceof _&&w.indicator===\"//2\"&&w.args[0]instanceof _&&w.args[0].args.length===0&&w.args[1]instanceof Qe&&w.args[1].is_float===!1},is_flag:function(w){return w instanceof _&&w.args.length===0&&P.flag[w.id]!==void 0},is_value_flag:function(w,b){if(!P.type.is_flag(w))return!1;for(var y in P.flag[w.id].allowed)if(P.flag[w.id].allowed.hasOwnProperty(y)&&P.flag[w.id].allowed[y].equals(b))return!0;return!1},is_io_mode:function(w){return P.type.is_atom(w)&&[\"read\",\"write\",\"append\"].indexOf(w.id)!==-1},is_stream_option:function(w){return P.type.is_term(w)&&(w.indicator===\"alias/1\"&&P.type.is_atom(w.args[0])||w.indicator===\"reposition/1\"&&P.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"type/1\"&&P.type.is_atom(w.args[0])&&(w.args[0].id===\"text\"||w.args[0].id===\"binary\")||w.indicator===\"eof_action/1\"&&P.type.is_atom(w.args[0])&&(w.args[0].id===\"error\"||w.args[0].id===\"eof_code\"||w.args[0].id===\"reset\"))},is_stream_position:function(w){return P.type.is_integer(w)&&w.value>=0||P.type.is_atom(w)&&(w.id===\"end_of_stream\"||w.id===\"past_end_of_stream\")},is_stream_property:function(w){return P.type.is_term(w)&&(w.indicator===\"input/0\"||w.indicator===\"output/0\"||w.indicator===\"alias/1\"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0]))||w.indicator===\"file_name/1\"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0]))||w.indicator===\"position/1\"&&(P.type.is_variable(w.args[0])||P.type.is_stream_position(w.args[0]))||w.indicator===\"reposition/1\"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\"))||w.indicator===\"type/1\"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id===\"text\"||w.args[0].id===\"binary\"))||w.indicator===\"mode/1\"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id===\"read\"||w.args[0].id===\"write\"||w.args[0].id===\"append\"))||w.indicator===\"eof_action/1\"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id===\"error\"||w.args[0].id===\"eof_code\"||w.args[0].id===\"reset\"))||w.indicator===\"end_of_stream/1\"&&(P.type.is_variable(w.args[0])||P.type.is_atom(w.args[0])&&(w.args[0].id===\"at\"||w.args[0].id===\"past\"||w.args[0].id===\"not\")))},is_streamable:function(w){return w.__proto__.stream!==void 0},is_read_option:function(w){return P.type.is_term(w)&&[\"variables/1\",\"variable_names/1\",\"singletons/1\"].indexOf(w.indicator)!==-1},is_write_option:function(w){return P.type.is_term(w)&&(w.indicator===\"quoted/1\"&&P.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"ignore_ops/1\"&&P.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"numbervars/1\"&&P.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\"))},is_close_option:function(w){return P.type.is_term(w)&&w.indicator===\"force/1\"&&P.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")},is_modifiable_flag:function(w){return P.type.is_flag(w)&&P.flag[w.id].changeable},is_module:function(w){return w instanceof _&&w.indicator===\"library/1\"&&w.args[0]instanceof _&&w.args[0].args.length===0&&P.module[w.args[0].id]!==void 0}},arithmetic:{evaluation:{\"e/0\":{type_args:null,type_result:!0,fn:function(w){return Math.E}},\"pi/0\":{type_args:null,type_result:!0,fn:function(w){return Math.PI}},\"tau/0\":{type_args:null,type_result:!0,fn:function(w){return 2*Math.PI}},\"epsilon/0\":{type_args:null,type_result:!0,fn:function(w){return Number.EPSILON}},\"+/1\":{type_args:null,type_result:null,fn:function(w,b){return w}},\"-/1\":{type_args:null,type_result:null,fn:function(w,b){return-w}},\"\\\\/1\":{type_args:!1,type_result:!1,fn:function(w,b){return~w}},\"abs/1\":{type_args:null,type_result:null,fn:function(w,b){return Math.abs(w)}},\"sign/1\":{type_args:null,type_result:null,fn:function(w,b){return Math.sign(w)}},\"float_integer_part/1\":{type_args:!0,type_result:!1,fn:function(w,b){return parseInt(w)}},\"float_fractional_part/1\":{type_args:!0,type_result:!0,fn:function(w,b){return w-parseInt(w)}},\"float/1\":{type_args:null,type_result:!0,fn:function(w,b){return parseFloat(w)}},\"floor/1\":{type_args:!0,type_result:!1,fn:function(w,b){return Math.floor(w)}},\"truncate/1\":{type_args:!0,type_result:!1,fn:function(w,b){return parseInt(w)}},\"round/1\":{type_args:!0,type_result:!1,fn:function(w,b){return Math.round(w)}},\"ceiling/1\":{type_args:!0,type_result:!1,fn:function(w,b){return Math.ceil(w)}},\"sin/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.sin(w)}},\"cos/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.cos(w)}},\"tan/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.tan(w)}},\"asin/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.asin(w)}},\"acos/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.acos(w)}},\"atan/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.atan(w)}},\"atan2/2\":{type_args:null,type_result:!0,fn:function(w,b,y){return Math.atan2(w,b)}},\"exp/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.exp(w)}},\"sqrt/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.sqrt(w)}},\"log/1\":{type_args:null,type_result:!0,fn:function(w,b){return w>0?Math.log(w):P.error.evaluation(\"undefined\",b.__call_indicator)}},\"+/2\":{type_args:null,type_result:null,fn:function(w,b,y){return w+b}},\"-/2\":{type_args:null,type_result:null,fn:function(w,b,y){return w-b}},\"*/2\":{type_args:null,type_result:null,fn:function(w,b,y){return w*b}},\"//2\":{type_args:null,type_result:!0,fn:function(w,b,y){return b?w/b:P.error.evaluation(\"zero_division\",y.__call_indicator)}},\"///2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?parseInt(w/b):P.error.evaluation(\"zero_division\",y.__call_indicator)}},\"**/2\":{type_args:null,type_result:!0,fn:function(w,b,y){return Math.pow(w,b)}},\"^/2\":{type_args:null,type_result:null,fn:function(w,b,y){return Math.pow(w,b)}},\"<</2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return w<<b}},\">>/2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return w>>b}},\"/\\\\/2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return w&b}},\"\\\\//2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return w|b}},\"xor/2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return w^b}},\"rem/2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?w%b:P.error.evaluation(\"zero_division\",y.__call_indicator)}},\"mod/2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?w-parseInt(w/b)*b:P.error.evaluation(\"zero_division\",y.__call_indicator)}},\"max/2\":{type_args:null,type_result:null,fn:function(w,b,y){return Math.max(w,b)}},\"min/2\":{type_args:null,type_result:null,fn:function(w,b,y){return Math.min(w,b)}}}},directive:{\"dynamic/1\":function(w,b){var y=b.args[0];if(P.type.is_variable(y))w.throw_error(P.error.instantiation(b.indicator));else if(!P.type.is_compound(y)||y.indicator!==\"//2\")w.throw_error(P.error.type(\"predicate_indicator\",y,b.indicator));else if(P.type.is_variable(y.args[0])||P.type.is_variable(y.args[1]))w.throw_error(P.error.instantiation(b.indicator));else if(!P.type.is_atom(y.args[0]))w.throw_error(P.error.type(\"atom\",y.args[0],b.indicator));else if(!P.type.is_integer(y.args[1]))w.throw_error(P.error.type(\"integer\",y.args[1],b.indicator));else{var F=b.args[0].args[0].id+\"/\"+b.args[0].args[1].value;w.session.public_predicates[F]=!0,w.session.rules[F]||(w.session.rules[F]=[])}},\"multifile/1\":function(w,b){var y=b.args[0];P.type.is_variable(y)?w.throw_error(P.error.instantiation(b.indicator)):!P.type.is_compound(y)||y.indicator!==\"//2\"?w.throw_error(P.error.type(\"predicate_indicator\",y,b.indicator)):P.type.is_variable(y.args[0])||P.type.is_variable(y.args[1])?w.throw_error(P.error.instantiation(b.indicator)):P.type.is_atom(y.args[0])?P.type.is_integer(y.args[1])?w.session.multifile_predicates[b.args[0].args[0].id+\"/\"+b.args[0].args[1].value]=!0:w.throw_error(P.error.type(\"integer\",y.args[1],b.indicator)):w.throw_error(P.error.type(\"atom\",y.args[0],b.indicator))},\"set_prolog_flag/2\":function(w,b){var y=b.args[0],F=b.args[1];P.type.is_variable(y)||P.type.is_variable(F)?w.throw_error(P.error.instantiation(b.indicator)):P.type.is_atom(y)?P.type.is_flag(y)?P.type.is_value_flag(y,F)?P.type.is_modifiable_flag(y)?w.session.flag[y.id]=F:w.throw_error(P.error.permission(\"modify\",\"flag\",y)):w.throw_error(P.error.domain(\"flag_value\",new _(\"+\",[y,F]),b.indicator)):w.throw_error(P.error.domain(\"prolog_flag\",y,b.indicator)):w.throw_error(P.error.type(\"atom\",y,b.indicator))},\"use_module/1\":function(w,b){var y=b.args[0];if(P.type.is_variable(y))w.throw_error(P.error.instantiation(b.indicator));else if(!P.type.is_term(y))w.throw_error(P.error.type(\"term\",y,b.indicator));else if(P.type.is_module(y)){var F=y.args[0].id;t(w.session.modules,F)===-1&&w.session.modules.push(F)}},\"char_conversion/2\":function(w,b){var y=b.args[0],F=b.args[1];P.type.is_variable(y)||P.type.is_variable(F)?w.throw_error(P.error.instantiation(b.indicator)):P.type.is_character(y)?P.type.is_character(F)?y.id===F.id?delete w.session.__char_conversion[y.id]:w.session.__char_conversion[y.id]=F.id:w.throw_error(P.error.type(\"character\",F,b.indicator)):w.throw_error(P.error.type(\"character\",y,b.indicator))},\"op/3\":function(w,b){var y=b.args[0],F=b.args[1],z=b.args[2];if(P.type.is_variable(y)||P.type.is_variable(F)||P.type.is_variable(z))w.throw_error(P.error.instantiation(b.indicator));else if(!P.type.is_integer(y))w.throw_error(P.error.type(\"integer\",y,b.indicator));else if(!P.type.is_atom(F))w.throw_error(P.error.type(\"atom\",F,b.indicator));else if(!P.type.is_atom(z))w.throw_error(P.error.type(\"atom\",z,b.indicator));else if(y.value<0||y.value>1200)w.throw_error(P.error.domain(\"operator_priority\",y,b.indicator));else if(z.id===\",\")w.throw_error(P.error.permission(\"modify\",\"operator\",z,b.indicator));else if(z.id===\"|\"&&(y.value<1001||F.id.length!==3))w.throw_error(P.error.permission(\"modify\",\"operator\",z,b.indicator));else if([\"fy\",\"fx\",\"yf\",\"xf\",\"xfx\",\"yfx\",\"xfy\"].indexOf(F.id)===-1)w.throw_error(P.error.domain(\"operator_specifier\",F,b.indicator));else{var Z={prefix:null,infix:null,postfix:null};for(var $ in w.session.__operators)if(w.session.__operators.hasOwnProperty($)){var se=w.session.__operators[$][z.id];se&&(t(se,\"fx\")!==-1&&(Z.prefix={priority:$,type:\"fx\"}),t(se,\"fy\")!==-1&&(Z.prefix={priority:$,type:\"fy\"}),t(se,\"xf\")!==-1&&(Z.postfix={priority:$,type:\"xf\"}),t(se,\"yf\")!==-1&&(Z.postfix={priority:$,type:\"yf\"}),t(se,\"xfx\")!==-1&&(Z.infix={priority:$,type:\"xfx\"}),t(se,\"xfy\")!==-1&&(Z.infix={priority:$,type:\"xfy\"}),t(se,\"yfx\")!==-1&&(Z.infix={priority:$,type:\"yfx\"}))}var xe;switch(F.id){case\"fy\":case\"fx\":xe=\"prefix\";break;case\"yf\":case\"xf\":xe=\"postfix\";break;default:xe=\"infix\";break}if(((Z.prefix&&xe===\"prefix\"||Z.postfix&&xe===\"postfix\"||Z.infix&&xe===\"infix\")&&Z[xe].type!==F.id||Z.infix&&xe===\"postfix\"||Z.postfix&&xe===\"infix\")&&y.value!==0)w.throw_error(P.error.permission(\"create\",\"operator\",z,b.indicator));else return Z[xe]&&(Se(w.session.__operators[Z[xe].priority][z.id],F.id),w.session.__operators[Z[xe].priority][z.id].length===0&&delete w.session.__operators[Z[xe].priority][z.id]),y.value>0&&(w.session.__operators[y.value]||(w.session.__operators[y.value.toString()]={}),w.session.__operators[y.value][z.id]||(w.session.__operators[y.value][z.id]=[]),w.session.__operators[y.value][z.id].push(F.id)),!0}}},predicate:{\"op/3\":function(w,b,y){P.directive[\"op/3\"](w,y)&&w.success(b)},\"current_op/3\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2],$=[];for(var se in w.session.__operators)for(var xe in w.session.__operators[se])for(var Fe=0;Fe<w.session.__operators[se][xe].length;Fe++)$.push(new be(b.goal.replace(new _(\",\",[new _(\"=\",[new Qe(se,!1),F]),new _(\",\",[new _(\"=\",[new _(w.session.__operators[se][xe][Fe],[]),z]),new _(\"=\",[new _(xe,[]),Z])])])),b.substitution,b));w.prepend($)},\";/2\":function(w,b,y){if(P.type.is_term(y.args[0])&&y.args[0].indicator===\"->/2\"){var F=w.points,z=w.session.format_success,Z=w.session.format_error;w.session.format_success=function(Fe){return Fe.substitution},w.session.format_error=function(Fe){return Fe.goal},w.points=[new be(y.args[0].args[0],b.substitution,b)];var $=function(Fe){w.points=F,w.session.format_success=z,w.session.format_error=Z,Fe===!1?w.prepend([new be(b.goal.replace(y.args[1]),b.substitution,b)]):P.type.is_error(Fe)?w.throw_error(Fe.args[0]):Fe===null?(w.prepend([b]),w.__calls.shift()(null)):w.prepend([new be(b.goal.replace(y.args[0].args[1]).apply(Fe),b.substitution.apply(Fe),b)])};w.__calls.unshift($)}else{var se=new be(b.goal.replace(y.args[0]),b.substitution,b),xe=new be(b.goal.replace(y.args[1]),b.substitution,b);w.prepend([se,xe])}},\"!/0\":function(w,b,y){var F,z,Z=[];for(F=b,z=null;F.parent!==null&&F.parent.goal.search(y);)if(z=F,F=F.parent,F.goal!==null){var $=F.goal.select();if($&&$.id===\"call\"&&$.search(y)){F=z;break}}for(var se=w.points.length-1;se>=0;se--){for(var xe=w.points[se],Fe=xe.parent;Fe!==null&&Fe!==F.parent;)Fe=Fe.parent;Fe===null&&Fe!==F.parent&&Z.push(xe)}w.points=Z.reverse(),w.success(b)},\"\\\\+/1\":function(w,b,y){var F=y.args[0];P.type.is_variable(F)?w.throw_error(P.error.instantiation(w.level)):P.type.is_callable(F)?w.prepend([new be(b.goal.replace(new _(\",\",[new _(\",\",[new _(\"call\",[F]),new _(\"!\",[])]),new _(\"fail\",[])])),b.substitution,b),new be(b.goal.replace(null),b.substitution,b)]):w.throw_error(P.error.type(\"callable\",F,w.level))},\"->/2\":function(w,b,y){var F=b.goal.replace(new _(\",\",[y.args[0],new _(\",\",[new _(\"!\"),y.args[1]])]));w.prepend([new be(F,b.substitution,b)])},\"fail/0\":function(w,b,y){},\"false/0\":function(w,b,y){},\"true/0\":function(w,b,y){w.success(b)},\"call/1\":ce(1),\"call/2\":ce(2),\"call/3\":ce(3),\"call/4\":ce(4),\"call/5\":ce(5),\"call/6\":ce(6),\"call/7\":ce(7),\"call/8\":ce(8),\"once/1\":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"call\",[F]),new _(\"!\",[])])),b.substitution,b)])},\"forall/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _(\"\\\\+\",[new _(\",\",[new _(\"call\",[F]),new _(\"\\\\+\",[new _(\"call\",[z])])])])),b.substitution,b)])},\"repeat/0\":function(w,b,y){w.prepend([new be(b.goal.replace(null),b.substitution,b),b])},\"throw/1\":function(w,b,y){P.type.is_variable(y.args[0])?w.throw_error(P.error.instantiation(w.level)):w.throw_error(y.args[0])},\"catch/3\":function(w,b,y){var F=w.points;w.points=[],w.prepend([new be(y.args[0],b.substitution,b)]);var z=w.session.format_success,Z=w.session.format_error;w.session.format_success=function(se){return se.substitution},w.session.format_error=function(se){return se.goal};var $=function(se){var xe=w.points;if(w.points=F,w.session.format_success=z,w.session.format_error=Z,P.type.is_error(se)){for(var Fe=[],ut=w.points.length-1;ut>=0;ut--){for(var ir=w.points[ut],Ct=ir.parent;Ct!==null&&Ct!==b.parent;)Ct=Ct.parent;Ct===null&&Ct!==b.parent&&Fe.push(ir)}w.points=Fe;var qt=w.get_flag(\"occurs_check\").indicator===\"true/0\",ir=new be,Pt=P.unify(se.args[0],y.args[1],qt);Pt!==null?(ir.substitution=b.substitution.apply(Pt),ir.goal=b.goal.replace(y.args[2]).apply(Pt),ir.parent=b,w.prepend([ir])):w.throw_error(se.args[0])}else if(se!==!1){for(var dn=se===null?[]:[new be(b.goal.apply(se).replace(null),b.substitution.apply(se),b)],Pr=[],ut=xe.length-1;ut>=0;ut--){Pr.push(xe[ut]);var Ir=xe[ut].goal!==null?xe[ut].goal.select():null;if(P.type.is_term(Ir)&&Ir.indicator===\"!/0\")break}var Or=s(Pr,function(on){return on.goal===null&&(on.goal=new _(\"true\",[])),on=new be(b.goal.replace(new _(\"catch\",[on.goal,y.args[1],y.args[2]])),b.substitution.apply(on.substitution),on.parent),on.exclude=y.args[0].variables(),on}).reverse();w.prepend(Or),w.prepend(dn),se===null&&(this.current_limit=0,w.__calls.shift()(null))}};w.__calls.unshift($)},\"=/2\":function(w,b,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=new be,Z=P.unify(y.args[0],y.args[1],F);Z!==null&&(z.goal=b.goal.apply(Z).replace(null),z.substitution=b.substitution.apply(Z),z.parent=b,w.prepend([z]))},\"unify_with_occurs_check/2\":function(w,b,y){var F=new be,z=P.unify(y.args[0],y.args[1],!0);z!==null&&(F.goal=b.goal.apply(z).replace(null),F.substitution=b.substitution.apply(z),F.parent=b,w.prepend([F]))},\"\\\\=/2\":function(w,b,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=P.unify(y.args[0],y.args[1],F);z===null&&w.success(b)},\"subsumes_term/2\":function(w,b,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=P.unify(y.args[1],y.args[0],F);z!==null&&y.args[1].apply(z).equals(y.args[1])&&w.success(b)},\"findall/3\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(z))w.throw_error(P.error.type(\"callable\",z,y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_list(Z))w.throw_error(P.error.type(\"list\",Z,y.indicator));else{var $=w.next_free_variable(),se=new _(\",\",[z,new _(\"=\",[$,F])]),xe=w.points,Fe=w.session.limit,ut=w.session.format_success;w.session.format_success=function(ir){return ir.substitution},w.add_goal(se,!0,b);var Ct=[],qt=function(ir){if(ir!==!1&&ir!==null&&!P.type.is_error(ir))w.__calls.unshift(qt),Ct.push(ir.links[$.id]),w.session.limit=w.current_limit;else if(w.points=xe,w.session.limit=Fe,w.session.format_success=ut,P.type.is_error(ir))w.throw_error(ir.args[0]);else if(w.current_limit>0){for(var Pt=new _(\"[]\"),dn=Ct.length-1;dn>=0;dn--)Pt=new _(\".\",[Ct[dn],Pt]);w.prepend([new be(b.goal.replace(new _(\"=\",[Z,Pt])),b.substitution,b)])}};w.__calls.unshift(qt)}},\"bagof/3\":function(w,b,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2];if(P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(Z))w.throw_error(P.error.type(\"callable\",Z,y.indicator));else if(!P.type.is_variable($)&&!P.type.is_list($))w.throw_error(P.error.type(\"list\",$,y.indicator));else{var se=w.next_free_variable(),xe;Z.indicator===\"^/2\"?(xe=Z.args[0].variables(),Z=Z.args[1]):xe=[],xe=xe.concat(z.variables());for(var Fe=Z.variables().filter(function(Or){return t(xe,Or)===-1}),ut=new _(\"[]\"),Ct=Fe.length-1;Ct>=0;Ct--)ut=new _(\".\",[new De(Fe[Ct]),ut]);var qt=new _(\",\",[Z,new _(\"=\",[se,new _(\",\",[ut,z])])]),ir=w.points,Pt=w.session.limit,dn=w.session.format_success;w.session.format_success=function(Or){return Or.substitution},w.add_goal(qt,!0,b);var Pr=[],Ir=function(Or){if(Or!==!1&&Or!==null&&!P.type.is_error(Or)){w.__calls.unshift(Ir);var on=!1,li=Or.links[se.id].args[0],So=Or.links[se.id].args[1];for(var ns in Pr)if(Pr.hasOwnProperty(ns)){var so=Pr[ns];if(so.variables.equals(li)){so.answers.push(So),on=!0;break}}on||Pr.push({variables:li,answers:[So]}),w.session.limit=w.current_limit}else if(w.points=ir,w.session.limit=Pt,w.session.format_success=dn,P.type.is_error(Or))w.throw_error(Or.args[0]);else if(w.current_limit>0){for(var Do=[],ji=0;ji<Pr.length;ji++){Or=Pr[ji].answers;for(var oo=new _(\"[]\"),bo=Or.length-1;bo>=0;bo--)oo=new _(\".\",[Or[bo],oo]);Do.push(new be(b.goal.replace(new _(\",\",[new _(\"=\",[ut,Pr[ji].variables]),new _(\"=\",[$,oo])])),b.substitution,b))}w.prepend(Do)}};w.__calls.unshift(Ir)}},\"setof/3\":function(w,b,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2];if(P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(Z))w.throw_error(P.error.type(\"callable\",Z,y.indicator));else if(!P.type.is_variable($)&&!P.type.is_list($))w.throw_error(P.error.type(\"list\",$,y.indicator));else{var se=w.next_free_variable(),xe;Z.indicator===\"^/2\"?(xe=Z.args[0].variables(),Z=Z.args[1]):xe=[],xe=xe.concat(z.variables());for(var Fe=Z.variables().filter(function(Or){return t(xe,Or)===-1}),ut=new _(\"[]\"),Ct=Fe.length-1;Ct>=0;Ct--)ut=new _(\".\",[new De(Fe[Ct]),ut]);var qt=new _(\",\",[Z,new _(\"=\",[se,new _(\",\",[ut,z])])]),ir=w.points,Pt=w.session.limit,dn=w.session.format_success;w.session.format_success=function(Or){return Or.substitution},w.add_goal(qt,!0,b);var Pr=[],Ir=function(Or){if(Or!==!1&&Or!==null&&!P.type.is_error(Or)){w.__calls.unshift(Ir);var on=!1,li=Or.links[se.id].args[0],So=Or.links[se.id].args[1];for(var ns in Pr)if(Pr.hasOwnProperty(ns)){var so=Pr[ns];if(so.variables.equals(li)){so.answers.push(So),on=!0;break}}on||Pr.push({variables:li,answers:[So]}),w.session.limit=w.current_limit}else if(w.points=ir,w.session.limit=Pt,w.session.format_success=dn,P.type.is_error(Or))w.throw_error(Or.args[0]);else if(w.current_limit>0){for(var Do=[],ji=0;ji<Pr.length;ji++){Or=Pr[ji].answers.sort(P.compare);for(var oo=new _(\"[]\"),bo=Or.length-1;bo>=0;bo--)oo=new _(\".\",[Or[bo],oo]);Do.push(new be(b.goal.replace(new _(\",\",[new _(\"=\",[ut,Pr[ji].variables]),new _(\"=\",[$,oo])])),b.substitution,b))}w.prepend(Do)}};w.__calls.unshift(Ir)}},\"functor/3\":function(w,b,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2];if(P.type.is_variable(z)&&(P.type.is_variable(Z)||P.type.is_variable($)))w.throw_error(P.error.instantiation(\"functor/3\"));else if(!P.type.is_variable($)&&!P.type.is_integer($))w.throw_error(P.error.type(\"integer\",y.args[2],\"functor/3\"));else if(!P.type.is_variable(Z)&&!P.type.is_atomic(Z))w.throw_error(P.error.type(\"atomic\",y.args[1],\"functor/3\"));else if(P.type.is_integer(Z)&&P.type.is_integer($)&&$.value!==0)w.throw_error(P.error.type(\"atom\",y.args[1],\"functor/3\"));else if(P.type.is_variable(z)){if(y.args[2].value>=0){for(var se=[],xe=0;xe<$.value;xe++)se.push(w.next_free_variable());var Fe=P.type.is_integer(Z)?Z:new _(Z.id,se);w.prepend([new be(b.goal.replace(new _(\"=\",[z,Fe])),b.substitution,b)])}}else{var ut=P.type.is_integer(z)?z:new _(z.id,[]),Ct=P.type.is_integer(z)?new Qe(0,!1):new Qe(z.args.length,!1),qt=new _(\",\",[new _(\"=\",[ut,Z]),new _(\"=\",[Ct,$])]);w.prepend([new be(b.goal.replace(qt),b.substitution,b)])}},\"arg/3\":function(w,b,y){if(P.type.is_variable(y.args[0])||P.type.is_variable(y.args[1]))w.throw_error(P.error.instantiation(y.indicator));else if(y.args[0].value<0)w.throw_error(P.error.domain(\"not_less_than_zero\",y.args[0],y.indicator));else if(!P.type.is_compound(y.args[1]))w.throw_error(P.error.type(\"compound\",y.args[1],y.indicator));else{var F=y.args[0].value;if(F>0&&F<=y.args[1].args.length){var z=new _(\"=\",[y.args[1].args[F-1],y.args[2]]);w.prepend([new be(b.goal.replace(z),b.substitution,b)])}}},\"=../2\":function(w,b,y){var F;if(P.type.is_variable(y.args[0])&&(P.type.is_variable(y.args[1])||P.type.is_non_empty_list(y.args[1])&&P.type.is_variable(y.args[1].args[0])))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_fully_list(y.args[1]))w.throw_error(P.error.type(\"list\",y.args[1],y.indicator));else if(P.type.is_variable(y.args[0])){if(!P.type.is_variable(y.args[1])){var Z=[];for(F=y.args[1].args[1];F.indicator===\"./2\";)Z.push(F.args[0]),F=F.args[1];P.type.is_variable(y.args[0])&&P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):Z.length===0&&P.type.is_compound(y.args[1].args[0])?w.throw_error(P.error.type(\"atomic\",y.args[1].args[0],y.indicator)):Z.length>0&&(P.type.is_compound(y.args[1].args[0])||P.type.is_number(y.args[1].args[0]))?w.throw_error(P.error.type(\"atom\",y.args[1].args[0],y.indicator)):Z.length===0?w.prepend([new be(b.goal.replace(new _(\"=\",[y.args[1].args[0],y.args[0]],b)),b.substitution,b)]):w.prepend([new be(b.goal.replace(new _(\"=\",[new _(y.args[1].args[0].id,Z),y.args[0]])),b.substitution,b)])}}else{if(P.type.is_atomic(y.args[0]))F=new _(\".\",[y.args[0],new _(\"[]\")]);else{F=new _(\"[]\");for(var z=y.args[0].args.length-1;z>=0;z--)F=new _(\".\",[y.args[0].args[z],F]);F=new _(\".\",[new _(y.args[0].id),F])}w.prepend([new be(b.goal.replace(new _(\"=\",[F,y.args[1]])),b.substitution,b)])}},\"copy_term/2\":function(w,b,y){var F=y.args[0].rename(w);w.prepend([new be(b.goal.replace(new _(\"=\",[F,y.args[1]])),b.substitution,b.parent)])},\"term_variables/2\":function(w,b,y){var F=y.args[0],z=y.args[1];if(!P.type.is_fully_list(z))w.throw_error(P.error.type(\"list\",z,y.indicator));else{var Z=g(s(Be(F.variables()),function($){return new De($)}));w.prepend([new be(b.goal.replace(new _(\"=\",[z,Z])),b.substitution,b)])}},\"clause/2\":function(w,b,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(y.args[0]))w.throw_error(P.error.type(\"callable\",y.args[0],y.indicator));else if(!P.type.is_variable(y.args[1])&&!P.type.is_callable(y.args[1]))w.throw_error(P.error.type(\"callable\",y.args[1],y.indicator));else if(w.session.rules[y.args[0].indicator]!==void 0)if(w.is_public_predicate(y.args[0].indicator)){var F=[];for(var z in w.session.rules[y.args[0].indicator])if(w.session.rules[y.args[0].indicator].hasOwnProperty(z)){var Z=w.session.rules[y.args[0].indicator][z];w.session.renamed_variables={},Z=Z.rename(w),Z.body===null&&(Z.body=new _(\"true\"));var $=new _(\",\",[new _(\"=\",[Z.head,y.args[0]]),new _(\"=\",[Z.body,y.args[1]])]);F.push(new be(b.goal.replace($),b.substitution,b))}w.prepend(F)}else w.throw_error(P.error.permission(\"access\",\"private_procedure\",y.args[0].indicator,y.indicator))},\"current_predicate/1\":function(w,b,y){var F=y.args[0];if(!P.type.is_variable(F)&&(!P.type.is_compound(F)||F.indicator!==\"//2\"))w.throw_error(P.error.type(\"predicate_indicator\",F,y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_variable(F.args[0])&&!P.type.is_atom(F.args[0]))w.throw_error(P.error.type(\"atom\",F.args[0],y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_variable(F.args[1])&&!P.type.is_integer(F.args[1]))w.throw_error(P.error.type(\"integer\",F.args[1],y.indicator));else{var z=[];for(var Z in w.session.rules)if(w.session.rules.hasOwnProperty(Z)){var $=Z.lastIndexOf(\"/\"),se=Z.substr(0,$),xe=parseInt(Z.substr($+1,Z.length-($+1))),Fe=new _(\"/\",[new _(se),new Qe(xe,!1)]),ut=new _(\"=\",[Fe,F]);z.push(new be(b.goal.replace(ut),b.substitution,b))}w.prepend(z)}},\"asserta/1\":function(w,b,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(y.args[0]))w.throw_error(P.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=Ee(y.args[0].args[1])):(F=y.args[0],z=null),P.type.is_callable(F)?z!==null&&!P.type.is_callable(z)?w.throw_error(P.error.type(\"callable\",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator]=[new je(F,z,!0)].concat(w.session.rules[F.indicator]),w.success(b)):w.throw_error(P.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator)):w.throw_error(P.error.type(\"callable\",F,y.indicator))}},\"assertz/1\":function(w,b,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(y.args[0]))w.throw_error(P.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=Ee(y.args[0].args[1])):(F=y.args[0],z=null),P.type.is_callable(F)?z!==null&&!P.type.is_callable(z)?w.throw_error(P.error.type(\"callable\",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator].push(new je(F,z,!0)),w.success(b)):w.throw_error(P.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator)):w.throw_error(P.error.type(\"callable\",F,y.indicator))}},\"retract/1\":function(w,b,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_callable(y.args[0]))w.throw_error(P.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;if(y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=y.args[0].args[1]):(F=y.args[0],z=new _(\"true\")),typeof b.retract>\"u\")if(w.is_public_predicate(F.indicator)){if(w.session.rules[F.indicator]!==void 0){for(var Z=[],$=0;$<w.session.rules[F.indicator].length;$++){w.session.renamed_variables={};var se=w.session.rules[F.indicator][$],xe=se.rename(w);xe.body===null&&(xe.body=new _(\"true\",[]));var Fe=w.get_flag(\"occurs_check\").indicator===\"true/0\",ut=P.unify(new _(\",\",[F,z]),new _(\",\",[xe.head,xe.body]),Fe);if(ut!==null){var Ct=new be(b.goal.replace(new _(\",\",[new _(\"retract\",[new _(\":-\",[F,z])]),new _(\",\",[new _(\"=\",[F,xe.head]),new _(\"=\",[z,xe.body])])])),b.substitution,b);Ct.retract=se,Z.push(Ct)}}w.prepend(Z)}}else w.throw_error(P.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator));else me(w,b,F.indicator,b.retract)}},\"retractall/1\":function(w,b,y){var F=y.args[0];P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_callable(F)?w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"retract\",[new P.type.Term(\":-\",[F,new De(\"_\")])]),new _(\"fail\",[])])),b.substitution,b),new be(b.goal.replace(null),b.substitution,b)]):w.throw_error(P.error.type(\"callable\",F,y.indicator))},\"abolish/1\":function(w,b,y){if(P.type.is_variable(y.args[0])||P.type.is_term(y.args[0])&&y.args[0].indicator===\"//2\"&&(P.type.is_variable(y.args[0].args[0])||P.type.is_variable(y.args[0].args[1])))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_term(y.args[0])||y.args[0].indicator!==\"//2\")w.throw_error(P.error.type(\"predicate_indicator\",y.args[0],y.indicator));else if(!P.type.is_atom(y.args[0].args[0]))w.throw_error(P.error.type(\"atom\",y.args[0].args[0],y.indicator));else if(!P.type.is_integer(y.args[0].args[1]))w.throw_error(P.error.type(\"integer\",y.args[0].args[1],y.indicator));else if(y.args[0].args[1].value<0)w.throw_error(P.error.domain(\"not_less_than_zero\",y.args[0].args[1],y.indicator));else if(P.type.is_number(w.get_flag(\"max_arity\"))&&y.args[0].args[1].value>w.get_flag(\"max_arity\").value)w.throw_error(P.error.representation(\"max_arity\",y.indicator));else{var F=y.args[0].args[0].id+\"/\"+y.args[0].args[1].value;w.is_public_predicate(F)?(delete w.session.rules[F],w.success(b)):w.throw_error(P.error.permission(\"modify\",\"static_procedure\",F,y.indicator))}},\"atom_length/2\":function(w,b,y){if(P.type.is_variable(y.args[0]))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_atom(y.args[0]))w.throw_error(P.error.type(\"atom\",y.args[0],y.indicator));else if(!P.type.is_variable(y.args[1])&&!P.type.is_integer(y.args[1]))w.throw_error(P.error.type(\"integer\",y.args[1],y.indicator));else if(P.type.is_integer(y.args[1])&&y.args[1].value<0)w.throw_error(P.error.domain(\"not_less_than_zero\",y.args[1],y.indicator));else{var F=new Qe(y.args[0].id.length,!1);w.prepend([new be(b.goal.replace(new _(\"=\",[F,y.args[1]])),b.substitution,b)])}},\"atom_concat/3\":function(w,b,y){var F,z,Z=y.args[0],$=y.args[1],se=y.args[2];if(P.type.is_variable(se)&&(P.type.is_variable(Z)||P.type.is_variable($)))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_atom(Z))w.throw_error(P.error.type(\"atom\",Z,y.indicator));else if(!P.type.is_variable($)&&!P.type.is_atom($))w.throw_error(P.error.type(\"atom\",$,y.indicator));else if(!P.type.is_variable(se)&&!P.type.is_atom(se))w.throw_error(P.error.type(\"atom\",se,y.indicator));else{var xe=P.type.is_variable(Z),Fe=P.type.is_variable($);if(!xe&&!Fe)z=new _(\"=\",[se,new _(Z.id+$.id)]),w.prepend([new be(b.goal.replace(z),b.substitution,b)]);else if(xe&&!Fe)F=se.id.substr(0,se.id.length-$.id.length),F+$.id===se.id&&(z=new _(\"=\",[Z,new _(F)]),w.prepend([new be(b.goal.replace(z),b.substitution,b)]));else if(Fe&&!xe)F=se.id.substr(Z.id.length),Z.id+F===se.id&&(z=new _(\"=\",[$,new _(F)]),w.prepend([new be(b.goal.replace(z),b.substitution,b)]));else{for(var ut=[],Ct=0;Ct<=se.id.length;Ct++){var qt=new _(se.id.substr(0,Ct)),ir=new _(se.id.substr(Ct));z=new _(\",\",[new _(\"=\",[qt,Z]),new _(\"=\",[ir,$])]),ut.push(new be(b.goal.replace(z),b.substitution,b))}w.prepend(ut)}}},\"sub_atom/5\":function(w,b,y){var F,z=y.args[0],Z=y.args[1],$=y.args[2],se=y.args[3],xe=y.args[4];if(P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_integer(Z))w.throw_error(P.error.type(\"integer\",Z,y.indicator));else if(!P.type.is_variable($)&&!P.type.is_integer($))w.throw_error(P.error.type(\"integer\",$,y.indicator));else if(!P.type.is_variable(se)&&!P.type.is_integer(se))w.throw_error(P.error.type(\"integer\",se,y.indicator));else if(P.type.is_integer(Z)&&Z.value<0)w.throw_error(P.error.domain(\"not_less_than_zero\",Z,y.indicator));else if(P.type.is_integer($)&&$.value<0)w.throw_error(P.error.domain(\"not_less_than_zero\",$,y.indicator));else if(P.type.is_integer(se)&&se.value<0)w.throw_error(P.error.domain(\"not_less_than_zero\",se,y.indicator));else{var Fe=[],ut=[],Ct=[];if(P.type.is_variable(Z))for(F=0;F<=z.id.length;F++)Fe.push(F);else Fe.push(Z.value);if(P.type.is_variable($))for(F=0;F<=z.id.length;F++)ut.push(F);else ut.push($.value);if(P.type.is_variable(se))for(F=0;F<=z.id.length;F++)Ct.push(F);else Ct.push(se.value);var qt=[];for(var ir in Fe)if(Fe.hasOwnProperty(ir)){F=Fe[ir];for(var Pt in ut)if(ut.hasOwnProperty(Pt)){var dn=ut[Pt],Pr=z.id.length-F-dn;if(t(Ct,Pr)!==-1&&F+dn+Pr===z.id.length){var Ir=z.id.substr(F,dn);if(z.id===z.id.substr(0,F)+Ir+z.id.substr(F+dn,Pr)){var Or=new _(\"=\",[new _(Ir),xe]),on=new _(\"=\",[Z,new Qe(F)]),li=new _(\"=\",[$,new Qe(dn)]),So=new _(\"=\",[se,new Qe(Pr)]),ns=new _(\",\",[new _(\",\",[new _(\",\",[on,li]),So]),Or]);qt.push(new be(b.goal.replace(ns),b.substitution,b))}}}}w.prepend(qt)}},\"atom_chars/2\":function(w,b,y){var F=y.args[0],z=y.args[1];if(P.type.is_variable(F)&&P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_atom(F))w.throw_error(P.error.type(\"atom\",F,y.indicator));else if(P.type.is_variable(F)){for(var se=z,xe=P.type.is_variable(F),Fe=\"\";se.indicator===\"./2\";){if(P.type.is_character(se.args[0]))Fe+=se.args[0].id;else if(P.type.is_variable(se.args[0])&&xe){w.throw_error(P.error.instantiation(y.indicator));return}else if(!P.type.is_variable(se.args[0])){w.throw_error(P.error.type(\"character\",se.args[0],y.indicator));return}se=se.args[1]}P.type.is_variable(se)&&xe?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_empty_list(se)&&!P.type.is_variable(se)?w.throw_error(P.error.type(\"list\",z,y.indicator)):w.prepend([new be(b.goal.replace(new _(\"=\",[new _(Fe),F])),b.substitution,b)])}else{for(var Z=new _(\"[]\"),$=F.id.length-1;$>=0;$--)Z=new _(\".\",[new _(F.id.charAt($)),Z]);w.prepend([new be(b.goal.replace(new _(\"=\",[z,Z])),b.substitution,b)])}},\"atom_codes/2\":function(w,b,y){var F=y.args[0],z=y.args[1];if(P.type.is_variable(F)&&P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_atom(F))w.throw_error(P.error.type(\"atom\",F,y.indicator));else if(P.type.is_variable(F)){for(var se=z,xe=P.type.is_variable(F),Fe=\"\";se.indicator===\"./2\";){if(P.type.is_character_code(se.args[0]))Fe+=c(se.args[0].value);else if(P.type.is_variable(se.args[0])&&xe){w.throw_error(P.error.instantiation(y.indicator));return}else if(!P.type.is_variable(se.args[0])){w.throw_error(P.error.representation(\"character_code\",y.indicator));return}se=se.args[1]}P.type.is_variable(se)&&xe?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_empty_list(se)&&!P.type.is_variable(se)?w.throw_error(P.error.type(\"list\",z,y.indicator)):w.prepend([new be(b.goal.replace(new _(\"=\",[new _(Fe),F])),b.substitution,b)])}else{for(var Z=new _(\"[]\"),$=F.id.length-1;$>=0;$--)Z=new _(\".\",[new Qe(n(F.id,$),!1),Z]);w.prepend([new be(b.goal.replace(new _(\"=\",[z,Z])),b.substitution,b)])}},\"char_code/2\":function(w,b,y){var F=y.args[0],z=y.args[1];if(P.type.is_variable(F)&&P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_character(F))w.throw_error(P.error.type(\"character\",F,y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_integer(z))w.throw_error(P.error.type(\"integer\",z,y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_character_code(z))w.throw_error(P.error.representation(\"character_code\",y.indicator));else if(P.type.is_variable(z)){var Z=new Qe(n(F.id,0),!1);w.prepend([new be(b.goal.replace(new _(\"=\",[Z,z])),b.substitution,b)])}else{var $=new _(c(z.value));w.prepend([new be(b.goal.replace(new _(\"=\",[$,F])),b.substitution,b)])}},\"number_chars/2\":function(w,b,y){var F,z=y.args[0],Z=y.args[1];if(P.type.is_variable(z)&&P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_number(z))w.throw_error(P.error.type(\"number\",z,y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_list(Z))w.throw_error(P.error.type(\"list\",Z,y.indicator));else{var $=P.type.is_variable(z);if(!P.type.is_variable(Z)){var se=Z,xe=!0;for(F=\"\";se.indicator===\"./2\";){if(P.type.is_character(se.args[0]))F+=se.args[0].id;else if(P.type.is_variable(se.args[0]))xe=!1;else if(!P.type.is_variable(se.args[0])){w.throw_error(P.error.type(\"character\",se.args[0],y.indicator));return}se=se.args[1]}if(xe=xe&&P.type.is_empty_list(se),!P.type.is_empty_list(se)&&!P.type.is_variable(se)){w.throw_error(P.error.type(\"list\",Z,y.indicator));return}if(!xe&&$){w.throw_error(P.error.instantiation(y.indicator));return}else if(xe)if(P.type.is_variable(se)&&$){w.throw_error(P.error.instantiation(y.indicator));return}else{var Fe=w.parse(F),ut=Fe.value;!P.type.is_number(ut)||Fe.tokens[Fe.tokens.length-1].space?w.throw_error(P.error.syntax_by_predicate(\"parseable_number\",y.indicator)):w.prepend([new be(b.goal.replace(new _(\"=\",[z,ut])),b.substitution,b)]);return}}if(!$){F=z.toString();for(var Ct=new _(\"[]\"),qt=F.length-1;qt>=0;qt--)Ct=new _(\".\",[new _(F.charAt(qt)),Ct]);w.prepend([new be(b.goal.replace(new _(\"=\",[Z,Ct])),b.substitution,b)])}}},\"number_codes/2\":function(w,b,y){var F,z=y.args[0],Z=y.args[1];if(P.type.is_variable(z)&&P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_number(z))w.throw_error(P.error.type(\"number\",z,y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_list(Z))w.throw_error(P.error.type(\"list\",Z,y.indicator));else{var $=P.type.is_variable(z);if(!P.type.is_variable(Z)){var se=Z,xe=!0;for(F=\"\";se.indicator===\"./2\";){if(P.type.is_character_code(se.args[0]))F+=c(se.args[0].value);else if(P.type.is_variable(se.args[0]))xe=!1;else if(!P.type.is_variable(se.args[0])){w.throw_error(P.error.type(\"character_code\",se.args[0],y.indicator));return}se=se.args[1]}if(xe=xe&&P.type.is_empty_list(se),!P.type.is_empty_list(se)&&!P.type.is_variable(se)){w.throw_error(P.error.type(\"list\",Z,y.indicator));return}if(!xe&&$){w.throw_error(P.error.instantiation(y.indicator));return}else if(xe)if(P.type.is_variable(se)&&$){w.throw_error(P.error.instantiation(y.indicator));return}else{var Fe=w.parse(F),ut=Fe.value;!P.type.is_number(ut)||Fe.tokens[Fe.tokens.length-1].space?w.throw_error(P.error.syntax_by_predicate(\"parseable_number\",y.indicator)):w.prepend([new be(b.goal.replace(new _(\"=\",[z,ut])),b.substitution,b)]);return}}if(!$){F=z.toString();for(var Ct=new _(\"[]\"),qt=F.length-1;qt>=0;qt--)Ct=new _(\".\",[new Qe(n(F,qt),!1),Ct]);w.prepend([new be(b.goal.replace(new _(\"=\",[Z,Ct])),b.substitution,b)])}}},\"upcase_atom/2\":function(w,b,y){var F=y.args[0],z=y.args[1];P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_atom(F)?!P.type.is_variable(z)&&!P.type.is_atom(z)?w.throw_error(P.error.type(\"atom\",z,y.indicator)):w.prepend([new be(b.goal.replace(new _(\"=\",[z,new _(F.id.toUpperCase(),[])])),b.substitution,b)]):w.throw_error(P.error.type(\"atom\",F,y.indicator))},\"downcase_atom/2\":function(w,b,y){var F=y.args[0],z=y.args[1];P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_atom(F)?!P.type.is_variable(z)&&!P.type.is_atom(z)?w.throw_error(P.error.type(\"atom\",z,y.indicator)):w.prepend([new be(b.goal.replace(new _(\"=\",[z,new _(F.id.toLowerCase(),[])])),b.substitution,b)]):w.throw_error(P.error.type(\"atom\",F,y.indicator))},\"atomic_list_concat/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _(\"atomic_list_concat\",[F,new _(\"\",[]),z])),b.substitution,b)])},\"atomic_list_concat/3\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(P.type.is_variable(z)||P.type.is_variable(F)&&P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_list(F))w.throw_error(P.error.type(\"list\",F,y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_atom(Z))w.throw_error(P.error.type(\"atom\",Z,y.indicator));else if(P.type.is_variable(Z)){for(var se=\"\",xe=F;P.type.is_term(xe)&&xe.indicator===\"./2\";){if(!P.type.is_atom(xe.args[0])&&!P.type.is_number(xe.args[0])){w.throw_error(P.error.type(\"atomic\",xe.args[0],y.indicator));return}se!==\"\"&&(se+=z.id),P.type.is_atom(xe.args[0])?se+=xe.args[0].id:se+=\"\"+xe.args[0].value,xe=xe.args[1]}se=new _(se,[]),P.type.is_variable(xe)?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_term(xe)||xe.indicator!==\"[]/0\"?w.throw_error(P.error.type(\"list\",F,y.indicator)):w.prepend([new be(b.goal.replace(new _(\"=\",[se,Z])),b.substitution,b)])}else{var $=g(s(Z.id.split(z.id),function(Fe){return new _(Fe,[])}));w.prepend([new be(b.goal.replace(new _(\"=\",[$,F])),b.substitution,b)])}},\"@=</2\":function(w,b,y){P.compare(y.args[0],y.args[1])<=0&&w.success(b)},\"==/2\":function(w,b,y){P.compare(y.args[0],y.args[1])===0&&w.success(b)},\"\\\\==/2\":function(w,b,y){P.compare(y.args[0],y.args[1])!==0&&w.success(b)},\"@</2\":function(w,b,y){P.compare(y.args[0],y.args[1])<0&&w.success(b)},\"@>/2\":function(w,b,y){P.compare(y.args[0],y.args[1])>0&&w.success(b)},\"@>=/2\":function(w,b,y){P.compare(y.args[0],y.args[1])>=0&&w.success(b)},\"compare/3\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(!P.type.is_variable(F)&&!P.type.is_atom(F))w.throw_error(P.error.type(\"atom\",F,y.indicator));else if(P.type.is_atom(F)&&[\"<\",\">\",\"=\"].indexOf(F.id)===-1)w.throw_error(P.type.domain(\"order\",F,y.indicator));else{var $=P.compare(z,Z);$=$===0?\"=\":$===-1?\"<\":\">\",w.prepend([new be(b.goal.replace(new _(\"=\",[F,new _($,[])])),b.substitution,b)])}},\"is/2\":function(w,b,y){var F=y.args[1].interpret(w);P.type.is_number(F)?w.prepend([new be(b.goal.replace(new _(\"=\",[y.args[0],F],w.level)),b.substitution,b)]):w.throw_error(F)},\"between/3\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2];if(P.type.is_variable(F)||P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_integer(F))w.throw_error(P.error.type(\"integer\",F,y.indicator));else if(!P.type.is_integer(z))w.throw_error(P.error.type(\"integer\",z,y.indicator));else if(!P.type.is_variable(Z)&&!P.type.is_integer(Z))w.throw_error(P.error.type(\"integer\",Z,y.indicator));else if(P.type.is_variable(Z)){var $=[new be(b.goal.replace(new _(\"=\",[Z,F])),b.substitution,b)];F.value<z.value&&$.push(new be(b.goal.replace(new _(\"between\",[new Qe(F.value+1,!1),z,Z])),b.substitution,b)),w.prepend($)}else F.value<=Z.value&&z.value>=Z.value&&w.success(b)},\"succ/2\":function(w,b,y){var F=y.args[0],z=y.args[1];P.type.is_variable(F)&&P.type.is_variable(z)?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_variable(F)&&!P.type.is_integer(F)?w.throw_error(P.error.type(\"integer\",F,y.indicator)):!P.type.is_variable(z)&&!P.type.is_integer(z)?w.throw_error(P.error.type(\"integer\",z,y.indicator)):!P.type.is_variable(F)&&F.value<0?w.throw_error(P.error.domain(\"not_less_than_zero\",F,y.indicator)):!P.type.is_variable(z)&&z.value<0?w.throw_error(P.error.domain(\"not_less_than_zero\",z,y.indicator)):(P.type.is_variable(z)||z.value>0)&&(P.type.is_variable(F)?w.prepend([new be(b.goal.replace(new _(\"=\",[F,new Qe(z.value-1,!1)])),b.substitution,b)]):w.prepend([new be(b.goal.replace(new _(\"=\",[z,new Qe(F.value+1,!1)])),b.substitution,b)]))},\"=:=/2\":function(w,b,y){var F=P.arithmetic_compare(w,y.args[0],y.args[1]);P.type.is_term(F)?w.throw_error(F):F===0&&w.success(b)},\"=\\\\=/2\":function(w,b,y){var F=P.arithmetic_compare(w,y.args[0],y.args[1]);P.type.is_term(F)?w.throw_error(F):F!==0&&w.success(b)},\"</2\":function(w,b,y){var F=P.arithmetic_compare(w,y.args[0],y.args[1]);P.type.is_term(F)?w.throw_error(F):F<0&&w.success(b)},\"=</2\":function(w,b,y){var F=P.arithmetic_compare(w,y.args[0],y.args[1]);P.type.is_term(F)?w.throw_error(F):F<=0&&w.success(b)},\">/2\":function(w,b,y){var F=P.arithmetic_compare(w,y.args[0],y.args[1]);P.type.is_term(F)?w.throw_error(F):F>0&&w.success(b)},\">=/2\":function(w,b,y){var F=P.arithmetic_compare(w,y.args[0],y.args[1]);P.type.is_term(F)?w.throw_error(F):F>=0&&w.success(b)},\"var/1\":function(w,b,y){P.type.is_variable(y.args[0])&&w.success(b)},\"atom/1\":function(w,b,y){P.type.is_atom(y.args[0])&&w.success(b)},\"atomic/1\":function(w,b,y){P.type.is_atomic(y.args[0])&&w.success(b)},\"compound/1\":function(w,b,y){P.type.is_compound(y.args[0])&&w.success(b)},\"integer/1\":function(w,b,y){P.type.is_integer(y.args[0])&&w.success(b)},\"float/1\":function(w,b,y){P.type.is_float(y.args[0])&&w.success(b)},\"number/1\":function(w,b,y){P.type.is_number(y.args[0])&&w.success(b)},\"nonvar/1\":function(w,b,y){P.type.is_variable(y.args[0])||w.success(b)},\"ground/1\":function(w,b,y){y.variables().length===0&&w.success(b)},\"acyclic_term/1\":function(w,b,y){for(var F=b.substitution.apply(b.substitution),z=y.args[0].variables(),Z=0;Z<z.length;Z++)if(b.substitution.links[z[Z]]!==void 0&&!b.substitution.links[z[Z]].equals(F.links[z[Z]]))return;w.success(b)},\"callable/1\":function(w,b,y){P.type.is_callable(y.args[0])&&w.success(b)},\"is_list/1\":function(w,b,y){for(var F=y.args[0];P.type.is_term(F)&&F.indicator===\"./2\";)F=F.args[1];P.type.is_term(F)&&F.indicator===\"[]/0\"&&w.success(b)},\"current_input/1\":function(w,b,y){var F=y.args[0];!P.type.is_variable(F)&&!P.type.is_stream(F)&&!P.type.is_atom(F)?w.throw_error(P.error.domain(\"stream\",F,y.indicator)):(P.type.is_atom(F)&&w.get_stream_by_alias(F.id)&&(F=w.get_stream_by_alias(F.id)),w.prepend([new be(b.goal.replace(new _(\"=\",[F,w.get_current_input()])),b.substitution,b)]))},\"current_output/1\":function(w,b,y){var F=y.args[0];!P.type.is_variable(F)&&!P.type.is_stream(F)&&!P.type.is_atom(F)?w.throw_error(P.error.domain(\"stream_or_alias\",F,y.indicator)):(P.type.is_atom(F)&&w.get_stream_by_alias(F.id)&&(F=w.get_stream_by_alias(F.id)),w.prepend([new be(b.goal.replace(new _(\"=\",[F,w.get_current_output()])),b.substitution,b)]))},\"set_input/1\":function(w,b,y){var F=y.args[0],z=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_variable(F)&&!P.type.is_stream(F)&&!P.type.is_atom(F)?w.throw_error(P.error.domain(\"stream_or_alias\",F,y.indicator)):P.type.is_stream(z)?z.output===!0?w.throw_error(P.error.permission(\"input\",\"stream\",F,y.indicator)):(w.set_current_input(z),w.success(b)):w.throw_error(P.error.existence(\"stream\",F,y.indicator))},\"set_output/1\":function(w,b,y){var F=y.args[0],z=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_variable(F)&&!P.type.is_stream(F)&&!P.type.is_atom(F)?w.throw_error(P.error.domain(\"stream_or_alias\",F,y.indicator)):P.type.is_stream(z)?z.input===!0?w.throw_error(P.error.permission(\"output\",\"stream\",F,y.indicator)):(w.set_current_output(z),w.success(b)):w.throw_error(P.error.existence(\"stream\",F,y.indicator))},\"open/3\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2];w.prepend([new be(b.goal.replace(new _(\"open\",[F,z,Z,new _(\"[]\",[])])),b.substitution,b)])},\"open/4\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2],$=y.args[3];if(P.type.is_variable(F)||P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_atom(z))w.throw_error(P.error.type(\"atom\",z,y.indicator));else if(!P.type.is_list($))w.throw_error(P.error.type(\"list\",$,y.indicator));else if(!P.type.is_variable(Z))w.throw_error(P.error.type(\"variable\",Z,y.indicator));else if(!P.type.is_atom(F)&&!P.type.is_streamable(F))w.throw_error(P.error.domain(\"source_sink\",F,y.indicator));else if(!P.type.is_io_mode(z))w.throw_error(P.error.domain(\"io_mode\",z,y.indicator));else{for(var se={},xe=$,Fe;P.type.is_term(xe)&&xe.indicator===\"./2\";){if(Fe=xe.args[0],P.type.is_variable(Fe)){w.throw_error(P.error.instantiation(y.indicator));return}else if(!P.type.is_stream_option(Fe)){w.throw_error(P.error.domain(\"stream_option\",Fe,y.indicator));return}se[Fe.id]=Fe.args[0].id,xe=xe.args[1]}if(xe.indicator!==\"[]/0\"){P.type.is_variable(xe)?w.throw_error(P.error.instantiation(y.indicator)):w.throw_error(P.error.type(\"list\",$,y.indicator));return}else{var ut=se.alias;if(ut&&w.get_stream_by_alias(ut)){w.throw_error(P.error.permission(\"open\",\"source_sink\",new _(\"alias\",[new _(ut,[])]),y.indicator));return}se.type||(se.type=\"text\");var Ct;if(P.type.is_atom(F)?Ct=w.file_system_open(F.id,se.type,z.id):Ct=F.stream(se.type,z.id),Ct===!1){w.throw_error(P.error.permission(\"open\",\"source_sink\",F,y.indicator));return}else if(Ct===null){w.throw_error(P.error.existence(\"source_sink\",F,y.indicator));return}var qt=new Ne(Ct,z.id,se.alias,se.type,se.reposition===\"true\",se.eof_action);ut?w.session.streams[ut]=qt:w.session.streams[qt.id]=qt,w.prepend([new be(b.goal.replace(new _(\"=\",[Z,qt])),b.substitution,b)])}}},\"close/1\":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(\"close\",[F,new _(\"[]\",[])])),b.substitution,b)])},\"close/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(P.type.is_variable(F)||P.type.is_variable(z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_list(z))w.throw_error(P.error.type(\"list\",z,y.indicator));else if(!P.type.is_stream(F)&&!P.type.is_atom(F))w.throw_error(P.error.domain(\"stream_or_alias\",F,y.indicator));else if(!P.type.is_stream(Z)||Z.stream===null)w.throw_error(P.error.existence(\"stream\",F,y.indicator));else{for(var $={},se=z,xe;P.type.is_term(se)&&se.indicator===\"./2\";){if(xe=se.args[0],P.type.is_variable(xe)){w.throw_error(P.error.instantiation(y.indicator));return}else if(!P.type.is_close_option(xe)){w.throw_error(P.error.domain(\"close_option\",xe,y.indicator));return}$[xe.id]=xe.args[0].id===\"true\",se=se.args[1]}if(se.indicator!==\"[]/0\"){P.type.is_variable(se)?w.throw_error(P.error.instantiation(y.indicator)):w.throw_error(P.error.type(\"list\",z,y.indicator));return}else{if(Z===w.session.standard_input||Z===w.session.standard_output){w.success(b);return}else Z===w.session.current_input?w.session.current_input=w.session.standard_input:Z===w.session.current_output&&(w.session.current_output=w.session.current_output);Z.alias!==null?delete w.session.streams[Z.alias]:delete w.session.streams[Z.id],Z.output&&Z.stream.flush();var Fe=Z.stream.close();Z.stream=null,($.force===!0||Fe===!0)&&w.success(b)}}},\"flush_output/0\":function(w,b,y){w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"current_output\",[new De(\"S\")]),new _(\"flush_output\",[new De(\"S\")])])),b.substitution,b)])},\"flush_output/1\":function(w,b,y){var F=y.args[0],z=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_stream(F)&&!P.type.is_atom(F)?w.throw_error(P.error.domain(\"stream_or_alias\",F,y.indicator)):!P.type.is_stream(z)||z.stream===null?w.throw_error(P.error.existence(\"stream\",F,y.indicator)):F.input===!0?w.throw_error(P.error.permission(\"output\",\"stream\",output,y.indicator)):(z.stream.flush(),w.success(b))},\"stream_property/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(!P.type.is_variable(F)&&!P.type.is_stream(F)&&!P.type.is_atom(F))w.throw_error(P.error.domain(\"stream_or_alias\",F,y.indicator));else if(!P.type.is_variable(F)&&(!P.type.is_stream(Z)||Z.stream===null))w.throw_error(P.error.existence(\"stream\",F,y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_stream_property(z))w.throw_error(P.error.domain(\"stream_property\",z,y.indicator));else{var $=[],se=[];if(!P.type.is_variable(F))$.push(Z);else for(var xe in w.session.streams)$.push(w.session.streams[xe]);for(var Fe=0;Fe<$.length;Fe++){var ut=[];$[Fe].filename&&ut.push(new _(\"file_name\",[new _($[Fe].file_name,[])])),ut.push(new _(\"mode\",[new _($[Fe].mode,[])])),ut.push(new _($[Fe].input?\"input\":\"output\",[])),$[Fe].alias&&ut.push(new _(\"alias\",[new _($[Fe].alias,[])])),ut.push(new _(\"position\",[typeof $[Fe].position==\"number\"?new Qe($[Fe].position,!1):new _($[Fe].position,[])])),ut.push(new _(\"end_of_stream\",[new _($[Fe].position===\"end_of_stream\"?\"at\":$[Fe].position===\"past_end_of_stream\"?\"past\":\"not\",[])])),ut.push(new _(\"eof_action\",[new _($[Fe].eof_action,[])])),ut.push(new _(\"reposition\",[new _($[Fe].reposition?\"true\":\"false\",[])])),ut.push(new _(\"type\",[new _($[Fe].type,[])]));for(var Ct=0;Ct<ut.length;Ct++)se.push(new be(b.goal.replace(new _(\",\",[new _(\"=\",[P.type.is_variable(F)?F:Z,$[Fe]]),new _(\"=\",[z,ut[Ct]])])),b.substitution,b))}w.prepend(se)}},\"at_end_of_stream/0\":function(w,b,y){w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"current_input\",[new De(\"S\")]),new _(\",\",[new _(\"stream_property\",[new De(\"S\"),new _(\"end_of_stream\",[new De(\"E\")])]),new _(\",\",[new _(\"!\",[]),new _(\";\",[new _(\"=\",[new De(\"E\"),new _(\"at\",[])]),new _(\"=\",[new De(\"E\"),new _(\"past\",[])])])])])])),b.substitution,b)])},\"at_end_of_stream/1\":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"stream_property\",[F,new _(\"end_of_stream\",[new De(\"E\")])]),new _(\",\",[new _(\"!\",[]),new _(\";\",[new _(\"=\",[new De(\"E\"),new _(\"at\",[])]),new _(\"=\",[new De(\"E\"),new _(\"past\",[])])])])])),b.substitution,b)])},\"set_stream_position/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);P.type.is_variable(F)||P.type.is_variable(z)?w.throw_error(P.error.instantiation(y.indicator)):!P.type.is_stream(F)&&!P.type.is_atom(F)?w.throw_error(P.error.domain(\"stream_or_alias\",F,y.indicator)):!P.type.is_stream(Z)||Z.stream===null?w.throw_error(P.error.existence(\"stream\",F,y.indicator)):P.type.is_stream_position(z)?Z.reposition===!1?w.throw_error(P.error.permission(\"reposition\",\"stream\",F,y.indicator)):(P.type.is_integer(z)?Z.position=z.value:Z.position=z.id,w.success(b)):w.throw_error(P.error.domain(\"stream_position\",z,y.indicator))},\"get_char/1\":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"current_input\",[new De(\"S\")]),new _(\"get_char\",[new De(\"S\"),F])])),b.substitution,b)])},\"get_char/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(P.type.is_variable(F))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_character(z))w.throw_error(P.error.type(\"in_character\",z,y.indicator));else if(!P.type.is_stream(F)&&!P.type.is_atom(F))w.throw_error(P.error.domain(\"stream_or_alias\",F,y.indicator));else if(!P.type.is_stream(Z)||Z.stream===null)w.throw_error(P.error.existence(\"stream\",F,y.indicator));else if(Z.output)w.throw_error(P.error.permission(\"input\",\"stream\",F,y.indicator));else if(Z.type===\"binary\")w.throw_error(P.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(P.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var $;if(Z.position===\"end_of_stream\")$=\"end_of_file\",Z.position=\"past_end_of_stream\";else{if($=Z.stream.get(1,Z.position),$===null){w.throw_error(P.error.representation(\"character\",y.indicator));return}Z.position++}w.prepend([new be(b.goal.replace(new _(\"=\",[new _($,[]),z])),b.substitution,b)])}},\"get_code/1\":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"current_input\",[new De(\"S\")]),new _(\"get_code\",[new De(\"S\"),F])])),b.substitution,b)])},\"get_code/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(P.type.is_variable(F))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_integer(z))w.throw_error(P.error.type(\"integer\",char,y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_stream(F)&&!P.type.is_atom(F))w.throw_error(P.error.domain(\"stream_or_alias\",F,y.indicator));else if(!P.type.is_stream(Z)||Z.stream===null)w.throw_error(P.error.existence(\"stream\",F,y.indicator));else if(Z.output)w.throw_error(P.error.permission(\"input\",\"stream\",F,y.indicator));else if(Z.type===\"binary\")w.throw_error(P.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(P.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var $;if(Z.position===\"end_of_stream\")$=-1,Z.position=\"past_end_of_stream\";else{if($=Z.stream.get(1,Z.position),$===null){w.throw_error(P.error.representation(\"character\",y.indicator));return}$=n($,0),Z.position++}w.prepend([new be(b.goal.replace(new _(\"=\",[new Qe($,!1),z])),b.substitution,b)])}},\"peek_char/1\":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"current_input\",[new De(\"S\")]),new _(\"peek_char\",[new De(\"S\"),F])])),b.substitution,b)])},\"peek_char/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(P.type.is_variable(F))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_character(z))w.throw_error(P.error.type(\"in_character\",z,y.indicator));else if(!P.type.is_stream(F)&&!P.type.is_atom(F))w.throw_error(P.error.domain(\"stream_or_alias\",F,y.indicator));else if(!P.type.is_stream(Z)||Z.stream===null)w.throw_error(P.error.existence(\"stream\",F,y.indicator));else if(Z.output)w.throw_error(P.error.permission(\"input\",\"stream\",F,y.indicator));else if(Z.type===\"binary\")w.throw_error(P.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(P.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var $;if(Z.position===\"end_of_stream\")$=\"end_of_file\",Z.position=\"past_end_of_stream\";else if($=Z.stream.get(1,Z.position),$===null){w.throw_error(P.error.representation(\"character\",y.indicator));return}w.prepend([new be(b.goal.replace(new _(\"=\",[new _($,[]),z])),b.substitution,b)])}},\"peek_code/1\":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"current_input\",[new De(\"S\")]),new _(\"peek_code\",[new De(\"S\"),F])])),b.substitution,b)])},\"peek_code/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(P.type.is_variable(F))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_integer(z))w.throw_error(P.error.type(\"integer\",char,y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_stream(F)&&!P.type.is_atom(F))w.throw_error(P.error.domain(\"stream_or_alias\",F,y.indicator));else if(!P.type.is_stream(Z)||Z.stream===null)w.throw_error(P.error.existence(\"stream\",F,y.indicator));else if(Z.output)w.throw_error(P.error.permission(\"input\",\"stream\",F,y.indicator));else if(Z.type===\"binary\")w.throw_error(P.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(P.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var $;if(Z.position===\"end_of_stream\")$=-1,Z.position=\"past_end_of_stream\";else{if($=Z.stream.get(1,Z.position),$===null){w.throw_error(P.error.representation(\"character\",y.indicator));return}$=n($,0)}w.prepend([new be(b.goal.replace(new _(\"=\",[new Qe($,!1),z])),b.substitution,b)])}},\"put_char/1\":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"current_output\",[new De(\"S\")]),new _(\"put_char\",[new De(\"S\"),F])])),b.substitution,b)])},\"put_char/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);P.type.is_variable(F)||P.type.is_variable(z)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_character(z)?!P.type.is_variable(F)&&!P.type.is_stream(F)&&!P.type.is_atom(F)?w.throw_error(P.error.domain(\"stream_or_alias\",F,y.indicator)):!P.type.is_stream(Z)||Z.stream===null?w.throw_error(P.error.existence(\"stream\",F,y.indicator)):Z.input?w.throw_error(P.error.permission(\"output\",\"stream\",F,y.indicator)):Z.type===\"binary\"?w.throw_error(P.error.permission(\"output\",\"binary_stream\",F,y.indicator)):Z.stream.put(z.id,Z.position)&&(typeof Z.position==\"number\"&&Z.position++,w.success(b)):w.throw_error(P.error.type(\"character\",z,y.indicator))},\"put_code/1\":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"current_output\",[new De(\"S\")]),new _(\"put_code\",[new De(\"S\"),F])])),b.substitution,b)])},\"put_code/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);P.type.is_variable(F)||P.type.is_variable(z)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_integer(z)?P.type.is_character_code(z)?!P.type.is_variable(F)&&!P.type.is_stream(F)&&!P.type.is_atom(F)?w.throw_error(P.error.domain(\"stream_or_alias\",F,y.indicator)):!P.type.is_stream(Z)||Z.stream===null?w.throw_error(P.error.existence(\"stream\",F,y.indicator)):Z.input?w.throw_error(P.error.permission(\"output\",\"stream\",F,y.indicator)):Z.type===\"binary\"?w.throw_error(P.error.permission(\"output\",\"binary_stream\",F,y.indicator)):Z.stream.put_char(c(z.value),Z.position)&&(typeof Z.position==\"number\"&&Z.position++,w.success(b)):w.throw_error(P.error.representation(\"character_code\",y.indicator)):w.throw_error(P.error.type(\"integer\",z,y.indicator))},\"nl/0\":function(w,b,y){w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"current_output\",[new De(\"S\")]),new _(\"put_char\",[new De(\"S\"),new _(`\n`,[])])])),b.substitution,b)])},\"nl/1\":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(\"put_char\",[F,new _(`\n`,[])])),b.substitution,b)])},\"get_byte/1\":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"current_input\",[new De(\"S\")]),new _(\"get_byte\",[new De(\"S\"),F])])),b.substitution,b)])},\"get_byte/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(P.type.is_variable(F))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_byte(z))w.throw_error(P.error.type(\"in_byte\",char,y.indicator));else if(!P.type.is_stream(F)&&!P.type.is_atom(F))w.throw_error(P.error.domain(\"stream_or_alias\",F,y.indicator));else if(!P.type.is_stream(Z)||Z.stream===null)w.throw_error(P.error.existence(\"stream\",F,y.indicator));else if(Z.output)w.throw_error(P.error.permission(\"input\",\"stream\",F,y.indicator));else if(Z.type===\"text\")w.throw_error(P.error.permission(\"input\",\"text_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(P.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var $;if(Z.position===\"end_of_stream\")$=\"end_of_file\",Z.position=\"past_end_of_stream\";else{if($=Z.stream.get_byte(Z.position),$===null){w.throw_error(P.error.representation(\"byte\",y.indicator));return}Z.position++}w.prepend([new be(b.goal.replace(new _(\"=\",[new Qe($,!1),z])),b.substitution,b)])}},\"peek_byte/1\":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"current_input\",[new De(\"S\")]),new _(\"peek_byte\",[new De(\"S\"),F])])),b.substitution,b)])},\"peek_byte/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(P.type.is_variable(F))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_variable(z)&&!P.type.is_byte(z))w.throw_error(P.error.type(\"in_byte\",char,y.indicator));else if(!P.type.is_stream(F)&&!P.type.is_atom(F))w.throw_error(P.error.domain(\"stream_or_alias\",F,y.indicator));else if(!P.type.is_stream(Z)||Z.stream===null)w.throw_error(P.error.existence(\"stream\",F,y.indicator));else if(Z.output)w.throw_error(P.error.permission(\"input\",\"stream\",F,y.indicator));else if(Z.type===\"text\")w.throw_error(P.error.permission(\"input\",\"text_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(P.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var $;if(Z.position===\"end_of_stream\")$=\"end_of_file\",Z.position=\"past_end_of_stream\";else if($=Z.stream.get_byte(Z.position),$===null){w.throw_error(P.error.representation(\"byte\",y.indicator));return}w.prepend([new be(b.goal.replace(new _(\"=\",[new Qe($,!1),z])),b.substitution,b)])}},\"put_byte/1\":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"current_output\",[new De(\"S\")]),new _(\"put_byte\",[new De(\"S\"),F])])),b.substitution,b)])},\"put_byte/2\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);P.type.is_variable(F)||P.type.is_variable(z)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_byte(z)?!P.type.is_variable(F)&&!P.type.is_stream(F)&&!P.type.is_atom(F)?w.throw_error(P.error.domain(\"stream_or_alias\",F,y.indicator)):!P.type.is_stream(Z)||Z.stream===null?w.throw_error(P.error.existence(\"stream\",F,y.indicator)):Z.input?w.throw_error(P.error.permission(\"output\",\"stream\",F,y.indicator)):Z.type===\"text\"?w.throw_error(P.error.permission(\"output\",\"text_stream\",F,y.indicator)):Z.stream.put_byte(z.value,Z.position)&&(typeof Z.position==\"number\"&&Z.position++,w.success(b)):w.throw_error(P.error.type(\"byte\",z,y.indicator))},\"read/1\":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"current_input\",[new De(\"S\")]),new _(\"read_term\",[new De(\"S\"),F,new _(\"[]\",[])])])),b.substitution,b)])},\"read/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _(\"read_term\",[F,z,new _(\"[]\",[])])),b.substitution,b)])},\"read_term/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"current_input\",[new De(\"S\")]),new _(\"read_term\",[new De(\"S\"),F,z])])),b.substitution,b)])},\"read_term/3\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2],$=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(P.type.is_variable(F)||P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_list(Z))w.throw_error(P.error.type(\"list\",Z,y.indicator));else if(!P.type.is_stream(F)&&!P.type.is_atom(F))w.throw_error(P.error.domain(\"stream_or_alias\",F,y.indicator));else if(!P.type.is_stream($)||$.stream===null)w.throw_error(P.error.existence(\"stream\",F,y.indicator));else if($.output)w.throw_error(P.error.permission(\"input\",\"stream\",F,y.indicator));else if($.type===\"binary\")w.throw_error(P.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if($.position===\"past_end_of_stream\"&&$.eof_action===\"error\")w.throw_error(P.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{for(var se={},xe=Z,Fe;P.type.is_term(xe)&&xe.indicator===\"./2\";){if(Fe=xe.args[0],P.type.is_variable(Fe)){w.throw_error(P.error.instantiation(y.indicator));return}else if(!P.type.is_read_option(Fe)){w.throw_error(P.error.domain(\"read_option\",Fe,y.indicator));return}se[Fe.id]=Fe.args[0],xe=xe.args[1]}if(xe.indicator!==\"[]/0\"){P.type.is_variable(xe)?w.throw_error(P.error.instantiation(y.indicator)):w.throw_error(P.error.type(\"list\",Z,y.indicator));return}else{for(var ut,Ct,qt,ir=\"\",Pt=[],dn=null;dn===null||dn.name!==\"atom\"||dn.value!==\".\"||qt.type===f&&P.flatten_error(new _(\"throw\",[qt.value])).found===\"token_not_found\";){if(ut=$.stream.get(1,$.position),ut===null){w.throw_error(P.error.representation(\"character\",y.indicator));return}if(ut===\"end_of_file\"||ut===\"past_end_of_file\"){qt?w.throw_error(P.error.syntax(Pt[qt.len-1],\". or expression expected\",!1)):w.throw_error(P.error.syntax(null,\"token not found\",!0));return}$.position++,ir+=ut,Ct=new U(w),Ct.new_text(ir),Pt=Ct.get_tokens(),dn=Pt!==null&&Pt.length>0?Pt[Pt.length-1]:null,Pt!==null&&(qt=Y(w,Pt,0,w.__get_max_priority(),!1))}if(qt.type===p&&qt.len===Pt.length-1&&dn.value===\".\"){qt=qt.value.rename(w);var Pr=new _(\"=\",[z,qt]);if(se.variables){var Ir=g(s(Be(qt.variables()),function(Or){return new De(Or)}));Pr=new _(\",\",[Pr,new _(\"=\",[se.variables,Ir])])}if(se.variable_names){var Ir=g(s(Be(qt.variables()),function(on){var li;for(li in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(li)&&w.session.renamed_variables[li]===on)break;return new _(\"=\",[new _(li,[]),new De(on)])}));Pr=new _(\",\",[Pr,new _(\"=\",[se.variable_names,Ir])])}if(se.singletons){var Ir=g(s(new je(qt,null).singleton_variables(),function(on){var li;for(li in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(li)&&w.session.renamed_variables[li]===on)break;return new _(\"=\",[new _(li,[]),new De(on)])}));Pr=new _(\",\",[Pr,new _(\"=\",[se.singletons,Ir])])}w.prepend([new be(b.goal.replace(Pr),b.substitution,b)])}else qt.type===p?w.throw_error(P.error.syntax(Pt[qt.len],\"unexpected token\",!1)):w.throw_error(qt.value)}}},\"write/1\":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"current_output\",[new De(\"S\")]),new _(\"write\",[new De(\"S\"),F])])),b.substitution,b)])},\"write/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _(\"write_term\",[F,z,new _(\".\",[new _(\"quoted\",[new _(\"false\",[])]),new _(\".\",[new _(\"ignore_ops\",[new _(\"false\")]),new _(\".\",[new _(\"numbervars\",[new _(\"true\")]),new _(\"[]\",[])])])])])),b.substitution,b)])},\"writeq/1\":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"current_output\",[new De(\"S\")]),new _(\"writeq\",[new De(\"S\"),F])])),b.substitution,b)])},\"writeq/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _(\"write_term\",[F,z,new _(\".\",[new _(\"quoted\",[new _(\"true\",[])]),new _(\".\",[new _(\"ignore_ops\",[new _(\"false\")]),new _(\".\",[new _(\"numbervars\",[new _(\"true\")]),new _(\"[]\",[])])])])])),b.substitution,b)])},\"write_canonical/1\":function(w,b,y){var F=y.args[0];w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"current_output\",[new De(\"S\")]),new _(\"write_canonical\",[new De(\"S\"),F])])),b.substitution,b)])},\"write_canonical/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _(\"write_term\",[F,z,new _(\".\",[new _(\"quoted\",[new _(\"true\",[])]),new _(\".\",[new _(\"ignore_ops\",[new _(\"true\")]),new _(\".\",[new _(\"numbervars\",[new _(\"false\")]),new _(\"[]\",[])])])])])),b.substitution,b)])},\"write_term/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new be(b.goal.replace(new _(\",\",[new _(\"current_output\",[new De(\"S\")]),new _(\"write_term\",[new De(\"S\"),F,z])])),b.substitution,b)])},\"write_term/3\":function(w,b,y){var F=y.args[0],z=y.args[1],Z=y.args[2],$=P.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(P.type.is_variable(F)||P.type.is_variable(Z))w.throw_error(P.error.instantiation(y.indicator));else if(!P.type.is_list(Z))w.throw_error(P.error.type(\"list\",Z,y.indicator));else if(!P.type.is_stream(F)&&!P.type.is_atom(F))w.throw_error(P.error.domain(\"stream_or_alias\",F,y.indicator));else if(!P.type.is_stream($)||$.stream===null)w.throw_error(P.error.existence(\"stream\",F,y.indicator));else if($.input)w.throw_error(P.error.permission(\"output\",\"stream\",F,y.indicator));else if($.type===\"binary\")w.throw_error(P.error.permission(\"output\",\"binary_stream\",F,y.indicator));else if($.position===\"past_end_of_stream\"&&$.eof_action===\"error\")w.throw_error(P.error.permission(\"output\",\"past_end_of_stream\",F,y.indicator));else{for(var se={},xe=Z,Fe;P.type.is_term(xe)&&xe.indicator===\"./2\";){if(Fe=xe.args[0],P.type.is_variable(Fe)){w.throw_error(P.error.instantiation(y.indicator));return}else if(!P.type.is_write_option(Fe)){w.throw_error(P.error.domain(\"write_option\",Fe,y.indicator));return}se[Fe.id]=Fe.args[0].id===\"true\",xe=xe.args[1]}if(xe.indicator!==\"[]/0\"){P.type.is_variable(xe)?w.throw_error(P.error.instantiation(y.indicator)):w.throw_error(P.error.type(\"list\",Z,y.indicator));return}else{se.session=w.session;var ut=z.toString(se);$.stream.put(ut,$.position),typeof $.position==\"number\"&&($.position+=ut.length),w.success(b)}}},\"halt/0\":function(w,b,y){w.points=[]},\"halt/1\":function(w,b,y){var F=y.args[0];P.type.is_variable(F)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_integer(F)?w.points=[]:w.throw_error(P.error.type(\"integer\",F,y.indicator))},\"current_prolog_flag/2\":function(w,b,y){var F=y.args[0],z=y.args[1];if(!P.type.is_variable(F)&&!P.type.is_atom(F))w.throw_error(P.error.type(\"atom\",F,y.indicator));else if(!P.type.is_variable(F)&&!P.type.is_flag(F))w.throw_error(P.error.domain(\"prolog_flag\",F,y.indicator));else{var Z=[];for(var $ in P.flag)if(P.flag.hasOwnProperty($)){var se=new _(\",\",[new _(\"=\",[new _($),F]),new _(\"=\",[w.get_flag($),z])]);Z.push(new be(b.goal.replace(se),b.substitution,b))}w.prepend(Z)}},\"set_prolog_flag/2\":function(w,b,y){var F=y.args[0],z=y.args[1];P.type.is_variable(F)||P.type.is_variable(z)?w.throw_error(P.error.instantiation(y.indicator)):P.type.is_atom(F)?P.type.is_flag(F)?P.type.is_value_flag(F,z)?P.type.is_modifiable_flag(F)?(w.session.flag[F.id]=z,w.success(b)):w.throw_error(P.error.permission(\"modify\",\"flag\",F)):w.throw_error(P.error.domain(\"flag_value\",new _(\"+\",[F,z]),y.indicator)):w.throw_error(P.error.domain(\"prolog_flag\",F,y.indicator)):w.throw_error(P.error.type(\"atom\",F,y.indicator))}},flag:{bounded:{allowed:[new _(\"true\"),new _(\"false\")],value:new _(\"true\"),changeable:!1},max_integer:{allowed:[new Qe(Number.MAX_SAFE_INTEGER)],value:new Qe(Number.MAX_SAFE_INTEGER),changeable:!1},min_integer:{allowed:[new Qe(Number.MIN_SAFE_INTEGER)],value:new Qe(Number.MIN_SAFE_INTEGER),changeable:!1},integer_rounding_function:{allowed:[new _(\"down\"),new _(\"toward_zero\")],value:new _(\"toward_zero\"),changeable:!1},char_conversion:{allowed:[new _(\"on\"),new _(\"off\")],value:new _(\"on\"),changeable:!0},debug:{allowed:[new _(\"on\"),new _(\"off\")],value:new _(\"off\"),changeable:!0},max_arity:{allowed:[new _(\"unbounded\")],value:new _(\"unbounded\"),changeable:!1},unknown:{allowed:[new _(\"error\"),new _(\"fail\"),new _(\"warning\")],value:new _(\"error\"),changeable:!0},double_quotes:{allowed:[new _(\"chars\"),new _(\"codes\"),new _(\"atom\")],value:new _(\"codes\"),changeable:!0},occurs_check:{allowed:[new _(\"false\"),new _(\"true\")],value:new _(\"false\"),changeable:!0},dialect:{allowed:[new _(\"tau\")],value:new _(\"tau\"),changeable:!1},version_data:{allowed:[new _(\"tau\",[new Qe(e.major,!1),new Qe(e.minor,!1),new Qe(e.patch,!1),new _(e.status)])],value:new _(\"tau\",[new Qe(e.major,!1),new Qe(e.minor,!1),new Qe(e.patch,!1),new _(e.status)]),changeable:!1},nodejs:{allowed:[new _(\"yes\"),new _(\"no\")],value:new _(typeof tc<\"u\"&&tc.exports?\"yes\":\"no\"),changeable:!1}},unify:function(w,b,y){y=y===void 0?!1:y;for(var F=[{left:w,right:b}],z={};F.length!==0;){var Z=F.pop();if(w=Z.left,b=Z.right,P.type.is_term(w)&&P.type.is_term(b)){if(w.indicator!==b.indicator)return null;for(var $=0;$<w.args.length;$++)F.push({left:w.args[$],right:b.args[$]})}else if(P.type.is_number(w)&&P.type.is_number(b)){if(w.value!==b.value||w.is_float!==b.is_float)return null}else if(P.type.is_variable(w)){if(P.type.is_variable(b)&&w.id===b.id)continue;if(y===!0&&b.variables().indexOf(w.id)!==-1)return null;if(w.id!==\"_\"){var se=new ke;se.add(w.id,b);for(var $=0;$<F.length;$++)F[$].left=F[$].left.apply(se),F[$].right=F[$].right.apply(se);for(var $ in z)z[$]=z[$].apply(se);z[w.id]=b}}else if(P.type.is_variable(b))F.push({left:b,right:w});else if(w.unify!==void 0){if(!w.unify(b))return null}else return null}return new ke(z)},compare:function(w,b){var y=P.type.compare(w,b);return y!==0?y:w.compare(b)},arithmetic_compare:function(w,b,y){var F=b.interpret(w);if(P.type.is_number(F)){var z=y.interpret(w);return P.type.is_number(z)?F.value<z.value?-1:F.value>z.value?1:0:z}else return F},operate:function(w,b){if(P.type.is_operator(b)){for(var y=P.type.is_operator(b),F=[],z,Z=!1,$=0;$<b.args.length;$++){if(z=b.args[$].interpret(w),P.type.is_number(z)){if(y.type_args!==null&&z.is_float!==y.type_args)return P.error.type(y.type_args?\"float\":\"integer\",z,w.__call_indicator);F.push(z.value)}else return z;Z=Z||z.is_float}return F.push(w),z=P.arithmetic.evaluation[b.indicator].fn.apply(this,F),Z=y.type_result===null?Z:y.type_result,P.type.is_term(z)?z:z===Number.POSITIVE_INFINITY||z===Number.NEGATIVE_INFINITY?P.error.evaluation(\"overflow\",w.__call_indicator):Z===!1&&w.get_flag(\"bounded\").id===\"true\"&&(z>w.get_flag(\"max_integer\").value||z<w.get_flag(\"min_integer\").value)?P.error.evaluation(\"int_overflow\",w.__call_indicator):new Qe(z,Z)}else return P.error.type(\"evaluable\",b.indicator,w.__call_indicator)},error:{existence:function(w,b,y){return typeof b==\"string\"&&(b=X(b)),new _(\"error\",[new _(\"existence_error\",[new _(w),b]),X(y)])},type:function(w,b,y){return new _(\"error\",[new _(\"type_error\",[new _(w),b]),X(y)])},instantiation:function(w){return new _(\"error\",[new _(\"instantiation_error\"),X(w)])},domain:function(w,b,y){return new _(\"error\",[new _(\"domain_error\",[new _(w),b]),X(y)])},representation:function(w,b){return new _(\"error\",[new _(\"representation_error\",[new _(w)]),X(b)])},permission:function(w,b,y,F){return new _(\"error\",[new _(\"permission_error\",[new _(w),new _(b),y]),X(F)])},evaluation:function(w,b){return new _(\"error\",[new _(\"evaluation_error\",[new _(w)]),X(b)])},syntax:function(w,b,y){w=w||{value:\"\",line:0,column:0,matches:[\"\"],start:0};var F=y&&w.matches.length>0?w.start+w.matches[0].length:w.start,z=y?new _(\"token_not_found\"):new _(\"found\",[new _(w.value.toString())]),Z=new _(\".\",[new _(\"line\",[new Qe(w.line+1)]),new _(\".\",[new _(\"column\",[new Qe(F+1)]),new _(\".\",[z,new _(\"[]\",[])])])]);return new _(\"error\",[new _(\"syntax_error\",[new _(b)]),Z])},syntax_by_predicate:function(w,b){return new _(\"error\",[new _(\"syntax_error\",[new _(w)]),X(b)])}},warning:{singleton:function(w,b,y){for(var F=new _(\"[]\"),z=w.length-1;z>=0;z--)F=new _(\".\",[new De(w[z]),F]);return new _(\"warning\",[new _(\"singleton_variables\",[F,X(b)]),new _(\".\",[new _(\"line\",[new Qe(y,!1)]),new _(\"[]\")])])},failed_goal:function(w,b){return new _(\"warning\",[new _(\"failed_goal\",[w]),new _(\".\",[new _(\"line\",[new Qe(b,!1)]),new _(\"[]\")])])}},format_variable:function(w){return\"_\"+w},format_answer:function(w,b,F){b instanceof Re&&(b=b.thread);var F=F||{};if(F.session=b?b.session:void 0,P.type.is_error(w))return\"uncaught exception: \"+w.args[0].toString();if(w===!1)return\"false.\";if(w===null)return\"limit exceeded ;\";var z=0,Z=\"\";if(P.type.is_substitution(w)){var $=w.domain(!0);w=w.filter(function(Fe,ut){return!P.type.is_variable(ut)||$.indexOf(ut.id)!==-1&&Fe!==ut.id})}for(var se in w.links)w.links.hasOwnProperty(se)&&(z++,Z!==\"\"&&(Z+=\", \"),Z+=se.toString(F)+\" = \"+w.links[se].toString(F));var xe=typeof b>\"u\"||b.points.length>0?\" ;\":\".\";return z===0?\"true\"+xe:Z+xe},flatten_error:function(w){if(!P.type.is_error(w))return null;w=w.args[0];var b={};return b.type=w.args[0].id,b.thrown=b.type===\"syntax_error\"?null:w.args[1].id,b.expected=null,b.found=null,b.representation=null,b.existence=null,b.existence_type=null,b.line=null,b.column=null,b.permission_operation=null,b.permission_type=null,b.evaluation_type=null,b.type===\"type_error\"||b.type===\"domain_error\"?(b.expected=w.args[0].args[0].id,b.found=w.args[0].args[1].toString()):b.type===\"syntax_error\"?w.args[1].indicator===\"./2\"?(b.expected=w.args[0].args[0].id,b.found=w.args[1].args[1].args[1].args[0],b.found=b.found.id===\"token_not_found\"?b.found.id:b.found.args[0].id,b.line=w.args[1].args[0].args[0].value,b.column=w.args[1].args[1].args[0].args[0].value):b.thrown=w.args[1].id:b.type===\"permission_error\"?(b.found=w.args[0].args[2].toString(),b.permission_operation=w.args[0].args[0].id,b.permission_type=w.args[0].args[1].id):b.type===\"evaluation_error\"?b.evaluation_type=w.args[0].args[0].id:b.type===\"representation_error\"?b.representation=w.args[0].args[0].id:b.type===\"existence_error\"&&(b.existence=w.args[0].args[1].toString(),b.existence_type=w.args[0].args[0].id),b},create:function(w){return new P.type.Session(w)}};typeof tc<\"u\"?tc.exports=P:window.pl=P})()});function ome(e,t,r){e.prepend(r.map(s=>new Il.default.type.State(t.goal.replace(s),t.substitution,t)))}function eq(e){let t=lme.get(e.session);if(t==null)throw new Error(\"Assertion failed: A project should have been registered for the active session\");return t}function cme(e,t){lme.set(e,t),e.consult(`:- use_module(library(${fat.id})).`)}var Il,ame,V0,cat,uat,lme,fat,ume=Ze(()=>{qe();Jl();Il=et($5()),ame=et(Ie(\"vm\")),{is_atom:V0,is_variable:cat,is_instantiated_list:uat}=Il.default.type;lme=new WeakMap;fat=new Il.default.type.Module(\"constraints\",{\"project_workspaces_by_descriptor/3\":(e,t,r)=>{let[s,a,n]=r.args;if(!V0(s)||!V0(a)){e.throw_error(Il.default.error.instantiation(r.indicator));return}let c=j.parseIdent(s.id),f=j.makeDescriptor(c,a.id),h=eq(e).tryWorkspaceByDescriptor(f);cat(n)&&h!==null&&ome(e,t,[new Il.default.type.Term(\"=\",[n,new Il.default.type.Term(String(h.relativeCwd))])]),V0(n)&&h!==null&&h.relativeCwd===n.id&&e.success(t)},\"workspace_field/3\":(e,t,r)=>{let[s,a,n]=r.args;if(!V0(s)||!V0(a)){e.throw_error(Il.default.error.instantiation(r.indicator));return}let f=eq(e).tryWorkspaceByCwd(s.id);if(f==null)return;let p=ba(f.manifest.raw,a.id);typeof p>\"u\"||ome(e,t,[new Il.default.type.Term(\"=\",[n,new Il.default.type.Term(typeof p==\"object\"?JSON.stringify(p):p)])])},\"workspace_field_test/3\":(e,t,r)=>{let[s,a,n]=r.args;e.prepend([new Il.default.type.State(t.goal.replace(new Il.default.type.Term(\"workspace_field_test\",[s,a,n,new Il.default.type.Term(\"[]\",[])])),t.substitution,t)])},\"workspace_field_test/4\":(e,t,r)=>{let[s,a,n,c]=r.args;if(!V0(s)||!V0(a)||!V0(n)||!uat(c)){e.throw_error(Il.default.error.instantiation(r.indicator));return}let p=eq(e).tryWorkspaceByCwd(s.id);if(p==null)return;let h=ba(p.manifest.raw,a.id);if(typeof h>\"u\")return;let E={$$:h};for(let[S,x]of c.toJavaScript().entries())E[`$${S}`]=x;ame.default.runInNewContext(n.id,E)&&e.success(t)}},[\"project_workspaces_by_descriptor/3\",\"workspace_field/3\",\"workspace_field_test/3\",\"workspace_field_test/4\"])});var aS={};Yt(aS,{Constraints:()=>rq,DependencyType:()=>hme});function Co(e){if(e instanceof _C.default.type.Num)return e.value;if(e instanceof _C.default.type.Term)switch(e.indicator){case\"throw/1\":return Co(e.args[0]);case\"error/1\":return Co(e.args[0]);case\"error/2\":if(e.args[0]instanceof _C.default.type.Term&&e.args[0].indicator===\"syntax_error/1\")return Object.assign(Co(e.args[0]),...Co(e.args[1]));{let t=Co(e.args[0]);return t.message+=` (in ${Co(e.args[1])})`,t}case\"syntax_error/1\":return new _t(43,`Syntax error: ${Co(e.args[0])}`);case\"existence_error/2\":return new _t(44,`Existence error: ${Co(e.args[0])} ${Co(e.args[1])} not found`);case\"instantiation_error/0\":return new _t(75,\"Instantiation error: an argument is variable when an instantiated argument was expected\");case\"line/1\":return{line:Co(e.args[0])};case\"column/1\":return{column:Co(e.args[0])};case\"found/1\":return{found:Co(e.args[0])};case\"./2\":return[Co(e.args[0])].concat(Co(e.args[1]));case\"//2\":return`${Co(e.args[0])}/${Co(e.args[1])}`;default:return e.id}throw`couldn't pretty print because of unsupported node ${e}`}function Ame(e){let t;try{t=Co(e)}catch(r){throw typeof r==\"string\"?new _t(42,`Unknown error: ${e} (note: ${r})`):r}return typeof t.line<\"u\"&&typeof t.column<\"u\"&&(t.message+=` at line ${t.line}, column ${t.column}`),t}function Qm(e){return e.id===\"null\"?null:`${e.toJavaScript()}`}function Aat(e){if(e.id===\"null\")return null;{let t=e.toJavaScript();if(typeof t!=\"string\")return JSON.stringify(t);try{return JSON.stringify(JSON.parse(t))}catch{return JSON.stringify(t)}}}function Y0(e){return typeof e==\"string\"?`'${e}'`:\"[]\"}var pme,_C,hme,fme,tq,rq,lS=Ze(()=>{qe();qe();Dt();pme=et(qde()),_C=et($5());iS();ume();(0,pme.default)(_C.default);hme=(s=>(s.Dependencies=\"dependencies\",s.DevDependencies=\"devDependencies\",s.PeerDependencies=\"peerDependencies\",s))(hme||{}),fme=[\"dependencies\",\"devDependencies\",\"peerDependencies\"];tq=class{constructor(t,r){let s=1e3*t.workspaces.length;this.session=_C.default.create(s),cme(this.session,t),this.session.consult(\":- use_module(library(lists)).\"),this.session.consult(r)}fetchNextAnswer(){return new Promise(t=>{this.session.answer(r=>{t(r)})})}async*makeQuery(t){let r=this.session.query(t);if(r!==!0)throw Ame(r);for(;;){let s=await this.fetchNextAnswer();if(s===null)throw new _t(79,\"Resolution limit exceeded\");if(!s)break;if(s.id===\"throw\")throw Ame(s);yield s}}};rq=class e{constructor(t){this.source=\"\";this.project=t;let r=t.configuration.get(\"constraintsPath\");le.existsSync(r)&&(this.source=le.readFileSync(r,\"utf8\"))}static async find(t){return new e(t)}getProjectDatabase(){let t=\"\";for(let r of fme)t+=`dependency_type(${r}).\n`;for(let r of this.project.workspacesByCwd.values()){let s=r.relativeCwd;t+=`workspace(${Y0(s)}).\n`,t+=`workspace_ident(${Y0(s)}, ${Y0(j.stringifyIdent(r.anchoredLocator))}).\n`,t+=`workspace_version(${Y0(s)}, ${Y0(r.manifest.version)}).\n`;for(let a of fme)for(let n of r.manifest[a].values())t+=`workspace_has_dependency(${Y0(s)}, ${Y0(j.stringifyIdent(n))}, ${Y0(n.range)}, ${a}).\n`}return t+=`workspace(_) :- false.\n`,t+=`workspace_ident(_, _) :- false.\n`,t+=`workspace_version(_, _) :- false.\n`,t+=`workspace_has_dependency(_, _, _, _) :- false.\n`,t}getDeclarations(){let t=\"\";return t+=`gen_enforced_dependency(_, _, _, _) :- false.\n`,t+=`gen_enforced_field(_, _, _) :- false.\n`,t}get fullSource(){return`${this.getProjectDatabase()}\n${this.source}\n${this.getDeclarations()}`}createSession(){return new tq(this.project,this.fullSource)}async processClassic(){let t=this.createSession();return{enforcedDependencies:await this.genEnforcedDependencies(t),enforcedFields:await this.genEnforcedFields(t)}}async process(){let{enforcedDependencies:t,enforcedFields:r}=await this.processClassic(),s=new Map;for(let{workspace:a,dependencyIdent:n,dependencyRange:c,dependencyType:f}of t){let p=nS([f,j.stringifyIdent(n)]),h=Ge.getMapWithDefault(s,a.cwd);Ge.getMapWithDefault(h,p).set(c??void 0,new Set)}for(let{workspace:a,fieldPath:n,fieldValue:c}of r){let f=nS(n),p=Ge.getMapWithDefault(s,a.cwd);Ge.getMapWithDefault(p,f).set(JSON.parse(c)??void 0,new Set)}return{manifestUpdates:s,reportedErrors:new Map}}async genEnforcedDependencies(t){let r=[];for await(let s of t.makeQuery(\"workspace(WorkspaceCwd), dependency_type(DependencyType), gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType).\")){let a=K.resolve(this.project.cwd,Qm(s.links.WorkspaceCwd)),n=Qm(s.links.DependencyIdent),c=Qm(s.links.DependencyRange),f=Qm(s.links.DependencyType);if(a===null||n===null)throw new Error(\"Invalid rule\");let p=this.project.getWorkspaceByCwd(a),h=j.parseIdent(n);r.push({workspace:p,dependencyIdent:h,dependencyRange:c,dependencyType:f})}return Ge.sortMap(r,[({dependencyRange:s})=>s!==null?\"0\":\"1\",({workspace:s})=>j.stringifyIdent(s.anchoredLocator),({dependencyIdent:s})=>j.stringifyIdent(s)])}async genEnforcedFields(t){let r=[];for await(let s of t.makeQuery(\"workspace(WorkspaceCwd), gen_enforced_field(WorkspaceCwd, FieldPath, FieldValue).\")){let a=K.resolve(this.project.cwd,Qm(s.links.WorkspaceCwd)),n=Qm(s.links.FieldPath),c=Aat(s.links.FieldValue);if(a===null||n===null)throw new Error(\"Invalid rule\");let f=this.project.getWorkspaceByCwd(a);r.push({workspace:f,fieldPath:n,fieldValue:c})}return Ge.sortMap(r,[({workspace:s})=>j.stringifyIdent(s.anchoredLocator),({fieldPath:s})=>s])}async*query(t){let r=this.createSession();for await(let s of r.makeQuery(t)){let a={};for(let[n,c]of Object.entries(s.links))n!==\"_\"&&(a[n]=Qm(c));yield a}}}});var Bme=G(JT=>{\"use strict\";Object.defineProperty(JT,\"__esModule\",{value:!0});function BS(e){let t=[...e.caches],r=t.shift();return r===void 0?wme():{get(s,a,n={miss:()=>Promise.resolve()}){return r.get(s,a,n).catch(()=>BS({caches:t}).get(s,a,n))},set(s,a){return r.set(s,a).catch(()=>BS({caches:t}).set(s,a))},delete(s){return r.delete(s).catch(()=>BS({caches:t}).delete(s))},clear(){return r.clear().catch(()=>BS({caches:t}).clear())}}}function wme(){return{get(e,t,r={miss:()=>Promise.resolve()}){return t().then(a=>Promise.all([a,r.miss(a)])).then(([a])=>a)},set(e,t){return Promise.resolve(t)},delete(e){return Promise.resolve()},clear(){return Promise.resolve()}}}JT.createFallbackableCache=BS;JT.createNullCache=wme});var Sme=G((bVt,vme)=>{vme.exports=Bme()});var Dme=G(dq=>{\"use strict\";Object.defineProperty(dq,\"__esModule\",{value:!0});function Qat(e={serializable:!0}){let t={};return{get(r,s,a={miss:()=>Promise.resolve()}){let n=JSON.stringify(r);if(n in t)return Promise.resolve(e.serializable?JSON.parse(t[n]):t[n]);let c=s(),f=a&&a.miss||(()=>Promise.resolve());return c.then(p=>f(p)).then(()=>c)},set(r,s){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(s):s,Promise.resolve(s)},delete(r){return delete t[JSON.stringify(r)],Promise.resolve()},clear(){return t={},Promise.resolve()}}}dq.createInMemoryCache=Qat});var Pme=G((xVt,bme)=>{bme.exports=Dme()});var kme=G(tf=>{\"use strict\";Object.defineProperty(tf,\"__esModule\",{value:!0});function Rat(e,t,r){let s={\"x-algolia-api-key\":r,\"x-algolia-application-id\":t};return{headers(){return e===mq.WithinHeaders?s:{}},queryParameters(){return e===mq.WithinQueryParameters?s:{}}}}function Tat(e){let t=0,r=()=>(t++,new Promise(s=>{setTimeout(()=>{s(e(r))},Math.min(100*t,1e3))}));return e(r)}function xme(e,t=(r,s)=>Promise.resolve()){return Object.assign(e,{wait(r){return xme(e.then(s=>Promise.all([t(s,r),s])).then(s=>s[1]))}})}function Fat(e){let t=e.length-1;for(t;t>0;t--){let r=Math.floor(Math.random()*(t+1)),s=e[t];e[t]=e[r],e[r]=s}return e}function Nat(e,t){return t&&Object.keys(t).forEach(r=>{e[r]=t[r](e)}),e}function Oat(e,...t){let r=0;return e.replace(/%s/g,()=>encodeURIComponent(t[r++]))}var Lat=\"4.22.1\",Mat=e=>()=>e.transporter.requester.destroy(),mq={WithinQueryParameters:0,WithinHeaders:1};tf.AuthMode=mq;tf.addMethods=Nat;tf.createAuth=Rat;tf.createRetryablePromise=Tat;tf.createWaitablePromise=xme;tf.destroy=Mat;tf.encode=Oat;tf.shuffle=Fat;tf.version=Lat});var vS=G((QVt,Qme)=>{Qme.exports=kme()});var Rme=G(yq=>{\"use strict\";Object.defineProperty(yq,\"__esModule\",{value:!0});var Uat={Delete:\"DELETE\",Get:\"GET\",Post:\"POST\",Put:\"PUT\"};yq.MethodEnum=Uat});var SS=G((TVt,Tme)=>{Tme.exports=Rme()});var Kme=G(Vi=>{\"use strict\";Object.defineProperty(Vi,\"__esModule\",{value:!0});var Nme=SS();function Eq(e,t){let r=e||{},s=r.data||{};return Object.keys(r).forEach(a=>{[\"timeout\",\"headers\",\"queryParameters\",\"data\",\"cacheable\"].indexOf(a)===-1&&(s[a]=r[a])}),{data:Object.entries(s).length>0?s:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var DS={Read:1,Write:2,Any:3},zC={Up:1,Down:2,Timeouted:3},Ome=2*60*1e3;function Cq(e,t=zC.Up){return{...e,status:t,lastUpdate:Date.now()}}function Lme(e){return e.status===zC.Up||Date.now()-e.lastUpdate>Ome}function Mme(e){return e.status===zC.Timeouted&&Date.now()-e.lastUpdate<=Ome}function wq(e){return typeof e==\"string\"?{protocol:\"https\",url:e,accept:DS.Any}:{protocol:e.protocol||\"https\",url:e.url,accept:e.accept||DS.Any}}function _at(e,t){return Promise.all(t.map(r=>e.get(r,()=>Promise.resolve(Cq(r))))).then(r=>{let s=r.filter(f=>Lme(f)),a=r.filter(f=>Mme(f)),n=[...s,...a],c=n.length>0?n.map(f=>wq(f)):t;return{getTimeout(f,p){return(a.length===0&&f===0?1:a.length+3+f)*p},statelessHosts:c}})}var Hat=({isTimedOut:e,status:t})=>!e&&~~t===0,jat=e=>{let t=e.status;return e.isTimedOut||Hat(e)||~~(t/100)!==2&&~~(t/100)!==4},Gat=({status:e})=>~~(e/100)===2,qat=(e,t)=>jat(e)?t.onRetry(e):Gat(e)?t.onSuccess(e):t.onFail(e);function Fme(e,t,r,s){let a=[],n=Gme(r,s),c=qme(e,s),f=r.method,p=r.method!==Nme.MethodEnum.Get?{}:{...r.data,...s.data},h={\"x-algolia-agent\":e.userAgent.value,...e.queryParameters,...p,...s.queryParameters},E=0,C=(S,x)=>{let I=S.pop();if(I===void 0)throw Yme(Iq(a));let T={data:n,headers:c,method:f,url:Hme(I,r.path,h),connectTimeout:x(E,e.timeouts.connect),responseTimeout:x(E,s.timeout)},O=Y=>{let te={request:T,response:Y,host:I,triesLeft:S.length};return a.push(te),te},U={onSuccess:Y=>Ume(Y),onRetry(Y){let te=O(Y);return Y.isTimedOut&&E++,Promise.all([e.logger.info(\"Retryable failure\",Bq(te)),e.hostsCache.set(I,Cq(I,Y.isTimedOut?zC.Timeouted:zC.Down))]).then(()=>C(S,x))},onFail(Y){throw O(Y),_me(Y,Iq(a))}};return e.requester.send(T).then(Y=>qat(Y,U))};return _at(e.hostsCache,t).then(S=>C([...S.statelessHosts].reverse(),S.getTimeout))}function Wat(e){let{hostsCache:t,logger:r,requester:s,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,hosts:p,queryParameters:h,headers:E}=e,C={hostsCache:t,logger:r,requester:s,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,headers:E,queryParameters:h,hosts:p.map(S=>wq(S)),read(S,x){let I=Eq(x,C.timeouts.read),T=()=>Fme(C,C.hosts.filter(Y=>(Y.accept&DS.Read)!==0),S,I);if((I.cacheable!==void 0?I.cacheable:S.cacheable)!==!0)return T();let U={request:S,mappedRequestOptions:I,transporter:{queryParameters:C.queryParameters,headers:C.headers}};return C.responsesCache.get(U,()=>C.requestsCache.get(U,()=>C.requestsCache.set(U,T()).then(Y=>Promise.all([C.requestsCache.delete(U),Y]),Y=>Promise.all([C.requestsCache.delete(U),Promise.reject(Y)])).then(([Y,te])=>te)),{miss:Y=>C.responsesCache.set(U,Y)})},write(S,x){return Fme(C,C.hosts.filter(I=>(I.accept&DS.Write)!==0),S,Eq(x,C.timeouts.write))}};return C}function Vat(e){let t={value:`Algolia for JavaScript (${e})`,add(r){let s=`; ${r.segment}${r.version!==void 0?` (${r.version})`:\"\"}`;return t.value.indexOf(s)===-1&&(t.value=`${t.value}${s}`),t}};return t}function Ume(e){try{return JSON.parse(e.content)}catch(t){throw Vme(t.message,e)}}function _me({content:e,status:t},r){let s=e;try{s=JSON.parse(e).message}catch{}return Wme(s,t,r)}function Yat(e,...t){let r=0;return e.replace(/%s/g,()=>encodeURIComponent(t[r++]))}function Hme(e,t,r){let s=jme(r),a=`${e.protocol}://${e.url}/${t.charAt(0)===\"/\"?t.substr(1):t}`;return s.length&&(a+=`?${s}`),a}function jme(e){let t=r=>Object.prototype.toString.call(r)===\"[object Object]\"||Object.prototype.toString.call(r)===\"[object Array]\";return Object.keys(e).map(r=>Yat(\"%s=%s\",r,t(e[r])?JSON.stringify(e[r]):e[r])).join(\"&\")}function Gme(e,t){if(e.method===Nme.MethodEnum.Get||e.data===void 0&&t.data===void 0)return;let r=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(r)}function qme(e,t){let r={...e.headers,...t.headers},s={};return Object.keys(r).forEach(a=>{let n=r[a];s[a.toLowerCase()]=n}),s}function Iq(e){return e.map(t=>Bq(t))}function Bq(e){let t=e.request.headers[\"x-algolia-api-key\"]?{\"x-algolia-api-key\":\"*****\"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}function Wme(e,t,r){return{name:\"ApiError\",message:e,status:t,transporterStackTrace:r}}function Vme(e,t){return{name:\"DeserializationError\",message:e,response:t}}function Yme(e){return{name:\"RetryError\",message:\"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.\",transporterStackTrace:e}}Vi.CallEnum=DS;Vi.HostStatusEnum=zC;Vi.createApiError=Wme;Vi.createDeserializationError=Vme;Vi.createMappedRequestOptions=Eq;Vi.createRetryError=Yme;Vi.createStatefulHost=Cq;Vi.createStatelessHost=wq;Vi.createTransporter=Wat;Vi.createUserAgent=Vat;Vi.deserializeFailure=_me;Vi.deserializeSuccess=Ume;Vi.isStatefulHostTimeouted=Mme;Vi.isStatefulHostUp=Lme;Vi.serializeData=Gme;Vi.serializeHeaders=qme;Vi.serializeQueryParameters=jme;Vi.serializeUrl=Hme;Vi.stackFrameWithoutCredentials=Bq;Vi.stackTraceWithoutCredentials=Iq});var bS=G((NVt,Jme)=>{Jme.exports=Kme()});var zme=G(J0=>{\"use strict\";Object.defineProperty(J0,\"__esModule\",{value:!0});var ZC=vS(),Kat=bS(),PS=SS(),Jat=e=>{let t=e.region||\"us\",r=ZC.createAuth(ZC.AuthMode.WithinHeaders,e.appId,e.apiKey),s=Kat.createTransporter({hosts:[{url:`analytics.${t}.algolia.com`}],...e,headers:{...r.headers(),\"content-type\":\"application/json\",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}}),a=e.appId;return ZC.addMethods({appId:a,transporter:s},e.methods)},zat=e=>(t,r)=>e.transporter.write({method:PS.MethodEnum.Post,path:\"2/abtests\",data:t},r),Zat=e=>(t,r)=>e.transporter.write({method:PS.MethodEnum.Delete,path:ZC.encode(\"2/abtests/%s\",t)},r),Xat=e=>(t,r)=>e.transporter.read({method:PS.MethodEnum.Get,path:ZC.encode(\"2/abtests/%s\",t)},r),$at=e=>t=>e.transporter.read({method:PS.MethodEnum.Get,path:\"2/abtests\"},t),elt=e=>(t,r)=>e.transporter.write({method:PS.MethodEnum.Post,path:ZC.encode(\"2/abtests/%s/stop\",t)},r);J0.addABTest=zat;J0.createAnalyticsClient=Jat;J0.deleteABTest=Zat;J0.getABTest=Xat;J0.getABTests=$at;J0.stopABTest=elt});var Xme=G((LVt,Zme)=>{Zme.exports=zme()});var eye=G(xS=>{\"use strict\";Object.defineProperty(xS,\"__esModule\",{value:!0});var vq=vS(),tlt=bS(),$me=SS(),rlt=e=>{let t=e.region||\"us\",r=vq.createAuth(vq.AuthMode.WithinHeaders,e.appId,e.apiKey),s=tlt.createTransporter({hosts:[{url:`personalization.${t}.algolia.com`}],...e,headers:{...r.headers(),\"content-type\":\"application/json\",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}});return vq.addMethods({appId:e.appId,transporter:s},e.methods)},nlt=e=>t=>e.transporter.read({method:$me.MethodEnum.Get,path:\"1/strategies/personalization\"},t),ilt=e=>(t,r)=>e.transporter.write({method:$me.MethodEnum.Post,path:\"1/strategies/personalization\",data:t},r);xS.createPersonalizationClient=rlt;xS.getPersonalizationStrategy=nlt;xS.setPersonalizationStrategy=ilt});var rye=G((UVt,tye)=>{tye.exports=eye()});var dye=G(Ft=>{\"use strict\";Object.defineProperty(Ft,\"__esModule\",{value:!0});var Kt=vS(),Cl=bS(),br=SS(),slt=Ie(\"crypto\");function zT(e){let t=r=>e.request(r).then(s=>{if(e.batch!==void 0&&e.batch(s.hits),!e.shouldStop(s))return s.cursor?t({cursor:s.cursor}):t({page:(r.page||0)+1})});return t({})}var olt=e=>{let t=e.appId,r=Kt.createAuth(e.authMode!==void 0?e.authMode:Kt.AuthMode.WithinHeaders,t,e.apiKey),s=Cl.createTransporter({hosts:[{url:`${t}-dsn.algolia.net`,accept:Cl.CallEnum.Read},{url:`${t}.algolia.net`,accept:Cl.CallEnum.Write}].concat(Kt.shuffle([{url:`${t}-1.algolianet.com`},{url:`${t}-2.algolianet.com`},{url:`${t}-3.algolianet.com`}])),...e,headers:{...r.headers(),\"content-type\":\"application/x-www-form-urlencoded\",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}}),a={transporter:s,appId:t,addAlgoliaAgent(n,c){s.userAgent.add({segment:n,version:c})},clearCache(){return Promise.all([s.requestsCache.clear(),s.responsesCache.clear()]).then(()=>{})}};return Kt.addMethods(a,e.methods)};function nye(){return{name:\"MissingObjectIDError\",message:\"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option.\"}}function iye(){return{name:\"ObjectNotFoundError\",message:\"Object not found.\"}}function sye(){return{name:\"ValidUntilNotFoundError\",message:\"ValidUntil not found in given secured api key.\"}}var alt=e=>(t,r)=>{let{queryParameters:s,...a}=r||{},n={acl:t,...s!==void 0?{queryParameters:s}:{}},c=(f,p)=>Kt.createRetryablePromise(h=>kS(e)(f.key,p).catch(E=>{if(E.status!==404)throw E;return h()}));return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:\"1/keys\",data:n},a),c)},llt=e=>(t,r,s)=>{let a=Cl.createMappedRequestOptions(s);return a.queryParameters[\"X-Algolia-User-ID\"]=t,e.transporter.write({method:br.MethodEnum.Post,path:\"1/clusters/mapping\",data:{cluster:r}},a)},clt=e=>(t,r,s)=>e.transporter.write({method:br.MethodEnum.Post,path:\"1/clusters/mapping/batch\",data:{users:t,cluster:r}},s),ult=e=>(t,r)=>Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"/1/dictionaries/%s/batch\",t),data:{clearExistingDictionaryEntries:!0,requests:{action:\"addEntry\",body:[]}}},r),(s,a)=>XC(e)(s.taskID,a)),ZT=e=>(t,r,s)=>{let a=(n,c)=>QS(e)(t,{methods:{waitTask:ms}}).waitTask(n.taskID,c);return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/operation\",t),data:{operation:\"copy\",destination:r}},s),a)},flt=e=>(t,r,s)=>ZT(e)(t,r,{...s,scope:[$T.Rules]}),Alt=e=>(t,r,s)=>ZT(e)(t,r,{...s,scope:[$T.Settings]}),plt=e=>(t,r,s)=>ZT(e)(t,r,{...s,scope:[$T.Synonyms]}),hlt=e=>(t,r)=>t.method===br.MethodEnum.Get?e.transporter.read(t,r):e.transporter.write(t,r),glt=e=>(t,r)=>{let s=(a,n)=>Kt.createRetryablePromise(c=>kS(e)(t,n).then(c).catch(f=>{if(f.status!==404)throw f}));return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Delete,path:Kt.encode(\"1/keys/%s\",t)},r),s)},dlt=e=>(t,r,s)=>{let a=r.map(n=>({action:\"deleteEntry\",body:{objectID:n}}));return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"/1/dictionaries/%s/batch\",t),data:{clearExistingDictionaryEntries:!1,requests:a}},s),(n,c)=>XC(e)(n.taskID,c))},mlt=()=>(e,t)=>{let r=Cl.serializeQueryParameters(t),s=slt.createHmac(\"sha256\",e).update(r).digest(\"hex\");return Buffer.from(s+r).toString(\"base64\")},kS=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Kt.encode(\"1/keys/%s\",t)},r),oye=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Kt.encode(\"1/task/%s\",t.toString())},r),ylt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:\"/1/dictionaries/*/settings\"},t),Elt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:\"1/logs\"},t),Ilt=()=>e=>{let t=Buffer.from(e,\"base64\").toString(\"ascii\"),r=/validUntil=(\\d+)/,s=t.match(r);if(s===null)throw sye();return parseInt(s[1],10)-Math.round(new Date().getTime()/1e3)},Clt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:\"1/clusters/mapping/top\"},t),wlt=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Kt.encode(\"1/clusters/mapping/%s\",t)},r),Blt=e=>t=>{let{retrieveMappings:r,...s}=t||{};return r===!0&&(s.getClusters=!0),e.transporter.read({method:br.MethodEnum.Get,path:\"1/clusters/mapping/pending\"},s)},QS=e=>(t,r={})=>{let s={transporter:e.transporter,appId:e.appId,indexName:t};return Kt.addMethods(s,r.methods)},vlt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:\"1/keys\"},t),Slt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:\"1/clusters\"},t),Dlt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:\"1/indexes\"},t),blt=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:\"1/clusters/mapping\"},t),Plt=e=>(t,r,s)=>{let a=(n,c)=>QS(e)(t,{methods:{waitTask:ms}}).waitTask(n.taskID,c);return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/operation\",t),data:{operation:\"move\",destination:r}},s),a)},xlt=e=>(t,r)=>{let s=(a,n)=>Promise.all(Object.keys(a.taskID).map(c=>QS(e)(c,{methods:{waitTask:ms}}).waitTask(a.taskID[c],n)));return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:\"1/indexes/*/batch\",data:{requests:t}},r),s)},klt=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Post,path:\"1/indexes/*/objects\",data:{requests:t}},r),Qlt=e=>(t,r)=>{let s=t.map(a=>({...a,params:Cl.serializeQueryParameters(a.params||{})}));return e.transporter.read({method:br.MethodEnum.Post,path:\"1/indexes/*/queries\",data:{requests:s},cacheable:!0},r)},Rlt=e=>(t,r)=>Promise.all(t.map(s=>{let{facetName:a,facetQuery:n,...c}=s.params;return QS(e)(s.indexName,{methods:{searchForFacetValues:pye}}).searchForFacetValues(a,n,{...r,...c})})),Tlt=e=>(t,r)=>{let s=Cl.createMappedRequestOptions(r);return s.queryParameters[\"X-Algolia-User-ID\"]=t,e.transporter.write({method:br.MethodEnum.Delete,path:\"1/clusters/mapping\"},s)},Flt=e=>(t,r,s)=>{let a=r.map(n=>({action:\"addEntry\",body:n}));return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"/1/dictionaries/%s/batch\",t),data:{clearExistingDictionaryEntries:!0,requests:a}},s),(n,c)=>XC(e)(n.taskID,c))},Nlt=e=>(t,r)=>{let s=(a,n)=>Kt.createRetryablePromise(c=>kS(e)(t,n).catch(f=>{if(f.status!==404)throw f;return c()}));return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/keys/%s/restore\",t)},r),s)},Olt=e=>(t,r,s)=>{let a=r.map(n=>({action:\"addEntry\",body:n}));return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"/1/dictionaries/%s/batch\",t),data:{clearExistingDictionaryEntries:!1,requests:a}},s),(n,c)=>XC(e)(n.taskID,c))},Llt=e=>(t,r,s)=>e.transporter.read({method:br.MethodEnum.Post,path:Kt.encode(\"/1/dictionaries/%s/search\",t),data:{query:r},cacheable:!0},s),Mlt=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Post,path:\"1/clusters/mapping/search\",data:{query:t}},r),Ult=e=>(t,r)=>Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Put,path:\"/1/dictionaries/*/settings\",data:t},r),(s,a)=>XC(e)(s.taskID,a)),_lt=e=>(t,r)=>{let s=Object.assign({},r),{queryParameters:a,...n}=r||{},c=a?{queryParameters:a}:{},f=[\"acl\",\"indexes\",\"referers\",\"restrictSources\",\"queryParameters\",\"description\",\"maxQueriesPerIPPerHour\",\"maxHitsPerQuery\"],p=E=>Object.keys(s).filter(C=>f.indexOf(C)!==-1).every(C=>{if(Array.isArray(E[C])&&Array.isArray(s[C])){let S=E[C];return S.length===s[C].length&&S.every((x,I)=>x===s[C][I])}else return E[C]===s[C]}),h=(E,C)=>Kt.createRetryablePromise(S=>kS(e)(t,C).then(x=>p(x)?Promise.resolve():S()));return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Put,path:Kt.encode(\"1/keys/%s\",t),data:c},n),h)},XC=e=>(t,r)=>Kt.createRetryablePromise(s=>oye(e)(t,r).then(a=>a.status!==\"published\"?s():void 0)),aye=e=>(t,r)=>{let s=(a,n)=>ms(e)(a.taskID,n);return Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/batch\",e.indexName),data:{requests:t}},r),s)},Hlt=e=>t=>zT({shouldStop:r=>r.cursor===void 0,...t,request:r=>e.transporter.read({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/browse\",e.indexName),data:r},t)}),jlt=e=>t=>{let r={hitsPerPage:1e3,...t};return zT({shouldStop:s=>s.hits.length<r.hitsPerPage,...r,request(s){return hye(e)(\"\",{...r,...s}).then(a=>({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},Glt=e=>t=>{let r={hitsPerPage:1e3,...t};return zT({shouldStop:s=>s.hits.length<r.hitsPerPage,...r,request(s){return gye(e)(\"\",{...r,...s}).then(a=>({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},XT=e=>(t,r,s)=>{let{batchSize:a,...n}=s||{},c={taskIDs:[],objectIDs:[]},f=(p=0)=>{let h=[],E;for(E=p;E<t.length&&(h.push(t[E]),h.length!==(a||1e3));E++);return h.length===0?Promise.resolve(c):aye(e)(h.map(C=>({action:r,body:C})),n).then(C=>(c.objectIDs=c.objectIDs.concat(C.objectIDs),c.taskIDs.push(C.taskID),E++,f(E)))};return Kt.createWaitablePromise(f(),(p,h)=>Promise.all(p.taskIDs.map(E=>ms(e)(E,h))))},qlt=e=>t=>Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/clear\",e.indexName)},t),(r,s)=>ms(e)(r.taskID,s)),Wlt=e=>t=>{let{forwardToReplicas:r,...s}=t||{},a=Cl.createMappedRequestOptions(s);return r&&(a.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/rules/clear\",e.indexName)},a),(n,c)=>ms(e)(n.taskID,c))},Vlt=e=>t=>{let{forwardToReplicas:r,...s}=t||{},a=Cl.createMappedRequestOptions(s);return r&&(a.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/synonyms/clear\",e.indexName)},a),(n,c)=>ms(e)(n.taskID,c))},Ylt=e=>(t,r)=>Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/deleteByQuery\",e.indexName),data:t},r),(s,a)=>ms(e)(s.taskID,a)),Klt=e=>t=>Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Delete,path:Kt.encode(\"1/indexes/%s\",e.indexName)},t),(r,s)=>ms(e)(r.taskID,s)),Jlt=e=>(t,r)=>Kt.createWaitablePromise(lye(e)([t],r).then(s=>({taskID:s.taskIDs[0]})),(s,a)=>ms(e)(s.taskID,a)),lye=e=>(t,r)=>{let s=t.map(a=>({objectID:a}));return XT(e)(s,Tm.DeleteObject,r)},zlt=e=>(t,r)=>{let{forwardToReplicas:s,...a}=r||{},n=Cl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Delete,path:Kt.encode(\"1/indexes/%s/rules/%s\",e.indexName,t)},n),(c,f)=>ms(e)(c.taskID,f))},Zlt=e=>(t,r)=>{let{forwardToReplicas:s,...a}=r||{},n=Cl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Delete,path:Kt.encode(\"1/indexes/%s/synonyms/%s\",e.indexName,t)},n),(c,f)=>ms(e)(c.taskID,f))},Xlt=e=>t=>cye(e)(t).then(()=>!0).catch(r=>{if(r.status!==404)throw r;return!1}),$lt=e=>(t,r,s)=>e.transporter.read({method:br.MethodEnum.Post,path:Kt.encode(\"1/answers/%s/prediction\",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},s),ect=e=>(t,r)=>{let{query:s,paginate:a,...n}=r||{},c=0,f=()=>Aye(e)(s||\"\",{...n,page:c}).then(p=>{for(let[h,E]of Object.entries(p.hits))if(t(E))return{object:E,position:parseInt(h,10),page:c};if(c++,a===!1||c>=p.nbPages)throw iye();return f()});return f()},tct=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Kt.encode(\"1/indexes/%s/%s\",e.indexName,t)},r),rct=()=>(e,t)=>{for(let[r,s]of Object.entries(e.hits))if(s.objectID===t)return parseInt(r,10);return-1},nct=e=>(t,r)=>{let{attributesToRetrieve:s,...a}=r||{},n=t.map(c=>({indexName:e.indexName,objectID:c,...s?{attributesToRetrieve:s}:{}}));return e.transporter.read({method:br.MethodEnum.Post,path:\"1/indexes/*/objects\",data:{requests:n}},a)},ict=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Kt.encode(\"1/indexes/%s/rules/%s\",e.indexName,t)},r),cye=e=>t=>e.transporter.read({method:br.MethodEnum.Get,path:Kt.encode(\"1/indexes/%s/settings\",e.indexName),data:{getVersion:2}},t),sct=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Kt.encode(\"1/indexes/%s/synonyms/%s\",e.indexName,t)},r),uye=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Get,path:Kt.encode(\"1/indexes/%s/task/%s\",e.indexName,t.toString())},r),oct=e=>(t,r)=>Kt.createWaitablePromise(fye(e)([t],r).then(s=>({objectID:s.objectIDs[0],taskID:s.taskIDs[0]})),(s,a)=>ms(e)(s.taskID,a)),fye=e=>(t,r)=>{let{createIfNotExists:s,...a}=r||{},n=s?Tm.PartialUpdateObject:Tm.PartialUpdateObjectNoCreate;return XT(e)(t,n,a)},act=e=>(t,r)=>{let{safe:s,autoGenerateObjectIDIfNotExist:a,batchSize:n,...c}=r||{},f=(I,T,O,U)=>Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/operation\",I),data:{operation:O,destination:T}},U),(Y,te)=>ms(e)(Y.taskID,te)),p=Math.random().toString(36).substring(7),h=`${e.indexName}_tmp_${p}`,E=Sq({appId:e.appId,transporter:e.transporter,indexName:h}),C=[],S=f(e.indexName,h,\"copy\",{...c,scope:[\"settings\",\"synonyms\",\"rules\"]});C.push(S);let x=(s?S.wait(c):S).then(()=>{let I=E(t,{...c,autoGenerateObjectIDIfNotExist:a,batchSize:n});return C.push(I),s?I.wait(c):I}).then(()=>{let I=f(h,e.indexName,\"move\",c);return C.push(I),s?I.wait(c):I}).then(()=>Promise.all(C)).then(([I,T,O])=>({objectIDs:T.objectIDs,taskIDs:[I.taskID,...T.taskIDs,O.taskID]}));return Kt.createWaitablePromise(x,(I,T)=>Promise.all(C.map(O=>O.wait(T))))},lct=e=>(t,r)=>Dq(e)(t,{...r,clearExistingRules:!0}),cct=e=>(t,r)=>bq(e)(t,{...r,clearExistingSynonyms:!0}),uct=e=>(t,r)=>Kt.createWaitablePromise(Sq(e)([t],r).then(s=>({objectID:s.objectIDs[0],taskID:s.taskIDs[0]})),(s,a)=>ms(e)(s.taskID,a)),Sq=e=>(t,r)=>{let{autoGenerateObjectIDIfNotExist:s,...a}=r||{},n=s?Tm.AddObject:Tm.UpdateObject;if(n===Tm.UpdateObject){for(let c of t)if(c.objectID===void 0)return Kt.createWaitablePromise(Promise.reject(nye()))}return XT(e)(t,n,a)},fct=e=>(t,r)=>Dq(e)([t],r),Dq=e=>(t,r)=>{let{forwardToReplicas:s,clearExistingRules:a,...n}=r||{},c=Cl.createMappedRequestOptions(n);return s&&(c.queryParameters.forwardToReplicas=1),a&&(c.queryParameters.clearExistingRules=1),Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/rules/batch\",e.indexName),data:t},c),(f,p)=>ms(e)(f.taskID,p))},Act=e=>(t,r)=>bq(e)([t],r),bq=e=>(t,r)=>{let{forwardToReplicas:s,clearExistingSynonyms:a,replaceExistingSynonyms:n,...c}=r||{},f=Cl.createMappedRequestOptions(c);return s&&(f.queryParameters.forwardToReplicas=1),(n||a)&&(f.queryParameters.replaceExistingSynonyms=1),Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/synonyms/batch\",e.indexName),data:t},f),(p,h)=>ms(e)(p.taskID,h))},Aye=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/query\",e.indexName),data:{query:t},cacheable:!0},r),pye=e=>(t,r,s)=>e.transporter.read({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/facets/%s/query\",e.indexName,t),data:{facetQuery:r},cacheable:!0},s),hye=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/rules/search\",e.indexName),data:{query:t}},r),gye=e=>(t,r)=>e.transporter.read({method:br.MethodEnum.Post,path:Kt.encode(\"1/indexes/%s/synonyms/search\",e.indexName),data:{query:t}},r),pct=e=>(t,r)=>{let{forwardToReplicas:s,...a}=r||{},n=Cl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Kt.createWaitablePromise(e.transporter.write({method:br.MethodEnum.Put,path:Kt.encode(\"1/indexes/%s/settings\",e.indexName),data:t},n),(c,f)=>ms(e)(c.taskID,f))},ms=e=>(t,r)=>Kt.createRetryablePromise(s=>uye(e)(t,r).then(a=>a.status!==\"published\"?s():void 0)),hct={AddObject:\"addObject\",Analytics:\"analytics\",Browser:\"browse\",DeleteIndex:\"deleteIndex\",DeleteObject:\"deleteObject\",EditSettings:\"editSettings\",Inference:\"inference\",ListIndexes:\"listIndexes\",Logs:\"logs\",Personalization:\"personalization\",Recommendation:\"recommendation\",Search:\"search\",SeeUnretrievableAttributes:\"seeUnretrievableAttributes\",Settings:\"settings\",Usage:\"usage\"},Tm={AddObject:\"addObject\",UpdateObject:\"updateObject\",PartialUpdateObject:\"partialUpdateObject\",PartialUpdateObjectNoCreate:\"partialUpdateObjectNoCreate\",DeleteObject:\"deleteObject\",DeleteIndex:\"delete\",ClearIndex:\"clear\"},$T={Settings:\"settings\",Synonyms:\"synonyms\",Rules:\"rules\"},gct={None:\"none\",StopIfEnoughMatches:\"stopIfEnoughMatches\"},dct={Synonym:\"synonym\",OneWaySynonym:\"oneWaySynonym\",AltCorrection1:\"altCorrection1\",AltCorrection2:\"altCorrection2\",Placeholder:\"placeholder\"};Ft.ApiKeyACLEnum=hct;Ft.BatchActionEnum=Tm;Ft.ScopeEnum=$T;Ft.StrategyEnum=gct;Ft.SynonymEnum=dct;Ft.addApiKey=alt;Ft.assignUserID=llt;Ft.assignUserIDs=clt;Ft.batch=aye;Ft.browseObjects=Hlt;Ft.browseRules=jlt;Ft.browseSynonyms=Glt;Ft.chunkedBatch=XT;Ft.clearDictionaryEntries=ult;Ft.clearObjects=qlt;Ft.clearRules=Wlt;Ft.clearSynonyms=Vlt;Ft.copyIndex=ZT;Ft.copyRules=flt;Ft.copySettings=Alt;Ft.copySynonyms=plt;Ft.createBrowsablePromise=zT;Ft.createMissingObjectIDError=nye;Ft.createObjectNotFoundError=iye;Ft.createSearchClient=olt;Ft.createValidUntilNotFoundError=sye;Ft.customRequest=hlt;Ft.deleteApiKey=glt;Ft.deleteBy=Ylt;Ft.deleteDictionaryEntries=dlt;Ft.deleteIndex=Klt;Ft.deleteObject=Jlt;Ft.deleteObjects=lye;Ft.deleteRule=zlt;Ft.deleteSynonym=Zlt;Ft.exists=Xlt;Ft.findAnswers=$lt;Ft.findObject=ect;Ft.generateSecuredApiKey=mlt;Ft.getApiKey=kS;Ft.getAppTask=oye;Ft.getDictionarySettings=ylt;Ft.getLogs=Elt;Ft.getObject=tct;Ft.getObjectPosition=rct;Ft.getObjects=nct;Ft.getRule=ict;Ft.getSecuredApiKeyRemainingValidity=Ilt;Ft.getSettings=cye;Ft.getSynonym=sct;Ft.getTask=uye;Ft.getTopUserIDs=Clt;Ft.getUserID=wlt;Ft.hasPendingMappings=Blt;Ft.initIndex=QS;Ft.listApiKeys=vlt;Ft.listClusters=Slt;Ft.listIndices=Dlt;Ft.listUserIDs=blt;Ft.moveIndex=Plt;Ft.multipleBatch=xlt;Ft.multipleGetObjects=klt;Ft.multipleQueries=Qlt;Ft.multipleSearchForFacetValues=Rlt;Ft.partialUpdateObject=oct;Ft.partialUpdateObjects=fye;Ft.removeUserID=Tlt;Ft.replaceAllObjects=act;Ft.replaceAllRules=lct;Ft.replaceAllSynonyms=cct;Ft.replaceDictionaryEntries=Flt;Ft.restoreApiKey=Nlt;Ft.saveDictionaryEntries=Olt;Ft.saveObject=uct;Ft.saveObjects=Sq;Ft.saveRule=fct;Ft.saveRules=Dq;Ft.saveSynonym=Act;Ft.saveSynonyms=bq;Ft.search=Aye;Ft.searchDictionaryEntries=Llt;Ft.searchForFacetValues=pye;Ft.searchRules=hye;Ft.searchSynonyms=gye;Ft.searchUserIDs=Mlt;Ft.setDictionarySettings=Ult;Ft.setSettings=pct;Ft.updateApiKey=_lt;Ft.waitAppTask=XC;Ft.waitTask=ms});var yye=G((HVt,mye)=>{mye.exports=dye()});var Eye=G(eF=>{\"use strict\";Object.defineProperty(eF,\"__esModule\",{value:!0});function mct(){return{debug(e,t){return Promise.resolve()},info(e,t){return Promise.resolve()},error(e,t){return Promise.resolve()}}}var yct={Debug:1,Info:2,Error:3};eF.LogLevelEnum=yct;eF.createNullLogger=mct});var Cye=G((GVt,Iye)=>{Iye.exports=Eye()});var Sye=G(Pq=>{\"use strict\";Object.defineProperty(Pq,\"__esModule\",{value:!0});var wye=Ie(\"http\"),Bye=Ie(\"https\"),Ect=Ie(\"url\"),vye={keepAlive:!0},Ict=new wye.Agent(vye),Cct=new Bye.Agent(vye);function wct({agent:e,httpAgent:t,httpsAgent:r,requesterOptions:s={}}={}){let a=t||e||Ict,n=r||e||Cct;return{send(c){return new Promise(f=>{let p=Ect.parse(c.url),h=p.query===null?p.pathname:`${p.pathname}?${p.query}`,E={...s,agent:p.protocol===\"https:\"?n:a,hostname:p.hostname,path:h,method:c.method,headers:{...s&&s.headers?s.headers:{},...c.headers},...p.port!==void 0?{port:p.port||\"\"}:{}},C=(p.protocol===\"https:\"?Bye:wye).request(E,T=>{let O=[];T.on(\"data\",U=>{O=O.concat(U)}),T.on(\"end\",()=>{clearTimeout(x),clearTimeout(I),f({status:T.statusCode||0,content:Buffer.concat(O).toString(),isTimedOut:!1})})}),S=(T,O)=>setTimeout(()=>{C.abort(),f({status:0,content:O,isTimedOut:!0})},T*1e3),x=S(c.connectTimeout,\"Connection timeout\"),I;C.on(\"error\",T=>{clearTimeout(x),clearTimeout(I),f({status:0,content:T.message,isTimedOut:!1})}),C.once(\"response\",()=>{clearTimeout(x),I=S(c.responseTimeout,\"Socket timeout\")}),c.data!==void 0&&C.write(c.data),C.end()})},destroy(){return a.destroy(),n.destroy(),Promise.resolve()}}}Pq.createNodeHttpRequester=wct});var bye=G((WVt,Dye)=>{Dye.exports=Sye()});var Qye=G((VVt,kye)=>{\"use strict\";var Pye=Sme(),Bct=Pme(),$C=Xme(),kq=vS(),xq=rye(),Gt=yye(),vct=Cye(),Sct=bye(),Dct=bS();function xye(e,t,r){let s={appId:e,apiKey:t,timeouts:{connect:2,read:5,write:30},requester:Sct.createNodeHttpRequester(),logger:vct.createNullLogger(),responsesCache:Pye.createNullCache(),requestsCache:Pye.createNullCache(),hostsCache:Bct.createInMemoryCache(),userAgent:Dct.createUserAgent(kq.version).add({segment:\"Node.js\",version:process.versions.node})},a={...s,...r},n=()=>c=>xq.createPersonalizationClient({...s,...c,methods:{getPersonalizationStrategy:xq.getPersonalizationStrategy,setPersonalizationStrategy:xq.setPersonalizationStrategy}});return Gt.createSearchClient({...a,methods:{search:Gt.multipleQueries,searchForFacetValues:Gt.multipleSearchForFacetValues,multipleBatch:Gt.multipleBatch,multipleGetObjects:Gt.multipleGetObjects,multipleQueries:Gt.multipleQueries,copyIndex:Gt.copyIndex,copySettings:Gt.copySettings,copyRules:Gt.copyRules,copySynonyms:Gt.copySynonyms,moveIndex:Gt.moveIndex,listIndices:Gt.listIndices,getLogs:Gt.getLogs,listClusters:Gt.listClusters,multipleSearchForFacetValues:Gt.multipleSearchForFacetValues,getApiKey:Gt.getApiKey,addApiKey:Gt.addApiKey,listApiKeys:Gt.listApiKeys,updateApiKey:Gt.updateApiKey,deleteApiKey:Gt.deleteApiKey,restoreApiKey:Gt.restoreApiKey,assignUserID:Gt.assignUserID,assignUserIDs:Gt.assignUserIDs,getUserID:Gt.getUserID,searchUserIDs:Gt.searchUserIDs,listUserIDs:Gt.listUserIDs,getTopUserIDs:Gt.getTopUserIDs,removeUserID:Gt.removeUserID,hasPendingMappings:Gt.hasPendingMappings,generateSecuredApiKey:Gt.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:Gt.getSecuredApiKeyRemainingValidity,destroy:kq.destroy,clearDictionaryEntries:Gt.clearDictionaryEntries,deleteDictionaryEntries:Gt.deleteDictionaryEntries,getDictionarySettings:Gt.getDictionarySettings,getAppTask:Gt.getAppTask,replaceDictionaryEntries:Gt.replaceDictionaryEntries,saveDictionaryEntries:Gt.saveDictionaryEntries,searchDictionaryEntries:Gt.searchDictionaryEntries,setDictionarySettings:Gt.setDictionarySettings,waitAppTask:Gt.waitAppTask,customRequest:Gt.customRequest,initIndex:c=>f=>Gt.initIndex(c)(f,{methods:{batch:Gt.batch,delete:Gt.deleteIndex,findAnswers:Gt.findAnswers,getObject:Gt.getObject,getObjects:Gt.getObjects,saveObject:Gt.saveObject,saveObjects:Gt.saveObjects,search:Gt.search,searchForFacetValues:Gt.searchForFacetValues,waitTask:Gt.waitTask,setSettings:Gt.setSettings,getSettings:Gt.getSettings,partialUpdateObject:Gt.partialUpdateObject,partialUpdateObjects:Gt.partialUpdateObjects,deleteObject:Gt.deleteObject,deleteObjects:Gt.deleteObjects,deleteBy:Gt.deleteBy,clearObjects:Gt.clearObjects,browseObjects:Gt.browseObjects,getObjectPosition:Gt.getObjectPosition,findObject:Gt.findObject,exists:Gt.exists,saveSynonym:Gt.saveSynonym,saveSynonyms:Gt.saveSynonyms,getSynonym:Gt.getSynonym,searchSynonyms:Gt.searchSynonyms,browseSynonyms:Gt.browseSynonyms,deleteSynonym:Gt.deleteSynonym,clearSynonyms:Gt.clearSynonyms,replaceAllObjects:Gt.replaceAllObjects,replaceAllSynonyms:Gt.replaceAllSynonyms,searchRules:Gt.searchRules,getRule:Gt.getRule,deleteRule:Gt.deleteRule,saveRule:Gt.saveRule,saveRules:Gt.saveRules,replaceAllRules:Gt.replaceAllRules,browseRules:Gt.browseRules,clearRules:Gt.clearRules}}),initAnalytics:()=>c=>$C.createAnalyticsClient({...s,...c,methods:{addABTest:$C.addABTest,getABTest:$C.getABTest,getABTests:$C.getABTests,stopABTest:$C.stopABTest,deleteABTest:$C.deleteABTest}}),initPersonalization:n,initRecommendation:()=>c=>(a.logger.info(\"The `initRecommendation` method is deprecated. Use `initPersonalization` instead.\"),n()(c))}})}xye.version=kq.version;kye.exports=xye});var Rq=G((YVt,Qq)=>{var Rye=Qye();Qq.exports=Rye;Qq.exports.default=Rye});var Nq=G((JVt,Nye)=>{\"use strict\";var Fye=Object.getOwnPropertySymbols,Pct=Object.prototype.hasOwnProperty,xct=Object.prototype.propertyIsEnumerable;function kct(e){if(e==null)throw new TypeError(\"Object.assign cannot be called with null or undefined\");return Object(e)}function Qct(){try{if(!Object.assign)return!1;var e=new String(\"abc\");if(e[5]=\"de\",Object.getOwnPropertyNames(e)[0]===\"5\")return!1;for(var t={},r=0;r<10;r++)t[\"_\"+String.fromCharCode(r)]=r;var s=Object.getOwnPropertyNames(t).map(function(n){return t[n]});if(s.join(\"\")!==\"0123456789\")return!1;var a={};return\"abcdefghijklmnopqrst\".split(\"\").forEach(function(n){a[n]=n}),Object.keys(Object.assign({},a)).join(\"\")===\"abcdefghijklmnopqrst\"}catch{return!1}}Nye.exports=Qct()?Object.assign:function(e,t){for(var r,s=kct(e),a,n=1;n<arguments.length;n++){r=Object(arguments[n]);for(var c in r)Pct.call(r,c)&&(s[c]=r[c]);if(Fye){a=Fye(r);for(var f=0;f<a.length;f++)xct.call(r,a[f])&&(s[a[f]]=r[a[f]])}}return s}});var Zye=G(Pn=>{\"use strict\";var Lq=Nq(),ew=60103,Mye=60106;Pn.Fragment=60107;Pn.StrictMode=60108;Pn.Profiler=60114;var Uye=60109,_ye=60110,Hye=60112;Pn.Suspense=60113;var jye=60115,Gye=60116;typeof Symbol==\"function\"&&Symbol.for&&(Hc=Symbol.for,ew=Hc(\"react.element\"),Mye=Hc(\"react.portal\"),Pn.Fragment=Hc(\"react.fragment\"),Pn.StrictMode=Hc(\"react.strict_mode\"),Pn.Profiler=Hc(\"react.profiler\"),Uye=Hc(\"react.provider\"),_ye=Hc(\"react.context\"),Hye=Hc(\"react.forward_ref\"),Pn.Suspense=Hc(\"react.suspense\"),jye=Hc(\"react.memo\"),Gye=Hc(\"react.lazy\"));var Hc,Oye=typeof Symbol==\"function\"&&Symbol.iterator;function Rct(e){return e===null||typeof e!=\"object\"?null:(e=Oye&&e[Oye]||e[\"@@iterator\"],typeof e==\"function\"?e:null)}function RS(e){for(var t=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+e,r=1;r<arguments.length;r++)t+=\"&args[]=\"+encodeURIComponent(arguments[r]);return\"Minified React error #\"+e+\"; visit \"+t+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var qye={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Wye={};function tw(e,t,r){this.props=e,this.context=t,this.refs=Wye,this.updater=r||qye}tw.prototype.isReactComponent={};tw.prototype.setState=function(e,t){if(typeof e!=\"object\"&&typeof e!=\"function\"&&e!=null)throw Error(RS(85));this.updater.enqueueSetState(this,e,t,\"setState\")};tw.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,\"forceUpdate\")};function Vye(){}Vye.prototype=tw.prototype;function Mq(e,t,r){this.props=e,this.context=t,this.refs=Wye,this.updater=r||qye}var Uq=Mq.prototype=new Vye;Uq.constructor=Mq;Lq(Uq,tw.prototype);Uq.isPureReactComponent=!0;var _q={current:null},Yye=Object.prototype.hasOwnProperty,Kye={key:!0,ref:!0,__self:!0,__source:!0};function Jye(e,t,r){var s,a={},n=null,c=null;if(t!=null)for(s in t.ref!==void 0&&(c=t.ref),t.key!==void 0&&(n=\"\"+t.key),t)Yye.call(t,s)&&!Kye.hasOwnProperty(s)&&(a[s]=t[s]);var f=arguments.length-2;if(f===1)a.children=r;else if(1<f){for(var p=Array(f),h=0;h<f;h++)p[h]=arguments[h+2];a.children=p}if(e&&e.defaultProps)for(s in f=e.defaultProps,f)a[s]===void 0&&(a[s]=f[s]);return{$$typeof:ew,type:e,key:n,ref:c,props:a,_owner:_q.current}}function Tct(e,t){return{$$typeof:ew,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function Hq(e){return typeof e==\"object\"&&e!==null&&e.$$typeof===ew}function Fct(e){var t={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+e.replace(/[=:]/g,function(r){return t[r]})}var Lye=/\\/+/g;function Oq(e,t){return typeof e==\"object\"&&e!==null&&e.key!=null?Fct(\"\"+e.key):t.toString(36)}function rF(e,t,r,s,a){var n=typeof e;(n===\"undefined\"||n===\"boolean\")&&(e=null);var c=!1;if(e===null)c=!0;else switch(n){case\"string\":case\"number\":c=!0;break;case\"object\":switch(e.$$typeof){case ew:case Mye:c=!0}}if(c)return c=e,a=a(c),e=s===\"\"?\".\"+Oq(c,0):s,Array.isArray(a)?(r=\"\",e!=null&&(r=e.replace(Lye,\"$&/\")+\"/\"),rF(a,t,r,\"\",function(h){return h})):a!=null&&(Hq(a)&&(a=Tct(a,r+(!a.key||c&&c.key===a.key?\"\":(\"\"+a.key).replace(Lye,\"$&/\")+\"/\")+e)),t.push(a)),1;if(c=0,s=s===\"\"?\".\":s+\":\",Array.isArray(e))for(var f=0;f<e.length;f++){n=e[f];var p=s+Oq(n,f);c+=rF(n,t,r,p,a)}else if(p=Rct(e),typeof p==\"function\")for(e=p.call(e),f=0;!(n=e.next()).done;)n=n.value,p=s+Oq(n,f++),c+=rF(n,t,r,p,a);else if(n===\"object\")throw t=\"\"+e,Error(RS(31,t===\"[object Object]\"?\"object with keys {\"+Object.keys(e).join(\", \")+\"}\":t));return c}function tF(e,t,r){if(e==null)return e;var s=[],a=0;return rF(e,s,\"\",\"\",function(n){return t.call(r,n,a++)}),s}function Nct(e){if(e._status===-1){var t=e._result;t=t(),e._status=0,e._result=t,t.then(function(r){e._status===0&&(r=r.default,e._status=1,e._result=r)},function(r){e._status===0&&(e._status=2,e._result=r)})}if(e._status===1)return e._result;throw e._result}var zye={current:null};function zp(){var e=zye.current;if(e===null)throw Error(RS(321));return e}var Oct={ReactCurrentDispatcher:zye,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:_q,IsSomeRendererActing:{current:!1},assign:Lq};Pn.Children={map:tF,forEach:function(e,t,r){tF(e,function(){t.apply(this,arguments)},r)},count:function(e){var t=0;return tF(e,function(){t++}),t},toArray:function(e){return tF(e,function(t){return t})||[]},only:function(e){if(!Hq(e))throw Error(RS(143));return e}};Pn.Component=tw;Pn.PureComponent=Mq;Pn.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Oct;Pn.cloneElement=function(e,t,r){if(e==null)throw Error(RS(267,e));var s=Lq({},e.props),a=e.key,n=e.ref,c=e._owner;if(t!=null){if(t.ref!==void 0&&(n=t.ref,c=_q.current),t.key!==void 0&&(a=\"\"+t.key),e.type&&e.type.defaultProps)var f=e.type.defaultProps;for(p in t)Yye.call(t,p)&&!Kye.hasOwnProperty(p)&&(s[p]=t[p]===void 0&&f!==void 0?f[p]:t[p])}var p=arguments.length-2;if(p===1)s.children=r;else if(1<p){f=Array(p);for(var h=0;h<p;h++)f[h]=arguments[h+2];s.children=f}return{$$typeof:ew,type:e.type,key:a,ref:n,props:s,_owner:c}};Pn.createContext=function(e,t){return t===void 0&&(t=null),e={$$typeof:_ye,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider={$$typeof:Uye,_context:e},e.Consumer=e};Pn.createElement=Jye;Pn.createFactory=function(e){var t=Jye.bind(null,e);return t.type=e,t};Pn.createRef=function(){return{current:null}};Pn.forwardRef=function(e){return{$$typeof:Hye,render:e}};Pn.isValidElement=Hq;Pn.lazy=function(e){return{$$typeof:Gye,_payload:{_status:-1,_result:e},_init:Nct}};Pn.memo=function(e,t){return{$$typeof:jye,type:e,compare:t===void 0?null:t}};Pn.useCallback=function(e,t){return zp().useCallback(e,t)};Pn.useContext=function(e,t){return zp().useContext(e,t)};Pn.useDebugValue=function(){};Pn.useEffect=function(e,t){return zp().useEffect(e,t)};Pn.useImperativeHandle=function(e,t,r){return zp().useImperativeHandle(e,t,r)};Pn.useLayoutEffect=function(e,t){return zp().useLayoutEffect(e,t)};Pn.useMemo=function(e,t){return zp().useMemo(e,t)};Pn.useReducer=function(e,t,r){return zp().useReducer(e,t,r)};Pn.useRef=function(e){return zp().useRef(e)};Pn.useState=function(e){return zp().useState(e)};Pn.version=\"17.0.2\"});var gn=G((ZVt,Xye)=>{\"use strict\";Xye.exports=Zye()});var nF=G((XVt,$ye)=>{function Lct(e){var t=typeof e;return e!=null&&(t==\"object\"||t==\"function\")}$ye.exports=Lct});var tEe=G(($Vt,eEe)=>{var Mct=typeof global==\"object\"&&global&&global.Object===Object&&global;eEe.exports=Mct});var jq=G((eYt,rEe)=>{var Uct=tEe(),_ct=typeof self==\"object\"&&self&&self.Object===Object&&self,Hct=Uct||_ct||Function(\"return this\")();rEe.exports=Hct});var iEe=G((tYt,nEe)=>{var jct=jq(),Gct=function(){return jct.Date.now()};nEe.exports=Gct});var oEe=G((rYt,sEe)=>{var qct=/\\s/;function Wct(e){for(var t=e.length;t--&&qct.test(e.charAt(t)););return t}sEe.exports=Wct});var lEe=G((nYt,aEe)=>{var Vct=oEe(),Yct=/^\\s+/;function Kct(e){return e&&e.slice(0,Vct(e)+1).replace(Yct,\"\")}aEe.exports=Kct});var Gq=G((iYt,cEe)=>{var Jct=jq(),zct=Jct.Symbol;cEe.exports=zct});var pEe=G((sYt,AEe)=>{var uEe=Gq(),fEe=Object.prototype,Zct=fEe.hasOwnProperty,Xct=fEe.toString,TS=uEe?uEe.toStringTag:void 0;function $ct(e){var t=Zct.call(e,TS),r=e[TS];try{e[TS]=void 0;var s=!0}catch{}var a=Xct.call(e);return s&&(t?e[TS]=r:delete e[TS]),a}AEe.exports=$ct});var gEe=G((oYt,hEe)=>{var eut=Object.prototype,tut=eut.toString;function rut(e){return tut.call(e)}hEe.exports=rut});var EEe=G((aYt,yEe)=>{var dEe=Gq(),nut=pEe(),iut=gEe(),sut=\"[object Null]\",out=\"[object Undefined]\",mEe=dEe?dEe.toStringTag:void 0;function aut(e){return e==null?e===void 0?out:sut:mEe&&mEe in Object(e)?nut(e):iut(e)}yEe.exports=aut});var CEe=G((lYt,IEe)=>{function lut(e){return e!=null&&typeof e==\"object\"}IEe.exports=lut});var BEe=G((cYt,wEe)=>{var cut=EEe(),uut=CEe(),fut=\"[object Symbol]\";function Aut(e){return typeof e==\"symbol\"||uut(e)&&cut(e)==fut}wEe.exports=Aut});var bEe=G((uYt,DEe)=>{var put=lEe(),vEe=nF(),hut=BEe(),SEe=NaN,gut=/^[-+]0x[0-9a-f]+$/i,dut=/^0b[01]+$/i,mut=/^0o[0-7]+$/i,yut=parseInt;function Eut(e){if(typeof e==\"number\")return e;if(hut(e))return SEe;if(vEe(e)){var t=typeof e.valueOf==\"function\"?e.valueOf():e;e=vEe(t)?t+\"\":t}if(typeof e!=\"string\")return e===0?e:+e;e=put(e);var r=dut.test(e);return r||mut.test(e)?yut(e.slice(2),r?2:8):gut.test(e)?SEe:+e}DEe.exports=Eut});var kEe=G((fYt,xEe)=>{var Iut=nF(),qq=iEe(),PEe=bEe(),Cut=\"Expected a function\",wut=Math.max,But=Math.min;function vut(e,t,r){var s,a,n,c,f,p,h=0,E=!1,C=!1,S=!0;if(typeof e!=\"function\")throw new TypeError(Cut);t=PEe(t)||0,Iut(r)&&(E=!!r.leading,C=\"maxWait\"in r,n=C?wut(PEe(r.maxWait)||0,t):n,S=\"trailing\"in r?!!r.trailing:S);function x(ae){var de=s,Ae=a;return s=a=void 0,h=ae,c=e.apply(Ae,de),c}function I(ae){return h=ae,f=setTimeout(U,t),E?x(ae):c}function T(ae){var de=ae-p,Ae=ae-h,Ce=t-de;return C?But(Ce,n-Ae):Ce}function O(ae){var de=ae-p,Ae=ae-h;return p===void 0||de>=t||de<0||C&&Ae>=n}function U(){var ae=qq();if(O(ae))return Y(ae);f=setTimeout(U,T(ae))}function Y(ae){return f=void 0,S&&s?x(ae):(s=a=void 0,c)}function te(){f!==void 0&&clearTimeout(f),h=0,s=p=a=f=void 0}function ie(){return f===void 0?c:Y(qq())}function ue(){var ae=qq(),de=O(ae);if(s=arguments,a=this,p=ae,de){if(f===void 0)return I(p);if(C)return clearTimeout(f),f=setTimeout(U,t),x(p)}return f===void 0&&(f=setTimeout(U,t)),c}return ue.cancel=te,ue.flush=ie,ue}xEe.exports=vut});var REe=G((AYt,QEe)=>{var Sut=kEe(),Dut=nF(),but=\"Expected a function\";function Put(e,t,r){var s=!0,a=!0;if(typeof e!=\"function\")throw new TypeError(but);return Dut(r)&&(s=\"leading\"in r?!!r.leading:s,a=\"trailing\"in r?!!r.trailing:a),Sut(e,t,{leading:s,maxWait:t,trailing:a})}QEe.exports=Put});var Vq=G((pYt,Wq)=>{\"use strict\";var Bn=Wq.exports;Wq.exports.default=Bn;var $n=\"\\x1B[\",NS=\"\\x1B]\",rw=\"\\x07\",iF=\";\",TEe=process.env.TERM_PROGRAM===\"Apple_Terminal\";Bn.cursorTo=(e,t)=>{if(typeof e!=\"number\")throw new TypeError(\"The `x` argument is required\");return typeof t!=\"number\"?$n+(e+1)+\"G\":$n+(t+1)+\";\"+(e+1)+\"H\"};Bn.cursorMove=(e,t)=>{if(typeof e!=\"number\")throw new TypeError(\"The `x` argument is required\");let r=\"\";return e<0?r+=$n+-e+\"D\":e>0&&(r+=$n+e+\"C\"),t<0?r+=$n+-t+\"A\":t>0&&(r+=$n+t+\"B\"),r};Bn.cursorUp=(e=1)=>$n+e+\"A\";Bn.cursorDown=(e=1)=>$n+e+\"B\";Bn.cursorForward=(e=1)=>$n+e+\"C\";Bn.cursorBackward=(e=1)=>$n+e+\"D\";Bn.cursorLeft=$n+\"G\";Bn.cursorSavePosition=TEe?\"\\x1B7\":$n+\"s\";Bn.cursorRestorePosition=TEe?\"\\x1B8\":$n+\"u\";Bn.cursorGetPosition=$n+\"6n\";Bn.cursorNextLine=$n+\"E\";Bn.cursorPrevLine=$n+\"F\";Bn.cursorHide=$n+\"?25l\";Bn.cursorShow=$n+\"?25h\";Bn.eraseLines=e=>{let t=\"\";for(let r=0;r<e;r++)t+=Bn.eraseLine+(r<e-1?Bn.cursorUp():\"\");return e&&(t+=Bn.cursorLeft),t};Bn.eraseEndLine=$n+\"K\";Bn.eraseStartLine=$n+\"1K\";Bn.eraseLine=$n+\"2K\";Bn.eraseDown=$n+\"J\";Bn.eraseUp=$n+\"1J\";Bn.eraseScreen=$n+\"2J\";Bn.scrollUp=$n+\"S\";Bn.scrollDown=$n+\"T\";Bn.clearScreen=\"\\x1Bc\";Bn.clearTerminal=process.platform===\"win32\"?`${Bn.eraseScreen}${$n}0f`:`${Bn.eraseScreen}${$n}3J${$n}H`;Bn.beep=rw;Bn.link=(e,t)=>[NS,\"8\",iF,iF,t,rw,e,NS,\"8\",iF,iF,rw].join(\"\");Bn.image=(e,t={})=>{let r=`${NS}1337;File=inline=1`;return t.width&&(r+=`;width=${t.width}`),t.height&&(r+=`;height=${t.height}`),t.preserveAspectRatio===!1&&(r+=\";preserveAspectRatio=0\"),r+\":\"+e.toString(\"base64\")+rw};Bn.iTerm={setCwd:(e=process.cwd())=>`${NS}50;CurrentDir=${e}${rw}`,annotation:(e,t={})=>{let r=`${NS}1337;`,s=typeof t.x<\"u\",a=typeof t.y<\"u\";if((s||a)&&!(s&&a&&typeof t.length<\"u\"))throw new Error(\"`x`, `y` and `length` must be defined when `x` or `y` is defined\");return e=e.replace(/\\|/g,\"\"),r+=t.isHidden?\"AddHiddenAnnotation=\":\"AddAnnotation=\",t.length>0?r+=(s?[e,t.length,t.x,t.y]:[t.length,e]).join(\"|\"):r+=e,r+rw}}});var NEe=G((hYt,Yq)=>{\"use strict\";var FEe=(e,t)=>{for(let r of Reflect.ownKeys(t))Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));return e};Yq.exports=FEe;Yq.exports.default=FEe});var LEe=G((gYt,oF)=>{\"use strict\";var xut=NEe(),sF=new WeakMap,OEe=(e,t={})=>{if(typeof e!=\"function\")throw new TypeError(\"Expected a function\");let r,s=0,a=e.displayName||e.name||\"<anonymous>\",n=function(...c){if(sF.set(n,++s),s===1)r=e.apply(this,c),e=null;else if(t.throw===!0)throw new Error(`Function \\`${a}\\` can only be called once`);return r};return xut(n,e),sF.set(n,s),n};oF.exports=OEe;oF.exports.default=OEe;oF.exports.callCount=e=>{if(!sF.has(e))throw new Error(`The given function \\`${e.name}\\` is not wrapped by the \\`onetime\\` package`);return sF.get(e)}});var MEe=G((dYt,aF)=>{aF.exports=[\"SIGABRT\",\"SIGALRM\",\"SIGHUP\",\"SIGINT\",\"SIGTERM\"];process.platform!==\"win32\"&&aF.exports.push(\"SIGVTALRM\",\"SIGXCPU\",\"SIGXFSZ\",\"SIGUSR2\",\"SIGTRAP\",\"SIGSYS\",\"SIGQUIT\",\"SIGIOT\");process.platform===\"linux\"&&aF.exports.push(\"SIGIO\",\"SIGPOLL\",\"SIGPWR\",\"SIGSTKFLT\",\"SIGUNUSED\")});var zq=G((mYt,sw)=>{var Qi=global.process,Fm=function(e){return e&&typeof e==\"object\"&&typeof e.removeListener==\"function\"&&typeof e.emit==\"function\"&&typeof e.reallyExit==\"function\"&&typeof e.listeners==\"function\"&&typeof e.kill==\"function\"&&typeof e.pid==\"number\"&&typeof e.on==\"function\"};Fm(Qi)?(UEe=Ie(\"assert\"),nw=MEe(),_Ee=/^win/i.test(Qi.platform),OS=Ie(\"events\"),typeof OS!=\"function\"&&(OS=OS.EventEmitter),Qi.__signal_exit_emitter__?eo=Qi.__signal_exit_emitter__:(eo=Qi.__signal_exit_emitter__=new OS,eo.count=0,eo.emitted={}),eo.infinite||(eo.setMaxListeners(1/0),eo.infinite=!0),sw.exports=function(e,t){if(!Fm(global.process))return function(){};UEe.equal(typeof e,\"function\",\"a callback must be provided for exit handler\"),iw===!1&&Kq();var r=\"exit\";t&&t.alwaysLast&&(r=\"afterexit\");var s=function(){eo.removeListener(r,e),eo.listeners(\"exit\").length===0&&eo.listeners(\"afterexit\").length===0&&lF()};return eo.on(r,e),s},lF=function(){!iw||!Fm(global.process)||(iw=!1,nw.forEach(function(t){try{Qi.removeListener(t,cF[t])}catch{}}),Qi.emit=uF,Qi.reallyExit=Jq,eo.count-=1)},sw.exports.unload=lF,Nm=function(t,r,s){eo.emitted[t]||(eo.emitted[t]=!0,eo.emit(t,r,s))},cF={},nw.forEach(function(e){cF[e]=function(){if(Fm(global.process)){var r=Qi.listeners(e);r.length===eo.count&&(lF(),Nm(\"exit\",null,e),Nm(\"afterexit\",null,e),_Ee&&e===\"SIGHUP\"&&(e=\"SIGINT\"),Qi.kill(Qi.pid,e))}}}),sw.exports.signals=function(){return nw},iw=!1,Kq=function(){iw||!Fm(global.process)||(iw=!0,eo.count+=1,nw=nw.filter(function(t){try{return Qi.on(t,cF[t]),!0}catch{return!1}}),Qi.emit=jEe,Qi.reallyExit=HEe)},sw.exports.load=Kq,Jq=Qi.reallyExit,HEe=function(t){Fm(global.process)&&(Qi.exitCode=t||0,Nm(\"exit\",Qi.exitCode,null),Nm(\"afterexit\",Qi.exitCode,null),Jq.call(Qi,Qi.exitCode))},uF=Qi.emit,jEe=function(t,r){if(t===\"exit\"&&Fm(global.process)){r!==void 0&&(Qi.exitCode=r);var s=uF.apply(this,arguments);return Nm(\"exit\",Qi.exitCode,null),Nm(\"afterexit\",Qi.exitCode,null),s}else return uF.apply(this,arguments)}):sw.exports=function(){return function(){}};var UEe,nw,_Ee,OS,eo,lF,Nm,cF,iw,Kq,Jq,HEe,uF,jEe});var qEe=G((yYt,GEe)=>{\"use strict\";var kut=LEe(),Qut=zq();GEe.exports=kut(()=>{Qut(()=>{process.stderr.write(\"\\x1B[?25h\")},{alwaysLast:!0})})});var Zq=G(ow=>{\"use strict\";var Rut=qEe(),fF=!1;ow.show=(e=process.stderr)=>{e.isTTY&&(fF=!1,e.write(\"\\x1B[?25h\"))};ow.hide=(e=process.stderr)=>{e.isTTY&&(Rut(),fF=!0,e.write(\"\\x1B[?25l\"))};ow.toggle=(e,t)=>{e!==void 0&&(fF=e),fF?ow.show(t):ow.hide(t)}});var KEe=G(LS=>{\"use strict\";var YEe=LS&&LS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(LS,\"__esModule\",{value:!0});var WEe=YEe(Vq()),VEe=YEe(Zq()),Tut=(e,{showCursor:t=!1}={})=>{let r=0,s=\"\",a=!1,n=c=>{!t&&!a&&(VEe.default.hide(),a=!0);let f=c+`\n`;f!==s&&(s=f,e.write(WEe.default.eraseLines(r)+f),r=f.split(`\n`).length)};return n.clear=()=>{e.write(WEe.default.eraseLines(r)),s=\"\",r=0},n.done=()=>{s=\"\",r=0,t||(VEe.default.show(),a=!1)},n};LS.default={create:Tut}});var JEe=G((CYt,Fut)=>{Fut.exports=[{name:\"AppVeyor\",constant:\"APPVEYOR\",env:\"APPVEYOR\",pr:\"APPVEYOR_PULL_REQUEST_NUMBER\"},{name:\"Azure Pipelines\",constant:\"AZURE_PIPELINES\",env:\"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI\",pr:\"SYSTEM_PULLREQUEST_PULLREQUESTID\"},{name:\"Bamboo\",constant:\"BAMBOO\",env:\"bamboo_planKey\"},{name:\"Bitbucket Pipelines\",constant:\"BITBUCKET\",env:\"BITBUCKET_COMMIT\",pr:\"BITBUCKET_PR_ID\"},{name:\"Bitrise\",constant:\"BITRISE\",env:\"BITRISE_IO\",pr:\"BITRISE_PULL_REQUEST\"},{name:\"Buddy\",constant:\"BUDDY\",env:\"BUDDY_WORKSPACE_ID\",pr:\"BUDDY_EXECUTION_PULL_REQUEST_ID\"},{name:\"Buildkite\",constant:\"BUILDKITE\",env:\"BUILDKITE\",pr:{env:\"BUILDKITE_PULL_REQUEST\",ne:\"false\"}},{name:\"CircleCI\",constant:\"CIRCLE\",env:\"CIRCLECI\",pr:\"CIRCLE_PULL_REQUEST\"},{name:\"Cirrus CI\",constant:\"CIRRUS\",env:\"CIRRUS_CI\",pr:\"CIRRUS_PR\"},{name:\"AWS CodeBuild\",constant:\"CODEBUILD\",env:\"CODEBUILD_BUILD_ARN\"},{name:\"Codeship\",constant:\"CODESHIP\",env:{CI_NAME:\"codeship\"}},{name:\"Drone\",constant:\"DRONE\",env:\"DRONE\",pr:{DRONE_BUILD_EVENT:\"pull_request\"}},{name:\"dsari\",constant:\"DSARI\",env:\"DSARI\"},{name:\"GitLab CI\",constant:\"GITLAB\",env:\"GITLAB_CI\"},{name:\"GoCD\",constant:\"GOCD\",env:\"GO_PIPELINE_LABEL\"},{name:\"Hudson\",constant:\"HUDSON\",env:\"HUDSON_URL\"},{name:\"Jenkins\",constant:\"JENKINS\",env:[\"JENKINS_URL\",\"BUILD_ID\"],pr:{any:[\"ghprbPullId\",\"CHANGE_ID\"]}},{name:\"Magnum CI\",constant:\"MAGNUM\",env:\"MAGNUM\"},{name:\"Netlify CI\",constant:\"NETLIFY\",env:\"NETLIFY_BUILD_BASE\",pr:{env:\"PULL_REQUEST\",ne:\"false\"}},{name:\"Sail CI\",constant:\"SAIL\",env:\"SAILCI\",pr:\"SAIL_PULL_REQUEST_NUMBER\"},{name:\"Semaphore\",constant:\"SEMAPHORE\",env:\"SEMAPHORE\",pr:\"PULL_REQUEST_NUMBER\"},{name:\"Shippable\",constant:\"SHIPPABLE\",env:\"SHIPPABLE\",pr:{IS_PULL_REQUEST:\"true\"}},{name:\"Solano CI\",constant:\"SOLANO\",env:\"TDDIUM\",pr:\"TDDIUM_PR_ID\"},{name:\"Strider CD\",constant:\"STRIDER\",env:\"STRIDER\"},{name:\"TaskCluster\",constant:\"TASKCLUSTER\",env:[\"TASK_ID\",\"RUN_ID\"]},{name:\"TeamCity\",constant:\"TEAMCITY\",env:\"TEAMCITY_VERSION\"},{name:\"Travis CI\",constant:\"TRAVIS\",env:\"TRAVIS\",pr:{env:\"TRAVIS_PULL_REQUEST\",ne:\"false\"}}]});var XEe=G(rc=>{\"use strict\";var ZEe=JEe(),fA=process.env;Object.defineProperty(rc,\"_vendors\",{value:ZEe.map(function(e){return e.constant})});rc.name=null;rc.isPR=null;ZEe.forEach(function(e){var t=Array.isArray(e.env)?e.env:[e.env],r=t.every(function(s){return zEe(s)});if(rc[e.constant]=r,r)switch(rc.name=e.name,typeof e.pr){case\"string\":rc.isPR=!!fA[e.pr];break;case\"object\":\"env\"in e.pr?rc.isPR=e.pr.env in fA&&fA[e.pr.env]!==e.pr.ne:\"any\"in e.pr?rc.isPR=e.pr.any.some(function(s){return!!fA[s]}):rc.isPR=zEe(e.pr);break;default:rc.isPR=null}});rc.isCI=!!(fA.CI||fA.CONTINUOUS_INTEGRATION||fA.BUILD_NUMBER||fA.RUN_ID||rc.name);function zEe(e){return typeof e==\"string\"?!!fA[e]:Object.keys(e).every(function(t){return fA[t]===e[t]})}});var eIe=G((BYt,$Ee)=>{\"use strict\";$Ee.exports=XEe().isCI});var rIe=G((vYt,tIe)=>{\"use strict\";var Nut=e=>{let t=new Set;do for(let r of Reflect.ownKeys(e))t.add([e,r]);while((e=Reflect.getPrototypeOf(e))&&e!==Object.prototype);return t};tIe.exports=(e,{include:t,exclude:r}={})=>{let s=a=>{let n=c=>typeof c==\"string\"?a===c:c.test(a);return t?t.some(n):r?!r.some(n):!0};for(let[a,n]of Nut(e.constructor.prototype)){if(n===\"constructor\"||!s(n))continue;let c=Reflect.getOwnPropertyDescriptor(a,n);c&&typeof c.value==\"function\"&&(e[n]=e[n].bind(e))}return e}});var lIe=G(Jn=>{\"use strict\";var lw,_S,gF,i9;typeof performance==\"object\"&&typeof performance.now==\"function\"?(nIe=performance,Jn.unstable_now=function(){return nIe.now()}):(Xq=Date,iIe=Xq.now(),Jn.unstable_now=function(){return Xq.now()-iIe});var nIe,Xq,iIe;typeof window>\"u\"||typeof MessageChannel!=\"function\"?(aw=null,$q=null,e9=function(){if(aw!==null)try{var e=Jn.unstable_now();aw(!0,e),aw=null}catch(t){throw setTimeout(e9,0),t}},lw=function(e){aw!==null?setTimeout(lw,0,e):(aw=e,setTimeout(e9,0))},_S=function(e,t){$q=setTimeout(e,t)},gF=function(){clearTimeout($q)},Jn.unstable_shouldYield=function(){return!1},i9=Jn.unstable_forceFrameRate=function(){}):(sIe=window.setTimeout,oIe=window.clearTimeout,typeof console<\"u\"&&(aIe=window.cancelAnimationFrame,typeof window.requestAnimationFrame!=\"function\"&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\"),typeof aIe!=\"function\"&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")),MS=!1,US=null,AF=-1,t9=5,r9=0,Jn.unstable_shouldYield=function(){return Jn.unstable_now()>=r9},i9=function(){},Jn.unstable_forceFrameRate=function(e){0>e||125<e?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):t9=0<e?Math.floor(1e3/e):5},n9=new MessageChannel,pF=n9.port2,n9.port1.onmessage=function(){if(US!==null){var e=Jn.unstable_now();r9=e+t9;try{US(!0,e)?pF.postMessage(null):(MS=!1,US=null)}catch(t){throw pF.postMessage(null),t}}else MS=!1},lw=function(e){US=e,MS||(MS=!0,pF.postMessage(null))},_S=function(e,t){AF=sIe(function(){e(Jn.unstable_now())},t)},gF=function(){oIe(AF),AF=-1});var aw,$q,e9,sIe,oIe,aIe,MS,US,AF,t9,r9,n9,pF;function s9(e,t){var r=e.length;e.push(t);e:for(;;){var s=r-1>>>1,a=e[s];if(a!==void 0&&0<hF(a,t))e[s]=t,e[r]=a,r=s;else break e}}function rf(e){return e=e[0],e===void 0?null:e}function dF(e){var t=e[0];if(t!==void 0){var r=e.pop();if(r!==t){e[0]=r;e:for(var s=0,a=e.length;s<a;){var n=2*(s+1)-1,c=e[n],f=n+1,p=e[f];if(c!==void 0&&0>hF(c,r))p!==void 0&&0>hF(p,c)?(e[s]=p,e[f]=r,s=f):(e[s]=c,e[n]=r,s=n);else if(p!==void 0&&0>hF(p,r))e[s]=p,e[f]=r,s=f;else break e}}return t}return null}function hF(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}var AA=[],z0=[],Out=1,jc=null,na=3,mF=!1,Om=!1,HS=!1;function o9(e){for(var t=rf(z0);t!==null;){if(t.callback===null)dF(z0);else if(t.startTime<=e)dF(z0),t.sortIndex=t.expirationTime,s9(AA,t);else break;t=rf(z0)}}function a9(e){if(HS=!1,o9(e),!Om)if(rf(AA)!==null)Om=!0,lw(l9);else{var t=rf(z0);t!==null&&_S(a9,t.startTime-e)}}function l9(e,t){Om=!1,HS&&(HS=!1,gF()),mF=!0;var r=na;try{for(o9(t),jc=rf(AA);jc!==null&&(!(jc.expirationTime>t)||e&&!Jn.unstable_shouldYield());){var s=jc.callback;if(typeof s==\"function\"){jc.callback=null,na=jc.priorityLevel;var a=s(jc.expirationTime<=t);t=Jn.unstable_now(),typeof a==\"function\"?jc.callback=a:jc===rf(AA)&&dF(AA),o9(t)}else dF(AA);jc=rf(AA)}if(jc!==null)var n=!0;else{var c=rf(z0);c!==null&&_S(a9,c.startTime-t),n=!1}return n}finally{jc=null,na=r,mF=!1}}var Lut=i9;Jn.unstable_IdlePriority=5;Jn.unstable_ImmediatePriority=1;Jn.unstable_LowPriority=4;Jn.unstable_NormalPriority=3;Jn.unstable_Profiling=null;Jn.unstable_UserBlockingPriority=2;Jn.unstable_cancelCallback=function(e){e.callback=null};Jn.unstable_continueExecution=function(){Om||mF||(Om=!0,lw(l9))};Jn.unstable_getCurrentPriorityLevel=function(){return na};Jn.unstable_getFirstCallbackNode=function(){return rf(AA)};Jn.unstable_next=function(e){switch(na){case 1:case 2:case 3:var t=3;break;default:t=na}var r=na;na=t;try{return e()}finally{na=r}};Jn.unstable_pauseExecution=function(){};Jn.unstable_requestPaint=Lut;Jn.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var r=na;na=e;try{return t()}finally{na=r}};Jn.unstable_scheduleCallback=function(e,t,r){var s=Jn.unstable_now();switch(typeof r==\"object\"&&r!==null?(r=r.delay,r=typeof r==\"number\"&&0<r?s+r:s):r=s,e){case 1:var a=-1;break;case 2:a=250;break;case 5:a=1073741823;break;case 4:a=1e4;break;default:a=5e3}return a=r+a,e={id:Out++,callback:t,priorityLevel:e,startTime:r,expirationTime:a,sortIndex:-1},r>s?(e.sortIndex=r,s9(z0,e),rf(AA)===null&&e===rf(z0)&&(HS?gF():HS=!0,_S(a9,r-s))):(e.sortIndex=a,s9(AA,e),Om||mF||(Om=!0,lw(l9))),e};Jn.unstable_wrapCallback=function(e){var t=na;return function(){var r=na;na=t;try{return e.apply(this,arguments)}finally{na=r}}}});var c9=G((DYt,cIe)=>{\"use strict\";cIe.exports=lIe()});var uIe=G((bYt,jS)=>{jS.exports=function(t){var r={},s=Nq(),a=gn(),n=c9();function c(v){for(var D=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+v,Q=1;Q<arguments.length;Q++)D+=\"&args[]=\"+encodeURIComponent(arguments[Q]);return\"Minified React error #\"+v+\"; visit \"+D+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var f=a.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,p=60103,h=60106,E=60107,C=60108,S=60114,x=60109,I=60110,T=60112,O=60113,U=60120,Y=60115,te=60116,ie=60121,ue=60129,ae=60130,de=60131;if(typeof Symbol==\"function\"&&Symbol.for){var Ae=Symbol.for;p=Ae(\"react.element\"),h=Ae(\"react.portal\"),E=Ae(\"react.fragment\"),C=Ae(\"react.strict_mode\"),S=Ae(\"react.profiler\"),x=Ae(\"react.provider\"),I=Ae(\"react.context\"),T=Ae(\"react.forward_ref\"),O=Ae(\"react.suspense\"),U=Ae(\"react.suspense_list\"),Y=Ae(\"react.memo\"),te=Ae(\"react.lazy\"),ie=Ae(\"react.block\"),Ae(\"react.scope\"),ue=Ae(\"react.debug_trace_mode\"),ae=Ae(\"react.offscreen\"),de=Ae(\"react.legacy_hidden\")}var Ce=typeof Symbol==\"function\"&&Symbol.iterator;function Ee(v){return v===null||typeof v!=\"object\"?null:(v=Ce&&v[Ce]||v[\"@@iterator\"],typeof v==\"function\"?v:null)}function g(v){if(v==null)return null;if(typeof v==\"function\")return v.displayName||v.name||null;if(typeof v==\"string\")return v;switch(v){case E:return\"Fragment\";case h:return\"Portal\";case S:return\"Profiler\";case C:return\"StrictMode\";case O:return\"Suspense\";case U:return\"SuspenseList\"}if(typeof v==\"object\")switch(v.$$typeof){case I:return(v.displayName||\"Context\")+\".Consumer\";case x:return(v._context.displayName||\"Context\")+\".Provider\";case T:var D=v.render;return D=D.displayName||D.name||\"\",v.displayName||(D!==\"\"?\"ForwardRef(\"+D+\")\":\"ForwardRef\");case Y:return g(v.type);case ie:return g(v._render);case te:D=v._payload,v=v._init;try{return g(v(D))}catch{}}return null}function Se(v){var D=v,Q=v;if(v.alternate)for(;D.return;)D=D.return;else{v=D;do D=v,D.flags&1026&&(Q=D.return),v=D.return;while(v)}return D.tag===3?Q:null}function Be(v){if(Se(v)!==v)throw Error(c(188))}function me(v){var D=v.alternate;if(!D){if(D=Se(v),D===null)throw Error(c(188));return D!==v?null:v}for(var Q=v,H=D;;){var V=Q.return;if(V===null)break;var ne=V.alternate;if(ne===null){if(H=V.return,H!==null){Q=H;continue}break}if(V.child===ne.child){for(ne=V.child;ne;){if(ne===Q)return Be(V),v;if(ne===H)return Be(V),D;ne=ne.sibling}throw Error(c(188))}if(Q.return!==H.return)Q=V,H=ne;else{for(var ve=!1,_e=V.child;_e;){if(_e===Q){ve=!0,Q=V,H=ne;break}if(_e===H){ve=!0,H=V,Q=ne;break}_e=_e.sibling}if(!ve){for(_e=ne.child;_e;){if(_e===Q){ve=!0,Q=ne,H=V;break}if(_e===H){ve=!0,H=ne,Q=V;break}_e=_e.sibling}if(!ve)throw Error(c(189))}}if(Q.alternate!==H)throw Error(c(190))}if(Q.tag!==3)throw Error(c(188));return Q.stateNode.current===Q?v:D}function ce(v){if(v=me(v),!v)return null;for(var D=v;;){if(D.tag===5||D.tag===6)return D;if(D.child)D.child.return=D,D=D.child;else{if(D===v)break;for(;!D.sibling;){if(!D.return||D.return===v)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}}return null}function X(v){if(v=me(v),!v)return null;for(var D=v;;){if(D.tag===5||D.tag===6)return D;if(D.child&&D.tag!==4)D.child.return=D,D=D.child;else{if(D===v)break;for(;!D.sibling;){if(!D.return||D.return===v)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}}return null}function De(v,D){for(var Q=v.alternate;D!==null;){if(D===v||D===Q)return!0;D=D.return}return!1}var Qe=t.getPublicInstance,it=t.getRootHostContext,_=t.getChildHostContext,tt=t.prepareForCommit,Ne=t.resetAfterCommit,ke=t.createInstance,be=t.appendInitialChild,je=t.finalizeInitialChildren,Re=t.prepareUpdate,ct=t.shouldSetTextContent,Me=t.createTextInstance,P=t.scheduleTimeout,w=t.cancelTimeout,b=t.noTimeout,y=t.isPrimaryRenderer,F=t.supportsMutation,z=t.supportsPersistence,Z=t.supportsHydration,$=t.getInstanceFromNode,se=t.makeOpaqueHydratingObject,xe=t.makeClientId,Fe=t.beforeActiveInstanceBlur,ut=t.afterActiveInstanceBlur,Ct=t.preparePortalMount,qt=t.supportsTestSelectors,ir=t.findFiberRoot,Pt=t.getBoundingRect,dn=t.getTextContent,Pr=t.isHiddenSubtree,Ir=t.matchAccessibilityRole,Or=t.setFocusIfFocusable,on=t.setupIntersectionObserver,li=t.appendChild,So=t.appendChildToContainer,ns=t.commitTextUpdate,so=t.commitMount,Do=t.commitUpdate,ji=t.insertBefore,oo=t.insertInContainerBefore,bo=t.removeChild,RA=t.removeChildFromContainer,hf=t.resetTextContent,hh=t.hideInstance,gh=t.hideTextInstance,ao=t.unhideInstance,Gn=t.unhideTextInstance,Ns=t.clearContainer,lo=t.cloneInstance,iu=t.createContainerChildSet,su=t.appendChildToContainerChildSet,ou=t.finalizeContainerChildren,TA=t.replaceContainerChildren,FA=t.cloneHiddenInstance,ua=t.cloneHiddenTextInstance,fa=t.canHydrateInstance,NA=t.canHydrateTextInstance,gr=t.isSuspenseInstancePending,Po=t.isSuspenseInstanceFallback,Ue=t.getNextHydratableSibling,au=t.getFirstHydratableChild,Cr=t.hydrateInstance,gf=t.hydrateTextInstance,OA=t.getNextHydratableInstanceAfterSuspenseInstance,LA=t.commitHydratedContainer,lu=t.commitHydratedSuspenseInstance,cu;function ac(v){if(cu===void 0)try{throw Error()}catch(Q){var D=Q.stack.trim().match(/\\n( *(at )?)/);cu=D&&D[1]||\"\"}return`\n`+cu+v}var we=!1;function Nt(v,D){if(!v||we)return\"\";we=!0;var Q=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(D)if(D=function(){throw Error()},Object.defineProperty(D.prototype,\"props\",{set:function(){throw Error()}}),typeof Reflect==\"object\"&&Reflect.construct){try{Reflect.construct(D,[])}catch(ht){var H=ht}Reflect.construct(v,[],D)}else{try{D.call()}catch(ht){H=ht}v.call(D.prototype)}else{try{throw Error()}catch(ht){H=ht}v()}}catch(ht){if(ht&&H&&typeof ht.stack==\"string\"){for(var V=ht.stack.split(`\n`),ne=H.stack.split(`\n`),ve=V.length-1,_e=ne.length-1;1<=ve&&0<=_e&&V[ve]!==ne[_e];)_e--;for(;1<=ve&&0<=_e;ve--,_e--)if(V[ve]!==ne[_e]){if(ve!==1||_e!==1)do if(ve--,_e--,0>_e||V[ve]!==ne[_e])return`\n`+V[ve].replace(\" at new \",\" at \");while(1<=ve&&0<=_e);break}}}finally{we=!1,Error.prepareStackTrace=Q}return(v=v?v.displayName||v.name:\"\")?ac(v):\"\"}var lc=[],Oi=-1;function co(v){return{current:v}}function Tt(v){0>Oi||(v.current=lc[Oi],lc[Oi]=null,Oi--)}function Qn(v,D){Oi++,lc[Oi]=v.current,v.current=D}var Aa={},Gi=co(Aa),Li=co(!1),ja=Aa;function mn(v,D){var Q=v.type.contextTypes;if(!Q)return Aa;var H=v.stateNode;if(H&&H.__reactInternalMemoizedUnmaskedChildContext===D)return H.__reactInternalMemoizedMaskedChildContext;var V={},ne;for(ne in Q)V[ne]=D[ne];return H&&(v=v.stateNode,v.__reactInternalMemoizedUnmaskedChildContext=D,v.__reactInternalMemoizedMaskedChildContext=V),V}function Zn(v){return v=v.childContextTypes,v!=null}function uu(){Tt(Li),Tt(Gi)}function dh(v,D,Q){if(Gi.current!==Aa)throw Error(c(168));Qn(Gi,D),Qn(Li,Q)}function Ga(v,D,Q){var H=v.stateNode;if(v=D.childContextTypes,typeof H.getChildContext!=\"function\")return Q;H=H.getChildContext();for(var V in H)if(!(V in v))throw Error(c(108,g(D)||\"Unknown\",V));return s({},Q,H)}function qa(v){return v=(v=v.stateNode)&&v.__reactInternalMemoizedMergedChildContext||Aa,ja=Gi.current,Qn(Gi,v),Qn(Li,Li.current),!0}function Wa(v,D,Q){var H=v.stateNode;if(!H)throw Error(c(169));Q?(v=Ga(v,D,ja),H.__reactInternalMemoizedMergedChildContext=v,Tt(Li),Tt(Gi),Qn(Gi,v)):Tt(Li),Qn(Li,Q)}var $e=null,Va=null,df=n.unstable_now;df();var cc=0,vn=8;function pa(v){if(1&v)return vn=15,1;if(2&v)return vn=14,2;if(4&v)return vn=13,4;var D=24&v;return D!==0?(vn=12,D):v&32?(vn=11,32):(D=192&v,D!==0?(vn=10,D):v&256?(vn=9,256):(D=3584&v,D!==0?(vn=8,D):v&4096?(vn=7,4096):(D=4186112&v,D!==0?(vn=6,D):(D=62914560&v,D!==0?(vn=5,D):v&67108864?(vn=4,67108864):v&134217728?(vn=3,134217728):(D=805306368&v,D!==0?(vn=2,D):1073741824&v?(vn=1,1073741824):(vn=8,v))))))}function MA(v){switch(v){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function UA(v){switch(v){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(c(358,v))}}function ha(v,D){var Q=v.pendingLanes;if(Q===0)return vn=0;var H=0,V=0,ne=v.expiredLanes,ve=v.suspendedLanes,_e=v.pingedLanes;if(ne!==0)H=ne,V=vn=15;else if(ne=Q&134217727,ne!==0){var ht=ne&~ve;ht!==0?(H=pa(ht),V=vn):(_e&=ne,_e!==0&&(H=pa(_e),V=vn))}else ne=Q&~ve,ne!==0?(H=pa(ne),V=vn):_e!==0&&(H=pa(_e),V=vn);if(H===0)return 0;if(H=31-is(H),H=Q&((0>H?0:1<<H)<<1)-1,D!==0&&D!==H&&!(D&ve)){if(pa(D),V<=vn)return D;vn=V}if(D=v.entangledLanes,D!==0)for(v=v.entanglements,D&=H;0<D;)Q=31-is(D),V=1<<Q,H|=v[Q],D&=~V;return H}function xl(v){return v=v.pendingLanes&-1073741825,v!==0?v:v&1073741824?1073741824:0}function Mt(v,D){switch(v){case 15:return 1;case 14:return 2;case 12:return v=Rn(24&~D),v===0?Mt(10,D):v;case 10:return v=Rn(192&~D),v===0?Mt(8,D):v;case 8:return v=Rn(3584&~D),v===0&&(v=Rn(4186112&~D),v===0&&(v=512)),v;case 2:return D=Rn(805306368&~D),D===0&&(D=268435456),D}throw Error(c(358,v))}function Rn(v){return v&-v}function ga(v){for(var D=[],Q=0;31>Q;Q++)D.push(v);return D}function Ya(v,D,Q){v.pendingLanes|=D;var H=D-1;v.suspendedLanes&=H,v.pingedLanes&=H,v=v.eventTimes,D=31-is(D),v[D]=Q}var is=Math.clz32?Math.clz32:fc,uc=Math.log,fu=Math.LN2;function fc(v){return v===0?32:31-(uc(v)/fu|0)|0}var Ka=n.unstable_runWithPriority,Mi=n.unstable_scheduleCallback,Bs=n.unstable_cancelCallback,kl=n.unstable_shouldYield,mf=n.unstable_requestPaint,Ac=n.unstable_now,Bi=n.unstable_getCurrentPriorityLevel,Tn=n.unstable_ImmediatePriority,pc=n.unstable_UserBlockingPriority,Je=n.unstable_NormalPriority,ot=n.unstable_LowPriority,St=n.unstable_IdlePriority,lr={},ee=mf!==void 0?mf:function(){},ye=null,Oe=null,mt=!1,Et=Ac(),bt=1e4>Et?Ac:function(){return Ac()-Et};function tr(){switch(Bi()){case Tn:return 99;case pc:return 98;case Je:return 97;case ot:return 96;case St:return 95;default:throw Error(c(332))}}function pn(v){switch(v){case 99:return Tn;case 98:return pc;case 97:return Je;case 96:return ot;case 95:return St;default:throw Error(c(332))}}function ci(v,D){return v=pn(v),Ka(v,D)}function qi(v,D,Q){return v=pn(v),Mi(v,D,Q)}function Fn(){if(Oe!==null){var v=Oe;Oe=null,Bs(v)}Ja()}function Ja(){if(!mt&&ye!==null){mt=!0;var v=0;try{var D=ye;ci(99,function(){for(;v<D.length;v++){var Q=D[v];do Q=Q(!0);while(Q!==null)}}),ye=null}catch(Q){throw ye!==null&&(ye=ye.slice(v+1)),Mi(Tn,Fn),Q}finally{mt=!1}}}var Iy=f.ReactCurrentBatchConfig;function q1(v,D){return v===D&&(v!==0||1/v===1/D)||v!==v&&D!==D}var xo=typeof Object.is==\"function\"?Object.is:q1,Cy=Object.prototype.hasOwnProperty;function mh(v,D){if(xo(v,D))return!0;if(typeof v!=\"object\"||v===null||typeof D!=\"object\"||D===null)return!1;var Q=Object.keys(v),H=Object.keys(D);if(Q.length!==H.length)return!1;for(H=0;H<Q.length;H++)if(!Cy.call(D,Q[H])||!xo(v[Q[H]],D[Q[H]]))return!1;return!0}function W1(v){switch(v.tag){case 5:return ac(v.type);case 16:return ac(\"Lazy\");case 13:return ac(\"Suspense\");case 19:return ac(\"SuspenseList\");case 0:case 2:case 15:return v=Nt(v.type,!1),v;case 11:return v=Nt(v.type.render,!1),v;case 22:return v=Nt(v.type._render,!1),v;case 1:return v=Nt(v.type,!0),v;default:return\"\"}}function ko(v,D){if(v&&v.defaultProps){D=s({},D),v=v.defaultProps;for(var Q in v)D[Q]===void 0&&(D[Q]=v[Q]);return D}return D}var yh=co(null),Eh=null,Au=null,Ih=null;function Rg(){Ih=Au=Eh=null}function Tg(v,D){v=v.type._context,y?(Qn(yh,v._currentValue),v._currentValue=D):(Qn(yh,v._currentValue2),v._currentValue2=D)}function Fg(v){var D=yh.current;Tt(yh),v=v.type._context,y?v._currentValue=D:v._currentValue2=D}function wy(v,D){for(;v!==null;){var Q=v.alternate;if((v.childLanes&D)===D){if(Q===null||(Q.childLanes&D)===D)break;Q.childLanes|=D}else v.childLanes|=D,Q!==null&&(Q.childLanes|=D);v=v.return}}function yf(v,D){Eh=v,Ih=Au=null,v=v.dependencies,v!==null&&v.firstContext!==null&&(v.lanes&D&&(Ke=!0),v.firstContext=null)}function Qo(v,D){if(Ih!==v&&D!==!1&&D!==0)if((typeof D!=\"number\"||D===1073741823)&&(Ih=v,D=1073741823),D={context:v,observedBits:D,next:null},Au===null){if(Eh===null)throw Error(c(308));Au=D,Eh.dependencies={lanes:0,firstContext:D,responders:null}}else Au=Au.next=D;return y?v._currentValue:v._currentValue2}var Ql=!1;function Ch(v){v.updateQueue={baseState:v.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function Ng(v,D){v=v.updateQueue,D.updateQueue===v&&(D.updateQueue={baseState:v.baseState,firstBaseUpdate:v.firstBaseUpdate,lastBaseUpdate:v.lastBaseUpdate,shared:v.shared,effects:v.effects})}function Rl(v,D){return{eventTime:v,lane:D,tag:0,payload:null,callback:null,next:null}}function Tl(v,D){if(v=v.updateQueue,v!==null){v=v.shared;var Q=v.pending;Q===null?D.next=D:(D.next=Q.next,Q.next=D),v.pending=D}}function By(v,D){var Q=v.updateQueue,H=v.alternate;if(H!==null&&(H=H.updateQueue,Q===H)){var V=null,ne=null;if(Q=Q.firstBaseUpdate,Q!==null){do{var ve={eventTime:Q.eventTime,lane:Q.lane,tag:Q.tag,payload:Q.payload,callback:Q.callback,next:null};ne===null?V=ne=ve:ne=ne.next=ve,Q=Q.next}while(Q!==null);ne===null?V=ne=D:ne=ne.next=D}else V=ne=D;Q={baseState:H.baseState,firstBaseUpdate:V,lastBaseUpdate:ne,shared:H.shared,effects:H.effects},v.updateQueue=Q;return}v=Q.lastBaseUpdate,v===null?Q.firstBaseUpdate=D:v.next=D,Q.lastBaseUpdate=D}function _A(v,D,Q,H){var V=v.updateQueue;Ql=!1;var ne=V.firstBaseUpdate,ve=V.lastBaseUpdate,_e=V.shared.pending;if(_e!==null){V.shared.pending=null;var ht=_e,Wt=ht.next;ht.next=null,ve===null?ne=Wt:ve.next=Wt,ve=ht;var Sr=v.alternate;if(Sr!==null){Sr=Sr.updateQueue;var Lr=Sr.lastBaseUpdate;Lr!==ve&&(Lr===null?Sr.firstBaseUpdate=Wt:Lr.next=Wt,Sr.lastBaseUpdate=ht)}}if(ne!==null){Lr=V.baseState,ve=0,Sr=Wt=ht=null;do{_e=ne.lane;var Xt=ne.eventTime;if((H&_e)===_e){Sr!==null&&(Sr=Sr.next={eventTime:Xt,lane:0,tag:ne.tag,payload:ne.payload,callback:ne.callback,next:null});e:{var Xn=v,Ei=ne;switch(_e=D,Xt=Q,Ei.tag){case 1:if(Xn=Ei.payload,typeof Xn==\"function\"){Lr=Xn.call(Xt,Lr,_e);break e}Lr=Xn;break e;case 3:Xn.flags=Xn.flags&-4097|64;case 0:if(Xn=Ei.payload,_e=typeof Xn==\"function\"?Xn.call(Xt,Lr,_e):Xn,_e==null)break e;Lr=s({},Lr,_e);break e;case 2:Ql=!0}}ne.callback!==null&&(v.flags|=32,_e=V.effects,_e===null?V.effects=[ne]:_e.push(ne))}else Xt={eventTime:Xt,lane:_e,tag:ne.tag,payload:ne.payload,callback:ne.callback,next:null},Sr===null?(Wt=Sr=Xt,ht=Lr):Sr=Sr.next=Xt,ve|=_e;if(ne=ne.next,ne===null){if(_e=V.shared.pending,_e===null)break;ne=_e.next,_e.next=null,V.lastBaseUpdate=_e,V.shared.pending=null}}while(!0);Sr===null&&(ht=Lr),V.baseState=ht,V.firstBaseUpdate=Wt,V.lastBaseUpdate=Sr,zg|=ve,v.lanes=ve,v.memoizedState=Lr}}function vy(v,D,Q){if(v=D.effects,D.effects=null,v!==null)for(D=0;D<v.length;D++){var H=v[D],V=H.callback;if(V!==null){if(H.callback=null,H=Q,typeof V!=\"function\")throw Error(c(191,V));V.call(H)}}}var Sy=new a.Component().refs;function HA(v,D,Q,H){D=v.memoizedState,Q=Q(H,D),Q=Q==null?D:s({},D,Q),v.memoizedState=Q,v.lanes===0&&(v.updateQueue.baseState=Q)}var jA={isMounted:function(v){return(v=v._reactInternals)?Se(v)===v:!1},enqueueSetState:function(v,D,Q){v=v._reactInternals;var H=No(),V=Ds(v),ne=Rl(H,V);ne.payload=D,Q!=null&&(ne.callback=Q),Tl(v,ne),Ml(v,V,H)},enqueueReplaceState:function(v,D,Q){v=v._reactInternals;var H=No(),V=Ds(v),ne=Rl(H,V);ne.tag=1,ne.payload=D,Q!=null&&(ne.callback=Q),Tl(v,ne),Ml(v,V,H)},enqueueForceUpdate:function(v,D){v=v._reactInternals;var Q=No(),H=Ds(v),V=Rl(Q,H);V.tag=2,D!=null&&(V.callback=D),Tl(v,V),Ml(v,H,Q)}};function W(v,D,Q,H,V,ne,ve){return v=v.stateNode,typeof v.shouldComponentUpdate==\"function\"?v.shouldComponentUpdate(H,ne,ve):D.prototype&&D.prototype.isPureReactComponent?!mh(Q,H)||!mh(V,ne):!0}function xt(v,D,Q){var H=!1,V=Aa,ne=D.contextType;return typeof ne==\"object\"&&ne!==null?ne=Qo(ne):(V=Zn(D)?ja:Gi.current,H=D.contextTypes,ne=(H=H!=null)?mn(v,V):Aa),D=new D(Q,ne),v.memoizedState=D.state!==null&&D.state!==void 0?D.state:null,D.updater=jA,v.stateNode=D,D._reactInternals=v,H&&(v=v.stateNode,v.__reactInternalMemoizedUnmaskedChildContext=V,v.__reactInternalMemoizedMaskedChildContext=ne),D}function GA(v,D,Q,H){v=D.state,typeof D.componentWillReceiveProps==\"function\"&&D.componentWillReceiveProps(Q,H),typeof D.UNSAFE_componentWillReceiveProps==\"function\"&&D.UNSAFE_componentWillReceiveProps(Q,H),D.state!==v&&jA.enqueueReplaceState(D,D.state,null)}function Ro(v,D,Q,H){var V=v.stateNode;V.props=Q,V.state=v.memoizedState,V.refs=Sy,Ch(v);var ne=D.contextType;typeof ne==\"object\"&&ne!==null?V.context=Qo(ne):(ne=Zn(D)?ja:Gi.current,V.context=mn(v,ne)),_A(v,Q,V,H),V.state=v.memoizedState,ne=D.getDerivedStateFromProps,typeof ne==\"function\"&&(HA(v,D,ne,Q),V.state=v.memoizedState),typeof D.getDerivedStateFromProps==\"function\"||typeof V.getSnapshotBeforeUpdate==\"function\"||typeof V.UNSAFE_componentWillMount!=\"function\"&&typeof V.componentWillMount!=\"function\"||(D=V.state,typeof V.componentWillMount==\"function\"&&V.componentWillMount(),typeof V.UNSAFE_componentWillMount==\"function\"&&V.UNSAFE_componentWillMount(),D!==V.state&&jA.enqueueReplaceState(V,V.state,null),_A(v,Q,V,H),V.state=v.memoizedState),typeof V.componentDidMount==\"function\"&&(v.flags|=4)}var Ef=Array.isArray;function yt(v,D,Q){if(v=Q.ref,v!==null&&typeof v!=\"function\"&&typeof v!=\"object\"){if(Q._owner){if(Q=Q._owner,Q){if(Q.tag!==1)throw Error(c(309));var H=Q.stateNode}if(!H)throw Error(c(147,v));var V=\"\"+v;return D!==null&&D.ref!==null&&typeof D.ref==\"function\"&&D.ref._stringRef===V?D.ref:(D=function(ne){var ve=H.refs;ve===Sy&&(ve=H.refs={}),ne===null?delete ve[V]:ve[V]=ne},D._stringRef=V,D)}if(typeof v!=\"string\")throw Error(c(284));if(!Q._owner)throw Error(c(290,v))}return v}function pu(v,D){if(v.type!==\"textarea\")throw Error(c(31,Object.prototype.toString.call(D)===\"[object Object]\"?\"object with keys {\"+Object.keys(D).join(\", \")+\"}\":D))}function Dy(v){function D(rt,We){if(v){var dt=rt.lastEffect;dt!==null?(dt.nextEffect=We,rt.lastEffect=We):rt.firstEffect=rt.lastEffect=We,We.nextEffect=null,We.flags=8}}function Q(rt,We){if(!v)return null;for(;We!==null;)D(rt,We),We=We.sibling;return null}function H(rt,We){for(rt=new Map;We!==null;)We.key!==null?rt.set(We.key,We):rt.set(We.index,We),We=We.sibling;return rt}function V(rt,We){return rt=Bu(rt,We),rt.index=0,rt.sibling=null,rt}function ne(rt,We,dt){return rt.index=dt,v?(dt=rt.alternate,dt!==null?(dt=dt.index,dt<We?(rt.flags=2,We):dt):(rt.flags=2,We)):We}function ve(rt){return v&&rt.alternate===null&&(rt.flags=2),rt}function _e(rt,We,dt,Zt){return We===null||We.tag!==6?(We=EB(dt,rt.mode,Zt),We.return=rt,We):(We=V(We,dt),We.return=rt,We)}function ht(rt,We,dt,Zt){return We!==null&&We.elementType===dt.type?(Zt=V(We,dt.props),Zt.ref=yt(rt,We,dt),Zt.return=rt,Zt):(Zt=nd(dt.type,dt.key,dt.props,null,rt.mode,Zt),Zt.ref=yt(rt,We,dt),Zt.return=rt,Zt)}function Wt(rt,We,dt,Zt){return We===null||We.tag!==4||We.stateNode.containerInfo!==dt.containerInfo||We.stateNode.implementation!==dt.implementation?(We=Oo(dt,rt.mode,Zt),We.return=rt,We):(We=V(We,dt.children||[]),We.return=rt,We)}function Sr(rt,We,dt,Zt,Dr){return We===null||We.tag!==7?(We=Rf(dt,rt.mode,Zt,Dr),We.return=rt,We):(We=V(We,dt),We.return=rt,We)}function Lr(rt,We,dt){if(typeof We==\"string\"||typeof We==\"number\")return We=EB(\"\"+We,rt.mode,dt),We.return=rt,We;if(typeof We==\"object\"&&We!==null){switch(We.$$typeof){case p:return dt=nd(We.type,We.key,We.props,null,rt.mode,dt),dt.ref=yt(rt,null,We),dt.return=rt,dt;case h:return We=Oo(We,rt.mode,dt),We.return=rt,We}if(Ef(We)||Ee(We))return We=Rf(We,rt.mode,dt,null),We.return=rt,We;pu(rt,We)}return null}function Xt(rt,We,dt,Zt){var Dr=We!==null?We.key:null;if(typeof dt==\"string\"||typeof dt==\"number\")return Dr!==null?null:_e(rt,We,\"\"+dt,Zt);if(typeof dt==\"object\"&&dt!==null){switch(dt.$$typeof){case p:return dt.key===Dr?dt.type===E?Sr(rt,We,dt.props.children,Zt,Dr):ht(rt,We,dt,Zt):null;case h:return dt.key===Dr?Wt(rt,We,dt,Zt):null}if(Ef(dt)||Ee(dt))return Dr!==null?null:Sr(rt,We,dt,Zt,null);pu(rt,dt)}return null}function Xn(rt,We,dt,Zt,Dr){if(typeof Zt==\"string\"||typeof Zt==\"number\")return rt=rt.get(dt)||null,_e(We,rt,\"\"+Zt,Dr);if(typeof Zt==\"object\"&&Zt!==null){switch(Zt.$$typeof){case p:return rt=rt.get(Zt.key===null?dt:Zt.key)||null,Zt.type===E?Sr(We,rt,Zt.props.children,Dr,Zt.key):ht(We,rt,Zt,Dr);case h:return rt=rt.get(Zt.key===null?dt:Zt.key)||null,Wt(We,rt,Zt,Dr)}if(Ef(Zt)||Ee(Zt))return rt=rt.get(dt)||null,Sr(We,rt,Zt,Dr,null);pu(We,Zt)}return null}function Ei(rt,We,dt,Zt){for(var Dr=null,ti=null,kr=We,Nn=We=0,Hn=null;kr!==null&&Nn<dt.length;Nn++){kr.index>Nn?(Hn=kr,kr=null):Hn=kr.sibling;var zr=Xt(rt,kr,dt[Nn],Zt);if(zr===null){kr===null&&(kr=Hn);break}v&&kr&&zr.alternate===null&&D(rt,kr),We=ne(zr,We,Nn),ti===null?Dr=zr:ti.sibling=zr,ti=zr,kr=Hn}if(Nn===dt.length)return Q(rt,kr),Dr;if(kr===null){for(;Nn<dt.length;Nn++)kr=Lr(rt,dt[Nn],Zt),kr!==null&&(We=ne(kr,We,Nn),ti===null?Dr=kr:ti.sibling=kr,ti=kr);return Dr}for(kr=H(rt,kr);Nn<dt.length;Nn++)Hn=Xn(kr,rt,Nn,dt[Nn],Zt),Hn!==null&&(v&&Hn.alternate!==null&&kr.delete(Hn.key===null?Nn:Hn.key),We=ne(Hn,We,Nn),ti===null?Dr=Hn:ti.sibling=Hn,ti=Hn);return v&&kr.forEach(function(ui){return D(rt,ui)}),Dr}function rl(rt,We,dt,Zt){var Dr=Ee(dt);if(typeof Dr!=\"function\")throw Error(c(150));if(dt=Dr.call(dt),dt==null)throw Error(c(151));for(var ti=Dr=null,kr=We,Nn=We=0,Hn=null,zr=dt.next();kr!==null&&!zr.done;Nn++,zr=dt.next()){kr.index>Nn?(Hn=kr,kr=null):Hn=kr.sibling;var ui=Xt(rt,kr,zr.value,Zt);if(ui===null){kr===null&&(kr=Hn);break}v&&kr&&ui.alternate===null&&D(rt,kr),We=ne(ui,We,Nn),ti===null?Dr=ui:ti.sibling=ui,ti=ui,kr=Hn}if(zr.done)return Q(rt,kr),Dr;if(kr===null){for(;!zr.done;Nn++,zr=dt.next())zr=Lr(rt,zr.value,Zt),zr!==null&&(We=ne(zr,We,Nn),ti===null?Dr=zr:ti.sibling=zr,ti=zr);return Dr}for(kr=H(rt,kr);!zr.done;Nn++,zr=dt.next())zr=Xn(kr,rt,Nn,zr.value,Zt),zr!==null&&(v&&zr.alternate!==null&&kr.delete(zr.key===null?Nn:zr.key),We=ne(zr,We,Nn),ti===null?Dr=zr:ti.sibling=zr,ti=zr);return v&&kr.forEach(function(vu){return D(rt,vu)}),Dr}return function(rt,We,dt,Zt){var Dr=typeof dt==\"object\"&&dt!==null&&dt.type===E&&dt.key===null;Dr&&(dt=dt.props.children);var ti=typeof dt==\"object\"&&dt!==null;if(ti)switch(dt.$$typeof){case p:e:{for(ti=dt.key,Dr=We;Dr!==null;){if(Dr.key===ti){switch(Dr.tag){case 7:if(dt.type===E){Q(rt,Dr.sibling),We=V(Dr,dt.props.children),We.return=rt,rt=We;break e}break;default:if(Dr.elementType===dt.type){Q(rt,Dr.sibling),We=V(Dr,dt.props),We.ref=yt(rt,Dr,dt),We.return=rt,rt=We;break e}}Q(rt,Dr);break}else D(rt,Dr);Dr=Dr.sibling}dt.type===E?(We=Rf(dt.props.children,rt.mode,Zt,dt.key),We.return=rt,rt=We):(Zt=nd(dt.type,dt.key,dt.props,null,rt.mode,Zt),Zt.ref=yt(rt,We,dt),Zt.return=rt,rt=Zt)}return ve(rt);case h:e:{for(Dr=dt.key;We!==null;){if(We.key===Dr)if(We.tag===4&&We.stateNode.containerInfo===dt.containerInfo&&We.stateNode.implementation===dt.implementation){Q(rt,We.sibling),We=V(We,dt.children||[]),We.return=rt,rt=We;break e}else{Q(rt,We);break}else D(rt,We);We=We.sibling}We=Oo(dt,rt.mode,Zt),We.return=rt,rt=We}return ve(rt)}if(typeof dt==\"string\"||typeof dt==\"number\")return dt=\"\"+dt,We!==null&&We.tag===6?(Q(rt,We.sibling),We=V(We,dt),We.return=rt,rt=We):(Q(rt,We),We=EB(dt,rt.mode,Zt),We.return=rt,rt=We),ve(rt);if(Ef(dt))return Ei(rt,We,dt,Zt);if(Ee(dt))return rl(rt,We,dt,Zt);if(ti&&pu(rt,dt),typeof dt>\"u\"&&!Dr)switch(rt.tag){case 1:case 22:case 0:case 11:case 15:throw Error(c(152,g(rt.type)||\"Component\"))}return Q(rt,We)}}var Og=Dy(!0),V1=Dy(!1),wh={},ur=co(wh),zi=co(wh),If=co(wh);function za(v){if(v===wh)throw Error(c(174));return v}function Lg(v,D){Qn(If,D),Qn(zi,v),Qn(ur,wh),v=it(D),Tt(ur),Qn(ur,v)}function hu(){Tt(ur),Tt(zi),Tt(If)}function Cf(v){var D=za(If.current),Q=za(ur.current);D=_(Q,v.type,D),Q!==D&&(Qn(zi,v),Qn(ur,D))}function wt(v){zi.current===v&&(Tt(ur),Tt(zi))}var mi=co(0);function qA(v){for(var D=v;D!==null;){if(D.tag===13){var Q=D.memoizedState;if(Q!==null&&(Q=Q.dehydrated,Q===null||gr(Q)||Po(Q)))return D}else if(D.tag===19&&D.memoizedProps.revealOrder!==void 0){if(D.flags&64)return D}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===v)break;for(;D.sibling===null;){if(D.return===null||D.return===v)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}return null}var Za=null,da=null,Xa=!1;function Mg(v,D){var Q=tl(5,null,null,0);Q.elementType=\"DELETED\",Q.type=\"DELETED\",Q.stateNode=D,Q.return=v,Q.flags=8,v.lastEffect!==null?(v.lastEffect.nextEffect=Q,v.lastEffect=Q):v.firstEffect=v.lastEffect=Q}function Bh(v,D){switch(v.tag){case 5:return D=fa(D,v.type,v.pendingProps),D!==null?(v.stateNode=D,!0):!1;case 6:return D=NA(D,v.pendingProps),D!==null?(v.stateNode=D,!0):!1;case 13:return!1;default:return!1}}function Ug(v){if(Xa){var D=da;if(D){var Q=D;if(!Bh(v,D)){if(D=Ue(Q),!D||!Bh(v,D)){v.flags=v.flags&-1025|2,Xa=!1,Za=v;return}Mg(Za,Q)}Za=v,da=au(D)}else v.flags=v.flags&-1025|2,Xa=!1,Za=v}}function by(v){for(v=v.return;v!==null&&v.tag!==5&&v.tag!==3&&v.tag!==13;)v=v.return;Za=v}function WA(v){if(!Z||v!==Za)return!1;if(!Xa)return by(v),Xa=!0,!1;var D=v.type;if(v.tag!==5||D!==\"head\"&&D!==\"body\"&&!ct(D,v.memoizedProps))for(D=da;D;)Mg(v,D),D=Ue(D);if(by(v),v.tag===13){if(!Z)throw Error(c(316));if(v=v.memoizedState,v=v!==null?v.dehydrated:null,!v)throw Error(c(317));da=OA(v)}else da=Za?Ue(v.stateNode):null;return!0}function _g(){Z&&(da=Za=null,Xa=!1)}var gu=[];function du(){for(var v=0;v<gu.length;v++){var D=gu[v];y?D._workInProgressVersionPrimary=null:D._workInProgressVersionSecondary=null}gu.length=0}var wf=f.ReactCurrentDispatcher,Os=f.ReactCurrentBatchConfig,mu=0,qn=null,ss=null,Pi=null,VA=!1,Bf=!1;function yn(){throw Error(c(321))}function Hg(v,D){if(D===null)return!1;for(var Q=0;Q<D.length&&Q<v.length;Q++)if(!xo(v[Q],D[Q]))return!1;return!0}function jg(v,D,Q,H,V,ne){if(mu=ne,qn=D,D.memoizedState=null,D.updateQueue=null,D.lanes=0,wf.current=v===null||v.memoizedState===null?N:J,v=Q(H,V),Bf){ne=0;do{if(Bf=!1,!(25>ne))throw Error(c(301));ne+=1,Pi=ss=null,D.updateQueue=null,wf.current=re,v=Q(H,V)}while(Bf)}if(wf.current=kt,D=ss!==null&&ss.next!==null,mu=0,Pi=ss=qn=null,VA=!1,D)throw Error(c(300));return v}function os(){var v={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Pi===null?qn.memoizedState=Pi=v:Pi=Pi.next=v,Pi}function Fl(){if(ss===null){var v=qn.alternate;v=v!==null?v.memoizedState:null}else v=ss.next;var D=Pi===null?qn.memoizedState:Pi.next;if(D!==null)Pi=D,ss=v;else{if(v===null)throw Error(c(310));ss=v,v={memoizedState:ss.memoizedState,baseState:ss.baseState,baseQueue:ss.baseQueue,queue:ss.queue,next:null},Pi===null?qn.memoizedState=Pi=v:Pi=Pi.next=v}return Pi}function To(v,D){return typeof D==\"function\"?D(v):D}function vf(v){var D=Fl(),Q=D.queue;if(Q===null)throw Error(c(311));Q.lastRenderedReducer=v;var H=ss,V=H.baseQueue,ne=Q.pending;if(ne!==null){if(V!==null){var ve=V.next;V.next=ne.next,ne.next=ve}H.baseQueue=V=ne,Q.pending=null}if(V!==null){V=V.next,H=H.baseState;var _e=ve=ne=null,ht=V;do{var Wt=ht.lane;if((mu&Wt)===Wt)_e!==null&&(_e=_e.next={lane:0,action:ht.action,eagerReducer:ht.eagerReducer,eagerState:ht.eagerState,next:null}),H=ht.eagerReducer===v?ht.eagerState:v(H,ht.action);else{var Sr={lane:Wt,action:ht.action,eagerReducer:ht.eagerReducer,eagerState:ht.eagerState,next:null};_e===null?(ve=_e=Sr,ne=H):_e=_e.next=Sr,qn.lanes|=Wt,zg|=Wt}ht=ht.next}while(ht!==null&&ht!==V);_e===null?ne=H:_e.next=ve,xo(H,D.memoizedState)||(Ke=!0),D.memoizedState=H,D.baseState=ne,D.baseQueue=_e,Q.lastRenderedState=H}return[D.memoizedState,Q.dispatch]}function Sf(v){var D=Fl(),Q=D.queue;if(Q===null)throw Error(c(311));Q.lastRenderedReducer=v;var H=Q.dispatch,V=Q.pending,ne=D.memoizedState;if(V!==null){Q.pending=null;var ve=V=V.next;do ne=v(ne,ve.action),ve=ve.next;while(ve!==V);xo(ne,D.memoizedState)||(Ke=!0),D.memoizedState=ne,D.baseQueue===null&&(D.baseState=ne),Q.lastRenderedState=ne}return[ne,H]}function Nl(v,D,Q){var H=D._getVersion;H=H(D._source);var V=y?D._workInProgressVersionPrimary:D._workInProgressVersionSecondary;if(V!==null?v=V===H:(v=v.mutableReadLanes,(v=(mu&v)===v)&&(y?D._workInProgressVersionPrimary=H:D._workInProgressVersionSecondary=H,gu.push(D))),v)return Q(D._source);throw gu.push(D),Error(c(350))}function En(v,D,Q,H){var V=fo;if(V===null)throw Error(c(349));var ne=D._getVersion,ve=ne(D._source),_e=wf.current,ht=_e.useState(function(){return Nl(V,D,Q)}),Wt=ht[1],Sr=ht[0];ht=Pi;var Lr=v.memoizedState,Xt=Lr.refs,Xn=Xt.getSnapshot,Ei=Lr.source;Lr=Lr.subscribe;var rl=qn;return v.memoizedState={refs:Xt,source:D,subscribe:H},_e.useEffect(function(){Xt.getSnapshot=Q,Xt.setSnapshot=Wt;var rt=ne(D._source);if(!xo(ve,rt)){rt=Q(D._source),xo(Sr,rt)||(Wt(rt),rt=Ds(rl),V.mutableReadLanes|=rt&V.pendingLanes),rt=V.mutableReadLanes,V.entangledLanes|=rt;for(var We=V.entanglements,dt=rt;0<dt;){var Zt=31-is(dt),Dr=1<<Zt;We[Zt]|=rt,dt&=~Dr}}},[Q,D,H]),_e.useEffect(function(){return H(D._source,function(){var rt=Xt.getSnapshot,We=Xt.setSnapshot;try{We(rt(D._source));var dt=Ds(rl);V.mutableReadLanes|=dt&V.pendingLanes}catch(Zt){We(function(){throw Zt})}})},[D,H]),xo(Xn,Q)&&xo(Ei,D)&&xo(Lr,H)||(v={pending:null,dispatch:null,lastRenderedReducer:To,lastRenderedState:Sr},v.dispatch=Wt=bh.bind(null,qn,v),ht.queue=v,ht.baseQueue=null,Sr=Nl(V,D,Q),ht.memoizedState=ht.baseState=Sr),Sr}function Fo(v,D,Q){var H=Fl();return En(H,v,D,Q)}function yu(v){var D=os();return typeof v==\"function\"&&(v=v()),D.memoizedState=D.baseState=v,v=D.queue={pending:null,dispatch:null,lastRenderedReducer:To,lastRenderedState:v},v=v.dispatch=bh.bind(null,qn,v),[D.memoizedState,v]}function ma(v,D,Q,H){return v={tag:v,create:D,destroy:Q,deps:H,next:null},D=qn.updateQueue,D===null?(D={lastEffect:null},qn.updateQueue=D,D.lastEffect=v.next=v):(Q=D.lastEffect,Q===null?D.lastEffect=v.next=v:(H=Q.next,Q.next=v,v.next=H,D.lastEffect=v)),v}function Ls(v){var D=os();return v={current:v},D.memoizedState=v}function vh(){return Fl().memoizedState}function YA(v,D,Q,H){var V=os();qn.flags|=v,V.memoizedState=ma(1|D,Q,void 0,H===void 0?null:H)}function Df(v,D,Q,H){var V=Fl();H=H===void 0?null:H;var ne=void 0;if(ss!==null){var ve=ss.memoizedState;if(ne=ve.destroy,H!==null&&Hg(H,ve.deps)){ma(D,Q,ne,H);return}}qn.flags|=v,V.memoizedState=ma(1|D,Q,ne,H)}function uo(v,D){return YA(516,4,v,D)}function Xr(v,D){return Df(516,4,v,D)}function Sh(v,D){return Df(4,2,v,D)}function KA(v,D){if(typeof D==\"function\")return v=v(),D(v),function(){D(null)};if(D!=null)return v=v(),D.current=v,function(){D.current=null}}function Py(v,D,Q){return Q=Q!=null?Q.concat([v]):null,Df(4,2,KA.bind(null,D,v),Q)}function Gg(){}function Dh(v,D){var Q=Fl();D=D===void 0?null:D;var H=Q.memoizedState;return H!==null&&D!==null&&Hg(D,H[1])?H[0]:(Q.memoizedState=[v,D],v)}function hc(v,D){var Q=Fl();D=D===void 0?null:D;var H=Q.memoizedState;return H!==null&&D!==null&&Hg(D,H[1])?H[0]:(v=v(),Q.memoizedState=[v,D],v)}function xy(v,D){var Q=tr();ci(98>Q?98:Q,function(){v(!0)}),ci(97<Q?97:Q,function(){var H=Os.transition;Os.transition=1;try{v(!1),D()}finally{Os.transition=H}})}function bh(v,D,Q){var H=No(),V=Ds(v),ne={lane:V,action:Q,eagerReducer:null,eagerState:null,next:null},ve=D.pending;if(ve===null?ne.next=ne:(ne.next=ve.next,ve.next=ne),D.pending=ne,ve=v.alternate,v===qn||ve!==null&&ve===qn)Bf=VA=!0;else{if(v.lanes===0&&(ve===null||ve.lanes===0)&&(ve=D.lastRenderedReducer,ve!==null))try{var _e=D.lastRenderedState,ht=ve(_e,Q);if(ne.eagerReducer=ve,ne.eagerState=ht,xo(ht,_e))return}catch{}finally{}Ml(v,V,H)}}var kt={readContext:Qo,useCallback:yn,useContext:yn,useEffect:yn,useImperativeHandle:yn,useLayoutEffect:yn,useMemo:yn,useReducer:yn,useRef:yn,useState:yn,useDebugValue:yn,useDeferredValue:yn,useTransition:yn,useMutableSource:yn,useOpaqueIdentifier:yn,unstable_isNewReconciler:!1},N={readContext:Qo,useCallback:function(v,D){return os().memoizedState=[v,D===void 0?null:D],v},useContext:Qo,useEffect:uo,useImperativeHandle:function(v,D,Q){return Q=Q!=null?Q.concat([v]):null,YA(4,2,KA.bind(null,D,v),Q)},useLayoutEffect:function(v,D){return YA(4,2,v,D)},useMemo:function(v,D){var Q=os();return D=D===void 0?null:D,v=v(),Q.memoizedState=[v,D],v},useReducer:function(v,D,Q){var H=os();return D=Q!==void 0?Q(D):D,H.memoizedState=H.baseState=D,v=H.queue={pending:null,dispatch:null,lastRenderedReducer:v,lastRenderedState:D},v=v.dispatch=bh.bind(null,qn,v),[H.memoizedState,v]},useRef:Ls,useState:yu,useDebugValue:Gg,useDeferredValue:function(v){var D=yu(v),Q=D[0],H=D[1];return uo(function(){var V=Os.transition;Os.transition=1;try{H(v)}finally{Os.transition=V}},[v]),Q},useTransition:function(){var v=yu(!1),D=v[0];return v=xy.bind(null,v[1]),Ls(v),[v,D]},useMutableSource:function(v,D,Q){var H=os();return H.memoizedState={refs:{getSnapshot:D,setSnapshot:null},source:v,subscribe:Q},En(H,v,D,Q)},useOpaqueIdentifier:function(){if(Xa){var v=!1,D=se(function(){throw v||(v=!0,Q(xe())),Error(c(355))}),Q=yu(D)[1];return!(qn.mode&2)&&(qn.flags|=516,ma(5,function(){Q(xe())},void 0,null)),D}return D=xe(),yu(D),D},unstable_isNewReconciler:!1},J={readContext:Qo,useCallback:Dh,useContext:Qo,useEffect:Xr,useImperativeHandle:Py,useLayoutEffect:Sh,useMemo:hc,useReducer:vf,useRef:vh,useState:function(){return vf(To)},useDebugValue:Gg,useDeferredValue:function(v){var D=vf(To),Q=D[0],H=D[1];return Xr(function(){var V=Os.transition;Os.transition=1;try{H(v)}finally{Os.transition=V}},[v]),Q},useTransition:function(){var v=vf(To)[0];return[vh().current,v]},useMutableSource:Fo,useOpaqueIdentifier:function(){return vf(To)[0]},unstable_isNewReconciler:!1},re={readContext:Qo,useCallback:Dh,useContext:Qo,useEffect:Xr,useImperativeHandle:Py,useLayoutEffect:Sh,useMemo:hc,useReducer:Sf,useRef:vh,useState:function(){return Sf(To)},useDebugValue:Gg,useDeferredValue:function(v){var D=Sf(To),Q=D[0],H=D[1];return Xr(function(){var V=Os.transition;Os.transition=1;try{H(v)}finally{Os.transition=V}},[v]),Q},useTransition:function(){var v=Sf(To)[0];return[vh().current,v]},useMutableSource:Fo,useOpaqueIdentifier:function(){return Sf(To)[0]},unstable_isNewReconciler:!1},ge=f.ReactCurrentOwner,Ke=!1;function pt(v,D,Q,H){D.child=v===null?V1(D,null,Q,H):Og(D,v.child,Q,H)}function dr(v,D,Q,H,V){Q=Q.render;var ne=D.ref;return yf(D,V),H=jg(v,D,Q,H,ne,V),v!==null&&!Ke?(D.updateQueue=v.updateQueue,D.flags&=-517,v.lanes&=~V,Wn(v,D,V)):(D.flags|=1,pt(v,D,H,V),D.child)}function vr(v,D,Q,H,V,ne){if(v===null){var ve=Q.type;return typeof ve==\"function\"&&!mB(ve)&&ve.defaultProps===void 0&&Q.compare===null&&Q.defaultProps===void 0?(D.tag=15,D.type=ve,_n(v,D,ve,H,V,ne)):(v=nd(Q.type,null,H,D,D.mode,ne),v.ref=D.ref,v.return=D,D.child=v)}return ve=v.child,!(V&ne)&&(V=ve.memoizedProps,Q=Q.compare,Q=Q!==null?Q:mh,Q(V,H)&&v.ref===D.ref)?Wn(v,D,ne):(D.flags|=1,v=Bu(ve,H),v.ref=D.ref,v.return=D,D.child=v)}function _n(v,D,Q,H,V,ne){if(v!==null&&mh(v.memoizedProps,H)&&v.ref===D.ref)if(Ke=!1,(ne&V)!==0)v.flags&16384&&(Ke=!0);else return D.lanes=v.lanes,Wn(v,D,ne);return JA(v,D,Q,H,ne)}function yi(v,D,Q){var H=D.pendingProps,V=H.children,ne=v!==null?v.memoizedState:null;if(H.mode===\"hidden\"||H.mode===\"unstable-defer-without-hiding\")if(!(D.mode&4))D.memoizedState={baseLanes:0},Yy(D,Q);else if(Q&1073741824)D.memoizedState={baseLanes:0},Yy(D,ne!==null?ne.baseLanes:Q);else return v=ne!==null?ne.baseLanes|Q:Q,D.lanes=D.childLanes=1073741824,D.memoizedState={baseLanes:v},Yy(D,v),null;else ne!==null?(H=ne.baseLanes|Q,D.memoizedState=null):H=Q,Yy(D,H);return pt(v,D,V,Q),D.child}function vs(v,D){var Q=D.ref;(v===null&&Q!==null||v!==null&&v.ref!==Q)&&(D.flags|=128)}function JA(v,D,Q,H,V){var ne=Zn(Q)?ja:Gi.current;return ne=mn(D,ne),yf(D,V),Q=jg(v,D,Q,H,ne,V),v!==null&&!Ke?(D.updateQueue=v.updateQueue,D.flags&=-517,v.lanes&=~V,Wn(v,D,V)):(D.flags|=1,pt(v,D,Q,V),D.child)}function lP(v,D,Q,H,V){if(Zn(Q)){var ne=!0;qa(D)}else ne=!1;if(yf(D,V),D.stateNode===null)v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),xt(D,Q,H),Ro(D,Q,H,V),H=!0;else if(v===null){var ve=D.stateNode,_e=D.memoizedProps;ve.props=_e;var ht=ve.context,Wt=Q.contextType;typeof Wt==\"object\"&&Wt!==null?Wt=Qo(Wt):(Wt=Zn(Q)?ja:Gi.current,Wt=mn(D,Wt));var Sr=Q.getDerivedStateFromProps,Lr=typeof Sr==\"function\"||typeof ve.getSnapshotBeforeUpdate==\"function\";Lr||typeof ve.UNSAFE_componentWillReceiveProps!=\"function\"&&typeof ve.componentWillReceiveProps!=\"function\"||(_e!==H||ht!==Wt)&&GA(D,ve,H,Wt),Ql=!1;var Xt=D.memoizedState;ve.state=Xt,_A(D,H,ve,V),ht=D.memoizedState,_e!==H||Xt!==ht||Li.current||Ql?(typeof Sr==\"function\"&&(HA(D,Q,Sr,H),ht=D.memoizedState),(_e=Ql||W(D,Q,_e,H,Xt,ht,Wt))?(Lr||typeof ve.UNSAFE_componentWillMount!=\"function\"&&typeof ve.componentWillMount!=\"function\"||(typeof ve.componentWillMount==\"function\"&&ve.componentWillMount(),typeof ve.UNSAFE_componentWillMount==\"function\"&&ve.UNSAFE_componentWillMount()),typeof ve.componentDidMount==\"function\"&&(D.flags|=4)):(typeof ve.componentDidMount==\"function\"&&(D.flags|=4),D.memoizedProps=H,D.memoizedState=ht),ve.props=H,ve.state=ht,ve.context=Wt,H=_e):(typeof ve.componentDidMount==\"function\"&&(D.flags|=4),H=!1)}else{ve=D.stateNode,Ng(v,D),_e=D.memoizedProps,Wt=D.type===D.elementType?_e:ko(D.type,_e),ve.props=Wt,Lr=D.pendingProps,Xt=ve.context,ht=Q.contextType,typeof ht==\"object\"&&ht!==null?ht=Qo(ht):(ht=Zn(Q)?ja:Gi.current,ht=mn(D,ht));var Xn=Q.getDerivedStateFromProps;(Sr=typeof Xn==\"function\"||typeof ve.getSnapshotBeforeUpdate==\"function\")||typeof ve.UNSAFE_componentWillReceiveProps!=\"function\"&&typeof ve.componentWillReceiveProps!=\"function\"||(_e!==Lr||Xt!==ht)&&GA(D,ve,H,ht),Ql=!1,Xt=D.memoizedState,ve.state=Xt,_A(D,H,ve,V);var Ei=D.memoizedState;_e!==Lr||Xt!==Ei||Li.current||Ql?(typeof Xn==\"function\"&&(HA(D,Q,Xn,H),Ei=D.memoizedState),(Wt=Ql||W(D,Q,Wt,H,Xt,Ei,ht))?(Sr||typeof ve.UNSAFE_componentWillUpdate!=\"function\"&&typeof ve.componentWillUpdate!=\"function\"||(typeof ve.componentWillUpdate==\"function\"&&ve.componentWillUpdate(H,Ei,ht),typeof ve.UNSAFE_componentWillUpdate==\"function\"&&ve.UNSAFE_componentWillUpdate(H,Ei,ht)),typeof ve.componentDidUpdate==\"function\"&&(D.flags|=4),typeof ve.getSnapshotBeforeUpdate==\"function\"&&(D.flags|=256)):(typeof ve.componentDidUpdate!=\"function\"||_e===v.memoizedProps&&Xt===v.memoizedState||(D.flags|=4),typeof ve.getSnapshotBeforeUpdate!=\"function\"||_e===v.memoizedProps&&Xt===v.memoizedState||(D.flags|=256),D.memoizedProps=H,D.memoizedState=Ei),ve.props=H,ve.state=Ei,ve.context=ht,H=Wt):(typeof ve.componentDidUpdate!=\"function\"||_e===v.memoizedProps&&Xt===v.memoizedState||(D.flags|=4),typeof ve.getSnapshotBeforeUpdate!=\"function\"||_e===v.memoizedProps&&Xt===v.memoizedState||(D.flags|=256),H=!1)}return Y1(v,D,Q,H,ne,V)}function Y1(v,D,Q,H,V,ne){vs(v,D);var ve=(D.flags&64)!==0;if(!H&&!ve)return V&&Wa(D,Q,!1),Wn(v,D,ne);H=D.stateNode,ge.current=D;var _e=ve&&typeof Q.getDerivedStateFromError!=\"function\"?null:H.render();return D.flags|=1,v!==null&&ve?(D.child=Og(D,v.child,null,ne),D.child=Og(D,null,_e,ne)):pt(v,D,_e,ne),D.memoizedState=H.state,V&&Wa(D,Q,!0),D.child}function ky(v){var D=v.stateNode;D.pendingContext?dh(v,D.pendingContext,D.pendingContext!==D.context):D.context&&dh(v,D.context,!1),Lg(v,D.containerInfo)}var Ph={dehydrated:null,retryLane:0};function K1(v,D,Q){var H=D.pendingProps,V=mi.current,ne=!1,ve;return(ve=(D.flags&64)!==0)||(ve=v!==null&&v.memoizedState===null?!1:(V&2)!==0),ve?(ne=!0,D.flags&=-65):v!==null&&v.memoizedState===null||H.fallback===void 0||H.unstable_avoidThisFallback===!0||(V|=1),Qn(mi,V&1),v===null?(H.fallback!==void 0&&Ug(D),v=H.children,V=H.fallback,ne?(v=$a(D,v,V,Q),D.child.memoizedState={baseLanes:Q},D.memoizedState=Ph,v):typeof H.unstable_expectedLoadTime==\"number\"?(v=$a(D,v,V,Q),D.child.memoizedState={baseLanes:Q},D.memoizedState=Ph,D.lanes=33554432,v):(Q=yB({mode:\"visible\",children:v},D.mode,Q,null),Q.return=D,D.child=Q)):v.memoizedState!==null?ne?(H=zA(v,D,H.children,H.fallback,Q),ne=D.child,V=v.child.memoizedState,ne.memoizedState=V===null?{baseLanes:Q}:{baseLanes:V.baseLanes|Q},ne.childLanes=v.childLanes&~Q,D.memoizedState=Ph,H):(Q=J1(v,D,H.children,Q),D.memoizedState=null,Q):ne?(H=zA(v,D,H.children,H.fallback,Q),ne=D.child,V=v.child.memoizedState,ne.memoizedState=V===null?{baseLanes:Q}:{baseLanes:V.baseLanes|Q},ne.childLanes=v.childLanes&~Q,D.memoizedState=Ph,H):(Q=J1(v,D,H.children,Q),D.memoizedState=null,Q)}function $a(v,D,Q,H){var V=v.mode,ne=v.child;return D={mode:\"hidden\",children:D},!(V&2)&&ne!==null?(ne.childLanes=0,ne.pendingProps=D):ne=yB(D,V,0,null),Q=Rf(Q,V,H,null),ne.return=v,Q.return=v,ne.sibling=Q,v.child=ne,Q}function J1(v,D,Q,H){var V=v.child;return v=V.sibling,Q=Bu(V,{mode:\"visible\",children:Q}),!(D.mode&2)&&(Q.lanes=H),Q.return=D,Q.sibling=null,v!==null&&(v.nextEffect=null,v.flags=8,D.firstEffect=D.lastEffect=v),D.child=Q}function zA(v,D,Q,H,V){var ne=D.mode,ve=v.child;v=ve.sibling;var _e={mode:\"hidden\",children:Q};return!(ne&2)&&D.child!==ve?(Q=D.child,Q.childLanes=0,Q.pendingProps=_e,ve=Q.lastEffect,ve!==null?(D.firstEffect=Q.firstEffect,D.lastEffect=ve,ve.nextEffect=null):D.firstEffect=D.lastEffect=null):Q=Bu(ve,_e),v!==null?H=Bu(v,H):(H=Rf(H,ne,V,null),H.flags|=2),H.return=D,Q.return=D,Q.sibling=H,D.child=Q,H}function xh(v,D){v.lanes|=D;var Q=v.alternate;Q!==null&&(Q.lanes|=D),wy(v.return,D)}function Qy(v,D,Q,H,V,ne){var ve=v.memoizedState;ve===null?v.memoizedState={isBackwards:D,rendering:null,renderingStartTime:0,last:H,tail:Q,tailMode:V,lastEffect:ne}:(ve.isBackwards=D,ve.rendering=null,ve.renderingStartTime=0,ve.last=H,ve.tail=Q,ve.tailMode=V,ve.lastEffect=ne)}function cP(v,D,Q){var H=D.pendingProps,V=H.revealOrder,ne=H.tail;if(pt(v,D,H.children,Q),H=mi.current,H&2)H=H&1|2,D.flags|=64;else{if(v!==null&&v.flags&64)e:for(v=D.child;v!==null;){if(v.tag===13)v.memoizedState!==null&&xh(v,Q);else if(v.tag===19)xh(v,Q);else if(v.child!==null){v.child.return=v,v=v.child;continue}if(v===D)break e;for(;v.sibling===null;){if(v.return===null||v.return===D)break e;v=v.return}v.sibling.return=v.return,v=v.sibling}H&=1}if(Qn(mi,H),!(D.mode&2))D.memoizedState=null;else switch(V){case\"forwards\":for(Q=D.child,V=null;Q!==null;)v=Q.alternate,v!==null&&qA(v)===null&&(V=Q),Q=Q.sibling;Q=V,Q===null?(V=D.child,D.child=null):(V=Q.sibling,Q.sibling=null),Qy(D,!1,V,Q,ne,D.lastEffect);break;case\"backwards\":for(Q=null,V=D.child,D.child=null;V!==null;){if(v=V.alternate,v!==null&&qA(v)===null){D.child=V;break}v=V.sibling,V.sibling=Q,Q=V,V=v}Qy(D,!0,Q,null,ne,D.lastEffect);break;case\"together\":Qy(D,!1,null,null,void 0,D.lastEffect);break;default:D.memoizedState=null}return D.child}function Wn(v,D,Q){if(v!==null&&(D.dependencies=v.dependencies),zg|=D.lanes,Q&D.childLanes){if(v!==null&&D.child!==v.child)throw Error(c(153));if(D.child!==null){for(v=D.child,Q=Bu(v,v.pendingProps),D.child=Q,Q.return=D;v.sibling!==null;)v=v.sibling,Q=Q.sibling=Bu(v,v.pendingProps),Q.return=D;Q.sibling=null}return D.child}return null}function as(v){v.flags|=4}var Ol,Ll,Eu,ya;if(F)Ol=function(v,D){for(var Q=D.child;Q!==null;){if(Q.tag===5||Q.tag===6)be(v,Q.stateNode);else if(Q.tag!==4&&Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}},Ll=function(){},Eu=function(v,D,Q,H,V){if(v=v.memoizedProps,v!==H){var ne=D.stateNode,ve=za(ur.current);Q=Re(ne,Q,v,H,V,ve),(D.updateQueue=Q)&&as(D)}},ya=function(v,D,Q,H){Q!==H&&as(D)};else if(z){Ol=function(v,D,Q,H){for(var V=D.child;V!==null;){if(V.tag===5){var ne=V.stateNode;Q&&H&&(ne=FA(ne,V.type,V.memoizedProps,V)),be(v,ne)}else if(V.tag===6)ne=V.stateNode,Q&&H&&(ne=ua(ne,V.memoizedProps,V)),be(v,ne);else if(V.tag!==4){if(V.tag===13&&V.flags&4&&(ne=V.memoizedState!==null)){var ve=V.child;if(ve!==null&&(ve.child!==null&&(ve.child.return=ve,Ol(v,ve,!0,ne)),ne=ve.sibling,ne!==null)){ne.return=V,V=ne;continue}}if(V.child!==null){V.child.return=V,V=V.child;continue}}if(V===D)break;for(;V.sibling===null;){if(V.return===null||V.return===D)return;V=V.return}V.sibling.return=V.return,V=V.sibling}};var ZA=function(v,D,Q,H){for(var V=D.child;V!==null;){if(V.tag===5){var ne=V.stateNode;Q&&H&&(ne=FA(ne,V.type,V.memoizedProps,V)),su(v,ne)}else if(V.tag===6)ne=V.stateNode,Q&&H&&(ne=ua(ne,V.memoizedProps,V)),su(v,ne);else if(V.tag!==4){if(V.tag===13&&V.flags&4&&(ne=V.memoizedState!==null)){var ve=V.child;if(ve!==null&&(ve.child!==null&&(ve.child.return=ve,ZA(v,ve,!0,ne)),ne=ve.sibling,ne!==null)){ne.return=V,V=ne;continue}}if(V.child!==null){V.child.return=V,V=V.child;continue}}if(V===D)break;for(;V.sibling===null;){if(V.return===null||V.return===D)return;V=V.return}V.sibling.return=V.return,V=V.sibling}};Ll=function(v){var D=v.stateNode;if(v.firstEffect!==null){var Q=D.containerInfo,H=iu(Q);ZA(H,v,!1,!1),D.pendingChildren=H,as(v),ou(Q,H)}},Eu=function(v,D,Q,H,V){var ne=v.stateNode,ve=v.memoizedProps;if((v=D.firstEffect===null)&&ve===H)D.stateNode=ne;else{var _e=D.stateNode,ht=za(ur.current),Wt=null;ve!==H&&(Wt=Re(_e,Q,ve,H,V,ht)),v&&Wt===null?D.stateNode=ne:(ne=lo(ne,Wt,Q,ve,H,D,v,_e),je(ne,Q,H,V,ht)&&as(D),D.stateNode=ne,v?as(D):Ol(ne,D,!1,!1))}},ya=function(v,D,Q,H){Q!==H?(v=za(If.current),Q=za(ur.current),D.stateNode=Me(H,v,Q,D),as(D)):D.stateNode=v.stateNode}}else Ll=function(){},Eu=function(){},ya=function(){};function XA(v,D){if(!Xa)switch(v.tailMode){case\"hidden\":D=v.tail;for(var Q=null;D!==null;)D.alternate!==null&&(Q=D),D=D.sibling;Q===null?v.tail=null:Q.sibling=null;break;case\"collapsed\":Q=v.tail;for(var H=null;Q!==null;)Q.alternate!==null&&(H=Q),Q=Q.sibling;H===null?D||v.tail===null?v.tail=null:v.tail.sibling=null:H.sibling=null}}function DL(v,D,Q){var H=D.pendingProps;switch(D.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return Zn(D.type)&&uu(),null;case 3:return hu(),Tt(Li),Tt(Gi),du(),H=D.stateNode,H.pendingContext&&(H.context=H.pendingContext,H.pendingContext=null),(v===null||v.child===null)&&(WA(D)?as(D):H.hydrate||(D.flags|=256)),Ll(D),null;case 5:wt(D);var V=za(If.current);if(Q=D.type,v!==null&&D.stateNode!=null)Eu(v,D,Q,H,V),v.ref!==D.ref&&(D.flags|=128);else{if(!H){if(D.stateNode===null)throw Error(c(166));return null}if(v=za(ur.current),WA(D)){if(!Z)throw Error(c(175));v=Cr(D.stateNode,D.type,D.memoizedProps,V,v,D),D.updateQueue=v,v!==null&&as(D)}else{var ne=ke(Q,H,V,v,D);Ol(ne,D,!1,!1),D.stateNode=ne,je(ne,Q,H,V,v)&&as(D)}D.ref!==null&&(D.flags|=128)}return null;case 6:if(v&&D.stateNode!=null)ya(v,D,v.memoizedProps,H);else{if(typeof H!=\"string\"&&D.stateNode===null)throw Error(c(166));if(v=za(If.current),V=za(ur.current),WA(D)){if(!Z)throw Error(c(176));gf(D.stateNode,D.memoizedProps,D)&&as(D)}else D.stateNode=Me(H,v,V,D)}return null;case 13:return Tt(mi),H=D.memoizedState,D.flags&64?(D.lanes=Q,D):(H=H!==null,V=!1,v===null?D.memoizedProps.fallback!==void 0&&WA(D):V=v.memoizedState!==null,H&&!V&&D.mode&2&&(v===null&&D.memoizedProps.unstable_avoidThisFallback!==!0||mi.current&1?Ss===0&&(Ss=3):((Ss===0||Ss===3)&&(Ss=4),fo===null||!(zg&134217727)&&!(Rh&134217727)||Th(fo,Ms))),z&&H&&(D.flags|=4),F&&(H||V)&&(D.flags|=4),null);case 4:return hu(),Ll(D),v===null&&Ct(D.stateNode.containerInfo),null;case 10:return Fg(D),null;case 17:return Zn(D.type)&&uu(),null;case 19:if(Tt(mi),H=D.memoizedState,H===null)return null;if(V=(D.flags&64)!==0,ne=H.rendering,ne===null)if(V)XA(H,!1);else{if(Ss!==0||v!==null&&v.flags&64)for(v=D.child;v!==null;){if(ne=qA(v),ne!==null){for(D.flags|=64,XA(H,!1),v=ne.updateQueue,v!==null&&(D.updateQueue=v,D.flags|=4),H.lastEffect===null&&(D.firstEffect=null),D.lastEffect=H.lastEffect,v=Q,H=D.child;H!==null;)V=H,Q=v,V.flags&=2,V.nextEffect=null,V.firstEffect=null,V.lastEffect=null,ne=V.alternate,ne===null?(V.childLanes=0,V.lanes=Q,V.child=null,V.memoizedProps=null,V.memoizedState=null,V.updateQueue=null,V.dependencies=null,V.stateNode=null):(V.childLanes=ne.childLanes,V.lanes=ne.lanes,V.child=ne.child,V.memoizedProps=ne.memoizedProps,V.memoizedState=ne.memoizedState,V.updateQueue=ne.updateQueue,V.type=ne.type,Q=ne.dependencies,V.dependencies=Q===null?null:{lanes:Q.lanes,firstContext:Q.firstContext}),H=H.sibling;return Qn(mi,mi.current&1|2),D.child}v=v.sibling}H.tail!==null&&bt()>cB&&(D.flags|=64,V=!0,XA(H,!1),D.lanes=33554432)}else{if(!V)if(v=qA(ne),v!==null){if(D.flags|=64,V=!0,v=v.updateQueue,v!==null&&(D.updateQueue=v,D.flags|=4),XA(H,!0),H.tail===null&&H.tailMode===\"hidden\"&&!ne.alternate&&!Xa)return D=D.lastEffect=H.lastEffect,D!==null&&(D.nextEffect=null),null}else 2*bt()-H.renderingStartTime>cB&&Q!==1073741824&&(D.flags|=64,V=!0,XA(H,!1),D.lanes=33554432);H.isBackwards?(ne.sibling=D.child,D.child=ne):(v=H.last,v!==null?v.sibling=ne:D.child=ne,H.last=ne)}return H.tail!==null?(v=H.tail,H.rendering=v,H.tail=v.sibling,H.lastEffect=D.lastEffect,H.renderingStartTime=bt(),v.sibling=null,D=mi.current,Qn(mi,V?D&1|2:D&1),v):null;case 23:case 24:return gB(),v!==null&&v.memoizedState!==null!=(D.memoizedState!==null)&&H.mode!==\"unstable-defer-without-hiding\"&&(D.flags|=4),null}throw Error(c(156,D.tag))}function bL(v){switch(v.tag){case 1:Zn(v.type)&&uu();var D=v.flags;return D&4096?(v.flags=D&-4097|64,v):null;case 3:if(hu(),Tt(Li),Tt(Gi),du(),D=v.flags,D&64)throw Error(c(285));return v.flags=D&-4097|64,v;case 5:return wt(v),null;case 13:return Tt(mi),D=v.flags,D&4096?(v.flags=D&-4097|64,v):null;case 19:return Tt(mi),null;case 4:return hu(),null;case 10:return Fg(v),null;case 23:case 24:return gB(),null;default:return null}}function qg(v,D){try{var Q=\"\",H=D;do Q+=W1(H),H=H.return;while(H);var V=Q}catch(ne){V=`\nError generating stack: `+ne.message+`\n`+ne.stack}return{value:v,source:D,stack:V}}function Wg(v,D){try{console.error(D.value)}catch(Q){setTimeout(function(){throw Q})}}var PL=typeof WeakMap==\"function\"?WeakMap:Map;function z1(v,D,Q){Q=Rl(-1,Q),Q.tag=3,Q.payload={element:null};var H=D.value;return Q.callback=function(){Gy||(Gy=!0,uB=H),Wg(v,D)},Q}function Vg(v,D,Q){Q=Rl(-1,Q),Q.tag=3;var H=v.type.getDerivedStateFromError;if(typeof H==\"function\"){var V=D.value;Q.payload=function(){return Wg(v,D),H(V)}}var ne=v.stateNode;return ne!==null&&typeof ne.componentDidCatch==\"function\"&&(Q.callback=function(){typeof H!=\"function\"&&(gc===null?gc=new Set([this]):gc.add(this),Wg(v,D));var ve=D.stack;this.componentDidCatch(D.value,{componentStack:ve!==null?ve:\"\"})}),Q}var xL=typeof WeakSet==\"function\"?WeakSet:Set;function Z1(v){var D=v.ref;if(D!==null)if(typeof D==\"function\")try{D(null)}catch(Q){Qf(v,Q)}else D.current=null}function Ry(v,D){switch(D.tag){case 0:case 11:case 15:case 22:return;case 1:if(D.flags&256&&v!==null){var Q=v.memoizedProps,H=v.memoizedState;v=D.stateNode,D=v.getSnapshotBeforeUpdate(D.elementType===D.type?Q:ko(D.type,Q),H),v.__reactInternalSnapshotBeforeUpdate=D}return;case 3:F&&D.flags&256&&Ns(D.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(c(163))}function kh(v,D){if(D=D.updateQueue,D=D!==null?D.lastEffect:null,D!==null){var Q=D=D.next;do{if((Q.tag&v)===v){var H=Q.destroy;Q.destroy=void 0,H!==void 0&&H()}Q=Q.next}while(Q!==D)}}function uP(v,D,Q){switch(Q.tag){case 0:case 11:case 15:case 22:if(D=Q.updateQueue,D=D!==null?D.lastEffect:null,D!==null){v=D=D.next;do{if((v.tag&3)===3){var H=v.create;v.destroy=H()}v=v.next}while(v!==D)}if(D=Q.updateQueue,D=D!==null?D.lastEffect:null,D!==null){v=D=D.next;do{var V=v;H=V.next,V=V.tag,V&4&&V&1&&(vP(Q,v),ML(Q,v)),v=H}while(v!==D)}return;case 1:v=Q.stateNode,Q.flags&4&&(D===null?v.componentDidMount():(H=Q.elementType===Q.type?D.memoizedProps:ko(Q.type,D.memoizedProps),v.componentDidUpdate(H,D.memoizedState,v.__reactInternalSnapshotBeforeUpdate))),D=Q.updateQueue,D!==null&&vy(Q,D,v);return;case 3:if(D=Q.updateQueue,D!==null){if(v=null,Q.child!==null)switch(Q.child.tag){case 5:v=Qe(Q.child.stateNode);break;case 1:v=Q.child.stateNode}vy(Q,D,v)}return;case 5:v=Q.stateNode,D===null&&Q.flags&4&&so(v,Q.type,Q.memoizedProps,Q);return;case 6:return;case 4:return;case 12:return;case 13:Z&&Q.memoizedState===null&&(Q=Q.alternate,Q!==null&&(Q=Q.memoizedState,Q!==null&&(Q=Q.dehydrated,Q!==null&&lu(Q))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(c(163))}function fP(v,D){if(F)for(var Q=v;;){if(Q.tag===5){var H=Q.stateNode;D?hh(H):ao(Q.stateNode,Q.memoizedProps)}else if(Q.tag===6)H=Q.stateNode,D?gh(H):Gn(H,Q.memoizedProps);else if((Q.tag!==23&&Q.tag!==24||Q.memoizedState===null||Q===v)&&Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===v)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===v)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}}function Ty(v,D){if(Va&&typeof Va.onCommitFiberUnmount==\"function\")try{Va.onCommitFiberUnmount($e,D)}catch{}switch(D.tag){case 0:case 11:case 14:case 15:case 22:if(v=D.updateQueue,v!==null&&(v=v.lastEffect,v!==null)){var Q=v=v.next;do{var H=Q,V=H.destroy;if(H=H.tag,V!==void 0)if(H&4)vP(D,Q);else{H=D;try{V()}catch(ne){Qf(H,ne)}}Q=Q.next}while(Q!==v)}break;case 1:if(Z1(D),v=D.stateNode,typeof v.componentWillUnmount==\"function\")try{v.props=D.memoizedProps,v.state=D.memoizedState,v.componentWillUnmount()}catch(ne){Qf(D,ne)}break;case 5:Z1(D);break;case 4:F?gP(v,D):z&&z&&(D=D.stateNode.containerInfo,v=iu(D),TA(D,v))}}function AP(v,D){for(var Q=D;;)if(Ty(v,Q),Q.child===null||F&&Q.tag===4){if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}else Q.child.return=Q,Q=Q.child}function Fy(v){v.alternate=null,v.child=null,v.dependencies=null,v.firstEffect=null,v.lastEffect=null,v.memoizedProps=null,v.memoizedState=null,v.pendingProps=null,v.return=null,v.updateQueue=null}function pP(v){return v.tag===5||v.tag===3||v.tag===4}function hP(v){if(F){e:{for(var D=v.return;D!==null;){if(pP(D))break e;D=D.return}throw Error(c(160))}var Q=D;switch(D=Q.stateNode,Q.tag){case 5:var H=!1;break;case 3:D=D.containerInfo,H=!0;break;case 4:D=D.containerInfo,H=!0;break;default:throw Error(c(161))}Q.flags&16&&(hf(D),Q.flags&=-17);e:t:for(Q=v;;){for(;Q.sibling===null;){if(Q.return===null||pP(Q.return)){Q=null;break e}Q=Q.return}for(Q.sibling.return=Q.return,Q=Q.sibling;Q.tag!==5&&Q.tag!==6&&Q.tag!==18;){if(Q.flags&2||Q.child===null||Q.tag===4)continue t;Q.child.return=Q,Q=Q.child}if(!(Q.flags&2)){Q=Q.stateNode;break e}}H?X1(v,Q,D):$1(v,Q,D)}}function X1(v,D,Q){var H=v.tag,V=H===5||H===6;if(V)v=V?v.stateNode:v.stateNode.instance,D?oo(Q,v,D):So(Q,v);else if(H!==4&&(v=v.child,v!==null))for(X1(v,D,Q),v=v.sibling;v!==null;)X1(v,D,Q),v=v.sibling}function $1(v,D,Q){var H=v.tag,V=H===5||H===6;if(V)v=V?v.stateNode:v.stateNode.instance,D?ji(Q,v,D):li(Q,v);else if(H!==4&&(v=v.child,v!==null))for($1(v,D,Q),v=v.sibling;v!==null;)$1(v,D,Q),v=v.sibling}function gP(v,D){for(var Q=D,H=!1,V,ne;;){if(!H){H=Q.return;e:for(;;){if(H===null)throw Error(c(160));switch(V=H.stateNode,H.tag){case 5:ne=!1;break e;case 3:V=V.containerInfo,ne=!0;break e;case 4:V=V.containerInfo,ne=!0;break e}H=H.return}H=!0}if(Q.tag===5||Q.tag===6)AP(v,Q),ne?RA(V,Q.stateNode):bo(V,Q.stateNode);else if(Q.tag===4){if(Q.child!==null){V=Q.stateNode.containerInfo,ne=!0,Q.child.return=Q,Q=Q.child;continue}}else if(Ty(v,Q),Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return,Q.tag===4&&(H=!1)}Q.sibling.return=Q.return,Q=Q.sibling}}function eB(v,D){if(F){switch(D.tag){case 0:case 11:case 14:case 15:case 22:kh(3,D);return;case 1:return;case 5:var Q=D.stateNode;if(Q!=null){var H=D.memoizedProps;v=v!==null?v.memoizedProps:H;var V=D.type,ne=D.updateQueue;D.updateQueue=null,ne!==null&&Do(Q,ne,V,v,H,D)}return;case 6:if(D.stateNode===null)throw Error(c(162));Q=D.memoizedProps,ns(D.stateNode,v!==null?v.memoizedProps:Q,Q);return;case 3:Z&&(D=D.stateNode,D.hydrate&&(D.hydrate=!1,LA(D.containerInfo)));return;case 12:return;case 13:dP(D),Yg(D);return;case 19:Yg(D);return;case 17:return;case 23:case 24:fP(D,D.memoizedState!==null);return}throw Error(c(163))}switch(D.tag){case 0:case 11:case 14:case 15:case 22:kh(3,D);return;case 12:return;case 13:dP(D),Yg(D);return;case 19:Yg(D);return;case 3:Z&&(Q=D.stateNode,Q.hydrate&&(Q.hydrate=!1,LA(Q.containerInfo)));break;case 23:case 24:return}e:if(z){switch(D.tag){case 1:case 5:case 6:case 20:break e;case 3:case 4:D=D.stateNode,TA(D.containerInfo,D.pendingChildren);break e}throw Error(c(163))}}function dP(v){v.memoizedState!==null&&(lB=bt(),F&&fP(v.child,!0))}function Yg(v){var D=v.updateQueue;if(D!==null){v.updateQueue=null;var Q=v.stateNode;Q===null&&(Q=v.stateNode=new xL),D.forEach(function(H){var V=_L.bind(null,v,H);Q.has(H)||(Q.add(H),H.then(V,V))})}}function kL(v,D){return v!==null&&(v=v.memoizedState,v===null||v.dehydrated!==null)?(D=D.memoizedState,D!==null&&D.dehydrated===null):!1}var Ny=0,Oy=1,Ly=2,Kg=3,My=4;if(typeof Symbol==\"function\"&&Symbol.for){var Jg=Symbol.for;Ny=Jg(\"selector.component\"),Oy=Jg(\"selector.has_pseudo_class\"),Ly=Jg(\"selector.role\"),Kg=Jg(\"selector.test_id\"),My=Jg(\"selector.text\")}function Uy(v){var D=$(v);if(D!=null){if(typeof D.memoizedProps[\"data-testname\"]!=\"string\")throw Error(c(364));return D}if(v=ir(v),v===null)throw Error(c(362));return v.stateNode.current}function bf(v,D){switch(D.$$typeof){case Ny:if(v.type===D.value)return!0;break;case Oy:e:{D=D.value,v=[v,0];for(var Q=0;Q<v.length;){var H=v[Q++],V=v[Q++],ne=D[V];if(H.tag!==5||!Pr(H)){for(;ne!=null&&bf(H,ne);)V++,ne=D[V];if(V===D.length){D=!0;break e}else for(H=H.child;H!==null;)v.push(H,V),H=H.sibling}}D=!1}return D;case Ly:if(v.tag===5&&Ir(v.stateNode,D.value))return!0;break;case My:if((v.tag===5||v.tag===6)&&(v=dn(v),v!==null&&0<=v.indexOf(D.value)))return!0;break;case Kg:if(v.tag===5&&(v=v.memoizedProps[\"data-testname\"],typeof v==\"string\"&&v.toLowerCase()===D.value.toLowerCase()))return!0;break;default:throw Error(c(365,D))}return!1}function Pf(v){switch(v.$$typeof){case Ny:return\"<\"+(g(v.value)||\"Unknown\")+\">\";case Oy:return\":has(\"+(Pf(v)||\"\")+\")\";case Ly:return'[role=\"'+v.value+'\"]';case My:return'\"'+v.value+'\"';case Kg:return'[data-testname=\"'+v.value+'\"]';default:throw Error(c(365,v))}}function tB(v,D){var Q=[];v=[v,0];for(var H=0;H<v.length;){var V=v[H++],ne=v[H++],ve=D[ne];if(V.tag!==5||!Pr(V)){for(;ve!=null&&bf(V,ve);)ne++,ve=D[ne];if(ne===D.length)Q.push(V);else for(V=V.child;V!==null;)v.push(V,ne),V=V.sibling}}return Q}function rB(v,D){if(!qt)throw Error(c(363));v=Uy(v),v=tB(v,D),D=[],v=Array.from(v);for(var Q=0;Q<v.length;){var H=v[Q++];if(H.tag===5)Pr(H)||D.push(H.stateNode);else for(H=H.child;H!==null;)v.push(H),H=H.sibling}return D}var _y=null;function QL(v){if(_y===null)try{var D=(\"require\"+Math.random()).slice(0,7);_y=(jS&&jS[D]).call(jS,\"timers\").setImmediate}catch{_y=function(H){var V=new MessageChannel;V.port1.onmessage=H,V.port2.postMessage(void 0)}}return _y(v)}var RL=Math.ceil,Hy=f.ReactCurrentDispatcher,nB=f.ReactCurrentOwner,iB=f.IsSomeRendererActing,xr=0,fo=null,Zi=null,Ms=0,$A=0,sB=co(0),Ss=0,jy=null,Qh=0,zg=0,Rh=0,oB=0,aB=null,lB=0,cB=1/0;function xf(){cB=bt()+500}var sr=null,Gy=!1,uB=null,gc=null,kf=!1,Zg=null,Xg=90,fB=[],AB=[],Iu=null,$g=0,pB=null,qy=-1,Cu=0,Wy=0,ed=null,td=!1;function No(){return xr&48?bt():qy!==-1?qy:qy=bt()}function Ds(v){if(v=v.mode,!(v&2))return 1;if(!(v&4))return tr()===99?1:2;if(Cu===0&&(Cu=Qh),Iy.transition!==0){Wy!==0&&(Wy=aB!==null?aB.pendingLanes:0),v=Cu;var D=4186112&~Wy;return D&=-D,D===0&&(v=4186112&~v,D=v&-v,D===0&&(D=8192)),D}return v=tr(),xr&4&&v===98?v=Mt(12,Cu):(v=MA(v),v=Mt(v,Cu)),v}function Ml(v,D,Q){if(50<$g)throw $g=0,pB=null,Error(c(185));if(v=Vy(v,D),v===null)return null;Ya(v,D,Q),v===fo&&(Rh|=D,Ss===4&&Th(v,Ms));var H=tr();D===1?xr&8&&!(xr&48)?hB(v):(Ea(v,Q),xr===0&&(xf(),Fn())):(!(xr&4)||H!==98&&H!==99||(Iu===null?Iu=new Set([v]):Iu.add(v)),Ea(v,Q)),aB=v}function Vy(v,D){v.lanes|=D;var Q=v.alternate;for(Q!==null&&(Q.lanes|=D),Q=v,v=v.return;v!==null;)v.childLanes|=D,Q=v.alternate,Q!==null&&(Q.childLanes|=D),Q=v,v=v.return;return Q.tag===3?Q.stateNode:null}function Ea(v,D){for(var Q=v.callbackNode,H=v.suspendedLanes,V=v.pingedLanes,ne=v.expirationTimes,ve=v.pendingLanes;0<ve;){var _e=31-is(ve),ht=1<<_e,Wt=ne[_e];if(Wt===-1){if(!(ht&H)||ht&V){Wt=D,pa(ht);var Sr=vn;ne[_e]=10<=Sr?Wt+250:6<=Sr?Wt+5e3:-1}}else Wt<=D&&(v.expiredLanes|=ht);ve&=~ht}if(H=ha(v,v===fo?Ms:0),D=vn,H===0)Q!==null&&(Q!==lr&&Bs(Q),v.callbackNode=null,v.callbackPriority=0);else{if(Q!==null){if(v.callbackPriority===D)return;Q!==lr&&Bs(Q)}D===15?(Q=hB.bind(null,v),ye===null?(ye=[Q],Oe=Mi(Tn,Ja)):ye.push(Q),Q=lr):D===14?Q=qi(99,hB.bind(null,v)):(Q=UA(D),Q=qi(Q,mP.bind(null,v))),v.callbackPriority=D,v.callbackNode=Q}}function mP(v){if(qy=-1,Wy=Cu=0,xr&48)throw Error(c(327));var D=v.callbackNode;if(wu()&&v.callbackNode!==D)return null;var Q=ha(v,v===fo?Ms:0);if(Q===0)return null;var H=Q,V=xr;xr|=16;var ne=CP();(fo!==v||Ms!==H)&&(xf(),Fh(v,H));do try{NL();break}catch(_e){IP(v,_e)}while(!0);if(Rg(),Hy.current=ne,xr=V,Zi!==null?H=0:(fo=null,Ms=0,H=Ss),Qh&Rh)Fh(v,0);else if(H!==0){if(H===2&&(xr|=64,v.hydrate&&(v.hydrate=!1,Ns(v.containerInfo)),Q=xl(v),Q!==0&&(H=rd(v,Q))),H===1)throw D=jy,Fh(v,0),Th(v,Q),Ea(v,bt()),D;switch(v.finishedWork=v.current.alternate,v.finishedLanes=Q,H){case 0:case 1:throw Error(c(345));case 2:ep(v);break;case 3:if(Th(v,Q),(Q&62914560)===Q&&(H=lB+500-bt(),10<H)){if(ha(v,0)!==0)break;if(V=v.suspendedLanes,(V&Q)!==Q){No(),v.pingedLanes|=v.suspendedLanes&V;break}v.timeoutHandle=P(ep.bind(null,v),H);break}ep(v);break;case 4:if(Th(v,Q),(Q&4186112)===Q)break;for(H=v.eventTimes,V=-1;0<Q;){var ve=31-is(Q);ne=1<<ve,ve=H[ve],ve>V&&(V=ve),Q&=~ne}if(Q=V,Q=bt()-Q,Q=(120>Q?120:480>Q?480:1080>Q?1080:1920>Q?1920:3e3>Q?3e3:4320>Q?4320:1960*RL(Q/1960))-Q,10<Q){v.timeoutHandle=P(ep.bind(null,v),Q);break}ep(v);break;case 5:ep(v);break;default:throw Error(c(329))}}return Ea(v,bt()),v.callbackNode===D?mP.bind(null,v):null}function Th(v,D){for(D&=~oB,D&=~Rh,v.suspendedLanes|=D,v.pingedLanes&=~D,v=v.expirationTimes;0<D;){var Q=31-is(D),H=1<<Q;v[Q]=-1,D&=~H}}function hB(v){if(xr&48)throw Error(c(327));if(wu(),v===fo&&v.expiredLanes&Ms){var D=Ms,Q=rd(v,D);Qh&Rh&&(D=ha(v,D),Q=rd(v,D))}else D=ha(v,0),Q=rd(v,D);if(v.tag!==0&&Q===2&&(xr|=64,v.hydrate&&(v.hydrate=!1,Ns(v.containerInfo)),D=xl(v),D!==0&&(Q=rd(v,D))),Q===1)throw Q=jy,Fh(v,0),Th(v,D),Ea(v,bt()),Q;return v.finishedWork=v.current.alternate,v.finishedLanes=D,ep(v),Ea(v,bt()),null}function TL(){if(Iu!==null){var v=Iu;Iu=null,v.forEach(function(D){D.expiredLanes|=24&D.pendingLanes,Ea(D,bt())})}Fn()}function yP(v,D){var Q=xr;xr|=1;try{return v(D)}finally{xr=Q,xr===0&&(xf(),Fn())}}function EP(v,D){var Q=xr;if(Q&48)return v(D);xr|=1;try{if(v)return ci(99,v.bind(null,D))}finally{xr=Q,Fn()}}function Yy(v,D){Qn(sB,$A),$A|=D,Qh|=D}function gB(){$A=sB.current,Tt(sB)}function Fh(v,D){v.finishedWork=null,v.finishedLanes=0;var Q=v.timeoutHandle;if(Q!==b&&(v.timeoutHandle=b,w(Q)),Zi!==null)for(Q=Zi.return;Q!==null;){var H=Q;switch(H.tag){case 1:H=H.type.childContextTypes,H!=null&&uu();break;case 3:hu(),Tt(Li),Tt(Gi),du();break;case 5:wt(H);break;case 4:hu();break;case 13:Tt(mi);break;case 19:Tt(mi);break;case 10:Fg(H);break;case 23:case 24:gB()}Q=Q.return}fo=v,Zi=Bu(v.current,null),Ms=$A=Qh=D,Ss=0,jy=null,oB=Rh=zg=0}function IP(v,D){do{var Q=Zi;try{if(Rg(),wf.current=kt,VA){for(var H=qn.memoizedState;H!==null;){var V=H.queue;V!==null&&(V.pending=null),H=H.next}VA=!1}if(mu=0,Pi=ss=qn=null,Bf=!1,nB.current=null,Q===null||Q.return===null){Ss=1,jy=D,Zi=null;break}e:{var ne=v,ve=Q.return,_e=Q,ht=D;if(D=Ms,_e.flags|=2048,_e.firstEffect=_e.lastEffect=null,ht!==null&&typeof ht==\"object\"&&typeof ht.then==\"function\"){var Wt=ht;if(!(_e.mode&2)){var Sr=_e.alternate;Sr?(_e.updateQueue=Sr.updateQueue,_e.memoizedState=Sr.memoizedState,_e.lanes=Sr.lanes):(_e.updateQueue=null,_e.memoizedState=null)}var Lr=(mi.current&1)!==0,Xt=ve;do{var Xn;if(Xn=Xt.tag===13){var Ei=Xt.memoizedState;if(Ei!==null)Xn=Ei.dehydrated!==null;else{var rl=Xt.memoizedProps;Xn=rl.fallback===void 0?!1:rl.unstable_avoidThisFallback!==!0?!0:!Lr}}if(Xn){var rt=Xt.updateQueue;if(rt===null){var We=new Set;We.add(Wt),Xt.updateQueue=We}else rt.add(Wt);if(!(Xt.mode&2)){if(Xt.flags|=64,_e.flags|=16384,_e.flags&=-2981,_e.tag===1)if(_e.alternate===null)_e.tag=17;else{var dt=Rl(-1,1);dt.tag=2,Tl(_e,dt)}_e.lanes|=1;break e}ht=void 0,_e=D;var Zt=ne.pingCache;if(Zt===null?(Zt=ne.pingCache=new PL,ht=new Set,Zt.set(Wt,ht)):(ht=Zt.get(Wt),ht===void 0&&(ht=new Set,Zt.set(Wt,ht))),!ht.has(_e)){ht.add(_e);var Dr=DP.bind(null,ne,Wt,_e);Wt.then(Dr,Dr)}Xt.flags|=4096,Xt.lanes=D;break e}Xt=Xt.return}while(Xt!==null);ht=Error((g(_e.type)||\"A React component\")+` suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.`)}Ss!==5&&(Ss=2),ht=qg(ht,_e),Xt=ve;do{switch(Xt.tag){case 3:ne=ht,Xt.flags|=4096,D&=-D,Xt.lanes|=D;var ti=z1(Xt,ne,D);By(Xt,ti);break e;case 1:ne=ht;var kr=Xt.type,Nn=Xt.stateNode;if(!(Xt.flags&64)&&(typeof kr.getDerivedStateFromError==\"function\"||Nn!==null&&typeof Nn.componentDidCatch==\"function\"&&(gc===null||!gc.has(Nn)))){Xt.flags|=4096,D&=-D,Xt.lanes|=D;var Hn=Vg(Xt,ne,D);By(Xt,Hn);break e}}Xt=Xt.return}while(Xt!==null)}BP(Q)}catch(zr){D=zr,Zi===Q&&Q!==null&&(Zi=Q=Q.return);continue}break}while(!0)}function CP(){var v=Hy.current;return Hy.current=kt,v===null?kt:v}function rd(v,D){var Q=xr;xr|=16;var H=CP();fo===v&&Ms===D||Fh(v,D);do try{FL();break}catch(V){IP(v,V)}while(!0);if(Rg(),xr=Q,Hy.current=H,Zi!==null)throw Error(c(261));return fo=null,Ms=0,Ss}function FL(){for(;Zi!==null;)wP(Zi)}function NL(){for(;Zi!==null&&!kl();)wP(Zi)}function wP(v){var D=bP(v.alternate,v,$A);v.memoizedProps=v.pendingProps,D===null?BP(v):Zi=D,nB.current=null}function BP(v){var D=v;do{var Q=D.alternate;if(v=D.return,D.flags&2048){if(Q=bL(D),Q!==null){Q.flags&=2047,Zi=Q;return}v!==null&&(v.firstEffect=v.lastEffect=null,v.flags|=2048)}else{if(Q=DL(Q,D,$A),Q!==null){Zi=Q;return}if(Q=D,Q.tag!==24&&Q.tag!==23||Q.memoizedState===null||$A&1073741824||!(Q.mode&4)){for(var H=0,V=Q.child;V!==null;)H|=V.lanes|V.childLanes,V=V.sibling;Q.childLanes=H}v!==null&&!(v.flags&2048)&&(v.firstEffect===null&&(v.firstEffect=D.firstEffect),D.lastEffect!==null&&(v.lastEffect!==null&&(v.lastEffect.nextEffect=D.firstEffect),v.lastEffect=D.lastEffect),1<D.flags&&(v.lastEffect!==null?v.lastEffect.nextEffect=D:v.firstEffect=D,v.lastEffect=D))}if(D=D.sibling,D!==null){Zi=D;return}Zi=D=v}while(D!==null);Ss===0&&(Ss=5)}function ep(v){var D=tr();return ci(99,OL.bind(null,v,D)),null}function OL(v,D){do wu();while(Zg!==null);if(xr&48)throw Error(c(327));var Q=v.finishedWork;if(Q===null)return null;if(v.finishedWork=null,v.finishedLanes=0,Q===v.current)throw Error(c(177));v.callbackNode=null;var H=Q.lanes|Q.childLanes,V=H,ne=v.pendingLanes&~V;v.pendingLanes=V,v.suspendedLanes=0,v.pingedLanes=0,v.expiredLanes&=V,v.mutableReadLanes&=V,v.entangledLanes&=V,V=v.entanglements;for(var ve=v.eventTimes,_e=v.expirationTimes;0<ne;){var ht=31-is(ne),Wt=1<<ht;V[ht]=0,ve[ht]=-1,_e[ht]=-1,ne&=~Wt}if(Iu!==null&&!(H&24)&&Iu.has(v)&&Iu.delete(v),v===fo&&(Zi=fo=null,Ms=0),1<Q.flags?Q.lastEffect!==null?(Q.lastEffect.nextEffect=Q,H=Q.firstEffect):H=Q:H=Q.firstEffect,H!==null){V=xr,xr|=32,nB.current=null,ed=tt(v.containerInfo),td=!1,sr=H;do try{LL()}catch(We){if(sr===null)throw Error(c(330));Qf(sr,We),sr=sr.nextEffect}while(sr!==null);ed=null,sr=H;do try{for(ve=v;sr!==null;){var Sr=sr.flags;if(Sr&16&&F&&hf(sr.stateNode),Sr&128){var Lr=sr.alternate;if(Lr!==null){var Xt=Lr.ref;Xt!==null&&(typeof Xt==\"function\"?Xt(null):Xt.current=null)}}switch(Sr&1038){case 2:hP(sr),sr.flags&=-3;break;case 6:hP(sr),sr.flags&=-3,eB(sr.alternate,sr);break;case 1024:sr.flags&=-1025;break;case 1028:sr.flags&=-1025,eB(sr.alternate,sr);break;case 4:eB(sr.alternate,sr);break;case 8:_e=ve,ne=sr,F?gP(_e,ne):AP(_e,ne);var Xn=ne.alternate;Fy(ne),Xn!==null&&Fy(Xn)}sr=sr.nextEffect}}catch(We){if(sr===null)throw Error(c(330));Qf(sr,We),sr=sr.nextEffect}while(sr!==null);td&&ut(),Ne(v.containerInfo),v.current=Q,sr=H;do try{for(Sr=v;sr!==null;){var Ei=sr.flags;if(Ei&36&&uP(Sr,sr.alternate,sr),Ei&128){Lr=void 0;var rl=sr.ref;if(rl!==null){var rt=sr.stateNode;switch(sr.tag){case 5:Lr=Qe(rt);break;default:Lr=rt}typeof rl==\"function\"?rl(Lr):rl.current=Lr}}sr=sr.nextEffect}}catch(We){if(sr===null)throw Error(c(330));Qf(sr,We),sr=sr.nextEffect}while(sr!==null);sr=null,ee(),xr=V}else v.current=Q;if(kf)kf=!1,Zg=v,Xg=D;else for(sr=H;sr!==null;)D=sr.nextEffect,sr.nextEffect=null,sr.flags&8&&(Ei=sr,Ei.sibling=null,Ei.stateNode=null),sr=D;if(H=v.pendingLanes,H===0&&(gc=null),H===1?v===pB?$g++:($g=0,pB=v):$g=0,Q=Q.stateNode,Va&&typeof Va.onCommitFiberRoot==\"function\")try{Va.onCommitFiberRoot($e,Q,void 0,(Q.current.flags&64)===64)}catch{}if(Ea(v,bt()),Gy)throw Gy=!1,v=uB,uB=null,v;return xr&8||Fn(),null}function LL(){for(;sr!==null;){var v=sr.alternate;td||ed===null||(sr.flags&8?De(sr,ed)&&(td=!0,Fe()):sr.tag===13&&kL(v,sr)&&De(sr,ed)&&(td=!0,Fe()));var D=sr.flags;D&256&&Ry(v,sr),!(D&512)||kf||(kf=!0,qi(97,function(){return wu(),null})),sr=sr.nextEffect}}function wu(){if(Xg!==90){var v=97<Xg?97:Xg;return Xg=90,ci(v,UL)}return!1}function ML(v,D){fB.push(D,v),kf||(kf=!0,qi(97,function(){return wu(),null}))}function vP(v,D){AB.push(D,v),kf||(kf=!0,qi(97,function(){return wu(),null}))}function UL(){if(Zg===null)return!1;var v=Zg;if(Zg=null,xr&48)throw Error(c(331));var D=xr;xr|=32;var Q=AB;AB=[];for(var H=0;H<Q.length;H+=2){var V=Q[H],ne=Q[H+1],ve=V.destroy;if(V.destroy=void 0,typeof ve==\"function\")try{ve()}catch(ht){if(ne===null)throw Error(c(330));Qf(ne,ht)}}for(Q=fB,fB=[],H=0;H<Q.length;H+=2){V=Q[H],ne=Q[H+1];try{var _e=V.create;V.destroy=_e()}catch(ht){if(ne===null)throw Error(c(330));Qf(ne,ht)}}for(_e=v.current.firstEffect;_e!==null;)v=_e.nextEffect,_e.nextEffect=null,_e.flags&8&&(_e.sibling=null,_e.stateNode=null),_e=v;return xr=D,Fn(),!0}function SP(v,D,Q){D=qg(Q,D),D=z1(v,D,1),Tl(v,D),D=No(),v=Vy(v,1),v!==null&&(Ya(v,1,D),Ea(v,D))}function Qf(v,D){if(v.tag===3)SP(v,v,D);else for(var Q=v.return;Q!==null;){if(Q.tag===3){SP(Q,v,D);break}else if(Q.tag===1){var H=Q.stateNode;if(typeof Q.type.getDerivedStateFromError==\"function\"||typeof H.componentDidCatch==\"function\"&&(gc===null||!gc.has(H))){v=qg(D,v);var V=Vg(Q,v,1);if(Tl(Q,V),V=No(),Q=Vy(Q,1),Q!==null)Ya(Q,1,V),Ea(Q,V);else if(typeof H.componentDidCatch==\"function\"&&(gc===null||!gc.has(H)))try{H.componentDidCatch(D,v)}catch{}break}}Q=Q.return}}function DP(v,D,Q){var H=v.pingCache;H!==null&&H.delete(D),D=No(),v.pingedLanes|=v.suspendedLanes&Q,fo===v&&(Ms&Q)===Q&&(Ss===4||Ss===3&&(Ms&62914560)===Ms&&500>bt()-lB?Fh(v,0):oB|=Q),Ea(v,D)}function _L(v,D){var Q=v.stateNode;Q!==null&&Q.delete(D),D=0,D===0&&(D=v.mode,D&2?D&4?(Cu===0&&(Cu=Qh),D=Rn(62914560&~Cu),D===0&&(D=4194304)):D=tr()===99?1:2:D=1),Q=No(),v=Vy(v,D),v!==null&&(Ya(v,D,Q),Ea(v,Q))}var bP;bP=function(v,D,Q){var H=D.lanes;if(v!==null)if(v.memoizedProps!==D.pendingProps||Li.current)Ke=!0;else if(Q&H)Ke=!!(v.flags&16384);else{switch(Ke=!1,D.tag){case 3:ky(D),_g();break;case 5:Cf(D);break;case 1:Zn(D.type)&&qa(D);break;case 4:Lg(D,D.stateNode.containerInfo);break;case 10:Tg(D,D.memoizedProps.value);break;case 13:if(D.memoizedState!==null)return Q&D.child.childLanes?K1(v,D,Q):(Qn(mi,mi.current&1),D=Wn(v,D,Q),D!==null?D.sibling:null);Qn(mi,mi.current&1);break;case 19:if(H=(Q&D.childLanes)!==0,v.flags&64){if(H)return cP(v,D,Q);D.flags|=64}var V=D.memoizedState;if(V!==null&&(V.rendering=null,V.tail=null,V.lastEffect=null),Qn(mi,mi.current),H)break;return null;case 23:case 24:return D.lanes=0,yi(v,D,Q)}return Wn(v,D,Q)}else Ke=!1;switch(D.lanes=0,D.tag){case 2:if(H=D.type,v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),v=D.pendingProps,V=mn(D,Gi.current),yf(D,Q),V=jg(null,D,H,v,V,Q),D.flags|=1,typeof V==\"object\"&&V!==null&&typeof V.render==\"function\"&&V.$$typeof===void 0){if(D.tag=1,D.memoizedState=null,D.updateQueue=null,Zn(H)){var ne=!0;qa(D)}else ne=!1;D.memoizedState=V.state!==null&&V.state!==void 0?V.state:null,Ch(D);var ve=H.getDerivedStateFromProps;typeof ve==\"function\"&&HA(D,H,ve,v),V.updater=jA,D.stateNode=V,V._reactInternals=D,Ro(D,H,v,Q),D=Y1(null,D,H,!0,ne,Q)}else D.tag=0,pt(null,D,V,Q),D=D.child;return D;case 16:V=D.elementType;e:{switch(v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),v=D.pendingProps,ne=V._init,V=ne(V._payload),D.type=V,ne=D.tag=jL(V),v=ko(V,v),ne){case 0:D=JA(null,D,V,v,Q);break e;case 1:D=lP(null,D,V,v,Q);break e;case 11:D=dr(null,D,V,v,Q);break e;case 14:D=vr(null,D,V,ko(V.type,v),H,Q);break e}throw Error(c(306,V,\"\"))}return D;case 0:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:ko(H,V),JA(v,D,H,V,Q);case 1:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:ko(H,V),lP(v,D,H,V,Q);case 3:if(ky(D),H=D.updateQueue,v===null||H===null)throw Error(c(282));if(H=D.pendingProps,V=D.memoizedState,V=V!==null?V.element:null,Ng(v,D),_A(D,H,null,Q),H=D.memoizedState.element,H===V)_g(),D=Wn(v,D,Q);else{if(V=D.stateNode,(ne=V.hydrate)&&(Z?(da=au(D.stateNode.containerInfo),Za=D,ne=Xa=!0):ne=!1),ne){if(Z&&(v=V.mutableSourceEagerHydrationData,v!=null))for(V=0;V<v.length;V+=2)ne=v[V],ve=v[V+1],y?ne._workInProgressVersionPrimary=ve:ne._workInProgressVersionSecondary=ve,gu.push(ne);for(Q=V1(D,null,H,Q),D.child=Q;Q;)Q.flags=Q.flags&-3|1024,Q=Q.sibling}else pt(v,D,H,Q),_g();D=D.child}return D;case 5:return Cf(D),v===null&&Ug(D),H=D.type,V=D.pendingProps,ne=v!==null?v.memoizedProps:null,ve=V.children,ct(H,V)?ve=null:ne!==null&&ct(H,ne)&&(D.flags|=16),vs(v,D),pt(v,D,ve,Q),D.child;case 6:return v===null&&Ug(D),null;case 13:return K1(v,D,Q);case 4:return Lg(D,D.stateNode.containerInfo),H=D.pendingProps,v===null?D.child=Og(D,null,H,Q):pt(v,D,H,Q),D.child;case 11:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:ko(H,V),dr(v,D,H,V,Q);case 7:return pt(v,D,D.pendingProps,Q),D.child;case 8:return pt(v,D,D.pendingProps.children,Q),D.child;case 12:return pt(v,D,D.pendingProps.children,Q),D.child;case 10:e:{if(H=D.type._context,V=D.pendingProps,ve=D.memoizedProps,ne=V.value,Tg(D,ne),ve!==null){var _e=ve.value;if(ne=xo(_e,ne)?0:(typeof H._calculateChangedBits==\"function\"?H._calculateChangedBits(_e,ne):1073741823)|0,ne===0){if(ve.children===V.children&&!Li.current){D=Wn(v,D,Q);break e}}else for(_e=D.child,_e!==null&&(_e.return=D);_e!==null;){var ht=_e.dependencies;if(ht!==null){ve=_e.child;for(var Wt=ht.firstContext;Wt!==null;){if(Wt.context===H&&Wt.observedBits&ne){_e.tag===1&&(Wt=Rl(-1,Q&-Q),Wt.tag=2,Tl(_e,Wt)),_e.lanes|=Q,Wt=_e.alternate,Wt!==null&&(Wt.lanes|=Q),wy(_e.return,Q),ht.lanes|=Q;break}Wt=Wt.next}}else ve=_e.tag===10&&_e.type===D.type?null:_e.child;if(ve!==null)ve.return=_e;else for(ve=_e;ve!==null;){if(ve===D){ve=null;break}if(_e=ve.sibling,_e!==null){_e.return=ve.return,ve=_e;break}ve=ve.return}_e=ve}}pt(v,D,V.children,Q),D=D.child}return D;case 9:return V=D.type,ne=D.pendingProps,H=ne.children,yf(D,Q),V=Qo(V,ne.unstable_observedBits),H=H(V),D.flags|=1,pt(v,D,H,Q),D.child;case 14:return V=D.type,ne=ko(V,D.pendingProps),ne=ko(V.type,ne),vr(v,D,V,ne,H,Q);case 15:return _n(v,D,D.type,D.pendingProps,H,Q);case 17:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:ko(H,V),v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),D.tag=1,Zn(H)?(v=!0,qa(D)):v=!1,yf(D,Q),xt(D,H,V),Ro(D,H,V,Q),Y1(null,D,H,!0,v,Q);case 19:return cP(v,D,Q);case 23:return yi(v,D,Q);case 24:return yi(v,D,Q)}throw Error(c(156,D.tag))};var Ky={current:!1},Us=n.unstable_flushAllWithoutAsserting,PP=typeof Us==\"function\";function dB(){if(Us!==void 0)return Us();for(var v=!1;wu();)v=!0;return v}function Ia(v){try{dB(),QL(function(){dB()?Ia(v):v()})}catch(D){v(D)}}var el=0,Jy=!1;function HL(v,D,Q,H){this.tag=v,this.key=Q,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=D,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=H,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function tl(v,D,Q,H){return new HL(v,D,Q,H)}function mB(v){return v=v.prototype,!(!v||!v.isReactComponent)}function jL(v){if(typeof v==\"function\")return mB(v)?1:0;if(v!=null){if(v=v.$$typeof,v===T)return 11;if(v===Y)return 14}return 2}function Bu(v,D){var Q=v.alternate;return Q===null?(Q=tl(v.tag,D,v.key,v.mode),Q.elementType=v.elementType,Q.type=v.type,Q.stateNode=v.stateNode,Q.alternate=v,v.alternate=Q):(Q.pendingProps=D,Q.type=v.type,Q.flags=0,Q.nextEffect=null,Q.firstEffect=null,Q.lastEffect=null),Q.childLanes=v.childLanes,Q.lanes=v.lanes,Q.child=v.child,Q.memoizedProps=v.memoizedProps,Q.memoizedState=v.memoizedState,Q.updateQueue=v.updateQueue,D=v.dependencies,Q.dependencies=D===null?null:{lanes:D.lanes,firstContext:D.firstContext},Q.sibling=v.sibling,Q.index=v.index,Q.ref=v.ref,Q}function nd(v,D,Q,H,V,ne){var ve=2;if(H=v,typeof v==\"function\")mB(v)&&(ve=1);else if(typeof v==\"string\")ve=5;else e:switch(v){case E:return Rf(Q.children,V,ne,D);case ue:ve=8,V|=16;break;case C:ve=8,V|=1;break;case S:return v=tl(12,Q,D,V|8),v.elementType=S,v.type=S,v.lanes=ne,v;case O:return v=tl(13,Q,D,V),v.type=O,v.elementType=O,v.lanes=ne,v;case U:return v=tl(19,Q,D,V),v.elementType=U,v.lanes=ne,v;case ae:return yB(Q,V,ne,D);case de:return v=tl(24,Q,D,V),v.elementType=de,v.lanes=ne,v;default:if(typeof v==\"object\"&&v!==null)switch(v.$$typeof){case x:ve=10;break e;case I:ve=9;break e;case T:ve=11;break e;case Y:ve=14;break e;case te:ve=16,H=null;break e;case ie:ve=22;break e}throw Error(c(130,v==null?v:typeof v,\"\"))}return D=tl(ve,Q,D,V),D.elementType=v,D.type=H,D.lanes=ne,D}function Rf(v,D,Q,H){return v=tl(7,v,H,D),v.lanes=Q,v}function yB(v,D,Q,H){return v=tl(23,v,H,D),v.elementType=ae,v.lanes=Q,v}function EB(v,D,Q){return v=tl(6,v,null,D),v.lanes=Q,v}function Oo(v,D,Q){return D=tl(4,v.children!==null?v.children:[],v.key,D),D.lanes=Q,D.stateNode={containerInfo:v.containerInfo,pendingChildren:null,implementation:v.implementation},D}function qL(v,D,Q){this.tag=D,this.containerInfo=v,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=b,this.pendingContext=this.context=null,this.hydrate=Q,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=ga(0),this.expirationTimes=ga(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ga(0),Z&&(this.mutableSourceEagerHydrationData=null)}function xP(v){var D=v._reactInternals;if(D===void 0)throw typeof v.render==\"function\"?Error(c(188)):Error(c(268,Object.keys(v)));return v=ce(D),v===null?null:v.stateNode}function kP(v,D){if(v=v.memoizedState,v!==null&&v.dehydrated!==null){var Q=v.retryLane;v.retryLane=Q!==0&&Q<D?Q:D}}function zy(v,D){kP(v,D),(v=v.alternate)&&kP(v,D)}function WL(v){return v=ce(v),v===null?null:v.stateNode}function VL(){return null}return r.IsThisRendererActing=Ky,r.act=function(v){function D(){el--,iB.current=Q,Ky.current=H}Jy===!1&&(Jy=!0,console.error(\"act(...) is not supported in production builds of React, and might not behave as expected.\")),el++;var Q=iB.current,H=Ky.current;iB.current=!0,Ky.current=!0;try{var V=yP(v)}catch(ne){throw D(),ne}if(V!==null&&typeof V==\"object\"&&typeof V.then==\"function\")return{then:function(ne,ve){V.then(function(){1<el||PP===!0&&Q===!0?(D(),ne()):Ia(function(_e){D(),_e?ve(_e):ne()})},function(_e){D(),ve(_e)})}};try{el!==1||PP!==!1&&Q!==!1||dB(),D()}catch(ne){throw D(),ne}return{then:function(ne){ne()}}},r.attemptContinuousHydration=function(v){if(v.tag===13){var D=No();Ml(v,67108864,D),zy(v,67108864)}},r.attemptHydrationAtCurrentPriority=function(v){if(v.tag===13){var D=No(),Q=Ds(v);Ml(v,Q,D),zy(v,Q)}},r.attemptSynchronousHydration=function(v){switch(v.tag){case 3:var D=v.stateNode;if(D.hydrate){var Q=pa(D.pendingLanes);D.expiredLanes|=Q&D.pendingLanes,Ea(D,bt()),!(xr&48)&&(xf(),Fn())}break;case 13:var H=No();EP(function(){return Ml(v,1,H)}),zy(v,4)}},r.attemptUserBlockingHydration=function(v){if(v.tag===13){var D=No();Ml(v,4,D),zy(v,4)}},r.batchedEventUpdates=function(v,D){var Q=xr;xr|=2;try{return v(D)}finally{xr=Q,xr===0&&(xf(),Fn())}},r.batchedUpdates=yP,r.createComponentSelector=function(v){return{$$typeof:Ny,value:v}},r.createContainer=function(v,D,Q){return v=new qL(v,D,Q),D=tl(3,null,null,D===2?7:D===1?3:0),v.current=D,D.stateNode=v,Ch(D),v},r.createHasPsuedoClassSelector=function(v){return{$$typeof:Oy,value:v}},r.createPortal=function(v,D,Q){var H=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:h,key:H==null?null:\"\"+H,children:v,containerInfo:D,implementation:Q}},r.createRoleSelector=function(v){return{$$typeof:Ly,value:v}},r.createTestNameSelector=function(v){return{$$typeof:Kg,value:v}},r.createTextSelector=function(v){return{$$typeof:My,value:v}},r.deferredUpdates=function(v){return ci(97,v)},r.discreteUpdates=function(v,D,Q,H,V){var ne=xr;xr|=4;try{return ci(98,v.bind(null,D,Q,H,V))}finally{xr=ne,xr===0&&(xf(),Fn())}},r.findAllNodes=rB,r.findBoundingRects=function(v,D){if(!qt)throw Error(c(363));D=rB(v,D),v=[];for(var Q=0;Q<D.length;Q++)v.push(Pt(D[Q]));for(D=v.length-1;0<D;D--){Q=v[D];for(var H=Q.x,V=H+Q.width,ne=Q.y,ve=ne+Q.height,_e=D-1;0<=_e;_e--)if(D!==_e){var ht=v[_e],Wt=ht.x,Sr=Wt+ht.width,Lr=ht.y,Xt=Lr+ht.height;if(H>=Wt&&ne>=Lr&&V<=Sr&&ve<=Xt){v.splice(D,1);break}else if(H!==Wt||Q.width!==ht.width||Xt<ne||Lr>ve){if(!(ne!==Lr||Q.height!==ht.height||Sr<H||Wt>V)){Wt>H&&(ht.width+=Wt-H,ht.x=H),Sr<V&&(ht.width=V-Wt),v.splice(D,1);break}}else{Lr>ne&&(ht.height+=Lr-ne,ht.y=ne),Xt<ve&&(ht.height=ve-Lr),v.splice(D,1);break}}}return v},r.findHostInstance=xP,r.findHostInstanceWithNoPortals=function(v){return v=X(v),v===null?null:v.tag===20?v.stateNode.instance:v.stateNode},r.findHostInstanceWithWarning=function(v){return xP(v)},r.flushControlled=function(v){var D=xr;xr|=1;try{ci(99,v)}finally{xr=D,xr===0&&(xf(),Fn())}},r.flushDiscreteUpdates=function(){!(xr&49)&&(TL(),wu())},r.flushPassiveEffects=wu,r.flushSync=EP,r.focusWithin=function(v,D){if(!qt)throw Error(c(363));for(v=Uy(v),D=tB(v,D),D=Array.from(D),v=0;v<D.length;){var Q=D[v++];if(!Pr(Q)){if(Q.tag===5&&Or(Q.stateNode))return!0;for(Q=Q.child;Q!==null;)D.push(Q),Q=Q.sibling}}return!1},r.getCurrentUpdateLanePriority=function(){return cc},r.getFindAllNodesFailureDescription=function(v,D){if(!qt)throw Error(c(363));var Q=0,H=[];v=[Uy(v),0];for(var V=0;V<v.length;){var ne=v[V++],ve=v[V++],_e=D[ve];if((ne.tag!==5||!Pr(ne))&&(bf(ne,_e)&&(H.push(Pf(_e)),ve++,ve>Q&&(Q=ve)),ve<D.length))for(ne=ne.child;ne!==null;)v.push(ne,ve),ne=ne.sibling}if(Q<D.length){for(v=[];Q<D.length;Q++)v.push(Pf(D[Q]));return`findAllNodes was able to match part of the selector:\n  `+(H.join(\" > \")+`\n\nNo matching component was found for:\n  `)+v.join(\" > \")}return null},r.getPublicRootInstance=function(v){if(v=v.current,!v.child)return null;switch(v.child.tag){case 5:return Qe(v.child.stateNode);default:return v.child.stateNode}},r.injectIntoDevTools=function(v){if(v={bundleType:v.bundleType,version:v.version,rendererPackageName:v.rendererPackageName,rendererConfig:v.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:f.ReactCurrentDispatcher,findHostInstanceByFiber:WL,findFiberByHostInstance:v.findFiberByHostInstance||VL,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>\"u\")v=!1;else{var D=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!D.isDisabled&&D.supportsFiber)try{$e=D.inject(v),Va=D}catch{}v=!0}return v},r.observeVisibleRects=function(v,D,Q,H){if(!qt)throw Error(c(363));v=rB(v,D);var V=on(v,Q,H).disconnect;return{disconnect:function(){V()}}},r.registerMutableSourceForHydration=function(v,D){var Q=D._getVersion;Q=Q(D._source),v.mutableSourceEagerHydrationData==null?v.mutableSourceEagerHydrationData=[D,Q]:v.mutableSourceEagerHydrationData.push(D,Q)},r.runWithPriority=function(v,D){var Q=cc;try{return cc=v,D()}finally{cc=Q}},r.shouldSuspend=function(){return!1},r.unbatchedUpdates=function(v,D){var Q=xr;xr&=-2,xr|=8;try{return v(D)}finally{xr=Q,xr===0&&(xf(),Fn())}},r.updateContainer=function(v,D,Q,H){var V=D.current,ne=No(),ve=Ds(V);e:if(Q){Q=Q._reactInternals;t:{if(Se(Q)!==Q||Q.tag!==1)throw Error(c(170));var _e=Q;do{switch(_e.tag){case 3:_e=_e.stateNode.context;break t;case 1:if(Zn(_e.type)){_e=_e.stateNode.__reactInternalMemoizedMergedChildContext;break t}}_e=_e.return}while(_e!==null);throw Error(c(171))}if(Q.tag===1){var ht=Q.type;if(Zn(ht)){Q=Ga(Q,ht,_e);break e}}Q=_e}else Q=Aa;return D.context===null?D.context=Q:D.pendingContext=Q,D=Rl(ne,ve),D.payload={element:v},H=H===void 0?null:H,H!==null&&(D.callback=H),Tl(V,D),Ml(V,ve,ne),ve},r}});var AIe=G((PYt,fIe)=>{\"use strict\";fIe.exports=uIe()});var hIe=G((xYt,pIe)=>{\"use strict\";var Mut={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2};pIe.exports=Mut});var yIe=G((kYt,mIe)=>{\"use strict\";var Uut=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(e[s]=r[s])}return e},yF=function(){function e(t,r){for(var s=0;s<r.length;s++){var a=r[s];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(t,a.key,a)}}return function(t,r,s){return r&&e(t.prototype,r),s&&e(t,s),t}}();function u9(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function f9(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}var nf=hIe(),_ut=function(){function e(t,r,s,a,n,c){f9(this,e),this.left=t,this.right=r,this.top=s,this.bottom=a,this.width=n,this.height=c}return yF(e,[{key:\"fromJS\",value:function(r){r(this.left,this.right,this.top,this.bottom,this.width,this.height)}},{key:\"toString\",value:function(){return\"<Layout#\"+this.left+\":\"+this.right+\";\"+this.top+\":\"+this.bottom+\";\"+this.width+\":\"+this.height+\">\"}}]),e}(),gIe=function(){yF(e,null,[{key:\"fromJS\",value:function(r){var s=r.width,a=r.height;return new e(s,a)}}]);function e(t,r){f9(this,e),this.width=t,this.height=r}return yF(e,[{key:\"fromJS\",value:function(r){r(this.width,this.height)}},{key:\"toString\",value:function(){return\"<Size#\"+this.width+\"x\"+this.height+\">\"}}]),e}(),dIe=function(){function e(t,r){f9(this,e),this.unit=t,this.value=r}return yF(e,[{key:\"fromJS\",value:function(r){r(this.unit,this.value)}},{key:\"toString\",value:function(){switch(this.unit){case nf.UNIT_POINT:return String(this.value);case nf.UNIT_PERCENT:return this.value+\"%\";case nf.UNIT_AUTO:return\"auto\";default:return this.value+\"?\"}}},{key:\"valueOf\",value:function(){return this.value}}]),e}();mIe.exports=function(e,t){function r(c,f,p){var h=c[f];c[f]=function(){for(var E=arguments.length,C=Array(E),S=0;S<E;S++)C[S]=arguments[S];return p.call.apply(p,[this,h].concat(C))}}for(var s=[\"setPosition\",\"setMargin\",\"setFlexBasis\",\"setWidth\",\"setHeight\",\"setMinWidth\",\"setMinHeight\",\"setMaxWidth\",\"setMaxHeight\",\"setPadding\"],a=function(){var f,p=s[n],h=(f={},u9(f,nf.UNIT_POINT,t.Node.prototype[p]),u9(f,nf.UNIT_PERCENT,t.Node.prototype[p+\"Percent\"]),u9(f,nf.UNIT_AUTO,t.Node.prototype[p+\"Auto\"]),f);r(t.Node.prototype,p,function(E){for(var C=arguments.length,S=Array(C>1?C-1:0),x=1;x<C;x++)S[x-1]=arguments[x];var I=S.pop(),T=void 0,O=void 0;if(I===\"auto\")T=nf.UNIT_AUTO,O=void 0;else if(I instanceof dIe)T=I.unit,O=I.valueOf();else if(T=typeof I==\"string\"&&I.endsWith(\"%\")?nf.UNIT_PERCENT:nf.UNIT_POINT,O=parseFloat(I),!Number.isNaN(I)&&Number.isNaN(O))throw new Error(\"Invalid value \"+I+\" for \"+p);if(!h[T])throw new Error('Failed to execute \"'+p+`\": Unsupported unit '`+I+\"'\");if(O!==void 0){var U;return(U=h[T]).call.apply(U,[this].concat(S,[O]))}else{var Y;return(Y=h[T]).call.apply(Y,[this].concat(S))}})},n=0;n<s.length;n++)a();return r(t.Config.prototype,\"free\",function(){t.Config.destroy(this)}),r(t.Node,\"create\",function(c,f){return f?t.Node.createWithConfig(f):t.Node.createDefault()}),r(t.Node.prototype,\"free\",function(){t.Node.destroy(this)}),r(t.Node.prototype,\"freeRecursive\",function(){for(var c=0,f=this.getChildCount();c<f;++c)this.getChild(0).freeRecursive();this.free()}),r(t.Node.prototype,\"setMeasureFunc\",function(c,f){return f?c.call(this,function(){return gIe.fromJS(f.apply(void 0,arguments))}):this.unsetMeasureFunc()}),r(t.Node.prototype,\"calculateLayout\",function(c){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:nf.DIRECTION_LTR;return c.call(this,f,p,h)}),Uut({Config:t.Config,Node:t.Node,Layout:e(\"Layout\",_ut),Size:e(\"Size\",gIe),Value:e(\"Value\",dIe),getInstanceCount:function(){return t.getInstanceCount.apply(t,arguments)}},nf)}});var EIe=G((exports,module)=>{(function(e,t){typeof define==\"function\"&&define.amd?define([],function(){return t}):typeof module==\"object\"&&module.exports?module.exports=t:(e.nbind=e.nbind||{}).init=t})(exports,function(Module,cb){typeof Module==\"function\"&&(cb=Module,Module={}),Module.onRuntimeInitialized=function(e,t){return function(){e&&e.apply(this,arguments);try{Module.ccall(\"nbind_init\")}catch(r){t(r);return}t(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})}}(Module.onRuntimeInitialized,cb);var Module;Module||(Module=(typeof Module<\"u\"?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;if(Module.ENVIRONMENT)if(Module.ENVIRONMENT===\"WEB\")ENVIRONMENT_IS_WEB=!0;else if(Module.ENVIRONMENT===\"WORKER\")ENVIRONMENT_IS_WORKER=!0;else if(Module.ENVIRONMENT===\"NODE\")ENVIRONMENT_IS_NODE=!0;else if(Module.ENVIRONMENT===\"SHELL\")ENVIRONMENT_IS_SHELL=!0;else throw new Error(\"The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.\");else ENVIRONMENT_IS_WEB=typeof window==\"object\",ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\",ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof Ie==\"function\"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn);var nodeFS,nodePath;Module.read=function(t,r){nodeFS||(nodeFS={}(\"\")),nodePath||(nodePath={}(\"\")),t=nodePath.normalize(t);var s=nodeFS.readFileSync(t);return r?s:s.toString()},Module.readBinary=function(t){var r=Module.read(t,!0);return r.buffer||(r=new Uint8Array(r)),assert(r.buffer),r},Module.load=function(t){globalEval(read(t))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\\\/g,\"/\"):Module.thisProgram=\"unknown-program\"),Module.arguments=process.argv.slice(2),typeof module<\"u\"&&(module.exports=Module),Module.inspect=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),typeof printErr<\"u\"&&(Module.printErr=printErr),typeof read<\"u\"?Module.read=read:Module.read=function(){throw\"no read() available\"},Module.readBinary=function(t){if(typeof readbuffer==\"function\")return new Uint8Array(readbuffer(t));var r=read(t,\"binary\");return assert(typeof r==\"object\"),r},typeof scriptArgs<\"u\"?Module.arguments=scriptArgs:typeof arguments<\"u\"&&(Module.arguments=arguments),typeof quit==\"function\"&&(Module.quit=function(e,t){quit(e)});else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(Module.read=function(t){var r=new XMLHttpRequest;return r.open(\"GET\",t,!1),r.send(null),r.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(t){var r=new XMLHttpRequest;return r.open(\"GET\",t,!1),r.responseType=\"arraybuffer\",r.send(null),new Uint8Array(r.response)}),Module.readAsync=function(t,r,s){var a=new XMLHttpRequest;a.open(\"GET\",t,!0),a.responseType=\"arraybuffer\",a.onload=function(){a.status==200||a.status==0&&a.response?r(a.response):s()},a.onerror=s,a.send(null)},typeof arguments<\"u\"&&(Module.arguments=arguments),typeof console<\"u\")Module.print||(Module.print=function(t){console.log(t)}),Module.printErr||(Module.printErr=function(t){console.warn(t)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&typeof dump<\"u\"?function(e){dump(e)}:function(e){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),typeof Module.setWindowTitle>\"u\"&&(Module.setWindowTitle=function(e){document.title=e})}else throw\"Unknown runtime environment. Where are we?\";function globalEval(e){eval.call(null,e)}!Module.load&&Module.read&&(Module.load=function(t){globalEval(Module.read(t))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram=\"./this.program\"),Module.quit||(Module.quit=function(e,t){throw t}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[];for(var key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(e){return tempRet0=e,e},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(e){STACKTOP=e},getNativeTypeSize:function(e){switch(e){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(e[e.length-1]===\"*\")return Runtime.QUANTUM_SIZE;if(e[0]===\"i\"){var t=parseInt(e.substr(1));return assert(t%8===0),t/8}else return 0}}},getNativeFieldSize:function(e){return Math.max(Runtime.getNativeTypeSize(e),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(e,t){return t===\"double\"||t===\"i64\"?e&7&&(assert((e&7)===4),e+=4):assert((e&3)===0),e},getAlignSize:function(e,t,r){return!r&&(e==\"i64\"||e==\"double\")?8:e?Math.min(t||(e?Runtime.getNativeFieldSize(e):0),Runtime.QUANTUM_SIZE):Math.min(t,8)},dynCall:function(e,t,r){return r&&r.length?Module[\"dynCall_\"+e].apply(null,[t].concat(r)):Module[\"dynCall_\"+e].call(null,t)},functionPointers:[],addFunction:function(e){for(var t=0;t<Runtime.functionPointers.length;t++)if(!Runtime.functionPointers[t])return Runtime.functionPointers[t]=e,2*(1+t);throw\"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.\"},removeFunction:function(e){Runtime.functionPointers[(e-2)/2]=null},warnOnce:function(e){Runtime.warnOnce.shown||(Runtime.warnOnce.shown={}),Runtime.warnOnce.shown[e]||(Runtime.warnOnce.shown[e]=1,Module.printErr(e))},funcWrappers:{},getFuncWrapper:function(e,t){if(e){assert(t),Runtime.funcWrappers[t]||(Runtime.funcWrappers[t]={});var r=Runtime.funcWrappers[t];return r[e]||(t.length===1?r[e]=function(){return Runtime.dynCall(t,e)}:t.length===2?r[e]=function(a){return Runtime.dynCall(t,e,[a])}:r[e]=function(){return Runtime.dynCall(t,e,Array.prototype.slice.call(arguments))}),r[e]}},getCompilerSetting:function(e){throw\"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work\"},stackAlloc:function(e){var t=STACKTOP;return STACKTOP=STACKTOP+e|0,STACKTOP=STACKTOP+15&-16,t},staticAlloc:function(e){var t=STATICTOP;return STATICTOP=STATICTOP+e|0,STATICTOP=STATICTOP+15&-16,t},dynamicAlloc:function(e){var t=HEAP32[DYNAMICTOP_PTR>>2],r=(t+e+15|0)&-16;if(HEAP32[DYNAMICTOP_PTR>>2]=r,r>=TOTAL_MEMORY){var s=enlargeMemory();if(!s)return HEAP32[DYNAMICTOP_PTR>>2]=t,0}return t},alignMemory:function(e,t){var r=e=Math.ceil(e/(t||16))*(t||16);return r},makeBigInt:function(e,t,r){var s=r?+(e>>>0)+ +(t>>>0)*4294967296:+(e>>>0)+ +(t|0)*4294967296;return s},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0;function assert(e,t){e||abort(\"Assertion failed: \"+t)}function getCFunc(ident){var func=Module[\"_\"+ident];if(!func)try{func=eval(\"_\"+ident)}catch(e){}return assert(func,\"Cannot call unknown function \"+ident+\" (perhaps LLVM optimizations or closure removed it?)\"),func}var cwrap,ccall;(function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(e){var t=Runtime.stackAlloc(e.length);return writeArrayToMemory(e,t),t},stringToC:function(e){var t=0;if(e!=null&&e!==0){var r=(e.length<<2)+1;t=Runtime.stackAlloc(r),stringToUTF8(e,t,r)}return t}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(t,r,s,a,n){var c=getCFunc(t),f=[],p=0;if(a)for(var h=0;h<a.length;h++){var E=toC[s[h]];E?(p===0&&(p=Runtime.stackSave()),f[h]=E(a[h])):f[h]=a[h]}var C=c.apply(null,f);if(r===\"string\"&&(C=Pointer_stringify(C)),p!==0){if(n&&n.async){EmterpreterAsync.asyncFinalizers.push(function(){Runtime.stackRestore(p)});return}Runtime.stackRestore(p)}return C};var sourceRegex=/^function\\s*[a-zA-Z$_0-9]*\\s*\\(([^)]*)\\)\\s*{\\s*([^*]*?)[\\s;]*(?:return\\s*(.*?)[;\\s]*)?}$/;function parseJSFunc(e){var t=e.toString().match(sourceRegex).slice(1);return{arguments:t[0],body:t[1],returnValue:t[2]}}var JSsource=null;function ensureJSsource(){if(!JSsource){JSsource={};for(var e in JSfuncs)JSfuncs.hasOwnProperty(e)&&(JSsource[e]=parseJSFunc(JSfuncs[e]))}}cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident),numericArgs=argTypes.every(function(e){return e===\"number\"}),numericRet=returnType!==\"string\";if(numericRet&&numericArgs)return cfunc;var argNames=argTypes.map(function(e,t){return\"$\"+t}),funcstr=\"(function(\"+argNames.join(\",\")+\") {\",nargs=argTypes.length;if(!numericArgs){ensureJSsource(),funcstr+=\"var stack = \"+JSsource.stackSave.body+\";\";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type!==\"number\"){var convertCode=JSsource[type+\"ToC\"];funcstr+=\"var \"+convertCode.arguments+\" = \"+arg+\";\",funcstr+=convertCode.body+\";\",funcstr+=arg+\"=(\"+convertCode.returnValue+\");\"}}}var cfuncname=parseJSFunc(function(){return cfunc}).returnValue;if(funcstr+=\"var ret = \"+cfuncname+\"(\"+argNames.join(\",\")+\");\",!numericRet){var strgfy=parseJSFunc(function(){return Pointer_stringify}).returnValue;funcstr+=\"ret = \"+strgfy+\"(ret);\"}return numericArgs||(ensureJSsource(),funcstr+=JSsource.stackRestore.body.replace(\"()\",\"(stack)\")+\";\"),funcstr+=\"return ret})\",eval(funcstr)}})(),Module.ccall=ccall,Module.cwrap=cwrap;function setValue(e,t,r,s){switch(r=r||\"i8\",r.charAt(r.length-1)===\"*\"&&(r=\"i32\"),r){case\"i1\":HEAP8[e>>0]=t;break;case\"i8\":HEAP8[e>>0]=t;break;case\"i16\":HEAP16[e>>1]=t;break;case\"i32\":HEAP32[e>>2]=t;break;case\"i64\":tempI64=[t>>>0,(tempDouble=t,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[e>>2]=tempI64[0],HEAP32[e+4>>2]=tempI64[1];break;case\"float\":HEAPF32[e>>2]=t;break;case\"double\":HEAPF64[e>>3]=t;break;default:abort(\"invalid type for setValue: \"+r)}}Module.setValue=setValue;function getValue(e,t,r){switch(t=t||\"i8\",t.charAt(t.length-1)===\"*\"&&(t=\"i32\"),t){case\"i1\":return HEAP8[e>>0];case\"i8\":return HEAP8[e>>0];case\"i16\":return HEAP16[e>>1];case\"i32\":return HEAP32[e>>2];case\"i64\":return HEAP32[e>>2];case\"float\":return HEAPF32[e>>2];case\"double\":return HEAPF64[e>>3];default:abort(\"invalid type for setValue: \"+t)}return null}Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE;function allocate(e,t,r,s){var a,n;typeof e==\"number\"?(a=!0,n=e):(a=!1,n=e.length);var c=typeof t==\"string\"?t:null,f;if(r==ALLOC_NONE?f=s:f=[typeof _malloc==\"function\"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][r===void 0?ALLOC_STATIC:r](Math.max(n,c?1:t.length)),a){var s=f,p;for(assert((f&3)==0),p=f+(n&-4);s<p;s+=4)HEAP32[s>>2]=0;for(p=f+n;s<p;)HEAP8[s++>>0]=0;return f}if(c===\"i8\")return e.subarray||e.slice?HEAPU8.set(e,f):HEAPU8.set(new Uint8Array(e),f),f;for(var h=0,E,C,S;h<n;){var x=e[h];if(typeof x==\"function\"&&(x=Runtime.getFunctionIndex(x)),E=c||t[h],E===0){h++;continue}E==\"i64\"&&(E=\"i32\"),setValue(f+h,x,E),S!==E&&(C=Runtime.getNativeTypeSize(E),S=E),h+=C}return f}Module.allocate=allocate;function getMemory(e){return staticSealed?runtimeInitialized?_malloc(e):Runtime.dynamicAlloc(e):Runtime.staticAlloc(e)}Module.getMemory=getMemory;function Pointer_stringify(e,t){if(t===0||!e)return\"\";for(var r=0,s,a=0;s=HEAPU8[e+a>>0],r|=s,!(s==0&&!t||(a++,t&&a==t)););t||(t=a);var n=\"\";if(r<128){for(var c=1024,f;t>0;)f=String.fromCharCode.apply(String,HEAPU8.subarray(e,e+Math.min(t,c))),n=n?n+f:f,e+=c,t-=c;return n}return Module.UTF8ToString(e)}Module.Pointer_stringify=Pointer_stringify;function AsciiToString(e){for(var t=\"\";;){var r=HEAP8[e++>>0];if(!r)return t;t+=String.fromCharCode(r)}}Module.AsciiToString=AsciiToString;function stringToAscii(e,t){return writeAsciiToMemory(e,t,!1)}Module.stringToAscii=stringToAscii;var UTF8Decoder=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0;function UTF8ArrayToString(e,t){for(var r=t;e[r];)++r;if(r-t>16&&e.subarray&&UTF8Decoder)return UTF8Decoder.decode(e.subarray(t,r));for(var s,a,n,c,f,p,h=\"\";;){if(s=e[t++],!s)return h;if(!(s&128)){h+=String.fromCharCode(s);continue}if(a=e[t++]&63,(s&224)==192){h+=String.fromCharCode((s&31)<<6|a);continue}if(n=e[t++]&63,(s&240)==224?s=(s&15)<<12|a<<6|n:(c=e[t++]&63,(s&248)==240?s=(s&7)<<18|a<<12|n<<6|c:(f=e[t++]&63,(s&252)==248?s=(s&3)<<24|a<<18|n<<12|c<<6|f:(p=e[t++]&63,s=(s&1)<<30|a<<24|n<<18|c<<12|f<<6|p))),s<65536)h+=String.fromCharCode(s);else{var E=s-65536;h+=String.fromCharCode(55296|E>>10,56320|E&1023)}}}Module.UTF8ArrayToString=UTF8ArrayToString;function UTF8ToString(e){return UTF8ArrayToString(HEAPU8,e)}Module.UTF8ToString=UTF8ToString;function stringToUTF8Array(e,t,r,s){if(!(s>0))return 0;for(var a=r,n=r+s-1,c=0;c<e.length;++c){var f=e.charCodeAt(c);if(f>=55296&&f<=57343&&(f=65536+((f&1023)<<10)|e.charCodeAt(++c)&1023),f<=127){if(r>=n)break;t[r++]=f}else if(f<=2047){if(r+1>=n)break;t[r++]=192|f>>6,t[r++]=128|f&63}else if(f<=65535){if(r+2>=n)break;t[r++]=224|f>>12,t[r++]=128|f>>6&63,t[r++]=128|f&63}else if(f<=2097151){if(r+3>=n)break;t[r++]=240|f>>18,t[r++]=128|f>>12&63,t[r++]=128|f>>6&63,t[r++]=128|f&63}else if(f<=67108863){if(r+4>=n)break;t[r++]=248|f>>24,t[r++]=128|f>>18&63,t[r++]=128|f>>12&63,t[r++]=128|f>>6&63,t[r++]=128|f&63}else{if(r+5>=n)break;t[r++]=252|f>>30,t[r++]=128|f>>24&63,t[r++]=128|f>>18&63,t[r++]=128|f>>12&63,t[r++]=128|f>>6&63,t[r++]=128|f&63}}return t[r]=0,r-a}Module.stringToUTF8Array=stringToUTF8Array;function stringToUTF8(e,t,r){return stringToUTF8Array(e,HEAPU8,t,r)}Module.stringToUTF8=stringToUTF8;function lengthBytesUTF8(e){for(var t=0,r=0;r<e.length;++r){var s=e.charCodeAt(r);s>=55296&&s<=57343&&(s=65536+((s&1023)<<10)|e.charCodeAt(++r)&1023),s<=127?++t:s<=2047?t+=2:s<=65535?t+=3:s<=2097151?t+=4:s<=67108863?t+=5:t+=6}return t}Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-16le\"):void 0;function demangle(e){var t=Module.___cxa_demangle||Module.__cxa_demangle;if(t){try{var r=e.substr(1),s=lengthBytesUTF8(r)+1,a=_malloc(s);stringToUTF8(r,a,s);var n=_malloc(4),c=t(a,0,0,n);if(getValue(n,\"i32\")===0&&c)return Pointer_stringify(c)}catch{}finally{a&&_free(a),n&&_free(n),c&&_free(c)}return e}return Runtime.warnOnce(\"warning: build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling\"),e}function demangleAll(e){var t=/__Z[\\w\\d_]+/g;return e.replace(t,function(r){var s=demangle(r);return r===s?r:r+\" [\"+s+\"]\"})}function jsStackTrace(){var e=new Error;if(!e.stack){try{throw new Error(0)}catch(t){e=t}if(!e.stack)return\"(no stack trace available)\"}return e.stack.toString()}function stackTrace(){var e=jsStackTrace();return Module.extraStackTrace&&(e+=`\n`+Module.extraStackTrace()),demangleAll(e)}Module.stackTrace=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;function abortOnCannotGrowMemory(){abort(\"Cannot enlarge memory arrays. Either (1) compile with  -s TOTAL_MEMORY=X  with X higher than the current value \"+TOTAL_MEMORY+\", (2) compile with  -s ALLOW_MEMORY_GROWTH=1  which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with  -s ABORTING_MALLOC=0 \")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;TOTAL_MEMORY<TOTAL_STACK&&Module.printErr(\"TOTAL_MEMORY should be larger than TOTAL_STACK, was \"+TOTAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\"),Module.buffer?buffer=Module.buffer:buffer=new ArrayBuffer(TOTAL_MEMORY),updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}if(HEAP32[0]=1668509029,HEAP16[1]=25459,HEAPU8[2]!==115||HEAPU8[3]!==99)throw\"Runtime error: expected the system to be little-endian!\";Module.HEAP=HEAP,Module.buffer=buffer,Module.HEAP8=HEAP8,Module.HEAP16=HEAP16,Module.HEAP32=HEAP32,Module.HEAPU8=HEAPU8,Module.HEAPU16=HEAPU16,Module.HEAPU32=HEAPU32,Module.HEAPF32=HEAPF32,Module.HEAPF64=HEAPF64;function callRuntimeCallbacks(e){for(;e.length>0;){var t=e.shift();if(typeof t==\"function\"){t();continue}var r=t.func;typeof r==\"number\"?t.arg===void 0?Module.dynCall_v(r):Module.dynCall_vi(r,t.arg):r(t.arg===void 0?null:t.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun==\"function\"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun==\"function\"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(e){__ATPRERUN__.unshift(e)}Module.addOnPreRun=addOnPreRun;function addOnInit(e){__ATINIT__.unshift(e)}Module.addOnInit=addOnInit;function addOnPreMain(e){__ATMAIN__.unshift(e)}Module.addOnPreMain=addOnPreMain;function addOnExit(e){__ATEXIT__.unshift(e)}Module.addOnExit=addOnExit;function addOnPostRun(e){__ATPOSTRUN__.unshift(e)}Module.addOnPostRun=addOnPostRun;function intArrayFromString(e,t,r){var s=r>0?r:lengthBytesUTF8(e)+1,a=new Array(s),n=stringToUTF8Array(e,a,0,a.length);return t&&(a.length=n),a}Module.intArrayFromString=intArrayFromString;function intArrayToString(e){for(var t=[],r=0;r<e.length;r++){var s=e[r];s>255&&(s&=255),t.push(String.fromCharCode(s))}return t.join(\"\")}Module.intArrayToString=intArrayToString;function writeStringToMemory(e,t,r){Runtime.warnOnce(\"writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!\");var s,a;r&&(a=t+lengthBytesUTF8(e),s=HEAP8[a]),stringToUTF8(e,t,1/0),r&&(HEAP8[a]=s)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(e,t){HEAP8.set(e,t)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(e,t,r){for(var s=0;s<e.length;++s)HEAP8[t++>>0]=e.charCodeAt(s);r||(HEAP8[t>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function e(t,r){var s=t>>>16,a=t&65535,n=r>>>16,c=r&65535;return a*c+(s*c+a*n<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(e){return froundBuffer[0]=e,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(e){e=e>>>0;for(var t=0;t<32;t++)if(e&1<<31-t)return t;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(e){return e<0?Math.ceil(e):Math.floor(e)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(e){return e}function addRunDependency(e){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}Module.addRunDependency=addRunDependency;function removeRunDependency(e){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var t=dependenciesFulfilled;dependenciesFulfilled=null,t()}}Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(e,t,r,s,a,n,c,f){return _nbind.callbackSignatureList[e].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(e,t,r,s,a,n,c,f){return ASM_CONSTS[e](t,r,s,a,n,c,f)}function _emscripten_asm_const_iiiii(e,t,r,s,a){return ASM_CONSTS[e](t,r,s,a)}function _emscripten_asm_const_iiidddddd(e,t,r,s,a,n,c,f,p){return ASM_CONSTS[e](t,r,s,a,n,c,f,p)}function _emscripten_asm_const_iiididi(e,t,r,s,a,n,c){return ASM_CONSTS[e](t,r,s,a,n,c)}function _emscripten_asm_const_iiii(e,t,r,s){return ASM_CONSTS[e](t,r,s)}function _emscripten_asm_const_iiiid(e,t,r,s,a){return ASM_CONSTS[e](t,r,s,a)}function _emscripten_asm_const_iiiiii(e,t,r,s,a,n){return ASM_CONSTS[e](t,r,s,a,n)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;function _atexit(e,t){__ATEXIT__.unshift({func:e,arg:t})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr(\"missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj\"),abort(-1)}function __decorate(e,t,r,s){var a=arguments.length,n=a<3?t:s===null?s=Object.getOwnPropertyDescriptor(t,r):s,c;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")n=Reflect.decorate(e,t,r,s);else for(var f=e.length-1;f>=0;f--)(c=e[f])&&(n=(a<3?c(n):a>3?c(t,r,n):c(t,r))||n);return a>3&&n&&Object.defineProperty(t,r,n),n}function _defineHidden(e){return function(t,r){Object.defineProperty(t,r,{configurable:!1,enumerable:!1,value:e,writable:!0})}}var _nbind={};function __nbind_free_external(e){_nbind.externalList[e].dereference(e)}function __nbind_reference_external(e){_nbind.externalList[e].reference()}function _llvm_stackrestore(e){var t=_llvm_stacksave,r=t.LLVM_SAVEDSTACKS[e];t.LLVM_SAVEDSTACKS.splice(e,1),Runtime.stackRestore(r)}function __nbind_register_pool(e,t,r,s){_nbind.Pool.pageSize=e,_nbind.Pool.usedPtr=t/4,_nbind.Pool.rootPtr=r,_nbind.Pool.pagePtr=s/4,HEAP32[t/4]=16909060,HEAP8[t]==1&&(_nbind.bigEndian=!0),HEAP32[t/4]=0,_nbind.makeTypeKindTbl=(n={},n[1024]=_nbind.PrimitiveType,n[64]=_nbind.Int64Type,n[2048]=_nbind.BindClass,n[3072]=_nbind.BindClassPtr,n[4096]=_nbind.SharedClassPtr,n[5120]=_nbind.ArrayType,n[6144]=_nbind.ArrayType,n[7168]=_nbind.CStringType,n[9216]=_nbind.CallbackType,n[10240]=_nbind.BindType,n),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,\"cbFunction &\":_nbind.CallbackType,\"const cbFunction &\":_nbind.CallbackType,\"const std::string &\":_nbind.StringType,\"std::string\":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var a=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:\"\"});a.proto=Module,_nbind.BindClass.list.push(a);var n}function _emscripten_set_main_loop_timing(e,t){if(Browser.mainLoop.timingMode=e,Browser.mainLoop.timingValue=t,!Browser.mainLoop.func)return 1;if(e==0)Browser.mainLoop.scheduler=function(){var c=Math.max(0,Browser.mainLoop.tickStartTime+t-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,c)},Browser.mainLoop.method=\"timeout\";else if(e==1)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method=\"rAF\";else if(e==2){if(!window.setImmediate){let n=function(c){c.source===window&&c.data===s&&(c.stopPropagation(),r.shift()())};var a=n,r=[],s=\"setimmediate\";window.addEventListener(\"message\",n,!0),window.setImmediate=function(f){r.push(f),ENVIRONMENT_IS_WORKER?(Module.setImmediates===void 0&&(Module.setImmediates=[]),Module.setImmediates.push(f),window.postMessage({target:s})):window.postMessage(s,\"*\")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method=\"immediate\"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(e,t,r,s,a){Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,\"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.\"),Browser.mainLoop.func=e,Browser.mainLoop.arg=s;var n;typeof s<\"u\"?n=function(){Module.dynCall_vi(e,s)}:n=function(){Module.dynCall_v(e)};var c=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT){if(Browser.mainLoop.queue.length>0){var p=Date.now(),h=Browser.mainLoop.queue.shift();if(h.func(h.arg),Browser.mainLoop.remainingBlockers){var E=Browser.mainLoop.remainingBlockers,C=E%1==0?E-1:Math.floor(E);h.counted?Browser.mainLoop.remainingBlockers=C:(C=C+.5,Browser.mainLoop.remainingBlockers=(8*E+C)/9)}if(console.log('main loop blocker \"'+h.name+'\" took '+(Date.now()-p)+\" ms\"),Browser.mainLoop.updateStatus(),c<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(!(c<Browser.mainLoop.currentlyRunningMainloop)){if(Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0,Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else Browser.mainLoop.timingMode==0&&(Browser.mainLoop.tickStartTime=_emscripten_get_now());Browser.mainLoop.method===\"timeout\"&&Module.ctx&&(Module.printErr(\"Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!\"),Browser.mainLoop.method=\"\"),Browser.mainLoop.runIter(n),!(c<Browser.mainLoop.currentlyRunningMainloop)&&(typeof SDL==\"object\"&&SDL.audio&&SDL.audio.queueNewAudioData&&SDL.audio.queueNewAudioData(),Browser.mainLoop.scheduler())}}},a||(t&&t>0?_emscripten_set_main_loop_timing(0,1e3/t):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),r)throw\"SimulateInfiniteLoop\"}var Browser={mainLoop:{scheduler:null,method:\"\",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var e=Browser.mainLoop.timingMode,t=Browser.mainLoop.timingValue,r=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(r,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(e,t),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var e=Module.statusMessage||\"Please wait...\",t=Browser.mainLoop.remainingBlockers,r=Browser.mainLoop.expectedBlockers;t?t<r?Module.setStatus(e+\" (\"+(r-t)+\"/\"+r+\")\"):Module.setStatus(e):Module.setStatus(\"\")}},runIter:function(e){if(!ABORT){if(Module.preMainLoop){var t=Module.preMainLoop();if(t===!1)return}try{e()}catch(r){if(r instanceof ExitStatus)return;throw r&&typeof r==\"object\"&&r.stack&&Module.printErr(\"exception thrown: \"+[r,r.stack]),r}Module.postMainLoop&&Module.postMainLoop()}}},isFullscreen:!1,pointerLock:!1,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(Module.preloadPlugins||(Module.preloadPlugins=[]),Browser.initted)return;Browser.initted=!0;try{new Blob,Browser.hasBlobConstructor=!0}catch{Browser.hasBlobConstructor=!1,console.log(\"warning: no blob constructor, cannot create blobs with mimetypes\")}Browser.BlobBuilder=typeof MozBlobBuilder<\"u\"?MozBlobBuilder:typeof WebKitBlobBuilder<\"u\"?WebKitBlobBuilder:Browser.hasBlobConstructor?null:console.log(\"warning: no BlobBuilder\"),Browser.URLObject=typeof window<\"u\"?window.URL?window.URL:window.webkitURL:void 0,!Module.noImageDecoding&&typeof Browser.URLObject>\"u\"&&(console.log(\"warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.\"),Module.noImageDecoding=!0);var e={};e.canHandle=function(n){return!Module.noImageDecoding&&/\\.(jpg|jpeg|png|bmp)$/i.test(n)},e.handle=function(n,c,f,p){var h=null;if(Browser.hasBlobConstructor)try{h=new Blob([n],{type:Browser.getMimetype(c)}),h.size!==n.length&&(h=new Blob([new Uint8Array(n).buffer],{type:Browser.getMimetype(c)}))}catch(x){Runtime.warnOnce(\"Blob constructor present but fails: \"+x+\"; falling back to blob builder\")}if(!h){var E=new Browser.BlobBuilder;E.append(new Uint8Array(n).buffer),h=E.getBlob()}var C=Browser.URLObject.createObjectURL(h),S=new Image;S.onload=function(){assert(S.complete,\"Image \"+c+\" could not be decoded\");var I=document.createElement(\"canvas\");I.width=S.width,I.height=S.height;var T=I.getContext(\"2d\");T.drawImage(S,0,0),Module.preloadedImages[c]=I,Browser.URLObject.revokeObjectURL(C),f&&f(n)},S.onerror=function(I){console.log(\"Image \"+C+\" could not be decoded\"),p&&p()},S.src=C},Module.preloadPlugins.push(e);var t={};t.canHandle=function(n){return!Module.noAudioDecoding&&n.substr(-4)in{\".ogg\":1,\".wav\":1,\".mp3\":1}},t.handle=function(n,c,f,p){var h=!1;function E(T){h||(h=!0,Module.preloadedAudios[c]=T,f&&f(n))}function C(){h||(h=!0,Module.preloadedAudios[c]=new Audio,p&&p())}if(Browser.hasBlobConstructor){try{var S=new Blob([n],{type:Browser.getMimetype(c)})}catch{return C()}var x=Browser.URLObject.createObjectURL(S),I=new Audio;I.addEventListener(\"canplaythrough\",function(){E(I)},!1),I.onerror=function(O){if(h)return;console.log(\"warning: browser could not fully decode audio \"+c+\", trying slower base64 approach\");function U(Y){for(var te=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",ie=\"=\",ue=\"\",ae=0,de=0,Ae=0;Ae<Y.length;Ae++)for(ae=ae<<8|Y[Ae],de+=8;de>=6;){var Ce=ae>>de-6&63;de-=6,ue+=te[Ce]}return de==2?(ue+=te[(ae&3)<<4],ue+=ie+ie):de==4&&(ue+=te[(ae&15)<<2],ue+=ie),ue}I.src=\"data:audio/x-\"+c.substr(-3)+\";base64,\"+U(n),E(I)},I.src=x,Browser.safeSetTimeout(function(){E(I)},1e4)}else return C()},Module.preloadPlugins.push(t);function r(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}var s=Module.canvas;s&&(s.requestPointerLock=s.requestPointerLock||s.mozRequestPointerLock||s.webkitRequestPointerLock||s.msRequestPointerLock||function(){},s.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},s.exitPointerLock=s.exitPointerLock.bind(document),document.addEventListener(\"pointerlockchange\",r,!1),document.addEventListener(\"mozpointerlockchange\",r,!1),document.addEventListener(\"webkitpointerlockchange\",r,!1),document.addEventListener(\"mspointerlockchange\",r,!1),Module.elementPointerLock&&s.addEventListener(\"click\",function(a){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),a.preventDefault())},!1))},createContext:function(e,t,r,s){if(t&&Module.ctx&&e==Module.canvas)return Module.ctx;var a,n;if(t){var c={antialias:!1,alpha:!1};if(s)for(var f in s)c[f]=s[f];n=GL.createContext(e,c),n&&(a=GL.getContext(n).GLctx)}else a=e.getContext(\"2d\");return a?(r&&(t||assert(typeof GLctx>\"u\",\"cannot set in module if GLctx is used, but we are a non-GL context that would replace it\"),Module.ctx=a,t&&GL.makeContextCurrent(n),Module.useWebGL=t,Browser.moduleContextCreatedCallbacks.forEach(function(p){p()}),Browser.init()),a):null},destroyContext:function(e,t,r){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(e,t,r){Browser.lockPointer=e,Browser.resizeCanvas=t,Browser.vrDevice=r,typeof Browser.lockPointer>\"u\"&&(Browser.lockPointer=!0),typeof Browser.resizeCanvas>\"u\"&&(Browser.resizeCanvas=!1),typeof Browser.vrDevice>\"u\"&&(Browser.vrDevice=null);var s=Module.canvas;function a(){Browser.isFullscreen=!1;var c=s.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===c?(s.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},s.exitFullscreen=s.exitFullscreen.bind(document),Browser.lockPointer&&s.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(c.parentNode.insertBefore(s,c),c.parentNode.removeChild(c),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(s)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener(\"fullscreenchange\",a,!1),document.addEventListener(\"mozfullscreenchange\",a,!1),document.addEventListener(\"webkitfullscreenchange\",a,!1),document.addEventListener(\"MSFullscreenChange\",a,!1));var n=document.createElement(\"div\");s.parentNode.insertBefore(n,s),n.appendChild(s),n.requestFullscreen=n.requestFullscreen||n.mozRequestFullScreen||n.msRequestFullscreen||(n.webkitRequestFullscreen?function(){n.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(n.webkitRequestFullScreen?function(){n.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),r?n.requestFullscreen({vrDisplay:r}):n.requestFullscreen()},requestFullScreen:function(e,t,r){return Module.printErr(\"Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead.\"),Browser.requestFullScreen=function(s,a,n){return Browser.requestFullscreen(s,a,n)},Browser.requestFullscreen(e,t,r)},nextRAF:0,fakeRequestAnimationFrame:function(e){var t=Date.now();if(Browser.nextRAF===0)Browser.nextRAF=t+1e3/60;else for(;t+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var r=Math.max(Browser.nextRAF-t,0);setTimeout(e,r)},requestAnimationFrame:function e(t){typeof window>\"u\"?Browser.fakeRequestAnimationFrame(t):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(t))},safeCallback:function(e){return function(){if(!ABORT)return e.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var e=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],e.forEach(function(t){t()})}},safeRequestAnimationFrame:function(e){return Browser.requestAnimationFrame(function(){ABORT||(Browser.allowAsyncCallbacks?e():Browser.queuedAsyncCallbacks.push(e))})},safeSetTimeout:function(e,t){return Module.noExitRuntime=!0,setTimeout(function(){ABORT||(Browser.allowAsyncCallbacks?e():Browser.queuedAsyncCallbacks.push(e))},t)},safeSetInterval:function(e,t){return Module.noExitRuntime=!0,setInterval(function(){ABORT||Browser.allowAsyncCallbacks&&e()},t)},getMimetype:function(e){return{jpg:\"image/jpeg\",jpeg:\"image/jpeg\",png:\"image/png\",bmp:\"image/bmp\",ogg:\"audio/ogg\",wav:\"audio/wav\",mp3:\"audio/mpeg\"}[e.substr(e.lastIndexOf(\".\")+1)]},getUserMedia:function(e){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(e)},getMovementX:function(e){return e.movementX||e.mozMovementX||e.webkitMovementX||0},getMovementY:function(e){return e.movementY||e.mozMovementY||e.webkitMovementY||0},getMouseWheelDelta:function(e){var t=0;switch(e.type){case\"DOMMouseScroll\":t=e.detail;break;case\"mousewheel\":t=e.wheelDelta;break;case\"wheel\":t=e.deltaY;break;default:throw\"unrecognized mouse wheel event: \"+e.type}return t},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(e){if(Browser.pointerLock)e.type!=\"mousemove\"&&\"mozMovementX\"in e?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(e),Browser.mouseMovementY=Browser.getMovementY(e)),typeof SDL<\"u\"?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var t=Module.canvas.getBoundingClientRect(),r=Module.canvas.width,s=Module.canvas.height,a=typeof window.scrollX<\"u\"?window.scrollX:window.pageXOffset,n=typeof window.scrollY<\"u\"?window.scrollY:window.pageYOffset;if(e.type===\"touchstart\"||e.type===\"touchend\"||e.type===\"touchmove\"){var c=e.touch;if(c===void 0)return;var f=c.pageX-(a+t.left),p=c.pageY-(n+t.top);f=f*(r/t.width),p=p*(s/t.height);var h={x:f,y:p};if(e.type===\"touchstart\")Browser.lastTouches[c.identifier]=h,Browser.touches[c.identifier]=h;else if(e.type===\"touchend\"||e.type===\"touchmove\"){var E=Browser.touches[c.identifier];E||(E=h),Browser.lastTouches[c.identifier]=E,Browser.touches[c.identifier]=h}return}var C=e.pageX-(a+t.left),S=e.pageY-(n+t.top);C=C*(r/t.width),S=S*(s/t.height),Browser.mouseMovementX=C-Browser.mouseX,Browser.mouseMovementY=S-Browser.mouseY,Browser.mouseX=C,Browser.mouseY=S}},asyncLoad:function(e,t,r,s){var a=s?\"\":\"al \"+e;Module.readAsync(e,function(n){assert(n,'Loading data file \"'+e+'\" failed (no arrayBuffer).'),t(new Uint8Array(n)),a&&removeRunDependency(a)},function(n){if(r)r();else throw'Loading data file \"'+e+'\" failed.'}),a&&addRunDependency(a)},resizeListeners:[],updateResizeListeners:function(){var e=Module.canvas;Browser.resizeListeners.forEach(function(t){t(e.width,e.height)})},setCanvasSize:function(e,t,r){var s=Module.canvas;Browser.updateCanvasDimensions(s,e,t),r||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL<\"u\"){var e=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];e=e|8388608,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=e}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL<\"u\"){var e=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];e=e&-8388609,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=e}Browser.updateResizeListeners()},updateCanvasDimensions:function(e,t,r){t&&r?(e.widthNative=t,e.heightNative=r):(t=e.widthNative,r=e.heightNative);var s=t,a=r;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(s/a<Module.forcedAspectRatio?s=Math.round(a*Module.forcedAspectRatio):a=Math.round(s/Module.forcedAspectRatio)),(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===e.parentNode&&typeof screen<\"u\"){var n=Math.min(screen.width/s,screen.height/a);s=Math.round(s*n),a=Math.round(a*n)}Browser.resizeCanvas?(e.width!=s&&(e.width=s),e.height!=a&&(e.height=a),typeof e.style<\"u\"&&(e.style.removeProperty(\"width\"),e.style.removeProperty(\"height\"))):(e.width!=t&&(e.width=t),e.height!=r&&(e.height=r),typeof e.style<\"u\"&&(s!=t||a!=r?(e.style.setProperty(\"width\",s+\"px\",\"important\"),e.style.setProperty(\"height\",a+\"px\",\"important\")):(e.style.removeProperty(\"width\"),e.style.removeProperty(\"height\"))))},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var e=Browser.nextWgetRequestHandle;return Browser.nextWgetRequestHandle++,e}},SYSCALLS={varargs:0,get:function(e){SYSCALLS.varargs+=4;var t=HEAP32[SYSCALLS.varargs-4>>2];return t},getStr:function(){var e=Pointer_stringify(SYSCALLS.get());return e},get64:function(){var e=SYSCALLS.get(),t=SYSCALLS.get();return e>=0?assert(t===0):assert(t===-1),e},getZero:function(){assert(SYSCALLS.get()===0)}};function ___syscall6(e,t){SYSCALLS.varargs=t;try{var r=SYSCALLS.getStreamFromFD();return FS.close(r),0}catch(s){return(typeof FS>\"u\"||!(s instanceof FS.ErrnoError))&&abort(s),-s.errno}}function ___syscall54(e,t){SYSCALLS.varargs=t;try{return 0}catch(r){return(typeof FS>\"u\"||!(r instanceof FS.ErrnoError))&&abort(r),-r.errno}}function _typeModule(e){var t=[[0,1,\"X\"],[1,1,\"const X\"],[128,1,\"X *\"],[256,1,\"X &\"],[384,1,\"X &&\"],[512,1,\"std::shared_ptr<X>\"],[640,1,\"std::unique_ptr<X>\"],[5120,1,\"std::vector<X>\"],[6144,2,\"std::array<X, Y>\"],[9216,-1,\"std::function<X (Y)>\"]];function r(p,h,E,C,S,x){if(h==1){var I=C&896;(I==128||I==256||I==384)&&(p=\"X const\")}var T;return x?T=E.replace(\"X\",p).replace(\"Y\",S):T=p.replace(\"X\",E).replace(\"Y\",S),T.replace(/([*&]) (?=[*&])/g,\"$1\")}function s(p,h,E,C,S){throw new Error(p+\" type \"+E.replace(\"X\",h+\"?\")+(C?\" with flag \"+C:\"\")+\" in \"+S)}function a(p,h,E,C,S,x,I,T){x===void 0&&(x=\"X\"),T===void 0&&(T=1);var O=E(p);if(O)return O;var U=C(p),Y=U.placeholderFlag,te=t[Y];I&&te&&(x=r(I[2],I[0],x,te[0],\"?\",!0));var ie;Y==0&&(ie=\"Unbound\"),Y>=10&&(ie=\"Corrupt\"),T>20&&(ie=\"Deeply nested\"),ie&&s(ie,p,x,Y,S||\"?\");var ue=U.paramList[0],ae=a(ue,h,E,C,S,x,te,T+1),de,Ae={flags:te[0],id:p,name:\"\",paramList:[ae]},Ce=[],Ee=\"?\";switch(U.placeholderFlag){case 1:de=ae.spec;break;case 2:if((ae.flags&15360)==1024&&ae.spec.ptrSize==1){Ae.flags=7168;break}case 3:case 6:case 5:de=ae.spec,ae.flags&15360;break;case 8:Ee=\"\"+U.paramList[1],Ae.paramList.push(U.paramList[1]);break;case 9:for(var g=0,Se=U.paramList[1];g<Se.length;g++){var Be=Se[g],me=a(Be,h,E,C,S,x,te,T+1);Ce.push(me.name),Ae.paramList.push(me)}Ee=Ce.join(\", \");break;default:break}if(Ae.name=r(te[2],te[0],ae.name,ae.flags,Ee),de){for(var ce=0,X=Object.keys(de);ce<X.length;ce++){var De=X[ce];Ae[De]=Ae[De]||de[De]}Ae.flags|=de.flags}return n(h,Ae)}function n(p,h){var E=h.flags,C=E&896,S=E&15360;return!h.name&&S==1024&&(h.ptrSize==1?h.name=(E&16?\"\":(E&8?\"un\":\"\")+\"signed \")+\"char\":h.name=(E&8?\"u\":\"\")+(E&32?\"float\":\"int\")+(h.ptrSize*8+\"_t\")),h.ptrSize==8&&!(E&32)&&(S=64),S==2048&&(C==512||C==640?S=4096:C&&(S=3072)),p(S,h)}var c=function(){function p(h){this.id=h.id,this.name=h.name,this.flags=h.flags,this.spec=h}return p.prototype.toString=function(){return this.name},p}(),f={Type:c,getComplexType:a,makeType:n,structureList:t};return e.output=f,e.output||f}function __nbind_register_type(e,t){var r=_nbind.readAsciiString(t),s={flags:10240,id:e,name:r};_nbind.makeType(_nbind.constructType,s)}function __nbind_register_callback_signature(e,t){var r=_nbind.readTypeIdList(e,t),s=_nbind.callbackSignatureList.length;return _nbind.callbackSignatureList[s]=_nbind.makeJSCaller(r),s}function __extends(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function s(){this.constructor=e}s.prototype=t.prototype,e.prototype=new s}function __nbind_register_class(e,t,r,s,a,n,c){var f=_nbind.readAsciiString(c),p=_nbind.readPolicyList(t),h=HEAPU32.subarray(e/4,e/4+2),E={flags:2048|(p.Value?2:0),id:h[0],name:f},C=_nbind.makeType(_nbind.constructType,E);C.ptrType=_nbind.getComplexType(h[1],_nbind.constructType,_nbind.getType,_nbind.queryType),C.destroy=_nbind.makeMethodCaller(C.ptrType,{boundID:E.id,flags:0,name:\"destroy\",num:0,ptr:n,title:C.name+\".free\",typeList:[\"void\",\"uint32_t\",\"uint32_t\"]}),a&&(C.superIdList=Array.prototype.slice.call(HEAPU32.subarray(r/4,r/4+a)),C.upcastList=Array.prototype.slice.call(HEAPU32.subarray(s/4,s/4+a))),Module[C.name]=C.makeBound(p),_nbind.BindClass.list.push(C)}function _removeAccessorPrefix(e){var t=/^[Gg]et_?([A-Z]?([A-Z]?))/;return e.replace(t,function(r,s,a){return a?s:s.toLowerCase()})}function __nbind_register_function(e,t,r,s,a,n,c,f,p,h){var E=_nbind.getType(e),C=_nbind.readPolicyList(t),S=_nbind.readTypeIdList(r,s),x;if(c==5)x=[{direct:a,name:\"__nbindConstructor\",ptr:0,title:E.name+\" constructor\",typeList:[\"uint32_t\"].concat(S.slice(1))},{direct:n,name:\"__nbindValueConstructor\",ptr:0,title:E.name+\" value constructor\",typeList:[\"void\",\"uint32_t\"].concat(S.slice(1))}];else{var I=_nbind.readAsciiString(f),T=(E.name&&E.name+\".\")+I;(c==3||c==4)&&(I=_removeAccessorPrefix(I)),x=[{boundID:e,direct:n,name:I,ptr:a,title:T,typeList:S}]}for(var O=0,U=x;O<U.length;O++){var Y=U[O];Y.signatureType=c,Y.policyTbl=C,Y.num=p,Y.flags=h,E.addMethod(Y)}}function _nbind_value(e,t){_nbind.typeNameTbl[e]||_nbind.throwError(\"Unknown value type \"+e),Module.NBind.bind_value(e,t),_defineHidden(_nbind.typeNameTbl[e].proto.prototype.__nbindValueConstructor)(t.prototype,\"__nbindValueConstructor\")}Module._nbind_value=_nbind_value;function __nbind_get_value_object(e,t){var r=_nbind.popValue(e);if(!r.fromJS)throw new Error(\"Object \"+r+\" has no fromJS function\");r.fromJS(function(){r.__nbindValueConstructor.apply(this,Array.prototype.concat.apply([t],arguments))})}function _emscripten_memcpy_big(e,t,r){return HEAPU8.set(HEAPU8.subarray(t,t+r),e),e}function __nbind_register_primitive(e,t,r){var s={flags:1024|r,id:e,ptrSize:t};_nbind.makeType(_nbind.constructType,s)}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],\"i8\",ALLOC_STATIC);function ___setErrNo(e){return Module.___errno_location&&(HEAP32[Module.___errno_location()>>2]=e),e}function _llvm_stacksave(){var e=_llvm_stacksave;return e.LLVM_SAVEDSTACKS||(e.LLVM_SAVEDSTACKS=[]),e.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),e.LLVM_SAVEDSTACKS.length-1}function ___syscall140(e,t){SYSCALLS.varargs=t;try{var r=SYSCALLS.getStreamFromFD(),s=SYSCALLS.get(),a=SYSCALLS.get(),n=SYSCALLS.get(),c=SYSCALLS.get(),f=a;return FS.llseek(r,f,c),HEAP32[n>>2]=r.position,r.getdents&&f===0&&c===0&&(r.getdents=null),0}catch(p){return(typeof FS>\"u\"||!(p instanceof FS.ErrnoError))&&abort(p),-p.errno}}function ___syscall146(e,t){SYSCALLS.varargs=t;try{var r=SYSCALLS.get(),s=SYSCALLS.get(),a=SYSCALLS.get(),n=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(E,C){var S=___syscall146.buffers[E];assert(S),C===0||C===10?((E===1?Module.print:Module.printErr)(UTF8ArrayToString(S,0)),S.length=0):S.push(C)});for(var c=0;c<a;c++){for(var f=HEAP32[s+c*8>>2],p=HEAP32[s+(c*8+4)>>2],h=0;h<p;h++)___syscall146.printChar(r,HEAPU8[f+h]);n+=p}return n}catch(E){return(typeof FS>\"u\"||!(E instanceof FS.ErrnoError))&&abort(E),-E.errno}}function __nbind_finish(){for(var e=0,t=_nbind.BindClass.list;e<t.length;e++){var r=t[e];r.finish()}}var ___dso_handle=STATICTOP;STATICTOP+=16,function(_nbind){var typeIdTbl={};_nbind.typeNameTbl={};var Pool=function(){function e(){}return e.lalloc=function(t){t=t+7&-8;var r=HEAPU32[e.usedPtr];if(t>e.pageSize/2||t>e.pageSize-r){var s=_nbind.typeNameTbl.NBind.proto;return s.lalloc(t)}else return HEAPU32[e.usedPtr]=r+t,e.rootPtr+r},e.lreset=function(t,r){var s=HEAPU32[e.pagePtr];if(s){var a=_nbind.typeNameTbl.NBind.proto;a.lreset(t,r)}else HEAPU32[e.usedPtr]=t},e}();_nbind.Pool=Pool;function constructType(e,t){var r=e==10240?_nbind.makeTypeNameTbl[t.name]||_nbind.BindType:_nbind.makeTypeKindTbl[e],s=new r(t);return typeIdTbl[t.id]=s,_nbind.typeNameTbl[t.name]=s,s}_nbind.constructType=constructType;function getType(e){return typeIdTbl[e]}_nbind.getType=getType;function queryType(e){var t=HEAPU8[e],r=_nbind.structureList[t][1];e/=4,r<0&&(++e,r=HEAPU32[e]+1);var s=Array.prototype.slice.call(HEAPU32.subarray(e+1,e+1+r));return t==9&&(s=[s[0],s.slice(1)]),{paramList:s,placeholderFlag:t}}_nbind.queryType=queryType;function getTypes(e,t){return e.map(function(r){return typeof r==\"number\"?_nbind.getComplexType(r,constructType,getType,queryType,t):_nbind.typeNameTbl[r]})}_nbind.getTypes=getTypes;function readTypeIdList(e,t){return Array.prototype.slice.call(HEAPU32,e/4,e/4+t)}_nbind.readTypeIdList=readTypeIdList;function readAsciiString(e){for(var t=e;HEAPU8[t++];);return String.fromCharCode.apply(\"\",HEAPU8.subarray(e,t-1))}_nbind.readAsciiString=readAsciiString;function readPolicyList(e){var t={};if(e)for(;;){var r=HEAPU32[e/4];if(!r)break;t[readAsciiString(r)]=!0,e+=4}return t}_nbind.readPolicyList=readPolicyList;function getDynCall(e,t){var r={float32_t:\"d\",float64_t:\"d\",int64_t:\"d\",uint64_t:\"d\",void:\"v\"},s=e.map(function(n){return r[n.name]||\"i\"}).join(\"\"),a=Module[\"dynCall_\"+s];if(!a)throw new Error(\"dynCall_\"+s+\" not found for \"+t+\"(\"+e.map(function(n){return n.name}).join(\", \")+\")\");return a}_nbind.getDynCall=getDynCall;function addMethod(e,t,r,s){var a=e[t];e.hasOwnProperty(t)&&a?((a.arity||a.arity===0)&&(a=_nbind.makeOverloader(a,a.arity),e[t]=a),a.addMethod(r,s)):(r.arity=s,e[t]=r)}_nbind.addMethod=addMethod;function throwError(e){throw new Error(e)}_nbind.throwError=throwError,_nbind.bigEndian=!1,_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(e){__extends(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.heap=HEAPU32,r.ptrSize=4,r}return t.prototype.needsWireRead=function(r){return!!this.wireRead||!!this.makeWireRead},t.prototype.needsWireWrite=function(r){return!!this.wireWrite||!!this.makeWireWrite},t}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(e){__extends(t,e);function t(r){var s=e.call(this,r)||this,a=r.flags&32?{32:HEAPF32,64:HEAPF64}:r.flags&8?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return s.heap=a[r.ptrSize*8],s.ptrSize=r.ptrSize,s}return t.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},t.prototype.makeWireWrite=function(r,s){return s&&s.Strict&&function(a){if(typeof a==\"number\")return a;throw new Error(\"Type mismatch\")}},t}(BindType);_nbind.PrimitiveType=PrimitiveType;function pushCString(e,t){if(e==null){if(t&&t.Nullable)return 0;throw new Error(\"Type mismatch\")}if(t&&t.Strict){if(typeof e!=\"string\")throw new Error(\"Type mismatch\")}else e=e.toString();var r=Module.lengthBytesUTF8(e)+1,s=_nbind.Pool.lalloc(r);return Module.stringToUTF8Array(e,HEAPU8,s,r),s}_nbind.pushCString=pushCString;function popCString(e){return e===0?null:Module.Pointer_stringify(e)}_nbind.popCString=popCString;var CStringType=function(e){__extends(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.wireRead=popCString,r.wireWrite=pushCString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return t.prototype.makeWireWrite=function(r,s){return function(a){return pushCString(a,s)}},t}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(e){__extends(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.wireRead=function(s){return!!s},r}return t.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},t.prototype.makeWireRead=function(r){return\"!!(\"+r+\")\"},t.prototype.makeWireWrite=function(r,s){return s&&s.Strict&&function(a){if(typeof a==\"boolean\")return a;throw new Error(\"Type mismatch\")}||r},t}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function e(){}return e.prototype.persist=function(){this.__nbindState|=1},e}();_nbind.Wrapper=Wrapper;function makeBound(e,t){var r=function(s){__extends(a,s);function a(n,c,f,p){var h=s.call(this)||this;if(!(h instanceof a))return new(Function.prototype.bind.apply(a,Array.prototype.concat.apply([null],arguments)));var E=c,C=f,S=p;if(n!==_nbind.ptrMarker){var x=h.__nbindConstructor.apply(h,arguments);E=4608,S=HEAPU32[x/4],C=HEAPU32[x/4+1]}var I={configurable:!0,enumerable:!1,value:null,writable:!1},T={__nbindFlags:E,__nbindPtr:C};S&&(T.__nbindShared=S,_nbind.mark(h));for(var O=0,U=Object.keys(T);O<U.length;O++){var Y=U[O];I.value=T[Y],Object.defineProperty(h,Y,I)}return _defineHidden(0)(h,\"__nbindState\"),h}return a.prototype.free=function(){t.destroy.call(this,this.__nbindShared,this.__nbindFlags),this.__nbindState|=2,disableMember(this,\"__nbindShared\"),disableMember(this,\"__nbindPtr\")},a}(Wrapper);return __decorate([_defineHidden()],r.prototype,\"__nbindConstructor\",void 0),__decorate([_defineHidden()],r.prototype,\"__nbindValueConstructor\",void 0),__decorate([_defineHidden(e)],r.prototype,\"__nbindPolicies\",void 0),r}_nbind.makeBound=makeBound;function disableMember(e,t){function r(){throw new Error(\"Accessing deleted object\")}Object.defineProperty(e,t,{configurable:!1,enumerable:!1,get:r,set:r})}_nbind.ptrMarker={};var BindClass=function(e){__extends(t,e);function t(r){var s=e.call(this,r)||this;return s.wireRead=function(a){return _nbind.popValue(a,s.ptrType)},s.wireWrite=function(a){return pushPointer(a,s.ptrType,!0)},s.pendingSuperCount=0,s.ready=!1,s.methodTbl={},r.paramList?(s.classType=r.paramList[0].classType,s.proto=s.classType.proto):s.classType=s,s}return t.prototype.makeBound=function(r){var s=_nbind.makeBound(r,this);return this.proto=s,this.ptrType.proto=s,s},t.prototype.addMethod=function(r){var s=this.methodTbl[r.name]||[];s.push(r),this.methodTbl[r.name]=s},t.prototype.registerMethods=function(r,s){for(var a,n=0,c=Object.keys(r.methodTbl);n<c.length;n++)for(var f=c[n],p=r.methodTbl[f],h=0,E=p;h<E.length;h++){var C=E[h],S=void 0,x=void 0;if(S=this.proto.prototype,!(s&&C.signatureType!=1))switch(C.signatureType){case 1:S=this.proto;case 5:x=_nbind.makeCaller(C),_nbind.addMethod(S,C.name,x,C.typeList.length-1);break;case 4:a=_nbind.makeMethodCaller(r.ptrType,C);break;case 3:Object.defineProperty(S,C.name,{configurable:!0,enumerable:!1,get:_nbind.makeMethodCaller(r.ptrType,C),set:a});break;case 2:x=_nbind.makeMethodCaller(r.ptrType,C),_nbind.addMethod(S,C.name,x,C.typeList.length-1);break;default:break}}},t.prototype.registerSuperMethods=function(r,s,a){if(!a[r.name]){a[r.name]=!0;for(var n=0,c,f=0,p=r.superIdList||[];f<p.length;f++){var h=p[f],E=_nbind.getType(h);n++<s||s<0?c=-1:c=0,this.registerSuperMethods(E,c,a)}this.registerMethods(r,s<0)}},t.prototype.finish=function(){if(this.ready)return this;this.ready=!0,this.superList=(this.superIdList||[]).map(function(a){return _nbind.getType(a).finish()});var r=this.proto;if(this.superList.length){var s=function(){this.constructor=r};s.prototype=this.superList[0].proto.prototype,r.prototype=new s}return r!=Module&&(r.prototype.__nbindType=this),this.registerSuperMethods(this,1,{}),this},t.prototype.upcastStep=function(r,s){if(r==this)return s;for(var a=0;a<this.superList.length;++a){var n=this.superList[a].upcastStep(r,_nbind.callUpcast(this.upcastList[a],s));if(n)return n}return 0},t}(_nbind.BindType);BindClass.list=[],_nbind.BindClass=BindClass;function popPointer(e,t){return e?new t.proto(_nbind.ptrMarker,t.flags,e):null}_nbind.popPointer=popPointer;function pushPointer(e,t,r){if(!(e instanceof _nbind.Wrapper)){if(r)return _nbind.pushValue(e);throw new Error(\"Type mismatch\")}var s=e.__nbindPtr,a=e.__nbindType.classType,n=t.classType;if(e instanceof t.proto)for(;a!=n;)s=_nbind.callUpcast(a.upcastList[0],s),a=a.superList[0];else if(s=a.upcastStep(n,s),!s)throw new Error(\"Type mismatch\");return s}_nbind.pushPointer=pushPointer;function pushMutablePointer(e,t){var r=pushPointer(e,t);if(e.__nbindFlags&1)throw new Error(\"Passing a const value as a non-const argument\");return r}var BindClassPtr=function(e){__extends(t,e);function t(r){var s=e.call(this,r)||this;s.classType=r.paramList[0].classType,s.proto=s.classType.proto;var a=r.flags&1,n=(s.flags&896)==256&&r.flags&2,c=a?pushPointer:pushMutablePointer,f=n?_nbind.popValue:popPointer;return s.makeWireWrite=function(p,h){return h.Nullable?function(E){return E?c(E,s):0}:function(E){return c(E,s)}},s.wireRead=function(p){return f(p,s)},s.wireWrite=function(p){return c(p,s)},s}return t}(_nbind.BindType);_nbind.BindClassPtr=BindClassPtr;function popShared(e,t){var r=HEAPU32[e/4],s=HEAPU32[e/4+1];return s?new t.proto(_nbind.ptrMarker,t.flags,s,r):null}_nbind.popShared=popShared;function pushShared(e,t){if(!(e instanceof t.proto))throw new Error(\"Type mismatch\");return e.__nbindShared}function pushMutableShared(e,t){if(!(e instanceof t.proto))throw new Error(\"Type mismatch\");if(e.__nbindFlags&1)throw new Error(\"Passing a const value as a non-const argument\");return e.__nbindShared}var SharedClassPtr=function(e){__extends(t,e);function t(r){var s=e.call(this,r)||this;s.readResources=[_nbind.resources.pool],s.classType=r.paramList[0].classType,s.proto=s.classType.proto;var a=r.flags&1,n=a?pushShared:pushMutableShared;return s.wireRead=function(c){return popShared(c,s)},s.wireWrite=function(c){return n(c,s)},s}return t}(_nbind.BindType);_nbind.SharedClassPtr=SharedClassPtr,_nbind.externalList=[0];var firstFreeExternal=0,External=function(){function e(t){this.refCount=1,this.data=t}return e.prototype.register=function(){var t=firstFreeExternal;return t?firstFreeExternal=_nbind.externalList[t]:t=_nbind.externalList.length,_nbind.externalList[t]=this,t},e.prototype.reference=function(){++this.refCount},e.prototype.dereference=function(t){--this.refCount==0&&(this.free&&this.free(),_nbind.externalList[t]=firstFreeExternal,firstFreeExternal=t)},e}();_nbind.External=External;function popExternal(e){var t=_nbind.externalList[e];return t.dereference(e),t.data}function pushExternal(e){var t=new External(e);return t.reference(),t.register()}var ExternalType=function(e){__extends(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.wireRead=popExternal,r.wireWrite=pushExternal,r}return t}(_nbind.BindType);_nbind.ExternalType=ExternalType,_nbind.callbackSignatureList=[];var CallbackType=function(e){__extends(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.wireWrite=function(s){return typeof s!=\"function\"&&_nbind.throwError(\"Type mismatch\"),new _nbind.External(s).register()},r}return t}(_nbind.BindType);_nbind.CallbackType=CallbackType,_nbind.valueList=[0];var firstFreeValue=0;function pushValue(e){var t=firstFreeValue;return t?firstFreeValue=_nbind.valueList[t]:t=_nbind.valueList.length,_nbind.valueList[t]=e,t*2+1}_nbind.pushValue=pushValue;function popValue(e,t){if(e||_nbind.throwError(\"Value type JavaScript class is missing or not registered\"),e&1){e>>=1;var r=_nbind.valueList[e];return _nbind.valueList[e]=firstFreeValue,firstFreeValue=e,r}else{if(t)return _nbind.popShared(e,t);throw new Error(\"Invalid value slot \"+e)}}_nbind.popValue=popValue;var valueBase=18446744073709552e3;function push64(e){return typeof e==\"number\"?e:pushValue(e)*4096+valueBase}function pop64(e){return e<valueBase?e:popValue((e-valueBase)/4096)}var CreateValueType=function(e){__extends(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.makeWireWrite=function(r){return\"(_nbind.pushValue(new \"+r+\"))\"},t}(_nbind.BindType);_nbind.CreateValueType=CreateValueType;var Int64Type=function(e){__extends(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.wireWrite=push64,r.wireRead=pop64,r}return t}(_nbind.BindType);_nbind.Int64Type=Int64Type;function pushArray(e,t){if(!e)return 0;var r=e.length;if((t.size||t.size===0)&&r<t.size)throw new Error(\"Type mismatch\");var s=t.memberType.ptrSize,a=_nbind.Pool.lalloc(4+r*s);HEAPU32[a/4]=r;var n=t.memberType.heap,c=(a+4)/s,f=t.memberType.wireWrite,p=0;if(f)for(;p<r;)n[c++]=f(e[p++]);else for(;p<r;)n[c++]=e[p++];return a}_nbind.pushArray=pushArray;function popArray(e,t){if(e===0)return null;var r=HEAPU32[e/4],s=new Array(r),a=t.memberType.heap;e=(e+4)/t.memberType.ptrSize;var n=t.memberType.wireRead,c=0;if(n)for(;c<r;)s[c++]=n(a[e++]);else for(;c<r;)s[c++]=a[e++];return s}_nbind.popArray=popArray;var ArrayType=function(e){__extends(t,e);function t(r){var s=e.call(this,r)||this;return s.wireRead=function(a){return popArray(a,s)},s.wireWrite=function(a){return pushArray(a,s)},s.readResources=[_nbind.resources.pool],s.writeResources=[_nbind.resources.pool],s.memberType=r.paramList[0],r.paramList[1]&&(s.size=r.paramList[1]),s}return t}(_nbind.BindType);_nbind.ArrayType=ArrayType;function pushString(e,t){if(e==null)if(t&&t.Nullable)e=\"\";else throw new Error(\"Type mismatch\");if(t&&t.Strict){if(typeof e!=\"string\")throw new Error(\"Type mismatch\")}else e=e.toString();var r=Module.lengthBytesUTF8(e),s=_nbind.Pool.lalloc(4+r+1);return HEAPU32[s/4]=r,Module.stringToUTF8Array(e,HEAPU8,s+4,r+1),s}_nbind.pushString=pushString;function popString(e){if(e===0)return null;var t=HEAPU32[e/4];return Module.Pointer_stringify(e+4,t)}_nbind.popString=popString;var StringType=function(e){__extends(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.wireRead=popString,r.wireWrite=pushString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return t.prototype.makeWireWrite=function(r,s){return function(a){return pushString(a,s)}},t}(_nbind.BindType);_nbind.StringType=StringType;function makeArgList(e){return Array.apply(null,Array(e)).map(function(t,r){return\"a\"+(r+1)})}function anyNeedsWireWrite(e,t){return e.reduce(function(r,s){return r||s.needsWireWrite(t)},!1)}function anyNeedsWireRead(e,t){return e.reduce(function(r,s){return r||!!s.needsWireRead(t)},!1)}function makeWireRead(e,t,r,s){var a=e.length;return r.makeWireRead?r.makeWireRead(s,e,a):r.wireRead?(e[a]=r.wireRead,\"(convertParamList[\"+a+\"](\"+s+\"))\"):s}function makeWireWrite(e,t,r,s){var a,n=e.length;return r.makeWireWrite?a=r.makeWireWrite(s,t,e,n):a=r.wireWrite,a?typeof a==\"string\"?a:(e[n]=a,\"(convertParamList[\"+n+\"](\"+s+\"))\"):s}function buildCallerFunction(dynCall,ptrType,ptr,num,policyTbl,needsWireWrite,prefix,returnType,argTypeList,mask,err){var argList=makeArgList(argTypeList.length),convertParamList=[],callExpression=makeWireRead(convertParamList,policyTbl,returnType,\"dynCall(\"+[prefix].concat(argList.map(function(e,t){return makeWireWrite(convertParamList,policyTbl,argTypeList[t],e)})).join(\",\")+\")\"),resourceSet=_nbind.listResources([returnType],argTypeList),sourceCode=\"function(\"+argList.join(\",\")+\"){\"+(mask?\"this.__nbindFlags&mask&&err();\":\"\")+resourceSet.makeOpen()+\"var r=\"+callExpression+\";\"+resourceSet.makeClose()+\"return r;}\";return eval(\"(\"+sourceCode+\")\")}function buildJSCallerFunction(returnType,argTypeList){var argList=makeArgList(argTypeList.length),convertParamList=[],callExpression=makeWireWrite(convertParamList,null,returnType,\"_nbind.externalList[num].data(\"+argList.map(function(e,t){return makeWireRead(convertParamList,null,argTypeList[t],e)}).join(\",\")+\")\"),resourceSet=_nbind.listResources(argTypeList,[returnType]);resourceSet.remove(_nbind.resources.pool);var sourceCode=\"function(\"+[\"dummy\",\"num\"].concat(argList).join(\",\")+\"){\"+resourceSet.makeOpen()+\"var r=\"+callExpression+\";\"+resourceSet.makeClose()+\"return r;}\";return eval(\"(\"+sourceCode+\")\")}_nbind.buildJSCallerFunction=buildJSCallerFunction;function makeJSCaller(e){var t=e.length-1,r=_nbind.getTypes(e,\"callback\"),s=r[0],a=r.slice(1),n=anyNeedsWireRead(a,null),c=s.needsWireWrite(null);if(!c&&!n)switch(t){case 0:return function(f,p){return _nbind.externalList[p].data()};case 1:return function(f,p,h){return _nbind.externalList[p].data(h)};case 2:return function(f,p,h,E){return _nbind.externalList[p].data(h,E)};case 3:return function(f,p,h,E,C){return _nbind.externalList[p].data(h,E,C)};default:break}return buildJSCallerFunction(s,a)}_nbind.makeJSCaller=makeJSCaller;function makeMethodCaller(e,t){var r=t.typeList.length-1,s=t.typeList.slice(0);s.splice(1,0,\"uint32_t\",t.boundID);var a=_nbind.getTypes(s,t.title),n=a[0],c=a.slice(3),f=n.needsWireRead(t.policyTbl),p=anyNeedsWireWrite(c,t.policyTbl),h=t.ptr,E=t.num,C=_nbind.getDynCall(a,t.title),S=~t.flags&1;function x(){throw new Error(\"Calling a non-const method on a const object\")}if(!f&&!p)switch(r){case 0:return function(){return this.__nbindFlags&S?x():C(h,E,_nbind.pushPointer(this,e))};case 1:return function(I){return this.__nbindFlags&S?x():C(h,E,_nbind.pushPointer(this,e),I)};case 2:return function(I,T){return this.__nbindFlags&S?x():C(h,E,_nbind.pushPointer(this,e),I,T)};case 3:return function(I,T,O){return this.__nbindFlags&S?x():C(h,E,_nbind.pushPointer(this,e),I,T,O)};default:break}return buildCallerFunction(C,e,h,E,t.policyTbl,p,\"ptr,num,pushPointer(this,ptrType)\",n,c,S,x)}_nbind.makeMethodCaller=makeMethodCaller;function makeCaller(e){var t=e.typeList.length-1,r=_nbind.getTypes(e.typeList,e.title),s=r[0],a=r.slice(1),n=s.needsWireRead(e.policyTbl),c=anyNeedsWireWrite(a,e.policyTbl),f=e.direct,p=e.ptr;if(e.direct&&!n&&!c){var h=_nbind.getDynCall(r,e.title);switch(t){case 0:return function(){return h(f)};case 1:return function(x){return h(f,x)};case 2:return function(x,I){return h(f,x,I)};case 3:return function(x,I,T){return h(f,x,I,T)};default:break}p=0}var E;if(p){var C=e.typeList.slice(0);C.splice(1,0,\"uint32_t\"),r=_nbind.getTypes(C,e.title),E=\"ptr,num\"}else p=f,E=\"ptr\";var S=_nbind.getDynCall(r,e.title);return buildCallerFunction(S,null,p,e.num,e.policyTbl,c,E,s,a)}_nbind.makeCaller=makeCaller;function makeOverloader(e,t){var r=[];function s(){return r[arguments.length].apply(this,arguments)}return s.addMethod=function(a,n){r[n]=a},s.addMethod(e,t),s}_nbind.makeOverloader=makeOverloader;var Resource=function(){function e(t,r){var s=this;this.makeOpen=function(){return Object.keys(s.openTbl).join(\"\")},this.makeClose=function(){return Object.keys(s.closeTbl).join(\"\")},this.openTbl={},this.closeTbl={},t&&(this.openTbl[t]=!0),r&&(this.closeTbl[r]=!0)}return e.prototype.add=function(t){for(var r=0,s=Object.keys(t.openTbl);r<s.length;r++){var a=s[r];this.openTbl[a]=!0}for(var n=0,c=Object.keys(t.closeTbl);n<c.length;n++){var a=c[n];this.closeTbl[a]=!0}},e.prototype.remove=function(t){for(var r=0,s=Object.keys(t.openTbl);r<s.length;r++){var a=s[r];delete this.openTbl[a]}for(var n=0,c=Object.keys(t.closeTbl);n<c.length;n++){var a=c[n];delete this.closeTbl[a]}},e}();_nbind.Resource=Resource;function listResources(e,t){for(var r=new Resource,s=0,a=e;s<a.length;s++)for(var n=a[s],c=0,f=n.readResources||[];c<f.length;c++){var p=f[c];r.add(p)}for(var h=0,E=t;h<E.length;h++)for(var n=E[h],C=0,S=n.writeResources||[];C<S.length;C++){var p=S[C];r.add(p)}return r}_nbind.listResources=listResources,_nbind.resources={pool:new Resource(\"var used=HEAPU32[_nbind.Pool.usedPtr],page=HEAPU32[_nbind.Pool.pagePtr];\",\"_nbind.Pool.lreset(used,page);\")};var ExternalBuffer=function(e){__extends(t,e);function t(r,s){var a=e.call(this,r)||this;return a.ptr=s,a}return t.prototype.free=function(){_free(this.ptr)},t}(_nbind.External);function getBuffer(e){return e instanceof ArrayBuffer?new Uint8Array(e):e instanceof DataView?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):e}function pushBuffer(e,t){if(e==null&&t&&t.Nullable&&(e=[]),typeof e!=\"object\")throw new Error(\"Type mismatch\");var r=e,s=r.byteLength||r.length;if(!s&&s!==0&&r.byteLength!==0)throw new Error(\"Type mismatch\");var a=_nbind.Pool.lalloc(8),n=_malloc(s),c=a/4;return HEAPU32[c++]=s,HEAPU32[c++]=n,HEAPU32[c++]=new ExternalBuffer(e,n).register(),HEAPU8.set(getBuffer(e),n),a}var BufferType=function(e){__extends(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.wireWrite=pushBuffer,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return t.prototype.makeWireWrite=function(r,s){return function(a){return pushBuffer(a,s)}},t}(_nbind.BindType);_nbind.BufferType=BufferType;function commitBuffer(e,t,r){var s=_nbind.externalList[e].data,a=Buffer;if(typeof Buffer!=\"function\"&&(a=function(){}),!(s instanceof Array)){var n=HEAPU8.subarray(t,t+r);if(s instanceof a){var c=void 0;typeof Buffer.from==\"function\"&&Buffer.from.length>=3?c=Buffer.from(n):c=new Buffer(n),c.copy(s)}else getBuffer(s).set(n)}}_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var e=0,t=dirtyList;e<t.length;e++){var r=t[e];r.__nbindState&3||r.free()}dirtyList=[],gcTimer=0}_nbind.mark=function(e){};function toggleLightGC(e){e?_nbind.mark=function(t){dirtyList.push(t),gcTimer||(gcTimer=setTimeout(sweep,0))}:_nbind.mark=function(t){}}_nbind.toggleLightGC=toggleLightGC}(_nbind),Module.requestFullScreen=function e(t,r,s){Module.printErr(\"Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead.\"),Module.requestFullScreen=Module.requestFullscreen,Browser.requestFullScreen(t,r,s)},Module.requestFullscreen=function e(t,r,s){Browser.requestFullscreen(t,r,s)},Module.requestAnimationFrame=function e(t){Browser.requestAnimationFrame(t)},Module.setCanvasSize=function e(t,r,s){Browser.setCanvasSize(t,r,s)},Module.pauseMainLoop=function e(){Browser.mainLoop.pause()},Module.resumeMainLoop=function e(){Browser.mainLoop.resume()},Module.getUserMedia=function e(){Browser.getUserMedia()},Module.createContext=function e(t,r,s,a){return Browser.createContext(t,r,s,a)},ENVIRONMENT_IS_NODE?_emscripten_get_now=function(){var t=process.hrtime();return t[0]*1e3+t[1]/1e6}:typeof dateNow<\"u\"?_emscripten_get_now=dateNow:typeof self==\"object\"&&self.performance&&typeof self.performance.now==\"function\"?_emscripten_get_now=function(){return self.performance.now()}:typeof performance==\"object\"&&typeof performance.now==\"function\"?_emscripten_get_now=function(){return performance.now()}:_emscripten_get_now=Date.now,__ATEXIT__.push(function(){var e=Module._fflush;e&&e(0);var t=___syscall146.printChar;if(t){var r=___syscall146.buffers;r[1].length&&t(1,10),r[2].length&&t(2,10)}}),DYNAMICTOP_PTR=allocate(1,\"i32\",ALLOC_STATIC),STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP),STACK_MAX=STACK_BASE+TOTAL_STACK,DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX),HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE,staticSealed=!0;function invoke_viiiii(e,t,r,s,a,n){try{Module.dynCall_viiiii(e,t,r,s,a,n)}catch(c){if(typeof c!=\"number\"&&c!==\"longjmp\")throw c;Module.setThrew(1,0)}}function invoke_vif(e,t,r){try{Module.dynCall_vif(e,t,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_vid(e,t,r){try{Module.dynCall_vid(e,t,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_fiff(e,t,r,s){try{return Module.dynCall_fiff(e,t,r,s)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_vi(e,t){try{Module.dynCall_vi(e,t)}catch(r){if(typeof r!=\"number\"&&r!==\"longjmp\")throw r;Module.setThrew(1,0)}}function invoke_vii(e,t,r){try{Module.dynCall_vii(e,t,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_ii(e,t){try{return Module.dynCall_ii(e,t)}catch(r){if(typeof r!=\"number\"&&r!==\"longjmp\")throw r;Module.setThrew(1,0)}}function invoke_viddi(e,t,r,s,a){try{Module.dynCall_viddi(e,t,r,s,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}function invoke_vidd(e,t,r,s){try{Module.dynCall_vidd(e,t,r,s)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_iiii(e,t,r,s){try{return Module.dynCall_iiii(e,t,r,s)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_diii(e,t,r,s){try{return Module.dynCall_diii(e,t,r,s)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_di(e,t){try{return Module.dynCall_di(e,t)}catch(r){if(typeof r!=\"number\"&&r!==\"longjmp\")throw r;Module.setThrew(1,0)}}function invoke_iid(e,t,r){try{return Module.dynCall_iid(e,t,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_iii(e,t,r){try{return Module.dynCall_iii(e,t,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_viiddi(e,t,r,s,a,n){try{Module.dynCall_viiddi(e,t,r,s,a,n)}catch(c){if(typeof c!=\"number\"&&c!==\"longjmp\")throw c;Module.setThrew(1,0)}}function invoke_viiiiii(e,t,r,s,a,n,c){try{Module.dynCall_viiiiii(e,t,r,s,a,n,c)}catch(f){if(typeof f!=\"number\"&&f!==\"longjmp\")throw f;Module.setThrew(1,0)}}function invoke_dii(e,t,r){try{return Module.dynCall_dii(e,t,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_i(e){try{return Module.dynCall_i(e)}catch(t){if(typeof t!=\"number\"&&t!==\"longjmp\")throw t;Module.setThrew(1,0)}}function invoke_iiiiii(e,t,r,s,a,n){try{return Module.dynCall_iiiiii(e,t,r,s,a,n)}catch(c){if(typeof c!=\"number\"&&c!==\"longjmp\")throw c;Module.setThrew(1,0)}}function invoke_viiid(e,t,r,s,a){try{Module.dynCall_viiid(e,t,r,s,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}function invoke_viififi(e,t,r,s,a,n,c){try{Module.dynCall_viififi(e,t,r,s,a,n,c)}catch(f){if(typeof f!=\"number\"&&f!==\"longjmp\")throw f;Module.setThrew(1,0)}}function invoke_viii(e,t,r,s){try{Module.dynCall_viii(e,t,r,s)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_v(e){try{Module.dynCall_v(e)}catch(t){if(typeof t!=\"number\"&&t!==\"longjmp\")throw t;Module.setThrew(1,0)}}function invoke_viid(e,t,r,s){try{Module.dynCall_viid(e,t,r,s)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_idd(e,t,r){try{return Module.dynCall_idd(e,t,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_viiii(e,t,r,s,a){try{Module.dynCall_viiii(e,t,r,s,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}Module.asmGlobalArg={Math,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Float32Array,Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort,assert,enlargeMemory,getTotalMemory,abortOnCannotGrowMemory,invoke_viiiii,invoke_vif,invoke_vid,invoke_fiff,invoke_vi,invoke_vii,invoke_ii,invoke_viddi,invoke_vidd,invoke_iiii,invoke_diii,invoke_di,invoke_iid,invoke_iii,invoke_viiddi,invoke_viiiiii,invoke_dii,invoke_i,invoke_iiiiii,invoke_viiid,invoke_viififi,invoke_viii,invoke_v,invoke_viid,invoke_idd,invoke_viiii,_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid,__nbind_reference_external,_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix,_typeModule,__nbind_register_pool,__decorate,_llvm_stackrestore,___cxa_atexit,__extends,__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing,__nbind_register_primitive,__nbind_register_type,_emscripten_memcpy_big,__nbind_register_function,___setErrNo,__nbind_register_class,__nbind_finish,_abort,_nbind_value,_llvm_stacksave,___syscall54,_defineHidden,_emscripten_set_main_loop,_emscripten_get_now,__nbind_register_callback_signature,_emscripten_asm_const_iiiiii,__nbind_free_external,_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi,___syscall6,_atexit,___syscall140,___syscall146,DYNAMICTOP_PTR,tempDoublePtr,ABORT,STACKTOP,STACK_MAX,cttz_i8,___dso_handle};var asm=function(e,t,r){var s=new e.Int8Array(r),a=new e.Int16Array(r),n=new e.Int32Array(r),c=new e.Uint8Array(r),f=new e.Uint16Array(r),p=new e.Uint32Array(r),h=new e.Float32Array(r),E=new e.Float64Array(r),C=t.DYNAMICTOP_PTR|0,S=t.tempDoublePtr|0,x=t.ABORT|0,I=t.STACKTOP|0,T=t.STACK_MAX|0,O=t.cttz_i8|0,U=t.___dso_handle|0,Y=0,te=0,ie=0,ue=0,ae=e.NaN,de=e.Infinity,Ae=0,Ce=0,Ee=0,g=0,Se=0,Be=0,me=e.Math.floor,ce=e.Math.abs,X=e.Math.sqrt,De=e.Math.pow,Qe=e.Math.cos,it=e.Math.sin,_=e.Math.tan,tt=e.Math.acos,Ne=e.Math.asin,ke=e.Math.atan,be=e.Math.atan2,je=e.Math.exp,Re=e.Math.log,ct=e.Math.ceil,Me=e.Math.imul,P=e.Math.min,w=e.Math.max,b=e.Math.clz32,y=e.Math.fround,F=t.abort,z=t.assert,Z=t.enlargeMemory,$=t.getTotalMemory,se=t.abortOnCannotGrowMemory,xe=t.invoke_viiiii,Fe=t.invoke_vif,ut=t.invoke_vid,Ct=t.invoke_fiff,qt=t.invoke_vi,ir=t.invoke_vii,Pt=t.invoke_ii,dn=t.invoke_viddi,Pr=t.invoke_vidd,Ir=t.invoke_iiii,Or=t.invoke_diii,on=t.invoke_di,li=t.invoke_iid,So=t.invoke_iii,ns=t.invoke_viiddi,so=t.invoke_viiiiii,Do=t.invoke_dii,ji=t.invoke_i,oo=t.invoke_iiiiii,bo=t.invoke_viiid,RA=t.invoke_viififi,hf=t.invoke_viii,hh=t.invoke_v,gh=t.invoke_viid,ao=t.invoke_idd,Gn=t.invoke_viiii,Ns=t._emscripten_asm_const_iiiii,lo=t._emscripten_asm_const_iiidddddd,iu=t._emscripten_asm_const_iiiid,su=t.__nbind_reference_external,ou=t._emscripten_asm_const_iiiiiiii,TA=t._removeAccessorPrefix,FA=t._typeModule,ua=t.__nbind_register_pool,fa=t.__decorate,NA=t._llvm_stackrestore,gr=t.___cxa_atexit,Po=t.__extends,Ue=t.__nbind_get_value_object,au=t.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,Cr=t._emscripten_set_main_loop_timing,gf=t.__nbind_register_primitive,OA=t.__nbind_register_type,LA=t._emscripten_memcpy_big,lu=t.__nbind_register_function,cu=t.___setErrNo,ac=t.__nbind_register_class,we=t.__nbind_finish,Nt=t._abort,lc=t._nbind_value,Oi=t._llvm_stacksave,co=t.___syscall54,Tt=t._defineHidden,Qn=t._emscripten_set_main_loop,Aa=t._emscripten_get_now,Gi=t.__nbind_register_callback_signature,Li=t._emscripten_asm_const_iiiiii,ja=t.__nbind_free_external,mn=t._emscripten_asm_const_iiii,Zn=t._emscripten_asm_const_iiididi,uu=t.___syscall6,dh=t._atexit,Ga=t.___syscall140,qa=t.___syscall146,Wa=y(0);let $e=y(0);function Va(o){o=o|0;var l=0;return l=I,I=I+o|0,I=I+15&-16,l|0}function df(){return I|0}function cc(o){o=o|0,I=o}function vn(o,l){o=o|0,l=l|0,I=o,T=l}function pa(o,l){o=o|0,l=l|0,Y||(Y=o,te=l)}function MA(o){o=o|0,Be=o}function UA(){return Be|0}function ha(){var o=0,l=0;Qr(8104,8,400)|0,Qr(8504,408,540)|0,o=9044,l=o+44|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));s[9088]=0,s[9089]=1,n[2273]=0,n[2274]=948,n[2275]=948,gr(17,8104,U|0)|0}function xl(o){o=o|0,mt(o+948|0)}function Mt(o){return o=y(o),((fP(o)|0)&2147483647)>>>0>2139095040|0}function Rn(o,l,u){o=o|0,l=l|0,u=u|0;e:do if(n[o+(l<<3)+4>>2]|0)o=o+(l<<3)|0;else{if((l|2|0)==3&&n[o+60>>2]|0){o=o+56|0;break}switch(l|0){case 0:case 2:case 4:case 5:{if(n[o+52>>2]|0){o=o+48|0;break e}break}default:}if(n[o+68>>2]|0){o=o+64|0;break}else{o=(l|1|0)==5?948:u;break}}while(!1);return o|0}function ga(o){o=o|0;var l=0;return l=_P(1e3)|0,Ya(o,(l|0)!=0,2456),n[2276]=(n[2276]|0)+1,Qr(l|0,8104,1e3)|0,s[o+2>>0]|0&&(n[l+4>>2]=2,n[l+12>>2]=4),n[l+976>>2]=o,l|0}function Ya(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;d=I,I=I+16|0,A=d,l||(n[A>>2]=u,Gg(o,5,3197,A)),I=d}function is(){return ga(956)|0}function uc(o){o=o|0;var l=0;return l=Jt(1e3)|0,fu(l,o),Ya(n[o+976>>2]|0,1,2456),n[2276]=(n[2276]|0)+1,n[l+944>>2]=0,l|0}function fu(o,l){o=o|0,l=l|0;var u=0;Qr(o|0,l|0,948)|0,xy(o+948|0,l+948|0),u=o+960|0,o=l+960|0,l=u+40|0;do n[u>>2]=n[o>>2],u=u+4|0,o=o+4|0;while((u|0)<(l|0))}function fc(o){o=o|0;var l=0,u=0,A=0,d=0;if(l=o+944|0,u=n[l>>2]|0,u|0&&(Ka(u+948|0,o)|0,n[l>>2]=0),u=Mi(o)|0,u|0){l=0;do n[(Bs(o,l)|0)+944>>2]=0,l=l+1|0;while((l|0)!=(u|0))}u=o+948|0,A=n[u>>2]|0,d=o+952|0,l=n[d>>2]|0,(l|0)!=(A|0)&&(n[d>>2]=l+(~((l+-4-A|0)>>>2)<<2)),kl(u),HP(o),n[2276]=(n[2276]|0)+-1}function Ka(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0;A=n[o>>2]|0,k=o+4|0,u=n[k>>2]|0,m=u;e:do if((A|0)==(u|0))d=A,B=4;else for(o=A;;){if((n[o>>2]|0)==(l|0)){d=o,B=4;break e}if(o=o+4|0,(o|0)==(u|0)){o=0;break}}while(!1);return(B|0)==4&&((d|0)!=(u|0)?(A=d+4|0,o=m-A|0,l=o>>2,l&&(BB(d|0,A|0,o|0)|0,u=n[k>>2]|0),o=d+(l<<2)|0,(u|0)==(o|0)||(n[k>>2]=u+(~((u+-4-o|0)>>>2)<<2)),o=1):o=0),o|0}function Mi(o){return o=o|0,(n[o+952>>2]|0)-(n[o+948>>2]|0)>>2|0}function Bs(o,l){o=o|0,l=l|0;var u=0;return u=n[o+948>>2]|0,(n[o+952>>2]|0)-u>>2>>>0>l>>>0?o=n[u+(l<<2)>>2]|0:o=0,o|0}function kl(o){o=o|0;var l=0,u=0,A=0,d=0;A=I,I=I+32|0,l=A,d=n[o>>2]|0,u=(n[o+4>>2]|0)-d|0,((n[o+8>>2]|0)-d|0)>>>0>u>>>0&&(d=u>>2,Ty(l,d,d,o+8|0),AP(o,l),Fy(l)),I=A}function mf(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0;M=Mi(o)|0;do if(M|0){if((n[(Bs(o,0)|0)+944>>2]|0)==(o|0)){if(!(Ka(o+948|0,l)|0))break;Qr(l+400|0,8504,540)|0,n[l+944>>2]=0,Oe(o);break}B=n[(n[o+976>>2]|0)+12>>2]|0,k=o+948|0,R=(B|0)==0,u=0,m=0;do A=n[(n[k>>2]|0)+(m<<2)>>2]|0,(A|0)==(l|0)?Oe(o):(d=uc(A)|0,n[(n[k>>2]|0)+(u<<2)>>2]=d,n[d+944>>2]=o,R||eU[B&15](A,d,o,u),u=u+1|0),m=m+1|0;while((m|0)!=(M|0));if(u>>>0<M>>>0){R=o+948|0,k=o+952|0,B=u,u=n[k>>2]|0;do m=(n[R>>2]|0)+(B<<2)|0,A=m+4|0,d=u-A|0,l=d>>2,l&&(BB(m|0,A|0,d|0)|0,u=n[k>>2]|0),d=u,A=m+(l<<2)|0,(d|0)!=(A|0)&&(u=d+(~((d+-4-A|0)>>>2)<<2)|0,n[k>>2]=u),B=B+1|0;while((B|0)!=(M|0))}}while(!1)}function Ac(o){o=o|0;var l=0,u=0,A=0,d=0;Bi(o,(Mi(o)|0)==0,2491),Bi(o,(n[o+944>>2]|0)==0,2545),l=o+948|0,u=n[l>>2]|0,A=o+952|0,d=n[A>>2]|0,(d|0)!=(u|0)&&(n[A>>2]=d+(~((d+-4-u|0)>>>2)<<2)),kl(l),l=o+976|0,u=n[l>>2]|0,Qr(o|0,8104,1e3)|0,s[u+2>>0]|0&&(n[o+4>>2]=2,n[o+12>>2]=4),n[l>>2]=u}function Bi(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;d=I,I=I+16|0,A=d,l||(n[A>>2]=u,Fo(o,5,3197,A)),I=d}function Tn(){return n[2276]|0}function pc(){var o=0;return o=_P(20)|0,Je((o|0)!=0,2592),n[2277]=(n[2277]|0)+1,n[o>>2]=n[239],n[o+4>>2]=n[240],n[o+8>>2]=n[241],n[o+12>>2]=n[242],n[o+16>>2]=n[243],o|0}function Je(o,l){o=o|0,l=l|0;var u=0,A=0;A=I,I=I+16|0,u=A,o||(n[u>>2]=l,Fo(0,5,3197,u)),I=A}function ot(o){o=o|0,HP(o),n[2277]=(n[2277]|0)+-1}function St(o,l){o=o|0,l=l|0;var u=0;l?(Bi(o,(Mi(o)|0)==0,2629),u=1):(u=0,l=0),n[o+964>>2]=l,n[o+988>>2]=u}function lr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,m=A+8|0,d=A+4|0,B=A,n[d>>2]=l,Bi(o,(n[l+944>>2]|0)==0,2709),Bi(o,(n[o+964>>2]|0)==0,2763),ee(o),l=o+948|0,n[B>>2]=(n[l>>2]|0)+(u<<2),n[m>>2]=n[B>>2],ye(l,m,d)|0,n[(n[d>>2]|0)+944>>2]=o,Oe(o),I=A}function ee(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;if(u=Mi(o)|0,u|0&&(n[(Bs(o,0)|0)+944>>2]|0)!=(o|0)){A=n[(n[o+976>>2]|0)+12>>2]|0,d=o+948|0,m=(A|0)==0,l=0;do B=n[(n[d>>2]|0)+(l<<2)>>2]|0,k=uc(B)|0,n[(n[d>>2]|0)+(l<<2)>>2]=k,n[k+944>>2]=o,m||eU[A&15](B,k,o,l),l=l+1|0;while((l|0)!=(u|0))}}function ye(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0,Te=0,nt=0,Xe=0;nt=I,I=I+64|0,q=nt+52|0,k=nt+48|0,oe=nt+28|0,Ye=nt+24|0,Le=nt+20|0,Te=nt,A=n[o>>2]|0,m=A,l=A+((n[l>>2]|0)-m>>2<<2)|0,A=o+4|0,d=n[A>>2]|0,B=o+8|0;do if(d>>>0<(n[B>>2]|0)>>>0){if((l|0)==(d|0)){n[l>>2]=n[u>>2],n[A>>2]=(n[A>>2]|0)+4;break}pP(o,l,d,l+4|0),l>>>0<=u>>>0&&(u=(n[A>>2]|0)>>>0>u>>>0?u+4|0:u),n[l>>2]=n[u>>2]}else{A=(d-m>>2)+1|0,d=N(o)|0,d>>>0<A>>>0&&an(o),L=n[o>>2]|0,M=(n[B>>2]|0)-L|0,m=M>>1,Ty(Te,M>>2>>>0<d>>>1>>>0?m>>>0<A>>>0?A:m:d,l-L>>2,o+8|0),L=Te+8|0,A=n[L>>2]|0,m=Te+12|0,M=n[m>>2]|0,B=M,R=A;do if((A|0)==(M|0)){if(M=Te+4|0,A=n[M>>2]|0,Xe=n[Te>>2]|0,d=Xe,A>>>0<=Xe>>>0){A=B-d>>1,A=A|0?A:1,Ty(oe,A,A>>>2,n[Te+16>>2]|0),n[Ye>>2]=n[M>>2],n[Le>>2]=n[L>>2],n[k>>2]=n[Ye>>2],n[q>>2]=n[Le>>2],X1(oe,k,q),A=n[Te>>2]|0,n[Te>>2]=n[oe>>2],n[oe>>2]=A,A=oe+4|0,Xe=n[M>>2]|0,n[M>>2]=n[A>>2],n[A>>2]=Xe,A=oe+8|0,Xe=n[L>>2]|0,n[L>>2]=n[A>>2],n[A>>2]=Xe,A=oe+12|0,Xe=n[m>>2]|0,n[m>>2]=n[A>>2],n[A>>2]=Xe,Fy(oe),A=n[L>>2]|0;break}m=A,B=((m-d>>2)+1|0)/-2|0,k=A+(B<<2)|0,d=R-m|0,m=d>>2,m&&(BB(k|0,A|0,d|0)|0,A=n[M>>2]|0),Xe=k+(m<<2)|0,n[L>>2]=Xe,n[M>>2]=A+(B<<2),A=Xe}while(!1);n[A>>2]=n[u>>2],n[L>>2]=(n[L>>2]|0)+4,l=hP(o,Te,l)|0,Fy(Te)}while(!1);return I=nt,l|0}function Oe(o){o=o|0;var l=0;do{if(l=o+984|0,s[l>>0]|0)break;s[l>>0]=1,h[o+504>>2]=y(ae),o=n[o+944>>2]|0}while(o|0)}function mt(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function Et(o){return o=o|0,n[o+944>>2]|0}function bt(o){o=o|0,Bi(o,(n[o+964>>2]|0)!=0,2832),Oe(o)}function tr(o){return o=o|0,(s[o+984>>0]|0)!=0|0}function pn(o,l){o=o|0,l=l|0,K8e(o,l,400)|0&&(Qr(o|0,l|0,400)|0,Oe(o))}function ci(o){o=o|0;var l=$e;return l=y(h[o+44>>2]),o=Mt(l)|0,y(o?y(0):l)}function qi(o){o=o|0;var l=$e;return l=y(h[o+48>>2]),Mt(l)|0&&(l=s[(n[o+976>>2]|0)+2>>0]|0?y(1):y(0)),y(l)}function Fn(o,l){o=o|0,l=l|0,n[o+980>>2]=l}function Ja(o){return o=o|0,n[o+980>>2]|0}function Iy(o,l){o=o|0,l=l|0;var u=0;u=o+4|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function q1(o){return o=o|0,n[o+4>>2]|0}function xo(o,l){o=o|0,l=l|0;var u=0;u=o+8|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Cy(o){return o=o|0,n[o+8>>2]|0}function mh(o,l){o=o|0,l=l|0;var u=0;u=o+12|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function W1(o){return o=o|0,n[o+12>>2]|0}function ko(o,l){o=o|0,l=l|0;var u=0;u=o+16|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function yh(o){return o=o|0,n[o+16>>2]|0}function Eh(o,l){o=o|0,l=l|0;var u=0;u=o+20|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Au(o){return o=o|0,n[o+20>>2]|0}function Ih(o,l){o=o|0,l=l|0;var u=0;u=o+24|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Rg(o){return o=o|0,n[o+24>>2]|0}function Tg(o,l){o=o|0,l=l|0;var u=0;u=o+28|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Fg(o){return o=o|0,n[o+28>>2]|0}function wy(o,l){o=o|0,l=l|0;var u=0;u=o+32|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function yf(o){return o=o|0,n[o+32>>2]|0}function Qo(o,l){o=o|0,l=l|0;var u=0;u=o+36|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Ql(o){return o=o|0,n[o+36>>2]|0}function Ch(o,l){o=o|0,l=y(l);var u=0;u=o+40|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Ng(o,l){o=o|0,l=y(l);var u=0;u=o+44|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Rl(o,l){o=o|0,l=y(l);var u=0;u=o+48|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Tl(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+52|0,d=o+56|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function By(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+52|0,u=o+56|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function _A(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+52|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function vy(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+132+(l<<3)|0,l=o+132+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function Sy(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+132+(l<<3)|0,l=o+132+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function HA(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+132+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function jA(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+60+(l<<3)|0,l=o+60+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function W(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+60+(l<<3)|0,l=o+60+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function xt(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+60+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function GA(o,l){o=o|0,l=l|0;var u=0;u=o+60+(l<<3)+4|0,(n[u>>2]|0)!=3&&(h[o+60+(l<<3)>>2]=y(ae),n[u>>2]=3,Oe(o))}function Ro(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+204+(l<<3)|0,l=o+204+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function Ef(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+204+(l<<3)|0,l=o+204+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function yt(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+204+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function pu(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+276+(l<<3)|0,l=o+276+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function Dy(o,l){return o=o|0,l=l|0,y(h[o+276+(l<<3)>>2])}function Og(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+348|0,d=o+352|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function V1(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+348|0,u=o+352|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function wh(o){o=o|0;var l=0;l=o+352|0,(n[l>>2]|0)!=3&&(h[o+348>>2]=y(ae),n[l>>2]=3,Oe(o))}function ur(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+348|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function zi(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+356|0,d=o+360|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function If(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+356|0,u=o+360|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function za(o){o=o|0;var l=0;l=o+360|0,(n[l>>2]|0)!=3&&(h[o+356>>2]=y(ae),n[l>>2]=3,Oe(o))}function Lg(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+356|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function hu(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+364|0,d=o+368|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Cf(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+364|0,d=o+368|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function wt(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+364|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function mi(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+372|0,d=o+376|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function qA(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+372|0,d=o+376|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Za(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+372|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function da(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+380|0,d=o+384|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Xa(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+380|0,d=o+384|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Mg(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+380|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function Bh(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+388|0,d=o+392|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Ug(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+388|0,d=o+392|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function by(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+388|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function WA(o,l){o=o|0,l=y(l);var u=0;u=o+396|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function _g(o){return o=o|0,y(h[o+396>>2])}function gu(o){return o=o|0,y(h[o+400>>2])}function du(o){return o=o|0,y(h[o+404>>2])}function wf(o){return o=o|0,y(h[o+408>>2])}function Os(o){return o=o|0,y(h[o+412>>2])}function mu(o){return o=o|0,y(h[o+416>>2])}function qn(o){return o=o|0,y(h[o+420>>2])}function ss(o,l){switch(o=o|0,l=l|0,Bi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+424+(l<<2)>>2])}function Pi(o,l){switch(o=o|0,l=l|0,Bi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+448+(l<<2)>>2])}function VA(o,l){switch(o=o|0,l=l|0,Bi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+472+(l<<2)>>2])}function Bf(o,l){o=o|0,l=l|0;var u=0,A=$e;return u=n[o+4>>2]|0,(u|0)==(n[l+4>>2]|0)?u?(A=y(h[o>>2]),o=y(ce(y(A-y(h[l>>2]))))<y(999999974e-13)):o=1:o=0,o|0}function yn(o,l){o=y(o),l=y(l);var u=0;return Mt(o)|0?u=Mt(l)|0:u=y(ce(y(o-l)))<y(999999974e-13),u|0}function Hg(o,l){o=o|0,l=l|0,jg(o,l)}function jg(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u+4|0,n[A>>2]=0,n[A+4>>2]=0,n[A+8>>2]=0,au(A|0,o|0,l|0,0),Fo(o,3,(s[A+11>>0]|0)<0?n[A>>2]|0:A,u),mHe(A),I=u}function os(o,l,u,A){o=y(o),l=y(l),u=u|0,A=A|0;var d=$e;o=y(o*l),d=y(KM(o,y(1)));do if(yn(d,y(0))|0)o=y(o-d);else{if(o=y(o-d),yn(d,y(1))|0){o=y(o+y(1));break}if(u){o=y(o+y(1));break}A||(d>y(.5)?d=y(1):(A=yn(d,y(.5))|0,d=y(A?1:0)),o=y(o+d))}while(!1);return y(o/l)}function Fl(o,l,u,A,d,m,B,k,R,M,L,q,oe){o=o|0,l=y(l),u=u|0,A=y(A),d=d|0,m=y(m),B=B|0,k=y(k),R=y(R),M=y(M),L=y(L),q=y(q),oe=oe|0;var Ye=0,Le=$e,Te=$e,nt=$e,Xe=$e,ft=$e,He=$e;return R<y(0)|M<y(0)?oe=0:(oe|0&&(Le=y(h[oe+4>>2]),Le!=y(0))?(nt=y(os(l,Le,0,0)),Xe=y(os(A,Le,0,0)),Te=y(os(m,Le,0,0)),Le=y(os(k,Le,0,0))):(Te=m,nt=l,Le=k,Xe=A),(d|0)==(o|0)?Ye=yn(Te,nt)|0:Ye=0,(B|0)==(u|0)?oe=yn(Le,Xe)|0:oe=0,!Ye&&(ft=y(l-L),!(To(o,ft,R)|0))&&!(vf(o,ft,d,R)|0)?Ye=Sf(o,ft,d,m,R)|0:Ye=1,!oe&&(He=y(A-q),!(To(u,He,M)|0))&&!(vf(u,He,B,M)|0)?oe=Sf(u,He,B,k,M)|0:oe=1,oe=Ye&oe),oe|0}function To(o,l,u){return o=o|0,l=y(l),u=y(u),(o|0)==1?o=yn(l,u)|0:o=0,o|0}function vf(o,l,u,A){return o=o|0,l=y(l),u=u|0,A=y(A),(o|0)==2&(u|0)==0?l>=A?o=1:o=yn(l,A)|0:o=0,o|0}function Sf(o,l,u,A,d){return o=o|0,l=y(l),u=u|0,A=y(A),d=y(d),(o|0)==2&(u|0)==2&A>l?d<=l?o=1:o=yn(l,d)|0:o=0,o|0}function Nl(o,l,u,A,d,m,B,k,R,M,L){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=m|0,B=y(B),k=y(k),R=R|0,M=M|0,L=L|0;var q=0,oe=0,Ye=0,Le=0,Te=$e,nt=$e,Xe=0,ft=0,He=0,Ve=0,Lt=0,Gr=0,fr=0,$t=0,Rr=0,Hr=0,cr=0,jn=$e,Lo=$e,Mo=$e,Uo=0,il=0;cr=I,I=I+160|0,$t=cr+152|0,fr=cr+120|0,Gr=cr+104|0,He=cr+72|0,Le=cr+56|0,Lt=cr+8|0,ft=cr,Ve=(n[2279]|0)+1|0,n[2279]=Ve,Rr=o+984|0,s[Rr>>0]|0&&(n[o+512>>2]|0)!=(n[2278]|0)?Xe=4:(n[o+516>>2]|0)==(A|0)?Hr=0:Xe=4,(Xe|0)==4&&(n[o+520>>2]=0,n[o+924>>2]=-1,n[o+928>>2]=-1,h[o+932>>2]=y(-1),h[o+936>>2]=y(-1),Hr=1);e:do if(n[o+964>>2]|0)if(Te=y(En(o,2,B)),nt=y(En(o,0,B)),q=o+916|0,Mo=y(h[q>>2]),Lo=y(h[o+920>>2]),jn=y(h[o+932>>2]),Fl(d,l,m,u,n[o+924>>2]|0,Mo,n[o+928>>2]|0,Lo,jn,y(h[o+936>>2]),Te,nt,L)|0)Xe=22;else if(Ye=n[o+520>>2]|0,!Ye)Xe=21;else for(oe=0;;){if(q=o+524+(oe*24|0)|0,jn=y(h[q>>2]),Lo=y(h[o+524+(oe*24|0)+4>>2]),Mo=y(h[o+524+(oe*24|0)+16>>2]),Fl(d,l,m,u,n[o+524+(oe*24|0)+8>>2]|0,jn,n[o+524+(oe*24|0)+12>>2]|0,Lo,Mo,y(h[o+524+(oe*24|0)+20>>2]),Te,nt,L)|0){Xe=22;break e}if(oe=oe+1|0,oe>>>0>=Ye>>>0){Xe=21;break}}else{if(R){if(q=o+916|0,!(yn(y(h[q>>2]),l)|0)){Xe=21;break}if(!(yn(y(h[o+920>>2]),u)|0)){Xe=21;break}if((n[o+924>>2]|0)!=(d|0)){Xe=21;break}q=(n[o+928>>2]|0)==(m|0)?q:0,Xe=22;break}if(Ye=n[o+520>>2]|0,!Ye)Xe=21;else for(oe=0;;){if(q=o+524+(oe*24|0)|0,yn(y(h[q>>2]),l)|0&&yn(y(h[o+524+(oe*24|0)+4>>2]),u)|0&&(n[o+524+(oe*24|0)+8>>2]|0)==(d|0)&&(n[o+524+(oe*24|0)+12>>2]|0)==(m|0)){Xe=22;break e}if(oe=oe+1|0,oe>>>0>=Ye>>>0){Xe=21;break}}}while(!1);do if((Xe|0)==21)s[11697]|0?(q=0,Xe=28):(q=0,Xe=31);else if((Xe|0)==22){if(oe=(s[11697]|0)!=0,!((q|0)!=0&(Hr^1)))if(oe){Xe=28;break}else{Xe=31;break}Le=q+16|0,n[o+908>>2]=n[Le>>2],Ye=q+20|0,n[o+912>>2]=n[Ye>>2],(s[11698]|0)==0|oe^1||(n[ft>>2]=yu(Ve)|0,n[ft+4>>2]=Ve,Fo(o,4,2972,ft),oe=n[o+972>>2]|0,oe|0&&sp[oe&127](o),d=ma(d,R)|0,m=ma(m,R)|0,il=+y(h[Le>>2]),Uo=+y(h[Ye>>2]),n[Lt>>2]=d,n[Lt+4>>2]=m,E[Lt+8>>3]=+l,E[Lt+16>>3]=+u,E[Lt+24>>3]=il,E[Lt+32>>3]=Uo,n[Lt+40>>2]=M,Fo(o,4,2989,Lt))}while(!1);return(Xe|0)==28&&(oe=yu(Ve)|0,n[Le>>2]=oe,n[Le+4>>2]=Ve,n[Le+8>>2]=Hr?3047:11699,Fo(o,4,3038,Le),oe=n[o+972>>2]|0,oe|0&&sp[oe&127](o),Lt=ma(d,R)|0,Xe=ma(m,R)|0,n[He>>2]=Lt,n[He+4>>2]=Xe,E[He+8>>3]=+l,E[He+16>>3]=+u,n[He+24>>2]=M,Fo(o,4,3049,He),Xe=31),(Xe|0)==31&&(Ls(o,l,u,A,d,m,B,k,R,L),s[11697]|0&&(oe=n[2279]|0,Lt=yu(oe)|0,n[Gr>>2]=Lt,n[Gr+4>>2]=oe,n[Gr+8>>2]=Hr?3047:11699,Fo(o,4,3083,Gr),oe=n[o+972>>2]|0,oe|0&&sp[oe&127](o),Lt=ma(d,R)|0,Gr=ma(m,R)|0,Uo=+y(h[o+908>>2]),il=+y(h[o+912>>2]),n[fr>>2]=Lt,n[fr+4>>2]=Gr,E[fr+8>>3]=Uo,E[fr+16>>3]=il,n[fr+24>>2]=M,Fo(o,4,3092,fr)),n[o+516>>2]=A,q||(oe=o+520|0,q=n[oe>>2]|0,(q|0)==16&&(s[11697]|0&&Fo(o,4,3124,$t),n[oe>>2]=0,q=0),R?q=o+916|0:(n[oe>>2]=q+1,q=o+524+(q*24|0)|0),h[q>>2]=l,h[q+4>>2]=u,n[q+8>>2]=d,n[q+12>>2]=m,n[q+16>>2]=n[o+908>>2],n[q+20>>2]=n[o+912>>2],q=0)),R&&(n[o+416>>2]=n[o+908>>2],n[o+420>>2]=n[o+912>>2],s[o+985>>0]=1,s[Rr>>0]=0),n[2279]=(n[2279]|0)+-1,n[o+512>>2]=n[2278],I=cr,Hr|(q|0)==0|0}function En(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(J(o,l,u)),y(A+y(re(o,l,u)))}function Fo(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=I,I=I+16|0,d=m,n[d>>2]=A,o?A=n[o+976>>2]|0:A=0,Dh(A,o,l,u,d),I=m}function yu(o){return o=o|0,(o>>>0>60?3201:3201+(60-o)|0)|0}function ma(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+32|0,u=d+12|0,A=d,n[u>>2]=n[254],n[u+4>>2]=n[255],n[u+8>>2]=n[256],n[A>>2]=n[257],n[A+4>>2]=n[258],n[A+8>>2]=n[259],(o|0)>2?o=11699:o=n[(l?A:u)+(o<<2)>>2]|0,I=d,o|0}function Ls(o,l,u,A,d,m,B,k,R,M){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=m|0,B=y(B),k=y(k),R=R|0,M=M|0;var L=0,q=0,oe=0,Ye=0,Le=$e,Te=$e,nt=$e,Xe=$e,ft=$e,He=$e,Ve=$e,Lt=0,Gr=0,fr=0,$t=$e,Rr=$e,Hr=0,cr=$e,jn=0,Lo=0,Mo=0,Uo=0,il=0,Gh=0,qh=0,dc=0,Wh=0,Nf=0,Of=0,Vh=0,Yh=0,Kh=0,ln=0,mc=0,Jh=0,Du=0,zh=$e,Zh=$e,Lf=$e,Mf=$e,bu=$e,Ao=0,Gl=0,Ca=0,yc=0,ap=0,lp=$e,Uf=$e,cp=$e,up=$e,po=$e,Hs=$e,Ec=0,Vn=$e,fp=$e,_o=$e,Pu=$e,Ho=$e,xu=$e,Ap=0,pp=0,ku=$e,ho=$e,Ic=0,hp=0,gp=0,dp=0,Nr=$e,fi=0,js=0,jo=0,go=0,Mr=0,Ar=0,Cc=0,zt=$e,mp=0,vi=0;Cc=I,I=I+16|0,Ao=Cc+12|0,Gl=Cc+8|0,Ca=Cc+4|0,yc=Cc,Bi(o,(d|0)==0|(Mt(l)|0)^1,3326),Bi(o,(m|0)==0|(Mt(u)|0)^1,3406),js=pt(o,A)|0,n[o+496>>2]=js,Mr=dr(2,js)|0,Ar=dr(0,js)|0,h[o+440>>2]=y(J(o,Mr,B)),h[o+444>>2]=y(re(o,Mr,B)),h[o+428>>2]=y(J(o,Ar,B)),h[o+436>>2]=y(re(o,Ar,B)),h[o+464>>2]=y(vr(o,Mr)),h[o+468>>2]=y(_n(o,Mr)),h[o+452>>2]=y(vr(o,Ar)),h[o+460>>2]=y(_n(o,Ar)),h[o+488>>2]=y(yi(o,Mr,B)),h[o+492>>2]=y(vs(o,Mr,B)),h[o+476>>2]=y(yi(o,Ar,B)),h[o+484>>2]=y(vs(o,Ar,B));do if(n[o+964>>2]|0)JA(o,l,u,d,m,B,k);else{if(jo=o+948|0,go=(n[o+952>>2]|0)-(n[jo>>2]|0)>>2,!go){lP(o,l,u,d,m,B,k);break}if(!R&&Y1(o,l,u,d,m,B,k)|0)break;ee(o),mc=o+508|0,s[mc>>0]=0,Mr=dr(n[o+4>>2]|0,js)|0,Ar=ky(Mr,js)|0,fi=ge(Mr)|0,Jh=n[o+8>>2]|0,hp=o+28|0,Du=(n[hp>>2]|0)!=0,Ho=fi?B:k,ku=fi?k:B,zh=y(Ph(o,Mr,B)),Zh=y(K1(o,Mr,B)),Le=y(Ph(o,Ar,B)),xu=y($a(o,Mr,B)),ho=y($a(o,Ar,B)),fr=fi?d:m,Ic=fi?m:d,Nr=fi?xu:ho,ft=fi?ho:xu,Pu=y(En(o,2,B)),Xe=y(En(o,0,B)),Te=y(y(Xr(o+364|0,B))-Nr),nt=y(y(Xr(o+380|0,B))-Nr),He=y(y(Xr(o+372|0,k))-ft),Ve=y(y(Xr(o+388|0,k))-ft),Lf=fi?Te:He,Mf=fi?nt:Ve,Pu=y(l-Pu),l=y(Pu-Nr),Mt(l)|0?Nr=l:Nr=y(ri(y(fd(l,nt)),Te)),fp=y(u-Xe),l=y(fp-ft),Mt(l)|0?_o=l:_o=y(ri(y(fd(l,Ve)),He)),Te=fi?Nr:_o,Vn=fi?_o:Nr;e:do if((fr|0)==1)for(A=0,q=0;;){if(L=Bs(o,q)|0,!A)y(zA(L))>y(0)&&y(xh(L))>y(0)?A=L:A=0;else if(J1(L)|0){Ye=0;break e}if(q=q+1|0,q>>>0>=go>>>0){Ye=A;break}}else Ye=0;while(!1);Lt=Ye+500|0,Gr=Ye+504|0,A=0,L=0,l=y(0),oe=0;do{if(q=n[(n[jo>>2]|0)+(oe<<2)>>2]|0,(n[q+36>>2]|0)==1)Qy(q),s[q+985>>0]=1,s[q+984>>0]=0;else{Df(q),R&&Sh(q,pt(q,js)|0,Te,Vn,Nr);do if((n[q+24>>2]|0)!=1)if((q|0)==(Ye|0)){n[Lt>>2]=n[2278],h[Gr>>2]=y(0);break}else{cP(o,q,Nr,d,_o,Nr,_o,m,js,M);break}else L|0&&(n[L+960>>2]=q),n[q+960>>2]=0,L=q,A=A|0?A:q;while(!1);Hs=y(h[q+504>>2]),l=y(l+y(Hs+y(En(q,Mr,Nr))))}oe=oe+1|0}while((oe|0)!=(go|0));for(Mo=l>Te,Ec=Du&((fr|0)==2&Mo)?1:fr,jn=(Ic|0)==1,il=jn&(R^1),Gh=(Ec|0)==1,qh=(Ec|0)==2,dc=976+(Mr<<2)|0,Wh=(Ic|2|0)==2,Kh=jn&(Du^1),Nf=1040+(Ar<<2)|0,Of=1040+(Mr<<2)|0,Vh=976+(Ar<<2)|0,Yh=(Ic|0)!=1,Mo=Du&((fr|0)!=0&Mo),Lo=o+976|0,jn=jn^1,l=Te,Hr=0,Uo=0,Hs=y(0),bu=y(0);;){e:do if(Hr>>>0<go>>>0)for(Gr=n[jo>>2]|0,oe=0,Ve=y(0),He=y(0),nt=y(0),Te=y(0),q=0,L=0,Ye=Hr;;){if(Lt=n[Gr+(Ye<<2)>>2]|0,(n[Lt+36>>2]|0)!=1&&(n[Lt+940>>2]=Uo,(n[Lt+24>>2]|0)!=1)){if(Xe=y(En(Lt,Mr,Nr)),ln=n[dc>>2]|0,u=y(Xr(Lt+380+(ln<<3)|0,Ho)),ft=y(h[Lt+504>>2]),u=y(fd(u,ft)),u=y(ri(y(Xr(Lt+364+(ln<<3)|0,Ho)),u)),Du&(oe|0)!=0&y(Xe+y(He+u))>l){m=oe,Xe=Ve,fr=Ye;break e}Xe=y(Xe+u),u=y(He+Xe),Xe=y(Ve+Xe),J1(Lt)|0&&(nt=y(nt+y(zA(Lt))),Te=y(Te-y(ft*y(xh(Lt))))),L|0&&(n[L+960>>2]=Lt),n[Lt+960>>2]=0,oe=oe+1|0,L=Lt,q=q|0?q:Lt}else Xe=Ve,u=He;if(Ye=Ye+1|0,Ye>>>0<go>>>0)Ve=Xe,He=u;else{m=oe,fr=Ye;break}}else m=0,Xe=y(0),nt=y(0),Te=y(0),q=0,fr=Hr;while(!1);ln=nt>y(0)&nt<y(1),$t=ln?y(1):nt,ln=Te>y(0)&Te<y(1),Ve=ln?y(1):Te;do if(Gh)ln=51;else if(Xe<Lf&((Mt(Lf)|0)^1))l=Lf,ln=51;else if(Xe>Mf&((Mt(Mf)|0)^1))l=Mf,ln=51;else if(s[(n[Lo>>2]|0)+3>>0]|0)ln=51;else{if($t!=y(0)&&y(zA(o))!=y(0)){ln=53;break}l=Xe,ln=53}while(!1);if((ln|0)==51&&(ln=0,Mt(l)|0?ln=53:(Rr=y(l-Xe),cr=l)),(ln|0)==53&&(ln=0,Xe<y(0)?(Rr=y(-Xe),cr=l):(Rr=y(0),cr=l)),!il&&(ap=(q|0)==0,!ap)){oe=n[dc>>2]|0,Ye=Rr<y(0),ft=y(Rr/Ve),Lt=Rr>y(0),He=y(Rr/$t),nt=y(0),Xe=y(0),l=y(0),L=q;do u=y(Xr(L+380+(oe<<3)|0,Ho)),Te=y(Xr(L+364+(oe<<3)|0,Ho)),Te=y(fd(u,y(ri(Te,y(h[L+504>>2]))))),Ye?(u=y(Te*y(xh(L))),u!=y(-0)&&(zt=y(Te-y(ft*u)),lp=y(Wn(L,Mr,zt,cr,Nr)),zt!=lp)&&(nt=y(nt-y(lp-Te)),l=y(l+u))):Lt&&(Uf=y(zA(L)),Uf!=y(0))&&(zt=y(Te+y(He*Uf)),cp=y(Wn(L,Mr,zt,cr,Nr)),zt!=cp)&&(nt=y(nt-y(cp-Te)),Xe=y(Xe-Uf)),L=n[L+960>>2]|0;while(L|0);if(l=y(Ve+l),Te=y(Rr+nt),ap)l=y(0);else{ft=y($t+Xe),Ye=n[dc>>2]|0,Lt=Te<y(0),Gr=l==y(0),He=y(Te/l),oe=Te>y(0),ft=y(Te/ft),l=y(0);do{zt=y(Xr(q+380+(Ye<<3)|0,Ho)),nt=y(Xr(q+364+(Ye<<3)|0,Ho)),nt=y(fd(zt,y(ri(nt,y(h[q+504>>2]))))),Lt?(zt=y(nt*y(xh(q))),Te=y(-zt),zt!=y(-0)?(zt=y(He*Te),Te=y(Wn(q,Mr,y(nt+(Gr?Te:zt)),cr,Nr))):Te=nt):oe&&(up=y(zA(q)),up!=y(0))?Te=y(Wn(q,Mr,y(nt+y(ft*up)),cr,Nr)):Te=nt,l=y(l-y(Te-nt)),Xe=y(En(q,Mr,Nr)),u=y(En(q,Ar,Nr)),Te=y(Te+Xe),h[Gl>>2]=Te,n[yc>>2]=1,nt=y(h[q+396>>2]);e:do if(Mt(nt)|0){L=Mt(Vn)|0;do if(!L){if(Mo|(uo(q,Ar,Vn)|0|jn)||(as(o,q)|0)!=4||(n[(Ol(q,Ar)|0)+4>>2]|0)==3||(n[(Ll(q,Ar)|0)+4>>2]|0)==3)break;h[Ao>>2]=Vn,n[Ca>>2]=1;break e}while(!1);if(uo(q,Ar,Vn)|0){L=n[q+992+(n[Vh>>2]<<2)>>2]|0,zt=y(u+y(Xr(L,Vn))),h[Ao>>2]=zt,L=Yh&(n[L+4>>2]|0)==2,n[Ca>>2]=((Mt(zt)|0|L)^1)&1;break}else{h[Ao>>2]=Vn,n[Ca>>2]=L?0:2;break}}else zt=y(Te-Xe),$t=y(zt/nt),zt=y(nt*zt),n[Ca>>2]=1,h[Ao>>2]=y(u+(fi?$t:zt));while(!1);Eu(q,Mr,cr,Nr,yc,Gl),Eu(q,Ar,Vn,Nr,Ca,Ao);do if(!(uo(q,Ar,Vn)|0)&&(as(o,q)|0)==4){if((n[(Ol(q,Ar)|0)+4>>2]|0)==3){L=0;break}L=(n[(Ll(q,Ar)|0)+4>>2]|0)!=3}else L=0;while(!1);zt=y(h[Gl>>2]),$t=y(h[Ao>>2]),mp=n[yc>>2]|0,vi=n[Ca>>2]|0,Nl(q,fi?zt:$t,fi?$t:zt,js,fi?mp:vi,fi?vi:mp,Nr,_o,R&(L^1),3488,M)|0,s[mc>>0]=s[mc>>0]|s[q+508>>0],q=n[q+960>>2]|0}while(q|0)}}else l=y(0);if(l=y(Rr+l),vi=l<y(0)&1,s[mc>>0]=vi|c[mc>>0],qh&l>y(0)?(L=n[dc>>2]|0,n[o+364+(L<<3)+4>>2]|0&&(po=y(Xr(o+364+(L<<3)|0,Ho)),po>=y(0))?Te=y(ri(y(0),y(po-y(cr-l)))):Te=y(0)):Te=l,Lt=Hr>>>0<fr>>>0,Lt){Ye=n[jo>>2]|0,oe=Hr,L=0;do q=n[Ye+(oe<<2)>>2]|0,n[q+24>>2]|0||(L=((n[(Ol(q,Mr)|0)+4>>2]|0)==3&1)+L|0,L=L+((n[(Ll(q,Mr)|0)+4>>2]|0)==3&1)|0),oe=oe+1|0;while((oe|0)!=(fr|0));L?(Xe=y(0),u=y(0)):ln=101}else ln=101;e:do if((ln|0)==101)switch(ln=0,Jh|0){case 1:{L=0,Xe=y(Te*y(.5)),u=y(0);break e}case 2:{L=0,Xe=Te,u=y(0);break e}case 3:{if(m>>>0<=1){L=0,Xe=y(0),u=y(0);break e}u=y((m+-1|0)>>>0),L=0,Xe=y(0),u=y(y(ri(Te,y(0)))/u);break e}case 5:{u=y(Te/y((m+1|0)>>>0)),L=0,Xe=u;break e}case 4:{u=y(Te/y(m>>>0)),L=0,Xe=y(u*y(.5));break e}default:{L=0,Xe=y(0),u=y(0);break e}}while(!1);if(l=y(zh+Xe),Lt){nt=y(Te/y(L|0)),oe=n[jo>>2]|0,q=Hr,Te=y(0);do{L=n[oe+(q<<2)>>2]|0;e:do if((n[L+36>>2]|0)!=1){switch(n[L+24>>2]|0){case 1:{if(ya(L,Mr)|0){if(!R)break e;zt=y(ZA(L,Mr,cr)),zt=y(zt+y(vr(o,Mr))),zt=y(zt+y(J(L,Mr,Nr))),h[L+400+(n[Of>>2]<<2)>>2]=zt;break e}break}case 0:if(vi=(n[(Ol(L,Mr)|0)+4>>2]|0)==3,zt=y(nt+l),l=vi?zt:l,R&&(vi=L+400+(n[Of>>2]<<2)|0,h[vi>>2]=y(l+y(h[vi>>2]))),vi=(n[(Ll(L,Mr)|0)+4>>2]|0)==3,zt=y(nt+l),l=vi?zt:l,il){zt=y(u+y(En(L,Mr,Nr))),Te=Vn,l=y(l+y(zt+y(h[L+504>>2])));break e}else{l=y(l+y(u+y(XA(L,Mr,Nr)))),Te=y(ri(Te,y(XA(L,Ar,Nr))));break e}default:}R&&(zt=y(Xe+y(vr(o,Mr))),vi=L+400+(n[Of>>2]<<2)|0,h[vi>>2]=y(zt+y(h[vi>>2])))}while(!1);q=q+1|0}while((q|0)!=(fr|0))}else Te=y(0);if(u=y(Zh+l),Wh?Xe=y(y(Wn(o,Ar,y(ho+Te),ku,B))-ho):Xe=Vn,nt=y(y(Wn(o,Ar,y(ho+(Kh?Vn:Te)),ku,B))-ho),Lt&R){q=Hr;do{oe=n[(n[jo>>2]|0)+(q<<2)>>2]|0;do if((n[oe+36>>2]|0)!=1){if((n[oe+24>>2]|0)==1){if(ya(oe,Ar)|0){if(zt=y(ZA(oe,Ar,Vn)),zt=y(zt+y(vr(o,Ar))),zt=y(zt+y(J(oe,Ar,Nr))),L=n[Nf>>2]|0,h[oe+400+(L<<2)>>2]=zt,!(Mt(zt)|0))break}else L=n[Nf>>2]|0;zt=y(vr(o,Ar)),h[oe+400+(L<<2)>>2]=y(zt+y(J(oe,Ar,Nr)));break}L=as(o,oe)|0;do if((L|0)==4){if((n[(Ol(oe,Ar)|0)+4>>2]|0)==3){ln=139;break}if((n[(Ll(oe,Ar)|0)+4>>2]|0)==3){ln=139;break}if(uo(oe,Ar,Vn)|0){l=Le;break}mp=n[oe+908+(n[dc>>2]<<2)>>2]|0,n[Ao>>2]=mp,l=y(h[oe+396>>2]),vi=Mt(l)|0,Te=(n[S>>2]=mp,y(h[S>>2])),vi?l=nt:(Rr=y(En(oe,Ar,Nr)),zt=y(Te/l),l=y(l*Te),l=y(Rr+(fi?zt:l))),h[Gl>>2]=l,h[Ao>>2]=y(y(En(oe,Mr,Nr))+Te),n[Ca>>2]=1,n[yc>>2]=1,Eu(oe,Mr,cr,Nr,Ca,Ao),Eu(oe,Ar,Vn,Nr,yc,Gl),l=y(h[Ao>>2]),Rr=y(h[Gl>>2]),zt=fi?l:Rr,l=fi?Rr:l,vi=((Mt(zt)|0)^1)&1,Nl(oe,zt,l,js,vi,((Mt(l)|0)^1)&1,Nr,_o,1,3493,M)|0,l=Le}else ln=139;while(!1);e:do if((ln|0)==139){ln=0,l=y(Xe-y(XA(oe,Ar,Nr)));do if((n[(Ol(oe,Ar)|0)+4>>2]|0)==3){if((n[(Ll(oe,Ar)|0)+4>>2]|0)!=3)break;l=y(Le+y(ri(y(0),y(l*y(.5)))));break e}while(!1);if((n[(Ll(oe,Ar)|0)+4>>2]|0)==3){l=Le;break}if((n[(Ol(oe,Ar)|0)+4>>2]|0)==3){l=y(Le+y(ri(y(0),l)));break}switch(L|0){case 1:{l=Le;break e}case 2:{l=y(Le+y(l*y(.5)));break e}default:{l=y(Le+l);break e}}}while(!1);zt=y(Hs+l),vi=oe+400+(n[Nf>>2]<<2)|0,h[vi>>2]=y(zt+y(h[vi>>2]))}while(!1);q=q+1|0}while((q|0)!=(fr|0))}if(Hs=y(Hs+nt),bu=y(ri(bu,u)),m=Uo+1|0,fr>>>0>=go>>>0)break;l=cr,Hr=fr,Uo=m}do if(R){if(L=m>>>0>1,!L&&!(DL(o)|0))break;if(!(Mt(Vn)|0)){l=y(Vn-Hs);e:do switch(n[o+12>>2]|0){case 3:{Le=y(Le+l),He=y(0);break}case 2:{Le=y(Le+y(l*y(.5))),He=y(0);break}case 4:{Vn>Hs?He=y(l/y(m>>>0)):He=y(0);break}case 7:if(Vn>Hs){Le=y(Le+y(l/y(m<<1>>>0))),He=y(l/y(m>>>0)),He=L?He:y(0);break e}else{Le=y(Le+y(l*y(.5))),He=y(0);break e}case 6:{He=y(l/y(Uo>>>0)),He=Vn>Hs&L?He:y(0);break}default:He=y(0)}while(!1);if(m|0)for(Lt=1040+(Ar<<2)|0,Gr=976+(Ar<<2)|0,Ye=0,q=0;;){e:do if(q>>>0<go>>>0)for(Te=y(0),nt=y(0),l=y(0),oe=q;;){L=n[(n[jo>>2]|0)+(oe<<2)>>2]|0;do if((n[L+36>>2]|0)!=1&&!(n[L+24>>2]|0)){if((n[L+940>>2]|0)!=(Ye|0))break e;if(bL(L,Ar)|0&&(zt=y(h[L+908+(n[Gr>>2]<<2)>>2]),l=y(ri(l,y(zt+y(En(L,Ar,Nr)))))),(as(o,L)|0)!=5)break;po=y(qg(L)),po=y(po+y(J(L,0,Nr))),zt=y(h[L+912>>2]),zt=y(y(zt+y(En(L,0,Nr)))-po),po=y(ri(nt,po)),zt=y(ri(Te,zt)),Te=zt,nt=po,l=y(ri(l,y(po+zt)))}while(!1);if(L=oe+1|0,L>>>0<go>>>0)oe=L;else{oe=L;break}}else nt=y(0),l=y(0),oe=q;while(!1);if(ft=y(He+l),u=Le,Le=y(Le+ft),q>>>0<oe>>>0){Xe=y(u+nt),L=q;do{q=n[(n[jo>>2]|0)+(L<<2)>>2]|0;e:do if((n[q+36>>2]|0)!=1&&!(n[q+24>>2]|0))switch(as(o,q)|0){case 1:{zt=y(u+y(J(q,Ar,Nr))),h[q+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 3:{zt=y(y(Le-y(re(q,Ar,Nr)))-y(h[q+908+(n[Gr>>2]<<2)>>2])),h[q+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 2:{zt=y(u+y(y(ft-y(h[q+908+(n[Gr>>2]<<2)>>2]))*y(.5))),h[q+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 4:{if(zt=y(u+y(J(q,Ar,Nr))),h[q+400+(n[Lt>>2]<<2)>>2]=zt,uo(q,Ar,Vn)|0||(fi?(Te=y(h[q+908>>2]),l=y(Te+y(En(q,Mr,Nr))),nt=ft):(nt=y(h[q+912>>2]),nt=y(nt+y(En(q,Ar,Nr))),l=ft,Te=y(h[q+908>>2])),yn(l,Te)|0&&yn(nt,y(h[q+912>>2]))|0))break e;Nl(q,l,nt,js,1,1,Nr,_o,1,3501,M)|0;break e}case 5:{h[q+404>>2]=y(y(Xe-y(qg(q)))+y(ZA(q,0,Vn)));break e}default:break e}while(!1);L=L+1|0}while((L|0)!=(oe|0))}if(Ye=Ye+1|0,(Ye|0)==(m|0))break;q=oe}}}while(!1);if(h[o+908>>2]=y(Wn(o,2,Pu,B,B)),h[o+912>>2]=y(Wn(o,0,fp,k,B)),Ec|0&&(Ap=n[o+32>>2]|0,pp=(Ec|0)==2,!(pp&(Ap|0)!=2))?pp&(Ap|0)==2&&(l=y(xu+cr),l=y(ri(y(fd(l,y(Wg(o,Mr,bu,Ho)))),xu)),ln=198):(l=y(Wn(o,Mr,bu,Ho,B)),ln=198),(ln|0)==198&&(h[o+908+(n[976+(Mr<<2)>>2]<<2)>>2]=l),Ic|0&&(gp=n[o+32>>2]|0,dp=(Ic|0)==2,!(dp&(gp|0)!=2))?dp&(gp|0)==2&&(l=y(ho+Vn),l=y(ri(y(fd(l,y(Wg(o,Ar,y(ho+Hs),ku)))),ho)),ln=204):(l=y(Wn(o,Ar,y(ho+Hs),ku,B)),ln=204),(ln|0)==204&&(h[o+908+(n[976+(Ar<<2)>>2]<<2)>>2]=l),R){if((n[hp>>2]|0)==2){q=976+(Ar<<2)|0,oe=1040+(Ar<<2)|0,L=0;do Ye=Bs(o,L)|0,n[Ye+24>>2]|0||(mp=n[q>>2]|0,zt=y(h[o+908+(mp<<2)>>2]),vi=Ye+400+(n[oe>>2]<<2)|0,zt=y(zt-y(h[vi>>2])),h[vi>>2]=y(zt-y(h[Ye+908+(mp<<2)>>2]))),L=L+1|0;while((L|0)!=(go|0))}if(A|0){L=fi?Ec:d;do PL(o,A,Nr,L,_o,js,M),A=n[A+960>>2]|0;while(A|0)}if(L=(Mr|2|0)==3,q=(Ar|2|0)==3,L|q){A=0;do oe=n[(n[jo>>2]|0)+(A<<2)>>2]|0,(n[oe+36>>2]|0)!=1&&(L&&z1(o,oe,Mr),q&&z1(o,oe,Ar)),A=A+1|0;while((A|0)!=(go|0))}}}while(!1);I=Cc}function vh(o,l){o=o|0,l=y(l);var u=0;Ya(o,l>=y(0),3147),u=l==y(0),h[o+4>>2]=u?y(0):l}function YA(o,l,u,A){o=o|0,l=y(l),u=y(u),A=A|0;var d=$e,m=$e,B=0,k=0,R=0;n[2278]=(n[2278]|0)+1,Df(o),uo(o,2,l)|0?(d=y(Xr(n[o+992>>2]|0,l)),R=1,d=y(d+y(En(o,2,l)))):(d=y(Xr(o+380|0,l)),d>=y(0)?R=2:(R=((Mt(l)|0)^1)&1,d=l)),uo(o,0,u)|0?(m=y(Xr(n[o+996>>2]|0,u)),k=1,m=y(m+y(En(o,0,l)))):(m=y(Xr(o+388|0,u)),m>=y(0)?k=2:(k=((Mt(u)|0)^1)&1,m=u)),B=o+976|0,Nl(o,d,m,A,R,k,l,u,1,3189,n[B>>2]|0)|0&&(Sh(o,n[o+496>>2]|0,l,u,l),KA(o,y(h[(n[B>>2]|0)+4>>2]),y(0),y(0)),s[11696]|0)&&Hg(o,7)}function Df(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;k=I,I=I+32|0,B=k+24|0,m=k+16|0,A=k+8|0,d=k,u=0;do l=o+380+(u<<3)|0,n[o+380+(u<<3)+4>>2]|0&&(R=l,M=n[R+4>>2]|0,L=A,n[L>>2]=n[R>>2],n[L+4>>2]=M,L=o+364+(u<<3)|0,M=n[L+4>>2]|0,R=d,n[R>>2]=n[L>>2],n[R+4>>2]=M,n[m>>2]=n[A>>2],n[m+4>>2]=n[A+4>>2],n[B>>2]=n[d>>2],n[B+4>>2]=n[d+4>>2],Bf(m,B)|0)||(l=o+348+(u<<3)|0),n[o+992+(u<<2)>>2]=l,u=u+1|0;while((u|0)!=2);I=k}function uo(o,l,u){o=o|0,l=l|0,u=y(u);var A=0;switch(o=n[o+992+(n[976+(l<<2)>>2]<<2)>>2]|0,n[o+4>>2]|0){case 0:case 3:{o=0;break}case 1:{y(h[o>>2])<y(0)?o=0:A=5;break}case 2:{y(h[o>>2])<y(0)?o=0:o=(Mt(u)|0)^1;break}default:A=5}return(A|0)==5&&(o=1),o|0}function Xr(o,l){switch(o=o|0,l=y(l),n[o+4>>2]|0){case 2:{l=y(y(y(h[o>>2])*l)/y(100));break}case 1:{l=y(h[o>>2]);break}default:l=y(ae)}return y(l)}function Sh(o,l,u,A,d){o=o|0,l=l|0,u=y(u),A=y(A),d=y(d);var m=0,B=$e;l=n[o+944>>2]|0?l:1,m=dr(n[o+4>>2]|0,l)|0,l=ky(m,l)|0,u=y(uP(o,m,u)),A=y(uP(o,l,A)),B=y(u+y(J(o,m,d))),h[o+400+(n[1040+(m<<2)>>2]<<2)>>2]=B,u=y(u+y(re(o,m,d))),h[o+400+(n[1e3+(m<<2)>>2]<<2)>>2]=u,u=y(A+y(J(o,l,d))),h[o+400+(n[1040+(l<<2)>>2]<<2)>>2]=u,d=y(A+y(re(o,l,d))),h[o+400+(n[1e3+(l<<2)>>2]<<2)>>2]=d}function KA(o,l,u,A){o=o|0,l=y(l),u=y(u),A=y(A);var d=0,m=0,B=$e,k=$e,R=0,M=0,L=$e,q=0,oe=$e,Ye=$e,Le=$e,Te=$e;if(l!=y(0)&&(d=o+400|0,Te=y(h[d>>2]),m=o+404|0,Le=y(h[m>>2]),q=o+416|0,Ye=y(h[q>>2]),M=o+420|0,B=y(h[M>>2]),oe=y(Te+u),L=y(Le+A),A=y(oe+Ye),k=y(L+B),R=(n[o+988>>2]|0)==1,h[d>>2]=y(os(Te,l,0,R)),h[m>>2]=y(os(Le,l,0,R)),u=y(KM(y(Ye*l),y(1))),yn(u,y(0))|0?m=0:m=(yn(u,y(1))|0)^1,u=y(KM(y(B*l),y(1))),yn(u,y(0))|0?d=0:d=(yn(u,y(1))|0)^1,Te=y(os(A,l,R&m,R&(m^1))),h[q>>2]=y(Te-y(os(oe,l,0,R))),Te=y(os(k,l,R&d,R&(d^1))),h[M>>2]=y(Te-y(os(L,l,0,R))),m=(n[o+952>>2]|0)-(n[o+948>>2]|0)>>2,m|0)){d=0;do KA(Bs(o,d)|0,l,oe,L),d=d+1|0;while((d|0)!=(m|0))}}function Py(o,l,u,A,d){switch(o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,u|0){case 5:case 0:{o=LZ(n[489]|0,A,d)|0;break}default:o=pHe(A,d)|0}return o|0}function Gg(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;d=I,I=I+16|0,m=d,n[m>>2]=A,Dh(o,0,l,u,m),I=d}function Dh(o,l,u,A,d){if(o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,o=o|0?o:956,iX[n[o+8>>2]&1](o,l,u,A,d)|0,(u|0)==5)Nt();else return}function hc(o,l,u){o=o|0,l=l|0,u=u|0,s[o+l>>0]=u&1}function xy(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(bh(o,A),kt(o,n[l>>2]|0,n[u>>2]|0,A))}function bh(o,l){o=o|0,l=l|0;var u=0;if((N(o)|0)>>>0<l>>>0&&an(o),l>>>0>1073741823)Nt();else{u=Jt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function kt(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function N(o){return o=o|0,1073741823}function J(o,l,u){return o=o|0,l=l|0,u=y(u),ge(l)|0&&n[o+96>>2]|0?o=o+92|0:o=Rn(o+60|0,n[1040+(l<<2)>>2]|0,992)|0,y(Ke(o,u))}function re(o,l,u){return o=o|0,l=l|0,u=y(u),ge(l)|0&&n[o+104>>2]|0?o=o+100|0:o=Rn(o+60|0,n[1e3+(l<<2)>>2]|0,992)|0,y(Ke(o,u))}function ge(o){return o=o|0,(o|1|0)==3|0}function Ke(o,l){return o=o|0,l=y(l),(n[o+4>>2]|0)==3?l=y(0):l=y(Xr(o,l)),y(l)}function pt(o,l){return o=o|0,l=l|0,o=n[o>>2]|0,(o|0?o:(l|0)>1?l:1)|0}function dr(o,l){o=o|0,l=l|0;var u=0;e:do if((l|0)==2){switch(o|0){case 2:{o=3;break e}case 3:break;default:{u=4;break e}}o=2}else u=4;while(!1);return o|0}function vr(o,l){o=o|0,l=l|0;var u=$e;return ge(l)|0&&n[o+312>>2]|0&&(u=y(h[o+308>>2]),u>=y(0))||(u=y(ri(y(h[(Rn(o+276|0,n[1040+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(u)}function _n(o,l){o=o|0,l=l|0;var u=$e;return ge(l)|0&&n[o+320>>2]|0&&(u=y(h[o+316>>2]),u>=y(0))||(u=y(ri(y(h[(Rn(o+276|0,n[1e3+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(u)}function yi(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return ge(l)|0&&n[o+240>>2]|0&&(A=y(Xr(o+236|0,u)),A>=y(0))||(A=y(ri(y(Xr(Rn(o+204|0,n[1040+(l<<2)>>2]|0,992)|0,u)),y(0)))),y(A)}function vs(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return ge(l)|0&&n[o+248>>2]|0&&(A=y(Xr(o+244|0,u)),A>=y(0))||(A=y(ri(y(Xr(Rn(o+204|0,n[1e3+(l<<2)>>2]|0,992)|0,u)),y(0)))),y(A)}function JA(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=$e,R=$e,M=$e,L=$e,q=$e,oe=$e,Ye=0,Le=0,Te=0;Te=I,I=I+16|0,Ye=Te,Le=o+964|0,Bi(o,(n[Le>>2]|0)!=0,3519),k=y($a(o,2,l)),R=y($a(o,0,l)),M=y(En(o,2,l)),L=y(En(o,0,l)),Mt(l)|0?q=l:q=y(ri(y(0),y(y(l-M)-k))),Mt(u)|0?oe=u:oe=y(ri(y(0),y(y(u-L)-R))),(A|0)==1&(d|0)==1?(h[o+908>>2]=y(Wn(o,2,y(l-M),m,m)),l=y(Wn(o,0,y(u-L),B,m))):(sX[n[Le>>2]&1](Ye,o,q,A,oe,d),q=y(k+y(h[Ye>>2])),oe=y(l-M),h[o+908>>2]=y(Wn(o,2,(A|2|0)==2?q:oe,m,m)),oe=y(R+y(h[Ye+4>>2])),l=y(u-L),l=y(Wn(o,0,(d|2|0)==2?oe:l,B,m))),h[o+912>>2]=l,I=Te}function lP(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=$e,R=$e,M=$e,L=$e;M=y($a(o,2,m)),k=y($a(o,0,m)),L=y(En(o,2,m)),R=y(En(o,0,m)),l=y(l-L),h[o+908>>2]=y(Wn(o,2,(A|2|0)==2?M:l,m,m)),u=y(u-R),h[o+912>>2]=y(Wn(o,0,(d|2|0)==2?k:u,B,m))}function Y1(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=0,R=$e,M=$e;return k=(A|0)==2,!(l<=y(0)&k)&&!(u<=y(0)&(d|0)==2)&&!((A|0)==1&(d|0)==1)?o=0:(R=y(En(o,0,m)),M=y(En(o,2,m)),k=l<y(0)&k|(Mt(l)|0),l=y(l-M),h[o+908>>2]=y(Wn(o,2,k?y(0):l,m,m)),l=y(u-R),k=u<y(0)&(d|0)==2|(Mt(u)|0),h[o+912>>2]=y(Wn(o,0,k?y(0):l,B,m)),o=1),o|0}function ky(o,l){return o=o|0,l=l|0,Vg(o)|0?o=dr(2,l)|0:o=0,o|0}function Ph(o,l,u){return o=o|0,l=l|0,u=y(u),u=y(yi(o,l,u)),y(u+y(vr(o,l)))}function K1(o,l,u){return o=o|0,l=l|0,u=y(u),u=y(vs(o,l,u)),y(u+y(_n(o,l)))}function $a(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(Ph(o,l,u)),y(A+y(K1(o,l,u)))}function J1(o){return o=o|0,n[o+24>>2]|0?o=0:y(zA(o))!=y(0)?o=1:o=y(xh(o))!=y(0),o|0}function zA(o){o=o|0;var l=$e;if(n[o+944>>2]|0){if(l=y(h[o+44>>2]),Mt(l)|0)return l=y(h[o+40>>2]),o=l>y(0)&((Mt(l)|0)^1),y(o?l:y(0))}else l=y(0);return y(l)}function xh(o){o=o|0;var l=$e,u=0,A=$e;do if(n[o+944>>2]|0){if(l=y(h[o+48>>2]),Mt(l)|0){if(u=s[(n[o+976>>2]|0)+2>>0]|0,!(u<<24>>24)&&(A=y(h[o+40>>2]),A<y(0)&((Mt(A)|0)^1))){l=y(-A);break}l=u<<24>>24?y(1):y(0)}}else l=y(0);while(!1);return y(l)}function Qy(o){o=o|0;var l=0,u=0;if(nE(o+400|0,0,540)|0,s[o+985>>0]=1,ee(o),u=Mi(o)|0,u|0){l=o+948|0,o=0;do Qy(n[(n[l>>2]|0)+(o<<2)>>2]|0),o=o+1|0;while((o|0)!=(u|0))}}function cP(o,l,u,A,d,m,B,k,R,M){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=y(m),B=y(B),k=k|0,R=R|0,M=M|0;var L=0,q=$e,oe=0,Ye=0,Le=$e,Te=$e,nt=0,Xe=$e,ft=0,He=$e,Ve=0,Lt=0,Gr=0,fr=0,$t=0,Rr=0,Hr=0,cr=0,jn=0,Lo=0;jn=I,I=I+16|0,Gr=jn+12|0,fr=jn+8|0,$t=jn+4|0,Rr=jn,cr=dr(n[o+4>>2]|0,R)|0,Ve=ge(cr)|0,q=y(Xr(xL(l)|0,Ve?m:B)),Lt=uo(l,2,m)|0,Hr=uo(l,0,B)|0;do if(!(Mt(q)|0)&&!(Mt(Ve?u:d)|0)){if(L=l+504|0,!(Mt(y(h[L>>2]))|0)&&(!(Z1(n[l+976>>2]|0,0)|0)||(n[l+500>>2]|0)==(n[2278]|0)))break;h[L>>2]=y(ri(q,y($a(l,cr,m))))}else oe=7;while(!1);do if((oe|0)==7){if(ft=Ve^1,!(ft|Lt^1)){B=y(Xr(n[l+992>>2]|0,m)),h[l+504>>2]=y(ri(B,y($a(l,2,m))));break}if(!(Ve|Hr^1)){B=y(Xr(n[l+996>>2]|0,B)),h[l+504>>2]=y(ri(B,y($a(l,0,m))));break}h[Gr>>2]=y(ae),h[fr>>2]=y(ae),n[$t>>2]=0,n[Rr>>2]=0,Xe=y(En(l,2,m)),He=y(En(l,0,m)),Lt?(Le=y(Xe+y(Xr(n[l+992>>2]|0,m))),h[Gr>>2]=Le,n[$t>>2]=1,Ye=1):(Ye=0,Le=y(ae)),Hr?(q=y(He+y(Xr(n[l+996>>2]|0,B))),h[fr>>2]=q,n[Rr>>2]=1,L=1):(L=0,q=y(ae)),oe=n[o+32>>2]|0,Ve&(oe|0)==2?oe=2:Mt(Le)|0&&!(Mt(u)|0)&&(h[Gr>>2]=u,n[$t>>2]=2,Ye=2,Le=u),!((oe|0)==2&ft)&&Mt(q)|0&&!(Mt(d)|0)&&(h[fr>>2]=d,n[Rr>>2]=2,L=2,q=d),Te=y(h[l+396>>2]),nt=Mt(Te)|0;do if(nt)oe=Ye;else{if((Ye|0)==1&ft){h[fr>>2]=y(y(Le-Xe)/Te),n[Rr>>2]=1,L=1,oe=1;break}Ve&(L|0)==1?(h[Gr>>2]=y(Te*y(q-He)),n[$t>>2]=1,L=1,oe=1):oe=Ye}while(!1);Lo=Mt(u)|0,Ye=(as(o,l)|0)!=4,!(Ve|Lt|((A|0)!=1|Lo)|(Ye|(oe|0)==1))&&(h[Gr>>2]=u,n[$t>>2]=1,!nt)&&(h[fr>>2]=y(y(u-Xe)/Te),n[Rr>>2]=1,L=1),!(Hr|ft|((k|0)!=1|(Mt(d)|0))|(Ye|(L|0)==1))&&(h[fr>>2]=d,n[Rr>>2]=1,!nt)&&(h[Gr>>2]=y(Te*y(d-He)),n[$t>>2]=1),Eu(l,2,m,m,$t,Gr),Eu(l,0,B,m,Rr,fr),u=y(h[Gr>>2]),d=y(h[fr>>2]),Nl(l,u,d,R,n[$t>>2]|0,n[Rr>>2]|0,m,B,0,3565,M)|0,B=y(h[l+908+(n[976+(cr<<2)>>2]<<2)>>2]),h[l+504>>2]=y(ri(B,y($a(l,cr,m))))}while(!1);n[l+500>>2]=n[2278],I=jn}function Wn(o,l,u,A,d){return o=o|0,l=l|0,u=y(u),A=y(A),d=y(d),A=y(Wg(o,l,u,A)),y(ri(A,y($a(o,l,d))))}function as(o,l){return o=o|0,l=l|0,l=l+20|0,l=n[(n[l>>2]|0?l:o+16|0)>>2]|0,(l|0)==5&&Vg(n[o+4>>2]|0)|0&&(l=1),l|0}function Ol(o,l){return o=o|0,l=l|0,ge(l)|0&&n[o+96>>2]|0?l=4:l=n[1040+(l<<2)>>2]|0,o+60+(l<<3)|0}function Ll(o,l){return o=o|0,l=l|0,ge(l)|0&&n[o+104>>2]|0?l=5:l=n[1e3+(l<<2)>>2]|0,o+60+(l<<3)|0}function Eu(o,l,u,A,d,m){switch(o=o|0,l=l|0,u=y(u),A=y(A),d=d|0,m=m|0,u=y(Xr(o+380+(n[976+(l<<2)>>2]<<3)|0,u)),u=y(u+y(En(o,l,A))),n[d>>2]|0){case 2:case 1:{d=Mt(u)|0,A=y(h[m>>2]),h[m>>2]=d|A<u?A:u;break}case 0:{Mt(u)|0||(n[d>>2]=2,h[m>>2]=u);break}default:}}function ya(o,l){return o=o|0,l=l|0,o=o+132|0,ge(l)|0&&n[(Rn(o,4,948)|0)+4>>2]|0?o=1:o=(n[(Rn(o,n[1040+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,o|0}function ZA(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0;return o=o+132|0,ge(l)|0&&(A=Rn(o,4,948)|0,(n[A+4>>2]|0)!=0)?d=4:(A=Rn(o,n[1040+(l<<2)>>2]|0,948)|0,n[A+4>>2]|0?d=4:u=y(0)),(d|0)==4&&(u=y(Xr(A,u))),y(u)}function XA(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(h[o+908+(n[976+(l<<2)>>2]<<2)>>2]),A=y(A+y(J(o,l,u))),y(A+y(re(o,l,u)))}function DL(o){o=o|0;var l=0,u=0,A=0;e:do if(Vg(n[o+4>>2]|0)|0)l=0;else if((n[o+16>>2]|0)!=5)if(u=Mi(o)|0,!u)l=0;else for(l=0;;){if(A=Bs(o,l)|0,!(n[A+24>>2]|0)&&(n[A+20>>2]|0)==5){l=1;break e}if(l=l+1|0,l>>>0>=u>>>0){l=0;break}}else l=1;while(!1);return l|0}function bL(o,l){o=o|0,l=l|0;var u=$e;return u=y(h[o+908+(n[976+(l<<2)>>2]<<2)>>2]),u>=y(0)&((Mt(u)|0)^1)|0}function qg(o){o=o|0;var l=$e,u=0,A=0,d=0,m=0,B=0,k=0,R=$e;if(u=n[o+968>>2]|0,u)R=y(h[o+908>>2]),l=y(h[o+912>>2]),l=y(eX[u&0](o,R,l)),Bi(o,(Mt(l)|0)^1,3573);else{m=Mi(o)|0;do if(m|0){for(u=0,d=0;;){if(A=Bs(o,d)|0,n[A+940>>2]|0){B=8;break}if((n[A+24>>2]|0)!=1)if(k=(as(o,A)|0)==5,k){u=A;break}else u=u|0?u:A;if(d=d+1|0,d>>>0>=m>>>0){B=8;break}}if((B|0)==8&&!u)break;return l=y(qg(u)),y(l+y(h[u+404>>2]))}while(!1);l=y(h[o+912>>2])}return y(l)}function Wg(o,l,u,A){o=o|0,l=l|0,u=y(u),A=y(A);var d=$e,m=0;return Vg(l)|0?(l=1,m=3):ge(l)|0?(l=0,m=3):(A=y(ae),d=y(ae)),(m|0)==3&&(d=y(Xr(o+364+(l<<3)|0,A)),A=y(Xr(o+380+(l<<3)|0,A))),m=A<u&(A>=y(0)&((Mt(A)|0)^1)),u=m?A:u,m=d>=y(0)&((Mt(d)|0)^1)&u<d,y(m?d:u)}function PL(o,l,u,A,d,m,B){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=m|0,B=B|0;var k=$e,R=$e,M=0,L=0,q=$e,oe=$e,Ye=$e,Le=0,Te=0,nt=0,Xe=0,ft=$e,He=0;nt=dr(n[o+4>>2]|0,m)|0,Le=ky(nt,m)|0,Te=ge(nt)|0,q=y(En(l,2,u)),oe=y(En(l,0,u)),uo(l,2,u)|0?k=y(q+y(Xr(n[l+992>>2]|0,u))):ya(l,2)|0&&Ry(l,2)|0?(k=y(h[o+908>>2]),R=y(vr(o,2)),R=y(k-y(R+y(_n(o,2)))),k=y(ZA(l,2,u)),k=y(Wn(l,2,y(R-y(k+y(kh(l,2,u)))),u,u))):k=y(ae),uo(l,0,d)|0?R=y(oe+y(Xr(n[l+996>>2]|0,d))):ya(l,0)|0&&Ry(l,0)|0?(R=y(h[o+912>>2]),ft=y(vr(o,0)),ft=y(R-y(ft+y(_n(o,0)))),R=y(ZA(l,0,d)),R=y(Wn(l,0,y(ft-y(R+y(kh(l,0,d)))),d,u))):R=y(ae),M=Mt(k)|0,L=Mt(R)|0;do if(M^L&&(Ye=y(h[l+396>>2]),!(Mt(Ye)|0)))if(M){k=y(q+y(y(R-oe)*Ye));break}else{ft=y(oe+y(y(k-q)/Ye)),R=L?ft:R;break}while(!1);L=Mt(k)|0,M=Mt(R)|0,L|M&&(He=(L^1)&1,A=u>y(0)&((A|0)!=0&L),k=Te?k:A?u:k,Nl(l,k,R,m,Te?He:A?2:He,L&(M^1)&1,k,R,0,3623,B)|0,k=y(h[l+908>>2]),k=y(k+y(En(l,2,u))),R=y(h[l+912>>2]),R=y(R+y(En(l,0,u)))),Nl(l,k,R,m,1,1,k,R,1,3635,B)|0,Ry(l,nt)|0&&!(ya(l,nt)|0)?(He=n[976+(nt<<2)>>2]|0,ft=y(h[o+908+(He<<2)>>2]),ft=y(ft-y(h[l+908+(He<<2)>>2])),ft=y(ft-y(_n(o,nt))),ft=y(ft-y(re(l,nt,u))),ft=y(ft-y(kh(l,nt,Te?u:d))),h[l+400+(n[1040+(nt<<2)>>2]<<2)>>2]=ft):Xe=21;do if((Xe|0)==21){if(!(ya(l,nt)|0)&&(n[o+8>>2]|0)==1){He=n[976+(nt<<2)>>2]|0,ft=y(h[o+908+(He<<2)>>2]),ft=y(y(ft-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(nt<<2)>>2]<<2)>>2]=ft;break}!(ya(l,nt)|0)&&(n[o+8>>2]|0)==2&&(He=n[976+(nt<<2)>>2]|0,ft=y(h[o+908+(He<<2)>>2]),ft=y(ft-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(nt<<2)>>2]<<2)>>2]=ft)}while(!1);Ry(l,Le)|0&&!(ya(l,Le)|0)?(He=n[976+(Le<<2)>>2]|0,ft=y(h[o+908+(He<<2)>>2]),ft=y(ft-y(h[l+908+(He<<2)>>2])),ft=y(ft-y(_n(o,Le))),ft=y(ft-y(re(l,Le,u))),ft=y(ft-y(kh(l,Le,Te?d:u))),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ft):Xe=30;do if((Xe|0)==30&&!(ya(l,Le)|0)){if((as(o,l)|0)==2){He=n[976+(Le<<2)>>2]|0,ft=y(h[o+908+(He<<2)>>2]),ft=y(y(ft-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ft;break}He=(as(o,l)|0)==3,He^(n[o+28>>2]|0)==2&&(He=n[976+(Le<<2)>>2]|0,ft=y(h[o+908+(He<<2)>>2]),ft=y(ft-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ft)}while(!1)}function z1(o,l,u){o=o|0,l=l|0,u=u|0;var A=$e,d=0;d=n[976+(u<<2)>>2]|0,A=y(h[l+908+(d<<2)>>2]),A=y(y(h[o+908+(d<<2)>>2])-A),A=y(A-y(h[l+400+(n[1040+(u<<2)>>2]<<2)>>2])),h[l+400+(n[1e3+(u<<2)>>2]<<2)>>2]=A}function Vg(o){return o=o|0,(o|1|0)==1|0}function xL(o){o=o|0;var l=$e;switch(n[o+56>>2]|0){case 0:case 3:{l=y(h[o+40>>2]),l>y(0)&((Mt(l)|0)^1)?o=s[(n[o+976>>2]|0)+2>>0]|0?1056:992:o=1056;break}default:o=o+52|0}return o|0}function Z1(o,l){return o=o|0,l=l|0,(s[o+l>>0]|0)!=0|0}function Ry(o,l){return o=o|0,l=l|0,o=o+132|0,ge(l)|0&&n[(Rn(o,5,948)|0)+4>>2]|0?o=1:o=(n[(Rn(o,n[1e3+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,o|0}function kh(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0;return o=o+132|0,ge(l)|0&&(A=Rn(o,5,948)|0,(n[A+4>>2]|0)!=0)?d=4:(A=Rn(o,n[1e3+(l<<2)>>2]|0,948)|0,n[A+4>>2]|0?d=4:u=y(0)),(d|0)==4&&(u=y(Xr(A,u))),y(u)}function uP(o,l,u){return o=o|0,l=l|0,u=y(u),ya(o,l)|0?u=y(ZA(o,l,u)):u=y(-y(kh(o,l,u))),y(u)}function fP(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function Ty(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Jt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function AP(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Fy(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function pP(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;if(B=o+4|0,k=n[B>>2]|0,d=k-A|0,m=d>>2,o=l+(m<<2)|0,o>>>0<u>>>0){A=k;do n[A>>2]=n[o>>2],o=o+4|0,A=(n[B>>2]|0)+4|0,n[B>>2]=A;while(o>>>0<u>>>0)}m|0&&BB(k+(0-m<<2)|0,l|0,d|0)|0}function hP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0;return k=l+4|0,R=n[k>>2]|0,d=n[o>>2]|0,B=u,m=B-d|0,A=R+(0-(m>>2)<<2)|0,n[k>>2]=A,(m|0)>0&&Qr(A|0,d|0,m|0)|0,d=o+4|0,m=l+8|0,A=(n[d>>2]|0)-B|0,(A|0)>0&&(Qr(n[m>>2]|0,u|0,A|0)|0,n[m>>2]=(n[m>>2]|0)+(A>>>2<<2)),B=n[o>>2]|0,n[o>>2]=n[k>>2],n[k>>2]=B,B=n[d>>2]|0,n[d>>2]=n[m>>2],n[m>>2]=B,B=o+8|0,u=l+12|0,o=n[B>>2]|0,n[B>>2]=n[u>>2],n[u>>2]=o,n[l>>2]=n[k>>2],R|0}function X1(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;if(B=n[l>>2]|0,m=n[u>>2]|0,(B|0)!=(m|0)){d=o+8|0,u=((m+-4-B|0)>>>2)+1|0,o=B,A=n[d>>2]|0;do n[A>>2]=n[o>>2],A=(n[d>>2]|0)+4|0,n[d>>2]=A,o=o+4|0;while((o|0)!=(m|0));n[l>>2]=B+(u<<2)}}function $1(){ha()}function gP(){var o=0;return o=Jt(4)|0,eB(o),o|0}function eB(o){o=o|0,n[o>>2]=pc()|0}function dP(o){o=o|0,o|0&&(Yg(o),It(o))}function Yg(o){o=o|0,ot(n[o>>2]|0)}function kL(o,l,u){o=o|0,l=l|0,u=u|0,hc(n[o>>2]|0,l,u)}function Ny(o,l){o=o|0,l=y(l),vh(n[o>>2]|0,l)}function Oy(o,l){return o=o|0,l=l|0,Z1(n[o>>2]|0,l)|0}function Ly(){var o=0;return o=Jt(8)|0,Kg(o,0),o|0}function Kg(o,l){o=o|0,l=l|0,l?l=ga(n[l>>2]|0)|0:l=is()|0,n[o>>2]=l,n[o+4>>2]=0,Fn(l,o)}function My(o){o=o|0;var l=0;return l=Jt(8)|0,Kg(l,o),l|0}function Jg(o){o=o|0,o|0&&(Uy(o),It(o))}function Uy(o){o=o|0;var l=0;fc(n[o>>2]|0),l=o+4|0,o=n[l>>2]|0,n[l>>2]=0,o|0&&(bf(o),It(o))}function bf(o){o=o|0,Pf(o)}function Pf(o){o=o|0,o=n[o>>2]|0,o|0&&ja(o|0)}function tB(o){return o=o|0,Ja(o)|0}function rB(o){o=o|0;var l=0,u=0;u=o+4|0,l=n[u>>2]|0,n[u>>2]=0,l|0&&(bf(l),It(l)),Ac(n[o>>2]|0)}function _y(o,l){o=o|0,l=l|0,pn(n[o>>2]|0,n[l>>2]|0)}function QL(o,l){o=o|0,l=l|0,Ih(n[o>>2]|0,l)}function RL(o,l,u){o=o|0,l=l|0,u=+u,vy(n[o>>2]|0,l,y(u))}function Hy(o,l,u){o=o|0,l=l|0,u=+u,Sy(n[o>>2]|0,l,y(u))}function nB(o,l){o=o|0,l=l|0,mh(n[o>>2]|0,l)}function iB(o,l){o=o|0,l=l|0,ko(n[o>>2]|0,l)}function xr(o,l){o=o|0,l=l|0,Eh(n[o>>2]|0,l)}function fo(o,l){o=o|0,l=l|0,Iy(n[o>>2]|0,l)}function Zi(o,l){o=o|0,l=l|0,Tg(n[o>>2]|0,l)}function Ms(o,l){o=o|0,l=l|0,xo(n[o>>2]|0,l)}function $A(o,l,u){o=o|0,l=l|0,u=+u,jA(n[o>>2]|0,l,y(u))}function sB(o,l,u){o=o|0,l=l|0,u=+u,W(n[o>>2]|0,l,y(u))}function Ss(o,l){o=o|0,l=l|0,GA(n[o>>2]|0,l)}function jy(o,l){o=o|0,l=l|0,wy(n[o>>2]|0,l)}function Qh(o,l){o=o|0,l=l|0,Qo(n[o>>2]|0,l)}function zg(o,l){o=o|0,l=+l,Ch(n[o>>2]|0,y(l))}function Rh(o,l){o=o|0,l=+l,Tl(n[o>>2]|0,y(l))}function oB(o,l){o=o|0,l=+l,By(n[o>>2]|0,y(l))}function aB(o,l){o=o|0,l=+l,Ng(n[o>>2]|0,y(l))}function lB(o,l){o=o|0,l=+l,Rl(n[o>>2]|0,y(l))}function cB(o,l){o=o|0,l=+l,Og(n[o>>2]|0,y(l))}function xf(o,l){o=o|0,l=+l,V1(n[o>>2]|0,y(l))}function sr(o){o=o|0,wh(n[o>>2]|0)}function Gy(o,l){o=o|0,l=+l,zi(n[o>>2]|0,y(l))}function uB(o,l){o=o|0,l=+l,If(n[o>>2]|0,y(l))}function gc(o){o=o|0,za(n[o>>2]|0)}function kf(o,l){o=o|0,l=+l,hu(n[o>>2]|0,y(l))}function Zg(o,l){o=o|0,l=+l,Cf(n[o>>2]|0,y(l))}function Xg(o,l){o=o|0,l=+l,mi(n[o>>2]|0,y(l))}function fB(o,l){o=o|0,l=+l,qA(n[o>>2]|0,y(l))}function AB(o,l){o=o|0,l=+l,da(n[o>>2]|0,y(l))}function Iu(o,l){o=o|0,l=+l,Xa(n[o>>2]|0,y(l))}function $g(o,l){o=o|0,l=+l,Bh(n[o>>2]|0,y(l))}function pB(o,l){o=o|0,l=+l,Ug(n[o>>2]|0,y(l))}function qy(o,l){o=o|0,l=+l,WA(n[o>>2]|0,y(l))}function Cu(o,l,u){o=o|0,l=l|0,u=+u,pu(n[o>>2]|0,l,y(u))}function Wy(o,l,u){o=o|0,l=l|0,u=+u,Ro(n[o>>2]|0,l,y(u))}function ed(o,l,u){o=o|0,l=l|0,u=+u,Ef(n[o>>2]|0,l,y(u))}function td(o){return o=o|0,Rg(n[o>>2]|0)|0}function No(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,HA(d,n[l>>2]|0,u),Ds(o,d),I=A}function Ds(o,l){o=o|0,l=l|0,Ml(o,n[l+4>>2]|0,+y(h[l>>2]))}function Ml(o,l,u){o=o|0,l=l|0,u=+u,n[o>>2]=l,E[o+8>>3]=u}function Vy(o){return o=o|0,W1(n[o>>2]|0)|0}function Ea(o){return o=o|0,yh(n[o>>2]|0)|0}function mP(o){return o=o|0,Au(n[o>>2]|0)|0}function Th(o){return o=o|0,q1(n[o>>2]|0)|0}function hB(o){return o=o|0,Fg(n[o>>2]|0)|0}function TL(o){return o=o|0,Cy(n[o>>2]|0)|0}function yP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,xt(d,n[l>>2]|0,u),Ds(o,d),I=A}function EP(o){return o=o|0,yf(n[o>>2]|0)|0}function Yy(o){return o=o|0,Ql(n[o>>2]|0)|0}function gB(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,_A(A,n[l>>2]|0),Ds(o,A),I=u}function Fh(o){return o=o|0,+ +y(ci(n[o>>2]|0))}function IP(o){return o=o|0,+ +y(qi(n[o>>2]|0))}function CP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,ur(A,n[l>>2]|0),Ds(o,A),I=u}function rd(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Lg(A,n[l>>2]|0),Ds(o,A),I=u}function FL(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,wt(A,n[l>>2]|0),Ds(o,A),I=u}function NL(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Za(A,n[l>>2]|0),Ds(o,A),I=u}function wP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Mg(A,n[l>>2]|0),Ds(o,A),I=u}function BP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,by(A,n[l>>2]|0),Ds(o,A),I=u}function ep(o){return o=o|0,+ +y(_g(n[o>>2]|0))}function OL(o,l){return o=o|0,l=l|0,+ +y(Dy(n[o>>2]|0,l))}function LL(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,yt(d,n[l>>2]|0,u),Ds(o,d),I=A}function wu(o,l,u){o=o|0,l=l|0,u=u|0,lr(n[o>>2]|0,n[l>>2]|0,u)}function ML(o,l){o=o|0,l=l|0,mf(n[o>>2]|0,n[l>>2]|0)}function vP(o){return o=o|0,Mi(n[o>>2]|0)|0}function UL(o){return o=o|0,o=Et(n[o>>2]|0)|0,o?o=tB(o)|0:o=0,o|0}function SP(o,l){return o=o|0,l=l|0,o=Bs(n[o>>2]|0,l)|0,o?o=tB(o)|0:o=0,o|0}function Qf(o,l){o=o|0,l=l|0;var u=0,A=0;A=Jt(4)|0,DP(A,l),u=o+4|0,l=n[u>>2]|0,n[u>>2]=A,l|0&&(bf(l),It(l)),St(n[o>>2]|0,1)}function DP(o,l){o=o|0,l=l|0,qL(o,l)}function _L(o,l,u,A,d,m){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=m|0;var B=0,k=0;B=I,I=I+16|0,k=B,bP(k,Ja(l)|0,+u,A,+d,m),h[o>>2]=y(+E[k>>3]),h[o+4>>2]=y(+E[k+8>>3]),I=B}function bP(o,l,u,A,d,m){o=o|0,l=l|0,u=+u,A=A|0,d=+d,m=m|0;var B=0,k=0,R=0,M=0,L=0;B=I,I=I+32|0,L=B+8|0,M=B+20|0,R=B,k=B+16|0,E[L>>3]=u,n[M>>2]=A,E[R>>3]=d,n[k>>2]=m,Ky(o,n[l+4>>2]|0,L,M,R,k),I=B}function Ky(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0;B=I,I=I+16|0,k=B,_l(k),l=Us(l)|0,PP(o,l,+E[u>>3],n[A>>2]|0,+E[d>>3],n[m>>2]|0),Hl(k),I=B}function Us(o){return o=o|0,n[o>>2]|0}function PP(o,l,u,A,d,m){o=o|0,l=l|0,u=+u,A=A|0,d=+d,m=m|0;var B=0;B=Ia(dB()|0)|0,u=+el(u),A=Jy(A)|0,d=+el(d),HL(o,Zn(0,B|0,l|0,+u,A|0,+d,Jy(m)|0)|0)}function dB(){var o=0;return s[7608]|0||(yB(9120),o=7608,n[o>>2]=1,n[o+4>>2]=0),9120}function Ia(o){return o=o|0,n[o+8>>2]|0}function el(o){return o=+o,+ +Rf(o)}function Jy(o){return o=o|0,nd(o)|0}function HL(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+32|0,u=d,A=l,A&1?(tl(u,0),Ue(A|0,u|0)|0,mB(o,u),jL(u)):(n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2]),I=d}function tl(o,l){o=o|0,l=l|0,Bu(o,l),n[o+8>>2]=0,s[o+24>>0]=0}function mB(o,l){o=o|0,l=l|0,l=l+8|0,n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2]}function jL(o){o=o|0,s[o+24>>0]=0}function Bu(o,l){o=o|0,l=l|0,n[o>>2]=l}function nd(o){return o=o|0,o|0}function Rf(o){return o=+o,+o}function yB(o){o=o|0,Oo(o,EB()|0,4)}function EB(){return 1064}function Oo(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=Gi(l|0,u+1|0)|0}function qL(o,l){o=o|0,l=l|0,l=n[l>>2]|0,n[o>>2]=l,su(l|0)}function xP(o){o=o|0;var l=0,u=0;u=o+4|0,l=n[u>>2]|0,n[u>>2]=0,l|0&&(bf(l),It(l)),St(n[o>>2]|0,0)}function kP(o){o=o|0,bt(n[o>>2]|0)}function zy(o){return o=o|0,tr(n[o>>2]|0)|0}function WL(o,l,u,A){o=o|0,l=+l,u=+u,A=A|0,YA(n[o>>2]|0,y(l),y(u),A)}function VL(o){return o=o|0,+ +y(gu(n[o>>2]|0))}function v(o){return o=o|0,+ +y(wf(n[o>>2]|0))}function D(o){return o=o|0,+ +y(du(n[o>>2]|0))}function Q(o){return o=o|0,+ +y(Os(n[o>>2]|0))}function H(o){return o=o|0,+ +y(mu(n[o>>2]|0))}function V(o){return o=o|0,+ +y(qn(n[o>>2]|0))}function ne(o,l){o=o|0,l=l|0,E[o>>3]=+y(gu(n[l>>2]|0)),E[o+8>>3]=+y(wf(n[l>>2]|0)),E[o+16>>3]=+y(du(n[l>>2]|0)),E[o+24>>3]=+y(Os(n[l>>2]|0)),E[o+32>>3]=+y(mu(n[l>>2]|0)),E[o+40>>3]=+y(qn(n[l>>2]|0))}function ve(o,l){return o=o|0,l=l|0,+ +y(ss(n[o>>2]|0,l))}function _e(o,l){return o=o|0,l=l|0,+ +y(Pi(n[o>>2]|0,l))}function ht(o,l){return o=o|0,l=l|0,+ +y(VA(n[o>>2]|0,l))}function Wt(){return Tn()|0}function Sr(){Lr(),Xt(),Xn(),Ei(),rl(),rt()}function Lr(){$Me(11713,4938,1)}function Xt(){yMe(10448)}function Xn(){$Le(10408)}function Ei(){wLe(10324)}function rl(){kNe(10096)}function rt(){We(9132)}function We(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0,Te=0,nt=0,Xe=0,ft=0,He=0,Ve=0,Lt=0,Gr=0,fr=0,$t=0,Rr=0,Hr=0,cr=0,jn=0,Lo=0,Mo=0,Uo=0,il=0,Gh=0,qh=0,dc=0,Wh=0,Nf=0,Of=0,Vh=0,Yh=0,Kh=0,ln=0,mc=0,Jh=0,Du=0,zh=0,Zh=0,Lf=0,Mf=0,bu=0,Ao=0,Gl=0,Ca=0,yc=0,ap=0,lp=0,Uf=0,cp=0,up=0,po=0,Hs=0,Ec=0,Vn=0,fp=0,_o=0,Pu=0,Ho=0,xu=0,Ap=0,pp=0,ku=0,ho=0,Ic=0,hp=0,gp=0,dp=0,Nr=0,fi=0,js=0,jo=0,go=0,Mr=0,Ar=0,Cc=0;l=I,I=I+672|0,u=l+656|0,Cc=l+648|0,Ar=l+640|0,Mr=l+632|0,go=l+624|0,jo=l+616|0,js=l+608|0,fi=l+600|0,Nr=l+592|0,dp=l+584|0,gp=l+576|0,hp=l+568|0,Ic=l+560|0,ho=l+552|0,ku=l+544|0,pp=l+536|0,Ap=l+528|0,xu=l+520|0,Ho=l+512|0,Pu=l+504|0,_o=l+496|0,fp=l+488|0,Vn=l+480|0,Ec=l+472|0,Hs=l+464|0,po=l+456|0,up=l+448|0,cp=l+440|0,Uf=l+432|0,lp=l+424|0,ap=l+416|0,yc=l+408|0,Ca=l+400|0,Gl=l+392|0,Ao=l+384|0,bu=l+376|0,Mf=l+368|0,Lf=l+360|0,Zh=l+352|0,zh=l+344|0,Du=l+336|0,Jh=l+328|0,mc=l+320|0,ln=l+312|0,Kh=l+304|0,Yh=l+296|0,Vh=l+288|0,Of=l+280|0,Nf=l+272|0,Wh=l+264|0,dc=l+256|0,qh=l+248|0,Gh=l+240|0,il=l+232|0,Uo=l+224|0,Mo=l+216|0,Lo=l+208|0,jn=l+200|0,cr=l+192|0,Hr=l+184|0,Rr=l+176|0,$t=l+168|0,fr=l+160|0,Gr=l+152|0,Lt=l+144|0,Ve=l+136|0,He=l+128|0,ft=l+120|0,Xe=l+112|0,nt=l+104|0,Te=l+96|0,Le=l+88|0,Ye=l+80|0,oe=l+72|0,q=l+64|0,L=l+56|0,M=l+48|0,R=l+40|0,k=l+32|0,B=l+24|0,m=l+16|0,d=l+8|0,A=l,dt(o,3646),Zt(o,3651,2)|0,Dr(o,3665,2)|0,ti(o,3682,18)|0,n[Cc>>2]=19,n[Cc+4>>2]=0,n[u>>2]=n[Cc>>2],n[u+4>>2]=n[Cc+4>>2],kr(o,3690,u)|0,n[Ar>>2]=1,n[Ar+4>>2]=0,n[u>>2]=n[Ar>>2],n[u+4>>2]=n[Ar+4>>2],Nn(o,3696,u)|0,n[Mr>>2]=2,n[Mr+4>>2]=0,n[u>>2]=n[Mr>>2],n[u+4>>2]=n[Mr+4>>2],Hn(o,3706,u)|0,n[go>>2]=1,n[go+4>>2]=0,n[u>>2]=n[go>>2],n[u+4>>2]=n[go+4>>2],zr(o,3722,u)|0,n[jo>>2]=2,n[jo+4>>2]=0,n[u>>2]=n[jo>>2],n[u+4>>2]=n[jo+4>>2],zr(o,3734,u)|0,n[js>>2]=3,n[js+4>>2]=0,n[u>>2]=n[js>>2],n[u+4>>2]=n[js+4>>2],Hn(o,3753,u)|0,n[fi>>2]=4,n[fi+4>>2]=0,n[u>>2]=n[fi>>2],n[u+4>>2]=n[fi+4>>2],Hn(o,3769,u)|0,n[Nr>>2]=5,n[Nr+4>>2]=0,n[u>>2]=n[Nr>>2],n[u+4>>2]=n[Nr+4>>2],Hn(o,3783,u)|0,n[dp>>2]=6,n[dp+4>>2]=0,n[u>>2]=n[dp>>2],n[u+4>>2]=n[dp+4>>2],Hn(o,3796,u)|0,n[gp>>2]=7,n[gp+4>>2]=0,n[u>>2]=n[gp>>2],n[u+4>>2]=n[gp+4>>2],Hn(o,3813,u)|0,n[hp>>2]=8,n[hp+4>>2]=0,n[u>>2]=n[hp>>2],n[u+4>>2]=n[hp+4>>2],Hn(o,3825,u)|0,n[Ic>>2]=3,n[Ic+4>>2]=0,n[u>>2]=n[Ic>>2],n[u+4>>2]=n[Ic+4>>2],zr(o,3843,u)|0,n[ho>>2]=4,n[ho+4>>2]=0,n[u>>2]=n[ho>>2],n[u+4>>2]=n[ho+4>>2],zr(o,3853,u)|0,n[ku>>2]=9,n[ku+4>>2]=0,n[u>>2]=n[ku>>2],n[u+4>>2]=n[ku+4>>2],Hn(o,3870,u)|0,n[pp>>2]=10,n[pp+4>>2]=0,n[u>>2]=n[pp>>2],n[u+4>>2]=n[pp+4>>2],Hn(o,3884,u)|0,n[Ap>>2]=11,n[Ap+4>>2]=0,n[u>>2]=n[Ap>>2],n[u+4>>2]=n[Ap+4>>2],Hn(o,3896,u)|0,n[xu>>2]=1,n[xu+4>>2]=0,n[u>>2]=n[xu>>2],n[u+4>>2]=n[xu+4>>2],ui(o,3907,u)|0,n[Ho>>2]=2,n[Ho+4>>2]=0,n[u>>2]=n[Ho>>2],n[u+4>>2]=n[Ho+4>>2],ui(o,3915,u)|0,n[Pu>>2]=3,n[Pu+4>>2]=0,n[u>>2]=n[Pu>>2],n[u+4>>2]=n[Pu+4>>2],ui(o,3928,u)|0,n[_o>>2]=4,n[_o+4>>2]=0,n[u>>2]=n[_o>>2],n[u+4>>2]=n[_o+4>>2],ui(o,3948,u)|0,n[fp>>2]=5,n[fp+4>>2]=0,n[u>>2]=n[fp>>2],n[u+4>>2]=n[fp+4>>2],ui(o,3960,u)|0,n[Vn>>2]=6,n[Vn+4>>2]=0,n[u>>2]=n[Vn>>2],n[u+4>>2]=n[Vn+4>>2],ui(o,3974,u)|0,n[Ec>>2]=7,n[Ec+4>>2]=0,n[u>>2]=n[Ec>>2],n[u+4>>2]=n[Ec+4>>2],ui(o,3983,u)|0,n[Hs>>2]=20,n[Hs+4>>2]=0,n[u>>2]=n[Hs>>2],n[u+4>>2]=n[Hs+4>>2],kr(o,3999,u)|0,n[po>>2]=8,n[po+4>>2]=0,n[u>>2]=n[po>>2],n[u+4>>2]=n[po+4>>2],ui(o,4012,u)|0,n[up>>2]=9,n[up+4>>2]=0,n[u>>2]=n[up>>2],n[u+4>>2]=n[up+4>>2],ui(o,4022,u)|0,n[cp>>2]=21,n[cp+4>>2]=0,n[u>>2]=n[cp>>2],n[u+4>>2]=n[cp+4>>2],kr(o,4039,u)|0,n[Uf>>2]=10,n[Uf+4>>2]=0,n[u>>2]=n[Uf>>2],n[u+4>>2]=n[Uf+4>>2],ui(o,4053,u)|0,n[lp>>2]=11,n[lp+4>>2]=0,n[u>>2]=n[lp>>2],n[u+4>>2]=n[lp+4>>2],ui(o,4065,u)|0,n[ap>>2]=12,n[ap+4>>2]=0,n[u>>2]=n[ap>>2],n[u+4>>2]=n[ap+4>>2],ui(o,4084,u)|0,n[yc>>2]=13,n[yc+4>>2]=0,n[u>>2]=n[yc>>2],n[u+4>>2]=n[yc+4>>2],ui(o,4097,u)|0,n[Ca>>2]=14,n[Ca+4>>2]=0,n[u>>2]=n[Ca>>2],n[u+4>>2]=n[Ca+4>>2],ui(o,4117,u)|0,n[Gl>>2]=15,n[Gl+4>>2]=0,n[u>>2]=n[Gl>>2],n[u+4>>2]=n[Gl+4>>2],ui(o,4129,u)|0,n[Ao>>2]=16,n[Ao+4>>2]=0,n[u>>2]=n[Ao>>2],n[u+4>>2]=n[Ao+4>>2],ui(o,4148,u)|0,n[bu>>2]=17,n[bu+4>>2]=0,n[u>>2]=n[bu>>2],n[u+4>>2]=n[bu+4>>2],ui(o,4161,u)|0,n[Mf>>2]=18,n[Mf+4>>2]=0,n[u>>2]=n[Mf>>2],n[u+4>>2]=n[Mf+4>>2],ui(o,4181,u)|0,n[Lf>>2]=5,n[Lf+4>>2]=0,n[u>>2]=n[Lf>>2],n[u+4>>2]=n[Lf+4>>2],zr(o,4196,u)|0,n[Zh>>2]=6,n[Zh+4>>2]=0,n[u>>2]=n[Zh>>2],n[u+4>>2]=n[Zh+4>>2],zr(o,4206,u)|0,n[zh>>2]=7,n[zh+4>>2]=0,n[u>>2]=n[zh>>2],n[u+4>>2]=n[zh+4>>2],zr(o,4217,u)|0,n[Du>>2]=3,n[Du+4>>2]=0,n[u>>2]=n[Du>>2],n[u+4>>2]=n[Du+4>>2],vu(o,4235,u)|0,n[Jh>>2]=1,n[Jh+4>>2]=0,n[u>>2]=n[Jh>>2],n[u+4>>2]=n[Jh+4>>2],YL(o,4251,u)|0,n[mc>>2]=4,n[mc+4>>2]=0,n[u>>2]=n[mc>>2],n[u+4>>2]=n[mc+4>>2],vu(o,4263,u)|0,n[ln>>2]=5,n[ln+4>>2]=0,n[u>>2]=n[ln>>2],n[u+4>>2]=n[ln+4>>2],vu(o,4279,u)|0,n[Kh>>2]=6,n[Kh+4>>2]=0,n[u>>2]=n[Kh>>2],n[u+4>>2]=n[Kh+4>>2],vu(o,4293,u)|0,n[Yh>>2]=7,n[Yh+4>>2]=0,n[u>>2]=n[Yh>>2],n[u+4>>2]=n[Yh+4>>2],vu(o,4306,u)|0,n[Vh>>2]=8,n[Vh+4>>2]=0,n[u>>2]=n[Vh>>2],n[u+4>>2]=n[Vh+4>>2],vu(o,4323,u)|0,n[Of>>2]=9,n[Of+4>>2]=0,n[u>>2]=n[Of>>2],n[u+4>>2]=n[Of+4>>2],vu(o,4335,u)|0,n[Nf>>2]=2,n[Nf+4>>2]=0,n[u>>2]=n[Nf>>2],n[u+4>>2]=n[Nf+4>>2],YL(o,4353,u)|0,n[Wh>>2]=12,n[Wh+4>>2]=0,n[u>>2]=n[Wh>>2],n[u+4>>2]=n[Wh+4>>2],id(o,4363,u)|0,n[dc>>2]=1,n[dc+4>>2]=0,n[u>>2]=n[dc>>2],n[u+4>>2]=n[dc+4>>2],tp(o,4376,u)|0,n[qh>>2]=2,n[qh+4>>2]=0,n[u>>2]=n[qh>>2],n[u+4>>2]=n[qh+4>>2],tp(o,4388,u)|0,n[Gh>>2]=13,n[Gh+4>>2]=0,n[u>>2]=n[Gh>>2],n[u+4>>2]=n[Gh+4>>2],id(o,4402,u)|0,n[il>>2]=14,n[il+4>>2]=0,n[u>>2]=n[il>>2],n[u+4>>2]=n[il+4>>2],id(o,4411,u)|0,n[Uo>>2]=15,n[Uo+4>>2]=0,n[u>>2]=n[Uo>>2],n[u+4>>2]=n[Uo+4>>2],id(o,4421,u)|0,n[Mo>>2]=16,n[Mo+4>>2]=0,n[u>>2]=n[Mo>>2],n[u+4>>2]=n[Mo+4>>2],id(o,4433,u)|0,n[Lo>>2]=17,n[Lo+4>>2]=0,n[u>>2]=n[Lo>>2],n[u+4>>2]=n[Lo+4>>2],id(o,4446,u)|0,n[jn>>2]=18,n[jn+4>>2]=0,n[u>>2]=n[jn>>2],n[u+4>>2]=n[jn+4>>2],id(o,4458,u)|0,n[cr>>2]=3,n[cr+4>>2]=0,n[u>>2]=n[cr>>2],n[u+4>>2]=n[cr+4>>2],tp(o,4471,u)|0,n[Hr>>2]=1,n[Hr+4>>2]=0,n[u>>2]=n[Hr>>2],n[u+4>>2]=n[Hr+4>>2],QP(o,4486,u)|0,n[Rr>>2]=10,n[Rr+4>>2]=0,n[u>>2]=n[Rr>>2],n[u+4>>2]=n[Rr+4>>2],vu(o,4496,u)|0,n[$t>>2]=11,n[$t+4>>2]=0,n[u>>2]=n[$t>>2],n[u+4>>2]=n[$t+4>>2],vu(o,4508,u)|0,n[fr>>2]=3,n[fr+4>>2]=0,n[u>>2]=n[fr>>2],n[u+4>>2]=n[fr+4>>2],YL(o,4519,u)|0,n[Gr>>2]=4,n[Gr+4>>2]=0,n[u>>2]=n[Gr>>2],n[u+4>>2]=n[Gr+4>>2],aPe(o,4530,u)|0,n[Lt>>2]=19,n[Lt+4>>2]=0,n[u>>2]=n[Lt>>2],n[u+4>>2]=n[Lt+4>>2],lPe(o,4542,u)|0,n[Ve>>2]=12,n[Ve+4>>2]=0,n[u>>2]=n[Ve>>2],n[u+4>>2]=n[Ve+4>>2],cPe(o,4554,u)|0,n[He>>2]=13,n[He+4>>2]=0,n[u>>2]=n[He>>2],n[u+4>>2]=n[He+4>>2],uPe(o,4568,u)|0,n[ft>>2]=2,n[ft+4>>2]=0,n[u>>2]=n[ft>>2],n[u+4>>2]=n[ft+4>>2],fPe(o,4578,u)|0,n[Xe>>2]=20,n[Xe+4>>2]=0,n[u>>2]=n[Xe>>2],n[u+4>>2]=n[Xe+4>>2],APe(o,4587,u)|0,n[nt>>2]=22,n[nt+4>>2]=0,n[u>>2]=n[nt>>2],n[u+4>>2]=n[nt+4>>2],kr(o,4602,u)|0,n[Te>>2]=23,n[Te+4>>2]=0,n[u>>2]=n[Te>>2],n[u+4>>2]=n[Te+4>>2],kr(o,4619,u)|0,n[Le>>2]=14,n[Le+4>>2]=0,n[u>>2]=n[Le>>2],n[u+4>>2]=n[Le+4>>2],pPe(o,4629,u)|0,n[Ye>>2]=1,n[Ye+4>>2]=0,n[u>>2]=n[Ye>>2],n[u+4>>2]=n[Ye+4>>2],hPe(o,4637,u)|0,n[oe>>2]=4,n[oe+4>>2]=0,n[u>>2]=n[oe>>2],n[u+4>>2]=n[oe+4>>2],tp(o,4653,u)|0,n[q>>2]=5,n[q+4>>2]=0,n[u>>2]=n[q>>2],n[u+4>>2]=n[q+4>>2],tp(o,4669,u)|0,n[L>>2]=6,n[L+4>>2]=0,n[u>>2]=n[L>>2],n[u+4>>2]=n[L+4>>2],tp(o,4686,u)|0,n[M>>2]=7,n[M+4>>2]=0,n[u>>2]=n[M>>2],n[u+4>>2]=n[M+4>>2],tp(o,4701,u)|0,n[R>>2]=8,n[R+4>>2]=0,n[u>>2]=n[R>>2],n[u+4>>2]=n[R+4>>2],tp(o,4719,u)|0,n[k>>2]=9,n[k+4>>2]=0,n[u>>2]=n[k>>2],n[u+4>>2]=n[k+4>>2],tp(o,4736,u)|0,n[B>>2]=21,n[B+4>>2]=0,n[u>>2]=n[B>>2],n[u+4>>2]=n[B+4>>2],gPe(o,4754,u)|0,n[m>>2]=2,n[m+4>>2]=0,n[u>>2]=n[m>>2],n[u+4>>2]=n[m+4>>2],QP(o,4772,u)|0,n[d>>2]=3,n[d+4>>2]=0,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],QP(o,4790,u)|0,n[A>>2]=4,n[A+4>>2]=0,n[u>>2]=n[A>>2],n[u+4>>2]=n[A+4>>2],QP(o,4808,u)|0,I=l}function dt(o,l){o=o|0,l=l|0;var u=0;u=CNe()|0,n[o>>2]=u,wNe(u,l),_h(n[o>>2]|0)}function Zt(o,l,u){return o=o|0,l=l|0,u=u|0,aNe(o,Sn(l)|0,u,0),o|0}function Dr(o,l,u){return o=o|0,l=l|0,u=u|0,WFe(o,Sn(l)|0,u,0),o|0}function ti(o,l,u){return o=o|0,l=l|0,u=u|0,QFe(o,Sn(l)|0,u,0),o|0}function kr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],gFe(o,l,d),I=A,o|0}function Nn(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],zTe(o,l,d),I=A,o|0}function Hn(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],FTe(o,l,d),I=A,o|0}function zr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],yTe(o,l,d),I=A,o|0}function ui(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],rTe(o,l,d),I=A,o|0}function vu(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],_Re(o,l,d),I=A,o|0}function YL(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],vRe(o,l,d),I=A,o|0}function id(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],zQe(o,l,d),I=A,o|0}function tp(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],FQe(o,l,d),I=A,o|0}function QP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],yQe(o,l,d),I=A,o|0}function aPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],rQe(o,l,d),I=A,o|0}function lPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],_ke(o,l,d),I=A,o|0}function cPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Ske(o,l,d),I=A,o|0}function uPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],uke(o,l,d),I=A,o|0}function fPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Yxe(o,l,d),I=A,o|0}function APe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],kxe(o,l,d),I=A,o|0}function pPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],hxe(o,l,d),I=A,o|0}function hPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],zPe(o,l,d),I=A,o|0}function gPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],dPe(o,l,d),I=A,o|0}function dPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],mPe(o,u,d,1),I=A}function Sn(o){return o=o|0,o|0}function mPe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=KL()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=yPe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,EPe(m,A)|0,A),I=d}function KL(){var o=0,l=0;if(s[7616]|0||(FJ(9136),gr(24,9136,U|0)|0,l=7616,n[l>>2]=1,n[l+4>>2]=0),!(_r(9136)|0)){o=9136,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));FJ(9136)}return 9136}function yPe(o){return o=o|0,0}function EPe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=KL()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],TJ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(wPe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Dn(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0;B=I,I=I+32|0,oe=B+24|0,q=B+20|0,R=B+16|0,L=B+12|0,M=B+8|0,k=B+4|0,Ye=B,n[q>>2]=l,n[R>>2]=u,n[L>>2]=A,n[M>>2]=d,n[k>>2]=m,m=o+28|0,n[Ye>>2]=n[m>>2],n[oe>>2]=n[Ye>>2],IPe(o+24|0,oe,q,L,M,R,k)|0,n[m>>2]=n[n[m>>2]>>2],I=B}function IPe(o,l,u,A,d,m,B){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,o=CPe(l)|0,l=Jt(24)|0,RJ(l+4|0,n[u>>2]|0,n[A>>2]|0,n[d>>2]|0,n[m>>2]|0,n[B>>2]|0),n[l>>2]=n[o>>2],n[o>>2]=l,l|0}function CPe(o){return o=o|0,n[o>>2]|0}function RJ(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=A,n[o+12>>2]=d,n[o+16>>2]=m}function yr(o,l){return o=o|0,l=l|0,l|o|0}function TJ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function wPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=BPe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,vPe(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],TJ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,SPe(o,k),DPe(k),I=M;return}}function BPe(o){return o=o|0,357913941}function vPe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function SPe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function DPe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function FJ(o){o=o|0,xPe(o)}function bPe(o){o=o|0,PPe(o+24|0)}function _r(o){return o=o|0,n[o>>2]|0}function PPe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function xPe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,3,l,kPe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function tn(){return 9228}function kPe(){return 1140}function QPe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=RPe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=TPe(l,A)|0,I=u,l|0}function rn(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=A,n[o+12>>2]=d,n[o+16>>2]=m}function RPe(o){return o=o|0,(n[(KL()|0)+24>>2]|0)+(o*12|0)|0}function TPe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+48|0,A=d,u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),op[u&31](A,o),A=FPe(A)|0,I=d,A|0}function FPe(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=JL(NJ()|0)|0,A?(zL(l,A),ZL(u,l),NPe(o,u),o=XL(l)|0):o=OPe(o)|0,I=d,o|0}function NJ(){var o=0;return s[7632]|0||(VPe(9184),gr(25,9184,U|0)|0,o=7632,n[o>>2]=1,n[o+4>>2]=0),9184}function JL(o){return o=o|0,n[o+36>>2]|0}function zL(o,l){o=o|0,l=l|0,n[o>>2]=l,n[o+4>>2]=o,n[o+8>>2]=0}function ZL(o,l){o=o|0,l=l|0,n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=0}function NPe(o,l){o=o|0,l=l|0,_Pe(l,o,o+8|0,o+16|0,o+24|0,o+32|0,o+40|0)|0}function XL(o){return o=o|0,n[(n[o+4>>2]|0)+8>>2]|0}function OPe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,R=0;R=I,I=I+16|0,u=R+4|0,A=R,d=Ul(8)|0,m=d,B=Jt(48)|0,k=B,l=k+48|0;do n[k>>2]=n[o>>2],k=k+4|0,o=o+4|0;while((k|0)<(l|0));return l=m+4|0,n[l>>2]=B,k=Jt(8)|0,B=n[l>>2]|0,n[A>>2]=0,n[u>>2]=n[A>>2],OJ(k,B,u),n[d>>2]=k,I=R,m|0}function OJ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1092,n[u+12>>2]=l,n[o+4>>2]=u}function LPe(o){o=o|0,rE(o),It(o)}function MPe(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function UPe(o){o=o|0,It(o)}function _Pe(o,l,u,A,d,m,B){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,m=HPe(n[o>>2]|0,l,u,A,d,m,B)|0,B=o+4|0,n[(n[B>>2]|0)+8>>2]=m,n[(n[B>>2]|0)+8>>2]|0}function HPe(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0;var k=0,R=0;return k=I,I=I+16|0,R=k,_l(R),o=Us(o)|0,B=jPe(o,+E[l>>3],+E[u>>3],+E[A>>3],+E[d>>3],+E[m>>3],+E[B>>3])|0,Hl(R),I=k,B|0}function jPe(o,l,u,A,d,m,B){o=o|0,l=+l,u=+u,A=+A,d=+d,m=+m,B=+B;var k=0;return k=Ia(GPe()|0)|0,l=+el(l),u=+el(u),A=+el(A),d=+el(d),m=+el(m),lo(0,k|0,o|0,+l,+u,+A,+d,+m,+ +el(B))|0}function GPe(){var o=0;return s[7624]|0||(qPe(9172),o=7624,n[o>>2]=1,n[o+4>>2]=0),9172}function qPe(o){o=o|0,Oo(o,WPe()|0,6)}function WPe(){return 1112}function VPe(o){o=o|0,Nh(o)}function YPe(o){o=o|0,LJ(o+24|0),MJ(o+16|0)}function LJ(o){o=o|0,JPe(o)}function MJ(o){o=o|0,KPe(o)}function KPe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function JPe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function Nh(o){o=o|0;var l=0;n[o+16>>2]=0,n[o+20>>2]=0,l=o+24|0,n[l>>2]=0,n[o+28>>2]=l,n[o+36>>2]=0,s[o+40>>0]=0,s[o+41>>0]=0}function zPe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ZPe(o,u,d,0),I=A}function ZPe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=$L()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=XPe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,$Pe(m,A)|0,A),I=d}function $L(){var o=0,l=0;if(s[7640]|0||(_J(9232),gr(26,9232,U|0)|0,l=7640,n[l>>2]=1,n[l+4>>2]=0),!(_r(9232)|0)){o=9232,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));_J(9232)}return 9232}function XPe(o){return o=o|0,0}function $Pe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=$L()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],UJ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(exe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function UJ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function exe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=txe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,rxe(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],UJ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,nxe(o,k),ixe(k),I=M;return}}function txe(o){return o=o|0,357913941}function rxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function nxe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function ixe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function _J(o){o=o|0,axe(o)}function sxe(o){o=o|0,oxe(o+24|0)}function oxe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function axe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,lxe()|0,3),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function lxe(){return 1144}function cxe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0;var m=0,B=0,k=0,R=0;m=I,I=I+16|0,B=m+8|0,k=m,R=uxe(o)|0,o=n[R+4>>2]|0,n[k>>2]=n[R>>2],n[k+4>>2]=o,n[B>>2]=n[k>>2],n[B+4>>2]=n[k+4>>2],fxe(l,B,u,A,d),I=m}function uxe(o){return o=o|0,(n[($L()|0)+24>>2]|0)+(o*12|0)|0}function fxe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0;var m=0,B=0,k=0,R=0,M=0;M=I,I=I+16|0,B=M+2|0,k=M+1|0,R=M,m=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(m=n[(n[o>>2]|0)+m>>2]|0),Tf(B,u),u=+Ff(B,u),Tf(k,A),A=+Ff(k,A),rp(R,d),R=np(R,d)|0,tX[m&1](o,u,A,R),I=M}function Tf(o,l){o=o|0,l=+l}function Ff(o,l){return o=o|0,l=+l,+ +pxe(l)}function rp(o,l){o=o|0,l=l|0}function np(o,l){return o=o|0,l=l|0,Axe(l)|0}function Axe(o){return o=o|0,o|0}function pxe(o){return o=+o,+o}function hxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],gxe(o,u,d,1),I=A}function gxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=eM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=dxe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,mxe(m,A)|0,A),I=d}function eM(){var o=0,l=0;if(s[7648]|0||(jJ(9268),gr(27,9268,U|0)|0,l=7648,n[l>>2]=1,n[l+4>>2]=0),!(_r(9268)|0)){o=9268,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));jJ(9268)}return 9268}function dxe(o){return o=o|0,0}function mxe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=eM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],HJ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(yxe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function HJ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function yxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=Exe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,Ixe(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],HJ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,Cxe(o,k),wxe(k),I=M;return}}function Exe(o){return o=o|0,357913941}function Ixe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function Cxe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function wxe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function jJ(o){o=o|0,Sxe(o)}function Bxe(o){o=o|0,vxe(o+24|0)}function vxe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function Sxe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,4,l,Dxe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Dxe(){return 1160}function bxe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=Pxe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=xxe(l,A)|0,I=u,l|0}function Pxe(o){return o=o|0,(n[(eM()|0)+24>>2]|0)+(o*12|0)|0}function xxe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),GJ(pd[u&31](o)|0)|0}function GJ(o){return o=o|0,o&1|0}function kxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Qxe(o,u,d,0),I=A}function Qxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=tM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=Rxe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,Txe(m,A)|0,A),I=d}function tM(){var o=0,l=0;if(s[7656]|0||(WJ(9304),gr(28,9304,U|0)|0,l=7656,n[l>>2]=1,n[l+4>>2]=0),!(_r(9304)|0)){o=9304,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));WJ(9304)}return 9304}function Rxe(o){return o=o|0,0}function Txe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=tM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],qJ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(Fxe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function qJ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function Fxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=Nxe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,Oxe(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],qJ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,Lxe(o,k),Mxe(k),I=M;return}}function Nxe(o){return o=o|0,357913941}function Oxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function Lxe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Mxe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function WJ(o){o=o|0,Hxe(o)}function Uxe(o){o=o|0,_xe(o+24|0)}function _xe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function Hxe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,jxe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function jxe(){return 1164}function Gxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=qxe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Wxe(l,d,u),I=A}function qxe(o){return o=o|0,(n[(tM()|0)+24>>2]|0)+(o*12|0)|0}function Wxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),Oh(d,u),u=Lh(d,u)|0,op[A&31](o,u),Mh(d),I=m}function Oh(o,l){o=o|0,l=l|0,Vxe(o,l)}function Lh(o,l){return o=o|0,l=l|0,o|0}function Mh(o){o=o|0,bf(o)}function Vxe(o,l){o=o|0,l=l|0,rM(o,l)}function rM(o,l){o=o|0,l=l|0,n[o>>2]=l}function Yxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Kxe(o,u,d,0),I=A}function Kxe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=nM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=Jxe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,zxe(m,A)|0,A),I=d}function nM(){var o=0,l=0;if(s[7664]|0||(YJ(9340),gr(29,9340,U|0)|0,l=7664,n[l>>2]=1,n[l+4>>2]=0),!(_r(9340)|0)){o=9340,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));YJ(9340)}return 9340}function Jxe(o){return o=o|0,0}function zxe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=nM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],VJ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(Zxe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function VJ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function Zxe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=Xxe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,$xe(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],VJ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,eke(o,k),tke(k),I=M;return}}function Xxe(o){return o=o|0,357913941}function $xe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function eke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function tke(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function YJ(o){o=o|0,ike(o)}function rke(o){o=o|0,nke(o+24|0)}function nke(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function ike(o){o=o|0;var l=0;l=tn()|0,rn(o,2,4,l,ske()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function ske(){return 1180}function oke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=ake(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=lke(l,d,u)|0,I=A,u|0}function ake(o){return o=o|0,(n[(nM()|0)+24>>2]|0)+(o*12|0)|0}function lke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),sd(d,u),d=od(d,u)|0,d=RP($M[A&15](o,d)|0)|0,I=m,d|0}function sd(o,l){o=o|0,l=l|0}function od(o,l){return o=o|0,l=l|0,cke(l)|0}function RP(o){return o=o|0,o|0}function cke(o){return o=o|0,o|0}function uke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fke(o,u,d,0),I=A}function fke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=iM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=Ake(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,pke(m,A)|0,A),I=d}function iM(){var o=0,l=0;if(s[7672]|0||(JJ(9376),gr(30,9376,U|0)|0,l=7672,n[l>>2]=1,n[l+4>>2]=0),!(_r(9376)|0)){o=9376,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));JJ(9376)}return 9376}function Ake(o){return o=o|0,0}function pke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=iM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],KJ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(hke(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function KJ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function hke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=gke(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,dke(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],KJ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,mke(o,k),yke(k),I=M;return}}function gke(o){return o=o|0,357913941}function dke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function mke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function yke(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function JJ(o){o=o|0,Cke(o)}function Eke(o){o=o|0,Ike(o+24|0)}function Ike(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function Cke(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,zJ()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function zJ(){return 1196}function wke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=Bke(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=vke(l,A)|0,I=u,l|0}function Bke(o){return o=o|0,(n[(iM()|0)+24>>2]|0)+(o*12|0)|0}function vke(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),RP(pd[u&31](o)|0)|0}function Ske(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Dke(o,u,d,1),I=A}function Dke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=sM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=bke(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,Pke(m,A)|0,A),I=d}function sM(){var o=0,l=0;if(s[7680]|0||(XJ(9412),gr(31,9412,U|0)|0,l=7680,n[l>>2]=1,n[l+4>>2]=0),!(_r(9412)|0)){o=9412,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));XJ(9412)}return 9412}function bke(o){return o=o|0,0}function Pke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=sM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],ZJ(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(xke(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function ZJ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function xke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=kke(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,Qke(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],ZJ(m,A,u),n[R>>2]=(n[R>>2]|0)+12,Rke(o,k),Tke(k),I=M;return}}function kke(o){return o=o|0,357913941}function Qke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function Rke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Tke(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function XJ(o){o=o|0,Oke(o)}function Fke(o){o=o|0,Nke(o+24|0)}function Nke(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function Oke(o){o=o|0;var l=0;l=tn()|0,rn(o,2,6,l,$J()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function $J(){return 1200}function Lke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=Mke(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=Uke(l,A)|0,I=u,l|0}function Mke(o){return o=o|0,(n[(sM()|0)+24>>2]|0)+(o*12|0)|0}function Uke(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),TP(pd[u&31](o)|0)|0}function TP(o){return o=o|0,o|0}function _ke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Hke(o,u,d,0),I=A}function Hke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=oM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=jke(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,Gke(m,A)|0,A),I=d}function oM(){var o=0,l=0;if(s[7688]|0||(tz(9448),gr(32,9448,U|0)|0,l=7688,n[l>>2]=1,n[l+4>>2]=0),!(_r(9448)|0)){o=9448,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));tz(9448)}return 9448}function jke(o){return o=o|0,0}function Gke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=oM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],ez(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(qke(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function ez(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function qke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=Wke(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,Vke(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],ez(m,A,u),n[R>>2]=(n[R>>2]|0)+12,Yke(o,k),Kke(k),I=M;return}}function Wke(o){return o=o|0,357913941}function Vke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function Yke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Kke(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function tz(o){o=o|0,Zke(o)}function Jke(o){o=o|0,zke(o+24|0)}function zke(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function Zke(o){o=o|0;var l=0;l=tn()|0,rn(o,2,6,l,rz()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function rz(){return 1204}function Xke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=$ke(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],eQe(l,d,u),I=A}function $ke(o){return o=o|0,(n[(oM()|0)+24>>2]|0)+(o*12|0)|0}function eQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),aM(d,u),d=lM(d,u)|0,op[A&31](o,d),I=m}function aM(o,l){o=o|0,l=l|0}function lM(o,l){return o=o|0,l=l|0,tQe(l)|0}function tQe(o){return o=o|0,o|0}function rQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],nQe(o,u,d,0),I=A}function nQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=cM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=iQe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,sQe(m,A)|0,A),I=d}function cM(){var o=0,l=0;if(s[7696]|0||(iz(9484),gr(33,9484,U|0)|0,l=7696,n[l>>2]=1,n[l+4>>2]=0),!(_r(9484)|0)){o=9484,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));iz(9484)}return 9484}function iQe(o){return o=o|0,0}function sQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=cM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],nz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(oQe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function nz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function oQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=aQe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,lQe(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],nz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,cQe(o,k),uQe(k),I=M;return}}function aQe(o){return o=o|0,357913941}function lQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function cQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function uQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function iz(o){o=o|0,pQe(o)}function fQe(o){o=o|0,AQe(o+24|0)}function AQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function pQe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,hQe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function hQe(){return 1212}function gQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=dQe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],mQe(l,m,u,A),I=d}function dQe(o){return o=o|0,(n[(cM()|0)+24>>2]|0)+(o*12|0)|0}function mQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),aM(m,u),m=lM(m,u)|0,sd(B,A),B=od(B,A)|0,DB[d&15](o,m,B),I=k}function yQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],EQe(o,u,d,1),I=A}function EQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=uM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=IQe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,CQe(m,A)|0,A),I=d}function uM(){var o=0,l=0;if(s[7704]|0||(oz(9520),gr(34,9520,U|0)|0,l=7704,n[l>>2]=1,n[l+4>>2]=0),!(_r(9520)|0)){o=9520,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));oz(9520)}return 9520}function IQe(o){return o=o|0,0}function CQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=uM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],sz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(wQe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function sz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function wQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=BQe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,vQe(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],sz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,SQe(o,k),DQe(k),I=M;return}}function BQe(o){return o=o|0,357913941}function vQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function SQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function DQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function oz(o){o=o|0,xQe(o)}function bQe(o){o=o|0,PQe(o+24|0)}function PQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function xQe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,kQe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function kQe(){return 1224}function QQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;return d=I,I=I+16|0,m=d+8|0,B=d,k=RQe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],A=+TQe(l,m,u),I=d,+A}function RQe(o){return o=o|0,(n[(uM()|0)+24>>2]|0)+(o*12|0)|0}function TQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),rp(d,u),d=np(d,u)|0,B=+Rf(+nX[A&7](o,d)),I=m,+B}function FQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],NQe(o,u,d,1),I=A}function NQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=fM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=OQe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,LQe(m,A)|0,A),I=d}function fM(){var o=0,l=0;if(s[7712]|0||(lz(9556),gr(35,9556,U|0)|0,l=7712,n[l>>2]=1,n[l+4>>2]=0),!(_r(9556)|0)){o=9556,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));lz(9556)}return 9556}function OQe(o){return o=o|0,0}function LQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=fM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],az(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(MQe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function az(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function MQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=UQe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,_Qe(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],az(m,A,u),n[R>>2]=(n[R>>2]|0)+12,HQe(o,k),jQe(k),I=M;return}}function UQe(o){return o=o|0,357913941}function _Qe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function HQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function jQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function lz(o){o=o|0,WQe(o)}function GQe(o){o=o|0,qQe(o+24|0)}function qQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function WQe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,VQe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function VQe(){return 1232}function YQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=KQe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=+JQe(l,d),I=A,+u}function KQe(o){return o=o|0,(n[(fM()|0)+24>>2]|0)+(o*12|0)|0}function JQe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),+ +Rf(+rX[u&15](o))}function zQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ZQe(o,u,d,1),I=A}function ZQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=AM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=XQe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,$Qe(m,A)|0,A),I=d}function AM(){var o=0,l=0;if(s[7720]|0||(uz(9592),gr(36,9592,U|0)|0,l=7720,n[l>>2]=1,n[l+4>>2]=0),!(_r(9592)|0)){o=9592,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));uz(9592)}return 9592}function XQe(o){return o=o|0,0}function $Qe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=AM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],cz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(eRe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function cz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function eRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=tRe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,rRe(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],cz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,nRe(o,k),iRe(k),I=M;return}}function tRe(o){return o=o|0,357913941}function rRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function nRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function iRe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function uz(o){o=o|0,aRe(o)}function sRe(o){o=o|0,oRe(o+24|0)}function oRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function aRe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,7,l,lRe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function lRe(){return 1276}function cRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=uRe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=fRe(l,A)|0,I=u,l|0}function uRe(o){return o=o|0,(n[(AM()|0)+24>>2]|0)+(o*12|0)|0}function fRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+16|0,A=d,u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),op[u&31](A,o),A=fz(A)|0,I=d,A|0}function fz(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=JL(Az()|0)|0,A?(zL(l,A),ZL(u,l),ARe(o,u),o=XL(l)|0):o=pRe(o)|0,I=d,o|0}function Az(){var o=0;return s[7736]|0||(BRe(9640),gr(25,9640,U|0)|0,o=7736,n[o>>2]=1,n[o+4>>2]=0),9640}function ARe(o,l){o=o|0,l=l|0,mRe(l,o,o+8|0)|0}function pRe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Ul(8)|0,l=A,k=Jt(16)|0,n[k>>2]=n[o>>2],n[k+4>>2]=n[o+4>>2],n[k+8>>2]=n[o+8>>2],n[k+12>>2]=n[o+12>>2],m=l+4|0,n[m>>2]=k,o=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],pM(o,m,d),n[A>>2]=o,I=u,l|0}function pM(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1244,n[u+12>>2]=l,n[o+4>>2]=u}function hRe(o){o=o|0,rE(o),It(o)}function gRe(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function dRe(o){o=o|0,It(o)}function mRe(o,l,u){return o=o|0,l=l|0,u=u|0,l=yRe(n[o>>2]|0,l,u)|0,u=o+4|0,n[(n[u>>2]|0)+8>>2]=l,n[(n[u>>2]|0)+8>>2]|0}function yRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;return A=I,I=I+16|0,d=A,_l(d),o=Us(o)|0,u=ERe(o,n[l>>2]|0,+E[u>>3])|0,Hl(d),I=A,u|0}function ERe(o,l,u){o=o|0,l=l|0,u=+u;var A=0;return A=Ia(IRe()|0)|0,l=Jy(l)|0,iu(0,A|0,o|0,l|0,+ +el(u))|0}function IRe(){var o=0;return s[7728]|0||(CRe(9628),o=7728,n[o>>2]=1,n[o+4>>2]=0),9628}function CRe(o){o=o|0,Oo(o,wRe()|0,2)}function wRe(){return 1264}function BRe(o){o=o|0,Nh(o)}function vRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],SRe(o,u,d,1),I=A}function SRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=hM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=DRe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,bRe(m,A)|0,A),I=d}function hM(){var o=0,l=0;if(s[7744]|0||(hz(9684),gr(37,9684,U|0)|0,l=7744,n[l>>2]=1,n[l+4>>2]=0),!(_r(9684)|0)){o=9684,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));hz(9684)}return 9684}function DRe(o){return o=o|0,0}function bRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=hM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],pz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(PRe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function pz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function PRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=xRe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,kRe(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],pz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,QRe(o,k),RRe(k),I=M;return}}function xRe(o){return o=o|0,357913941}function kRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function QRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function RRe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function hz(o){o=o|0,NRe(o)}function TRe(o){o=o|0,FRe(o+24|0)}function FRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function NRe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,ORe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function ORe(){return 1280}function LRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=MRe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=URe(l,d,u)|0,I=A,u|0}function MRe(o){return o=o|0,(n[(hM()|0)+24>>2]|0)+(o*12|0)|0}function URe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return B=I,I=I+32|0,d=B,m=B+16|0,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),rp(m,u),m=np(m,u)|0,DB[A&15](d,o,m),m=fz(d)|0,I=B,m|0}function _Re(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],HRe(o,u,d,1),I=A}function HRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=gM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=jRe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,GRe(m,A)|0,A),I=d}function gM(){var o=0,l=0;if(s[7752]|0||(dz(9720),gr(38,9720,U|0)|0,l=7752,n[l>>2]=1,n[l+4>>2]=0),!(_r(9720)|0)){o=9720,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));dz(9720)}return 9720}function jRe(o){return o=o|0,0}function GRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=gM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],gz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(qRe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function gz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function qRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=WRe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,VRe(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],gz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,YRe(o,k),KRe(k),I=M;return}}function WRe(o){return o=o|0,357913941}function VRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function YRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function KRe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function dz(o){o=o|0,ZRe(o)}function JRe(o){o=o|0,zRe(o+24|0)}function zRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function ZRe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,8,l,XRe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function XRe(){return 1288}function $Re(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=eTe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=tTe(l,A)|0,I=u,l|0}function eTe(o){return o=o|0,(n[(gM()|0)+24>>2]|0)+(o*12|0)|0}function tTe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),nd(pd[u&31](o)|0)|0}function rTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],nTe(o,u,d,0),I=A}function nTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=dM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=iTe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,sTe(m,A)|0,A),I=d}function dM(){var o=0,l=0;if(s[7760]|0||(yz(9756),gr(39,9756,U|0)|0,l=7760,n[l>>2]=1,n[l+4>>2]=0),!(_r(9756)|0)){o=9756,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));yz(9756)}return 9756}function iTe(o){return o=o|0,0}function sTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=dM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],mz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(oTe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function mz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function oTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=aTe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,lTe(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],mz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,cTe(o,k),uTe(k),I=M;return}}function aTe(o){return o=o|0,357913941}function lTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function cTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function uTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function yz(o){o=o|0,pTe(o)}function fTe(o){o=o|0,ATe(o+24|0)}function ATe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function pTe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,8,l,hTe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function hTe(){return 1292}function gTe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=dTe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],mTe(l,d,u),I=A}function dTe(o){return o=o|0,(n[(dM()|0)+24>>2]|0)+(o*12|0)|0}function mTe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),Tf(d,u),u=+Ff(d,u),$Z[A&31](o,u),I=m}function yTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ETe(o,u,d,0),I=A}function ETe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=mM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=ITe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,CTe(m,A)|0,A),I=d}function mM(){var o=0,l=0;if(s[7768]|0||(Iz(9792),gr(40,9792,U|0)|0,l=7768,n[l>>2]=1,n[l+4>>2]=0),!(_r(9792)|0)){o=9792,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Iz(9792)}return 9792}function ITe(o){return o=o|0,0}function CTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=mM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Ez(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(wTe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Ez(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function wTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=BTe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,vTe(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Ez(m,A,u),n[R>>2]=(n[R>>2]|0)+12,STe(o,k),DTe(k),I=M;return}}function BTe(o){return o=o|0,357913941}function vTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function STe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function DTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Iz(o){o=o|0,xTe(o)}function bTe(o){o=o|0,PTe(o+24|0)}function PTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function xTe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,kTe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function kTe(){return 1300}function QTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=RTe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],TTe(l,m,u,A),I=d}function RTe(o){return o=o|0,(n[(mM()|0)+24>>2]|0)+(o*12|0)|0}function TTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),rp(m,u),m=np(m,u)|0,Tf(B,A),A=+Ff(B,A),aX[d&15](o,m,A),I=k}function FTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],NTe(o,u,d,0),I=A}function NTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=yM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=OTe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,LTe(m,A)|0,A),I=d}function yM(){var o=0,l=0;if(s[7776]|0||(wz(9828),gr(41,9828,U|0)|0,l=7776,n[l>>2]=1,n[l+4>>2]=0),!(_r(9828)|0)){o=9828,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));wz(9828)}return 9828}function OTe(o){return o=o|0,0}function LTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=yM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Cz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(MTe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Cz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function MTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=UTe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,_Te(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Cz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,HTe(o,k),jTe(k),I=M;return}}function UTe(o){return o=o|0,357913941}function _Te(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function HTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function jTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function wz(o){o=o|0,WTe(o)}function GTe(o){o=o|0,qTe(o+24|0)}function qTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function WTe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,7,l,VTe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function VTe(){return 1312}function YTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=KTe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],JTe(l,d,u),I=A}function KTe(o){return o=o|0,(n[(yM()|0)+24>>2]|0)+(o*12|0)|0}function JTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),rp(d,u),d=np(d,u)|0,op[A&31](o,d),I=m}function zTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ZTe(o,u,d,0),I=A}function ZTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=EM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=XTe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,$Te(m,A)|0,A),I=d}function EM(){var o=0,l=0;if(s[7784]|0||(vz(9864),gr(42,9864,U|0)|0,l=7784,n[l>>2]=1,n[l+4>>2]=0),!(_r(9864)|0)){o=9864,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));vz(9864)}return 9864}function XTe(o){return o=o|0,0}function $Te(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=EM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Bz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(eFe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Bz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function eFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=tFe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,rFe(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Bz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,nFe(o,k),iFe(k),I=M;return}}function tFe(o){return o=o|0,357913941}function rFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function nFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function iFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function vz(o){o=o|0,aFe(o)}function sFe(o){o=o|0,oFe(o+24|0)}function oFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function aFe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,8,l,lFe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function lFe(){return 1320}function cFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=uFe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fFe(l,d,u),I=A}function uFe(o){return o=o|0,(n[(EM()|0)+24>>2]|0)+(o*12|0)|0}function fFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),AFe(d,u),d=pFe(d,u)|0,op[A&31](o,d),I=m}function AFe(o,l){o=o|0,l=l|0}function pFe(o,l){return o=o|0,l=l|0,hFe(l)|0}function hFe(o){return o=o|0,o|0}function gFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],dFe(o,u,d,0),I=A}function dFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=IM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=mFe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,yFe(m,A)|0,A),I=d}function IM(){var o=0,l=0;if(s[7792]|0||(Dz(9900),gr(43,9900,U|0)|0,l=7792,n[l>>2]=1,n[l+4>>2]=0),!(_r(9900)|0)){o=9900,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Dz(9900)}return 9900}function mFe(o){return o=o|0,0}function yFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=IM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Sz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(EFe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Sz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function EFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=IFe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,CFe(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Sz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,wFe(o,k),BFe(k),I=M;return}}function IFe(o){return o=o|0,357913941}function CFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function wFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function BFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Dz(o){o=o|0,DFe(o)}function vFe(o){o=o|0,SFe(o+24|0)}function SFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function DFe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,22,l,bFe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function bFe(){return 1344}function PFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;u=I,I=I+16|0,A=u+8|0,d=u,m=xFe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],kFe(l,A),I=u}function xFe(o){return o=o|0,(n[(IM()|0)+24>>2]|0)+(o*12|0)|0}function kFe(o,l){o=o|0,l=l|0;var u=0;u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),sp[u&127](o)}function QFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=CM()|0,o=RFe(u)|0,Dn(m,l,d,o,TFe(u,A)|0,A)}function CM(){var o=0,l=0;if(s[7800]|0||(Pz(9936),gr(44,9936,U|0)|0,l=7800,n[l>>2]=1,n[l+4>>2]=0),!(_r(9936)|0)){o=9936,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Pz(9936)}return 9936}function RFe(o){return o=o|0,o|0}function TFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=CM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(bz(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(FFe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function bz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function FFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=NFe(o)|0,A>>>0<B>>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,OFe(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,bz(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,LFe(o,d),MFe(d),I=k;return}}function NFe(o){return o=o|0,536870911}function OFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function LFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function MFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function Pz(o){o=o|0,HFe(o)}function UFe(o){o=o|0,_Fe(o+24|0)}function _Fe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function HFe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,23,l,rz()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function jFe(o,l){o=o|0,l=l|0,qFe(n[(GFe(o)|0)>>2]|0,l)}function GFe(o){return o=o|0,(n[(CM()|0)+24>>2]|0)+(o<<3)|0}function qFe(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,aM(A,l),l=lM(A,l)|0,sp[o&127](l),I=u}function WFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=wM()|0,o=VFe(u)|0,Dn(m,l,d,o,YFe(u,A)|0,A)}function wM(){var o=0,l=0;if(s[7808]|0||(kz(9972),gr(45,9972,U|0)|0,l=7808,n[l>>2]=1,n[l+4>>2]=0),!(_r(9972)|0)){o=9972,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));kz(9972)}return 9972}function VFe(o){return o=o|0,o|0}function YFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=wM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(xz(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(KFe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function xz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function KFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=JFe(o)|0,A>>>0<B>>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,zFe(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,xz(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,ZFe(o,d),XFe(d),I=k;return}}function JFe(o){return o=o|0,536870911}function zFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function ZFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function XFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function kz(o){o=o|0,tNe(o)}function $Fe(o){o=o|0,eNe(o+24|0)}function eNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function tNe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,9,l,rNe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function rNe(){return 1348}function nNe(o,l){return o=o|0,l=l|0,sNe(n[(iNe(o)|0)>>2]|0,l)|0}function iNe(o){return o=o|0,(n[(wM()|0)+24>>2]|0)+(o<<3)|0}function sNe(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,Qz(A,l),l=Rz(A,l)|0,l=RP(pd[o&31](l)|0)|0,I=u,l|0}function Qz(o,l){o=o|0,l=l|0}function Rz(o,l){return o=o|0,l=l|0,oNe(l)|0}function oNe(o){return o=o|0,o|0}function aNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=BM()|0,o=lNe(u)|0,Dn(m,l,d,o,cNe(u,A)|0,A)}function BM(){var o=0,l=0;if(s[7816]|0||(Fz(10008),gr(46,10008,U|0)|0,l=7816,n[l>>2]=1,n[l+4>>2]=0),!(_r(10008)|0)){o=10008,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Fz(10008)}return 10008}function lNe(o){return o=o|0,o|0}function cNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=BM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(Tz(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(uNe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function Tz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function uNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=fNe(o)|0,A>>>0<B>>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,ANe(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,Tz(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,pNe(o,d),hNe(d),I=k;return}}function fNe(o){return o=o|0,536870911}function ANe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function pNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function hNe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function Fz(o){o=o|0,mNe(o)}function gNe(o){o=o|0,dNe(o+24|0)}function dNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function mNe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,15,l,zJ()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function yNe(o){return o=o|0,INe(n[(ENe(o)|0)>>2]|0)|0}function ENe(o){return o=o|0,(n[(BM()|0)+24>>2]|0)+(o<<3)|0}function INe(o){return o=o|0,RP(YP[o&7]()|0)|0}function CNe(){var o=0;return s[7832]|0||(xNe(10052),gr(25,10052,U|0)|0,o=7832,n[o>>2]=1,n[o+4>>2]=0),10052}function wNe(o,l){o=o|0,l=l|0,n[o>>2]=BNe()|0,n[o+4>>2]=vNe()|0,n[o+12>>2]=l,n[o+8>>2]=SNe()|0,n[o+32>>2]=2}function BNe(){return 11709}function vNe(){return 1188}function SNe(){return FP()|0}function DNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Uh(A,896)|0)==512?u|0&&(bNe(u),It(u)):l|0&&(Uy(l),It(l))}function Uh(o,l){return o=o|0,l=l|0,l&o|0}function bNe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Hh(o)}function FP(){var o=0;return s[7824]|0||(n[2511]=PNe()|0,n[2512]=0,o=7824,n[o>>2]=1,n[o+4>>2]=0),10044}function PNe(){return 0}function xNe(o){o=o|0,Nh(o)}function kNe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0;l=I,I=I+32|0,u=l+24|0,m=l+16|0,d=l+8|0,A=l,QNe(o,4827),RNe(o,4834,3)|0,TNe(o,3682,47)|0,n[m>>2]=9,n[m+4>>2]=0,n[u>>2]=n[m>>2],n[u+4>>2]=n[m+4>>2],FNe(o,4841,u)|0,n[d>>2]=1,n[d+4>>2]=0,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],NNe(o,4871,u)|0,n[A>>2]=10,n[A+4>>2]=0,n[u>>2]=n[A>>2],n[u+4>>2]=n[A+4>>2],ONe(o,4891,u)|0,I=l}function QNe(o,l){o=o|0,l=l|0;var u=0;u=hLe()|0,n[o>>2]=u,gLe(u,l),_h(n[o>>2]|0)}function RNe(o,l,u){return o=o|0,l=l|0,u=u|0,XOe(o,Sn(l)|0,u,0),o|0}function TNe(o,l,u){return o=o|0,l=l|0,u=u|0,LOe(o,Sn(l)|0,u,0),o|0}function FNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],yOe(o,l,d),I=A,o|0}function NNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],$Ne(o,l,d),I=A,o|0}function ONe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],LNe(o,l,d),I=A,o|0}function LNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],MNe(o,u,d,1),I=A}function MNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=vM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=UNe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,_Ne(m,A)|0,A),I=d}function vM(){var o=0,l=0;if(s[7840]|0||(Oz(10100),gr(48,10100,U|0)|0,l=7840,n[l>>2]=1,n[l+4>>2]=0),!(_r(10100)|0)){o=10100,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Oz(10100)}return 10100}function UNe(o){return o=o|0,0}function _Ne(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=vM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Nz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(HNe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Nz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function HNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=jNe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,GNe(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Nz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,qNe(o,k),WNe(k),I=M;return}}function jNe(o){return o=o|0,357913941}function GNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function qNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function WNe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Oz(o){o=o|0,KNe(o)}function VNe(o){o=o|0,YNe(o+24|0)}function YNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function KNe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,6,l,JNe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function JNe(){return 1364}function zNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=ZNe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=XNe(l,d,u)|0,I=A,u|0}function ZNe(o){return o=o|0,(n[(vM()|0)+24>>2]|0)+(o*12|0)|0}function XNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),rp(d,u),d=np(d,u)|0,d=GJ($M[A&15](o,d)|0)|0,I=m,d|0}function $Ne(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],eOe(o,u,d,0),I=A}function eOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=SM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=tOe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,rOe(m,A)|0,A),I=d}function SM(){var o=0,l=0;if(s[7848]|0||(Mz(10136),gr(49,10136,U|0)|0,l=7848,n[l>>2]=1,n[l+4>>2]=0),!(_r(10136)|0)){o=10136,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Mz(10136)}return 10136}function tOe(o){return o=o|0,0}function rOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=SM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Lz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(nOe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Lz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function nOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=iOe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,sOe(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Lz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,oOe(o,k),aOe(k),I=M;return}}function iOe(o){return o=o|0,357913941}function sOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function oOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function aOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Mz(o){o=o|0,uOe(o)}function lOe(o){o=o|0,cOe(o+24|0)}function cOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function uOe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,9,l,fOe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function fOe(){return 1372}function AOe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=pOe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],hOe(l,d,u),I=A}function pOe(o){return o=o|0,(n[(SM()|0)+24>>2]|0)+(o*12|0)|0}function hOe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=$e;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),gOe(d,u),B=y(dOe(d,u)),XZ[A&1](o,B),I=m}function gOe(o,l){o=o|0,l=+l}function dOe(o,l){return o=o|0,l=+l,y(mOe(l))}function mOe(o){return o=+o,y(o)}function yOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Sn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],EOe(o,u,d,0),I=A}function EOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,R=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,R=n[u+4>>2]|0,B=n[o>>2]|0,o=DM()|0,n[L>>2]=M,n[L+4>>2]=R,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=IOe(m)|0,n[k>>2]=M,n[k+4>>2]=R,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],Dn(B,l,o,u,COe(m,A)|0,A),I=d}function DM(){var o=0,l=0;if(s[7856]|0||(_z(10172),gr(50,10172,U|0)|0,l=7856,n[l>>2]=1,n[l+4>>2]=0),!(_r(10172)|0)){o=10172,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));_z(10172)}return 10172}function IOe(o){return o=o|0,0}function COe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,R=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=DM()|0,M=q+24|0,o=yr(l,4)|0,n[R>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Uz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(wOe(M,k,R),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Uz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function wOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,R=o+4|0,d=(((n[R>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=BOe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,oe=((n[o+8>>2]|0)-L|0)/12|0,q=oe<<1,vOe(k,oe>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[R>>2]|0)-L|0)/12|0,o+8|0),R=k+8|0,m=n[R>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Uz(m,A,u),n[R>>2]=(n[R>>2]|0)+12,SOe(o,k),DOe(k),I=M;return}}function BOe(o){return o=o|0,357913941}function vOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Jt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function SOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function DOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function _z(o){o=o|0,xOe(o)}function bOe(o){o=o|0,POe(o+24|0)}function POe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function xOe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,3,l,kOe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function kOe(){return 1380}function QOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=ROe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],TOe(l,m,u,A),I=d}function ROe(o){return o=o|0,(n[(DM()|0)+24>>2]|0)+(o*12|0)|0}function TOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),rp(m,u),m=np(m,u)|0,FOe(B,A),B=NOe(B,A)|0,DB[d&15](o,m,B),I=k}function FOe(o,l){o=o|0,l=l|0}function NOe(o,l){return o=o|0,l=l|0,OOe(l)|0}function OOe(o){return o=o|0,(o|0)!=0|0}function LOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=bM()|0,o=MOe(u)|0,Dn(m,l,d,o,UOe(u,A)|0,A)}function bM(){var o=0,l=0;if(s[7864]|0||(jz(10208),gr(51,10208,U|0)|0,l=7864,n[l>>2]=1,n[l+4>>2]=0),!(_r(10208)|0)){o=10208,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));jz(10208)}return 10208}function MOe(o){return o=o|0,o|0}function UOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=bM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(Hz(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(_Oe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function Hz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function _Oe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=HOe(o)|0,A>>>0<B>>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,jOe(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,Hz(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,GOe(o,d),qOe(d),I=k;return}}function HOe(o){return o=o|0,536870911}function jOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function GOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function qOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function jz(o){o=o|0,YOe(o)}function WOe(o){o=o|0,VOe(o+24|0)}function VOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function YOe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,24,l,KOe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function KOe(){return 1392}function JOe(o,l){o=o|0,l=l|0,ZOe(n[(zOe(o)|0)>>2]|0,l)}function zOe(o){return o=o|0,(n[(bM()|0)+24>>2]|0)+(o<<3)|0}function ZOe(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Qz(A,l),l=Rz(A,l)|0,sp[o&127](l),I=u}function XOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=PM()|0,o=$Oe(u)|0,Dn(m,l,d,o,eLe(u,A)|0,A)}function PM(){var o=0,l=0;if(s[7872]|0||(qz(10244),gr(52,10244,U|0)|0,l=7872,n[l>>2]=1,n[l+4>>2]=0),!(_r(10244)|0)){o=10244,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));qz(10244)}return 10244}function $Oe(o){return o=o|0,o|0}function eLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=PM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(Gz(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(tLe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function Gz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function tLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=rLe(o)|0,A>>>0<B>>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,nLe(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,Gz(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,iLe(o,d),sLe(d),I=k;return}}function rLe(o){return o=o|0,536870911}function nLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function iLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function sLe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function qz(o){o=o|0,lLe(o)}function oLe(o){o=o|0,aLe(o+24|0)}function aLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function lLe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,16,l,cLe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function cLe(){return 1400}function uLe(o){return o=o|0,ALe(n[(fLe(o)|0)>>2]|0)|0}function fLe(o){return o=o|0,(n[(PM()|0)+24>>2]|0)+(o<<3)|0}function ALe(o){return o=o|0,pLe(YP[o&7]()|0)|0}function pLe(o){return o=o|0,o|0}function hLe(){var o=0;return s[7880]|0||(CLe(10280),gr(25,10280,U|0)|0,o=7880,n[o>>2]=1,n[o+4>>2]=0),10280}function gLe(o,l){o=o|0,l=l|0,n[o>>2]=dLe()|0,n[o+4>>2]=mLe()|0,n[o+12>>2]=l,n[o+8>>2]=yLe()|0,n[o+32>>2]=4}function dLe(){return 11711}function mLe(){return 1356}function yLe(){return FP()|0}function ELe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Uh(A,896)|0)==512?u|0&&(ILe(u),It(u)):l|0&&(Yg(l),It(l))}function ILe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Hh(o)}function CLe(o){o=o|0,Nh(o)}function wLe(o){o=o|0,BLe(o,4920),vLe(o)|0,SLe(o)|0}function BLe(o,l){o=o|0,l=l|0;var u=0;u=Az()|0,n[o>>2]=u,VLe(u,l),_h(n[o>>2]|0)}function vLe(o){o=o|0;var l=0;return l=n[o>>2]|0,ad(l,OLe()|0),o|0}function SLe(o){o=o|0;var l=0;return l=n[o>>2]|0,ad(l,DLe()|0),o|0}function DLe(){var o=0;return s[7888]|0||(Wz(10328),gr(53,10328,U|0)|0,o=7888,n[o>>2]=1,n[o+4>>2]=0),_r(10328)|0||Wz(10328),10328}function ad(o,l){o=o|0,l=l|0,Dn(o,0,l,0,0,0)}function Wz(o){o=o|0,xLe(o),ld(o,10)}function bLe(o){o=o|0,PLe(o+24|0)}function PLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function xLe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,1,l,TLe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function kLe(o,l,u){o=o|0,l=l|0,u=+u,QLe(o,l,u)}function ld(o,l){o=o|0,l=l|0,n[o+20>>2]=l}function QLe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,m=A+8|0,k=A+13|0,d=A,B=A+12|0,rp(k,l),n[m>>2]=np(k,l)|0,Tf(B,u),E[d>>3]=+Ff(B,u),RLe(o,m,d),I=A}function RLe(o,l,u){o=o|0,l=l|0,u=u|0,Ml(o+8|0,n[l>>2]|0,+E[u>>3]),s[o+24>>0]=1}function TLe(){return 1404}function FLe(o,l){return o=o|0,l=+l,NLe(o,l)|0}function NLe(o,l){o=o|0,l=+l;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return A=I,I=I+16|0,m=A+4|0,B=A+8|0,k=A,d=Ul(8)|0,u=d,R=Jt(16)|0,rp(m,o),o=np(m,o)|0,Tf(B,l),Ml(R,o,+Ff(B,l)),B=u+4|0,n[B>>2]=R,o=Jt(8)|0,B=n[B>>2]|0,n[k>>2]=0,n[m>>2]=n[k>>2],pM(o,B,m),n[d>>2]=o,I=A,u|0}function OLe(){var o=0;return s[7896]|0||(Vz(10364),gr(54,10364,U|0)|0,o=7896,n[o>>2]=1,n[o+4>>2]=0),_r(10364)|0||Vz(10364),10364}function Vz(o){o=o|0,ULe(o),ld(o,55)}function LLe(o){o=o|0,MLe(o+24|0)}function MLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function ULe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,4,l,GLe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function _Le(o){o=o|0,HLe(o)}function HLe(o){o=o|0,jLe(o)}function jLe(o){o=o|0,Yz(o+8|0),s[o+24>>0]=1}function Yz(o){o=o|0,n[o>>2]=0,E[o+8>>3]=0}function GLe(){return 1424}function qLe(){return WLe()|0}function WLe(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Ul(8)|0,o=u,A=Jt(16)|0,Yz(A),m=o+4|0,n[m>>2]=A,A=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],pM(A,m,d),n[u>>2]=A,I=l,o|0}function VLe(o,l){o=o|0,l=l|0,n[o>>2]=YLe()|0,n[o+4>>2]=KLe()|0,n[o+12>>2]=l,n[o+8>>2]=JLe()|0,n[o+32>>2]=5}function YLe(){return 11710}function KLe(){return 1416}function JLe(){return NP()|0}function zLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Uh(A,896)|0)==512?u|0&&(ZLe(u),It(u)):l|0&&It(l)}function ZLe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Hh(o)}function NP(){var o=0;return s[7904]|0||(n[2600]=XLe()|0,n[2601]=0,o=7904,n[o>>2]=1,n[o+4>>2]=0),10400}function XLe(){return n[357]|0}function $Le(o){o=o|0,eMe(o,4926),tMe(o)|0}function eMe(o,l){o=o|0,l=l|0;var u=0;u=NJ()|0,n[o>>2]=u,AMe(u,l),_h(n[o>>2]|0)}function tMe(o){o=o|0;var l=0;return l=n[o>>2]|0,ad(l,rMe()|0),o|0}function rMe(){var o=0;return s[7912]|0||(Kz(10412),gr(56,10412,U|0)|0,o=7912,n[o>>2]=1,n[o+4>>2]=0),_r(10412)|0||Kz(10412),10412}function Kz(o){o=o|0,sMe(o),ld(o,57)}function nMe(o){o=o|0,iMe(o+24|0)}function iMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function sMe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,5,l,cMe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function oMe(o){o=o|0,aMe(o)}function aMe(o){o=o|0,lMe(o)}function lMe(o){o=o|0;var l=0,u=0;l=o+8|0,u=l+48|0;do n[l>>2]=0,l=l+4|0;while((l|0)<(u|0));s[o+56>>0]=1}function cMe(){return 1432}function uMe(){return fMe()|0}function fMe(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0,k=0;B=I,I=I+16|0,o=B+4|0,l=B,u=Ul(8)|0,A=u,d=Jt(48)|0,m=d,k=m+48|0;do n[m>>2]=0,m=m+4|0;while((m|0)<(k|0));return m=A+4|0,n[m>>2]=d,k=Jt(8)|0,m=n[m>>2]|0,n[l>>2]=0,n[o>>2]=n[l>>2],OJ(k,m,o),n[u>>2]=k,I=B,A|0}function AMe(o,l){o=o|0,l=l|0,n[o>>2]=pMe()|0,n[o+4>>2]=hMe()|0,n[o+12>>2]=l,n[o+8>>2]=gMe()|0,n[o+32>>2]=6}function pMe(){return 11704}function hMe(){return 1436}function gMe(){return NP()|0}function dMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Uh(A,896)|0)==512?u|0&&(mMe(u),It(u)):l|0&&It(l)}function mMe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Hh(o)}function yMe(o){o=o|0,EMe(o,4933),IMe(o)|0,CMe(o)|0}function EMe(o,l){o=o|0,l=l|0;var u=0;u=WMe()|0,n[o>>2]=u,VMe(u,l),_h(n[o>>2]|0)}function IMe(o){o=o|0;var l=0;return l=n[o>>2]|0,ad(l,NMe()|0),o|0}function CMe(o){o=o|0;var l=0;return l=n[o>>2]|0,ad(l,wMe()|0),o|0}function wMe(){var o=0;return s[7920]|0||(Jz(10452),gr(58,10452,U|0)|0,o=7920,n[o>>2]=1,n[o+4>>2]=0),_r(10452)|0||Jz(10452),10452}function Jz(o){o=o|0,SMe(o),ld(o,1)}function BMe(o){o=o|0,vMe(o+24|0)}function vMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function SMe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,1,l,xMe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function DMe(o,l,u){o=o|0,l=+l,u=+u,bMe(o,l,u)}function bMe(o,l,u){o=o|0,l=+l,u=+u;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,m=A+8|0,k=A+17|0,d=A,B=A+16|0,Tf(k,l),E[m>>3]=+Ff(k,l),Tf(B,u),E[d>>3]=+Ff(B,u),PMe(o,m,d),I=A}function PMe(o,l,u){o=o|0,l=l|0,u=u|0,zz(o+8|0,+E[l>>3],+E[u>>3]),s[o+24>>0]=1}function zz(o,l,u){o=o|0,l=+l,u=+u,E[o>>3]=l,E[o+8>>3]=u}function xMe(){return 1472}function kMe(o,l){return o=+o,l=+l,QMe(o,l)|0}function QMe(o,l){o=+o,l=+l;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return A=I,I=I+16|0,B=A+4|0,k=A+8|0,R=A,d=Ul(8)|0,u=d,m=Jt(16)|0,Tf(B,o),o=+Ff(B,o),Tf(k,l),zz(m,o,+Ff(k,l)),k=u+4|0,n[k>>2]=m,m=Jt(8)|0,k=n[k>>2]|0,n[R>>2]=0,n[B>>2]=n[R>>2],Zz(m,k,B),n[d>>2]=m,I=A,u|0}function Zz(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1452,n[u+12>>2]=l,n[o+4>>2]=u}function RMe(o){o=o|0,rE(o),It(o)}function TMe(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function FMe(o){o=o|0,It(o)}function NMe(){var o=0;return s[7928]|0||(Xz(10488),gr(59,10488,U|0)|0,o=7928,n[o>>2]=1,n[o+4>>2]=0),_r(10488)|0||Xz(10488),10488}function Xz(o){o=o|0,MMe(o),ld(o,60)}function OMe(o){o=o|0,LMe(o+24|0)}function LMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function MMe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,6,l,jMe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function UMe(o){o=o|0,_Me(o)}function _Me(o){o=o|0,HMe(o)}function HMe(o){o=o|0,$z(o+8|0),s[o+24>>0]=1}function $z(o){o=o|0,n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,n[o+12>>2]=0}function jMe(){return 1492}function GMe(){return qMe()|0}function qMe(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Ul(8)|0,o=u,A=Jt(16)|0,$z(A),m=o+4|0,n[m>>2]=A,A=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],Zz(A,m,d),n[u>>2]=A,I=l,o|0}function WMe(){var o=0;return s[7936]|0||(XMe(10524),gr(25,10524,U|0)|0,o=7936,n[o>>2]=1,n[o+4>>2]=0),10524}function VMe(o,l){o=o|0,l=l|0,n[o>>2]=YMe()|0,n[o+4>>2]=KMe()|0,n[o+12>>2]=l,n[o+8>>2]=JMe()|0,n[o+32>>2]=7}function YMe(){return 11700}function KMe(){return 1484}function JMe(){return NP()|0}function zMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Uh(A,896)|0)==512?u|0&&(ZMe(u),It(u)):l|0&&It(l)}function ZMe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Hh(o)}function XMe(o){o=o|0,Nh(o)}function $Me(o,l,u){o=o|0,l=l|0,u=u|0,o=Sn(l)|0,l=eUe(u)|0,u=tUe(u,0)|0,QUe(o,l,u,xM()|0,0)}function eUe(o){return o=o|0,o|0}function tUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=xM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(tZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(lUe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function xM(){var o=0,l=0;if(s[7944]|0||(eZ(10568),gr(61,10568,U|0)|0,l=7944,n[l>>2]=1,n[l+4>>2]=0),!(_r(10568)|0)){o=10568,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));eZ(10568)}return 10568}function eZ(o){o=o|0,iUe(o)}function rUe(o){o=o|0,nUe(o+24|0)}function nUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function iUe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,17,l,$J()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function sUe(o){return o=o|0,aUe(n[(oUe(o)|0)>>2]|0)|0}function oUe(o){return o=o|0,(n[(xM()|0)+24>>2]|0)+(o<<3)|0}function aUe(o){return o=o|0,TP(YP[o&7]()|0)|0}function tZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function lUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=cUe(o)|0,A>>>0<B>>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,uUe(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,tZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,fUe(o,d),AUe(d),I=k;return}}function cUe(o){return o=o|0,536870911}function uUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function fUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function AUe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function pUe(){hUe()}function hUe(){gUe(10604)}function gUe(o){o=o|0,dUe(o,4955)}function dUe(o,l){o=o|0,l=l|0;var u=0;u=mUe()|0,n[o>>2]=u,yUe(u,l),_h(n[o>>2]|0)}function mUe(){var o=0;return s[7952]|0||(bUe(10612),gr(25,10612,U|0)|0,o=7952,n[o>>2]=1,n[o+4>>2]=0),10612}function yUe(o,l){o=o|0,l=l|0,n[o>>2]=wUe()|0,n[o+4>>2]=BUe()|0,n[o+12>>2]=l,n[o+8>>2]=vUe()|0,n[o+32>>2]=8}function _h(o){o=o|0;var l=0,u=0;l=I,I=I+16|0,u=l,Zy()|0,n[u>>2]=o,EUe(10608,u),I=l}function Zy(){return s[11714]|0||(n[2652]=0,gr(62,10608,U|0)|0,s[11714]=1),10608}function EUe(o,l){o=o|0,l=l|0;var u=0;u=Jt(8)|0,n[u+4>>2]=n[l>>2],n[u>>2]=n[o>>2],n[o>>2]=u}function IUe(o){o=o|0,CUe(o)}function CUe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function wUe(){return 11715}function BUe(){return 1496}function vUe(){return FP()|0}function SUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Uh(A,896)|0)==512?u|0&&(DUe(u),It(u)):l|0&&It(l)}function DUe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Hh(o)}function bUe(o){o=o|0,Nh(o)}function PUe(o,l){o=o|0,l=l|0;var u=0,A=0;Zy()|0,u=n[2652]|0;e:do if(u|0){for(;A=n[u+4>>2]|0,!(A|0&&!(OZ(kM(A)|0,o)|0));)if(u=n[u>>2]|0,!u)break e;xUe(A,l)}while(!1)}function kM(o){return o=o|0,n[o+12>>2]|0}function xUe(o,l){o=o|0,l=l|0;var u=0;o=o+36|0,u=n[o>>2]|0,u|0&&(bf(u),It(u)),u=Jt(4)|0,DP(u,l),n[o>>2]=u}function QM(){return s[11716]|0||(n[2664]=0,gr(63,10656,U|0)|0,s[11716]=1),10656}function rZ(){var o=0;return s[11717]|0?o=n[2665]|0:(kUe(),n[2665]=1504,s[11717]=1,o=1504),o|0}function kUe(){s[11740]|0||(s[11718]=yr(yr(8,0)|0,0)|0,s[11719]=yr(yr(0,0)|0,0)|0,s[11720]=yr(yr(0,16)|0,0)|0,s[11721]=yr(yr(8,0)|0,0)|0,s[11722]=yr(yr(0,0)|0,0)|0,s[11723]=yr(yr(8,0)|0,0)|0,s[11724]=yr(yr(0,0)|0,0)|0,s[11725]=yr(yr(8,0)|0,0)|0,s[11726]=yr(yr(0,0)|0,0)|0,s[11727]=yr(yr(8,0)|0,0)|0,s[11728]=yr(yr(0,0)|0,0)|0,s[11729]=yr(yr(0,0)|0,32)|0,s[11730]=yr(yr(0,0)|0,32)|0,s[11740]=1)}function nZ(){return 1572}function QUe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0,M=0,L=0;m=I,I=I+32|0,L=m+16|0,M=m+12|0,R=m+8|0,k=m+4|0,B=m,n[L>>2]=o,n[M>>2]=l,n[R>>2]=u,n[k>>2]=A,n[B>>2]=d,QM()|0,RUe(10656,L,M,R,k,B),I=m}function RUe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0;B=Jt(24)|0,RJ(B+4|0,n[l>>2]|0,n[u>>2]|0,n[A>>2]|0,n[d>>2]|0,n[m>>2]|0),n[B>>2]=n[o>>2],n[o>>2]=B}function iZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0,Te=0,nt=0,Xe=0,ft=0;if(ft=I,I=I+32|0,Le=ft+20|0,Te=ft+8|0,nt=ft+4|0,Xe=ft,l=n[l>>2]|0,l|0){Ye=Le+4|0,R=Le+8|0,M=Te+4|0,L=Te+8|0,q=Te+8|0,oe=Le+8|0;do{if(B=l+4|0,k=RM(B)|0,k|0){if(d=IB(k)|0,n[Le>>2]=0,n[Ye>>2]=0,n[R>>2]=0,A=(CB(k)|0)+1|0,TUe(Le,A),A|0)for(;A=A+-1|0,Su(Te,n[d>>2]|0),m=n[Ye>>2]|0,m>>>0<(n[oe>>2]|0)>>>0?(n[m>>2]=n[Te>>2],n[Ye>>2]=(n[Ye>>2]|0)+4):TM(Le,Te),A;)d=d+4|0;A=wB(k)|0,n[Te>>2]=0,n[M>>2]=0,n[L>>2]=0;e:do if(n[A>>2]|0)for(d=0,m=0;;){if((d|0)==(m|0)?FUe(Te,A):(n[d>>2]=n[A>>2],n[M>>2]=(n[M>>2]|0)+4),A=A+4|0,!(n[A>>2]|0))break e;d=n[M>>2]|0,m=n[q>>2]|0}while(!1);n[nt>>2]=OP(B)|0,n[Xe>>2]=_r(k)|0,NUe(u,o,nt,Xe,Le,Te),FM(Te),ip(Le)}l=n[l>>2]|0}while(l|0)}I=ft}function RM(o){return o=o|0,n[o+12>>2]|0}function IB(o){return o=o|0,n[o+12>>2]|0}function CB(o){return o=o|0,n[o+16>>2]|0}function TUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+32|0,u=d,A=n[o>>2]|0,(n[o+8>>2]|0)-A>>2>>>0<l>>>0&&(AZ(u,l,(n[o+4>>2]|0)-A>>2,o+8|0),pZ(o,u),hZ(u)),I=d}function TM(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0;if(B=I,I=I+32|0,u=B,A=o+4|0,d=((n[A>>2]|0)-(n[o>>2]|0)>>2)+1|0,m=fZ(o)|0,m>>>0<d>>>0)an(o);else{k=n[o>>2]|0,M=(n[o+8>>2]|0)-k|0,R=M>>1,AZ(u,M>>2>>>0<m>>>1>>>0?R>>>0<d>>>0?d:R:m,(n[A>>2]|0)-k>>2,o+8|0),m=u+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,pZ(o,u),hZ(u),I=B;return}}function wB(o){return o=o|0,n[o+8>>2]|0}function FUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0;if(B=I,I=I+32|0,u=B,A=o+4|0,d=((n[A>>2]|0)-(n[o>>2]|0)>>2)+1|0,m=uZ(o)|0,m>>>0<d>>>0)an(o);else{k=n[o>>2]|0,M=(n[o+8>>2]|0)-k|0,R=M>>1,e_e(u,M>>2>>>0<m>>>1>>>0?R>>>0<d>>>0?d:R:m,(n[A>>2]|0)-k>>2,o+8|0),m=u+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,t_e(o,u),r_e(u),I=B;return}}function OP(o){return o=o|0,n[o>>2]|0}function NUe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,OUe(o,l,u,A,d,m)}function FM(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function ip(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function OUe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0;B=I,I=I+48|0,L=B+40|0,k=B+32|0,q=B+24|0,R=B+12|0,M=B,_l(k),o=Us(o)|0,n[q>>2]=n[l>>2],u=n[u>>2]|0,A=n[A>>2]|0,NM(R,d),LUe(M,m),n[L>>2]=n[q>>2],MUe(o,L,u,A,R,M),FM(M),ip(R),Hl(k),I=B}function NM(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(XUe(o,A),$Ue(o,n[l>>2]|0,n[u>>2]|0,A))}function LUe(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(zUe(o,A),ZUe(o,n[l>>2]|0,n[u>>2]|0,A))}function MUe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0;B=I,I=I+32|0,L=B+28|0,q=B+24|0,k=B+12|0,R=B,M=Ia(UUe()|0)|0,n[q>>2]=n[l>>2],n[L>>2]=n[q>>2],l=cd(L)|0,u=sZ(u)|0,A=OM(A)|0,n[k>>2]=n[d>>2],L=d+4|0,n[k+4>>2]=n[L>>2],q=d+8|0,n[k+8>>2]=n[q>>2],n[q>>2]=0,n[L>>2]=0,n[d>>2]=0,d=LM(k)|0,n[R>>2]=n[m>>2],L=m+4|0,n[R+4>>2]=n[L>>2],q=m+8|0,n[R+8>>2]=n[q>>2],n[q>>2]=0,n[L>>2]=0,n[m>>2]=0,ou(0,M|0,o|0,l|0,u|0,A|0,d|0,_Ue(R)|0)|0,FM(R),ip(k),I=B}function UUe(){var o=0;return s[7968]|0||(KUe(10708),o=7968,n[o>>2]=1,n[o+4>>2]=0),10708}function cd(o){return o=o|0,aZ(o)|0}function sZ(o){return o=o|0,oZ(o)|0}function OM(o){return o=o|0,TP(o)|0}function LM(o){return o=o|0,jUe(o)|0}function _Ue(o){return o=o|0,HUe(o)|0}function HUe(o){o=o|0;var l=0,u=0,A=0;if(A=(n[o+4>>2]|0)-(n[o>>2]|0)|0,u=A>>2,A=Ul(A+4|0)|0,n[A>>2]=u,u|0){l=0;do n[A+4+(l<<2)>>2]=oZ(n[(n[o>>2]|0)+(l<<2)>>2]|0)|0,l=l+1|0;while((l|0)!=(u|0))}return A|0}function oZ(o){return o=o|0,o|0}function jUe(o){o=o|0;var l=0,u=0,A=0;if(A=(n[o+4>>2]|0)-(n[o>>2]|0)|0,u=A>>2,A=Ul(A+4|0)|0,n[A>>2]=u,u|0){l=0;do n[A+4+(l<<2)>>2]=aZ((n[o>>2]|0)+(l<<2)|0)|0,l=l+1|0;while((l|0)!=(u|0))}return A|0}function aZ(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=JL(lZ()|0)|0,A?(zL(l,A),ZL(u,l),v8e(o,u),o=XL(l)|0):o=GUe(o)|0,I=d,o|0}function lZ(){var o=0;return s[7960]|0||(YUe(10664),gr(25,10664,U|0)|0,o=7960,n[o>>2]=1,n[o+4>>2]=0),10664}function GUe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Ul(8)|0,l=A,k=Jt(4)|0,n[k>>2]=n[o>>2],m=l+4|0,n[m>>2]=k,o=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],cZ(o,m,d),n[A>>2]=o,I=u,l|0}function cZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1656,n[u+12>>2]=l,n[o+4>>2]=u}function qUe(o){o=o|0,rE(o),It(o)}function WUe(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function VUe(o){o=o|0,It(o)}function YUe(o){o=o|0,Nh(o)}function KUe(o){o=o|0,Oo(o,JUe()|0,5)}function JUe(){return 1676}function zUe(o,l){o=o|0,l=l|0;var u=0;if((uZ(o)|0)>>>0<l>>>0&&an(o),l>>>0>1073741823)Nt();else{u=Jt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function ZUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function uZ(o){return o=o|0,1073741823}function XUe(o,l){o=o|0,l=l|0;var u=0;if((fZ(o)|0)>>>0<l>>>0&&an(o),l>>>0>1073741823)Nt();else{u=Jt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function $Ue(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function fZ(o){return o=o|0,1073741823}function e_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Jt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function t_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function r_e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function AZ(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Jt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function pZ(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function hZ(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function n_e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0,Te=0;if(Te=I,I=I+32|0,L=Te+20|0,q=Te+12|0,M=Te+16|0,oe=Te+4|0,Ye=Te,Le=Te+8|0,k=rZ()|0,m=n[k>>2]|0,B=n[m>>2]|0,B|0)for(R=n[k+8>>2]|0,k=n[k+4>>2]|0;Su(L,B),i_e(o,L,k,R),m=m+4|0,B=n[m>>2]|0,B;)R=R+1|0,k=k+1|0;if(m=nZ()|0,B=n[m>>2]|0,B|0)do Su(L,B),n[q>>2]=n[m+4>>2],s_e(l,L,q),m=m+8|0,B=n[m>>2]|0;while(B|0);if(m=n[(Zy()|0)>>2]|0,m|0)do l=n[m+4>>2]|0,Su(L,n[(Xy(l)|0)>>2]|0),n[q>>2]=kM(l)|0,o_e(u,L,q),m=n[m>>2]|0;while(m|0);if(Su(M,0),m=QM()|0,n[L>>2]=n[M>>2],iZ(L,m,d),m=n[(Zy()|0)>>2]|0,m|0){o=L+4|0,l=L+8|0,u=L+8|0;do{if(R=n[m+4>>2]|0,Su(q,n[(Xy(R)|0)>>2]|0),a_e(oe,gZ(R)|0),B=n[oe>>2]|0,B|0){n[L>>2]=0,n[o>>2]=0,n[l>>2]=0;do Su(Ye,n[(Xy(n[B+4>>2]|0)|0)>>2]|0),k=n[o>>2]|0,k>>>0<(n[u>>2]|0)>>>0?(n[k>>2]=n[Ye>>2],n[o>>2]=(n[o>>2]|0)+4):TM(L,Ye),B=n[B>>2]|0;while(B|0);l_e(A,q,L),ip(L)}n[Le>>2]=n[q>>2],M=dZ(R)|0,n[L>>2]=n[Le>>2],iZ(L,M,d),MJ(oe),m=n[m>>2]|0}while(m|0)}I=Te}function i_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,I_e(o,l,u,A)}function s_e(o,l,u){o=o|0,l=l|0,u=u|0,E_e(o,l,u)}function Xy(o){return o=o|0,o|0}function o_e(o,l,u){o=o|0,l=l|0,u=u|0,g_e(o,l,u)}function gZ(o){return o=o|0,o+16|0}function a_e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;if(m=I,I=I+16|0,d=m+8|0,u=m,n[o>>2]=0,A=n[l>>2]|0,n[d>>2]=A,n[u>>2]=o,u=h_e(u)|0,A|0){if(A=Jt(12)|0,B=(mZ(d)|0)+4|0,o=n[B+4>>2]|0,l=A+4|0,n[l>>2]=n[B>>2],n[l+4>>2]=o,l=n[n[d>>2]>>2]|0,n[d>>2]=l,!l)o=A;else for(l=A;o=Jt(12)|0,R=(mZ(d)|0)+4|0,k=n[R+4>>2]|0,B=o+4|0,n[B>>2]=n[R>>2],n[B+4>>2]=k,n[l>>2]=o,B=n[n[d>>2]>>2]|0,n[d>>2]=B,B;)l=o;n[o>>2]=n[u>>2],n[u>>2]=A}I=m}function l_e(o,l,u){o=o|0,l=l|0,u=u|0,c_e(o,l,u)}function dZ(o){return o=o|0,o+24|0}function c_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,B=A+24|0,d=A+16|0,k=A+12|0,m=A,_l(d),o=Us(o)|0,n[k>>2]=n[l>>2],NM(m,u),n[B>>2]=n[k>>2],u_e(o,B,m),ip(m),Hl(d),I=A}function u_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,B=A+16|0,k=A+12|0,d=A,m=Ia(f_e()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=cd(B)|0,n[d>>2]=n[u>>2],B=u+4|0,n[d+4>>2]=n[B>>2],k=u+8|0,n[d+8>>2]=n[k>>2],n[k>>2]=0,n[B>>2]=0,n[u>>2]=0,Ns(0,m|0,o|0,l|0,LM(d)|0)|0,ip(d),I=A}function f_e(){var o=0;return s[7976]|0||(A_e(10720),o=7976,n[o>>2]=1,n[o+4>>2]=0),10720}function A_e(o){o=o|0,Oo(o,p_e()|0,2)}function p_e(){return 1732}function h_e(o){return o=o|0,n[o>>2]|0}function mZ(o){return o=o|0,n[o>>2]|0}function g_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+32|0,m=A+16|0,d=A+8|0,B=A,_l(d),o=Us(o)|0,n[B>>2]=n[l>>2],u=n[u>>2]|0,n[m>>2]=n[B>>2],yZ(o,m,u),Hl(d),I=A}function yZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,m=A+4|0,B=A,d=Ia(d_e()|0)|0,n[B>>2]=n[l>>2],n[m>>2]=n[B>>2],l=cd(m)|0,Ns(0,d|0,o|0,l|0,sZ(u)|0)|0,I=A}function d_e(){var o=0;return s[7984]|0||(m_e(10732),o=7984,n[o>>2]=1,n[o+4>>2]=0),10732}function m_e(o){o=o|0,Oo(o,y_e()|0,2)}function y_e(){return 1744}function E_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+32|0,m=A+16|0,d=A+8|0,B=A,_l(d),o=Us(o)|0,n[B>>2]=n[l>>2],u=n[u>>2]|0,n[m>>2]=n[B>>2],yZ(o,m,u),Hl(d),I=A}function I_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+32|0,B=d+16|0,m=d+8|0,k=d,_l(m),o=Us(o)|0,n[k>>2]=n[l>>2],u=s[u>>0]|0,A=s[A>>0]|0,n[B>>2]=n[k>>2],C_e(o,B,u,A),Hl(m),I=d}function C_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,B=d+4|0,k=d,m=Ia(w_e()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=cd(B)|0,u=$y(u)|0,Li(0,m|0,o|0,l|0,u|0,$y(A)|0)|0,I=d}function w_e(){var o=0;return s[7992]|0||(v_e(10744),o=7992,n[o>>2]=1,n[o+4>>2]=0),10744}function $y(o){return o=o|0,B_e(o)|0}function B_e(o){return o=o|0,o&255|0}function v_e(o){o=o|0,Oo(o,S_e()|0,3)}function S_e(){return 1756}function D_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;switch(oe=I,I=I+32|0,k=oe+8|0,R=oe+4|0,M=oe+20|0,L=oe,rM(o,0),A=B8e(l)|0,n[k>>2]=0,q=k+4|0,n[q>>2]=0,n[k+8>>2]=0,A<<24>>24){case 0:{s[M>>0]=0,b_e(R,u,M),LP(o,R)|0,Pf(R);break}case 8:{q=GM(l)|0,s[M>>0]=8,Su(L,n[q+4>>2]|0),P_e(R,u,M,L,q+8|0),LP(o,R)|0,Pf(R);break}case 9:{if(m=GM(l)|0,l=n[m+4>>2]|0,l|0)for(B=k+8|0,d=m+12|0;l=l+-1|0,Su(R,n[d>>2]|0),A=n[q>>2]|0,A>>>0<(n[B>>2]|0)>>>0?(n[A>>2]=n[R>>2],n[q>>2]=(n[q>>2]|0)+4):TM(k,R),l;)d=d+4|0;s[M>>0]=9,Su(L,n[m+8>>2]|0),x_e(R,u,M,L,k),LP(o,R)|0,Pf(R);break}default:q=GM(l)|0,s[M>>0]=A,Su(L,n[q+4>>2]|0),k_e(R,u,M,L),LP(o,R)|0,Pf(R)}ip(k),I=oe}function b_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,_l(d),l=Us(l)|0,G_e(o,l,s[u>>0]|0),Hl(d),I=A}function LP(o,l){o=o|0,l=l|0;var u=0;return u=n[o>>2]|0,u|0&&ja(u|0),n[o>>2]=n[l>>2],n[l>>2]=0,o|0}function P_e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0;m=I,I=I+32|0,k=m+16|0,B=m+8|0,R=m,_l(B),l=Us(l)|0,u=s[u>>0]|0,n[R>>2]=n[A>>2],d=n[d>>2]|0,n[k>>2]=n[R>>2],U_e(o,l,u,k,d),Hl(B),I=m}function x_e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0,M=0;m=I,I=I+32|0,R=m+24|0,B=m+16|0,M=m+12|0,k=m,_l(B),l=Us(l)|0,u=s[u>>0]|0,n[M>>2]=n[A>>2],NM(k,d),n[R>>2]=n[M>>2],N_e(o,l,u,R,k),ip(k),Hl(B),I=m}function k_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+32|0,B=d+16|0,m=d+8|0,k=d,_l(m),l=Us(l)|0,u=s[u>>0]|0,n[k>>2]=n[A>>2],n[B>>2]=n[k>>2],Q_e(o,l,u,B),Hl(m),I=d}function Q_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+4|0,k=d,B=Ia(R_e()|0)|0,u=$y(u)|0,n[k>>2]=n[A>>2],n[m>>2]=n[k>>2],MP(o,Ns(0,B|0,l|0,u|0,cd(m)|0)|0),I=d}function R_e(){var o=0;return s[8e3]|0||(T_e(10756),o=8e3,n[o>>2]=1,n[o+4>>2]=0),10756}function MP(o,l){o=o|0,l=l|0,rM(o,l)}function T_e(o){o=o|0,Oo(o,F_e()|0,2)}function F_e(){return 1772}function N_e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0,M=0;m=I,I=I+32|0,R=m+16|0,M=m+12|0,B=m,k=Ia(O_e()|0)|0,u=$y(u)|0,n[M>>2]=n[A>>2],n[R>>2]=n[M>>2],A=cd(R)|0,n[B>>2]=n[d>>2],R=d+4|0,n[B+4>>2]=n[R>>2],M=d+8|0,n[B+8>>2]=n[M>>2],n[M>>2]=0,n[R>>2]=0,n[d>>2]=0,MP(o,Li(0,k|0,l|0,u|0,A|0,LM(B)|0)|0),ip(B),I=m}function O_e(){var o=0;return s[8008]|0||(L_e(10768),o=8008,n[o>>2]=1,n[o+4>>2]=0),10768}function L_e(o){o=o|0,Oo(o,M_e()|0,3)}function M_e(){return 1784}function U_e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0;m=I,I=I+16|0,k=m+4|0,R=m,B=Ia(__e()|0)|0,u=$y(u)|0,n[R>>2]=n[A>>2],n[k>>2]=n[R>>2],A=cd(k)|0,MP(o,Li(0,B|0,l|0,u|0,A|0,OM(d)|0)|0),I=m}function __e(){var o=0;return s[8016]|0||(H_e(10780),o=8016,n[o>>2]=1,n[o+4>>2]=0),10780}function H_e(o){o=o|0,Oo(o,j_e()|0,3)}function j_e(){return 1800}function G_e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=Ia(q_e()|0)|0,MP(o,mn(0,A|0,l|0,$y(u)|0)|0)}function q_e(){var o=0;return s[8024]|0||(W_e(10792),o=8024,n[o>>2]=1,n[o+4>>2]=0),10792}function W_e(o){o=o|0,Oo(o,V_e()|0,1)}function V_e(){return 1816}function Y_e(){K_e(),J_e(),z_e()}function K_e(){n[2702]=VZ(65536)|0}function J_e(){d4e(10856)}function z_e(){Z_e(10816)}function Z_e(o){o=o|0,X_e(o,5044),$_e(o)|0}function X_e(o,l){o=o|0,l=l|0;var u=0;u=lZ()|0,n[o>>2]=u,u4e(u,l),_h(n[o>>2]|0)}function $_e(o){o=o|0;var l=0;return l=n[o>>2]|0,ad(l,e4e()|0),o|0}function e4e(){var o=0;return s[8032]|0||(EZ(10820),gr(64,10820,U|0)|0,o=8032,n[o>>2]=1,n[o+4>>2]=0),_r(10820)|0||EZ(10820),10820}function EZ(o){o=o|0,n4e(o),ld(o,25)}function t4e(o){o=o|0,r4e(o+24|0)}function r4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function n4e(o){o=o|0;var l=0;l=tn()|0,rn(o,5,18,l,a4e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function i4e(o,l){o=o|0,l=l|0,s4e(o,l)}function s4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;u=I,I=I+16|0,A=u,d=u+4|0,sd(d,l),n[A>>2]=od(d,l)|0,o4e(o,A),I=u}function o4e(o,l){o=o|0,l=l|0,IZ(o+4|0,n[l>>2]|0),s[o+8>>0]=1}function IZ(o,l){o=o|0,l=l|0,n[o>>2]=l}function a4e(){return 1824}function l4e(o){return o=o|0,c4e(o)|0}function c4e(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Ul(8)|0,l=A,k=Jt(4)|0,sd(d,o),IZ(k,od(d,o)|0),m=l+4|0,n[m>>2]=k,o=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],cZ(o,m,d),n[A>>2]=o,I=u,l|0}function Ul(o){o=o|0;var l=0,u=0;return o=o+7&-8,o>>>0<=32768&&(l=n[2701]|0,o>>>0<=(65536-l|0)>>>0)?(u=(n[2702]|0)+l|0,n[2701]=l+o,o=u):(o=VZ(o+8|0)|0,n[o>>2]=n[2703],n[2703]=o,o=o+8|0),o|0}function u4e(o,l){o=o|0,l=l|0,n[o>>2]=f4e()|0,n[o+4>>2]=A4e()|0,n[o+12>>2]=l,n[o+8>>2]=p4e()|0,n[o+32>>2]=9}function f4e(){return 11744}function A4e(){return 1832}function p4e(){return NP()|0}function h4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Uh(A,896)|0)==512?u|0&&(g4e(u),It(u)):l|0&&It(l)}function g4e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Hh(o)}function d4e(o){o=o|0,m4e(o,5052),y4e(o)|0,E4e(o,5058,26)|0,I4e(o,5069,1)|0,C4e(o,5077,10)|0,w4e(o,5087,19)|0,B4e(o,5094,27)|0}function m4e(o,l){o=o|0,l=l|0;var u=0;u=g8e()|0,n[o>>2]=u,d8e(u,l),_h(n[o>>2]|0)}function y4e(o){o=o|0;var l=0;return l=n[o>>2]|0,ad(l,t8e()|0),o|0}function E4e(o,l,u){return o=o|0,l=l|0,u=u|0,L3e(o,Sn(l)|0,u,0),o|0}function I4e(o,l,u){return o=o|0,l=l|0,u=u|0,w3e(o,Sn(l)|0,u,0),o|0}function C4e(o,l,u){return o=o|0,l=l|0,u=u|0,e3e(o,Sn(l)|0,u,0),o|0}function w4e(o,l,u){return o=o|0,l=l|0,u=u|0,U4e(o,Sn(l)|0,u,0),o|0}function CZ(o,l){o=o|0,l=l|0;var u=0,A=0;e:for(;;){for(u=n[2703]|0;;){if((u|0)==(l|0))break e;if(A=n[u>>2]|0,n[2703]=A,!u)u=A;else break}It(u)}n[2701]=o}function B4e(o,l,u){return o=o|0,l=l|0,u=u|0,v4e(o,Sn(l)|0,u,0),o|0}function v4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=MM()|0,o=S4e(u)|0,Dn(m,l,d,o,D4e(u,A)|0,A)}function MM(){var o=0,l=0;if(s[8040]|0||(BZ(10860),gr(65,10860,U|0)|0,l=8040,n[l>>2]=1,n[l+4>>2]=0),!(_r(10860)|0)){o=10860,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));BZ(10860)}return 10860}function S4e(o){return o=o|0,o|0}function D4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=MM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(wZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(b4e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function wZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function b4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=P4e(o)|0,A>>>0<B>>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,x4e(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,wZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,k4e(o,d),Q4e(d),I=k;return}}function P4e(o){return o=o|0,536870911}function x4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function k4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Q4e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function BZ(o){o=o|0,F4e(o)}function R4e(o){o=o|0,T4e(o+24|0)}function T4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function F4e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,11,l,N4e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function N4e(){return 1840}function O4e(o,l,u){o=o|0,l=l|0,u=u|0,M4e(n[(L4e(o)|0)>>2]|0,l,u)}function L4e(o){return o=o|0,(n[(MM()|0)+24>>2]|0)+(o<<3)|0}function M4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;A=I,I=I+16|0,m=A+1|0,d=A,sd(m,l),l=od(m,l)|0,sd(d,u),u=od(d,u)|0,op[o&31](l,u),I=A}function U4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=UM()|0,o=_4e(u)|0,Dn(m,l,d,o,H4e(u,A)|0,A)}function UM(){var o=0,l=0;if(s[8048]|0||(SZ(10896),gr(66,10896,U|0)|0,l=8048,n[l>>2]=1,n[l+4>>2]=0),!(_r(10896)|0)){o=10896,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));SZ(10896)}return 10896}function _4e(o){return o=o|0,o|0}function H4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=UM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(vZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(j4e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function vZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function j4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=G4e(o)|0,A>>>0<B>>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,q4e(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,vZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,W4e(o,d),V4e(d),I=k;return}}function G4e(o){return o=o|0,536870911}function q4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function W4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function V4e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function SZ(o){o=o|0,J4e(o)}function Y4e(o){o=o|0,K4e(o+24|0)}function K4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function J4e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,11,l,z4e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function z4e(){return 1852}function Z4e(o,l){return o=o|0,l=l|0,$4e(n[(X4e(o)|0)>>2]|0,l)|0}function X4e(o){return o=o|0,(n[(UM()|0)+24>>2]|0)+(o<<3)|0}function $4e(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,sd(A,l),l=od(A,l)|0,l=TP(pd[o&31](l)|0)|0,I=u,l|0}function e3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=_M()|0,o=t3e(u)|0,Dn(m,l,d,o,r3e(u,A)|0,A)}function _M(){var o=0,l=0;if(s[8056]|0||(bZ(10932),gr(67,10932,U|0)|0,l=8056,n[l>>2]=1,n[l+4>>2]=0),!(_r(10932)|0)){o=10932,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));bZ(10932)}return 10932}function t3e(o){return o=o|0,o|0}function r3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=_M()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(DZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(n3e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function DZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function n3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=i3e(o)|0,A>>>0<B>>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,s3e(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,DZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,o3e(o,d),a3e(d),I=k;return}}function i3e(o){return o=o|0,536870911}function s3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function o3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function a3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function bZ(o){o=o|0,u3e(o)}function l3e(o){o=o|0,c3e(o+24|0)}function c3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function u3e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,7,l,f3e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function f3e(){return 1860}function A3e(o,l,u){return o=o|0,l=l|0,u=u|0,h3e(n[(p3e(o)|0)>>2]|0,l,u)|0}function p3e(o){return o=o|0,(n[(_M()|0)+24>>2]|0)+(o<<3)|0}function h3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0;return A=I,I=I+32|0,B=A+12|0,m=A+8|0,k=A,R=A+16|0,d=A+4|0,g3e(R,l),d3e(k,R,l),Oh(d,u),u=Lh(d,u)|0,n[B>>2]=n[k>>2],DB[o&15](m,B,u),u=m3e(m)|0,Pf(m),Mh(d),I=A,u|0}function g3e(o,l){o=o|0,l=l|0}function d3e(o,l,u){o=o|0,l=l|0,u=u|0,y3e(o,u)}function m3e(o){return o=o|0,Us(o)|0}function y3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+16|0,u=d,A=l,A&1?(E3e(u,0),Ue(A|0,u|0)|0,I3e(o,u),C3e(u)):n[o>>2]=n[l>>2],I=d}function E3e(o,l){o=o|0,l=l|0,Bu(o,l),n[o+4>>2]=0,s[o+8>>0]=0}function I3e(o,l){o=o|0,l=l|0,n[o>>2]=n[l+4>>2]}function C3e(o){o=o|0,s[o+8>>0]=0}function w3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=HM()|0,o=B3e(u)|0,Dn(m,l,d,o,v3e(u,A)|0,A)}function HM(){var o=0,l=0;if(s[8064]|0||(xZ(10968),gr(68,10968,U|0)|0,l=8064,n[l>>2]=1,n[l+4>>2]=0),!(_r(10968)|0)){o=10968,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));xZ(10968)}return 10968}function B3e(o){return o=o|0,o|0}function v3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=HM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(PZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(S3e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function PZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function S3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=D3e(o)|0,A>>>0<B>>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,b3e(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,PZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,P3e(o,d),x3e(d),I=k;return}}function D3e(o){return o=o|0,536870911}function b3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function P3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function x3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function xZ(o){o=o|0,R3e(o)}function k3e(o){o=o|0,Q3e(o+24|0)}function Q3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function R3e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,1,l,T3e()|0,5),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function T3e(){return 1872}function F3e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,O3e(n[(N3e(o)|0)>>2]|0,l,u,A,d,m)}function N3e(o){return o=o|0,(n[(HM()|0)+24>>2]|0)+(o<<3)|0}function O3e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0;B=I,I=I+32|0,k=B+16|0,R=B+12|0,M=B+8|0,L=B+4|0,q=B,Oh(k,l),l=Lh(k,l)|0,Oh(R,u),u=Lh(R,u)|0,Oh(M,A),A=Lh(M,A)|0,Oh(L,d),d=Lh(L,d)|0,Oh(q,m),m=Lh(q,m)|0,ZZ[o&1](l,u,A,d,m),Mh(q),Mh(L),Mh(M),Mh(R),Mh(k),I=B}function L3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=jM()|0,o=M3e(u)|0,Dn(m,l,d,o,U3e(u,A)|0,A)}function jM(){var o=0,l=0;if(s[8072]|0||(QZ(11004),gr(69,11004,U|0)|0,l=8072,n[l>>2]=1,n[l+4>>2]=0),!(_r(11004)|0)){o=11004,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));QZ(11004)}return 11004}function M3e(o){return o=o|0,o|0}function U3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,R=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,R=jM()|0,B=R+24|0,l=yr(l,4)|0,n[m>>2]=l,u=R+28|0,A=n[u>>2]|0,A>>>0<(n[R+32>>2]|0)>>>0?(kZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(_3e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function kZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function _3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=H3e(o)|0,A>>>0<B>>>0)an(o);else{R=n[o>>2]|0,L=(n[o+8>>2]|0)-R|0,M=L>>2,j3e(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-R>>3,o+8|0),B=d+8|0,kZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,G3e(o,d),q3e(d),I=k;return}}function H3e(o){return o=o|0,536870911}function j3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Jt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function G3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function q3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function QZ(o){o=o|0,Y3e(o)}function W3e(o){o=o|0,V3e(o+24|0)}function V3e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function Y3e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,12,l,K3e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function K3e(){return 1896}function J3e(o,l,u){o=o|0,l=l|0,u=u|0,Z3e(n[(z3e(o)|0)>>2]|0,l,u)}function z3e(o){return o=o|0,(n[(jM()|0)+24>>2]|0)+(o<<3)|0}function Z3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;A=I,I=I+16|0,m=A+4|0,d=A,X3e(m,l),l=$3e(m,l)|0,Oh(d,u),u=Lh(d,u)|0,op[o&31](l,u),Mh(d),I=A}function X3e(o,l){o=o|0,l=l|0}function $3e(o,l){return o=o|0,l=l|0,e8e(l)|0}function e8e(o){return o=o|0,o|0}function t8e(){var o=0;return s[8080]|0||(RZ(11040),gr(70,11040,U|0)|0,o=8080,n[o>>2]=1,n[o+4>>2]=0),_r(11040)|0||RZ(11040),11040}function RZ(o){o=o|0,i8e(o),ld(o,71)}function r8e(o){o=o|0,n8e(o+24|0)}function n8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function i8e(o){o=o|0;var l=0;l=tn()|0,rn(o,5,7,l,l8e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function s8e(o){o=o|0,o8e(o)}function o8e(o){o=o|0,a8e(o)}function a8e(o){o=o|0,s[o+8>>0]=1}function l8e(){return 1936}function c8e(){return u8e()|0}function u8e(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Ul(8)|0,o=u,m=o+4|0,n[m>>2]=Jt(1)|0,A=Jt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],f8e(A,m,d),n[u>>2]=A,I=l,o|0}function f8e(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Jt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1916,n[u+12>>2]=l,n[o+4>>2]=u}function A8e(o){o=o|0,rE(o),It(o)}function p8e(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function h8e(o){o=o|0,It(o)}function g8e(){var o=0;return s[8088]|0||(w8e(11076),gr(25,11076,U|0)|0,o=8088,n[o>>2]=1,n[o+4>>2]=0),11076}function d8e(o,l){o=o|0,l=l|0,n[o>>2]=m8e()|0,n[o+4>>2]=y8e()|0,n[o+12>>2]=l,n[o+8>>2]=E8e()|0,n[o+32>>2]=10}function m8e(){return 11745}function y8e(){return 1940}function E8e(){return FP()|0}function I8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Uh(A,896)|0)==512?u|0&&(C8e(u),It(u)):l|0&&It(l)}function C8e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Hh(o)}function w8e(o){o=o|0,Nh(o)}function Su(o,l){o=o|0,l=l|0,n[o>>2]=l}function GM(o){return o=o|0,n[o>>2]|0}function B8e(o){return o=o|0,s[n[o>>2]>>0]|0}function v8e(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,n[A>>2]=n[o>>2],S8e(l,A)|0,I=u}function S8e(o,l){o=o|0,l=l|0;var u=0;return u=D8e(n[o>>2]|0,l)|0,l=o+4|0,n[(n[l>>2]|0)+8>>2]=u,n[(n[l>>2]|0)+8>>2]|0}function D8e(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,_l(A),o=Us(o)|0,l=b8e(o,n[l>>2]|0)|0,Hl(A),I=u,l|0}function _l(o){o=o|0,n[o>>2]=n[2701],n[o+4>>2]=n[2703]}function b8e(o,l){o=o|0,l=l|0;var u=0;return u=Ia(P8e()|0)|0,mn(0,u|0,o|0,OM(l)|0)|0}function Hl(o){o=o|0,CZ(n[o>>2]|0,n[o+4>>2]|0)}function P8e(){var o=0;return s[8096]|0||(x8e(11120),o=8096,n[o>>2]=1,n[o+4>>2]=0),11120}function x8e(o){o=o|0,Oo(o,k8e()|0,1)}function k8e(){return 1948}function Q8e(){R8e()}function R8e(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0,Te=0;if(Le=I,I=I+16|0,L=Le+4|0,q=Le,ua(65536,10804,n[2702]|0,10812),u=rZ()|0,l=n[u>>2]|0,o=n[l>>2]|0,o|0)for(A=n[u+8>>2]|0,u=n[u+4>>2]|0;gf(o|0,c[u>>0]|0|0,s[A>>0]|0),l=l+4|0,o=n[l>>2]|0,o;)A=A+1|0,u=u+1|0;if(o=nZ()|0,l=n[o>>2]|0,l|0)do OA(l|0,n[o+4>>2]|0),o=o+8|0,l=n[o>>2]|0;while(l|0);OA(T8e()|0,5167),M=Zy()|0,o=n[M>>2]|0;e:do if(o|0){do F8e(n[o+4>>2]|0),o=n[o>>2]|0;while(o|0);if(o=n[M>>2]|0,o|0){R=M;do{for(;d=o,o=n[o>>2]|0,d=n[d+4>>2]|0,!!(N8e(d)|0);)if(n[q>>2]=R,n[L>>2]=n[q>>2],O8e(M,L)|0,!o)break e;if(L8e(d),R=n[R>>2]|0,l=TZ(d)|0,m=Oi()|0,B=I,I=I+((1*(l<<2)|0)+15&-16)|0,k=I,I=I+((1*(l<<2)|0)+15&-16)|0,l=n[(gZ(d)|0)>>2]|0,l|0)for(u=B,A=k;n[u>>2]=n[(Xy(n[l+4>>2]|0)|0)>>2],n[A>>2]=n[l+8>>2],l=n[l>>2]|0,l;)u=u+4|0,A=A+4|0;Te=Xy(d)|0,l=M8e(d)|0,u=TZ(d)|0,A=U8e(d)|0,ac(Te|0,l|0,B|0,k|0,u|0,A|0,kM(d)|0),NA(m|0)}while(o|0)}}while(!1);if(o=n[(QM()|0)>>2]|0,o|0)do Te=o+4|0,M=RM(Te)|0,d=wB(M)|0,m=IB(M)|0,B=(CB(M)|0)+1|0,k=UP(M)|0,R=FZ(Te)|0,M=_r(M)|0,L=OP(Te)|0,q=qM(Te)|0,lu(0,d|0,m|0,B|0,k|0,R|0,M|0,L|0,q|0,WM(Te)|0),o=n[o>>2]|0;while(o|0);o=n[(Zy()|0)>>2]|0;e:do if(o|0){t:for(;;){if(l=n[o+4>>2]|0,l|0&&(oe=n[(Xy(l)|0)>>2]|0,Ye=n[(dZ(l)|0)>>2]|0,Ye|0)){u=Ye;do{l=u+4|0,A=RM(l)|0;r:do if(A|0)switch(_r(A)|0){case 0:break t;case 4:case 3:case 2:{k=wB(A)|0,R=IB(A)|0,M=(CB(A)|0)+1|0,L=UP(A)|0,q=_r(A)|0,Te=OP(l)|0,lu(oe|0,k|0,R|0,M|0,L|0,0,q|0,Te|0,qM(l)|0,WM(l)|0);break r}case 1:{B=wB(A)|0,k=IB(A)|0,R=(CB(A)|0)+1|0,M=UP(A)|0,L=FZ(l)|0,q=_r(A)|0,Te=OP(l)|0,lu(oe|0,B|0,k|0,R|0,M|0,L|0,q|0,Te|0,qM(l)|0,WM(l)|0);break r}case 5:{M=wB(A)|0,L=IB(A)|0,q=(CB(A)|0)+1|0,Te=UP(A)|0,lu(oe|0,M|0,L|0,q|0,Te|0,_8e(A)|0,_r(A)|0,0,0,0);break r}default:break r}while(!1);u=n[u>>2]|0}while(u|0)}if(o=n[o>>2]|0,!o)break e}Nt()}while(!1);we(),I=Le}function T8e(){return 11703}function F8e(o){o=o|0,s[o+40>>0]=0}function N8e(o){return o=o|0,(s[o+40>>0]|0)!=0|0}function O8e(o,l){return o=o|0,l=l|0,l=H8e(l)|0,o=n[l>>2]|0,n[l>>2]=n[o>>2],It(o),n[l>>2]|0}function L8e(o){o=o|0,s[o+40>>0]=1}function TZ(o){return o=o|0,n[o+20>>2]|0}function M8e(o){return o=o|0,n[o+8>>2]|0}function U8e(o){return o=o|0,n[o+32>>2]|0}function UP(o){return o=o|0,n[o+4>>2]|0}function FZ(o){return o=o|0,n[o+4>>2]|0}function qM(o){return o=o|0,n[o+8>>2]|0}function WM(o){return o=o|0,n[o+16>>2]|0}function _8e(o){return o=o|0,n[o+20>>2]|0}function H8e(o){return o=o|0,n[o>>2]|0}function _P(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0,Te=0,nt=0,Xe=0,ft=0,He=0,Ve=0,Lt=0;Lt=I,I=I+16|0,oe=Lt;do if(o>>>0<245){if(M=o>>>0<11?16:o+11&-8,o=M>>>3,q=n[2783]|0,u=q>>>o,u&3|0)return l=(u&1^1)+o|0,o=11172+(l<<1<<2)|0,u=o+8|0,A=n[u>>2]|0,d=A+8|0,m=n[d>>2]|0,(o|0)==(m|0)?n[2783]=q&~(1<<l):(n[m+12>>2]=o,n[u>>2]=m),Ve=l<<3,n[A+4>>2]=Ve|3,Ve=A+Ve+4|0,n[Ve>>2]=n[Ve>>2]|1,Ve=d,I=Lt,Ve|0;if(L=n[2785]|0,M>>>0>L>>>0){if(u|0)return l=2<<o,l=u<<o&(l|0-l),l=(l&0-l)+-1|0,B=l>>>12&16,l=l>>>B,u=l>>>5&8,l=l>>>u,d=l>>>2&4,l=l>>>d,o=l>>>1&2,l=l>>>o,A=l>>>1&1,A=(u|B|d|o|A)+(l>>>A)|0,l=11172+(A<<1<<2)|0,o=l+8|0,d=n[o>>2]|0,B=d+8|0,u=n[B>>2]|0,(l|0)==(u|0)?(o=q&~(1<<A),n[2783]=o):(n[u+12>>2]=l,n[o>>2]=u,o=q),m=(A<<3)-M|0,n[d+4>>2]=M|3,A=d+M|0,n[A+4>>2]=m|1,n[A+m>>2]=m,L|0&&(d=n[2788]|0,l=L>>>3,u=11172+(l<<1<<2)|0,l=1<<l,o&l?(o=u+8|0,l=n[o>>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=d,n[l+12>>2]=d,n[d+8>>2]=l,n[d+12>>2]=u),n[2785]=m,n[2788]=A,Ve=B,I=Lt,Ve|0;if(k=n[2784]|0,k){if(u=(k&0-k)+-1|0,B=u>>>12&16,u=u>>>B,m=u>>>5&8,u=u>>>m,R=u>>>2&4,u=u>>>R,A=u>>>1&2,u=u>>>A,o=u>>>1&1,o=n[11436+((m|B|R|A|o)+(u>>>o)<<2)>>2]|0,u=(n[o+4>>2]&-8)-M|0,A=n[o+16+(((n[o+16>>2]|0)==0&1)<<2)>>2]|0,!A)R=o,m=u;else{do B=(n[A+4>>2]&-8)-M|0,R=B>>>0<u>>>0,u=R?B:u,o=R?A:o,A=n[A+16+(((n[A+16>>2]|0)==0&1)<<2)>>2]|0;while(A|0);R=o,m=u}if(B=R+M|0,R>>>0<B>>>0){d=n[R+24>>2]|0,l=n[R+12>>2]|0;do if((l|0)==(R|0)){if(o=R+20|0,l=n[o>>2]|0,!l&&(o=R+16|0,l=n[o>>2]|0,!l)){u=0;break}for(;;){if(u=l+20|0,A=n[u>>2]|0,A|0){l=A,o=u;continue}if(u=l+16|0,A=n[u>>2]|0,A)l=A,o=u;else break}n[o>>2]=0,u=l}else u=n[R+8>>2]|0,n[u+12>>2]=l,n[l+8>>2]=u,u=l;while(!1);do if(d|0){if(l=n[R+28>>2]|0,o=11436+(l<<2)|0,(R|0)==(n[o>>2]|0)){if(n[o>>2]=u,!u){n[2784]=k&~(1<<l);break}}else if(n[d+16+(((n[d+16>>2]|0)!=(R|0)&1)<<2)>>2]=u,!u)break;n[u+24>>2]=d,l=n[R+16>>2]|0,l|0&&(n[u+16>>2]=l,n[l+24>>2]=u),l=n[R+20>>2]|0,l|0&&(n[u+20>>2]=l,n[l+24>>2]=u)}while(!1);return m>>>0<16?(Ve=m+M|0,n[R+4>>2]=Ve|3,Ve=R+Ve+4|0,n[Ve>>2]=n[Ve>>2]|1):(n[R+4>>2]=M|3,n[B+4>>2]=m|1,n[B+m>>2]=m,L|0&&(A=n[2788]|0,l=L>>>3,u=11172+(l<<1<<2)|0,l=1<<l,q&l?(o=u+8|0,l=n[o>>2]|0):(n[2783]=q|l,l=u,o=u+8|0),n[o>>2]=A,n[l+12>>2]=A,n[A+8>>2]=l,n[A+12>>2]=u),n[2785]=m,n[2788]=B),Ve=R+8|0,I=Lt,Ve|0}else q=M}else q=M}else q=M}else if(o>>>0<=4294967231)if(o=o+11|0,M=o&-8,R=n[2784]|0,R){A=0-M|0,o=o>>>8,o?M>>>0>16777215?k=31:(q=(o+1048320|0)>>>16&8,He=o<<q,L=(He+520192|0)>>>16&4,He=He<<L,k=(He+245760|0)>>>16&2,k=14-(L|q|k)+(He<<k>>>15)|0,k=M>>>(k+7|0)&1|k<<1):k=0,u=n[11436+(k<<2)>>2]|0;e:do if(!u)u=0,o=0,He=57;else for(o=0,B=M<<((k|0)==31?0:25-(k>>>1)|0),m=0;;){if(d=(n[u+4>>2]&-8)-M|0,d>>>0<A>>>0)if(d)o=u,A=d;else{o=u,A=0,d=u,He=61;break e}if(d=n[u+20>>2]|0,u=n[u+16+(B>>>31<<2)>>2]|0,m=(d|0)==0|(d|0)==(u|0)?m:d,d=(u|0)==0,d){u=m,He=57;break}else B=B<<((d^1)&1)}while(!1);if((He|0)==57){if((u|0)==0&(o|0)==0){if(o=2<<k,o=R&(o|0-o),!o){q=M;break}q=(o&0-o)+-1|0,B=q>>>12&16,q=q>>>B,m=q>>>5&8,q=q>>>m,k=q>>>2&4,q=q>>>k,L=q>>>1&2,q=q>>>L,u=q>>>1&1,o=0,u=n[11436+((m|B|k|L|u)+(q>>>u)<<2)>>2]|0}u?(d=u,He=61):(k=o,B=A)}if((He|0)==61)for(;;)if(He=0,u=(n[d+4>>2]&-8)-M|0,q=u>>>0<A>>>0,u=q?u:A,o=q?d:o,d=n[d+16+(((n[d+16>>2]|0)==0&1)<<2)>>2]|0,d)A=u,He=61;else{k=o,B=u;break}if(k|0&&B>>>0<((n[2785]|0)-M|0)>>>0){if(m=k+M|0,k>>>0>=m>>>0)return Ve=0,I=Lt,Ve|0;d=n[k+24>>2]|0,l=n[k+12>>2]|0;do if((l|0)==(k|0)){if(o=k+20|0,l=n[o>>2]|0,!l&&(o=k+16|0,l=n[o>>2]|0,!l)){l=0;break}for(;;){if(u=l+20|0,A=n[u>>2]|0,A|0){l=A,o=u;continue}if(u=l+16|0,A=n[u>>2]|0,A)l=A,o=u;else break}n[o>>2]=0}else Ve=n[k+8>>2]|0,n[Ve+12>>2]=l,n[l+8>>2]=Ve;while(!1);do if(d){if(o=n[k+28>>2]|0,u=11436+(o<<2)|0,(k|0)==(n[u>>2]|0)){if(n[u>>2]=l,!l){A=R&~(1<<o),n[2784]=A;break}}else if(n[d+16+(((n[d+16>>2]|0)!=(k|0)&1)<<2)>>2]=l,!l){A=R;break}n[l+24>>2]=d,o=n[k+16>>2]|0,o|0&&(n[l+16>>2]=o,n[o+24>>2]=l),o=n[k+20>>2]|0,o&&(n[l+20>>2]=o,n[o+24>>2]=l),A=R}else A=R;while(!1);do if(B>>>0>=16){if(n[k+4>>2]=M|3,n[m+4>>2]=B|1,n[m+B>>2]=B,l=B>>>3,B>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<<l,o&l?(o=u+8|0,l=n[o>>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=m,n[l+12>>2]=m,n[m+8>>2]=l,n[m+12>>2]=u;break}if(l=B>>>8,l?B>>>0>16777215?l=31:(He=(l+1048320|0)>>>16&8,Ve=l<<He,ft=(Ve+520192|0)>>>16&4,Ve=Ve<<ft,l=(Ve+245760|0)>>>16&2,l=14-(ft|He|l)+(Ve<<l>>>15)|0,l=B>>>(l+7|0)&1|l<<1):l=0,u=11436+(l<<2)|0,n[m+28>>2]=l,o=m+16|0,n[o+4>>2]=0,n[o>>2]=0,o=1<<l,!(A&o)){n[2784]=A|o,n[u>>2]=m,n[m+24>>2]=u,n[m+12>>2]=m,n[m+8>>2]=m;break}for(o=B<<((l|0)==31?0:25-(l>>>1)|0),u=n[u>>2]|0;;){if((n[u+4>>2]&-8|0)==(B|0)){He=97;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=96;break}}if((He|0)==96){n[A>>2]=m,n[m+24>>2]=u,n[m+12>>2]=m,n[m+8>>2]=m;break}else if((He|0)==97){He=u+8|0,Ve=n[He>>2]|0,n[Ve+12>>2]=m,n[He>>2]=m,n[m+8>>2]=Ve,n[m+12>>2]=u,n[m+24>>2]=0;break}}else Ve=B+M|0,n[k+4>>2]=Ve|3,Ve=k+Ve+4|0,n[Ve>>2]=n[Ve>>2]|1;while(!1);return Ve=k+8|0,I=Lt,Ve|0}else q=M}else q=M;else q=-1;while(!1);if(u=n[2785]|0,u>>>0>=q>>>0)return l=u-q|0,o=n[2788]|0,l>>>0>15?(Ve=o+q|0,n[2788]=Ve,n[2785]=l,n[Ve+4>>2]=l|1,n[Ve+l>>2]=l,n[o+4>>2]=q|3):(n[2785]=0,n[2788]=0,n[o+4>>2]=u|3,Ve=o+u+4|0,n[Ve>>2]=n[Ve>>2]|1),Ve=o+8|0,I=Lt,Ve|0;if(B=n[2786]|0,B>>>0>q>>>0)return ft=B-q|0,n[2786]=ft,Ve=n[2789]|0,He=Ve+q|0,n[2789]=He,n[He+4>>2]=ft|1,n[Ve+4>>2]=q|3,Ve=Ve+8|0,I=Lt,Ve|0;if(n[2901]|0?o=n[2903]|0:(n[2903]=4096,n[2902]=4096,n[2904]=-1,n[2905]=-1,n[2906]=0,n[2894]=0,o=oe&-16^1431655768,n[oe>>2]=o,n[2901]=o,o=4096),k=q+48|0,R=q+47|0,m=o+R|0,d=0-o|0,M=m&d,M>>>0<=q>>>0||(o=n[2893]|0,o|0&&(L=n[2891]|0,oe=L+M|0,oe>>>0<=L>>>0|oe>>>0>o>>>0)))return Ve=0,I=Lt,Ve|0;e:do if(n[2894]&4)l=0,He=133;else{u=n[2789]|0;t:do if(u){for(A=11580;o=n[A>>2]|0,!(o>>>0<=u>>>0&&(Te=A+4|0,(o+(n[Te>>2]|0)|0)>>>0>u>>>0));)if(o=n[A+8>>2]|0,o)A=o;else{He=118;break t}if(l=m-B&d,l>>>0<2147483647)if(o=jh(l|0)|0,(o|0)==((n[A>>2]|0)+(n[Te>>2]|0)|0)){if((o|0)!=-1){B=l,m=o,He=135;break e}}else A=o,He=126;else l=0}else He=118;while(!1);do if((He|0)==118)if(u=jh(0)|0,(u|0)!=-1&&(l=u,Ye=n[2902]|0,Le=Ye+-1|0,l=(Le&l|0?(Le+l&0-Ye)-l|0:0)+M|0,Ye=n[2891]|0,Le=l+Ye|0,l>>>0>q>>>0&l>>>0<2147483647)){if(Te=n[2893]|0,Te|0&&Le>>>0<=Ye>>>0|Le>>>0>Te>>>0){l=0;break}if(o=jh(l|0)|0,(o|0)==(u|0)){B=l,m=u,He=135;break e}else A=o,He=126}else l=0;while(!1);do if((He|0)==126){if(u=0-l|0,!(k>>>0>l>>>0&(l>>>0<2147483647&(A|0)!=-1)))if((A|0)==-1){l=0;break}else{B=l,m=A,He=135;break e}if(o=n[2903]|0,o=R-l+o&0-o,o>>>0>=2147483647){B=l,m=A,He=135;break e}if((jh(o|0)|0)==-1){jh(u|0)|0,l=0;break}else{B=o+l|0,m=A,He=135;break e}}while(!1);n[2894]=n[2894]|4,He=133}while(!1);if((He|0)==133&&M>>>0<2147483647&&(ft=jh(M|0)|0,Te=jh(0)|0,nt=Te-ft|0,Xe=nt>>>0>(q+40|0)>>>0,!((ft|0)==-1|Xe^1|ft>>>0<Te>>>0&((ft|0)!=-1&(Te|0)!=-1)^1))&&(B=Xe?nt:l,m=ft,He=135),(He|0)==135){l=(n[2891]|0)+B|0,n[2891]=l,l>>>0>(n[2892]|0)>>>0&&(n[2892]=l),R=n[2789]|0;do if(R){for(l=11580;;){if(o=n[l>>2]|0,u=l+4|0,A=n[u>>2]|0,(m|0)==(o+A|0)){He=145;break}if(d=n[l+8>>2]|0,d)l=d;else break}if((He|0)==145&&!(n[l+12>>2]&8|0)&&R>>>0<m>>>0&R>>>0>=o>>>0){n[u>>2]=A+B,Ve=R+8|0,Ve=Ve&7|0?0-Ve&7:0,He=R+Ve|0,Ve=(n[2786]|0)+(B-Ve)|0,n[2789]=He,n[2786]=Ve,n[He+4>>2]=Ve|1,n[He+Ve+4>>2]=40,n[2790]=n[2905];break}for(m>>>0<(n[2787]|0)>>>0&&(n[2787]=m),u=m+B|0,l=11580;;){if((n[l>>2]|0)==(u|0)){He=153;break}if(o=n[l+8>>2]|0,o)l=o;else break}if((He|0)==153&&!(n[l+12>>2]&8|0)){n[l>>2]=m,L=l+4|0,n[L>>2]=(n[L>>2]|0)+B,L=m+8|0,L=m+(L&7|0?0-L&7:0)|0,l=u+8|0,l=u+(l&7|0?0-l&7:0)|0,M=L+q|0,k=l-L-q|0,n[L+4>>2]=q|3;do if((l|0)!=(R|0)){if((l|0)==(n[2788]|0)){Ve=(n[2785]|0)+k|0,n[2785]=Ve,n[2788]=M,n[M+4>>2]=Ve|1,n[M+Ve>>2]=Ve;break}if(o=n[l+4>>2]|0,(o&3|0)==1){B=o&-8,A=o>>>3;e:do if(o>>>0<256)if(o=n[l+8>>2]|0,u=n[l+12>>2]|0,(u|0)==(o|0)){n[2783]=n[2783]&~(1<<A);break}else{n[o+12>>2]=u,n[u+8>>2]=o;break}else{m=n[l+24>>2]|0,o=n[l+12>>2]|0;do if((o|0)==(l|0)){if(A=l+16|0,u=A+4|0,o=n[u>>2]|0,!o)if(o=n[A>>2]|0,o)u=A;else{o=0;break}for(;;){if(A=o+20|0,d=n[A>>2]|0,d|0){o=d,u=A;continue}if(A=o+16|0,d=n[A>>2]|0,d)o=d,u=A;else break}n[u>>2]=0}else Ve=n[l+8>>2]|0,n[Ve+12>>2]=o,n[o+8>>2]=Ve;while(!1);if(!m)break;u=n[l+28>>2]|0,A=11436+(u<<2)|0;do if((l|0)!=(n[A>>2]|0)){if(n[m+16+(((n[m+16>>2]|0)!=(l|0)&1)<<2)>>2]=o,!o)break e}else{if(n[A>>2]=o,o|0)break;n[2784]=n[2784]&~(1<<u);break e}while(!1);if(n[o+24>>2]=m,u=l+16|0,A=n[u>>2]|0,A|0&&(n[o+16>>2]=A,n[A+24>>2]=o),u=n[u+4>>2]|0,!u)break;n[o+20>>2]=u,n[u+24>>2]=o}while(!1);l=l+B|0,d=B+k|0}else d=k;if(l=l+4|0,n[l>>2]=n[l>>2]&-2,n[M+4>>2]=d|1,n[M+d>>2]=d,l=d>>>3,d>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<<l,o&l?(o=u+8|0,l=n[o>>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=M,n[l+12>>2]=M,n[M+8>>2]=l,n[M+12>>2]=u;break}l=d>>>8;do if(!l)l=0;else{if(d>>>0>16777215){l=31;break}He=(l+1048320|0)>>>16&8,Ve=l<<He,ft=(Ve+520192|0)>>>16&4,Ve=Ve<<ft,l=(Ve+245760|0)>>>16&2,l=14-(ft|He|l)+(Ve<<l>>>15)|0,l=d>>>(l+7|0)&1|l<<1}while(!1);if(A=11436+(l<<2)|0,n[M+28>>2]=l,o=M+16|0,n[o+4>>2]=0,n[o>>2]=0,o=n[2784]|0,u=1<<l,!(o&u)){n[2784]=o|u,n[A>>2]=M,n[M+24>>2]=A,n[M+12>>2]=M,n[M+8>>2]=M;break}for(o=d<<((l|0)==31?0:25-(l>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(d|0)){He=194;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=193;break}}if((He|0)==193){n[A>>2]=M,n[M+24>>2]=u,n[M+12>>2]=M,n[M+8>>2]=M;break}else if((He|0)==194){He=u+8|0,Ve=n[He>>2]|0,n[Ve+12>>2]=M,n[He>>2]=M,n[M+8>>2]=Ve,n[M+12>>2]=u,n[M+24>>2]=0;break}}else Ve=(n[2786]|0)+k|0,n[2786]=Ve,n[2789]=M,n[M+4>>2]=Ve|1;while(!1);return Ve=L+8|0,I=Lt,Ve|0}for(l=11580;o=n[l>>2]|0,!(o>>>0<=R>>>0&&(Ve=o+(n[l+4>>2]|0)|0,Ve>>>0>R>>>0));)l=n[l+8>>2]|0;d=Ve+-47|0,o=d+8|0,o=d+(o&7|0?0-o&7:0)|0,d=R+16|0,o=o>>>0<d>>>0?R:o,l=o+8|0,u=m+8|0,u=u&7|0?0-u&7:0,He=m+u|0,u=B+-40-u|0,n[2789]=He,n[2786]=u,n[He+4>>2]=u|1,n[He+u+4>>2]=40,n[2790]=n[2905],u=o+4|0,n[u>>2]=27,n[l>>2]=n[2895],n[l+4>>2]=n[2896],n[l+8>>2]=n[2897],n[l+12>>2]=n[2898],n[2895]=m,n[2896]=B,n[2898]=0,n[2897]=l,l=o+24|0;do He=l,l=l+4|0,n[l>>2]=7;while((He+8|0)>>>0<Ve>>>0);if((o|0)!=(R|0)){if(m=o-R|0,n[u>>2]=n[u>>2]&-2,n[R+4>>2]=m|1,n[o>>2]=m,l=m>>>3,m>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<<l,o&l?(o=u+8|0,l=n[o>>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=R,n[l+12>>2]=R,n[R+8>>2]=l,n[R+12>>2]=u;break}if(l=m>>>8,l?m>>>0>16777215?u=31:(He=(l+1048320|0)>>>16&8,Ve=l<<He,ft=(Ve+520192|0)>>>16&4,Ve=Ve<<ft,u=(Ve+245760|0)>>>16&2,u=14-(ft|He|u)+(Ve<<u>>>15)|0,u=m>>>(u+7|0)&1|u<<1):u=0,A=11436+(u<<2)|0,n[R+28>>2]=u,n[R+20>>2]=0,n[d>>2]=0,l=n[2784]|0,o=1<<u,!(l&o)){n[2784]=l|o,n[A>>2]=R,n[R+24>>2]=A,n[R+12>>2]=R,n[R+8>>2]=R;break}for(o=m<<((u|0)==31?0:25-(u>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(m|0)){He=216;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=215;break}}if((He|0)==215){n[A>>2]=R,n[R+24>>2]=u,n[R+12>>2]=R,n[R+8>>2]=R;break}else if((He|0)==216){He=u+8|0,Ve=n[He>>2]|0,n[Ve+12>>2]=R,n[He>>2]=R,n[R+8>>2]=Ve,n[R+12>>2]=u,n[R+24>>2]=0;break}}}else{Ve=n[2787]|0,(Ve|0)==0|m>>>0<Ve>>>0&&(n[2787]=m),n[2895]=m,n[2896]=B,n[2898]=0,n[2792]=n[2901],n[2791]=-1,l=0;do Ve=11172+(l<<1<<2)|0,n[Ve+12>>2]=Ve,n[Ve+8>>2]=Ve,l=l+1|0;while((l|0)!=32);Ve=m+8|0,Ve=Ve&7|0?0-Ve&7:0,He=m+Ve|0,Ve=B+-40-Ve|0,n[2789]=He,n[2786]=Ve,n[He+4>>2]=Ve|1,n[He+Ve+4>>2]=40,n[2790]=n[2905]}while(!1);if(l=n[2786]|0,l>>>0>q>>>0)return ft=l-q|0,n[2786]=ft,Ve=n[2789]|0,He=Ve+q|0,n[2789]=He,n[He+4>>2]=ft|1,n[Ve+4>>2]=q|3,Ve=Ve+8|0,I=Lt,Ve|0}return n[(eE()|0)>>2]=12,Ve=0,I=Lt,Ve|0}function HP(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,R=0;if(o){u=o+-8|0,d=n[2787]|0,o=n[o+-4>>2]|0,l=o&-8,R=u+l|0;do if(o&1)k=u,B=u;else{if(A=n[u>>2]|0,!(o&3)||(B=u+(0-A)|0,m=A+l|0,B>>>0<d>>>0))return;if((B|0)==(n[2788]|0)){if(o=R+4|0,l=n[o>>2]|0,(l&3|0)!=3){k=B,l=m;break}n[2785]=m,n[o>>2]=l&-2,n[B+4>>2]=m|1,n[B+m>>2]=m;return}if(u=A>>>3,A>>>0<256)if(o=n[B+8>>2]|0,l=n[B+12>>2]|0,(l|0)==(o|0)){n[2783]=n[2783]&~(1<<u),k=B,l=m;break}else{n[o+12>>2]=l,n[l+8>>2]=o,k=B,l=m;break}d=n[B+24>>2]|0,o=n[B+12>>2]|0;do if((o|0)==(B|0)){if(u=B+16|0,l=u+4|0,o=n[l>>2]|0,!o)if(o=n[u>>2]|0,o)l=u;else{o=0;break}for(;;){if(u=o+20|0,A=n[u>>2]|0,A|0){o=A,l=u;continue}if(u=o+16|0,A=n[u>>2]|0,A)o=A,l=u;else break}n[l>>2]=0}else k=n[B+8>>2]|0,n[k+12>>2]=o,n[o+8>>2]=k;while(!1);if(d){if(l=n[B+28>>2]|0,u=11436+(l<<2)|0,(B|0)==(n[u>>2]|0)){if(n[u>>2]=o,!o){n[2784]=n[2784]&~(1<<l),k=B,l=m;break}}else if(n[d+16+(((n[d+16>>2]|0)!=(B|0)&1)<<2)>>2]=o,!o){k=B,l=m;break}n[o+24>>2]=d,l=B+16|0,u=n[l>>2]|0,u|0&&(n[o+16>>2]=u,n[u+24>>2]=o),l=n[l+4>>2]|0,l?(n[o+20>>2]=l,n[l+24>>2]=o,k=B,l=m):(k=B,l=m)}else k=B,l=m}while(!1);if(!(B>>>0>=R>>>0)&&(o=R+4|0,A=n[o>>2]|0,!!(A&1))){if(A&2)n[o>>2]=A&-2,n[k+4>>2]=l|1,n[B+l>>2]=l,d=l;else{if(o=n[2788]|0,(R|0)==(n[2789]|0)){if(R=(n[2786]|0)+l|0,n[2786]=R,n[2789]=k,n[k+4>>2]=R|1,(k|0)!=(o|0))return;n[2788]=0,n[2785]=0;return}if((R|0)==(o|0)){R=(n[2785]|0)+l|0,n[2785]=R,n[2788]=B,n[k+4>>2]=R|1,n[B+R>>2]=R;return}d=(A&-8)+l|0,u=A>>>3;do if(A>>>0<256)if(l=n[R+8>>2]|0,o=n[R+12>>2]|0,(o|0)==(l|0)){n[2783]=n[2783]&~(1<<u);break}else{n[l+12>>2]=o,n[o+8>>2]=l;break}else{m=n[R+24>>2]|0,o=n[R+12>>2]|0;do if((o|0)==(R|0)){if(u=R+16|0,l=u+4|0,o=n[l>>2]|0,!o)if(o=n[u>>2]|0,o)l=u;else{u=0;break}for(;;){if(u=o+20|0,A=n[u>>2]|0,A|0){o=A,l=u;continue}if(u=o+16|0,A=n[u>>2]|0,A)o=A,l=u;else break}n[l>>2]=0,u=o}else u=n[R+8>>2]|0,n[u+12>>2]=o,n[o+8>>2]=u,u=o;while(!1);if(m|0){if(o=n[R+28>>2]|0,l=11436+(o<<2)|0,(R|0)==(n[l>>2]|0)){if(n[l>>2]=u,!u){n[2784]=n[2784]&~(1<<o);break}}else if(n[m+16+(((n[m+16>>2]|0)!=(R|0)&1)<<2)>>2]=u,!u)break;n[u+24>>2]=m,o=R+16|0,l=n[o>>2]|0,l|0&&(n[u+16>>2]=l,n[l+24>>2]=u),o=n[o+4>>2]|0,o|0&&(n[u+20>>2]=o,n[o+24>>2]=u)}}while(!1);if(n[k+4>>2]=d|1,n[B+d>>2]=d,(k|0)==(n[2788]|0)){n[2785]=d;return}}if(o=d>>>3,d>>>0<256){u=11172+(o<<1<<2)|0,l=n[2783]|0,o=1<<o,l&o?(l=u+8|0,o=n[l>>2]|0):(n[2783]=l|o,o=u,l=u+8|0),n[l>>2]=k,n[o+12>>2]=k,n[k+8>>2]=o,n[k+12>>2]=u;return}o=d>>>8,o?d>>>0>16777215?o=31:(B=(o+1048320|0)>>>16&8,R=o<<B,m=(R+520192|0)>>>16&4,R=R<<m,o=(R+245760|0)>>>16&2,o=14-(m|B|o)+(R<<o>>>15)|0,o=d>>>(o+7|0)&1|o<<1):o=0,A=11436+(o<<2)|0,n[k+28>>2]=o,n[k+20>>2]=0,n[k+16>>2]=0,l=n[2784]|0,u=1<<o;do if(l&u){for(l=d<<((o|0)==31?0:25-(o>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(d|0)){o=73;break}if(A=u+16+(l>>>31<<2)|0,o=n[A>>2]|0,o)l=l<<1,u=o;else{o=72;break}}if((o|0)==72){n[A>>2]=k,n[k+24>>2]=u,n[k+12>>2]=k,n[k+8>>2]=k;break}else if((o|0)==73){B=u+8|0,R=n[B>>2]|0,n[R+12>>2]=k,n[B>>2]=k,n[k+8>>2]=R,n[k+12>>2]=u,n[k+24>>2]=0;break}}else n[2784]=l|u,n[A>>2]=k,n[k+24>>2]=A,n[k+12>>2]=k,n[k+8>>2]=k;while(!1);if(R=(n[2791]|0)+-1|0,n[2791]=R,!R)o=11588;else return;for(;o=n[o>>2]|0,o;)o=o+8|0;n[2791]=-1}}}function j8e(){return 11628}function G8e(o){o=o|0;var l=0,u=0;return l=I,I=I+16|0,u=l,n[u>>2]=V8e(n[o+60>>2]|0)|0,o=jP(uu(6,u|0)|0)|0,I=l,o|0}function NZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0;q=I,I=I+48|0,M=q+16|0,m=q,d=q+32|0,k=o+28|0,A=n[k>>2]|0,n[d>>2]=A,R=o+20|0,A=(n[R>>2]|0)-A|0,n[d+4>>2]=A,n[d+8>>2]=l,n[d+12>>2]=u,A=A+u|0,B=o+60|0,n[m>>2]=n[B>>2],n[m+4>>2]=d,n[m+8>>2]=2,m=jP(qa(146,m|0)|0)|0;e:do if((A|0)!=(m|0)){for(l=2;!((m|0)<0);)if(A=A-m|0,Ye=n[d+4>>2]|0,oe=m>>>0>Ye>>>0,d=oe?d+8|0:d,l=(oe<<31>>31)+l|0,Ye=m-(oe?Ye:0)|0,n[d>>2]=(n[d>>2]|0)+Ye,oe=d+4|0,n[oe>>2]=(n[oe>>2]|0)-Ye,n[M>>2]=n[B>>2],n[M+4>>2]=d,n[M+8>>2]=l,m=jP(qa(146,M|0)|0)|0,(A|0)==(m|0)){L=3;break e}n[o+16>>2]=0,n[k>>2]=0,n[R>>2]=0,n[o>>2]=n[o>>2]|32,(l|0)==2?u=0:u=u-(n[d+4>>2]|0)|0}else L=3;while(!1);return(L|0)==3&&(Ye=n[o+44>>2]|0,n[o+16>>2]=Ye+(n[o+48>>2]|0),n[k>>2]=Ye,n[R>>2]=Ye),I=q,u|0}function q8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return d=I,I=I+32|0,m=d,A=d+20|0,n[m>>2]=n[o+60>>2],n[m+4>>2]=0,n[m+8>>2]=l,n[m+12>>2]=A,n[m+16>>2]=u,(jP(Ga(140,m|0)|0)|0)<0?(n[A>>2]=-1,o=-1):o=n[A>>2]|0,I=d,o|0}function jP(o){return o=o|0,o>>>0>4294963200&&(n[(eE()|0)>>2]=0-o,o=-1),o|0}function eE(){return(W8e()|0)+64|0}function W8e(){return VM()|0}function VM(){return 2084}function V8e(o){return o=o|0,o|0}function Y8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;return d=I,I=I+32|0,A=d,n[o+36>>2]=1,!(n[o>>2]&64|0)&&(n[A>>2]=n[o+60>>2],n[A+4>>2]=21523,n[A+8>>2]=d+16,co(54,A|0)|0)&&(s[o+75>>0]=-1),A=NZ(o,l,u)|0,I=d,A|0}function OZ(o,l){o=o|0,l=l|0;var u=0,A=0;if(u=s[o>>0]|0,A=s[l>>0]|0,!(u<<24>>24)||u<<24>>24!=A<<24>>24)o=A;else{do o=o+1|0,l=l+1|0,u=s[o>>0]|0,A=s[l>>0]|0;while(!(!(u<<24>>24)||u<<24>>24!=A<<24>>24));o=A}return(u&255)-(o&255)|0}function K8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;e:do if(!u)o=0;else{for(;A=s[o>>0]|0,d=s[l>>0]|0,A<<24>>24==d<<24>>24;)if(u=u+-1|0,u)o=o+1|0,l=l+1|0;else{o=0;break e}o=(A&255)-(d&255)|0}while(!1);return o|0}function LZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0,Te=0;Te=I,I=I+224|0,L=Te+120|0,q=Te+80|0,Ye=Te,Le=Te+136|0,A=q,d=A+40|0;do n[A>>2]=0,A=A+4|0;while((A|0)<(d|0));return n[L>>2]=n[u>>2],(YM(0,l,L,Ye,q)|0)<0?u=-1:((n[o+76>>2]|0)>-1?oe=J8e(o)|0:oe=0,u=n[o>>2]|0,M=u&32,(s[o+74>>0]|0)<1&&(n[o>>2]=u&-33),A=o+48|0,n[A>>2]|0?u=YM(o,l,L,Ye,q)|0:(d=o+44|0,m=n[d>>2]|0,n[d>>2]=Le,B=o+28|0,n[B>>2]=Le,k=o+20|0,n[k>>2]=Le,n[A>>2]=80,R=o+16|0,n[R>>2]=Le+80,u=YM(o,l,L,Ye,q)|0,m&&(VP[n[o+36>>2]&7](o,0,0)|0,u=n[k>>2]|0?u:-1,n[d>>2]=m,n[A>>2]=0,n[R>>2]=0,n[B>>2]=0,n[k>>2]=0)),A=n[o>>2]|0,n[o>>2]=A|M,oe|0&&z8e(o),u=A&32|0?-1:u),I=Te,u|0}function YM(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0,Te=0,nt=0,Xe=0,ft=0,He=0,Ve=0,Lt=0,Gr=0,fr=0,$t=0,Rr=0,Hr=0,cr=0;cr=I,I=I+64|0,fr=cr+16|0,$t=cr,Lt=cr+24|0,Rr=cr+8|0,Hr=cr+20|0,n[fr>>2]=l,ft=(o|0)!=0,He=Lt+40|0,Ve=He,Lt=Lt+39|0,Gr=Rr+4|0,B=0,m=0,L=0;e:for(;;){do if((m|0)>-1)if((B|0)>(2147483647-m|0)){n[(eE()|0)>>2]=75,m=-1;break}else{m=B+m|0;break}while(!1);if(B=s[l>>0]|0,B<<24>>24)k=l;else{Xe=87;break}t:for(;;){switch(B<<24>>24){case 37:{B=k,Xe=9;break t}case 0:{B=k;break t}default:}nt=k+1|0,n[fr>>2]=nt,B=s[nt>>0]|0,k=nt}t:do if((Xe|0)==9)for(;;){if(Xe=0,(s[k+1>>0]|0)!=37)break t;if(B=B+1|0,k=k+2|0,n[fr>>2]=k,(s[k>>0]|0)==37)Xe=9;else break}while(!1);if(B=B-l|0,ft&&bs(o,l,B),B|0){l=k;continue}R=k+1|0,B=(s[R>>0]|0)+-48|0,B>>>0<10?(nt=(s[k+2>>0]|0)==36,Te=nt?B:-1,L=nt?1:L,R=nt?k+3|0:R):Te=-1,n[fr>>2]=R,B=s[R>>0]|0,k=(B<<24>>24)+-32|0;t:do if(k>>>0<32)for(M=0,q=B;;){if(B=1<<k,!(B&75913)){B=q;break t}if(M=B|M,R=R+1|0,n[fr>>2]=R,B=s[R>>0]|0,k=(B<<24>>24)+-32|0,k>>>0>=32)break;q=B}else M=0;while(!1);if(B<<24>>24==42){if(k=R+1|0,B=(s[k>>0]|0)+-48|0,B>>>0<10&&(s[R+2>>0]|0)==36)n[d+(B<<2)>>2]=10,B=n[A+((s[k>>0]|0)+-48<<3)>>2]|0,L=1,R=R+3|0;else{if(L|0){m=-1;break}ft?(L=(n[u>>2]|0)+3&-4,B=n[L>>2]|0,n[u>>2]=L+4,L=0,R=k):(B=0,L=0,R=k)}n[fr>>2]=R,nt=(B|0)<0,B=nt?0-B|0:B,M=nt?M|8192:M}else{if(B=MZ(fr)|0,(B|0)<0){m=-1;break}R=n[fr>>2]|0}do if((s[R>>0]|0)==46){if((s[R+1>>0]|0)!=42){n[fr>>2]=R+1,k=MZ(fr)|0,R=n[fr>>2]|0;break}if(q=R+2|0,k=(s[q>>0]|0)+-48|0,k>>>0<10&&(s[R+3>>0]|0)==36){n[d+(k<<2)>>2]=10,k=n[A+((s[q>>0]|0)+-48<<3)>>2]|0,R=R+4|0,n[fr>>2]=R;break}if(L|0){m=-1;break e}ft?(nt=(n[u>>2]|0)+3&-4,k=n[nt>>2]|0,n[u>>2]=nt+4):k=0,n[fr>>2]=q,R=q}else k=-1;while(!1);for(Le=0;;){if(((s[R>>0]|0)+-65|0)>>>0>57){m=-1;break e}if(nt=R+1|0,n[fr>>2]=nt,q=s[(s[R>>0]|0)+-65+(5178+(Le*58|0))>>0]|0,oe=q&255,(oe+-1|0)>>>0<8)Le=oe,R=nt;else break}if(!(q<<24>>24)){m=-1;break}Ye=(Te|0)>-1;do if(q<<24>>24==19)if(Ye){m=-1;break e}else Xe=49;else{if(Ye){n[d+(Te<<2)>>2]=oe,Ye=A+(Te<<3)|0,Te=n[Ye+4>>2]|0,Xe=$t,n[Xe>>2]=n[Ye>>2],n[Xe+4>>2]=Te,Xe=49;break}if(!ft){m=0;break e}UZ($t,oe,u)}while(!1);if((Xe|0)==49&&(Xe=0,!ft)){B=0,l=nt;continue}R=s[R>>0]|0,R=(Le|0)!=0&(R&15|0)==3?R&-33:R,Ye=M&-65537,Te=M&8192|0?Ye:M;t:do switch(R|0){case 110:switch((Le&255)<<24>>24){case 0:{n[n[$t>>2]>>2]=m,B=0,l=nt;continue e}case 1:{n[n[$t>>2]>>2]=m,B=0,l=nt;continue e}case 2:{B=n[$t>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=nt;continue e}case 3:{a[n[$t>>2]>>1]=m,B=0,l=nt;continue e}case 4:{s[n[$t>>2]>>0]=m,B=0,l=nt;continue e}case 6:{n[n[$t>>2]>>2]=m,B=0,l=nt;continue e}case 7:{B=n[$t>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=nt;continue e}default:{B=0,l=nt;continue e}}case 112:{R=120,k=k>>>0>8?k:8,l=Te|8,Xe=61;break}case 88:case 120:{l=Te,Xe=61;break}case 111:{R=$t,l=n[R>>2]|0,R=n[R+4>>2]|0,oe=X8e(l,R,He)|0,Ye=Ve-oe|0,M=0,q=5642,k=(Te&8|0)==0|(k|0)>(Ye|0)?k:Ye+1|0,Ye=Te,Xe=67;break}case 105:case 100:if(R=$t,l=n[R>>2]|0,R=n[R+4>>2]|0,(R|0)<0){l=GP(0,0,l|0,R|0)|0,R=Be,M=$t,n[M>>2]=l,n[M+4>>2]=R,M=1,q=5642,Xe=66;break t}else{M=(Te&2049|0)!=0&1,q=Te&2048|0?5643:Te&1|0?5644:5642,Xe=66;break t}case 117:{R=$t,M=0,q=5642,l=n[R>>2]|0,R=n[R+4>>2]|0,Xe=66;break}case 99:{s[Lt>>0]=n[$t>>2],l=Lt,M=0,q=5642,oe=He,R=1,k=Ye;break}case 109:{R=$8e(n[(eE()|0)>>2]|0)|0,Xe=71;break}case 115:{R=n[$t>>2]|0,R=R|0?R:5652,Xe=71;break}case 67:{n[Rr>>2]=n[$t>>2],n[Gr>>2]=0,n[$t>>2]=Rr,oe=-1,R=Rr,Xe=75;break}case 83:{l=n[$t>>2]|0,k?(oe=k,R=l,Xe=75):(_s(o,32,B,0,Te),l=0,Xe=84);break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{B=tHe(o,+E[$t>>3],B,k,Te,R)|0,l=nt;continue e}default:M=0,q=5642,oe=He,R=k,k=Te}while(!1);t:do if((Xe|0)==61)Te=$t,Le=n[Te>>2]|0,Te=n[Te+4>>2]|0,oe=Z8e(Le,Te,He,R&32)|0,q=(l&8|0)==0|(Le|0)==0&(Te|0)==0,M=q?0:2,q=q?5642:5642+(R>>4)|0,Ye=l,l=Le,R=Te,Xe=67;else if((Xe|0)==66)oe=tE(l,R,He)|0,Ye=Te,Xe=67;else if((Xe|0)==71)Xe=0,Te=eHe(R,0,k)|0,Le=(Te|0)==0,l=R,M=0,q=5642,oe=Le?R+k|0:Te,R=Le?k:Te-R|0,k=Ye;else if((Xe|0)==75){for(Xe=0,q=R,l=0,k=0;M=n[q>>2]|0,!(!M||(k=_Z(Hr,M)|0,(k|0)<0|k>>>0>(oe-l|0)>>>0));)if(l=k+l|0,oe>>>0>l>>>0)q=q+4|0;else break;if((k|0)<0){m=-1;break e}if(_s(o,32,B,l,Te),!l)l=0,Xe=84;else for(M=0;;){if(k=n[R>>2]|0,!k){Xe=84;break t}if(k=_Z(Hr,k)|0,M=k+M|0,(M|0)>(l|0)){Xe=84;break t}if(bs(o,Hr,k),M>>>0>=l>>>0){Xe=84;break}else R=R+4|0}}while(!1);if((Xe|0)==67)Xe=0,R=(l|0)!=0|(R|0)!=0,Te=(k|0)!=0|R,R=((R^1)&1)+(Ve-oe)|0,l=Te?oe:He,oe=He,R=Te?(k|0)>(R|0)?k:R:k,k=(k|0)>-1?Ye&-65537:Ye;else if((Xe|0)==84){Xe=0,_s(o,32,B,l,Te^8192),B=(B|0)>(l|0)?B:l,l=nt;continue}Le=oe-l|0,Ye=(R|0)<(Le|0)?Le:R,Te=Ye+M|0,B=(B|0)<(Te|0)?Te:B,_s(o,32,B,Te,k),bs(o,q,M),_s(o,48,B,Te,k^65536),_s(o,48,Ye,Le,0),bs(o,l,Le),_s(o,32,B,Te,k^8192),l=nt}e:do if((Xe|0)==87&&!o)if(!L)m=0;else{for(m=1;l=n[d+(m<<2)>>2]|0,!!l;)if(UZ(A+(m<<3)|0,l,u),m=m+1|0,(m|0)>=10){m=1;break e}for(;;){if(n[d+(m<<2)>>2]|0){m=-1;break e}if(m=m+1|0,(m|0)>=10){m=1;break}}}while(!1);return I=cr,m|0}function J8e(o){return o=o|0,0}function z8e(o){o=o|0}function bs(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]&32||uHe(l,u,o)|0}function MZ(o){o=o|0;var l=0,u=0,A=0;if(u=n[o>>2]|0,A=(s[u>>0]|0)+-48|0,A>>>0<10){l=0;do l=A+(l*10|0)|0,u=u+1|0,n[o>>2]=u,A=(s[u>>0]|0)+-48|0;while(A>>>0<10)}else l=0;return l|0}function UZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;e:do if(l>>>0<=20)do switch(l|0){case 9:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,n[o>>2]=l;break e}case 10:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,A=o,n[A>>2]=l,n[A+4>>2]=((l|0)<0)<<31>>31;break e}case 11:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,A=o,n[A>>2]=l,n[A+4>>2]=0;break e}case 12:{A=(n[u>>2]|0)+7&-8,l=A,d=n[l>>2]|0,l=n[l+4>>2]|0,n[u>>2]=A+8,A=o,n[A>>2]=d,n[A+4>>2]=l;break e}case 13:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,A=(A&65535)<<16>>16,d=o,n[d>>2]=A,n[d+4>>2]=((A|0)<0)<<31>>31;break e}case 14:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,d=o,n[d>>2]=A&65535,n[d+4>>2]=0;break e}case 15:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,A=(A&255)<<24>>24,d=o,n[d>>2]=A,n[d+4>>2]=((A|0)<0)<<31>>31;break e}case 16:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,d=o,n[d>>2]=A&255,n[d+4>>2]=0;break e}case 17:{d=(n[u>>2]|0)+7&-8,m=+E[d>>3],n[u>>2]=d+8,E[o>>3]=m;break e}case 18:{d=(n[u>>2]|0)+7&-8,m=+E[d>>3],n[u>>2]=d+8,E[o>>3]=m;break e}default:break e}while(!1);while(!1)}function Z8e(o,l,u,A){if(o=o|0,l=l|0,u=u|0,A=A|0,!((o|0)==0&(l|0)==0))do u=u+-1|0,s[u>>0]=c[5694+(o&15)>>0]|0|A,o=qP(o|0,l|0,4)|0,l=Be;while(!((o|0)==0&(l|0)==0));return u|0}function X8e(o,l,u){if(o=o|0,l=l|0,u=u|0,!((o|0)==0&(l|0)==0))do u=u+-1|0,s[u>>0]=o&7|48,o=qP(o|0,l|0,3)|0,l=Be;while(!((o|0)==0&(l|0)==0));return u|0}function tE(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;if(l>>>0>0|(l|0)==0&o>>>0>4294967295){for(;A=ZM(o|0,l|0,10,0)|0,u=u+-1|0,s[u>>0]=A&255|48,A=o,o=zM(o|0,l|0,10,0)|0,l>>>0>9|(l|0)==9&A>>>0>4294967295;)l=Be;l=o}else l=o;if(l)for(;u=u+-1|0,s[u>>0]=(l>>>0)%10|0|48,!(l>>>0<10);)l=(l>>>0)/10|0;return u|0}function $8e(o){return o=o|0,oHe(o,n[(sHe()|0)+188>>2]|0)|0}function eHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;m=l&255,A=(u|0)!=0;e:do if(A&(o&3|0)!=0)for(d=l&255;;){if((s[o>>0]|0)==d<<24>>24){B=6;break e}if(o=o+1|0,u=u+-1|0,A=(u|0)!=0,!(A&(o&3|0)!=0)){B=5;break}}else B=5;while(!1);(B|0)==5&&(A?B=6:u=0);e:do if((B|0)==6&&(d=l&255,(s[o>>0]|0)!=d<<24>>24)){A=Me(m,16843009)|0;t:do if(u>>>0>3){for(;m=n[o>>2]^A,!((m&-2139062144^-2139062144)&m+-16843009|0);)if(o=o+4|0,u=u+-4|0,u>>>0<=3){B=11;break t}}else B=11;while(!1);if((B|0)==11&&!u){u=0;break}for(;;){if((s[o>>0]|0)==d<<24>>24)break e;if(o=o+1|0,u=u+-1|0,!u){u=0;break}}}while(!1);return(u|0?o:0)|0}function _s(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0;if(B=I,I=I+256|0,m=B,(u|0)>(A|0)&(d&73728|0)==0){if(d=u-A|0,nE(m|0,l|0,(d>>>0<256?d:256)|0)|0,d>>>0>255){l=u-A|0;do bs(o,m,256),d=d+-256|0;while(d>>>0>255);d=l&255}bs(o,m,d)}I=B}function _Z(o,l){return o=o|0,l=l|0,o?o=nHe(o,l,0)|0:o=0,o|0}function tHe(o,l,u,A,d,m){o=o|0,l=+l,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0,Te=0,nt=0,Xe=0,ft=0,He=0,Ve=0,Lt=0,Gr=0,fr=0,$t=0,Rr=0,Hr=0,cr=0,jn=0;jn=I,I=I+560|0,R=jn+8|0,nt=jn,cr=jn+524|0,Hr=cr,M=jn+512|0,n[nt>>2]=0,Rr=M+12|0,HZ(l)|0,(Be|0)<0?(l=-l,fr=1,Gr=5659):(fr=(d&2049|0)!=0&1,Gr=d&2048|0?5662:d&1|0?5665:5660),HZ(l)|0,$t=Be&2146435072;do if($t>>>0<2146435072|($t|0)==2146435072&!1){if(Ye=+rHe(l,nt)*2,B=Ye!=0,B&&(n[nt>>2]=(n[nt>>2]|0)+-1),ft=m|32,(ft|0)==97){Le=m&32,oe=Le|0?Gr+9|0:Gr,q=fr|2,B=12-A|0;do if(A>>>0>11|(B|0)==0)l=Ye;else{l=8;do B=B+-1|0,l=l*16;while(B|0);if((s[oe>>0]|0)==45){l=-(l+(-Ye-l));break}else{l=Ye+l-l;break}}while(!1);k=n[nt>>2]|0,B=(k|0)<0?0-k|0:k,B=tE(B,((B|0)<0)<<31>>31,Rr)|0,(B|0)==(Rr|0)&&(B=M+11|0,s[B>>0]=48),s[B+-1>>0]=(k>>31&2)+43,L=B+-2|0,s[L>>0]=m+15,M=(A|0)<1,R=(d&8|0)==0,B=cr;do $t=~~l,k=B+1|0,s[B>>0]=c[5694+$t>>0]|Le,l=(l-+($t|0))*16,(k-Hr|0)==1&&!(R&(M&l==0))?(s[k>>0]=46,B=B+2|0):B=k;while(l!=0);$t=B-Hr|0,Hr=Rr-L|0,Rr=(A|0)!=0&($t+-2|0)<(A|0)?A+2|0:$t,B=Hr+q+Rr|0,_s(o,32,u,B,d),bs(o,oe,q),_s(o,48,u,B,d^65536),bs(o,cr,$t),_s(o,48,Rr-$t|0,0,0),bs(o,L,Hr),_s(o,32,u,B,d^8192);break}k=(A|0)<0?6:A,B?(B=(n[nt>>2]|0)+-28|0,n[nt>>2]=B,l=Ye*268435456):(l=Ye,B=n[nt>>2]|0),$t=(B|0)<0?R:R+288|0,R=$t;do Ve=~~l>>>0,n[R>>2]=Ve,R=R+4|0,l=(l-+(Ve>>>0))*1e9;while(l!=0);if((B|0)>0)for(M=$t,q=R;;){if(L=(B|0)<29?B:29,B=q+-4|0,B>>>0>=M>>>0){R=0;do He=YZ(n[B>>2]|0,0,L|0)|0,He=JM(He|0,Be|0,R|0,0)|0,Ve=Be,Xe=ZM(He|0,Ve|0,1e9,0)|0,n[B>>2]=Xe,R=zM(He|0,Ve|0,1e9,0)|0,B=B+-4|0;while(B>>>0>=M>>>0);R&&(M=M+-4|0,n[M>>2]=R)}for(R=q;!(R>>>0<=M>>>0);)if(B=R+-4|0,!(n[B>>2]|0))R=B;else break;if(B=(n[nt>>2]|0)-L|0,n[nt>>2]=B,(B|0)>0)q=R;else break}else M=$t;if((B|0)<0){A=((k+25|0)/9|0)+1|0,Te=(ft|0)==102;do{if(Le=0-B|0,Le=(Le|0)<9?Le:9,M>>>0<R>>>0){L=(1<<Le)+-1|0,q=1e9>>>Le,oe=0,B=M;do Ve=n[B>>2]|0,n[B>>2]=(Ve>>>Le)+oe,oe=Me(Ve&L,q)|0,B=B+4|0;while(B>>>0<R>>>0);B=n[M>>2]|0?M:M+4|0,oe?(n[R>>2]=oe,M=B,B=R+4|0):(M=B,B=R)}else M=n[M>>2]|0?M:M+4|0,B=R;R=Te?$t:M,R=(B-R>>2|0)>(A|0)?R+(A<<2)|0:B,B=(n[nt>>2]|0)+Le|0,n[nt>>2]=B}while((B|0)<0);B=M,A=R}else B=M,A=R;if(Ve=$t,B>>>0<A>>>0){if(R=(Ve-B>>2)*9|0,L=n[B>>2]|0,L>>>0>=10){M=10;do M=M*10|0,R=R+1|0;while(L>>>0>=M>>>0)}}else R=0;if(Te=(ft|0)==103,Xe=(k|0)!=0,M=k-((ft|0)!=102?R:0)+((Xe&Te)<<31>>31)|0,(M|0)<(((A-Ve>>2)*9|0)+-9|0)){if(M=M+9216|0,Le=$t+4+(((M|0)/9|0)+-1024<<2)|0,M=((M|0)%9|0)+1|0,(M|0)<9){L=10;do L=L*10|0,M=M+1|0;while((M|0)!=9)}else L=10;if(q=n[Le>>2]|0,oe=(q>>>0)%(L>>>0)|0,M=(Le+4|0)==(A|0),M&(oe|0)==0)M=Le;else if(Ye=((q>>>0)/(L>>>0)|0)&1|0?9007199254740994:9007199254740992,He=(L|0)/2|0,l=oe>>>0<He>>>0?.5:M&(oe|0)==(He|0)?1:1.5,fr&&(He=(s[Gr>>0]|0)==45,l=He?-l:l,Ye=He?-Ye:Ye),M=q-oe|0,n[Le>>2]=M,Ye+l!=Ye){if(He=M+L|0,n[Le>>2]=He,He>>>0>999999999)for(R=Le;M=R+-4|0,n[R>>2]=0,M>>>0<B>>>0&&(B=B+-4|0,n[B>>2]=0),He=(n[M>>2]|0)+1|0,n[M>>2]=He,He>>>0>999999999;)R=M;else M=Le;if(R=(Ve-B>>2)*9|0,q=n[B>>2]|0,q>>>0>=10){L=10;do L=L*10|0,R=R+1|0;while(q>>>0>=L>>>0)}}else M=Le;M=M+4|0,M=A>>>0>M>>>0?M:A,He=B}else M=A,He=B;for(ft=M;;){if(ft>>>0<=He>>>0){nt=0;break}if(B=ft+-4|0,!(n[B>>2]|0))ft=B;else{nt=1;break}}A=0-R|0;do if(Te)if(B=((Xe^1)&1)+k|0,(B|0)>(R|0)&(R|0)>-5?(L=m+-1|0,k=B+-1-R|0):(L=m+-2|0,k=B+-1|0),B=d&8,B)Le=B;else{if(nt&&(Lt=n[ft+-4>>2]|0,(Lt|0)!=0))if((Lt>>>0)%10|0)M=0;else{M=0,B=10;do B=B*10|0,M=M+1|0;while(!((Lt>>>0)%(B>>>0)|0|0))}else M=9;if(B=((ft-Ve>>2)*9|0)+-9|0,(L|32|0)==102){Le=B-M|0,Le=(Le|0)>0?Le:0,k=(k|0)<(Le|0)?k:Le,Le=0;break}else{Le=B+R-M|0,Le=(Le|0)>0?Le:0,k=(k|0)<(Le|0)?k:Le,Le=0;break}}else L=m,Le=d&8;while(!1);if(Te=k|Le,q=(Te|0)!=0&1,oe=(L|32|0)==102,oe)Xe=0,B=(R|0)>0?R:0;else{if(B=(R|0)<0?A:R,B=tE(B,((B|0)<0)<<31>>31,Rr)|0,M=Rr,(M-B|0)<2)do B=B+-1|0,s[B>>0]=48;while((M-B|0)<2);s[B+-1>>0]=(R>>31&2)+43,B=B+-2|0,s[B>>0]=L,Xe=B,B=M-B|0}if(B=fr+1+k+q+B|0,_s(o,32,u,B,d),bs(o,Gr,fr),_s(o,48,u,B,d^65536),oe){L=He>>>0>$t>>>0?$t:He,Le=cr+9|0,q=Le,oe=cr+8|0,M=L;do{if(R=tE(n[M>>2]|0,0,Le)|0,(M|0)==(L|0))(R|0)==(Le|0)&&(s[oe>>0]=48,R=oe);else if(R>>>0>cr>>>0){nE(cr|0,48,R-Hr|0)|0;do R=R+-1|0;while(R>>>0>cr>>>0)}bs(o,R,q-R|0),M=M+4|0}while(M>>>0<=$t>>>0);if(Te|0&&bs(o,5710,1),M>>>0<ft>>>0&(k|0)>0)for(;;){if(R=tE(n[M>>2]|0,0,Le)|0,R>>>0>cr>>>0){nE(cr|0,48,R-Hr|0)|0;do R=R+-1|0;while(R>>>0>cr>>>0)}if(bs(o,R,(k|0)<9?k:9),M=M+4|0,R=k+-9|0,M>>>0<ft>>>0&(k|0)>9)k=R;else{k=R;break}}_s(o,48,k+9|0,9,0)}else{if(Te=nt?ft:He+4|0,(k|0)>-1){nt=cr+9|0,Le=(Le|0)==0,A=nt,q=0-Hr|0,oe=cr+8|0,L=He;do{R=tE(n[L>>2]|0,0,nt)|0,(R|0)==(nt|0)&&(s[oe>>0]=48,R=oe);do if((L|0)==(He|0)){if(M=R+1|0,bs(o,R,1),Le&(k|0)<1){R=M;break}bs(o,5710,1),R=M}else{if(R>>>0<=cr>>>0)break;nE(cr|0,48,R+q|0)|0;do R=R+-1|0;while(R>>>0>cr>>>0)}while(!1);Hr=A-R|0,bs(o,R,(k|0)>(Hr|0)?Hr:k),k=k-Hr|0,L=L+4|0}while(L>>>0<Te>>>0&(k|0)>-1)}_s(o,48,k+18|0,18,0),bs(o,Xe,Rr-Xe|0)}_s(o,32,u,B,d^8192)}else cr=(m&32|0)!=0,B=fr+3|0,_s(o,32,u,B,d&-65537),bs(o,Gr,fr),bs(o,l!=l|!1?cr?5686:5690:cr?5678:5682,3),_s(o,32,u,B,d^8192);while(!1);return I=jn,((B|0)<(u|0)?u:B)|0}function HZ(o){o=+o;var l=0;return E[S>>3]=o,l=n[S>>2]|0,Be=n[S+4>>2]|0,l|0}function rHe(o,l){return o=+o,l=l|0,+ +jZ(o,l)}function jZ(o,l){o=+o,l=l|0;var u=0,A=0,d=0;switch(E[S>>3]=o,u=n[S>>2]|0,A=n[S+4>>2]|0,d=qP(u|0,A|0,52)|0,d&2047){case 0:{o!=0?(o=+jZ(o*18446744073709552e3,l),u=(n[l>>2]|0)+-64|0):u=0,n[l>>2]=u;break}case 2047:break;default:n[l>>2]=(d&2047)+-1022,n[S>>2]=u,n[S+4>>2]=A&-2146435073|1071644672,o=+E[S>>3]}return+o}function nHe(o,l,u){o=o|0,l=l|0,u=u|0;do if(o){if(l>>>0<128){s[o>>0]=l,o=1;break}if(!(n[n[(iHe()|0)+188>>2]>>2]|0))if((l&-128|0)==57216){s[o>>0]=l,o=1;break}else{n[(eE()|0)>>2]=84,o=-1;break}if(l>>>0<2048){s[o>>0]=l>>>6|192,s[o+1>>0]=l&63|128,o=2;break}if(l>>>0<55296|(l&-8192|0)==57344){s[o>>0]=l>>>12|224,s[o+1>>0]=l>>>6&63|128,s[o+2>>0]=l&63|128,o=3;break}if((l+-65536|0)>>>0<1048576){s[o>>0]=l>>>18|240,s[o+1>>0]=l>>>12&63|128,s[o+2>>0]=l>>>6&63|128,s[o+3>>0]=l&63|128,o=4;break}else{n[(eE()|0)>>2]=84,o=-1;break}}else o=1;while(!1);return o|0}function iHe(){return VM()|0}function sHe(){return VM()|0}function oHe(o,l){o=o|0,l=l|0;var u=0,A=0;for(A=0;;){if((c[5712+A>>0]|0)==(o|0)){o=2;break}if(u=A+1|0,(u|0)==87){u=5800,A=87,o=5;break}else A=u}if((o|0)==2&&(A?(u=5800,o=5):u=5800),(o|0)==5)for(;;){do o=u,u=u+1|0;while(s[o>>0]|0);if(A=A+-1|0,A)o=5;else break}return aHe(u,n[l+20>>2]|0)|0}function aHe(o,l){return o=o|0,l=l|0,lHe(o,l)|0}function lHe(o,l){return o=o|0,l=l|0,l?l=cHe(n[l>>2]|0,n[l+4>>2]|0,o)|0:l=0,(l|0?l:o)|0}function cHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0;oe=(n[o>>2]|0)+1794895138|0,m=ud(n[o+8>>2]|0,oe)|0,A=ud(n[o+12>>2]|0,oe)|0,d=ud(n[o+16>>2]|0,oe)|0;e:do if(m>>>0<l>>>2>>>0&&(q=l-(m<<2)|0,A>>>0<q>>>0&d>>>0<q>>>0)&&!((d|A)&3|0)){for(q=A>>>2,L=d>>>2,M=0;;){if(k=m>>>1,R=M+k|0,B=R<<1,d=B+q|0,A=ud(n[o+(d<<2)>>2]|0,oe)|0,d=ud(n[o+(d+1<<2)>>2]|0,oe)|0,!(d>>>0<l>>>0&A>>>0<(l-d|0)>>>0)){A=0;break e}if(s[o+(d+A)>>0]|0){A=0;break e}if(A=OZ(u,o+d|0)|0,!A)break;if(A=(A|0)<0,(m|0)==1){A=0;break e}else M=A?M:R,m=A?k:m-k|0}A=B+L|0,d=ud(n[o+(A<<2)>>2]|0,oe)|0,A=ud(n[o+(A+1<<2)>>2]|0,oe)|0,A>>>0<l>>>0&d>>>0<(l-A|0)>>>0?A=s[o+(A+d)>>0]|0?0:o+A|0:A=0}else A=0;while(!1);return A|0}function ud(o,l){o=o|0,l=l|0;var u=0;return u=zZ(o|0)|0,(l|0?u:o)|0}function uHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=u+16|0,d=n[A>>2]|0,d?m=5:fHe(u)|0?A=0:(d=n[A>>2]|0,m=5);e:do if((m|0)==5){if(k=u+20|0,B=n[k>>2]|0,A=B,(d-B|0)>>>0<l>>>0){A=VP[n[u+36>>2]&7](u,o,l)|0;break}t:do if((s[u+75>>0]|0)>-1){for(B=l;;){if(!B){m=0,d=o;break t}if(d=B+-1|0,(s[o+d>>0]|0)==10)break;B=d}if(A=VP[n[u+36>>2]&7](u,o,B)|0,A>>>0<B>>>0)break e;m=B,d=o+B|0,l=l-B|0,A=n[k>>2]|0}else m=0,d=o;while(!1);Qr(A|0,d|0,l|0)|0,n[k>>2]=(n[k>>2]|0)+l,A=m+l|0}while(!1);return A|0}function fHe(o){o=o|0;var l=0,u=0;return l=o+74|0,u=s[l>>0]|0,s[l>>0]=u+255|u,l=n[o>>2]|0,l&8?(n[o>>2]=l|32,o=-1):(n[o+8>>2]=0,n[o+4>>2]=0,u=n[o+44>>2]|0,n[o+28>>2]=u,n[o+20>>2]=u,n[o+16>>2]=u+(n[o+48>>2]|0),o=0),o|0}function ri(o,l){o=y(o),l=y(l);var u=0,A=0;u=GZ(o)|0;do if((u&2147483647)>>>0<=2139095040){if(A=GZ(l)|0,(A&2147483647)>>>0<=2139095040)if((A^u|0)<0){o=(u|0)<0?l:o;break}else{o=o<l?l:o;break}}else o=l;while(!1);return y(o)}function GZ(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function fd(o,l){o=y(o),l=y(l);var u=0,A=0;u=qZ(o)|0;do if((u&2147483647)>>>0<=2139095040){if(A=qZ(l)|0,(A&2147483647)>>>0<=2139095040)if((A^u|0)<0){o=(u|0)<0?o:l;break}else{o=o<l?o:l;break}}else o=l;while(!1);return y(o)}function qZ(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function KM(o,l){o=y(o),l=y(l);var u=0,A=0,d=0,m=0,B=0,k=0,R=0,M=0;m=(h[S>>2]=o,n[S>>2]|0),k=(h[S>>2]=l,n[S>>2]|0),u=m>>>23&255,B=k>>>23&255,R=m&-2147483648,d=k<<1;e:do if(d|0&&!((u|0)==255|((AHe(l)|0)&2147483647)>>>0>2139095040)){if(A=m<<1,A>>>0<=d>>>0)return l=y(o*y(0)),y((A|0)==(d|0)?l:o);if(u)A=m&8388607|8388608;else{if(u=m<<9,(u|0)>-1){A=u,u=0;do u=u+-1|0,A=A<<1;while((A|0)>-1)}else u=0;A=m<<1-u}if(B)k=k&8388607|8388608;else{if(m=k<<9,(m|0)>-1){d=0;do d=d+-1|0,m=m<<1;while((m|0)>-1)}else d=0;B=d,k=k<<1-d}d=A-k|0,m=(d|0)>-1;t:do if((u|0)>(B|0)){for(;;){if(m)if(d)A=d;else break;if(A=A<<1,u=u+-1|0,d=A-k|0,m=(d|0)>-1,(u|0)<=(B|0))break t}l=y(o*y(0));break e}while(!1);if(m)if(d)A=d;else{l=y(o*y(0));break}if(A>>>0<8388608)do A=A<<1,u=u+-1|0;while(A>>>0<8388608);(u|0)>0?u=A+-8388608|u<<23:u=A>>>(1-u|0),l=(n[S>>2]=u|R,y(h[S>>2]))}else M=3;while(!1);return(M|0)==3&&(l=y(o*l),l=y(l/l)),y(l)}function AHe(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function pHe(o,l){return o=o|0,l=l|0,LZ(n[582]|0,o,l)|0}function an(o){o=o|0,Nt()}function rE(o){o=o|0}function hHe(o,l){return o=o|0,l=l|0,0}function gHe(o){return o=o|0,(WZ(o+4|0)|0)==-1?(sp[n[(n[o>>2]|0)+8>>2]&127](o),o=1):o=0,o|0}function WZ(o){o=o|0;var l=0;return l=n[o>>2]|0,n[o>>2]=l+-1,l+-1|0}function Hh(o){o=o|0,gHe(o)|0&&dHe(o)}function dHe(o){o=o|0;var l=0;l=o+8|0,n[l>>2]|0&&(WZ(l)|0)!=-1||sp[n[(n[o>>2]|0)+16>>2]&127](o)}function Jt(o){o=o|0;var l=0;for(l=o|0?o:1;o=_P(l)|0,!(o|0);){if(o=yHe()|0,!o){o=0;break}oX[o&0]()}return o|0}function VZ(o){return o=o|0,Jt(o)|0}function It(o){o=o|0,HP(o)}function mHe(o){o=o|0,(s[o+11>>0]|0)<0&&It(n[o>>2]|0)}function yHe(){var o=0;return o=n[2923]|0,n[2923]=o+0,o|0}function EHe(){}function GP(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,A=l-A-(u>>>0>o>>>0|0)>>>0,Be=A,o-u>>>0|0|0}function JM(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,u=o+u>>>0,Be=l+A+(u>>>0<o>>>0|0)>>>0,u|0|0}function nE(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;if(m=o+u|0,l=l&255,(u|0)>=67){for(;o&3;)s[o>>0]=l,o=o+1|0;for(A=m&-4|0,d=A-64|0,B=l|l<<8|l<<16|l<<24;(o|0)<=(d|0);)n[o>>2]=B,n[o+4>>2]=B,n[o+8>>2]=B,n[o+12>>2]=B,n[o+16>>2]=B,n[o+20>>2]=B,n[o+24>>2]=B,n[o+28>>2]=B,n[o+32>>2]=B,n[o+36>>2]=B,n[o+40>>2]=B,n[o+44>>2]=B,n[o+48>>2]=B,n[o+52>>2]=B,n[o+56>>2]=B,n[o+60>>2]=B,o=o+64|0;for(;(o|0)<(A|0);)n[o>>2]=B,o=o+4|0}for(;(o|0)<(m|0);)s[o>>0]=l,o=o+1|0;return m-u|0}function YZ(o,l,u){return o=o|0,l=l|0,u=u|0,(u|0)<32?(Be=l<<u|(o&(1<<u)-1<<32-u)>>>32-u,o<<u):(Be=o<<u-32,0)}function qP(o,l,u){return o=o|0,l=l|0,u=u|0,(u|0)<32?(Be=l>>>u,o>>>u|(l&(1<<u)-1)<<32-u):(Be=0,l>>>u-32|0)}function Qr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;if((u|0)>=8192)return LA(o|0,l|0,u|0)|0;if(m=o|0,d=o+u|0,(o&3)==(l&3)){for(;o&3;){if(!u)return m|0;s[o>>0]=s[l>>0]|0,o=o+1|0,l=l+1|0,u=u-1|0}for(u=d&-4|0,A=u-64|0;(o|0)<=(A|0);)n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2],n[o+16>>2]=n[l+16>>2],n[o+20>>2]=n[l+20>>2],n[o+24>>2]=n[l+24>>2],n[o+28>>2]=n[l+28>>2],n[o+32>>2]=n[l+32>>2],n[o+36>>2]=n[l+36>>2],n[o+40>>2]=n[l+40>>2],n[o+44>>2]=n[l+44>>2],n[o+48>>2]=n[l+48>>2],n[o+52>>2]=n[l+52>>2],n[o+56>>2]=n[l+56>>2],n[o+60>>2]=n[l+60>>2],o=o+64|0,l=l+64|0;for(;(o|0)<(u|0);)n[o>>2]=n[l>>2],o=o+4|0,l=l+4|0}else for(u=d-4|0;(o|0)<(u|0);)s[o>>0]=s[l>>0]|0,s[o+1>>0]=s[l+1>>0]|0,s[o+2>>0]=s[l+2>>0]|0,s[o+3>>0]=s[l+3>>0]|0,o=o+4|0,l=l+4|0;for(;(o|0)<(d|0);)s[o>>0]=s[l>>0]|0,o=o+1|0,l=l+1|0;return m|0}function KZ(o){o=o|0;var l=0;return l=s[O+(o&255)>>0]|0,(l|0)<8?l|0:(l=s[O+(o>>8&255)>>0]|0,(l|0)<8?l+8|0:(l=s[O+(o>>16&255)>>0]|0,(l|0)<8?l+16|0:(s[O+(o>>>24)>>0]|0)+24|0))}function JZ(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,R=0,M=0,L=0,q=0,oe=0,Ye=0,Le=0;if(L=o,R=l,M=R,B=u,oe=A,k=oe,!M)return m=(d|0)!=0,k?m?(n[d>>2]=o|0,n[d+4>>2]=l&0,oe=0,d=0,Be=oe,d|0):(oe=0,d=0,Be=oe,d|0):(m&&(n[d>>2]=(L>>>0)%(B>>>0),n[d+4>>2]=0),oe=0,d=(L>>>0)/(B>>>0)>>>0,Be=oe,d|0);m=(k|0)==0;do if(B){if(!m){if(m=(b(k|0)|0)-(b(M|0)|0)|0,m>>>0<=31){q=m+1|0,k=31-m|0,l=m-31>>31,B=q,o=L>>>(q>>>0)&l|M<<k,l=M>>>(q>>>0)&l,m=0,k=L<<k;break}return d?(n[d>>2]=o|0,n[d+4>>2]=R|l&0,oe=0,d=0,Be=oe,d|0):(oe=0,d=0,Be=oe,d|0)}if(m=B-1|0,m&B|0){k=(b(B|0)|0)+33-(b(M|0)|0)|0,Le=64-k|0,q=32-k|0,R=q>>31,Ye=k-32|0,l=Ye>>31,B=k,o=q-1>>31&M>>>(Ye>>>0)|(M<<q|L>>>(k>>>0))&l,l=l&M>>>(k>>>0),m=L<<Le&R,k=(M<<Le|L>>>(Ye>>>0))&R|L<<q&k-33>>31;break}return d|0&&(n[d>>2]=m&L,n[d+4>>2]=0),(B|0)==1?(Ye=R|l&0,Le=o|0|0,Be=Ye,Le|0):(Le=KZ(B|0)|0,Ye=M>>>(Le>>>0)|0,Le=M<<32-Le|L>>>(Le>>>0)|0,Be=Ye,Le|0)}else{if(m)return d|0&&(n[d>>2]=(M>>>0)%(B>>>0),n[d+4>>2]=0),Ye=0,Le=(M>>>0)/(B>>>0)>>>0,Be=Ye,Le|0;if(!L)return d|0&&(n[d>>2]=0,n[d+4>>2]=(M>>>0)%(k>>>0)),Ye=0,Le=(M>>>0)/(k>>>0)>>>0,Be=Ye,Le|0;if(m=k-1|0,!(m&k))return d|0&&(n[d>>2]=o|0,n[d+4>>2]=m&M|l&0),Ye=0,Le=M>>>((KZ(k|0)|0)>>>0),Be=Ye,Le|0;if(m=(b(k|0)|0)-(b(M|0)|0)|0,m>>>0<=30){l=m+1|0,k=31-m|0,B=l,o=M<<k|L>>>(l>>>0),l=M>>>(l>>>0),m=0,k=L<<k;break}return d?(n[d>>2]=o|0,n[d+4>>2]=R|l&0,Ye=0,Le=0,Be=Ye,Le|0):(Ye=0,Le=0,Be=Ye,Le|0)}while(!1);if(!B)M=k,R=0,k=0;else{q=u|0|0,L=oe|A&0,M=JM(q|0,L|0,-1,-1)|0,u=Be,R=k,k=0;do A=R,R=m>>>31|R<<1,m=k|m<<1,A=o<<1|A>>>31|0,oe=o>>>31|l<<1|0,GP(M|0,u|0,A|0,oe|0)|0,Le=Be,Ye=Le>>31|((Le|0)<0?-1:0)<<1,k=Ye&1,o=GP(A|0,oe|0,Ye&q|0,(((Le|0)<0?-1:0)>>31|((Le|0)<0?-1:0)<<1)&L|0)|0,l=Be,B=B-1|0;while(B|0);M=R,R=0}return B=0,d|0&&(n[d>>2]=o,n[d+4>>2]=l),Ye=(m|0)>>>31|(M|B)<<1|(B<<1|m>>>31)&0|R,Le=(m<<1|0)&-2|k,Be=Ye,Le|0}function zM(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,JZ(o,l,u,A,0)|0}function jh(o){o=o|0;var l=0,u=0;return u=o+15&-16|0,l=n[C>>2]|0,o=l+u|0,(u|0)>0&(o|0)<(l|0)|(o|0)<0?(se()|0,cu(12),-1):(n[C>>2]=o,(o|0)>($()|0)&&!(Z()|0)?(n[C>>2]=l,cu(12),-1):l|0)}function BB(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;if((l|0)<(o|0)&(o|0)<(l+u|0)){for(A=o,l=l+u|0,o=o+u|0;(u|0)>0;)o=o-1|0,l=l-1|0,u=u-1|0,s[o>>0]=s[l>>0]|0;o=A}else Qr(o,l,u)|0;return o|0}function ZM(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;return m=I,I=I+16|0,d=m|0,JZ(o,l,u,A,d)|0,I=m,Be=n[d+4>>2]|0,n[d>>2]|0|0}function zZ(o){return o=o|0,(o&255)<<24|(o>>8&255)<<16|(o>>16&255)<<8|o>>>24|0}function IHe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,ZZ[o&1](l|0,u|0,A|0,d|0,m|0)}function CHe(o,l,u){o=o|0,l=l|0,u=y(u),XZ[o&1](l|0,y(u))}function wHe(o,l,u){o=o|0,l=l|0,u=+u,$Z[o&31](l|0,+u)}function BHe(o,l,u,A){return o=o|0,l=l|0,u=y(u),A=y(A),y(eX[o&0](l|0,y(u),y(A)))}function vHe(o,l){o=o|0,l=l|0,sp[o&127](l|0)}function SHe(o,l,u){o=o|0,l=l|0,u=u|0,op[o&31](l|0,u|0)}function DHe(o,l){return o=o|0,l=l|0,pd[o&31](l|0)|0}function bHe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0,tX[o&1](l|0,+u,+A,d|0)}function PHe(o,l,u,A){o=o|0,l=l|0,u=+u,A=+A,lje[o&1](l|0,+u,+A)}function xHe(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,VP[o&7](l|0,u|0,A|0)|0}function kHe(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,+cje[o&1](l|0,u|0,A|0)}function QHe(o,l){return o=o|0,l=l|0,+rX[o&15](l|0)}function RHe(o,l,u){return o=o|0,l=l|0,u=+u,uje[o&1](l|0,+u)|0}function THe(o,l,u){return o=o|0,l=l|0,u=u|0,$M[o&15](l|0,u|0)|0}function FHe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=+A,d=+d,m=m|0,fje[o&1](l|0,u|0,+A,+d,m|0)}function NHe(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,Aje[o&1](l|0,u|0,A|0,d|0,m|0,B|0)}function OHe(o,l,u){return o=o|0,l=l|0,u=u|0,+nX[o&7](l|0,u|0)}function LHe(o){return o=o|0,YP[o&7]()|0}function MHe(o,l,u,A,d,m){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,iX[o&1](l|0,u|0,A|0,d|0,m|0)|0}function UHe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=+d,pje[o&1](l|0,u|0,A|0,+d)}function _He(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=y(A),d=d|0,m=y(m),B=B|0,sX[o&1](l|0,u|0,y(A),d|0,y(m),B|0)}function HHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,DB[o&15](l|0,u|0,A|0)}function jHe(o){o=o|0,oX[o&0]()}function GHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A,aX[o&15](l|0,u|0,+A)}function qHe(o,l,u){return o=o|0,l=+l,u=+u,hje[o&1](+l,+u)|0}function WHe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,eU[o&15](l|0,u|0,A|0,d|0)}function VHe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,F(0)}function YHe(o,l){o=o|0,l=y(l),F(1)}function nl(o,l){o=o|0,l=+l,F(2)}function KHe(o,l,u){return o=o|0,l=y(l),u=y(u),F(3),$e}function wr(o){o=o|0,F(4)}function vB(o,l){o=o|0,l=l|0,F(5)}function jl(o){return o=o|0,F(6),0}function JHe(o,l,u,A){o=o|0,l=+l,u=+u,A=A|0,F(7)}function zHe(o,l,u){o=o|0,l=+l,u=+u,F(8)}function ZHe(o,l,u){return o=o|0,l=l|0,u=u|0,F(9),0}function XHe(o,l,u){return o=o|0,l=l|0,u=u|0,F(10),0}function Ad(o){return o=o|0,F(11),0}function $He(o,l){return o=o|0,l=+l,F(12),0}function SB(o,l){return o=o|0,l=l|0,F(13),0}function eje(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0,F(14)}function tje(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,F(15)}function XM(o,l){return o=o|0,l=l|0,F(16),0}function rje(){return F(17),0}function nje(o,l,u,A,d){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,F(18),0}function ije(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A,F(19)}function sje(o,l,u,A,d,m){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=m|0,F(20)}function WP(o,l,u){o=o|0,l=l|0,u=u|0,F(21)}function oje(){F(22)}function iE(o,l,u){o=o|0,l=l|0,u=+u,F(23)}function aje(o,l){return o=+o,l=+l,F(24),0}function sE(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,F(25)}var ZZ=[VHe,n_e],XZ=[YHe,Ny],$Z=[nl,zg,Rh,oB,aB,lB,cB,xf,Gy,uB,kf,Zg,Xg,fB,AB,Iu,$g,pB,qy,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl],eX=[KHe],sp=[wr,rE,LPe,MPe,UPe,hRe,gRe,dRe,RMe,TMe,FMe,qUe,WUe,VUe,A8e,p8e,h8e,xl,Jg,rB,sr,gc,xP,kP,bPe,YPe,sxe,Bxe,Uxe,rke,Eke,Fke,Jke,fQe,bQe,GQe,sRe,TRe,JRe,fTe,bTe,GTe,sFe,vFe,UFe,$Fe,gNe,dP,VNe,lOe,bOe,WOe,oLe,bLe,LLe,_Le,nMe,oMe,BMe,OMe,UMe,rUe,IUe,LJ,t4e,R4e,Y4e,l3e,k3e,W3e,r8e,s8e,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr],op=[vB,_y,QL,nB,iB,xr,fo,Zi,Ms,Ss,jy,Qh,gB,CP,rd,FL,NL,wP,BP,ML,Qf,ne,PFe,jFe,JOe,i4e,PUe,CZ,vB,vB,vB,vB],pd=[jl,G8e,My,td,Vy,Ea,mP,Th,hB,TL,EP,Yy,vP,UL,zy,yNe,uLe,sUe,l4e,Ul,jl,jl,jl,jl,jl,jl,jl,jl,jl,jl,jl,jl],tX=[JHe,WL],lje=[zHe,DMe],VP=[ZHe,NZ,q8e,Y8e,oke,LRe,zNe,A3e],cje=[XHe,QQe],rX=[Ad,Fh,IP,ep,VL,v,D,Q,H,V,Ad,Ad,Ad,Ad,Ad,Ad],uje=[$He,FLe],$M=[SB,hHe,SP,QPe,bxe,wke,Lke,cRe,$Re,nNe,Oy,Z4e,SB,SB,SB,SB],fje=[eje,cxe],Aje=[tje,F3e],nX=[XM,OL,ve,_e,ht,YQe,XM,XM],YP=[rje,Wt,Ly,gP,qLe,uMe,GMe,c8e],iX=[nje,Py],pje=[ije,QTe],sX=[sje,_L],DB=[WP,No,yP,LL,wu,Gxe,Xke,YTe,cFe,kL,D_e,O4e,J3e,WP,WP,WP],oX=[oje],aX=[iE,RL,Hy,$A,sB,Cu,Wy,ed,gTe,AOe,kLe,iE,iE,iE,iE,iE],hje=[aje,kMe],eU=[sE,gQe,DNe,QOe,ELe,zLe,dMe,zMe,SUe,h4e,I8e,sE,sE,sE,sE,sE];return{_llvm_bswap_i32:zZ,dynCall_idd:qHe,dynCall_i:LHe,_i64Subtract:GP,___udivdi3:zM,dynCall_vif:CHe,setThrew:pa,dynCall_viii:HHe,_bitshift64Lshr:qP,_bitshift64Shl:YZ,dynCall_vi:vHe,dynCall_viiddi:FHe,dynCall_diii:kHe,dynCall_iii:THe,_memset:nE,_sbrk:jh,_memcpy:Qr,__GLOBAL__sub_I_Yoga_cpp:$1,dynCall_vii:SHe,___uremdi3:ZM,dynCall_vid:wHe,stackAlloc:Va,_nbind_init:Q8e,getTempRet0:UA,dynCall_di:QHe,dynCall_iid:RHe,setTempRet0:MA,_i64Add:JM,dynCall_fiff:BHe,dynCall_iiii:xHe,_emscripten_get_global_libc:j8e,dynCall_viid:GHe,dynCall_viiid:UHe,dynCall_viififi:_He,dynCall_ii:DHe,__GLOBAL__sub_I_Binding_cc:Y_e,dynCall_viiii:WHe,dynCall_iiiiii:MHe,stackSave:df,dynCall_viiiii:IHe,__GLOBAL__sub_I_nbind_cc:Sr,dynCall_vidd:PHe,_free:HP,runPostSets:EHe,dynCall_viiiiii:NHe,establishStackSpace:vn,_memmove:BB,stackRestore:cc,_malloc:_P,__GLOBAL__sub_I_common_cc:pUe,dynCall_viddi:bHe,dynCall_dii:OHe,dynCall_v:jHe}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii;Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm;function ExitStatus(e){this.name=\"ExitStatus\",this.message=\"Program terminated with exit(\"+e+\")\",this.status=e}ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var initialStackTop,preloadStartTime=null,calledMain=!1;dependenciesFulfilled=function e(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=e)},Module.callMain=Module.callMain=function e(t){t=t||[],ensureInitRuntime();var r=t.length+1;function s(){for(var p=0;p<3;p++)a.push(0)}var a=[allocate(intArrayFromString(Module.thisProgram),\"i8\",ALLOC_NORMAL)];s();for(var n=0;n<r-1;n=n+1)a.push(allocate(intArrayFromString(t[n]),\"i8\",ALLOC_NORMAL)),s();a.push(0),a=allocate(a,\"i32\",ALLOC_NORMAL);try{var c=Module._main(r,a,0);exit(c,!0)}catch(p){if(p instanceof ExitStatus)return;if(p==\"SimulateInfiniteLoop\"){Module.noExitRuntime=!0;return}else{var f=p;p&&typeof p==\"object\"&&p.stack&&(f=[p,p.stack]),Module.printErr(\"exception thrown: \"+f),Module.quit(1,p)}}finally{calledMain=!0}};function run(e){if(e=e||Module.arguments,preloadStartTime===null&&(preloadStartTime=Date.now()),runDependencies>0||(preRun(),runDependencies>0)||Module.calledRun)return;function t(){Module.calledRun||(Module.calledRun=!0,!ABORT&&(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(e),postRun()))}Module.setStatus?(Module.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){Module.setStatus(\"\")},1),t()},1)):t()}Module.run=Module.run=run;function exit(e,t){t&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=e,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(e)),ENVIRONMENT_IS_NODE&&process.exit(e),Module.quit(e,new ExitStatus(e)))}Module.exit=Module.exit=exit;var abortDecorators=[];function abort(e){Module.onAbort&&Module.onAbort(e),e!==void 0?(Module.print(e),Module.printErr(e),e=JSON.stringify(e)):e=\"\",ABORT=!0,EXITSTATUS=1;var t=`\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.`,r=\"abort(\"+e+\") at \"+stackTrace()+t;throw abortDecorators&&abortDecorators.forEach(function(s){r=s(r,e)}),r}if(Module.abort=Module.abort=abort,Module.preInit)for(typeof Module.preInit==\"function\"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()})});var Lm=G((RYt,IIe)=>{\"use strict\";var Hut=yIe(),jut=EIe(),A9=!1,p9=null;jut({},function(e,t){if(!A9){if(A9=!0,e)throw e;p9=t}});if(!A9)throw new Error(\"Failed to load the yoga module - it needed to be loaded synchronously, but didn't\");IIe.exports=Hut(p9.bind,p9.lib)});var g9=G((TYt,h9)=>{\"use strict\";var CIe=e=>Number.isNaN(e)?!1:e>=4352&&(e<=4447||e===9001||e===9002||11904<=e&&e<=12871&&e!==12351||12880<=e&&e<=19903||19968<=e&&e<=42182||43360<=e&&e<=43388||44032<=e&&e<=55203||63744<=e&&e<=64255||65040<=e&&e<=65049||65072<=e&&e<=65131||65281<=e&&e<=65376||65504<=e&&e<=65510||110592<=e&&e<=110593||127488<=e&&e<=127569||131072<=e&&e<=262141);h9.exports=CIe;h9.exports.default=CIe});var BIe=G((FYt,wIe)=>{\"use strict\";wIe.exports=function(){return/\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g}});var GS=G((NYt,d9)=>{\"use strict\";var Gut=gk(),qut=g9(),Wut=BIe(),vIe=e=>{if(typeof e!=\"string\"||e.length===0||(e=Gut(e),e.length===0))return 0;e=e.replace(Wut(),\"  \");let t=0;for(let r=0;r<e.length;r++){let s=e.codePointAt(r);s<=31||s>=127&&s<=159||s>=768&&s<=879||(s>65535&&r++,t+=qut(s)?2:1)}return t};d9.exports=vIe;d9.exports.default=vIe});var y9=G((OYt,m9)=>{\"use strict\";var Vut=GS(),SIe=e=>{let t=0;for(let r of e.split(`\n`))t=Math.max(t,Vut(r));return t};m9.exports=SIe;m9.exports.default=SIe});var DIe=G(qS=>{\"use strict\";var Yut=qS&&qS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(qS,\"__esModule\",{value:!0});var Kut=Yut(y9()),E9={};qS.default=e=>{if(e.length===0)return{width:0,height:0};if(E9[e])return E9[e];let t=Kut.default(e),r=e.split(`\n`).length;return E9[e]={width:t,height:r},{width:t,height:r}}});var bIe=G(WS=>{\"use strict\";var Jut=WS&&WS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(WS,\"__esModule\",{value:!0});var xn=Jut(Lm()),zut=(e,t)=>{\"position\"in t&&e.setPositionType(t.position===\"absolute\"?xn.default.POSITION_TYPE_ABSOLUTE:xn.default.POSITION_TYPE_RELATIVE)},Zut=(e,t)=>{\"marginLeft\"in t&&e.setMargin(xn.default.EDGE_START,t.marginLeft||0),\"marginRight\"in t&&e.setMargin(xn.default.EDGE_END,t.marginRight||0),\"marginTop\"in t&&e.setMargin(xn.default.EDGE_TOP,t.marginTop||0),\"marginBottom\"in t&&e.setMargin(xn.default.EDGE_BOTTOM,t.marginBottom||0)},Xut=(e,t)=>{\"paddingLeft\"in t&&e.setPadding(xn.default.EDGE_LEFT,t.paddingLeft||0),\"paddingRight\"in t&&e.setPadding(xn.default.EDGE_RIGHT,t.paddingRight||0),\"paddingTop\"in t&&e.setPadding(xn.default.EDGE_TOP,t.paddingTop||0),\"paddingBottom\"in t&&e.setPadding(xn.default.EDGE_BOTTOM,t.paddingBottom||0)},$ut=(e,t)=>{var r;\"flexGrow\"in t&&e.setFlexGrow((r=t.flexGrow)!==null&&r!==void 0?r:0),\"flexShrink\"in t&&e.setFlexShrink(typeof t.flexShrink==\"number\"?t.flexShrink:1),\"flexDirection\"in t&&(t.flexDirection===\"row\"&&e.setFlexDirection(xn.default.FLEX_DIRECTION_ROW),t.flexDirection===\"row-reverse\"&&e.setFlexDirection(xn.default.FLEX_DIRECTION_ROW_REVERSE),t.flexDirection===\"column\"&&e.setFlexDirection(xn.default.FLEX_DIRECTION_COLUMN),t.flexDirection===\"column-reverse\"&&e.setFlexDirection(xn.default.FLEX_DIRECTION_COLUMN_REVERSE)),\"flexBasis\"in t&&(typeof t.flexBasis==\"number\"?e.setFlexBasis(t.flexBasis):typeof t.flexBasis==\"string\"?e.setFlexBasisPercent(Number.parseInt(t.flexBasis,10)):e.setFlexBasis(NaN)),\"alignItems\"in t&&((t.alignItems===\"stretch\"||!t.alignItems)&&e.setAlignItems(xn.default.ALIGN_STRETCH),t.alignItems===\"flex-start\"&&e.setAlignItems(xn.default.ALIGN_FLEX_START),t.alignItems===\"center\"&&e.setAlignItems(xn.default.ALIGN_CENTER),t.alignItems===\"flex-end\"&&e.setAlignItems(xn.default.ALIGN_FLEX_END)),\"alignSelf\"in t&&((t.alignSelf===\"auto\"||!t.alignSelf)&&e.setAlignSelf(xn.default.ALIGN_AUTO),t.alignSelf===\"flex-start\"&&e.setAlignSelf(xn.default.ALIGN_FLEX_START),t.alignSelf===\"center\"&&e.setAlignSelf(xn.default.ALIGN_CENTER),t.alignSelf===\"flex-end\"&&e.setAlignSelf(xn.default.ALIGN_FLEX_END)),\"justifyContent\"in t&&((t.justifyContent===\"flex-start\"||!t.justifyContent)&&e.setJustifyContent(xn.default.JUSTIFY_FLEX_START),t.justifyContent===\"center\"&&e.setJustifyContent(xn.default.JUSTIFY_CENTER),t.justifyContent===\"flex-end\"&&e.setJustifyContent(xn.default.JUSTIFY_FLEX_END),t.justifyContent===\"space-between\"&&e.setJustifyContent(xn.default.JUSTIFY_SPACE_BETWEEN),t.justifyContent===\"space-around\"&&e.setJustifyContent(xn.default.JUSTIFY_SPACE_AROUND))},eft=(e,t)=>{var r,s;\"width\"in t&&(typeof t.width==\"number\"?e.setWidth(t.width):typeof t.width==\"string\"?e.setWidthPercent(Number.parseInt(t.width,10)):e.setWidthAuto()),\"height\"in t&&(typeof t.height==\"number\"?e.setHeight(t.height):typeof t.height==\"string\"?e.setHeightPercent(Number.parseInt(t.height,10)):e.setHeightAuto()),\"minWidth\"in t&&(typeof t.minWidth==\"string\"?e.setMinWidthPercent(Number.parseInt(t.minWidth,10)):e.setMinWidth((r=t.minWidth)!==null&&r!==void 0?r:0)),\"minHeight\"in t&&(typeof t.minHeight==\"string\"?e.setMinHeightPercent(Number.parseInt(t.minHeight,10)):e.setMinHeight((s=t.minHeight)!==null&&s!==void 0?s:0))},tft=(e,t)=>{\"display\"in t&&e.setDisplay(t.display===\"flex\"?xn.default.DISPLAY_FLEX:xn.default.DISPLAY_NONE)},rft=(e,t)=>{if(\"borderStyle\"in t){let r=typeof t.borderStyle==\"string\"?1:0;e.setBorder(xn.default.EDGE_TOP,r),e.setBorder(xn.default.EDGE_BOTTOM,r),e.setBorder(xn.default.EDGE_LEFT,r),e.setBorder(xn.default.EDGE_RIGHT,r)}};WS.default=(e,t={})=>{zut(e,t),Zut(e,t),Xut(e,t),$ut(e,t),eft(e,t),tft(e,t),rft(e,t)}});var kIe=G((UYt,xIe)=>{\"use strict\";var VS=GS(),nft=gk(),ift=ik(),C9=new Set([\"\\x1B\",\"\\x9B\"]),sft=39,PIe=e=>`${C9.values().next().value}[${e}m`,oft=e=>e.split(\" \").map(t=>VS(t)),I9=(e,t,r)=>{let s=[...t],a=!1,n=VS(nft(e[e.length-1]));for(let[c,f]of s.entries()){let p=VS(f);if(n+p<=r?e[e.length-1]+=f:(e.push(f),n=0),C9.has(f))a=!0;else if(a&&f===\"m\"){a=!1;continue}a||(n+=p,n===r&&c<s.length-1&&(e.push(\"\"),n=0))}!n&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},aft=e=>{let t=e.split(\" \"),r=t.length;for(;r>0&&!(VS(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(\" \")+t.slice(r).join(\"\")},lft=(e,t,r={})=>{if(r.trim!==!1&&e.trim()===\"\")return\"\";let s=\"\",a=\"\",n,c=oft(e),f=[\"\"];for(let[p,h]of e.split(\" \").entries()){r.trim!==!1&&(f[f.length-1]=f[f.length-1].trimLeft());let E=VS(f[f.length-1]);if(p!==0&&(E>=t&&(r.wordWrap===!1||r.trim===!1)&&(f.push(\"\"),E=0),(E>0||r.trim===!1)&&(f[f.length-1]+=\" \",E++)),r.hard&&c[p]>t){let C=t-E,S=1+Math.floor((c[p]-C-1)/t);Math.floor((c[p]-1)/t)<S&&f.push(\"\"),I9(f,h,t);continue}if(E+c[p]>t&&E>0&&c[p]>0){if(r.wordWrap===!1&&E<t){I9(f,h,t);continue}f.push(\"\")}if(E+c[p]>t&&r.wordWrap===!1){I9(f,h,t);continue}f[f.length-1]+=h}r.trim!==!1&&(f=f.map(aft)),s=f.join(`\n`);for(let[p,h]of[...s].entries()){if(a+=h,C9.has(h)){let C=parseFloat(/\\d[^m]*/.exec(s.slice(p,p+4)));n=C===sft?null:C}let E=ift.codes.get(Number(n));n&&E&&(s[p+1]===`\n`?a+=PIe(E):h===`\n`&&(a+=PIe(n)))}return a};xIe.exports=(e,t,r)=>String(e).normalize().replace(/\\r\\n/g,`\n`).split(`\n`).map(s=>lft(s,t,r)).join(`\n`)});var TIe=G((_Yt,RIe)=>{\"use strict\";var QIe=\"[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\",cft=e=>e&&e.exact?new RegExp(`^${QIe}$`):new RegExp(QIe,\"g\");RIe.exports=cft});var w9=G((HYt,LIe)=>{\"use strict\";var uft=g9(),fft=TIe(),FIe=ik(),OIe=[\"\\x1B\",\"\\x9B\"],EF=e=>`${OIe[0]}[${e}m`,NIe=(e,t,r)=>{let s=[];e=[...e];for(let a of e){let n=a;a.match(\";\")&&(a=a.split(\";\")[0][0]+\"0\");let c=FIe.codes.get(parseInt(a,10));if(c){let f=e.indexOf(c.toString());f>=0?e.splice(f,1):s.push(EF(t?c:n))}else if(t){s.push(EF(0));break}else s.push(EF(n))}if(t&&(s=s.filter((a,n)=>s.indexOf(a)===n),r!==void 0)){let a=EF(FIe.codes.get(parseInt(r,10)));s=s.reduce((n,c)=>c===a?[c,...n]:[...n,c],[])}return s.join(\"\")};LIe.exports=(e,t,r)=>{let s=[...e.normalize()],a=[];r=typeof r==\"number\"?r:s.length;let n=!1,c,f=0,p=\"\";for(let[h,E]of s.entries()){let C=!1;if(OIe.includes(E)){let S=/\\d[^m]*/.exec(e.slice(h,h+18));c=S&&S.length>0?S[0]:void 0,f<r&&(n=!0,c!==void 0&&a.push(c))}else n&&E===\"m\"&&(n=!1,C=!0);if(!n&&!C&&++f,!fft({exact:!0}).test(E)&&uft(E.codePointAt())&&++f,f>t&&f<=r)p+=E;else if(f===t&&!n&&c!==void 0)p=NIe(a);else if(f>=r){p+=NIe(a,!0,c);break}}return p}});var UIe=G((jYt,MIe)=>{\"use strict\";var Z0=w9(),Aft=GS();function IF(e,t,r){if(e.charAt(t)===\" \")return t;for(let s=1;s<=3;s++)if(r){if(e.charAt(t+s)===\" \")return t+s}else if(e.charAt(t-s)===\" \")return t-s;return t}MIe.exports=(e,t,r)=>{r={position:\"end\",preferTruncationOnSpace:!1,...r};let{position:s,space:a,preferTruncationOnSpace:n}=r,c=\"\\u2026\",f=1;if(typeof e!=\"string\")throw new TypeError(`Expected \\`input\\` to be a string, got ${typeof e}`);if(typeof t!=\"number\")throw new TypeError(`Expected \\`columns\\` to be a number, got ${typeof t}`);if(t<1)return\"\";if(t===1)return c;let p=Aft(e);if(p<=t)return e;if(s===\"start\"){if(n){let h=IF(e,p-t+1,!0);return c+Z0(e,h,p).trim()}return a===!0&&(c+=\" \",f=2),c+Z0(e,p-t+f,p)}if(s===\"middle\"){a===!0&&(c=\" \"+c+\" \",f=3);let h=Math.floor(t/2);if(n){let E=IF(e,h),C=IF(e,p-(t-h)+1,!0);return Z0(e,0,E)+c+Z0(e,C,p).trim()}return Z0(e,0,h)+c+Z0(e,p-(t-h)+f,p)}if(s===\"end\"){if(n){let h=IF(e,t-1);return Z0(e,0,h)+c}return a===!0&&(c=\" \"+c,f=2),Z0(e,0,t-f)+c}throw new Error(`Expected \\`options.position\\` to be either \\`start\\`, \\`middle\\` or \\`end\\`, got ${s}`)}});var v9=G(YS=>{\"use strict\";var _Ie=YS&&YS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(YS,\"__esModule\",{value:!0});var pft=_Ie(kIe()),hft=_Ie(UIe()),B9={};YS.default=(e,t,r)=>{let s=e+String(t)+String(r);if(B9[s])return B9[s];let a=e;if(r===\"wrap\"&&(a=pft.default(e,t,{trim:!1,hard:!0})),r.startsWith(\"truncate\")){let n=\"end\";r===\"truncate-middle\"&&(n=\"middle\"),r===\"truncate-start\"&&(n=\"start\"),a=hft.default(e,t,{position:n})}return B9[s]=a,a}});var D9=G(S9=>{\"use strict\";Object.defineProperty(S9,\"__esModule\",{value:!0});var HIe=e=>{let t=\"\";if(e.childNodes.length>0)for(let r of e.childNodes){let s=\"\";r.nodeName===\"#text\"?s=r.nodeValue:((r.nodeName===\"ink-text\"||r.nodeName===\"ink-virtual-text\")&&(s=HIe(r)),s.length>0&&typeof r.internal_transform==\"function\"&&(s=r.internal_transform(s))),t+=s}return t};S9.default=HIe});var b9=G(bi=>{\"use strict\";var KS=bi&&bi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(bi,\"__esModule\",{value:!0});bi.setTextNodeValue=bi.createTextNode=bi.setStyle=bi.setAttribute=bi.removeChildNode=bi.insertBeforeNode=bi.appendChildNode=bi.createNode=bi.TEXT_NAME=void 0;var gft=KS(Lm()),jIe=KS(DIe()),dft=KS(bIe()),mft=KS(v9()),yft=KS(D9());bi.TEXT_NAME=\"#text\";bi.createNode=e=>{var t;let r={nodeName:e,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:e===\"ink-virtual-text\"?void 0:gft.default.Node.create()};return e===\"ink-text\"&&((t=r.yogaNode)===null||t===void 0||t.setMeasureFunc(Eft.bind(null,r))),r};bi.appendChildNode=(e,t)=>{var r;t.parentNode&&bi.removeChildNode(t.parentNode,t),t.parentNode=e,e.childNodes.push(t),t.yogaNode&&((r=e.yogaNode)===null||r===void 0||r.insertChild(t.yogaNode,e.yogaNode.getChildCount())),(e.nodeName===\"ink-text\"||e.nodeName===\"ink-virtual-text\")&&CF(e)};bi.insertBeforeNode=(e,t,r)=>{var s,a;t.parentNode&&bi.removeChildNode(t.parentNode,t),t.parentNode=e;let n=e.childNodes.indexOf(r);if(n>=0){e.childNodes.splice(n,0,t),t.yogaNode&&((s=e.yogaNode)===null||s===void 0||s.insertChild(t.yogaNode,n));return}e.childNodes.push(t),t.yogaNode&&((a=e.yogaNode)===null||a===void 0||a.insertChild(t.yogaNode,e.yogaNode.getChildCount())),(e.nodeName===\"ink-text\"||e.nodeName===\"ink-virtual-text\")&&CF(e)};bi.removeChildNode=(e,t)=>{var r,s;t.yogaNode&&((s=(r=t.parentNode)===null||r===void 0?void 0:r.yogaNode)===null||s===void 0||s.removeChild(t.yogaNode)),t.parentNode=null;let a=e.childNodes.indexOf(t);a>=0&&e.childNodes.splice(a,1),(e.nodeName===\"ink-text\"||e.nodeName===\"ink-virtual-text\")&&CF(e)};bi.setAttribute=(e,t,r)=>{e.attributes[t]=r};bi.setStyle=(e,t)=>{e.style=t,e.yogaNode&&dft.default(e.yogaNode,t)};bi.createTextNode=e=>{let t={nodeName:\"#text\",nodeValue:e,yogaNode:void 0,parentNode:null,style:{}};return bi.setTextNodeValue(t,e),t};var Eft=function(e,t){var r,s;let a=e.nodeName===\"#text\"?e.nodeValue:yft.default(e),n=jIe.default(a);if(n.width<=t||n.width>=1&&t>0&&t<1)return n;let c=(s=(r=e.style)===null||r===void 0?void 0:r.textWrap)!==null&&s!==void 0?s:\"wrap\",f=mft.default(a,t,c);return jIe.default(f)},GIe=e=>{var t;if(!(!e||!e.parentNode))return(t=e.yogaNode)!==null&&t!==void 0?t:GIe(e.parentNode)},CF=e=>{let t=GIe(e);t?.markDirty()};bi.setTextNodeValue=(e,t)=>{typeof t!=\"string\"&&(t=String(t)),e.nodeValue=t,CF(e)}});var KIe=G(JS=>{\"use strict\";var YIe=JS&&JS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(JS,\"__esModule\",{value:!0});var qIe=c9(),Ift=YIe(AIe()),WIe=YIe(Lm()),ia=b9(),VIe=e=>{e?.unsetMeasureFunc(),e?.freeRecursive()};JS.default=Ift.default({schedulePassiveEffects:qIe.unstable_scheduleCallback,cancelPassiveEffects:qIe.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>null,preparePortalMount:()=>null,clearContainer:()=>!1,shouldDeprioritizeSubtree:()=>!1,resetAfterCommit:e=>{if(e.isStaticDirty){e.isStaticDirty=!1,typeof e.onImmediateRender==\"function\"&&e.onImmediateRender();return}typeof e.onRender==\"function\"&&e.onRender()},getChildHostContext:(e,t)=>{let r=e.isInsideText,s=t===\"ink-text\"||t===\"ink-virtual-text\";return r===s?e:{isInsideText:s}},shouldSetTextContent:()=>!1,createInstance:(e,t,r,s)=>{if(s.isInsideText&&e===\"ink-box\")throw new Error(\"<Box> can\\u2019t be nested inside <Text> component\");let a=e===\"ink-text\"&&s.isInsideText?\"ink-virtual-text\":e,n=ia.createNode(a);for(let[c,f]of Object.entries(t))c!==\"children\"&&(c===\"style\"?ia.setStyle(n,f):c===\"internal_transform\"?n.internal_transform=f:c===\"internal_static\"?n.internal_static=!0:ia.setAttribute(n,c,f));return n},createTextInstance:(e,t,r)=>{if(!r.isInsideText)throw new Error(`Text string \"${e}\" must be rendered inside <Text> component`);return ia.createTextNode(e)},resetTextContent:()=>{},hideTextInstance:e=>{ia.setTextNodeValue(e,\"\")},unhideTextInstance:(e,t)=>{ia.setTextNodeValue(e,t)},getPublicInstance:e=>e,hideInstance:e=>{var t;(t=e.yogaNode)===null||t===void 0||t.setDisplay(WIe.default.DISPLAY_NONE)},unhideInstance:e=>{var t;(t=e.yogaNode)===null||t===void 0||t.setDisplay(WIe.default.DISPLAY_FLEX)},appendInitialChild:ia.appendChildNode,appendChild:ia.appendChildNode,insertBefore:ia.insertBeforeNode,finalizeInitialChildren:(e,t,r,s)=>(e.internal_static&&(s.isStaticDirty=!0,s.staticNode=e),!1),supportsMutation:!0,appendChildToContainer:ia.appendChildNode,insertInContainerBefore:ia.insertBeforeNode,removeChildFromContainer:(e,t)=>{ia.removeChildNode(e,t),VIe(t.yogaNode)},prepareUpdate:(e,t,r,s,a)=>{e.internal_static&&(a.isStaticDirty=!0);let n={},c=Object.keys(s);for(let f of c)if(s[f]!==r[f]){if(f===\"style\"&&typeof s.style==\"object\"&&typeof r.style==\"object\"){let h=s.style,E=r.style,C=Object.keys(h);for(let S of C){if(S===\"borderStyle\"||S===\"borderColor\"){if(typeof n.style!=\"object\"){let x={};n.style=x}n.style.borderStyle=h.borderStyle,n.style.borderColor=h.borderColor}if(h[S]!==E[S]){if(typeof n.style!=\"object\"){let x={};n.style=x}n.style[S]=h[S]}}continue}n[f]=s[f]}return n},commitUpdate:(e,t)=>{for(let[r,s]of Object.entries(t))r!==\"children\"&&(r===\"style\"?ia.setStyle(e,s):r===\"internal_transform\"?e.internal_transform=s:r===\"internal_static\"?e.internal_static=!0:ia.setAttribute(e,r,s))},commitTextUpdate:(e,t,r)=>{ia.setTextNodeValue(e,r)},removeChild:(e,t)=>{ia.removeChildNode(e,t),VIe(t.yogaNode)}})});var zIe=G((YYt,JIe)=>{\"use strict\";JIe.exports=(e,t=1,r)=>{if(r={indent:\" \",includeEmptyLines:!1,...r},typeof e!=\"string\")throw new TypeError(`Expected \\`input\\` to be a \\`string\\`, got \\`${typeof e}\\``);if(typeof t!=\"number\")throw new TypeError(`Expected \\`count\\` to be a \\`number\\`, got \\`${typeof t}\\``);if(typeof r.indent!=\"string\")throw new TypeError(`Expected \\`options.indent\\` to be a \\`string\\`, got \\`${typeof r.indent}\\``);if(t===0)return e;let s=r.includeEmptyLines?/^/gm:/^(?!\\s*$)/gm;return e.replace(s,r.indent.repeat(t))}});var ZIe=G(zS=>{\"use strict\";var Cft=zS&&zS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(zS,\"__esModule\",{value:!0});var wF=Cft(Lm());zS.default=e=>e.getComputedWidth()-e.getComputedPadding(wF.default.EDGE_LEFT)-e.getComputedPadding(wF.default.EDGE_RIGHT)-e.getComputedBorder(wF.default.EDGE_LEFT)-e.getComputedBorder(wF.default.EDGE_RIGHT)});var XIe=G((JYt,wft)=>{wft.exports={single:{topLeft:\"\\u250C\",topRight:\"\\u2510\",bottomRight:\"\\u2518\",bottomLeft:\"\\u2514\",vertical:\"\\u2502\",horizontal:\"\\u2500\"},double:{topLeft:\"\\u2554\",topRight:\"\\u2557\",bottomRight:\"\\u255D\",bottomLeft:\"\\u255A\",vertical:\"\\u2551\",horizontal:\"\\u2550\"},round:{topLeft:\"\\u256D\",topRight:\"\\u256E\",bottomRight:\"\\u256F\",bottomLeft:\"\\u2570\",vertical:\"\\u2502\",horizontal:\"\\u2500\"},bold:{topLeft:\"\\u250F\",topRight:\"\\u2513\",bottomRight:\"\\u251B\",bottomLeft:\"\\u2517\",vertical:\"\\u2503\",horizontal:\"\\u2501\"},singleDouble:{topLeft:\"\\u2553\",topRight:\"\\u2556\",bottomRight:\"\\u255C\",bottomLeft:\"\\u2559\",vertical:\"\\u2551\",horizontal:\"\\u2500\"},doubleSingle:{topLeft:\"\\u2552\",topRight:\"\\u2555\",bottomRight:\"\\u255B\",bottomLeft:\"\\u2558\",vertical:\"\\u2502\",horizontal:\"\\u2550\"},classic:{topLeft:\"+\",topRight:\"+\",bottomRight:\"+\",bottomLeft:\"+\",vertical:\"|\",horizontal:\"-\"}}});var eCe=G((zYt,P9)=>{\"use strict\";var $Ie=XIe();P9.exports=$Ie;P9.exports.default=$Ie});var x9=G(XS=>{\"use strict\";var Bft=XS&&XS.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(XS,\"__esModule\",{value:!0});var ZS=Bft(NE()),vft=/^(rgb|hsl|hsv|hwb)\\(\\s?(\\d+),\\s?(\\d+),\\s?(\\d+)\\s?\\)$/,Sft=/^(ansi|ansi256)\\(\\s?(\\d+)\\s?\\)$/,BF=(e,t)=>t===\"foreground\"?e:\"bg\"+e[0].toUpperCase()+e.slice(1);XS.default=(e,t,r)=>{if(!t)return e;if(t in ZS.default){let a=BF(t,r);return ZS.default[a](e)}if(t.startsWith(\"#\")){let a=BF(\"hex\",r);return ZS.default[a](t)(e)}if(t.startsWith(\"ansi\")){let a=Sft.exec(t);if(!a)return e;let n=BF(a[1],r),c=Number(a[2]);return ZS.default[n](c)(e)}if(t.startsWith(\"rgb\")||t.startsWith(\"hsl\")||t.startsWith(\"hsv\")||t.startsWith(\"hwb\")){let a=vft.exec(t);if(!a)return e;let n=BF(a[1],r),c=Number(a[2]),f=Number(a[3]),p=Number(a[4]);return ZS.default[n](c,f,p)(e)}return e}});var rCe=G($S=>{\"use strict\";var tCe=$S&&$S.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty($S,\"__esModule\",{value:!0});var Dft=tCe(eCe()),k9=tCe(x9());$S.default=(e,t,r,s)=>{if(typeof r.style.borderStyle==\"string\"){let a=r.yogaNode.getComputedWidth(),n=r.yogaNode.getComputedHeight(),c=r.style.borderColor,f=Dft.default[r.style.borderStyle],p=k9.default(f.topLeft+f.horizontal.repeat(a-2)+f.topRight,c,\"foreground\"),h=(k9.default(f.vertical,c,\"foreground\")+`\n`).repeat(n-2),E=k9.default(f.bottomLeft+f.horizontal.repeat(a-2)+f.bottomRight,c,\"foreground\");s.write(e,t,p,{transformers:[]}),s.write(e,t+1,h,{transformers:[]}),s.write(e+a-1,t+1,h,{transformers:[]}),s.write(e,t+n-1,E,{transformers:[]})}}});var iCe=G(eD=>{\"use strict\";var Mm=eD&&eD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(eD,\"__esModule\",{value:!0});var bft=Mm(Lm()),Pft=Mm(y9()),xft=Mm(zIe()),kft=Mm(v9()),Qft=Mm(ZIe()),Rft=Mm(D9()),Tft=Mm(rCe()),Fft=(e,t)=>{var r;let s=(r=e.childNodes[0])===null||r===void 0?void 0:r.yogaNode;if(s){let a=s.getComputedLeft(),n=s.getComputedTop();t=`\n`.repeat(n)+xft.default(t,a)}return t},nCe=(e,t,r)=>{var s;let{offsetX:a=0,offsetY:n=0,transformers:c=[],skipStaticElements:f}=r;if(f&&e.internal_static)return;let{yogaNode:p}=e;if(p){if(p.getDisplay()===bft.default.DISPLAY_NONE)return;let h=a+p.getComputedLeft(),E=n+p.getComputedTop(),C=c;if(typeof e.internal_transform==\"function\"&&(C=[e.internal_transform,...c]),e.nodeName===\"ink-text\"){let S=Rft.default(e);if(S.length>0){let x=Pft.default(S),I=Qft.default(p);if(x>I){let T=(s=e.style.textWrap)!==null&&s!==void 0?s:\"wrap\";S=kft.default(S,I,T)}S=Fft(e,S),t.write(h,E,S,{transformers:C})}return}if(e.nodeName===\"ink-box\"&&Tft.default(h,E,e,t),e.nodeName===\"ink-root\"||e.nodeName===\"ink-box\")for(let S of e.childNodes)nCe(S,t,{offsetX:h,offsetY:E,transformers:C,skipStaticElements:f})}};eD.default=nCe});var aCe=G(tD=>{\"use strict\";var oCe=tD&&tD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(tD,\"__esModule\",{value:!0});var sCe=oCe(w9()),Nft=oCe(GS()),Q9=class{constructor(t){this.writes=[];let{width:r,height:s}=t;this.width=r,this.height=s}write(t,r,s,a){let{transformers:n}=a;s&&this.writes.push({x:t,y:r,text:s,transformers:n})}get(){let t=[];for(let s=0;s<this.height;s++)t.push(\" \".repeat(this.width));for(let s of this.writes){let{x:a,y:n,text:c,transformers:f}=s,p=c.split(`\n`),h=0;for(let E of p){let C=t[n+h];if(!C)continue;let S=Nft.default(E);for(let x of f)E=x(E);t[n+h]=sCe.default(C,0,a)+E+sCe.default(C,a+S),h++}}return{output:t.map(s=>s.trimRight()).join(`\n`),height:t.length}}};tD.default=Q9});var uCe=G(rD=>{\"use strict\";var R9=rD&&rD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(rD,\"__esModule\",{value:!0});var Oft=R9(Lm()),lCe=R9(iCe()),cCe=R9(aCe());rD.default=(e,t)=>{var r;if(e.yogaNode.setWidth(t),e.yogaNode){e.yogaNode.calculateLayout(void 0,void 0,Oft.default.DIRECTION_LTR);let s=new cCe.default({width:e.yogaNode.getComputedWidth(),height:e.yogaNode.getComputedHeight()});lCe.default(e,s,{skipStaticElements:!0});let a;!((r=e.staticNode)===null||r===void 0)&&r.yogaNode&&(a=new cCe.default({width:e.staticNode.yogaNode.getComputedWidth(),height:e.staticNode.yogaNode.getComputedHeight()}),lCe.default(e.staticNode,a,{skipStaticElements:!1}));let{output:n,height:c}=s.get();return{output:n,outputHeight:c,staticOutput:a?`${a.get().output}\n`:\"\"}}return{output:\"\",outputHeight:0,staticOutput:\"\"}}});var hCe=G((r7t,pCe)=>{\"use strict\";var fCe=Ie(\"stream\"),ACe=[\"assert\",\"count\",\"countReset\",\"debug\",\"dir\",\"dirxml\",\"error\",\"group\",\"groupCollapsed\",\"groupEnd\",\"info\",\"log\",\"table\",\"time\",\"timeEnd\",\"timeLog\",\"trace\",\"warn\"],T9={},Lft=e=>{let t=new fCe.PassThrough,r=new fCe.PassThrough;t.write=a=>e(\"stdout\",a),r.write=a=>e(\"stderr\",a);let s=new console.Console(t,r);for(let a of ACe)T9[a]=console[a],console[a]=s[a];return()=>{for(let a of ACe)console[a]=T9[a];T9={}}};pCe.exports=Lft});var N9=G(F9=>{\"use strict\";Object.defineProperty(F9,\"__esModule\",{value:!0});F9.default=new WeakMap});var L9=G(O9=>{\"use strict\";Object.defineProperty(O9,\"__esModule\",{value:!0});var Mft=gn(),gCe=Mft.createContext({exit:()=>{}});gCe.displayName=\"InternalAppContext\";O9.default=gCe});var U9=G(M9=>{\"use strict\";Object.defineProperty(M9,\"__esModule\",{value:!0});var Uft=gn(),dCe=Uft.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});dCe.displayName=\"InternalStdinContext\";M9.default=dCe});var H9=G(_9=>{\"use strict\";Object.defineProperty(_9,\"__esModule\",{value:!0});var _ft=gn(),mCe=_ft.createContext({stdout:void 0,write:()=>{}});mCe.displayName=\"InternalStdoutContext\";_9.default=mCe});var G9=G(j9=>{\"use strict\";Object.defineProperty(j9,\"__esModule\",{value:!0});var Hft=gn(),yCe=Hft.createContext({stderr:void 0,write:()=>{}});yCe.displayName=\"InternalStderrContext\";j9.default=yCe});var vF=G(q9=>{\"use strict\";Object.defineProperty(q9,\"__esModule\",{value:!0});var jft=gn(),ECe=jft.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{},focus:()=>{}});ECe.displayName=\"InternalFocusContext\";q9.default=ECe});var CCe=G((c7t,ICe)=>{\"use strict\";var Gft=/[|\\\\{}()[\\]^$+*?.-]/g;ICe.exports=e=>{if(typeof e!=\"string\")throw new TypeError(\"Expected a string\");return e.replace(Gft,\"\\\\$&\")}});var SCe=G((u7t,vCe)=>{\"use strict\";var qft=CCe(),Wft=typeof process==\"object\"&&process&&typeof process.cwd==\"function\"?process.cwd():\".\",BCe=[].concat(Ie(\"module\").builtinModules,\"bootstrap_node\",\"node\").map(e=>new RegExp(`(?:\\\\((?:node:)?${e}(?:\\\\.js)?:\\\\d+:\\\\d+\\\\)$|^\\\\s*at (?:node:)?${e}(?:\\\\.js)?:\\\\d+:\\\\d+$)`));BCe.push(/\\((?:node:)?internal\\/[^:]+:\\d+:\\d+\\)$/,/\\s*at (?:node:)?internal\\/[^:]+:\\d+:\\d+$/,/\\/\\.node-spawn-wrap-\\w+-\\w+\\/node:\\d+:\\d+\\)?$/);var W9=class e{constructor(t){t={ignoredPackages:[],...t},\"internals\"in t||(t.internals=e.nodeInternals()),\"cwd\"in t||(t.cwd=Wft),this._cwd=t.cwd.replace(/\\\\/g,\"/\"),this._internals=[].concat(t.internals,Vft(t.ignoredPackages)),this._wrapCallSite=t.wrapCallSite||!1}static nodeInternals(){return[...BCe]}clean(t,r=0){r=\" \".repeat(r),Array.isArray(t)||(t=t.split(`\n`)),!/^\\s*at /.test(t[0])&&/^\\s*at /.test(t[1])&&(t=t.slice(1));let s=!1,a=null,n=[];return t.forEach(c=>{if(c=c.replace(/\\\\/g,\"/\"),this._internals.some(p=>p.test(c)))return;let f=/^\\s*at /.test(c);s?c=c.trimEnd().replace(/^(\\s+)at /,\"$1\"):(c=c.trim(),f&&(c=c.slice(3))),c=c.replace(`${this._cwd}/`,\"\"),c&&(f?(a&&(n.push(a),a=null),n.push(c)):(s=!0,a=c))}),n.map(c=>`${r}${c}\n`).join(\"\")}captureString(t,r=this.captureString){typeof t==\"function\"&&(r=t,t=1/0);let{stackTraceLimit:s}=Error;t&&(Error.stackTraceLimit=t);let a={};Error.captureStackTrace(a,r);let{stack:n}=a;return Error.stackTraceLimit=s,this.clean(n)}capture(t,r=this.capture){typeof t==\"function\"&&(r=t,t=1/0);let{prepareStackTrace:s,stackTraceLimit:a}=Error;Error.prepareStackTrace=(f,p)=>this._wrapCallSite?p.map(this._wrapCallSite):p,t&&(Error.stackTraceLimit=t);let n={};Error.captureStackTrace(n,r);let{stack:c}=n;return Object.assign(Error,{prepareStackTrace:s,stackTraceLimit:a}),c}at(t=this.at){let[r]=this.capture(1,t);if(!r)return{};let s={line:r.getLineNumber(),column:r.getColumnNumber()};wCe(s,r.getFileName(),this._cwd),r.isConstructor()&&(s.constructor=!0),r.isEval()&&(s.evalOrigin=r.getEvalOrigin()),r.isNative()&&(s.native=!0);let a;try{a=r.getTypeName()}catch{}a&&a!==\"Object\"&&a!==\"[object Object]\"&&(s.type=a);let n=r.getFunctionName();n&&(s.function=n);let c=r.getMethodName();return c&&n!==c&&(s.method=c),s}parseLine(t){let r=t&&t.match(Yft);if(!r)return null;let s=r[1]===\"new\",a=r[2],n=r[3],c=r[4],f=Number(r[5]),p=Number(r[6]),h=r[7],E=r[8],C=r[9],S=r[10]===\"native\",x=r[11]===\")\",I,T={};if(E&&(T.line=Number(E)),C&&(T.column=Number(C)),x&&h){let O=0;for(let U=h.length-1;U>0;U--)if(h.charAt(U)===\")\")O++;else if(h.charAt(U)===\"(\"&&h.charAt(U-1)===\" \"&&(O--,O===-1&&h.charAt(U-1)===\" \")){let Y=h.slice(0,U-1);h=h.slice(U+1),a+=` (${Y}`;break}}if(a){let O=a.match(Kft);O&&(a=O[1],I=O[2])}return wCe(T,h,this._cwd),s&&(T.constructor=!0),n&&(T.evalOrigin=n,T.evalLine=f,T.evalColumn=p,T.evalFile=c&&c.replace(/\\\\/g,\"/\")),S&&(T.native=!0),a&&(T.function=a),I&&a!==I&&(T.method=I),T}};function wCe(e,t,r){t&&(t=t.replace(/\\\\/g,\"/\"),t.startsWith(`${r}/`)&&(t=t.slice(r.length+1)),e.file=t)}function Vft(e){if(e.length===0)return[];let t=e.map(r=>qft(r));return new RegExp(`[/\\\\\\\\]node_modules[/\\\\\\\\](?:${t.join(\"|\")})[/\\\\\\\\][^:]+:\\\\d+:\\\\d+`)}var Yft=new RegExp(\"^(?:\\\\s*at )?(?:(new) )?(?:(.*?) \\\\()?(?:eval at ([^ ]+) \\\\((.+?):(\\\\d+):(\\\\d+)\\\\), )?(?:(.+?):(\\\\d+):(\\\\d+)|(native))(\\\\)?)$\"),Kft=/^(.*?) \\[as (.*?)\\]$/;vCe.exports=W9});var bCe=G((f7t,DCe)=>{\"use strict\";DCe.exports=(e,t)=>e.replace(/^\\t+/gm,r=>\" \".repeat(r.length*(t||2)))});var xCe=G((A7t,PCe)=>{\"use strict\";var Jft=bCe(),zft=(e,t)=>{let r=[],s=e-t,a=e+t;for(let n=s;n<=a;n++)r.push(n);return r};PCe.exports=(e,t,r)=>{if(typeof e!=\"string\")throw new TypeError(\"Source code is missing.\");if(!t||t<1)throw new TypeError(\"Line number must start from `1`.\");if(e=Jft(e).split(/\\r?\\n/),!(t>e.length))return r={around:3,...r},zft(t,r.around).filter(s=>e[s-1]!==void 0).map(s=>({line:s,value:e[s-1]}))}});var SF=G(sf=>{\"use strict\";var Zft=sf&&sf.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Xft=sf&&sf.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),$ft=sf&&sf.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!==\"default\"&&Object.hasOwnProperty.call(e,r)&&Zft(t,e,r);return Xft(t,e),t},eAt=sf&&sf.__rest||function(e,t){var r={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(r[s]=e[s]);if(e!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var a=0,s=Object.getOwnPropertySymbols(e);a<s.length;a++)t.indexOf(s[a])<0&&Object.prototype.propertyIsEnumerable.call(e,s[a])&&(r[s[a]]=e[s[a]]);return r};Object.defineProperty(sf,\"__esModule\",{value:!0});var kCe=$ft(gn()),V9=kCe.forwardRef((e,t)=>{var{children:r}=e,s=eAt(e,[\"children\"]);let a=Object.assign(Object.assign({},s),{marginLeft:s.marginLeft||s.marginX||s.margin||0,marginRight:s.marginRight||s.marginX||s.margin||0,marginTop:s.marginTop||s.marginY||s.margin||0,marginBottom:s.marginBottom||s.marginY||s.margin||0,paddingLeft:s.paddingLeft||s.paddingX||s.padding||0,paddingRight:s.paddingRight||s.paddingX||s.padding||0,paddingTop:s.paddingTop||s.paddingY||s.padding||0,paddingBottom:s.paddingBottom||s.paddingY||s.padding||0});return kCe.default.createElement(\"ink-box\",{ref:t,style:a},r)});V9.displayName=\"Box\";V9.defaultProps={flexDirection:\"row\",flexGrow:0,flexShrink:1};sf.default=V9});var J9=G(nD=>{\"use strict\";var Y9=nD&&nD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(nD,\"__esModule\",{value:!0});var tAt=Y9(gn()),cw=Y9(NE()),QCe=Y9(x9()),K9=({color:e,backgroundColor:t,dimColor:r,bold:s,italic:a,underline:n,strikethrough:c,inverse:f,wrap:p,children:h})=>{if(h==null)return null;let E=C=>(r&&(C=cw.default.dim(C)),e&&(C=QCe.default(C,e,\"foreground\")),t&&(C=QCe.default(C,t,\"background\")),s&&(C=cw.default.bold(C)),a&&(C=cw.default.italic(C)),n&&(C=cw.default.underline(C)),c&&(C=cw.default.strikethrough(C)),f&&(C=cw.default.inverse(C)),C);return tAt.default.createElement(\"ink-text\",{style:{flexGrow:0,flexShrink:1,flexDirection:\"row\",textWrap:p},internal_transform:E},h)};K9.displayName=\"Text\";K9.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:\"wrap\"};nD.default=K9});var NCe=G(of=>{\"use strict\";var rAt=of&&of.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),nAt=of&&of.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),iAt=of&&of.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!==\"default\"&&Object.hasOwnProperty.call(e,r)&&rAt(t,e,r);return nAt(t,e),t},iD=of&&of.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(of,\"__esModule\",{value:!0});var RCe=iAt(Ie(\"fs\")),Fs=iD(gn()),TCe=iD(SCe()),sAt=iD(xCe()),Zp=iD(SF()),pA=iD(J9()),FCe=new TCe.default({cwd:process.cwd(),internals:TCe.default.nodeInternals()}),oAt=({error:e})=>{let t=e.stack?e.stack.split(`\n`).slice(1):void 0,r=t?FCe.parseLine(t[0]):void 0,s,a=0;if(r?.file&&r?.line&&RCe.existsSync(r.file)){let n=RCe.readFileSync(r.file,\"utf8\");if(s=sAt.default(n,r.line),s)for(let{line:c}of s)a=Math.max(a,String(c).length)}return Fs.default.createElement(Zp.default,{flexDirection:\"column\",padding:1},Fs.default.createElement(Zp.default,null,Fs.default.createElement(pA.default,{backgroundColor:\"red\",color:\"white\"},\" \",\"ERROR\",\" \"),Fs.default.createElement(pA.default,null,\" \",e.message)),r&&Fs.default.createElement(Zp.default,{marginTop:1},Fs.default.createElement(pA.default,{dimColor:!0},r.file,\":\",r.line,\":\",r.column)),r&&s&&Fs.default.createElement(Zp.default,{marginTop:1,flexDirection:\"column\"},s.map(({line:n,value:c})=>Fs.default.createElement(Zp.default,{key:n},Fs.default.createElement(Zp.default,{width:a+1},Fs.default.createElement(pA.default,{dimColor:n!==r.line,backgroundColor:n===r.line?\"red\":void 0,color:n===r.line?\"white\":void 0},String(n).padStart(a,\" \"),\":\")),Fs.default.createElement(pA.default,{key:n,backgroundColor:n===r.line?\"red\":void 0,color:n===r.line?\"white\":void 0},\" \"+c)))),e.stack&&Fs.default.createElement(Zp.default,{marginTop:1,flexDirection:\"column\"},e.stack.split(`\n`).slice(1).map(n=>{let c=FCe.parseLine(n);return c?Fs.default.createElement(Zp.default,{key:n},Fs.default.createElement(pA.default,{dimColor:!0},\"- \"),Fs.default.createElement(pA.default,{dimColor:!0,bold:!0},c.function),Fs.default.createElement(pA.default,{dimColor:!0,color:\"gray\"},\" \",\"(\",c.file,\":\",c.line,\":\",c.column,\")\")):Fs.default.createElement(Zp.default,{key:n},Fs.default.createElement(pA.default,{dimColor:!0},\"- \"),Fs.default.createElement(pA.default,{dimColor:!0,bold:!0},n))})))};of.default=oAt});var LCe=G(af=>{\"use strict\";var aAt=af&&af.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),lAt=af&&af.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),cAt=af&&af.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!==\"default\"&&Object.hasOwnProperty.call(e,r)&&aAt(t,e,r);return lAt(t,e),t},_m=af&&af.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(af,\"__esModule\",{value:!0});var Um=cAt(gn()),OCe=_m(Zq()),uAt=_m(L9()),fAt=_m(U9()),AAt=_m(H9()),pAt=_m(G9()),hAt=_m(vF()),gAt=_m(NCe()),dAt=\"\t\",mAt=\"\\x1B[Z\",yAt=\"\\x1B\",DF=class extends Um.PureComponent{constructor(){super(...arguments),this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=t=>{let{stdin:r}=this.props;if(!this.isRawModeSupported())throw r===process.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.\nRead about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink.\nRead about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(r.setEncoding(\"utf8\"),t){this.rawModeEnabledCount===0&&(r.addListener(\"data\",this.handleInput),r.resume(),r.setRawMode(!0)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount===0&&(r.setRawMode(!1),r.removeListener(\"data\",this.handleInput),r.pause())},this.handleInput=t=>{t===\"\u0003\"&&this.props.exitOnCtrlC&&this.handleExit(),t===yAt&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(t===dAt&&this.focusNext(),t===mAt&&this.focusPrevious())},this.handleExit=t=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(t)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focus=t=>{this.setState(r=>r.focusables.some(a=>a?.id===t)?{activeFocusId:t}:r)},this.focusNext=()=>{this.setState(t=>{var r;let s=(r=t.focusables[0])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findNextFocusable(t)||s}})},this.focusPrevious=()=>{this.setState(t=>{var r;let s=(r=t.focusables[t.focusables.length-1])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findPreviousFocusable(t)||s}})},this.addFocusable=(t,{autoFocus:r})=>{this.setState(s=>{let a=s.activeFocusId;return!a&&r&&(a=t),{activeFocusId:a,focusables:[...s.focusables,{id:t,isActive:!0}]}})},this.removeFocusable=t=>{this.setState(r=>({activeFocusId:r.activeFocusId===t?void 0:r.activeFocusId,focusables:r.focusables.filter(s=>s.id!==t)}))},this.activateFocusable=t=>{this.setState(r=>({focusables:r.focusables.map(s=>s.id!==t?s:{id:t,isActive:!0})}))},this.deactivateFocusable=t=>{this.setState(r=>({activeFocusId:r.activeFocusId===t?void 0:r.activeFocusId,focusables:r.focusables.map(s=>s.id!==t?s:{id:t,isActive:!1})}))},this.findNextFocusable=t=>{var r;let s=t.focusables.findIndex(a=>a.id===t.activeFocusId);for(let a=s+1;a<t.focusables.length;a++)if(!((r=t.focusables[a])===null||r===void 0)&&r.isActive)return t.focusables[a].id},this.findPreviousFocusable=t=>{var r;let s=t.focusables.findIndex(a=>a.id===t.activeFocusId);for(let a=s-1;a>=0;a--)if(!((r=t.focusables[a])===null||r===void 0)&&r.isActive)return t.focusables[a].id}}static getDerivedStateFromError(t){return{error:t}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return Um.default.createElement(uAt.default.Provider,{value:{exit:this.handleExit}},Um.default.createElement(fAt.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},Um.default.createElement(AAt.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},Um.default.createElement(pAt.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},Um.default.createElement(hAt.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious,focus:this.focus}},this.state.error?Um.default.createElement(gAt.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){OCe.default.hide(this.props.stdout)}componentWillUnmount(){OCe.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(t){this.handleExit(t)}};af.default=DF;DF.displayName=\"InternalApp\"});var _Ce=G(lf=>{\"use strict\";var EAt=lf&&lf.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),IAt=lf&&lf.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),CAt=lf&&lf.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!==\"default\"&&Object.hasOwnProperty.call(e,r)&&EAt(t,e,r);return IAt(t,e),t},cf=lf&&lf.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(lf,\"__esModule\",{value:!0});var wAt=cf(gn()),MCe=REe(),BAt=cf(KEe()),vAt=cf(Vq()),SAt=cf(eIe()),DAt=cf(rIe()),z9=cf(KIe()),bAt=cf(uCe()),PAt=cf(zq()),xAt=cf(hCe()),kAt=CAt(b9()),QAt=cf(N9()),RAt=cf(LCe()),uw=process.env.CI===\"false\"?!1:SAt.default,UCe=()=>{},Z9=class{constructor(t){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:r,outputHeight:s,staticOutput:a}=bAt.default(this.rootNode,this.options.stdout.columns||80),n=a&&a!==`\n`;if(this.options.debug){n&&(this.fullStaticOutput+=a),this.options.stdout.write(this.fullStaticOutput+r);return}if(uw){n&&this.options.stdout.write(a),this.lastOutput=r;return}if(n&&(this.fullStaticOutput+=a),s>=this.options.stdout.rows){this.options.stdout.write(vAt.default.clearTerminal+this.fullStaticOutput+r),this.lastOutput=r;return}n&&(this.log.clear(),this.options.stdout.write(a),this.log(r)),!n&&r!==this.lastOutput&&this.throttledLog(r),this.lastOutput=r},DAt.default(this),this.options=t,this.rootNode=kAt.createNode(\"ink-root\"),this.rootNode.onRender=t.debug?this.onRender:MCe(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=BAt.default.create(t.stdout),this.throttledLog=t.debug?this.log:MCe(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput=\"\",this.fullStaticOutput=\"\",this.container=z9.default.createContainer(this.rootNode,0,!1,null),this.unsubscribeExit=PAt.default(this.unmount,{alwaysLast:!1}),t.patchConsole&&this.patchConsole(),uw||(t.stdout.on(\"resize\",this.onRender),this.unsubscribeResize=()=>{t.stdout.off(\"resize\",this.onRender)})}render(t){let r=wAt.default.createElement(RAt.default,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},t);z9.default.updateContainer(r,this.container,null,UCe)}writeToStdout(t){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(t+this.fullStaticOutput+this.lastOutput);return}if(uw){this.options.stdout.write(t);return}this.log.clear(),this.options.stdout.write(t),this.log(this.lastOutput)}}writeToStderr(t){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(t),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(uw){this.options.stderr.write(t);return}this.log.clear(),this.options.stderr.write(t),this.log(this.lastOutput)}}unmount(t){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole==\"function\"&&this.restoreConsole(),typeof this.unsubscribeResize==\"function\"&&this.unsubscribeResize(),uw?this.options.stdout.write(this.lastOutput+`\n`):this.options.debug||this.log.done(),this.isUnmounted=!0,z9.default.updateContainer(null,this.container,null,UCe),QAt.default.delete(this.options.stdout),t instanceof Error?this.rejectExitPromise(t):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((t,r)=>{this.resolveExitPromise=t,this.rejectExitPromise=r})),this.exitPromise}clear(){!uw&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=xAt.default((t,r)=>{t===\"stdout\"&&this.writeToStdout(r),t===\"stderr\"&&(r.startsWith(\"The above error occurred\")||this.writeToStderr(r))}))}};lf.default=Z9});var jCe=G(sD=>{\"use strict\";var HCe=sD&&sD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(sD,\"__esModule\",{value:!0});var TAt=HCe(_Ce()),bF=HCe(N9()),FAt=Ie(\"stream\"),NAt=(e,t)=>{let r=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},OAt(t)),s=LAt(r.stdout,()=>new TAt.default(r));return s.render(e),{rerender:s.render,unmount:()=>s.unmount(),waitUntilExit:s.waitUntilExit,cleanup:()=>bF.default.delete(r.stdout),clear:s.clear}};sD.default=NAt;var OAt=(e={})=>e instanceof FAt.Stream?{stdout:e,stdin:process.stdin}:e,LAt=(e,t)=>{let r;return bF.default.has(e)?r=bF.default.get(e):(r=t(),bF.default.set(e,r)),r}});var qCe=G(Xp=>{\"use strict\";var MAt=Xp&&Xp.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),UAt=Xp&&Xp.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),_At=Xp&&Xp.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!==\"default\"&&Object.hasOwnProperty.call(e,r)&&MAt(t,e,r);return UAt(t,e),t};Object.defineProperty(Xp,\"__esModule\",{value:!0});var oD=_At(gn()),GCe=e=>{let{items:t,children:r,style:s}=e,[a,n]=oD.useState(0),c=oD.useMemo(()=>t.slice(a),[t,a]);oD.useLayoutEffect(()=>{n(t.length)},[t.length]);let f=c.map((h,E)=>r(h,a+E)),p=oD.useMemo(()=>Object.assign({position:\"absolute\",flexDirection:\"column\"},s),[s]);return oD.default.createElement(\"ink-box\",{internal_static:!0,style:p},f)};GCe.displayName=\"Static\";Xp.default=GCe});var VCe=G(aD=>{\"use strict\";var HAt=aD&&aD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(aD,\"__esModule\",{value:!0});var jAt=HAt(gn()),WCe=({children:e,transform:t})=>e==null?null:jAt.default.createElement(\"ink-text\",{style:{flexGrow:0,flexShrink:1,flexDirection:\"row\"},internal_transform:t},e);WCe.displayName=\"Transform\";aD.default=WCe});var KCe=G(lD=>{\"use strict\";var GAt=lD&&lD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(lD,\"__esModule\",{value:!0});var qAt=GAt(gn()),YCe=({count:e=1})=>qAt.default.createElement(\"ink-text\",null,`\n`.repeat(e));YCe.displayName=\"Newline\";lD.default=YCe});var ZCe=G(cD=>{\"use strict\";var JCe=cD&&cD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(cD,\"__esModule\",{value:!0});var WAt=JCe(gn()),VAt=JCe(SF()),zCe=()=>WAt.default.createElement(VAt.default,{flexGrow:1});zCe.displayName=\"Spacer\";cD.default=zCe});var PF=G(uD=>{\"use strict\";var YAt=uD&&uD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(uD,\"__esModule\",{value:!0});var KAt=gn(),JAt=YAt(U9()),zAt=()=>KAt.useContext(JAt.default);uD.default=zAt});var $Ce=G(fD=>{\"use strict\";var ZAt=fD&&fD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(fD,\"__esModule\",{value:!0});var XCe=gn(),XAt=ZAt(PF()),$At=(e,t={})=>{let{stdin:r,setRawMode:s,internal_exitOnCtrlC:a}=XAt.default();XCe.useEffect(()=>{if(t.isActive!==!1)return s(!0),()=>{s(!1)}},[t.isActive,s]),XCe.useEffect(()=>{if(t.isActive===!1)return;let n=c=>{let f=String(c),p={upArrow:f===\"\\x1B[A\",downArrow:f===\"\\x1B[B\",leftArrow:f===\"\\x1B[D\",rightArrow:f===\"\\x1B[C\",pageDown:f===\"\\x1B[6~\",pageUp:f===\"\\x1B[5~\",return:f===\"\\r\",escape:f===\"\\x1B\",ctrl:!1,shift:!1,tab:f===\"\t\"||f===\"\\x1B[Z\",backspace:f===\"\\b\",delete:f===\"\\x7F\"||f===\"\\x1B[3~\",meta:!1};f<=\"\u001a\"&&!p.return&&(f=String.fromCharCode(f.charCodeAt(0)+97-1),p.ctrl=!0),f.startsWith(\"\\x1B\")&&(f=f.slice(1),p.meta=!0);let h=f>=\"A\"&&f<=\"Z\",E=f>=\"\\u0410\"&&f<=\"\\u042F\";f.length===1&&(h||E)&&(p.shift=!0),p.tab&&f===\"[Z\"&&(p.shift=!0),(p.tab||p.backspace||p.delete)&&(f=\"\"),(!(f===\"c\"&&p.ctrl)||!a)&&e(f,p)};return r?.on(\"data\",n),()=>{r?.off(\"data\",n)}},[t.isActive,r,a,e])};fD.default=$At});var ewe=G(AD=>{\"use strict\";var ept=AD&&AD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(AD,\"__esModule\",{value:!0});var tpt=gn(),rpt=ept(L9()),npt=()=>tpt.useContext(rpt.default);AD.default=npt});var twe=G(pD=>{\"use strict\";var ipt=pD&&pD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(pD,\"__esModule\",{value:!0});var spt=gn(),opt=ipt(H9()),apt=()=>spt.useContext(opt.default);pD.default=apt});var rwe=G(hD=>{\"use strict\";var lpt=hD&&hD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(hD,\"__esModule\",{value:!0});var cpt=gn(),upt=lpt(G9()),fpt=()=>cpt.useContext(upt.default);hD.default=fpt});var iwe=G(dD=>{\"use strict\";var nwe=dD&&dD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(dD,\"__esModule\",{value:!0});var gD=gn(),Apt=nwe(vF()),ppt=nwe(PF()),hpt=({isActive:e=!0,autoFocus:t=!1,id:r}={})=>{let{isRawModeSupported:s,setRawMode:a}=ppt.default(),{activeId:n,add:c,remove:f,activate:p,deactivate:h,focus:E}=gD.useContext(Apt.default),C=gD.useMemo(()=>r??Math.random().toString().slice(2,7),[r]);return gD.useEffect(()=>(c(C,{autoFocus:t}),()=>{f(C)}),[C,t]),gD.useEffect(()=>{e?p(C):h(C)},[e,C]),gD.useEffect(()=>{if(!(!s||!e))return a(!0),()=>{a(!1)}},[e]),{isFocused:!!C&&n===C,focus:E}};dD.default=hpt});var swe=G(mD=>{\"use strict\";var gpt=mD&&mD.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(mD,\"__esModule\",{value:!0});var dpt=gn(),mpt=gpt(vF()),ypt=()=>{let e=dpt.useContext(mpt.default);return{enableFocus:e.enableFocus,disableFocus:e.disableFocus,focusNext:e.focusNext,focusPrevious:e.focusPrevious,focus:e.focus}};mD.default=ypt});var owe=G(X9=>{\"use strict\";Object.defineProperty(X9,\"__esModule\",{value:!0});X9.default=e=>{var t,r,s,a;return{width:(r=(t=e.yogaNode)===null||t===void 0?void 0:t.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(s=e.yogaNode)===null||s===void 0?void 0:s.getComputedHeight())!==null&&a!==void 0?a:0}}});var Gc=G(wo=>{\"use strict\";Object.defineProperty(wo,\"__esModule\",{value:!0});var Ept=jCe();Object.defineProperty(wo,\"render\",{enumerable:!0,get:function(){return Ept.default}});var Ipt=SF();Object.defineProperty(wo,\"Box\",{enumerable:!0,get:function(){return Ipt.default}});var Cpt=J9();Object.defineProperty(wo,\"Text\",{enumerable:!0,get:function(){return Cpt.default}});var wpt=qCe();Object.defineProperty(wo,\"Static\",{enumerable:!0,get:function(){return wpt.default}});var Bpt=VCe();Object.defineProperty(wo,\"Transform\",{enumerable:!0,get:function(){return Bpt.default}});var vpt=KCe();Object.defineProperty(wo,\"Newline\",{enumerable:!0,get:function(){return vpt.default}});var Spt=ZCe();Object.defineProperty(wo,\"Spacer\",{enumerable:!0,get:function(){return Spt.default}});var Dpt=$Ce();Object.defineProperty(wo,\"useInput\",{enumerable:!0,get:function(){return Dpt.default}});var bpt=ewe();Object.defineProperty(wo,\"useApp\",{enumerable:!0,get:function(){return bpt.default}});var Ppt=PF();Object.defineProperty(wo,\"useStdin\",{enumerable:!0,get:function(){return Ppt.default}});var xpt=twe();Object.defineProperty(wo,\"useStdout\",{enumerable:!0,get:function(){return xpt.default}});var kpt=rwe();Object.defineProperty(wo,\"useStderr\",{enumerable:!0,get:function(){return kpt.default}});var Qpt=iwe();Object.defineProperty(wo,\"useFocus\",{enumerable:!0,get:function(){return Qpt.default}});var Rpt=swe();Object.defineProperty(wo,\"useFocusManager\",{enumerable:!0,get:function(){return Rpt.default}});var Tpt=owe();Object.defineProperty(wo,\"measureElement\",{enumerable:!0,get:function(){return Tpt.default}})});var eW={};Yt(eW,{Gem:()=>$9});var awe,Hm,$9,xF=Ze(()=>{awe=et(Gc()),Hm=et(gn()),$9=(0,Hm.memo)(({active:e})=>{let t=(0,Hm.useMemo)(()=>e?\"\\u25C9\":\"\\u25EF\",[e]),r=(0,Hm.useMemo)(()=>e?\"green\":\"yellow\",[e]);return Hm.default.createElement(awe.Text,{color:r},t)})});var tW={};Yt(tW,{useKeypress:()=>jm});function jm({active:e},t,r){let{stdin:s}=(0,lwe.useStdin)(),a=(0,kF.useCallback)((n,c)=>t(n,c),r);(0,kF.useEffect)(()=>{if(!(!e||!s))return s.on(\"keypress\",a),()=>{s.off(\"keypress\",a)}},[e,a,s])}var lwe,kF,fw=Ze(()=>{lwe=et(Gc()),kF=et(gn())});var uwe={};Yt(uwe,{FocusRequest:()=>cwe,useFocusRequest:()=>rW});var cwe,rW,nW=Ze(()=>{fw();cwe=(r=>(r.BEFORE=\"before\",r.AFTER=\"after\",r))(cwe||{}),rW=function({active:e},t,r){jm({active:e},(s,a)=>{a.name===\"tab\"&&(a.shift?t(\"before\"):t(\"after\"))},r)}});var fwe={};Yt(fwe,{useListInput:()=>yD});var yD,QF=Ze(()=>{fw();yD=function(e,t,{active:r,minus:s,plus:a,set:n,loop:c=!0}){jm({active:r},(f,p)=>{let h=t.indexOf(e);switch(p.name){case s:{let E=h-1;if(c){n(t[(t.length+E)%t.length]);return}if(E<0)return;n(t[E])}break;case a:{let E=h+1;if(c){n(t[E%t.length]);return}if(E>=t.length)return;n(t[E])}break}},[t,e,a,n,c])}});var RF={};Yt(RF,{ScrollableItems:()=>Fpt});var X0,wl,Fpt,TF=Ze(()=>{X0=et(Gc()),wl=et(gn());nW();QF();Fpt=({active:e=!0,children:t=[],radius:r=10,size:s=1,loop:a=!0,onFocusRequest:n,willReachEnd:c})=>{let f=O=>{if(O.key===null)throw new Error(\"Expected all children to have a key\");return O.key},p=wl.default.Children.map(t,O=>f(O)),h=p[0],[E,C]=(0,wl.useState)(h),S=p.indexOf(E);(0,wl.useEffect)(()=>{p.includes(E)||C(h)},[t]),(0,wl.useEffect)(()=>{c&&S>=p.length-2&&c()},[S]),rW({active:e&&!!n},O=>{n?.(O)},[n]),yD(E,p,{active:e,minus:\"up\",plus:\"down\",set:C,loop:a});let x=S-r,I=S+r;I>p.length&&(x-=I-p.length,I=p.length),x<0&&(I+=-x,x=0),I>=p.length&&(I=p.length-1);let T=[];for(let O=x;O<=I;++O){let U=p[O],Y=e&&U===E;T.push(wl.default.createElement(X0.Box,{key:U,height:s},wl.default.createElement(X0.Box,{marginLeft:1,marginRight:1},wl.default.createElement(X0.Text,null,Y?wl.default.createElement(X0.Text,{color:\"cyan\",bold:!0},\">\"):\" \")),wl.default.createElement(X0.Box,null,wl.default.cloneElement(t[O],{active:Y}))))}return wl.default.createElement(X0.Box,{flexDirection:\"column\",width:\"100%\"},T)}});var Awe,$p,pwe,FF,hwe,iW=Ze(()=>{Awe=et(Gc()),$p=et(gn()),pwe=Ie(\"readline\"),FF=$p.default.createContext(null),hwe=({children:e})=>{let{stdin:t,setRawMode:r}=(0,Awe.useStdin)();(0,$p.useEffect)(()=>{r&&r(!0),t&&(0,pwe.emitKeypressEvents)(t)},[t,r]);let[s,a]=(0,$p.useState)(new Map),n=(0,$p.useMemo)(()=>({getAll:()=>s,get:c=>s.get(c),set:(c,f)=>a(p=>new Map([...p,[c,f]])),setAll:c=>a(f=>new Map([...f,...c]))}),[s,a]);return $p.default.createElement(FF.Provider,{value:n,children:e})}});var sW={};Yt(sW,{useMinistore:()=>Npt,useMinistoreSetAll:()=>Opt});function Npt(e,t){let r=(0,ED.useContext)(FF);if(r===null)throw new Error(\"Expected this hook to run with a ministore context attached\");if(typeof e>\"u\")return r.getAll();let s=(0,ED.useCallback)(n=>{r.set(e,n)},[e,r.set]),a=r.get(e);return typeof a>\"u\"&&(a=t),[a,s]}function Opt(){let e=(0,ED.useContext)(FF);if(e===null)throw new Error(\"Expected this hook to run with a ministore context attached\");return e.setAll}var ED,oW=Ze(()=>{ED=et(gn());iW()});var OF={};Yt(OF,{renderForm:()=>Lpt});async function Lpt(e,t,{stdin:r,stdout:s,stderr:a}){let n,c=p=>{let{exit:h}=(0,NF.useApp)();jm({active:!0},(E,C)=>{C.name===\"return\"&&(n=p,h())},[h,p])},{waitUntilExit:f}=(0,NF.render)(aW.default.createElement(hwe,null,aW.default.createElement(e,{...t,useSubmit:c})),{stdin:r,stdout:s,stderr:a});return await f(),n}var NF,aW,LF=Ze(()=>{NF=et(Gc()),aW=et(gn());iW();fw()});var ywe=G(ID=>{\"use strict\";Object.defineProperty(ID,\"__esModule\",{value:!0});ID.UncontrolledTextInput=void 0;var dwe=gn(),lW=gn(),gwe=Gc(),Gm=NE(),mwe=({value:e,placeholder:t=\"\",focus:r=!0,mask:s,highlightPastedText:a=!1,showCursor:n=!0,onChange:c,onSubmit:f})=>{let[{cursorOffset:p,cursorWidth:h},E]=lW.useState({cursorOffset:(e||\"\").length,cursorWidth:0});lW.useEffect(()=>{E(T=>{if(!r||!n)return T;let O=e||\"\";return T.cursorOffset>O.length-1?{cursorOffset:O.length,cursorWidth:0}:T})},[e,r,n]);let C=a?h:0,S=s?s.repeat(e.length):e,x=S,I=t?Gm.grey(t):void 0;if(n&&r){I=t.length>0?Gm.inverse(t[0])+Gm.grey(t.slice(1)):Gm.inverse(\" \"),x=S.length>0?\"\":Gm.inverse(\" \");let T=0;for(let O of S)T>=p-C&&T<=p?x+=Gm.inverse(O):x+=O,T++;S.length>0&&p===S.length&&(x+=Gm.inverse(\" \"))}return gwe.useInput((T,O)=>{if(O.upArrow||O.downArrow||O.ctrl&&T===\"c\"||O.tab||O.shift&&O.tab)return;if(O.return){f&&f(e);return}let U=p,Y=e,te=0;O.leftArrow?n&&U--:O.rightArrow?n&&U++:O.backspace||O.delete?p>0&&(Y=e.slice(0,p-1)+e.slice(p,e.length),U--):(Y=e.slice(0,p)+T+e.slice(p,e.length),U+=T.length,T.length>1&&(te=T.length)),p<0&&(U=0),p>e.length&&(U=e.length),E({cursorOffset:U,cursorWidth:te}),Y!==e&&c(Y)},{isActive:r}),dwe.createElement(gwe.Text,null,t?S.length>0?x:I:x)};ID.default=mwe;ID.UncontrolledTextInput=({initialValue:e=\"\",...t})=>{let[r,s]=lW.useState(e);return dwe.createElement(mwe,Object.assign({},t,{value:r,onChange:s}))}});var Cwe={};Yt(Cwe,{Pad:()=>cW});var Ewe,Iwe,cW,uW=Ze(()=>{Ewe=et(Gc()),Iwe=et(gn()),cW=({length:e,active:t})=>{if(e===0)return null;let r=e>1?` ${\"-\".repeat(e-1)}`:\" \";return Iwe.default.createElement(Ewe.Text,{dimColor:!t},r)}});var wwe={};Yt(wwe,{ItemOptions:()=>Mpt});var wD,$0,Mpt,Bwe=Ze(()=>{wD=et(Gc()),$0=et(gn());QF();xF();uW();Mpt=function({active:e,skewer:t,options:r,value:s,onChange:a,sizes:n=[]}){let c=r.filter(({label:p})=>!!p).map(({value:p})=>p),f=r.findIndex(p=>p.value===s&&p.label!=\"\");return yD(s,c,{active:e,minus:\"left\",plus:\"right\",set:a}),$0.default.createElement($0.default.Fragment,null,r.map(({label:p},h)=>{let E=h===f,C=n[h]-1||0,S=p.replace(/[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,\"\"),x=Math.max(0,C-S.length-2);return p?$0.default.createElement(wD.Box,{key:p,width:C,marginLeft:1},$0.default.createElement(wD.Text,{wrap:\"truncate\"},$0.default.createElement($9,{active:E}),\" \",p),t?$0.default.createElement(cW,{active:e,length:x}):null):$0.default.createElement(wD.Box,{key:`spacer-${h}`,width:C,marginLeft:1})}))}});var Mwe=G((dJt,Lwe)=>{var CW;Lwe.exports=()=>(typeof CW>\"u\"&&(CW=Ie(\"zlib\").brotliDecompressSync(Buffer.from(\"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\",\"base64\")).toString()),CW)});var s1e=G((HJt,i1e)=>{var kW=Symbol(\"arg flag\"),qc=class e extends Error{constructor(t,r){super(t),this.name=\"ArgError\",this.code=r,Object.setPrototypeOf(this,e.prototype)}};function UD(e,{argv:t=process.argv.slice(2),permissive:r=!1,stopAtPositional:s=!1}={}){if(!e)throw new qc(\"argument specification object is required\",\"ARG_CONFIG_NO_SPEC\");let a={_:[]},n={},c={};for(let f of Object.keys(e)){if(!f)throw new qc(\"argument key cannot be an empty string\",\"ARG_CONFIG_EMPTY_KEY\");if(f[0]!==\"-\")throw new qc(`argument key must start with '-' but found: '${f}'`,\"ARG_CONFIG_NONOPT_KEY\");if(f.length===1)throw new qc(`argument key must have a name; singular '-' keys are not allowed: ${f}`,\"ARG_CONFIG_NONAME_KEY\");if(typeof e[f]==\"string\"){n[f]=e[f];continue}let p=e[f],h=!1;if(Array.isArray(p)&&p.length===1&&typeof p[0]==\"function\"){let[E]=p;p=(C,S,x=[])=>(x.push(E(C,S,x[x.length-1])),x),h=E===Boolean||E[kW]===!0}else if(typeof p==\"function\")h=p===Boolean||p[kW]===!0;else throw new qc(`type missing or not a function or valid array type: ${f}`,\"ARG_CONFIG_VAD_TYPE\");if(f[1]!==\"-\"&&f.length>2)throw new qc(`short argument keys (with a single hyphen) must have only one character: ${f}`,\"ARG_CONFIG_SHORTOPT_TOOLONG\");c[f]=[p,h]}for(let f=0,p=t.length;f<p;f++){let h=t[f];if(s&&a._.length>0){a._=a._.concat(t.slice(f));break}if(h===\"--\"){a._=a._.concat(t.slice(f+1));break}if(h.length>1&&h[0]===\"-\"){let E=h[1]===\"-\"||h.length===2?[h]:h.slice(1).split(\"\").map(C=>`-${C}`);for(let C=0;C<E.length;C++){let S=E[C],[x,I]=S[1]===\"-\"?S.split(/=(.*)/,2):[S,void 0],T=x;for(;T in n;)T=n[T];if(!(T in c))if(r){a._.push(S);continue}else throw new qc(`unknown or unexpected option: ${x}`,\"ARG_UNKNOWN_OPTION\");let[O,U]=c[T];if(!U&&C+1<E.length)throw new qc(`option requires argument (but was followed by another short argument): ${x}`,\"ARG_MISSING_REQUIRED_SHORTARG\");if(U)a[T]=O(!0,T,a[T]);else if(I===void 0){if(t.length<f+2||t[f+1].length>1&&t[f+1][0]===\"-\"&&!(t[f+1].match(/^-?\\d*(\\.(?=\\d))?\\d*$/)&&(O===Number||typeof BigInt<\"u\"&&O===BigInt))){let Y=x===T?\"\":` (alias for ${T})`;throw new qc(`option requires argument: ${x}${Y}`,\"ARG_MISSING_REQUIRED_LONGARG\")}a[T]=O(t[f+1],T,a[T]),++f}else a[T]=O(I,T,a[T])}}else a._.push(h)}return a}UD.flag=e=>(e[kW]=!0,e);UD.COUNT=UD.flag((e,t,r)=>(r||0)+1);UD.ArgError=qc;i1e.exports=UD});var p1e=G((mzt,A1e)=>{var FW;A1e.exports=()=>(typeof FW>\"u\"&&(FW=Ie(\"zlib\").brotliDecompressSync(Buffer.from(\"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\",\"base64\")).toString()),FW)});var y1e=G((_W,HW)=>{(function(e){_W&&typeof _W==\"object\"&&typeof HW<\"u\"?HW.exports=e():typeof define==\"function\"&&define.amd?define([],e):typeof window<\"u\"?window.isWindows=e():typeof global<\"u\"?global.isWindows=e():typeof self<\"u\"?self.isWindows=e():this.isWindows=e()})(function(){\"use strict\";return function(){return process&&(process.platform===\"win32\"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var w1e=G((gZt,C1e)=>{\"use strict\";jW.ifExists=Uht;var yw=Ie(\"util\"),Wc=Ie(\"path\"),E1e=y1e(),Oht=/^#!\\s*(?:\\/usr\\/bin\\/env)?\\s*([^ \\t]+)(.*)$/,Lht={createPwshFile:!0,createCmdFile:E1e(),fs:Ie(\"fs\")},Mht=new Map([[\".js\",\"node\"],[\".cjs\",\"node\"],[\".mjs\",\"node\"],[\".cmd\",\"cmd\"],[\".bat\",\"cmd\"],[\".ps1\",\"pwsh\"],[\".sh\",\"sh\"]]);function I1e(e){let t={...Lht,...e},r=t.fs;return t.fs_={chmod:r.chmod?yw.promisify(r.chmod):async()=>{},mkdir:yw.promisify(r.mkdir),readFile:yw.promisify(r.readFile),stat:yw.promisify(r.stat),unlink:yw.promisify(r.unlink),writeFile:yw.promisify(r.writeFile)},t}async function jW(e,t,r){let s=I1e(r);await s.fs_.stat(e),await Hht(e,t,s)}function Uht(e,t,r){return jW(e,t,r).catch(()=>{})}function _ht(e,t){return t.fs_.unlink(e).catch(()=>{})}async function Hht(e,t,r){let s=await Vht(e,r);return await jht(t,r),Ght(e,t,s,r)}function jht(e,t){return t.fs_.mkdir(Wc.dirname(e),{recursive:!0})}function Ght(e,t,r,s){let a=I1e(s),n=[{generator:Jht,extension:\"\"}];return a.createCmdFile&&n.push({generator:Kht,extension:\".cmd\"}),a.createPwshFile&&n.push({generator:zht,extension:\".ps1\"}),Promise.all(n.map(c=>Yht(e,t+c.extension,r,c.generator,a)))}function qht(e,t){return _ht(e,t)}function Wht(e,t){return Zht(e,t)}async function Vht(e,t){let a=(await t.fs_.readFile(e,\"utf8\")).trim().split(/\\r*\\n/)[0].match(Oht);if(!a){let n=Wc.extname(e).toLowerCase();return{program:Mht.get(n)||null,additionalArgs:\"\"}}return{program:a[1],additionalArgs:a[2]}}async function Yht(e,t,r,s,a){let n=a.preserveSymlinks?\"--preserve-symlinks\":\"\",c=[r.additionalArgs,n].filter(f=>f).join(\" \");return a=Object.assign({},a,{prog:r.program,args:c}),await qht(t,a),await a.fs_.writeFile(t,s(e,t,a),\"utf8\"),Wht(t,a)}function Kht(e,t,r){let a=Wc.relative(Wc.dirname(t),e).split(\"/\").join(\"\\\\\"),n=Wc.isAbsolute(a)?`\"${a}\"`:`\"%~dp0\\\\${a}\"`,c,f=r.prog,p=r.args||\"\",h=GW(r.nodePath).win32;f?(c=`\"%~dp0\\\\${f}.exe\"`,a=n):(f=n,p=\"\",a=\"\");let E=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",C=h?`@SET NODE_PATH=${h}\\r\n`:\"\";return c?C+=`@IF EXIST ${c} (\\r\n  ${c} ${p} ${a} ${E}%*\\r\n) ELSE (\\r\n  @SETLOCAL\\r\n  @SET PATHEXT=%PATHEXT:;.JS;=;%\\r\n  ${f} ${p} ${a} ${E}%*\\r\n)\\r\n`:C+=`@${f} ${p} ${a} ${E}%*\\r\n`,C}function Jht(e,t,r){let s=Wc.relative(Wc.dirname(t),e),a=r.prog&&r.prog.split(\"\\\\\").join(\"/\"),n;s=s.split(\"\\\\\").join(\"/\");let c=Wc.isAbsolute(s)?`\"${s}\"`:`\"$basedir/${s}\"`,f=r.args||\"\",p=GW(r.nodePath).posix;a?(n=`\"$basedir/${r.prog}\"`,s=c):(a=c,f=\"\",s=\"\");let h=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",E=`#!/bin/sh\nbasedir=$(dirname \"$(echo \"$0\" | sed -e 's,\\\\\\\\,/,g')\")\n\ncase \\`uname\\` in\n    *CYGWIN*) basedir=\\`cygpath -w \"$basedir\"\\`;;\nesac\n\n`,C=r.nodePath?`export NODE_PATH=\"${p}\"\n`:\"\";return n?E+=`${C}if [ -x ${n} ]; then\n  exec ${n} ${f} ${s} ${h}\"$@\"\nelse\n  exec ${a} ${f} ${s} ${h}\"$@\"\nfi\n`:E+=`${C}${a} ${f} ${s} ${h}\"$@\"\nexit $?\n`,E}function zht(e,t,r){let s=Wc.relative(Wc.dirname(t),e),a=r.prog&&r.prog.split(\"\\\\\").join(\"/\"),n=a&&`\"${a}$exe\"`,c;s=s.split(\"\\\\\").join(\"/\");let f=Wc.isAbsolute(s)?`\"${s}\"`:`\"$basedir/${s}\"`,p=r.args||\"\",h=GW(r.nodePath),E=h.win32,C=h.posix;n?(c=`\"$basedir/${r.prog}$exe\"`,s=f):(n=f,p=\"\",s=\"\");let S=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",x=`#!/usr/bin/env pwsh\n$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\n\n$exe=\"\"\n${r.nodePath?`$env_node_path=$env:NODE_PATH\n$env:NODE_PATH=\"${E}\"\n`:\"\"}if ($PSVersionTable.PSVersion -lt \"6.0\" -or $IsWindows) {\n  # Fix case when both the Windows and Linux builds of Node\n  # are installed in the same directory\n  $exe=\".exe\"\n}`;return r.nodePath&&(x+=` else {\n  $env:NODE_PATH=\"${C}\"\n}`),c?x+=`\n$ret=0\nif (Test-Path ${c}) {\n  # Support pipeline input\n  if ($MyInvocation.ExpectingInput) {\n    $input | & ${c} ${p} ${s} ${S}$args\n  } else {\n    & ${c} ${p} ${s} ${S}$args\n  }\n  $ret=$LASTEXITCODE\n} else {\n  # Support pipeline input\n  if ($MyInvocation.ExpectingInput) {\n    $input | & ${n} ${p} ${s} ${S}$args\n  } else {\n    & ${n} ${p} ${s} ${S}$args\n  }\n  $ret=$LASTEXITCODE\n}\n${r.nodePath?`$env:NODE_PATH=$env_node_path\n`:\"\"}exit $ret\n`:x+=`\n# Support pipeline input\nif ($MyInvocation.ExpectingInput) {\n  $input | & ${n} ${p} ${s} ${S}$args\n} else {\n  & ${n} ${p} ${s} ${S}$args\n}\n${r.nodePath?`$env:NODE_PATH=$env_node_path\n`:\"\"}exit $LASTEXITCODE\n`,x}function Zht(e,t){return t.fs_.chmod(e,493)}function GW(e){if(!e)return{win32:\"\",posix:\"\"};let t=typeof e==\"string\"?e.split(Wc.delimiter):Array.from(e),r={};for(let s=0;s<t.length;s++){let a=t[s].split(\"/\").join(\"\\\\\"),n=E1e()?t[s].split(\"\\\\\").join(\"/\").replace(/^([^:\\\\/]*):/,(c,f)=>`/mnt/${f.toLowerCase()}`):t[s];r.win32=r.win32?`${r.win32};${a}`:a,r.posix=r.posix?`${r.posix}:${n}`:n,r[s]={win32:a,posix:n}}return r}C1e.exports=jW});var nV=G((GXt,H1e)=>{H1e.exports=Ie(\"stream\")});var W1e=G((qXt,q1e)=>{\"use strict\";function j1e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,s)}return r}function Q0t(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?j1e(Object(r),!0).forEach(function(s){R0t(e,s,r[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):j1e(Object(r)).forEach(function(s){Object.defineProperty(e,s,Object.getOwnPropertyDescriptor(r,s))})}return e}function R0t(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function T0t(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function G1e(e,t){for(var r=0;r<t.length;r++){var s=t[r];s.enumerable=s.enumerable||!1,s.configurable=!0,\"value\"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}function F0t(e,t,r){return t&&G1e(e.prototype,t),r&&G1e(e,r),e}var N0t=Ie(\"buffer\"),ZF=N0t.Buffer,O0t=Ie(\"util\"),iV=O0t.inspect,L0t=iV&&iV.custom||\"inspect\";function M0t(e,t,r){ZF.prototype.copy.call(e,t,r)}q1e.exports=function(){function e(){T0t(this,e),this.head=null,this.tail=null,this.length=0}return F0t(e,[{key:\"push\",value:function(r){var s={data:r,next:null};this.length>0?this.tail.next=s:this.head=s,this.tail=s,++this.length}},{key:\"unshift\",value:function(r){var s={data:r,next:this.head};this.length===0&&(this.tail=s),this.head=s,++this.length}},{key:\"shift\",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:\"clear\",value:function(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function(r){if(this.length===0)return\"\";for(var s=this.head,a=\"\"+s.data;s=s.next;)a+=r+s.data;return a}},{key:\"concat\",value:function(r){if(this.length===0)return ZF.alloc(0);for(var s=ZF.allocUnsafe(r>>>0),a=this.head,n=0;a;)M0t(a.data,s,n),n+=a.data.length,a=a.next;return s}},{key:\"consume\",value:function(r,s){var a;return r<this.head.data.length?(a=this.head.data.slice(0,r),this.head.data=this.head.data.slice(r)):r===this.head.data.length?a=this.shift():a=s?this._getString(r):this._getBuffer(r),a}},{key:\"first\",value:function(){return this.head.data}},{key:\"_getString\",value:function(r){var s=this.head,a=1,n=s.data;for(r-=n.length;s=s.next;){var c=s.data,f=r>c.length?c.length:r;if(f===c.length?n+=c:n+=c.slice(0,r),r-=f,r===0){f===c.length?(++a,s.next?this.head=s.next:this.head=this.tail=null):(this.head=s,s.data=c.slice(f));break}++a}return this.length-=a,n}},{key:\"_getBuffer\",value:function(r){var s=ZF.allocUnsafe(r),a=this.head,n=1;for(a.data.copy(s),r-=a.data.length;a=a.next;){var c=a.data,f=r>c.length?c.length:r;if(c.copy(s,s.length-r,0,f),r-=f,r===0){f===c.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=c.slice(f));break}++n}return this.length-=n,s}},{key:L0t,value:function(r,s){return iV(this,Q0t({},s,{depth:0,customInspect:!1}))}}]),e}()});var oV=G((WXt,Y1e)=>{\"use strict\";function U0t(e,t){var r=this,s=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return s||a?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(sV,this,e)):process.nextTick(sV,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(n){!t&&n?r._writableState?r._writableState.errorEmitted?process.nextTick(XF,r):(r._writableState.errorEmitted=!0,process.nextTick(V1e,r,n)):process.nextTick(V1e,r,n):t?(process.nextTick(XF,r),t(n)):process.nextTick(XF,r)}),this)}function V1e(e,t){sV(e,t),XF(e)}function XF(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit(\"close\")}function _0t(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function sV(e,t){e.emit(\"error\",t)}function H0t(e,t){var r=e._readableState,s=e._writableState;r&&r.autoDestroy||s&&s.autoDestroy?e.destroy(t):e.emit(\"error\",t)}Y1e.exports={destroy:U0t,undestroy:_0t,errorOrDestroy:H0t}});var og=G((VXt,z1e)=>{\"use strict\";var J1e={};function Yc(e,t,r){r||(r=Error);function s(n,c,f){return typeof t==\"string\"?t:t(n,c,f)}class a extends r{constructor(c,f,p){super(s(c,f,p))}}a.prototype.name=r.name,a.prototype.code=e,J1e[e]=a}function K1e(e,t){if(Array.isArray(e)){let r=e.length;return e=e.map(s=>String(s)),r>2?`one of ${t} ${e.slice(0,r-1).join(\", \")}, or `+e[r-1]:r===2?`one of ${t} ${e[0]} or ${e[1]}`:`of ${t} ${e[0]}`}else return`of ${t} ${String(e)}`}function j0t(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function G0t(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function q0t(e,t,r){return typeof r!=\"number\"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}Yc(\"ERR_INVALID_OPT_VALUE\",function(e,t){return'The value \"'+t+'\" is invalid for option \"'+e+'\"'},TypeError);Yc(\"ERR_INVALID_ARG_TYPE\",function(e,t,r){let s;typeof t==\"string\"&&j0t(t,\"not \")?(s=\"must not be\",t=t.replace(/^not /,\"\")):s=\"must be\";let a;if(G0t(e,\" argument\"))a=`The ${e} ${s} ${K1e(t,\"type\")}`;else{let n=q0t(e,\".\")?\"property\":\"argument\";a=`The \"${e}\" ${n} ${s} ${K1e(t,\"type\")}`}return a+=`. Received type ${typeof r}`,a},TypeError);Yc(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\");Yc(\"ERR_METHOD_NOT_IMPLEMENTED\",function(e){return\"The \"+e+\" method is not implemented\"});Yc(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\");Yc(\"ERR_STREAM_DESTROYED\",function(e){return\"Cannot call \"+e+\" after a stream was destroyed\"});Yc(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\");Yc(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\");Yc(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\");Yc(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError);Yc(\"ERR_UNKNOWN_ENCODING\",function(e){return\"Unknown encoding: \"+e},TypeError);Yc(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\");z1e.exports.codes=J1e});var aV=G((YXt,Z1e)=>{\"use strict\";var W0t=og().codes.ERR_INVALID_OPT_VALUE;function V0t(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function Y0t(e,t,r,s){var a=V0t(t,s,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=s?r:\"highWaterMark\";throw new W0t(n,a)}return Math.floor(a)}return e.objectMode?16:16*1024}Z1e.exports={getHighWaterMark:Y0t}});var X1e=G((KXt,lV)=>{typeof Object.create==\"function\"?lV.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:lV.exports=function(t,r){if(r){t.super_=r;var s=function(){};s.prototype=r.prototype,t.prototype=new s,t.prototype.constructor=t}}});var ag=G((JXt,uV)=>{try{if(cV=Ie(\"util\"),typeof cV.inherits!=\"function\")throw\"\";uV.exports=cV.inherits}catch{uV.exports=X1e()}var cV});var eBe=G((zXt,$1e)=>{$1e.exports=Ie(\"util\").deprecate});var pV=G((ZXt,oBe)=>{\"use strict\";oBe.exports=Yi;function rBe(e){var t=this;this.next=null,this.entry=null,this.finish=function(){Igt(t,e)}}var vw;Yi.WritableState=XD;var K0t={deprecate:eBe()},nBe=nV(),eN=Ie(\"buffer\").Buffer,J0t=global.Uint8Array||function(){};function z0t(e){return eN.from(e)}function Z0t(e){return eN.isBuffer(e)||e instanceof J0t}var AV=oV(),X0t=aV(),$0t=X0t.getHighWaterMark,lg=og().codes,egt=lg.ERR_INVALID_ARG_TYPE,tgt=lg.ERR_METHOD_NOT_IMPLEMENTED,rgt=lg.ERR_MULTIPLE_CALLBACK,ngt=lg.ERR_STREAM_CANNOT_PIPE,igt=lg.ERR_STREAM_DESTROYED,sgt=lg.ERR_STREAM_NULL_VALUES,ogt=lg.ERR_STREAM_WRITE_AFTER_END,agt=lg.ERR_UNKNOWN_ENCODING,Sw=AV.errorOrDestroy;ag()(Yi,nBe);function lgt(){}function XD(e,t,r){vw=vw||Jm(),e=e||{},typeof r!=\"boolean\"&&(r=t instanceof vw),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=$0t(this,e,\"writableHighWaterMark\",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=e.decodeStrings===!1;this.decodeStrings=!s,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){ggt(t,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new rBe(this)}XD.prototype.getBuffer=function(){for(var t=this.bufferedRequest,r=[];t;)r.push(t),t=t.next;return r};(function(){try{Object.defineProperty(XD.prototype,\"buffer\",{get:K0t.deprecate(function(){return this.getBuffer()},\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch{}})();var $F;typeof Symbol==\"function\"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]==\"function\"?($F=Function.prototype[Symbol.hasInstance],Object.defineProperty(Yi,Symbol.hasInstance,{value:function(t){return $F.call(this,t)?!0:this!==Yi?!1:t&&t._writableState instanceof XD}})):$F=function(t){return t instanceof this};function Yi(e){vw=vw||Jm();var t=this instanceof vw;if(!t&&!$F.call(Yi,this))return new Yi(e);this._writableState=new XD(e,this,t),this.writable=!0,e&&(typeof e.write==\"function\"&&(this._write=e.write),typeof e.writev==\"function\"&&(this._writev=e.writev),typeof e.destroy==\"function\"&&(this._destroy=e.destroy),typeof e.final==\"function\"&&(this._final=e.final)),nBe.call(this)}Yi.prototype.pipe=function(){Sw(this,new ngt)};function cgt(e,t){var r=new ogt;Sw(e,r),process.nextTick(t,r)}function ugt(e,t,r,s){var a;return r===null?a=new sgt:typeof r!=\"string\"&&!t.objectMode&&(a=new egt(\"chunk\",[\"string\",\"Buffer\"],r)),a?(Sw(e,a),process.nextTick(s,a),!1):!0}Yi.prototype.write=function(e,t,r){var s=this._writableState,a=!1,n=!s.objectMode&&Z0t(e);return n&&!eN.isBuffer(e)&&(e=z0t(e)),typeof t==\"function\"&&(r=t,t=null),n?t=\"buffer\":t||(t=s.defaultEncoding),typeof r!=\"function\"&&(r=lgt),s.ending?cgt(this,r):(n||ugt(this,s,e,r))&&(s.pendingcb++,a=Agt(this,s,n,e,t,r)),a};Yi.prototype.cork=function(){this._writableState.corked++};Yi.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest&&iBe(this,e))};Yi.prototype.setDefaultEncoding=function(t){if(typeof t==\"string\"&&(t=t.toLowerCase()),!([\"hex\",\"utf8\",\"utf-8\",\"ascii\",\"binary\",\"base64\",\"ucs2\",\"ucs-2\",\"utf16le\",\"utf-16le\",\"raw\"].indexOf((t+\"\").toLowerCase())>-1))throw new agt(t);return this._writableState.defaultEncoding=t,this};Object.defineProperty(Yi.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function fgt(e,t,r){return!e.objectMode&&e.decodeStrings!==!1&&typeof t==\"string\"&&(t=eN.from(t,r)),t}Object.defineProperty(Yi.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function Agt(e,t,r,s,a,n){if(!r){var c=fgt(t,s,a);s!==c&&(r=!0,a=\"buffer\",s=c)}var f=t.objectMode?1:s.length;t.length+=f;var p=t.length<t.highWaterMark;if(p||(t.needDrain=!0),t.writing||t.corked){var h=t.lastBufferedRequest;t.lastBufferedRequest={chunk:s,encoding:a,isBuf:r,callback:n,next:null},h?h.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else fV(e,t,!1,f,s,a,n);return p}function fV(e,t,r,s,a,n,c){t.writelen=s,t.writecb=c,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new igt(\"write\")):r?e._writev(a,t.onwrite):e._write(a,n,t.onwrite),t.sync=!1}function pgt(e,t,r,s,a){--t.pendingcb,r?(process.nextTick(a,s),process.nextTick(ZD,e,t),e._writableState.errorEmitted=!0,Sw(e,s)):(a(s),e._writableState.errorEmitted=!0,Sw(e,s),ZD(e,t))}function hgt(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}function ggt(e,t){var r=e._writableState,s=r.sync,a=r.writecb;if(typeof a!=\"function\")throw new rgt;if(hgt(r),t)pgt(e,r,s,t,a);else{var n=sBe(r)||e.destroyed;!n&&!r.corked&&!r.bufferProcessing&&r.bufferedRequest&&iBe(e,r),s?process.nextTick(tBe,e,r,n,a):tBe(e,r,n,a)}}function tBe(e,t,r,s){r||dgt(e,t),t.pendingcb--,s(),ZD(e,t)}function dgt(e,t){t.length===0&&t.needDrain&&(t.needDrain=!1,e.emit(\"drain\"))}function iBe(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var s=t.bufferedRequestCount,a=new Array(s),n=t.corkedRequestsFree;n.entry=r;for(var c=0,f=!0;r;)a[c]=r,r.isBuf||(f=!1),r=r.next,c+=1;a.allBuffers=f,fV(e,t,!0,t.length,a,\"\",n.finish),t.pendingcb++,t.lastBufferedRequest=null,n.next?(t.corkedRequestsFree=n.next,n.next=null):t.corkedRequestsFree=new rBe(t),t.bufferedRequestCount=0}else{for(;r;){var p=r.chunk,h=r.encoding,E=r.callback,C=t.objectMode?1:p.length;if(fV(e,t,!1,C,p,h,E),r=r.next,t.bufferedRequestCount--,t.writing)break}r===null&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}Yi.prototype._write=function(e,t,r){r(new tgt(\"_write()\"))};Yi.prototype._writev=null;Yi.prototype.end=function(e,t,r){var s=this._writableState;return typeof e==\"function\"?(r=e,e=null,t=null):typeof t==\"function\"&&(r=t,t=null),e!=null&&this.write(e,t),s.corked&&(s.corked=1,this.uncork()),s.ending||Egt(this,s,r),this};Object.defineProperty(Yi.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}});function sBe(e){return e.ending&&e.length===0&&e.bufferedRequest===null&&!e.finished&&!e.writing}function mgt(e,t){e._final(function(r){t.pendingcb--,r&&Sw(e,r),t.prefinished=!0,e.emit(\"prefinish\"),ZD(e,t)})}function ygt(e,t){!t.prefinished&&!t.finalCalled&&(typeof e._final==\"function\"&&!t.destroyed?(t.pendingcb++,t.finalCalled=!0,process.nextTick(mgt,e,t)):(t.prefinished=!0,e.emit(\"prefinish\")))}function ZD(e,t){var r=sBe(t);if(r&&(ygt(e,t),t.pendingcb===0&&(t.finished=!0,e.emit(\"finish\"),t.autoDestroy))){var s=e._readableState;(!s||s.autoDestroy&&s.endEmitted)&&e.destroy()}return r}function Egt(e,t,r){t.ending=!0,ZD(e,t),r&&(t.finished?process.nextTick(r):e.once(\"finish\",r)),t.ended=!0,e.writable=!1}function Igt(e,t,r){var s=e.entry;for(e.entry=null;s;){var a=s.callback;t.pendingcb--,a(r),s=s.next}t.corkedRequestsFree.next=e}Object.defineProperty(Yi.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}});Yi.prototype.destroy=AV.destroy;Yi.prototype._undestroy=AV.undestroy;Yi.prototype._destroy=function(e,t){t(e)}});var Jm=G((XXt,lBe)=>{\"use strict\";var Cgt=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};lBe.exports=mA;var aBe=dV(),gV=pV();ag()(mA,aBe);for(hV=Cgt(gV.prototype),tN=0;tN<hV.length;tN++)rN=hV[tN],mA.prototype[rN]||(mA.prototype[rN]=gV.prototype[rN]);var hV,rN,tN;function mA(e){if(!(this instanceof mA))return new mA(e);aBe.call(this,e),gV.call(this,e),this.allowHalfOpen=!0,e&&(e.readable===!1&&(this.readable=!1),e.writable===!1&&(this.writable=!1),e.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once(\"end\",wgt)))}Object.defineProperty(mA.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});Object.defineProperty(mA.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});Object.defineProperty(mA.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}});function wgt(){this._writableState.ended||process.nextTick(Bgt,this)}function Bgt(e){e.end()}Object.defineProperty(mA.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(t){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=t,this._writableState.destroyed=t)}})});var fBe=G((mV,uBe)=>{var nN=Ie(\"buffer\"),sh=nN.Buffer;function cBe(e,t){for(var r in e)t[r]=e[r]}sh.from&&sh.alloc&&sh.allocUnsafe&&sh.allocUnsafeSlow?uBe.exports=nN:(cBe(nN,mV),mV.Buffer=Dw);function Dw(e,t,r){return sh(e,t,r)}cBe(sh,Dw);Dw.from=function(e,t,r){if(typeof e==\"number\")throw new TypeError(\"Argument must not be a number\");return sh(e,t,r)};Dw.alloc=function(e,t,r){if(typeof e!=\"number\")throw new TypeError(\"Argument must be a number\");var s=sh(e);return t!==void 0?typeof r==\"string\"?s.fill(t,r):s.fill(t):s.fill(0),s};Dw.allocUnsafe=function(e){if(typeof e!=\"number\")throw new TypeError(\"Argument must be a number\");return sh(e)};Dw.allocUnsafeSlow=function(e){if(typeof e!=\"number\")throw new TypeError(\"Argument must be a number\");return nN.SlowBuffer(e)}});var IV=G(pBe=>{\"use strict\";var EV=fBe().Buffer,ABe=EV.isEncoding||function(e){switch(e=\"\"+e,e&&e.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function vgt(e){if(!e)return\"utf8\";for(var t;;)switch(e){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return e;default:if(t)return;e=(\"\"+e).toLowerCase(),t=!0}}function Sgt(e){var t=vgt(e);if(typeof t!=\"string\"&&(EV.isEncoding===ABe||!ABe(e)))throw new Error(\"Unknown encoding: \"+e);return t||e}pBe.StringDecoder=$D;function $D(e){this.encoding=Sgt(e);var t;switch(this.encoding){case\"utf16le\":this.text=Qgt,this.end=Rgt,t=4;break;case\"utf8\":this.fillLast=Pgt,t=4;break;case\"base64\":this.text=Tgt,this.end=Fgt,t=3;break;default:this.write=Ngt,this.end=Ogt;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=EV.allocUnsafe(t)}$D.prototype.write=function(e){if(e.length===0)return\"\";var t,r;if(this.lastNeed){if(t=this.fillLast(e),t===void 0)return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r<e.length?t?t+this.text(e,r):this.text(e,r):t||\"\"};$D.prototype.end=kgt;$D.prototype.text=xgt;$D.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length};function yV(e){return e<=127?0:e>>5===6?2:e>>4===14?3:e>>3===30?4:e>>6===2?-1:-2}function Dgt(e,t,r){var s=t.length-1;if(s<r)return 0;var a=yV(t[s]);return a>=0?(a>0&&(e.lastNeed=a-1),a):--s<r||a===-2?0:(a=yV(t[s]),a>=0?(a>0&&(e.lastNeed=a-2),a):--s<r||a===-2?0:(a=yV(t[s]),a>=0?(a>0&&(a===2?a=0:e.lastNeed=a-3),a):0))}function bgt(e,t,r){if((t[0]&192)!==128)return e.lastNeed=0,\"\\uFFFD\";if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128)return e.lastNeed=1,\"\\uFFFD\";if(e.lastNeed>2&&t.length>2&&(t[2]&192)!==128)return e.lastNeed=2,\"\\uFFFD\"}}function Pgt(e){var t=this.lastTotal-this.lastNeed,r=bgt(this,e,t);if(r!==void 0)return r;if(this.lastNeed<=e.length)return e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length}function xgt(e,t){var r=Dgt(this,e,t);if(!this.lastNeed)return e.toString(\"utf8\",t);this.lastTotal=r;var s=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,s),e.toString(\"utf8\",t,s)}function kgt(e){var t=e&&e.length?this.write(e):\"\";return this.lastNeed?t+\"\\uFFFD\":t}function Qgt(e,t){if((e.length-t)%2===0){var r=e.toString(\"utf16le\",t);if(r){var s=r.charCodeAt(r.length-1);if(s>=55296&&s<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString(\"utf16le\",t,e.length-1)}function Rgt(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString(\"utf16le\",0,r)}return t}function Tgt(e,t){var r=(e.length-t)%3;return r===0?e.toString(\"base64\",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString(\"base64\",t,e.length-r))}function Fgt(e){var t=e&&e.length?this.write(e):\"\";return this.lastNeed?t+this.lastChar.toString(\"base64\",0,3-this.lastNeed):t}function Ngt(e){return e.toString(this.encoding)}function Ogt(e){return e&&e.length?this.write(e):\"\"}});var iN=G((e$t,dBe)=>{\"use strict\";var hBe=og().codes.ERR_STREAM_PREMATURE_CLOSE;function Lgt(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,s=new Array(r),a=0;a<r;a++)s[a]=arguments[a];e.apply(this,s)}}}function Mgt(){}function Ugt(e){return e.setHeader&&typeof e.abort==\"function\"}function gBe(e,t,r){if(typeof t==\"function\")return gBe(e,null,t);t||(t={}),r=Lgt(r||Mgt);var s=t.readable||t.readable!==!1&&e.readable,a=t.writable||t.writable!==!1&&e.writable,n=function(){e.writable||f()},c=e._writableState&&e._writableState.finished,f=function(){a=!1,c=!0,s||r.call(e)},p=e._readableState&&e._readableState.endEmitted,h=function(){s=!1,p=!0,a||r.call(e)},E=function(I){r.call(e,I)},C=function(){var I;if(s&&!p)return(!e._readableState||!e._readableState.ended)&&(I=new hBe),r.call(e,I);if(a&&!c)return(!e._writableState||!e._writableState.ended)&&(I=new hBe),r.call(e,I)},S=function(){e.req.on(\"finish\",f)};return Ugt(e)?(e.on(\"complete\",f),e.on(\"abort\",C),e.req?S():e.on(\"request\",S)):a&&!e._writableState&&(e.on(\"end\",n),e.on(\"close\",n)),e.on(\"end\",h),e.on(\"finish\",f),t.error!==!1&&e.on(\"error\",E),e.on(\"close\",C),function(){e.removeListener(\"complete\",f),e.removeListener(\"abort\",C),e.removeListener(\"request\",S),e.req&&e.req.removeListener(\"finish\",f),e.removeListener(\"end\",n),e.removeListener(\"close\",n),e.removeListener(\"finish\",f),e.removeListener(\"end\",h),e.removeListener(\"error\",E),e.removeListener(\"close\",C)}}dBe.exports=gBe});var yBe=G((t$t,mBe)=>{\"use strict\";var sN;function cg(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var _gt=iN(),ug=Symbol(\"lastResolve\"),zm=Symbol(\"lastReject\"),eb=Symbol(\"error\"),oN=Symbol(\"ended\"),Zm=Symbol(\"lastPromise\"),CV=Symbol(\"handlePromise\"),Xm=Symbol(\"stream\");function fg(e,t){return{value:e,done:t}}function Hgt(e){var t=e[ug];if(t!==null){var r=e[Xm].read();r!==null&&(e[Zm]=null,e[ug]=null,e[zm]=null,t(fg(r,!1)))}}function jgt(e){process.nextTick(Hgt,e)}function Ggt(e,t){return function(r,s){e.then(function(){if(t[oN]){r(fg(void 0,!0));return}t[CV](r,s)},s)}}var qgt=Object.getPrototypeOf(function(){}),Wgt=Object.setPrototypeOf((sN={get stream(){return this[Xm]},next:function(){var t=this,r=this[eb];if(r!==null)return Promise.reject(r);if(this[oN])return Promise.resolve(fg(void 0,!0));if(this[Xm].destroyed)return new Promise(function(c,f){process.nextTick(function(){t[eb]?f(t[eb]):c(fg(void 0,!0))})});var s=this[Zm],a;if(s)a=new Promise(Ggt(s,this));else{var n=this[Xm].read();if(n!==null)return Promise.resolve(fg(n,!1));a=new Promise(this[CV])}return this[Zm]=a,a}},cg(sN,Symbol.asyncIterator,function(){return this}),cg(sN,\"return\",function(){var t=this;return new Promise(function(r,s){t[Xm].destroy(null,function(a){if(a){s(a);return}r(fg(void 0,!0))})})}),sN),qgt),Vgt=function(t){var r,s=Object.create(Wgt,(r={},cg(r,Xm,{value:t,writable:!0}),cg(r,ug,{value:null,writable:!0}),cg(r,zm,{value:null,writable:!0}),cg(r,eb,{value:null,writable:!0}),cg(r,oN,{value:t._readableState.endEmitted,writable:!0}),cg(r,CV,{value:function(n,c){var f=s[Xm].read();f?(s[Zm]=null,s[ug]=null,s[zm]=null,n(fg(f,!1))):(s[ug]=n,s[zm]=c)},writable:!0}),r));return s[Zm]=null,_gt(t,function(a){if(a&&a.code!==\"ERR_STREAM_PREMATURE_CLOSE\"){var n=s[zm];n!==null&&(s[Zm]=null,s[ug]=null,s[zm]=null,n(a)),s[eb]=a;return}var c=s[ug];c!==null&&(s[Zm]=null,s[ug]=null,s[zm]=null,c(fg(void 0,!0))),s[oN]=!0}),t.on(\"readable\",jgt.bind(null,s)),s};mBe.exports=Vgt});var wBe=G((r$t,CBe)=>{\"use strict\";function EBe(e,t,r,s,a,n,c){try{var f=e[n](c),p=f.value}catch(h){r(h);return}f.done?t(p):Promise.resolve(p).then(s,a)}function Ygt(e){return function(){var t=this,r=arguments;return new Promise(function(s,a){var n=e.apply(t,r);function c(p){EBe(n,s,a,c,f,\"next\",p)}function f(p){EBe(n,s,a,c,f,\"throw\",p)}c(void 0)})}}function IBe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,s)}return r}function Kgt(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?IBe(Object(r),!0).forEach(function(s){Jgt(e,s,r[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):IBe(Object(r)).forEach(function(s){Object.defineProperty(e,s,Object.getOwnPropertyDescriptor(r,s))})}return e}function Jgt(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var zgt=og().codes.ERR_INVALID_ARG_TYPE;function Zgt(e,t,r){var s;if(t&&typeof t.next==\"function\")s=t;else if(t&&t[Symbol.asyncIterator])s=t[Symbol.asyncIterator]();else if(t&&t[Symbol.iterator])s=t[Symbol.iterator]();else throw new zgt(\"iterable\",[\"Iterable\"],t);var a=new e(Kgt({objectMode:!0},r)),n=!1;a._read=function(){n||(n=!0,c())};function c(){return f.apply(this,arguments)}function f(){return f=Ygt(function*(){try{var p=yield s.next(),h=p.value,E=p.done;E?a.push(null):a.push(yield h)?c():n=!1}catch(C){a.destroy(C)}}),f.apply(this,arguments)}return a}CBe.exports=Zgt});var dV=G((i$t,RBe)=>{\"use strict\";RBe.exports=kn;var bw;kn.ReadableState=DBe;var n$t=Ie(\"events\").EventEmitter,SBe=function(t,r){return t.listeners(r).length},rb=nV(),aN=Ie(\"buffer\").Buffer,Xgt=global.Uint8Array||function(){};function $gt(e){return aN.from(e)}function edt(e){return aN.isBuffer(e)||e instanceof Xgt}var wV=Ie(\"util\"),un;wV&&wV.debuglog?un=wV.debuglog(\"stream\"):un=function(){};var tdt=W1e(),xV=oV(),rdt=aV(),ndt=rdt.getHighWaterMark,lN=og().codes,idt=lN.ERR_INVALID_ARG_TYPE,sdt=lN.ERR_STREAM_PUSH_AFTER_EOF,odt=lN.ERR_METHOD_NOT_IMPLEMENTED,adt=lN.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Pw,BV,vV;ag()(kn,rb);var tb=xV.errorOrDestroy,SV=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function ldt(e,t,r){if(typeof e.prependListener==\"function\")return e.prependListener(t,r);!e._events||!e._events[t]?e.on(t,r):Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]}function DBe(e,t,r){bw=bw||Jm(),e=e||{},typeof r!=\"boolean\"&&(r=t instanceof bw),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=ndt(this,e,\"readableHighWaterMark\",r),this.buffer=new tdt,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(Pw||(Pw=IV().StringDecoder),this.decoder=new Pw(e.encoding),this.encoding=e.encoding)}function kn(e){if(bw=bw||Jm(),!(this instanceof kn))return new kn(e);var t=this instanceof bw;this._readableState=new DBe(e,this,t),this.readable=!0,e&&(typeof e.read==\"function\"&&(this._read=e.read),typeof e.destroy==\"function\"&&(this._destroy=e.destroy)),rb.call(this)}Object.defineProperty(kn.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}});kn.prototype.destroy=xV.destroy;kn.prototype._undestroy=xV.undestroy;kn.prototype._destroy=function(e,t){t(e)};kn.prototype.push=function(e,t){var r=this._readableState,s;return r.objectMode?s=!0:typeof e==\"string\"&&(t=t||r.defaultEncoding,t!==r.encoding&&(e=aN.from(e,t),t=\"\"),s=!0),bBe(this,e,t,!1,s)};kn.prototype.unshift=function(e){return bBe(this,e,null,!0,!1)};function bBe(e,t,r,s,a){un(\"readableAddChunk\",t);var n=e._readableState;if(t===null)n.reading=!1,fdt(e,n);else{var c;if(a||(c=cdt(n,t)),c)tb(e,c);else if(n.objectMode||t&&t.length>0)if(typeof t!=\"string\"&&!n.objectMode&&Object.getPrototypeOf(t)!==aN.prototype&&(t=$gt(t)),s)n.endEmitted?tb(e,new adt):DV(e,n,t,!0);else if(n.ended)tb(e,new sdt);else{if(n.destroyed)return!1;n.reading=!1,n.decoder&&!r?(t=n.decoder.write(t),n.objectMode||t.length!==0?DV(e,n,t,!1):PV(e,n)):DV(e,n,t,!1)}else s||(n.reading=!1,PV(e,n))}return!n.ended&&(n.length<n.highWaterMark||n.length===0)}function DV(e,t,r,s){t.flowing&&t.length===0&&!t.sync?(t.awaitDrain=0,e.emit(\"data\",r)):(t.length+=t.objectMode?1:r.length,s?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&&cN(e)),PV(e,t)}function cdt(e,t){var r;return!edt(t)&&typeof t!=\"string\"&&t!==void 0&&!e.objectMode&&(r=new idt(\"chunk\",[\"string\",\"Buffer\",\"Uint8Array\"],t)),r}kn.prototype.isPaused=function(){return this._readableState.flowing===!1};kn.prototype.setEncoding=function(e){Pw||(Pw=IV().StringDecoder);var t=new Pw(e);this._readableState.decoder=t,this._readableState.encoding=this._readableState.decoder.encoding;for(var r=this._readableState.buffer.head,s=\"\";r!==null;)s+=t.write(r.data),r=r.next;return this._readableState.buffer.clear(),s!==\"\"&&this._readableState.buffer.push(s),this._readableState.length=s.length,this};var BBe=1073741824;function udt(e){return e>=BBe?e=BBe:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function vBe(e,t){return e<=0||t.length===0&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=udt(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}kn.prototype.read=function(e){un(\"read\",e),e=parseInt(e,10);var t=this._readableState,r=e;if(e!==0&&(t.emittedReadable=!1),e===0&&t.needReadable&&((t.highWaterMark!==0?t.length>=t.highWaterMark:t.length>0)||t.ended))return un(\"read: emitReadable\",t.length,t.ended),t.length===0&&t.ended?bV(this):cN(this),null;if(e=vBe(e,t),e===0&&t.ended)return t.length===0&&bV(this),null;var s=t.needReadable;un(\"need readable\",s),(t.length===0||t.length-e<t.highWaterMark)&&(s=!0,un(\"length less than watermark\",s)),t.ended||t.reading?(s=!1,un(\"reading or ended\",s)):s&&(un(\"do read\"),t.reading=!0,t.sync=!0,t.length===0&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(e=vBe(r,t)));var a;return e>0?a=kBe(e,t):a=null,a===null?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),t.length===0&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&bV(this)),a!==null&&this.emit(\"data\",a),a};function fdt(e,t){if(un(\"onEofChunk\"),!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?cN(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,PBe(e)))}}function cN(e){var t=e._readableState;un(\"emitReadable\",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(un(\"emitReadable\",t.flowing),t.emittedReadable=!0,process.nextTick(PBe,e))}function PBe(e){var t=e._readableState;un(\"emitReadable_\",t.destroyed,t.length,t.ended),!t.destroyed&&(t.length||t.ended)&&(e.emit(\"readable\"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,kV(e)}function PV(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(Adt,e,t))}function Adt(e,t){for(;!t.reading&&!t.ended&&(t.length<t.highWaterMark||t.flowing&&t.length===0);){var r=t.length;if(un(\"maybeReadMore read 0\"),e.read(0),r===t.length)break}t.readingMore=!1}kn.prototype._read=function(e){tb(this,new odt(\"_read()\"))};kn.prototype.pipe=function(e,t){var r=this,s=this._readableState;switch(s.pipesCount){case 0:s.pipes=e;break;case 1:s.pipes=[s.pipes,e];break;default:s.pipes.push(e);break}s.pipesCount+=1,un(\"pipe count=%d opts=%j\",s.pipesCount,t);var a=(!t||t.end!==!1)&&e!==process.stdout&&e!==process.stderr,n=a?f:T;s.endEmitted?process.nextTick(n):r.once(\"end\",n),e.on(\"unpipe\",c);function c(O,U){un(\"onunpipe\"),O===r&&U&&U.hasUnpiped===!1&&(U.hasUnpiped=!0,E())}function f(){un(\"onend\"),e.end()}var p=pdt(r);e.on(\"drain\",p);var h=!1;function E(){un(\"cleanup\"),e.removeListener(\"close\",x),e.removeListener(\"finish\",I),e.removeListener(\"drain\",p),e.removeListener(\"error\",S),e.removeListener(\"unpipe\",c),r.removeListener(\"end\",f),r.removeListener(\"end\",T),r.removeListener(\"data\",C),h=!0,s.awaitDrain&&(!e._writableState||e._writableState.needDrain)&&p()}r.on(\"data\",C);function C(O){un(\"ondata\");var U=e.write(O);un(\"dest.write\",U),U===!1&&((s.pipesCount===1&&s.pipes===e||s.pipesCount>1&&QBe(s.pipes,e)!==-1)&&!h&&(un(\"false write response, pause\",s.awaitDrain),s.awaitDrain++),r.pause())}function S(O){un(\"onerror\",O),T(),e.removeListener(\"error\",S),SBe(e,\"error\")===0&&tb(e,O)}ldt(e,\"error\",S);function x(){e.removeListener(\"finish\",I),T()}e.once(\"close\",x);function I(){un(\"onfinish\"),e.removeListener(\"close\",x),T()}e.once(\"finish\",I);function T(){un(\"unpipe\"),r.unpipe(e)}return e.emit(\"pipe\",r),s.flowing||(un(\"pipe resume\"),r.resume()),e};function pdt(e){return function(){var r=e._readableState;un(\"pipeOnDrain\",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&SBe(e,\"data\")&&(r.flowing=!0,kV(e))}}kn.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(t.pipesCount===0)return this;if(t.pipesCount===1)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit(\"unpipe\",this,r),this);if(!e){var s=t.pipes,a=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var n=0;n<a;n++)s[n].emit(\"unpipe\",this,{hasUnpiped:!1});return this}var c=QBe(t.pipes,e);return c===-1?this:(t.pipes.splice(c,1),t.pipesCount-=1,t.pipesCount===1&&(t.pipes=t.pipes[0]),e.emit(\"unpipe\",this,r),this)};kn.prototype.on=function(e,t){var r=rb.prototype.on.call(this,e,t),s=this._readableState;return e===\"data\"?(s.readableListening=this.listenerCount(\"readable\")>0,s.flowing!==!1&&this.resume()):e===\"readable\"&&!s.endEmitted&&!s.readableListening&&(s.readableListening=s.needReadable=!0,s.flowing=!1,s.emittedReadable=!1,un(\"on readable\",s.length,s.reading),s.length?cN(this):s.reading||process.nextTick(hdt,this)),r};kn.prototype.addListener=kn.prototype.on;kn.prototype.removeListener=function(e,t){var r=rb.prototype.removeListener.call(this,e,t);return e===\"readable\"&&process.nextTick(xBe,this),r};kn.prototype.removeAllListeners=function(e){var t=rb.prototype.removeAllListeners.apply(this,arguments);return(e===\"readable\"||e===void 0)&&process.nextTick(xBe,this),t};function xBe(e){var t=e._readableState;t.readableListening=e.listenerCount(\"readable\")>0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount(\"data\")>0&&e.resume()}function hdt(e){un(\"readable nexttick read 0\"),e.read(0)}kn.prototype.resume=function(){var e=this._readableState;return e.flowing||(un(\"resume\"),e.flowing=!e.readableListening,gdt(this,e)),e.paused=!1,this};function gdt(e,t){t.resumeScheduled||(t.resumeScheduled=!0,process.nextTick(ddt,e,t))}function ddt(e,t){un(\"resume\",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit(\"resume\"),kV(e),t.flowing&&!t.reading&&e.read(0)}kn.prototype.pause=function(){return un(\"call pause flowing=%j\",this._readableState.flowing),this._readableState.flowing!==!1&&(un(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this};function kV(e){var t=e._readableState;for(un(\"flow\",t.flowing);t.flowing&&e.read()!==null;);}kn.prototype.wrap=function(e){var t=this,r=this._readableState,s=!1;e.on(\"end\",function(){if(un(\"wrapped end\"),r.decoder&&!r.ended){var c=r.decoder.end();c&&c.length&&t.push(c)}t.push(null)}),e.on(\"data\",function(c){if(un(\"wrapped data\"),r.decoder&&(c=r.decoder.write(c)),!(r.objectMode&&c==null)&&!(!r.objectMode&&(!c||!c.length))){var f=t.push(c);f||(s=!0,e.pause())}});for(var a in e)this[a]===void 0&&typeof e[a]==\"function\"&&(this[a]=function(f){return function(){return e[f].apply(e,arguments)}}(a));for(var n=0;n<SV.length;n++)e.on(SV[n],this.emit.bind(this,SV[n]));return this._read=function(c){un(\"wrapped _read\",c),s&&(s=!1,e.resume())},this};typeof Symbol==\"function\"&&(kn.prototype[Symbol.asyncIterator]=function(){return BV===void 0&&(BV=yBe()),BV(this)});Object.defineProperty(kn.prototype,\"readableHighWaterMark\",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Object.defineProperty(kn.prototype,\"readableBuffer\",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(kn.prototype,\"readableFlowing\",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(t){this._readableState&&(this._readableState.flowing=t)}});kn._fromList=kBe;Object.defineProperty(kn.prototype,\"readableLength\",{enumerable:!1,get:function(){return this._readableState.length}});function kBe(e,t){if(t.length===0)return null;var r;return t.objectMode?r=t.buffer.shift():!e||e>=t.length?(t.decoder?r=t.buffer.join(\"\"):t.buffer.length===1?r=t.buffer.first():r=t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r}function bV(e){var t=e._readableState;un(\"endReadable\",t.endEmitted),t.endEmitted||(t.ended=!0,process.nextTick(mdt,t,e))}function mdt(e,t){if(un(\"endReadableNT\",e.endEmitted,e.length),!e.endEmitted&&e.length===0&&(e.endEmitted=!0,t.readable=!1,t.emit(\"end\"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}typeof Symbol==\"function\"&&(kn.from=function(e,t){return vV===void 0&&(vV=wBe()),vV(kn,e,t)});function QBe(e,t){for(var r=0,s=e.length;r<s;r++)if(e[r]===t)return r;return-1}});var QV=G((s$t,FBe)=>{\"use strict\";FBe.exports=oh;var uN=og().codes,ydt=uN.ERR_METHOD_NOT_IMPLEMENTED,Edt=uN.ERR_MULTIPLE_CALLBACK,Idt=uN.ERR_TRANSFORM_ALREADY_TRANSFORMING,Cdt=uN.ERR_TRANSFORM_WITH_LENGTH_0,fN=Jm();ag()(oh,fN);function wdt(e,t){var r=this._transformState;r.transforming=!1;var s=r.writecb;if(s===null)return this.emit(\"error\",new Edt);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),s(e);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function oh(e){if(!(this instanceof oh))return new oh(e);fN.call(this,e),this._transformState={afterTransform:wdt.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(typeof e.transform==\"function\"&&(this._transform=e.transform),typeof e.flush==\"function\"&&(this._flush=e.flush)),this.on(\"prefinish\",Bdt)}function Bdt(){var e=this;typeof this._flush==\"function\"&&!this._readableState.destroyed?this._flush(function(t,r){TBe(e,t,r)}):TBe(this,null,null)}oh.prototype.push=function(e,t){return this._transformState.needTransform=!1,fN.prototype.push.call(this,e,t)};oh.prototype._transform=function(e,t,r){r(new ydt(\"_transform()\"))};oh.prototype._write=function(e,t,r){var s=this._transformState;if(s.writecb=r,s.writechunk=e,s.writeencoding=t,!s.transforming){var a=this._readableState;(s.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};oh.prototype._read=function(e){var t=this._transformState;t.writechunk!==null&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0};oh.prototype._destroy=function(e,t){fN.prototype._destroy.call(this,e,function(r){t(r)})};function TBe(e,t,r){if(t)return e.emit(\"error\",t);if(r!=null&&e.push(r),e._writableState.length)throw new Cdt;if(e._transformState.transforming)throw new Idt;return e.push(null)}});var LBe=G((o$t,OBe)=>{\"use strict\";OBe.exports=nb;var NBe=QV();ag()(nb,NBe);function nb(e){if(!(this instanceof nb))return new nb(e);NBe.call(this,e)}nb.prototype._transform=function(e,t,r){r(null,e)}});var jBe=G((a$t,HBe)=>{\"use strict\";var RV;function vdt(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var _Be=og().codes,Sdt=_Be.ERR_MISSING_ARGS,Ddt=_Be.ERR_STREAM_DESTROYED;function MBe(e){if(e)throw e}function bdt(e){return e.setHeader&&typeof e.abort==\"function\"}function Pdt(e,t,r,s){s=vdt(s);var a=!1;e.on(\"close\",function(){a=!0}),RV===void 0&&(RV=iN()),RV(e,{readable:t,writable:r},function(c){if(c)return s(c);a=!0,s()});var n=!1;return function(c){if(!a&&!n){if(n=!0,bdt(e))return e.abort();if(typeof e.destroy==\"function\")return e.destroy();s(c||new Ddt(\"pipe\"))}}}function UBe(e){e()}function xdt(e,t){return e.pipe(t)}function kdt(e){return!e.length||typeof e[e.length-1]!=\"function\"?MBe:e.pop()}function Qdt(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var s=kdt(t);if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Sdt(\"streams\");var a,n=t.map(function(c,f){var p=f<t.length-1,h=f>0;return Pdt(c,p,h,function(E){a||(a=E),E&&n.forEach(UBe),!p&&(n.forEach(UBe),s(a))})});return t.reduce(xdt)}HBe.exports=Qdt});var xw=G((Kc,sb)=>{var ib=Ie(\"stream\");process.env.READABLE_STREAM===\"disable\"&&ib?(sb.exports=ib.Readable,Object.assign(sb.exports,ib),sb.exports.Stream=ib):(Kc=sb.exports=dV(),Kc.Stream=ib||Kc,Kc.Readable=Kc,Kc.Writable=pV(),Kc.Duplex=Jm(),Kc.Transform=QV(),Kc.PassThrough=LBe(),Kc.finished=iN(),Kc.pipeline=jBe())});var WBe=G((l$t,qBe)=>{\"use strict\";var{Buffer:ff}=Ie(\"buffer\"),GBe=Symbol.for(\"BufferList\");function wi(e){if(!(this instanceof wi))return new wi(e);wi._init.call(this,e)}wi._init=function(t){Object.defineProperty(this,GBe,{value:!0}),this._bufs=[],this.length=0,t&&this.append(t)};wi.prototype._new=function(t){return new wi(t)};wi.prototype._offset=function(t){if(t===0)return[0,0];let r=0;for(let s=0;s<this._bufs.length;s++){let a=r+this._bufs[s].length;if(t<a||s===this._bufs.length-1)return[s,t-r];r=a}};wi.prototype._reverseOffset=function(e){let t=e[0],r=e[1];for(let s=0;s<t;s++)r+=this._bufs[s].length;return r};wi.prototype.get=function(t){if(t>this.length||t<0)return;let r=this._offset(t);return this._bufs[r[0]][r[1]]};wi.prototype.slice=function(t,r){return typeof t==\"number\"&&t<0&&(t+=this.length),typeof r==\"number\"&&r<0&&(r+=this.length),this.copy(null,0,t,r)};wi.prototype.copy=function(t,r,s,a){if((typeof s!=\"number\"||s<0)&&(s=0),(typeof a!=\"number\"||a>this.length)&&(a=this.length),s>=this.length||a<=0)return t||ff.alloc(0);let n=!!t,c=this._offset(s),f=a-s,p=f,h=n&&r||0,E=c[1];if(s===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:ff.concat(this._bufs,this.length);for(let C=0;C<this._bufs.length;C++)this._bufs[C].copy(t,h),h+=this._bufs[C].length;return t}if(p<=this._bufs[c[0]].length-E)return n?this._bufs[c[0]].copy(t,r,E,E+p):this._bufs[c[0]].slice(E,E+p);n||(t=ff.allocUnsafe(f));for(let C=c[0];C<this._bufs.length;C++){let S=this._bufs[C].length-E;if(p>S)this._bufs[C].copy(t,h,E),h+=S;else{this._bufs[C].copy(t,h,E,E+p),h+=S;break}p-=S,E&&(E=0)}return t.length>h?t.slice(0,h):t};wi.prototype.shallowSlice=function(t,r){if(t=t||0,r=typeof r!=\"number\"?this.length:r,t<0&&(t+=this.length),r<0&&(r+=this.length),t===r)return this._new();let s=this._offset(t),a=this._offset(r),n=this._bufs.slice(s[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),s[1]!==0&&(n[0]=n[0].slice(s[1])),this._new(n)};wi.prototype.toString=function(t,r,s){return this.slice(r,s).toString(t)};wi.prototype.consume=function(t){if(t=Math.trunc(t),Number.isNaN(t)||t<=0)return this;for(;this._bufs.length;)if(t>=this._bufs[0].length)t-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(t),this.length-=t;break}return this};wi.prototype.duplicate=function(){let t=this._new();for(let r=0;r<this._bufs.length;r++)t.append(this._bufs[r]);return t};wi.prototype.append=function(t){if(t==null)return this;if(t.buffer)this._appendBuffer(ff.from(t.buffer,t.byteOffset,t.byteLength));else if(Array.isArray(t))for(let r=0;r<t.length;r++)this.append(t[r]);else if(this._isBufferList(t))for(let r=0;r<t._bufs.length;r++)this.append(t._bufs[r]);else typeof t==\"number\"&&(t=t.toString()),this._appendBuffer(ff.from(t));return this};wi.prototype._appendBuffer=function(t){this._bufs.push(t),this.length+=t.length};wi.prototype.indexOf=function(e,t,r){if(r===void 0&&typeof t==\"string\"&&(r=t,t=void 0),typeof e==\"function\"||Array.isArray(e))throw new TypeError('The \"value\" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof e==\"number\"?e=ff.from([e]):typeof e==\"string\"?e=ff.from(e,r):this._isBufferList(e)?e=e.slice():Array.isArray(e.buffer)?e=ff.from(e.buffer,e.byteOffset,e.byteLength):ff.isBuffer(e)||(e=ff.from(e)),t=Number(t||0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let s=this._offset(t),a=s[0],n=s[1];for(;a<this._bufs.length;a++){let c=this._bufs[a];for(;n<c.length;)if(c.length-n>=e.length){let p=c.indexOf(e,n);if(p!==-1)return this._reverseOffset([a,p]);n=c.length-e.length+1}else{let p=this._reverseOffset([a,n]);if(this._match(p,e))return p;n++}n=0}return-1};wi.prototype._match=function(e,t){if(this.length-e<t.length)return!1;for(let r=0;r<t.length;r++)if(this.get(e+r)!==t[r])return!1;return!0};(function(){let e={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(let t in e)(function(r){e[r]===null?wi.prototype[r]=function(s,a){return this.slice(s,s+a)[r](0,a)}:wi.prototype[r]=function(s=0){return this.slice(s,s+e[r])[r](0)}})(t)})();wi.prototype._isBufferList=function(t){return t instanceof wi||wi.isBufferList(t)};wi.isBufferList=function(t){return t!=null&&t[GBe]};qBe.exports=wi});var VBe=G((c$t,AN)=>{\"use strict\";var TV=xw().Duplex,Rdt=ag(),ob=WBe();function oa(e){if(!(this instanceof oa))return new oa(e);if(typeof e==\"function\"){this._callback=e;let t=function(s){this._callback&&(this._callback(s),this._callback=null)}.bind(this);this.on(\"pipe\",function(s){s.on(\"error\",t)}),this.on(\"unpipe\",function(s){s.removeListener(\"error\",t)}),e=null}ob._init.call(this,e),TV.call(this)}Rdt(oa,TV);Object.assign(oa.prototype,ob.prototype);oa.prototype._new=function(t){return new oa(t)};oa.prototype._write=function(t,r,s){this._appendBuffer(t),typeof s==\"function\"&&s()};oa.prototype._read=function(t){if(!this.length)return this.push(null);t=Math.min(t,this.length),this.push(this.slice(0,t)),this.consume(t)};oa.prototype.end=function(t){TV.prototype.end.call(this,t),this._callback&&(this._callback(null,this.slice()),this._callback=null)};oa.prototype._destroy=function(t,r){this._bufs.length=0,this.length=0,r(t)};oa.prototype._isBufferList=function(t){return t instanceof oa||t instanceof ob||oa.isBufferList(t)};oa.isBufferList=ob.isBufferList;AN.exports=oa;AN.exports.BufferListStream=oa;AN.exports.BufferList=ob});var OV=G(Qw=>{var Tdt=Buffer.alloc,Fdt=\"0000000000000000000\",Ndt=\"7777777777777777777\",YBe=48,KBe=Buffer.from(\"ustar\\0\",\"binary\"),Odt=Buffer.from(\"00\",\"binary\"),Ldt=Buffer.from(\"ustar \",\"binary\"),Mdt=Buffer.from(\" \\0\",\"binary\"),Udt=parseInt(\"7777\",8),ab=257,NV=263,_dt=function(e,t,r){return typeof e!=\"number\"?r:(e=~~e,e>=t?t:e>=0||(e+=t,e>=0)?e:0)},Hdt=function(e){switch(e){case 0:return\"file\";case 1:return\"link\";case 2:return\"symlink\";case 3:return\"character-device\";case 4:return\"block-device\";case 5:return\"directory\";case 6:return\"fifo\";case 7:return\"contiguous-file\";case 72:return\"pax-header\";case 55:return\"pax-global-header\";case 27:return\"gnu-long-link-path\";case 28:case 30:return\"gnu-long-path\"}return null},jdt=function(e){switch(e){case\"file\":return 0;case\"link\":return 1;case\"symlink\":return 2;case\"character-device\":return 3;case\"block-device\":return 4;case\"directory\":return 5;case\"fifo\":return 6;case\"contiguous-file\":return 7;case\"pax-header\":return 72}return 0},JBe=function(e,t,r,s){for(;r<s;r++)if(e[r]===t)return r;return s},zBe=function(e){for(var t=256,r=0;r<148;r++)t+=e[r];for(var s=156;s<512;s++)t+=e[s];return t},Ag=function(e,t){return e=e.toString(8),e.length>t?Ndt.slice(0,t)+\" \":Fdt.slice(0,t-e.length)+e+\" \"};function Gdt(e){var t;if(e[0]===128)t=!0;else if(e[0]===255)t=!1;else return null;for(var r=[],s=e.length-1;s>0;s--){var a=e[s];t?r.push(a):r.push(255-a)}var n=0,c=r.length;for(s=0;s<c;s++)n+=r[s]*Math.pow(256,s);return t?n:-1*n}var pg=function(e,t,r){if(e=e.slice(t,t+r),t=0,e[t]&128)return Gdt(e);for(;t<e.length&&e[t]===32;)t++;for(var s=_dt(JBe(e,32,t,e.length),e.length,e.length);t<s&&e[t]===0;)t++;return s===t?0:parseInt(e.slice(t,s).toString(),8)},kw=function(e,t,r,s){return e.slice(t,JBe(e,0,t,t+r)).toString(s)},FV=function(e){var t=Buffer.byteLength(e),r=Math.floor(Math.log(t)/Math.log(10))+1;return t+r>=Math.pow(10,r)&&r++,t+r+e};Qw.decodeLongPath=function(e,t){return kw(e,0,e.length,t)};Qw.encodePax=function(e){var t=\"\";e.name&&(t+=FV(\" path=\"+e.name+`\n`)),e.linkname&&(t+=FV(\" linkpath=\"+e.linkname+`\n`));var r=e.pax;if(r)for(var s in r)t+=FV(\" \"+s+\"=\"+r[s]+`\n`);return Buffer.from(t)};Qw.decodePax=function(e){for(var t={};e.length;){for(var r=0;r<e.length&&e[r]!==32;)r++;var s=parseInt(e.slice(0,r).toString(),10);if(!s)return t;var a=e.slice(r+1,s-1).toString(),n=a.indexOf(\"=\");if(n===-1)return t;t[a.slice(0,n)]=a.slice(n+1),e=e.slice(s)}return t};Qw.encode=function(e){var t=Tdt(512),r=e.name,s=\"\";if(e.typeflag===5&&r[r.length-1]!==\"/\"&&(r+=\"/\"),Buffer.byteLength(r)!==r.length)return null;for(;Buffer.byteLength(r)>100;){var a=r.indexOf(\"/\");if(a===-1)return null;s+=s?\"/\"+r.slice(0,a):r.slice(0,a),r=r.slice(a+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(s)>155||e.linkname&&Buffer.byteLength(e.linkname)>100?null:(t.write(r),t.write(Ag(e.mode&Udt,6),100),t.write(Ag(e.uid,6),108),t.write(Ag(e.gid,6),116),t.write(Ag(e.size,11),124),t.write(Ag(e.mtime.getTime()/1e3|0,11),136),t[156]=YBe+jdt(e.type),e.linkname&&t.write(e.linkname,157),KBe.copy(t,ab),Odt.copy(t,NV),e.uname&&t.write(e.uname,265),e.gname&&t.write(e.gname,297),t.write(Ag(e.devmajor||0,6),329),t.write(Ag(e.devminor||0,6),337),s&&t.write(s,345),t.write(Ag(zBe(t),6),148),t)};Qw.decode=function(e,t,r){var s=e[156]===0?0:e[156]-YBe,a=kw(e,0,100,t),n=pg(e,100,8),c=pg(e,108,8),f=pg(e,116,8),p=pg(e,124,12),h=pg(e,136,12),E=Hdt(s),C=e[157]===0?null:kw(e,157,100,t),S=kw(e,265,32),x=kw(e,297,32),I=pg(e,329,8),T=pg(e,337,8),O=zBe(e);if(O===8*32)return null;if(O!==pg(e,148,8))throw new Error(\"Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?\");if(KBe.compare(e,ab,ab+6)===0)e[345]&&(a=kw(e,345,155,t)+\"/\"+a);else if(!(Ldt.compare(e,ab,ab+6)===0&&Mdt.compare(e,NV,NV+2)===0)){if(!r)throw new Error(\"Invalid tar header: unknown format.\")}return s===0&&a&&a[a.length-1]===\"/\"&&(s=5),{name:a,mode:n,uid:c,gid:f,size:p,mtime:new Date(1e3*h),type:E,linkname:C,uname:S,gname:x,devmajor:I,devminor:T}}});var n2e=G((f$t,r2e)=>{var XBe=Ie(\"util\"),qdt=VBe(),lb=OV(),$Be=xw().Writable,e2e=xw().PassThrough,t2e=function(){},ZBe=function(e){return e&=511,e&&512-e},Wdt=function(e,t){var r=new pN(e,t);return r.end(),r},Vdt=function(e,t){return t.path&&(e.name=t.path),t.linkpath&&(e.linkname=t.linkpath),t.size&&(e.size=parseInt(t.size,10)),e.pax=t,e},pN=function(e,t){this._parent=e,this.offset=t,e2e.call(this,{autoDestroy:!1})};XBe.inherits(pN,e2e);pN.prototype.destroy=function(e){this._parent.destroy(e)};var ah=function(e){if(!(this instanceof ah))return new ah(e);$Be.call(this,e),e=e||{},this._offset=0,this._buffer=qdt(),this._missing=0,this._partial=!1,this._onparse=t2e,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var t=this,r=t._buffer,s=function(){t._continue()},a=function(S){if(t._locked=!1,S)return t.destroy(S);t._stream||s()},n=function(){t._stream=null;var S=ZBe(t._header.size);S?t._parse(S,c):t._parse(512,C),t._locked||s()},c=function(){t._buffer.consume(ZBe(t._header.size)),t._parse(512,C),s()},f=function(){var S=t._header.size;t._paxGlobal=lb.decodePax(r.slice(0,S)),r.consume(S),n()},p=function(){var S=t._header.size;t._pax=lb.decodePax(r.slice(0,S)),t._paxGlobal&&(t._pax=Object.assign({},t._paxGlobal,t._pax)),r.consume(S),n()},h=function(){var S=t._header.size;this._gnuLongPath=lb.decodeLongPath(r.slice(0,S),e.filenameEncoding),r.consume(S),n()},E=function(){var S=t._header.size;this._gnuLongLinkPath=lb.decodeLongPath(r.slice(0,S),e.filenameEncoding),r.consume(S),n()},C=function(){var S=t._offset,x;try{x=t._header=lb.decode(r.slice(0,512),e.filenameEncoding,e.allowUnknownFormat)}catch(I){t.emit(\"error\",I)}if(r.consume(512),!x){t._parse(512,C),s();return}if(x.type===\"gnu-long-path\"){t._parse(x.size,h),s();return}if(x.type===\"gnu-long-link-path\"){t._parse(x.size,E),s();return}if(x.type===\"pax-global-header\"){t._parse(x.size,f),s();return}if(x.type===\"pax-header\"){t._parse(x.size,p),s();return}if(t._gnuLongPath&&(x.name=t._gnuLongPath,t._gnuLongPath=null),t._gnuLongLinkPath&&(x.linkname=t._gnuLongLinkPath,t._gnuLongLinkPath=null),t._pax&&(t._header=x=Vdt(x,t._pax),t._pax=null),t._locked=!0,!x.size||x.type===\"directory\"){t._parse(512,C),t.emit(\"entry\",x,Wdt(t,S),a);return}t._stream=new pN(t,S),t.emit(\"entry\",x,t._stream,a),t._parse(x.size,n),s()};this._onheader=C,this._parse(512,C)};XBe.inherits(ah,$Be);ah.prototype.destroy=function(e){this._destroyed||(this._destroyed=!0,e&&this.emit(\"error\",e),this.emit(\"close\"),this._stream&&this._stream.emit(\"close\"))};ah.prototype._parse=function(e,t){this._destroyed||(this._offset+=e,this._missing=e,t===this._onheader&&(this._partial=!1),this._onparse=t)};ah.prototype._continue=function(){if(!this._destroyed){var e=this._cb;this._cb=t2e,this._overflow?this._write(this._overflow,void 0,e):e()}};ah.prototype._write=function(e,t,r){if(!this._destroyed){var s=this._stream,a=this._buffer,n=this._missing;if(e.length&&(this._partial=!0),e.length<n)return this._missing-=e.length,this._overflow=null,s?s.write(e,r):(a.append(e),r());this._cb=r,this._missing=0;var c=null;e.length>n&&(c=e.slice(n),e=e.slice(0,n)),s?s.end(e):a.append(e),this._overflow=c,this._onparse()}};ah.prototype._final=function(e){if(this._partial)return this.destroy(new Error(\"Unexpected end of data\"));e()};r2e.exports=ah});var s2e=G((A$t,i2e)=>{i2e.exports=Ie(\"fs\").constants||Ie(\"constants\")});var u2e=G((p$t,c2e)=>{var Rw=s2e(),o2e=Y8(),gN=ag(),Ydt=Buffer.alloc,a2e=xw().Readable,Tw=xw().Writable,Kdt=Ie(\"string_decoder\").StringDecoder,hN=OV(),Jdt=parseInt(\"755\",8),zdt=parseInt(\"644\",8),l2e=Ydt(1024),MV=function(){},LV=function(e,t){t&=511,t&&e.push(l2e.slice(0,512-t))};function Zdt(e){switch(e&Rw.S_IFMT){case Rw.S_IFBLK:return\"block-device\";case Rw.S_IFCHR:return\"character-device\";case Rw.S_IFDIR:return\"directory\";case Rw.S_IFIFO:return\"fifo\";case Rw.S_IFLNK:return\"symlink\"}return\"file\"}var dN=function(e){Tw.call(this),this.written=0,this._to=e,this._destroyed=!1};gN(dN,Tw);dN.prototype._write=function(e,t,r){if(this.written+=e.length,this._to.push(e))return r();this._to._drain=r};dN.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var mN=function(){Tw.call(this),this.linkname=\"\",this._decoder=new Kdt(\"utf-8\"),this._destroyed=!1};gN(mN,Tw);mN.prototype._write=function(e,t,r){this.linkname+=this._decoder.write(e),r()};mN.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var ub=function(){Tw.call(this),this._destroyed=!1};gN(ub,Tw);ub.prototype._write=function(e,t,r){r(new Error(\"No body allowed for this entry\"))};ub.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var yA=function(e){if(!(this instanceof yA))return new yA(e);a2e.call(this,e),this._drain=MV,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};gN(yA,a2e);yA.prototype.entry=function(e,t,r){if(this._stream)throw new Error(\"already piping an entry\");if(!(this._finalized||this._destroyed)){typeof t==\"function\"&&(r=t,t=null),r||(r=MV);var s=this;if((!e.size||e.type===\"symlink\")&&(e.size=0),e.type||(e.type=Zdt(e.mode)),e.mode||(e.mode=e.type===\"directory\"?Jdt:zdt),e.uid||(e.uid=0),e.gid||(e.gid=0),e.mtime||(e.mtime=new Date),typeof t==\"string\"&&(t=Buffer.from(t)),Buffer.isBuffer(t)){e.size=t.length,this._encode(e);var a=this.push(t);return LV(s,e.size),a?process.nextTick(r):this._drain=r,new ub}if(e.type===\"symlink\"&&!e.linkname){var n=new mN;return o2e(n,function(f){if(f)return s.destroy(),r(f);e.linkname=n.linkname,s._encode(e),r()}),n}if(this._encode(e),e.type!==\"file\"&&e.type!==\"contiguous-file\")return process.nextTick(r),new ub;var c=new dN(this);return this._stream=c,o2e(c,function(f){if(s._stream=null,f)return s.destroy(),r(f);if(c.written!==e.size)return s.destroy(),r(new Error(\"size mismatch\"));LV(s,e.size),s._finalizing&&s.finalize(),r()}),c}};yA.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(l2e),this.push(null))};yA.prototype.destroy=function(e){this._destroyed||(this._destroyed=!0,e&&this.emit(\"error\",e),this.emit(\"close\"),this._stream&&this._stream.destroy&&this._stream.destroy())};yA.prototype._encode=function(e){if(!e.pax){var t=hN.encode(e);if(t){this.push(t);return}}this._encodePax(e)};yA.prototype._encodePax=function(e){var t=hN.encodePax({name:e.name,linkname:e.linkname,pax:e.pax}),r={name:\"PaxHeader\",mode:e.mode,uid:e.uid,gid:e.gid,size:t.length,mtime:e.mtime,type:\"pax-header\",linkname:e.linkname&&\"PaxHeader\",uname:e.uname,gname:e.gname,devmajor:e.devmajor,devminor:e.devminor};this.push(hN.encode(r)),this.push(t),LV(this,t.length),r.size=e.size,r.type=e.type,this.push(hN.encode(r))};yA.prototype._read=function(e){var t=this._drain;this._drain=MV,t()};c2e.exports=yA});var f2e=G(UV=>{UV.extract=n2e();UV.pack=u2e()});var v2e=G(Ma=>{\"use strict\";var umt=Ma&&Ma.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ma,\"__esModule\",{value:!0});Ma.Minipass=Ma.isWritable=Ma.isReadable=Ma.isStream=void 0;var E2e=typeof process==\"object\"&&process?process:{stdout:null,stderr:null},ZV=Ie(\"node:events\"),B2e=umt(Ie(\"node:stream\")),fmt=Ie(\"node:string_decoder\"),Amt=e=>!!e&&typeof e==\"object\"&&(e instanceof DN||e instanceof B2e.default||(0,Ma.isReadable)(e)||(0,Ma.isWritable)(e));Ma.isStream=Amt;var pmt=e=>!!e&&typeof e==\"object\"&&e instanceof ZV.EventEmitter&&typeof e.pipe==\"function\"&&e.pipe!==B2e.default.Writable.prototype.pipe;Ma.isReadable=pmt;var hmt=e=>!!e&&typeof e==\"object\"&&e instanceof ZV.EventEmitter&&typeof e.write==\"function\"&&typeof e.end==\"function\";Ma.isWritable=hmt;var lh=Symbol(\"EOF\"),ch=Symbol(\"maybeEmitEnd\"),hg=Symbol(\"emittedEnd\"),IN=Symbol(\"emittingEnd\"),fb=Symbol(\"emittedError\"),CN=Symbol(\"closed\"),I2e=Symbol(\"read\"),wN=Symbol(\"flush\"),C2e=Symbol(\"flushChunk\"),Af=Symbol(\"encoding\"),Nw=Symbol(\"decoder\"),to=Symbol(\"flowing\"),Ab=Symbol(\"paused\"),Ow=Symbol(\"resume\"),ro=Symbol(\"buffer\"),La=Symbol(\"pipes\"),no=Symbol(\"bufferLength\"),WV=Symbol(\"bufferPush\"),BN=Symbol(\"bufferShift\"),aa=Symbol(\"objectMode\"),rs=Symbol(\"destroyed\"),VV=Symbol(\"error\"),YV=Symbol(\"emitData\"),w2e=Symbol(\"emitEnd\"),KV=Symbol(\"emitEnd2\"),IA=Symbol(\"async\"),JV=Symbol(\"abort\"),vN=Symbol(\"aborted\"),pb=Symbol(\"signal\"),$m=Symbol(\"dataListeners\"),nc=Symbol(\"discarded\"),hb=e=>Promise.resolve().then(e),gmt=e=>e(),dmt=e=>e===\"end\"||e===\"finish\"||e===\"prefinish\",mmt=e=>e instanceof ArrayBuffer||!!e&&typeof e==\"object\"&&e.constructor&&e.constructor.name===\"ArrayBuffer\"&&e.byteLength>=0,ymt=e=>!Buffer.isBuffer(e)&&ArrayBuffer.isView(e),SN=class{src;dest;opts;ondrain;constructor(t,r,s){this.src=t,this.dest=r,this.opts=s,this.ondrain=()=>t[Ow](),this.dest.on(\"drain\",this.ondrain)}unpipe(){this.dest.removeListener(\"drain\",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},zV=class extends SN{unpipe(){this.src.removeListener(\"error\",this.proxyErrors),super.unpipe()}constructor(t,r,s){super(t,r,s),this.proxyErrors=a=>r.emit(\"error\",a),t.on(\"error\",this.proxyErrors)}},Emt=e=>!!e.objectMode,Imt=e=>!e.objectMode&&!!e.encoding&&e.encoding!==\"buffer\",DN=class extends ZV.EventEmitter{[to]=!1;[Ab]=!1;[La]=[];[ro]=[];[aa];[Af];[IA];[Nw];[lh]=!1;[hg]=!1;[IN]=!1;[CN]=!1;[fb]=null;[no]=0;[rs]=!1;[pb];[vN]=!1;[$m]=0;[nc]=!1;writable=!0;readable=!0;constructor(...t){let r=t[0]||{};if(super(),r.objectMode&&typeof r.encoding==\"string\")throw new TypeError(\"Encoding and objectMode may not be used together\");Emt(r)?(this[aa]=!0,this[Af]=null):Imt(r)?(this[Af]=r.encoding,this[aa]=!1):(this[aa]=!1,this[Af]=null),this[IA]=!!r.async,this[Nw]=this[Af]?new fmt.StringDecoder(this[Af]):null,r&&r.debugExposeBuffer===!0&&Object.defineProperty(this,\"buffer\",{get:()=>this[ro]}),r&&r.debugExposePipes===!0&&Object.defineProperty(this,\"pipes\",{get:()=>this[La]});let{signal:s}=r;s&&(this[pb]=s,s.aborted?this[JV]():s.addEventListener(\"abort\",()=>this[JV]()))}get bufferLength(){return this[no]}get encoding(){return this[Af]}set encoding(t){throw new Error(\"Encoding must be set at instantiation time\")}setEncoding(t){throw new Error(\"Encoding must be set at instantiation time\")}get objectMode(){return this[aa]}set objectMode(t){throw new Error(\"objectMode must be set at instantiation time\")}get async(){return this[IA]}set async(t){this[IA]=this[IA]||!!t}[JV](){this[vN]=!0,this.emit(\"abort\",this[pb]?.reason),this.destroy(this[pb]?.reason)}get aborted(){return this[vN]}set aborted(t){}write(t,r,s){if(this[vN])return!1;if(this[lh])throw new Error(\"write after end\");if(this[rs])return this.emit(\"error\",Object.assign(new Error(\"Cannot call write after a stream was destroyed\"),{code:\"ERR_STREAM_DESTROYED\"})),!0;typeof r==\"function\"&&(s=r,r=\"utf8\"),r||(r=\"utf8\");let a=this[IA]?hb:gmt;if(!this[aa]&&!Buffer.isBuffer(t)){if(ymt(t))t=Buffer.from(t.buffer,t.byteOffset,t.byteLength);else if(mmt(t))t=Buffer.from(t);else if(typeof t!=\"string\")throw new Error(\"Non-contiguous data written to non-objectMode stream\")}return this[aa]?(this[to]&&this[no]!==0&&this[wN](!0),this[to]?this.emit(\"data\",t):this[WV](t),this[no]!==0&&this.emit(\"readable\"),s&&a(s),this[to]):t.length?(typeof t==\"string\"&&!(r===this[Af]&&!this[Nw]?.lastNeed)&&(t=Buffer.from(t,r)),Buffer.isBuffer(t)&&this[Af]&&(t=this[Nw].write(t)),this[to]&&this[no]!==0&&this[wN](!0),this[to]?this.emit(\"data\",t):this[WV](t),this[no]!==0&&this.emit(\"readable\"),s&&a(s),this[to]):(this[no]!==0&&this.emit(\"readable\"),s&&a(s),this[to])}read(t){if(this[rs])return null;if(this[nc]=!1,this[no]===0||t===0||t&&t>this[no])return this[ch](),null;this[aa]&&(t=null),this[ro].length>1&&!this[aa]&&(this[ro]=[this[Af]?this[ro].join(\"\"):Buffer.concat(this[ro],this[no])]);let r=this[I2e](t||null,this[ro][0]);return this[ch](),r}[I2e](t,r){if(this[aa])this[BN]();else{let s=r;t===s.length||t===null?this[BN]():typeof s==\"string\"?(this[ro][0]=s.slice(t),r=s.slice(0,t),this[no]-=t):(this[ro][0]=s.subarray(t),r=s.subarray(0,t),this[no]-=t)}return this.emit(\"data\",r),!this[ro].length&&!this[lh]&&this.emit(\"drain\"),r}end(t,r,s){return typeof t==\"function\"&&(s=t,t=void 0),typeof r==\"function\"&&(s=r,r=\"utf8\"),t!==void 0&&this.write(t,r),s&&this.once(\"end\",s),this[lh]=!0,this.writable=!1,(this[to]||!this[Ab])&&this[ch](),this}[Ow](){this[rs]||(!this[$m]&&!this[La].length&&(this[nc]=!0),this[Ab]=!1,this[to]=!0,this.emit(\"resume\"),this[ro].length?this[wN]():this[lh]?this[ch]():this.emit(\"drain\"))}resume(){return this[Ow]()}pause(){this[to]=!1,this[Ab]=!0,this[nc]=!1}get destroyed(){return this[rs]}get flowing(){return this[to]}get paused(){return this[Ab]}[WV](t){this[aa]?this[no]+=1:this[no]+=t.length,this[ro].push(t)}[BN](){return this[aa]?this[no]-=1:this[no]-=this[ro][0].length,this[ro].shift()}[wN](t=!1){do;while(this[C2e](this[BN]())&&this[ro].length);!t&&!this[ro].length&&!this[lh]&&this.emit(\"drain\")}[C2e](t){return this.emit(\"data\",t),this[to]}pipe(t,r){if(this[rs])return t;this[nc]=!1;let s=this[hg];return r=r||{},t===E2e.stdout||t===E2e.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,s?r.end&&t.end():(this[La].push(r.proxyErrors?new zV(this,t,r):new SN(this,t,r)),this[IA]?hb(()=>this[Ow]()):this[Ow]()),t}unpipe(t){let r=this[La].find(s=>s.dest===t);r&&(this[La].length===1?(this[to]&&this[$m]===0&&(this[to]=!1),this[La]=[]):this[La].splice(this[La].indexOf(r),1),r.unpipe())}addListener(t,r){return this.on(t,r)}on(t,r){let s=super.on(t,r);if(t===\"data\")this[nc]=!1,this[$m]++,!this[La].length&&!this[to]&&this[Ow]();else if(t===\"readable\"&&this[no]!==0)super.emit(\"readable\");else if(dmt(t)&&this[hg])super.emit(t),this.removeAllListeners(t);else if(t===\"error\"&&this[fb]){let a=r;this[IA]?hb(()=>a.call(this,this[fb])):a.call(this,this[fb])}return s}removeListener(t,r){return this.off(t,r)}off(t,r){let s=super.off(t,r);return t===\"data\"&&(this[$m]=this.listeners(\"data\").length,this[$m]===0&&!this[nc]&&!this[La].length&&(this[to]=!1)),s}removeAllListeners(t){let r=super.removeAllListeners(t);return(t===\"data\"||t===void 0)&&(this[$m]=0,!this[nc]&&!this[La].length&&(this[to]=!1)),r}get emittedEnd(){return this[hg]}[ch](){!this[IN]&&!this[hg]&&!this[rs]&&this[ro].length===0&&this[lh]&&(this[IN]=!0,this.emit(\"end\"),this.emit(\"prefinish\"),this.emit(\"finish\"),this[CN]&&this.emit(\"close\"),this[IN]=!1)}emit(t,...r){let s=r[0];if(t!==\"error\"&&t!==\"close\"&&t!==rs&&this[rs])return!1;if(t===\"data\")return!this[aa]&&!s?!1:this[IA]?(hb(()=>this[YV](s)),!0):this[YV](s);if(t===\"end\")return this[w2e]();if(t===\"close\"){if(this[CN]=!0,!this[hg]&&!this[rs])return!1;let n=super.emit(\"close\");return this.removeAllListeners(\"close\"),n}else if(t===\"error\"){this[fb]=s,super.emit(VV,s);let n=!this[pb]||this.listeners(\"error\").length?super.emit(\"error\",s):!1;return this[ch](),n}else if(t===\"resume\"){let n=super.emit(\"resume\");return this[ch](),n}else if(t===\"finish\"||t===\"prefinish\"){let n=super.emit(t);return this.removeAllListeners(t),n}let a=super.emit(t,...r);return this[ch](),a}[YV](t){for(let s of this[La])s.dest.write(t)===!1&&this.pause();let r=this[nc]?!1:super.emit(\"data\",t);return this[ch](),r}[w2e](){return this[hg]?!1:(this[hg]=!0,this.readable=!1,this[IA]?(hb(()=>this[KV]()),!0):this[KV]())}[KV](){if(this[Nw]){let r=this[Nw].end();if(r){for(let s of this[La])s.dest.write(r);this[nc]||super.emit(\"data\",r)}}for(let r of this[La])r.end();let t=super.emit(\"end\");return this.removeAllListeners(\"end\"),t}async collect(){let t=Object.assign([],{dataLength:0});this[aa]||(t.dataLength=0);let r=this.promise();return this.on(\"data\",s=>{t.push(s),this[aa]||(t.dataLength+=s.length)}),await r,t}async concat(){if(this[aa])throw new Error(\"cannot concat in objectMode\");let t=await this.collect();return this[Af]?t.join(\"\"):Buffer.concat(t,t.dataLength)}async promise(){return new Promise((t,r)=>{this.on(rs,()=>r(new Error(\"stream destroyed\"))),this.on(\"error\",s=>r(s)),this.on(\"end\",()=>t())})}[Symbol.asyncIterator](){this[nc]=!1;let t=!1,r=async()=>(this.pause(),t=!0,{value:void 0,done:!0});return{next:()=>{if(t)return r();let a=this.read();if(a!==null)return Promise.resolve({done:!1,value:a});if(this[lh])return r();let n,c,f=C=>{this.off(\"data\",p),this.off(\"end\",h),this.off(rs,E),r(),c(C)},p=C=>{this.off(\"error\",f),this.off(\"end\",h),this.off(rs,E),this.pause(),n({value:C,done:!!this[lh]})},h=()=>{this.off(\"error\",f),this.off(\"data\",p),this.off(rs,E),r(),n({done:!0,value:void 0})},E=()=>f(new Error(\"stream destroyed\"));return new Promise((C,S)=>{c=S,n=C,this.once(rs,E),this.once(\"error\",f),this.once(\"end\",h),this.once(\"data\",p)})},throw:r,return:r,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[nc]=!1;let t=!1,r=()=>(this.pause(),this.off(VV,r),this.off(rs,r),this.off(\"end\",r),t=!0,{done:!0,value:void 0}),s=()=>{if(t)return r();let a=this.read();return a===null?r():{done:!1,value:a}};return this.once(\"end\",r),this.once(VV,r),this.once(rs,r),{next:s,throw:r,return:r,[Symbol.iterator](){return this}}}destroy(t){if(this[rs])return t?this.emit(\"error\",t):this.emit(rs),this;this[rs]=!0,this[nc]=!0,this[ro].length=0,this[no]=0;let r=this;return typeof r.close==\"function\"&&!this[CN]&&r.close(),t?this.emit(\"error\",t):this.emit(rs),this}static get isStream(){return Ma.isStream}};Ma.Minipass=DN});var b2e=G((F$t,CA)=>{\"use strict\";var db=Ie(\"crypto\"),{Minipass:Cmt}=v2e(),$V=[\"sha512\",\"sha384\",\"sha256\"],tY=[\"sha512\"],wmt=/^[a-z0-9+/]+(?:=?=?)$/i,Bmt=/^([a-z0-9]+)-([^?]+)([?\\S*]*)$/,vmt=/^([a-z0-9]+)-([A-Za-z0-9+/=]{44,88})(\\?[\\x21-\\x7E]*)?$/,Smt=/^[\\x21-\\x7E]+$/,mb=e=>e?.length?`?${e.join(\"?\")}`:\"\",eY=class extends Cmt{#e;#t;#s;constructor(t){super(),this.size=0,this.opts=t,this.#r(),t?.algorithms?this.algorithms=[...t.algorithms]:this.algorithms=[...tY],this.algorithm!==null&&!this.algorithms.includes(this.algorithm)&&this.algorithms.push(this.algorithm),this.hashes=this.algorithms.map(db.createHash)}#r(){this.sri=this.opts?.integrity?ic(this.opts?.integrity,this.opts):null,this.expectedSize=this.opts?.size,this.sri?this.sri.isHash?(this.goodSri=!0,this.algorithm=this.sri.algorithm):(this.goodSri=!this.sri.isEmpty(),this.algorithm=this.sri.pickAlgorithm(this.opts)):this.algorithm=null,this.digests=this.goodSri?this.sri[this.algorithm]:null,this.optString=mb(this.opts?.options)}on(t,r){return t===\"size\"&&this.#t?r(this.#t):t===\"integrity\"&&this.#e?r(this.#e):t===\"verified\"&&this.#s?r(this.#s):super.on(t,r)}emit(t,r){return t===\"end\"&&this.#i(),super.emit(t,r)}write(t){return this.size+=t.length,this.hashes.forEach(r=>r.update(t)),super.write(t)}#i(){this.goodSri||this.#r();let t=ic(this.hashes.map((s,a)=>`${this.algorithms[a]}-${s.digest(\"base64\")}${this.optString}`).join(\" \"),this.opts),r=this.goodSri&&t.match(this.sri,this.opts);if(typeof this.expectedSize==\"number\"&&this.size!==this.expectedSize){let s=new Error(`stream size mismatch when checking ${this.sri}.\n  Wanted: ${this.expectedSize}\n  Found: ${this.size}`);s.code=\"EBADSIZE\",s.found=this.size,s.expected=this.expectedSize,s.sri=this.sri,this.emit(\"error\",s)}else if(this.sri&&!r){let s=new Error(`${this.sri} integrity checksum failed when using ${this.algorithm}: wanted ${this.digests} but got ${t}. (${this.size} bytes)`);s.code=\"EINTEGRITY\",s.found=t,s.expected=this.digests,s.algorithm=this.algorithm,s.sri=this.sri,this.emit(\"error\",s)}else this.#t=this.size,this.emit(\"size\",this.size),this.#e=t,this.emit(\"integrity\",t),r&&(this.#s=r,this.emit(\"verified\",r))}},uh=class{get isHash(){return!0}constructor(t,r){let s=r?.strict;this.source=t.trim(),this.digest=\"\",this.algorithm=\"\",this.options=[];let a=this.source.match(s?vmt:Bmt);if(!a||s&&!$V.includes(a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];n&&(this.options=n.slice(1).split(\"?\"))}hexDigest(){return this.digest&&Buffer.from(this.digest,\"base64\").toString(\"hex\")}toJSON(){return this.toString()}match(t,r){let s=ic(t,r);if(!s)return!1;if(s.isIntegrity){let a=s.pickAlgorithm(r,[this.algorithm]);if(!a)return!1;let n=s[a].find(c=>c.digest===this.digest);return n||!1}return s.digest===this.digest?s:!1}toString(t){return t?.strict&&!($V.includes(this.algorithm)&&this.digest.match(wmt)&&this.options.every(r=>r.match(Smt)))?\"\":`${this.algorithm}-${this.digest}${mb(this.options)}`}};function S2e(e,t,r,s){let a=e!==\"\",n=!1,c=\"\",f=s.length-1;for(let h=0;h<f;h++){let E=uh.prototype.toString.call(s[h],r);E&&(n=!0,c+=E,c+=t)}let p=uh.prototype.toString.call(s[f],r);return p&&(n=!0,c+=p),a&&n?e+t+c:e+c}var ey=class{get isIntegrity(){return!0}toJSON(){return this.toString()}isEmpty(){return Object.keys(this).length===0}toString(t){let r=t?.sep||\" \",s=\"\";if(t?.strict){r=r.replace(/\\S+/g,\" \");for(let a of $V)this[a]&&(s=S2e(s,r,t,this[a]))}else for(let a of Object.keys(this))s=S2e(s,r,t,this[a]);return s}concat(t,r){let s=typeof t==\"string\"?t:gb(t,r);return ic(`${this.toString(r)} ${s}`,r)}hexDigest(){return ic(this,{single:!0}).hexDigest()}merge(t,r){let s=ic(t,r);for(let a in s)if(this[a]){if(!this[a].find(n=>s[a].find(c=>n.digest===c.digest)))throw new Error(\"hashes do not match, cannot update integrity\")}else this[a]=s[a]}match(t,r){let s=ic(t,r);if(!s)return!1;let a=s.pickAlgorithm(r,Object.keys(this));return!!a&&this[a]&&s[a]&&this[a].find(n=>s[a].find(c=>n.digest===c.digest))||!1}pickAlgorithm(t,r){let s=t?.pickAlgorithm||Tmt,a=Object.keys(this).filter(n=>r?.length?r.includes(n):!0);return a.length?a.reduce((n,c)=>s(n,c)||n):null}};CA.exports.parse=ic;function ic(e,t){if(!e)return null;if(typeof e==\"string\")return XV(e,t);if(e.algorithm&&e.digest){let r=new ey;return r[e.algorithm]=[e],XV(gb(r,t),t)}else return XV(gb(e,t),t)}function XV(e,t){if(t?.single)return new uh(e,t);let r=e.trim().split(/\\s+/).reduce((s,a)=>{let n=new uh(a,t);if(n.algorithm&&n.digest){let c=n.algorithm;s[c]||(s[c]=[]),s[c].push(n)}return s},new ey);return r.isEmpty()?null:r}CA.exports.stringify=gb;function gb(e,t){return e.algorithm&&e.digest?uh.prototype.toString.call(e,t):typeof e==\"string\"?gb(ic(e,t),t):ey.prototype.toString.call(e,t)}CA.exports.fromHex=Dmt;function Dmt(e,t,r){let s=mb(r?.options);return ic(`${t}-${Buffer.from(e,\"hex\").toString(\"base64\")}${s}`,r)}CA.exports.fromData=bmt;function bmt(e,t){let r=t?.algorithms||[...tY],s=mb(t?.options);return r.reduce((a,n)=>{let c=db.createHash(n).update(e).digest(\"base64\"),f=new uh(`${n}-${c}${s}`,t);if(f.algorithm&&f.digest){let p=f.algorithm;a[p]||(a[p]=[]),a[p].push(f)}return a},new ey)}CA.exports.fromStream=Pmt;function Pmt(e,t){let r=rY(t);return new Promise((s,a)=>{e.pipe(r),e.on(\"error\",a),r.on(\"error\",a);let n;r.on(\"integrity\",c=>{n=c}),r.on(\"end\",()=>s(n)),r.resume()})}CA.exports.checkData=xmt;function xmt(e,t,r){if(t=ic(t,r),!t||!Object.keys(t).length){if(r?.error)throw Object.assign(new Error(\"No valid integrity hashes to check against\"),{code:\"EINTEGRITY\"});return!1}let s=t.pickAlgorithm(r),a=db.createHash(s).update(e).digest(\"base64\"),n=ic({algorithm:s,digest:a}),c=n.match(t,r);if(r=r||{},c||!r.error)return c;if(typeof r.size==\"number\"&&e.length!==r.size){let f=new Error(`data size mismatch when checking ${t}.\n  Wanted: ${r.size}\n  Found: ${e.length}`);throw f.code=\"EBADSIZE\",f.found=e.length,f.expected=r.size,f.sri=t,f}else{let f=new Error(`Integrity checksum failed when using ${s}: Wanted ${t}, but got ${n}. (${e.length} bytes)`);throw f.code=\"EINTEGRITY\",f.found=n,f.expected=t,f.algorithm=s,f.sri=t,f}}CA.exports.checkStream=kmt;function kmt(e,t,r){if(r=r||Object.create(null),r.integrity=t,t=ic(t,r),!t||!Object.keys(t).length)return Promise.reject(Object.assign(new Error(\"No valid integrity hashes to check against\"),{code:\"EINTEGRITY\"}));let s=rY(r);return new Promise((a,n)=>{e.pipe(s),e.on(\"error\",n),s.on(\"error\",n);let c;s.on(\"verified\",f=>{c=f}),s.on(\"end\",()=>a(c)),s.resume()})}CA.exports.integrityStream=rY;function rY(e=Object.create(null)){return new eY(e)}CA.exports.create=Qmt;function Qmt(e){let t=e?.algorithms||[...tY],r=mb(e?.options),s=t.map(db.createHash);return{update:function(a,n){return s.forEach(c=>c.update(a,n)),this},digest:function(){return t.reduce((n,c)=>{let f=s.shift().digest(\"base64\"),p=new uh(`${c}-${f}${r}`,e);if(p.algorithm&&p.digest){let h=p.algorithm;n[h]||(n[h]=[]),n[h].push(p)}return n},new ey)}}}var Rmt=db.getHashes(),D2e=[\"md5\",\"whirlpool\",\"sha1\",\"sha224\",\"sha256\",\"sha384\",\"sha512\",\"sha3\",\"sha3-256\",\"sha3-384\",\"sha3-512\",\"sha3_256\",\"sha3_384\",\"sha3_512\"].filter(e=>Rmt.includes(e));function Tmt(e,t){return D2e.indexOf(e.toLowerCase())>=D2e.indexOf(t.toLowerCase())?e:t}});var nY=G(gg=>{\"use strict\";Object.defineProperty(gg,\"__esModule\",{value:!0});gg.Signature=gg.Envelope=void 0;gg.Envelope={fromJSON(e){return{payload:bN(e.payload)?Buffer.from(P2e(e.payload)):Buffer.alloc(0),payloadType:bN(e.payloadType)?globalThis.String(e.payloadType):\"\",signatures:globalThis.Array.isArray(e?.signatures)?e.signatures.map(t=>gg.Signature.fromJSON(t)):[]}},toJSON(e){let t={};return e.payload.length!==0&&(t.payload=x2e(e.payload)),e.payloadType!==\"\"&&(t.payloadType=e.payloadType),e.signatures?.length&&(t.signatures=e.signatures.map(r=>gg.Signature.toJSON(r))),t}};gg.Signature={fromJSON(e){return{sig:bN(e.sig)?Buffer.from(P2e(e.sig)):Buffer.alloc(0),keyid:bN(e.keyid)?globalThis.String(e.keyid):\"\"}},toJSON(e){let t={};return e.sig.length!==0&&(t.sig=x2e(e.sig)),e.keyid!==\"\"&&(t.keyid=e.keyid),t}};function P2e(e){return Uint8Array.from(globalThis.Buffer.from(e,\"base64\"))}function x2e(e){return globalThis.Buffer.from(e).toString(\"base64\")}function bN(e){return e!=null}});var Q2e=G(PN=>{\"use strict\";Object.defineProperty(PN,\"__esModule\",{value:!0});PN.Timestamp=void 0;PN.Timestamp={fromJSON(e){return{seconds:k2e(e.seconds)?globalThis.String(e.seconds):\"0\",nanos:k2e(e.nanos)?globalThis.Number(e.nanos):0}},toJSON(e){let t={};return e.seconds!==\"0\"&&(t.seconds=e.seconds),e.nanos!==0&&(t.nanos=Math.round(e.nanos)),t}};function k2e(e){return e!=null}});var Lw=G(Ur=>{\"use strict\";Object.defineProperty(Ur,\"__esModule\",{value:!0});Ur.TimeRange=Ur.X509CertificateChain=Ur.SubjectAlternativeName=Ur.X509Certificate=Ur.DistinguishedName=Ur.ObjectIdentifierValuePair=Ur.ObjectIdentifier=Ur.PublicKeyIdentifier=Ur.PublicKey=Ur.RFC3161SignedTimestamp=Ur.LogId=Ur.MessageSignature=Ur.HashOutput=Ur.SubjectAlternativeNameType=Ur.PublicKeyDetails=Ur.HashAlgorithm=void 0;Ur.hashAlgorithmFromJSON=T2e;Ur.hashAlgorithmToJSON=F2e;Ur.publicKeyDetailsFromJSON=N2e;Ur.publicKeyDetailsToJSON=O2e;Ur.subjectAlternativeNameTypeFromJSON=L2e;Ur.subjectAlternativeNameTypeToJSON=M2e;var Fmt=Q2e(),vl;(function(e){e[e.HASH_ALGORITHM_UNSPECIFIED=0]=\"HASH_ALGORITHM_UNSPECIFIED\",e[e.SHA2_256=1]=\"SHA2_256\",e[e.SHA2_384=2]=\"SHA2_384\",e[e.SHA2_512=3]=\"SHA2_512\",e[e.SHA3_256=4]=\"SHA3_256\",e[e.SHA3_384=5]=\"SHA3_384\"})(vl||(Ur.HashAlgorithm=vl={}));function T2e(e){switch(e){case 0:case\"HASH_ALGORITHM_UNSPECIFIED\":return vl.HASH_ALGORITHM_UNSPECIFIED;case 1:case\"SHA2_256\":return vl.SHA2_256;case 2:case\"SHA2_384\":return vl.SHA2_384;case 3:case\"SHA2_512\":return vl.SHA2_512;case 4:case\"SHA3_256\":return vl.SHA3_256;case 5:case\"SHA3_384\":return vl.SHA3_384;default:throw new globalThis.Error(\"Unrecognized enum value \"+e+\" for enum HashAlgorithm\")}}function F2e(e){switch(e){case vl.HASH_ALGORITHM_UNSPECIFIED:return\"HASH_ALGORITHM_UNSPECIFIED\";case vl.SHA2_256:return\"SHA2_256\";case vl.SHA2_384:return\"SHA2_384\";case vl.SHA2_512:return\"SHA2_512\";case vl.SHA3_256:return\"SHA3_256\";case vl.SHA3_384:return\"SHA3_384\";default:throw new globalThis.Error(\"Unrecognized enum value \"+e+\" for enum HashAlgorithm\")}}var sn;(function(e){e[e.PUBLIC_KEY_DETAILS_UNSPECIFIED=0]=\"PUBLIC_KEY_DETAILS_UNSPECIFIED\",e[e.PKCS1_RSA_PKCS1V5=1]=\"PKCS1_RSA_PKCS1V5\",e[e.PKCS1_RSA_PSS=2]=\"PKCS1_RSA_PSS\",e[e.PKIX_RSA_PKCS1V5=3]=\"PKIX_RSA_PKCS1V5\",e[e.PKIX_RSA_PSS=4]=\"PKIX_RSA_PSS\",e[e.PKIX_RSA_PKCS1V15_2048_SHA256=9]=\"PKIX_RSA_PKCS1V15_2048_SHA256\",e[e.PKIX_RSA_PKCS1V15_3072_SHA256=10]=\"PKIX_RSA_PKCS1V15_3072_SHA256\",e[e.PKIX_RSA_PKCS1V15_4096_SHA256=11]=\"PKIX_RSA_PKCS1V15_4096_SHA256\",e[e.PKIX_RSA_PSS_2048_SHA256=16]=\"PKIX_RSA_PSS_2048_SHA256\",e[e.PKIX_RSA_PSS_3072_SHA256=17]=\"PKIX_RSA_PSS_3072_SHA256\",e[e.PKIX_RSA_PSS_4096_SHA256=18]=\"PKIX_RSA_PSS_4096_SHA256\",e[e.PKIX_ECDSA_P256_HMAC_SHA_256=6]=\"PKIX_ECDSA_P256_HMAC_SHA_256\",e[e.PKIX_ECDSA_P256_SHA_256=5]=\"PKIX_ECDSA_P256_SHA_256\",e[e.PKIX_ECDSA_P384_SHA_384=12]=\"PKIX_ECDSA_P384_SHA_384\",e[e.PKIX_ECDSA_P521_SHA_512=13]=\"PKIX_ECDSA_P521_SHA_512\",e[e.PKIX_ED25519=7]=\"PKIX_ED25519\",e[e.PKIX_ED25519_PH=8]=\"PKIX_ED25519_PH\",e[e.LMS_SHA256=14]=\"LMS_SHA256\",e[e.LMOTS_SHA256=15]=\"LMOTS_SHA256\"})(sn||(Ur.PublicKeyDetails=sn={}));function N2e(e){switch(e){case 0:case\"PUBLIC_KEY_DETAILS_UNSPECIFIED\":return sn.PUBLIC_KEY_DETAILS_UNSPECIFIED;case 1:case\"PKCS1_RSA_PKCS1V5\":return sn.PKCS1_RSA_PKCS1V5;case 2:case\"PKCS1_RSA_PSS\":return sn.PKCS1_RSA_PSS;case 3:case\"PKIX_RSA_PKCS1V5\":return sn.PKIX_RSA_PKCS1V5;case 4:case\"PKIX_RSA_PSS\":return sn.PKIX_RSA_PSS;case 9:case\"PKIX_RSA_PKCS1V15_2048_SHA256\":return sn.PKIX_RSA_PKCS1V15_2048_SHA256;case 10:case\"PKIX_RSA_PKCS1V15_3072_SHA256\":return sn.PKIX_RSA_PKCS1V15_3072_SHA256;case 11:case\"PKIX_RSA_PKCS1V15_4096_SHA256\":return sn.PKIX_RSA_PKCS1V15_4096_SHA256;case 16:case\"PKIX_RSA_PSS_2048_SHA256\":return sn.PKIX_RSA_PSS_2048_SHA256;case 17:case\"PKIX_RSA_PSS_3072_SHA256\":return sn.PKIX_RSA_PSS_3072_SHA256;case 18:case\"PKIX_RSA_PSS_4096_SHA256\":return sn.PKIX_RSA_PSS_4096_SHA256;case 6:case\"PKIX_ECDSA_P256_HMAC_SHA_256\":return sn.PKIX_ECDSA_P256_HMAC_SHA_256;case 5:case\"PKIX_ECDSA_P256_SHA_256\":return sn.PKIX_ECDSA_P256_SHA_256;case 12:case\"PKIX_ECDSA_P384_SHA_384\":return sn.PKIX_ECDSA_P384_SHA_384;case 13:case\"PKIX_ECDSA_P521_SHA_512\":return sn.PKIX_ECDSA_P521_SHA_512;case 7:case\"PKIX_ED25519\":return sn.PKIX_ED25519;case 8:case\"PKIX_ED25519_PH\":return sn.PKIX_ED25519_PH;case 14:case\"LMS_SHA256\":return sn.LMS_SHA256;case 15:case\"LMOTS_SHA256\":return sn.LMOTS_SHA256;default:throw new globalThis.Error(\"Unrecognized enum value \"+e+\" for enum PublicKeyDetails\")}}function O2e(e){switch(e){case sn.PUBLIC_KEY_DETAILS_UNSPECIFIED:return\"PUBLIC_KEY_DETAILS_UNSPECIFIED\";case sn.PKCS1_RSA_PKCS1V5:return\"PKCS1_RSA_PKCS1V5\";case sn.PKCS1_RSA_PSS:return\"PKCS1_RSA_PSS\";case sn.PKIX_RSA_PKCS1V5:return\"PKIX_RSA_PKCS1V5\";case sn.PKIX_RSA_PSS:return\"PKIX_RSA_PSS\";case sn.PKIX_RSA_PKCS1V15_2048_SHA256:return\"PKIX_RSA_PKCS1V15_2048_SHA256\";case sn.PKIX_RSA_PKCS1V15_3072_SHA256:return\"PKIX_RSA_PKCS1V15_3072_SHA256\";case sn.PKIX_RSA_PKCS1V15_4096_SHA256:return\"PKIX_RSA_PKCS1V15_4096_SHA256\";case sn.PKIX_RSA_PSS_2048_SHA256:return\"PKIX_RSA_PSS_2048_SHA256\";case sn.PKIX_RSA_PSS_3072_SHA256:return\"PKIX_RSA_PSS_3072_SHA256\";case sn.PKIX_RSA_PSS_4096_SHA256:return\"PKIX_RSA_PSS_4096_SHA256\";case sn.PKIX_ECDSA_P256_HMAC_SHA_256:return\"PKIX_ECDSA_P256_HMAC_SHA_256\";case sn.PKIX_ECDSA_P256_SHA_256:return\"PKIX_ECDSA_P256_SHA_256\";case sn.PKIX_ECDSA_P384_SHA_384:return\"PKIX_ECDSA_P384_SHA_384\";case sn.PKIX_ECDSA_P521_SHA_512:return\"PKIX_ECDSA_P521_SHA_512\";case sn.PKIX_ED25519:return\"PKIX_ED25519\";case sn.PKIX_ED25519_PH:return\"PKIX_ED25519_PH\";case sn.LMS_SHA256:return\"LMS_SHA256\";case sn.LMOTS_SHA256:return\"LMOTS_SHA256\";default:throw new globalThis.Error(\"Unrecognized enum value \"+e+\" for enum PublicKeyDetails\")}}var wA;(function(e){e[e.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED=0]=\"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED\",e[e.EMAIL=1]=\"EMAIL\",e[e.URI=2]=\"URI\",e[e.OTHER_NAME=3]=\"OTHER_NAME\"})(wA||(Ur.SubjectAlternativeNameType=wA={}));function L2e(e){switch(e){case 0:case\"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED\":return wA.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED;case 1:case\"EMAIL\":return wA.EMAIL;case 2:case\"URI\":return wA.URI;case 3:case\"OTHER_NAME\":return wA.OTHER_NAME;default:throw new globalThis.Error(\"Unrecognized enum value \"+e+\" for enum SubjectAlternativeNameType\")}}function M2e(e){switch(e){case wA.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED:return\"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED\";case wA.EMAIL:return\"EMAIL\";case wA.URI:return\"URI\";case wA.OTHER_NAME:return\"OTHER_NAME\";default:throw new globalThis.Error(\"Unrecognized enum value \"+e+\" for enum SubjectAlternativeNameType\")}}Ur.HashOutput={fromJSON(e){return{algorithm:Es(e.algorithm)?T2e(e.algorithm):0,digest:Es(e.digest)?Buffer.from(ty(e.digest)):Buffer.alloc(0)}},toJSON(e){let t={};return e.algorithm!==0&&(t.algorithm=F2e(e.algorithm)),e.digest.length!==0&&(t.digest=ry(e.digest)),t}};Ur.MessageSignature={fromJSON(e){return{messageDigest:Es(e.messageDigest)?Ur.HashOutput.fromJSON(e.messageDigest):void 0,signature:Es(e.signature)?Buffer.from(ty(e.signature)):Buffer.alloc(0)}},toJSON(e){let t={};return e.messageDigest!==void 0&&(t.messageDigest=Ur.HashOutput.toJSON(e.messageDigest)),e.signature.length!==0&&(t.signature=ry(e.signature)),t}};Ur.LogId={fromJSON(e){return{keyId:Es(e.keyId)?Buffer.from(ty(e.keyId)):Buffer.alloc(0)}},toJSON(e){let t={};return e.keyId.length!==0&&(t.keyId=ry(e.keyId)),t}};Ur.RFC3161SignedTimestamp={fromJSON(e){return{signedTimestamp:Es(e.signedTimestamp)?Buffer.from(ty(e.signedTimestamp)):Buffer.alloc(0)}},toJSON(e){let t={};return e.signedTimestamp.length!==0&&(t.signedTimestamp=ry(e.signedTimestamp)),t}};Ur.PublicKey={fromJSON(e){return{rawBytes:Es(e.rawBytes)?Buffer.from(ty(e.rawBytes)):void 0,keyDetails:Es(e.keyDetails)?N2e(e.keyDetails):0,validFor:Es(e.validFor)?Ur.TimeRange.fromJSON(e.validFor):void 0}},toJSON(e){let t={};return e.rawBytes!==void 0&&(t.rawBytes=ry(e.rawBytes)),e.keyDetails!==0&&(t.keyDetails=O2e(e.keyDetails)),e.validFor!==void 0&&(t.validFor=Ur.TimeRange.toJSON(e.validFor)),t}};Ur.PublicKeyIdentifier={fromJSON(e){return{hint:Es(e.hint)?globalThis.String(e.hint):\"\"}},toJSON(e){let t={};return e.hint!==\"\"&&(t.hint=e.hint),t}};Ur.ObjectIdentifier={fromJSON(e){return{id:globalThis.Array.isArray(e?.id)?e.id.map(t=>globalThis.Number(t)):[]}},toJSON(e){let t={};return e.id?.length&&(t.id=e.id.map(r=>Math.round(r))),t}};Ur.ObjectIdentifierValuePair={fromJSON(e){return{oid:Es(e.oid)?Ur.ObjectIdentifier.fromJSON(e.oid):void 0,value:Es(e.value)?Buffer.from(ty(e.value)):Buffer.alloc(0)}},toJSON(e){let t={};return e.oid!==void 0&&(t.oid=Ur.ObjectIdentifier.toJSON(e.oid)),e.value.length!==0&&(t.value=ry(e.value)),t}};Ur.DistinguishedName={fromJSON(e){return{organization:Es(e.organization)?globalThis.String(e.organization):\"\",commonName:Es(e.commonName)?globalThis.String(e.commonName):\"\"}},toJSON(e){let t={};return e.organization!==\"\"&&(t.organization=e.organization),e.commonName!==\"\"&&(t.commonName=e.commonName),t}};Ur.X509Certificate={fromJSON(e){return{rawBytes:Es(e.rawBytes)?Buffer.from(ty(e.rawBytes)):Buffer.alloc(0)}},toJSON(e){let t={};return e.rawBytes.length!==0&&(t.rawBytes=ry(e.rawBytes)),t}};Ur.SubjectAlternativeName={fromJSON(e){return{type:Es(e.type)?L2e(e.type):0,identity:Es(e.regexp)?{$case:\"regexp\",regexp:globalThis.String(e.regexp)}:Es(e.value)?{$case:\"value\",value:globalThis.String(e.value)}:void 0}},toJSON(e){let t={};return e.type!==0&&(t.type=M2e(e.type)),e.identity?.$case===\"regexp\"?t.regexp=e.identity.regexp:e.identity?.$case===\"value\"&&(t.value=e.identity.value),t}};Ur.X509CertificateChain={fromJSON(e){return{certificates:globalThis.Array.isArray(e?.certificates)?e.certificates.map(t=>Ur.X509Certificate.fromJSON(t)):[]}},toJSON(e){let t={};return e.certificates?.length&&(t.certificates=e.certificates.map(r=>Ur.X509Certificate.toJSON(r))),t}};Ur.TimeRange={fromJSON(e){return{start:Es(e.start)?R2e(e.start):void 0,end:Es(e.end)?R2e(e.end):void 0}},toJSON(e){let t={};return e.start!==void 0&&(t.start=e.start.toISOString()),e.end!==void 0&&(t.end=e.end.toISOString()),t}};function ty(e){return Uint8Array.from(globalThis.Buffer.from(e,\"base64\"))}function ry(e){return globalThis.Buffer.from(e).toString(\"base64\")}function Nmt(e){let t=(globalThis.Number(e.seconds)||0)*1e3;return t+=(e.nanos||0)/1e6,new globalThis.Date(t)}function R2e(e){return e instanceof globalThis.Date?e:typeof e==\"string\"?new globalThis.Date(e):Nmt(Fmt.Timestamp.fromJSON(e))}function Es(e){return e!=null}});var iY=G(Is=>{\"use strict\";Object.defineProperty(Is,\"__esModule\",{value:!0});Is.TransparencyLogEntry=Is.InclusionPromise=Is.InclusionProof=Is.Checkpoint=Is.KindVersion=void 0;var U2e=Lw();Is.KindVersion={fromJSON(e){return{kind:Ua(e.kind)?globalThis.String(e.kind):\"\",version:Ua(e.version)?globalThis.String(e.version):\"\"}},toJSON(e){let t={};return e.kind!==\"\"&&(t.kind=e.kind),e.version!==\"\"&&(t.version=e.version),t}};Is.Checkpoint={fromJSON(e){return{envelope:Ua(e.envelope)?globalThis.String(e.envelope):\"\"}},toJSON(e){let t={};return e.envelope!==\"\"&&(t.envelope=e.envelope),t}};Is.InclusionProof={fromJSON(e){return{logIndex:Ua(e.logIndex)?globalThis.String(e.logIndex):\"0\",rootHash:Ua(e.rootHash)?Buffer.from(xN(e.rootHash)):Buffer.alloc(0),treeSize:Ua(e.treeSize)?globalThis.String(e.treeSize):\"0\",hashes:globalThis.Array.isArray(e?.hashes)?e.hashes.map(t=>Buffer.from(xN(t))):[],checkpoint:Ua(e.checkpoint)?Is.Checkpoint.fromJSON(e.checkpoint):void 0}},toJSON(e){let t={};return e.logIndex!==\"0\"&&(t.logIndex=e.logIndex),e.rootHash.length!==0&&(t.rootHash=kN(e.rootHash)),e.treeSize!==\"0\"&&(t.treeSize=e.treeSize),e.hashes?.length&&(t.hashes=e.hashes.map(r=>kN(r))),e.checkpoint!==void 0&&(t.checkpoint=Is.Checkpoint.toJSON(e.checkpoint)),t}};Is.InclusionPromise={fromJSON(e){return{signedEntryTimestamp:Ua(e.signedEntryTimestamp)?Buffer.from(xN(e.signedEntryTimestamp)):Buffer.alloc(0)}},toJSON(e){let t={};return e.signedEntryTimestamp.length!==0&&(t.signedEntryTimestamp=kN(e.signedEntryTimestamp)),t}};Is.TransparencyLogEntry={fromJSON(e){return{logIndex:Ua(e.logIndex)?globalThis.String(e.logIndex):\"0\",logId:Ua(e.logId)?U2e.LogId.fromJSON(e.logId):void 0,kindVersion:Ua(e.kindVersion)?Is.KindVersion.fromJSON(e.kindVersion):void 0,integratedTime:Ua(e.integratedTime)?globalThis.String(e.integratedTime):\"0\",inclusionPromise:Ua(e.inclusionPromise)?Is.InclusionPromise.fromJSON(e.inclusionPromise):void 0,inclusionProof:Ua(e.inclusionProof)?Is.InclusionProof.fromJSON(e.inclusionProof):void 0,canonicalizedBody:Ua(e.canonicalizedBody)?Buffer.from(xN(e.canonicalizedBody)):Buffer.alloc(0)}},toJSON(e){let t={};return e.logIndex!==\"0\"&&(t.logIndex=e.logIndex),e.logId!==void 0&&(t.logId=U2e.LogId.toJSON(e.logId)),e.kindVersion!==void 0&&(t.kindVersion=Is.KindVersion.toJSON(e.kindVersion)),e.integratedTime!==\"0\"&&(t.integratedTime=e.integratedTime),e.inclusionPromise!==void 0&&(t.inclusionPromise=Is.InclusionPromise.toJSON(e.inclusionPromise)),e.inclusionProof!==void 0&&(t.inclusionProof=Is.InclusionProof.toJSON(e.inclusionProof)),e.canonicalizedBody.length!==0&&(t.canonicalizedBody=kN(e.canonicalizedBody)),t}};function xN(e){return Uint8Array.from(globalThis.Buffer.from(e,\"base64\"))}function kN(e){return globalThis.Buffer.from(e).toString(\"base64\")}function Ua(e){return e!=null}});var sY=G(Jc=>{\"use strict\";Object.defineProperty(Jc,\"__esModule\",{value:!0});Jc.Bundle=Jc.VerificationMaterial=Jc.TimestampVerificationData=void 0;var _2e=nY(),BA=Lw(),H2e=iY();Jc.TimestampVerificationData={fromJSON(e){return{rfc3161Timestamps:globalThis.Array.isArray(e?.rfc3161Timestamps)?e.rfc3161Timestamps.map(t=>BA.RFC3161SignedTimestamp.fromJSON(t)):[]}},toJSON(e){let t={};return e.rfc3161Timestamps?.length&&(t.rfc3161Timestamps=e.rfc3161Timestamps.map(r=>BA.RFC3161SignedTimestamp.toJSON(r))),t}};Jc.VerificationMaterial={fromJSON(e){return{content:dg(e.publicKey)?{$case:\"publicKey\",publicKey:BA.PublicKeyIdentifier.fromJSON(e.publicKey)}:dg(e.x509CertificateChain)?{$case:\"x509CertificateChain\",x509CertificateChain:BA.X509CertificateChain.fromJSON(e.x509CertificateChain)}:dg(e.certificate)?{$case:\"certificate\",certificate:BA.X509Certificate.fromJSON(e.certificate)}:void 0,tlogEntries:globalThis.Array.isArray(e?.tlogEntries)?e.tlogEntries.map(t=>H2e.TransparencyLogEntry.fromJSON(t)):[],timestampVerificationData:dg(e.timestampVerificationData)?Jc.TimestampVerificationData.fromJSON(e.timestampVerificationData):void 0}},toJSON(e){let t={};return e.content?.$case===\"publicKey\"?t.publicKey=BA.PublicKeyIdentifier.toJSON(e.content.publicKey):e.content?.$case===\"x509CertificateChain\"?t.x509CertificateChain=BA.X509CertificateChain.toJSON(e.content.x509CertificateChain):e.content?.$case===\"certificate\"&&(t.certificate=BA.X509Certificate.toJSON(e.content.certificate)),e.tlogEntries?.length&&(t.tlogEntries=e.tlogEntries.map(r=>H2e.TransparencyLogEntry.toJSON(r))),e.timestampVerificationData!==void 0&&(t.timestampVerificationData=Jc.TimestampVerificationData.toJSON(e.timestampVerificationData)),t}};Jc.Bundle={fromJSON(e){return{mediaType:dg(e.mediaType)?globalThis.String(e.mediaType):\"\",verificationMaterial:dg(e.verificationMaterial)?Jc.VerificationMaterial.fromJSON(e.verificationMaterial):void 0,content:dg(e.messageSignature)?{$case:\"messageSignature\",messageSignature:BA.MessageSignature.fromJSON(e.messageSignature)}:dg(e.dsseEnvelope)?{$case:\"dsseEnvelope\",dsseEnvelope:_2e.Envelope.fromJSON(e.dsseEnvelope)}:void 0}},toJSON(e){let t={};return e.mediaType!==\"\"&&(t.mediaType=e.mediaType),e.verificationMaterial!==void 0&&(t.verificationMaterial=Jc.VerificationMaterial.toJSON(e.verificationMaterial)),e.content?.$case===\"messageSignature\"?t.messageSignature=BA.MessageSignature.toJSON(e.content.messageSignature):e.content?.$case===\"dsseEnvelope\"&&(t.dsseEnvelope=_2e.Envelope.toJSON(e.content.dsseEnvelope)),t}};function dg(e){return e!=null}});var oY=G(Ti=>{\"use strict\";Object.defineProperty(Ti,\"__esModule\",{value:!0});Ti.ClientTrustConfig=Ti.SigningConfig=Ti.TrustedRoot=Ti.CertificateAuthority=Ti.TransparencyLogInstance=void 0;var Sl=Lw();Ti.TransparencyLogInstance={fromJSON(e){return{baseUrl:la(e.baseUrl)?globalThis.String(e.baseUrl):\"\",hashAlgorithm:la(e.hashAlgorithm)?(0,Sl.hashAlgorithmFromJSON)(e.hashAlgorithm):0,publicKey:la(e.publicKey)?Sl.PublicKey.fromJSON(e.publicKey):void 0,logId:la(e.logId)?Sl.LogId.fromJSON(e.logId):void 0,checkpointKeyId:la(e.checkpointKeyId)?Sl.LogId.fromJSON(e.checkpointKeyId):void 0}},toJSON(e){let t={};return e.baseUrl!==\"\"&&(t.baseUrl=e.baseUrl),e.hashAlgorithm!==0&&(t.hashAlgorithm=(0,Sl.hashAlgorithmToJSON)(e.hashAlgorithm)),e.publicKey!==void 0&&(t.publicKey=Sl.PublicKey.toJSON(e.publicKey)),e.logId!==void 0&&(t.logId=Sl.LogId.toJSON(e.logId)),e.checkpointKeyId!==void 0&&(t.checkpointKeyId=Sl.LogId.toJSON(e.checkpointKeyId)),t}};Ti.CertificateAuthority={fromJSON(e){return{subject:la(e.subject)?Sl.DistinguishedName.fromJSON(e.subject):void 0,uri:la(e.uri)?globalThis.String(e.uri):\"\",certChain:la(e.certChain)?Sl.X509CertificateChain.fromJSON(e.certChain):void 0,validFor:la(e.validFor)?Sl.TimeRange.fromJSON(e.validFor):void 0}},toJSON(e){let t={};return e.subject!==void 0&&(t.subject=Sl.DistinguishedName.toJSON(e.subject)),e.uri!==\"\"&&(t.uri=e.uri),e.certChain!==void 0&&(t.certChain=Sl.X509CertificateChain.toJSON(e.certChain)),e.validFor!==void 0&&(t.validFor=Sl.TimeRange.toJSON(e.validFor)),t}};Ti.TrustedRoot={fromJSON(e){return{mediaType:la(e.mediaType)?globalThis.String(e.mediaType):\"\",tlogs:globalThis.Array.isArray(e?.tlogs)?e.tlogs.map(t=>Ti.TransparencyLogInstance.fromJSON(t)):[],certificateAuthorities:globalThis.Array.isArray(e?.certificateAuthorities)?e.certificateAuthorities.map(t=>Ti.CertificateAuthority.fromJSON(t)):[],ctlogs:globalThis.Array.isArray(e?.ctlogs)?e.ctlogs.map(t=>Ti.TransparencyLogInstance.fromJSON(t)):[],timestampAuthorities:globalThis.Array.isArray(e?.timestampAuthorities)?e.timestampAuthorities.map(t=>Ti.CertificateAuthority.fromJSON(t)):[]}},toJSON(e){let t={};return e.mediaType!==\"\"&&(t.mediaType=e.mediaType),e.tlogs?.length&&(t.tlogs=e.tlogs.map(r=>Ti.TransparencyLogInstance.toJSON(r))),e.certificateAuthorities?.length&&(t.certificateAuthorities=e.certificateAuthorities.map(r=>Ti.CertificateAuthority.toJSON(r))),e.ctlogs?.length&&(t.ctlogs=e.ctlogs.map(r=>Ti.TransparencyLogInstance.toJSON(r))),e.timestampAuthorities?.length&&(t.timestampAuthorities=e.timestampAuthorities.map(r=>Ti.CertificateAuthority.toJSON(r))),t}};Ti.SigningConfig={fromJSON(e){return{mediaType:la(e.mediaType)?globalThis.String(e.mediaType):\"\",caUrl:la(e.caUrl)?globalThis.String(e.caUrl):\"\",oidcUrl:la(e.oidcUrl)?globalThis.String(e.oidcUrl):\"\",tlogUrls:globalThis.Array.isArray(e?.tlogUrls)?e.tlogUrls.map(t=>globalThis.String(t)):[],tsaUrls:globalThis.Array.isArray(e?.tsaUrls)?e.tsaUrls.map(t=>globalThis.String(t)):[]}},toJSON(e){let t={};return e.mediaType!==\"\"&&(t.mediaType=e.mediaType),e.caUrl!==\"\"&&(t.caUrl=e.caUrl),e.oidcUrl!==\"\"&&(t.oidcUrl=e.oidcUrl),e.tlogUrls?.length&&(t.tlogUrls=e.tlogUrls),e.tsaUrls?.length&&(t.tsaUrls=e.tsaUrls),t}};Ti.ClientTrustConfig={fromJSON(e){return{mediaType:la(e.mediaType)?globalThis.String(e.mediaType):\"\",trustedRoot:la(e.trustedRoot)?Ti.TrustedRoot.fromJSON(e.trustedRoot):void 0,signingConfig:la(e.signingConfig)?Ti.SigningConfig.fromJSON(e.signingConfig):void 0}},toJSON(e){let t={};return e.mediaType!==\"\"&&(t.mediaType=e.mediaType),e.trustedRoot!==void 0&&(t.trustedRoot=Ti.TrustedRoot.toJSON(e.trustedRoot)),e.signingConfig!==void 0&&(t.signingConfig=Ti.SigningConfig.toJSON(e.signingConfig)),t}};function la(e){return e!=null}});var q2e=G(Yr=>{\"use strict\";Object.defineProperty(Yr,\"__esModule\",{value:!0});Yr.Input=Yr.Artifact=Yr.ArtifactVerificationOptions_ObserverTimestampOptions=Yr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions=Yr.ArtifactVerificationOptions_TimestampAuthorityOptions=Yr.ArtifactVerificationOptions_CtlogOptions=Yr.ArtifactVerificationOptions_TlogOptions=Yr.ArtifactVerificationOptions=Yr.PublicKeyIdentities=Yr.CertificateIdentities=Yr.CertificateIdentity=void 0;var j2e=sY(),mg=Lw(),G2e=oY();Yr.CertificateIdentity={fromJSON(e){return{issuer:di(e.issuer)?globalThis.String(e.issuer):\"\",san:di(e.san)?mg.SubjectAlternativeName.fromJSON(e.san):void 0,oids:globalThis.Array.isArray(e?.oids)?e.oids.map(t=>mg.ObjectIdentifierValuePair.fromJSON(t)):[]}},toJSON(e){let t={};return e.issuer!==\"\"&&(t.issuer=e.issuer),e.san!==void 0&&(t.san=mg.SubjectAlternativeName.toJSON(e.san)),e.oids?.length&&(t.oids=e.oids.map(r=>mg.ObjectIdentifierValuePair.toJSON(r))),t}};Yr.CertificateIdentities={fromJSON(e){return{identities:globalThis.Array.isArray(e?.identities)?e.identities.map(t=>Yr.CertificateIdentity.fromJSON(t)):[]}},toJSON(e){let t={};return e.identities?.length&&(t.identities=e.identities.map(r=>Yr.CertificateIdentity.toJSON(r))),t}};Yr.PublicKeyIdentities={fromJSON(e){return{publicKeys:globalThis.Array.isArray(e?.publicKeys)?e.publicKeys.map(t=>mg.PublicKey.fromJSON(t)):[]}},toJSON(e){let t={};return e.publicKeys?.length&&(t.publicKeys=e.publicKeys.map(r=>mg.PublicKey.toJSON(r))),t}};Yr.ArtifactVerificationOptions={fromJSON(e){return{signers:di(e.certificateIdentities)?{$case:\"certificateIdentities\",certificateIdentities:Yr.CertificateIdentities.fromJSON(e.certificateIdentities)}:di(e.publicKeys)?{$case:\"publicKeys\",publicKeys:Yr.PublicKeyIdentities.fromJSON(e.publicKeys)}:void 0,tlogOptions:di(e.tlogOptions)?Yr.ArtifactVerificationOptions_TlogOptions.fromJSON(e.tlogOptions):void 0,ctlogOptions:di(e.ctlogOptions)?Yr.ArtifactVerificationOptions_CtlogOptions.fromJSON(e.ctlogOptions):void 0,tsaOptions:di(e.tsaOptions)?Yr.ArtifactVerificationOptions_TimestampAuthorityOptions.fromJSON(e.tsaOptions):void 0,integratedTsOptions:di(e.integratedTsOptions)?Yr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.fromJSON(e.integratedTsOptions):void 0,observerOptions:di(e.observerOptions)?Yr.ArtifactVerificationOptions_ObserverTimestampOptions.fromJSON(e.observerOptions):void 0}},toJSON(e){let t={};return e.signers?.$case===\"certificateIdentities\"?t.certificateIdentities=Yr.CertificateIdentities.toJSON(e.signers.certificateIdentities):e.signers?.$case===\"publicKeys\"&&(t.publicKeys=Yr.PublicKeyIdentities.toJSON(e.signers.publicKeys)),e.tlogOptions!==void 0&&(t.tlogOptions=Yr.ArtifactVerificationOptions_TlogOptions.toJSON(e.tlogOptions)),e.ctlogOptions!==void 0&&(t.ctlogOptions=Yr.ArtifactVerificationOptions_CtlogOptions.toJSON(e.ctlogOptions)),e.tsaOptions!==void 0&&(t.tsaOptions=Yr.ArtifactVerificationOptions_TimestampAuthorityOptions.toJSON(e.tsaOptions)),e.integratedTsOptions!==void 0&&(t.integratedTsOptions=Yr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.toJSON(e.integratedTsOptions)),e.observerOptions!==void 0&&(t.observerOptions=Yr.ArtifactVerificationOptions_ObserverTimestampOptions.toJSON(e.observerOptions)),t}};Yr.ArtifactVerificationOptions_TlogOptions={fromJSON(e){return{threshold:di(e.threshold)?globalThis.Number(e.threshold):0,performOnlineVerification:di(e.performOnlineVerification)?globalThis.Boolean(e.performOnlineVerification):!1,disable:di(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.performOnlineVerification!==!1&&(t.performOnlineVerification=e.performOnlineVerification),e.disable!==!1&&(t.disable=e.disable),t}};Yr.ArtifactVerificationOptions_CtlogOptions={fromJSON(e){return{threshold:di(e.threshold)?globalThis.Number(e.threshold):0,disable:di(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.disable!==!1&&(t.disable=e.disable),t}};Yr.ArtifactVerificationOptions_TimestampAuthorityOptions={fromJSON(e){return{threshold:di(e.threshold)?globalThis.Number(e.threshold):0,disable:di(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.disable!==!1&&(t.disable=e.disable),t}};Yr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions={fromJSON(e){return{threshold:di(e.threshold)?globalThis.Number(e.threshold):0,disable:di(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.disable!==!1&&(t.disable=e.disable),t}};Yr.ArtifactVerificationOptions_ObserverTimestampOptions={fromJSON(e){return{threshold:di(e.threshold)?globalThis.Number(e.threshold):0,disable:di(e.disable)?globalThis.Boolean(e.disable):!1}},toJSON(e){let t={};return e.threshold!==0&&(t.threshold=Math.round(e.threshold)),e.disable!==!1&&(t.disable=e.disable),t}};Yr.Artifact={fromJSON(e){return{data:di(e.artifactUri)?{$case:\"artifactUri\",artifactUri:globalThis.String(e.artifactUri)}:di(e.artifact)?{$case:\"artifact\",artifact:Buffer.from(Omt(e.artifact))}:di(e.artifactDigest)?{$case:\"artifactDigest\",artifactDigest:mg.HashOutput.fromJSON(e.artifactDigest)}:void 0}},toJSON(e){let t={};return e.data?.$case===\"artifactUri\"?t.artifactUri=e.data.artifactUri:e.data?.$case===\"artifact\"?t.artifact=Lmt(e.data.artifact):e.data?.$case===\"artifactDigest\"&&(t.artifactDigest=mg.HashOutput.toJSON(e.data.artifactDigest)),t}};Yr.Input={fromJSON(e){return{artifactTrustRoot:di(e.artifactTrustRoot)?G2e.TrustedRoot.fromJSON(e.artifactTrustRoot):void 0,artifactVerificationOptions:di(e.artifactVerificationOptions)?Yr.ArtifactVerificationOptions.fromJSON(e.artifactVerificationOptions):void 0,bundle:di(e.bundle)?j2e.Bundle.fromJSON(e.bundle):void 0,artifact:di(e.artifact)?Yr.Artifact.fromJSON(e.artifact):void 0}},toJSON(e){let t={};return e.artifactTrustRoot!==void 0&&(t.artifactTrustRoot=G2e.TrustedRoot.toJSON(e.artifactTrustRoot)),e.artifactVerificationOptions!==void 0&&(t.artifactVerificationOptions=Yr.ArtifactVerificationOptions.toJSON(e.artifactVerificationOptions)),e.bundle!==void 0&&(t.bundle=j2e.Bundle.toJSON(e.bundle)),e.artifact!==void 0&&(t.artifact=Yr.Artifact.toJSON(e.artifact)),t}};function Omt(e){return Uint8Array.from(globalThis.Buffer.from(e,\"base64\"))}function Lmt(e){return globalThis.Buffer.from(e).toString(\"base64\")}function di(e){return e!=null}});var yb=G(zc=>{\"use strict\";var Mmt=zc&&zc.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||(\"get\"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Mw=zc&&zc.__exportStar||function(e,t){for(var r in e)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(t,r)&&Mmt(t,e,r)};Object.defineProperty(zc,\"__esModule\",{value:!0});Mw(nY(),zc);Mw(sY(),zc);Mw(Lw(),zc);Mw(iY(),zc);Mw(oY(),zc);Mw(q2e(),zc)});var QN=G(Dl=>{\"use strict\";Object.defineProperty(Dl,\"__esModule\",{value:!0});Dl.BUNDLE_V03_MEDIA_TYPE=Dl.BUNDLE_V03_LEGACY_MEDIA_TYPE=Dl.BUNDLE_V02_MEDIA_TYPE=Dl.BUNDLE_V01_MEDIA_TYPE=void 0;Dl.isBundleWithCertificateChain=Umt;Dl.isBundleWithPublicKey=_mt;Dl.isBundleWithMessageSignature=Hmt;Dl.isBundleWithDsseEnvelope=jmt;Dl.BUNDLE_V01_MEDIA_TYPE=\"application/vnd.dev.sigstore.bundle+json;version=0.1\";Dl.BUNDLE_V02_MEDIA_TYPE=\"application/vnd.dev.sigstore.bundle+json;version=0.2\";Dl.BUNDLE_V03_LEGACY_MEDIA_TYPE=\"application/vnd.dev.sigstore.bundle+json;version=0.3\";Dl.BUNDLE_V03_MEDIA_TYPE=\"application/vnd.dev.sigstore.bundle.v0.3+json\";function Umt(e){return e.verificationMaterial.content.$case===\"x509CertificateChain\"}function _mt(e){return e.verificationMaterial.content.$case===\"publicKey\"}function Hmt(e){return e.content.$case===\"messageSignature\"}function jmt(e){return e.content.$case===\"dsseEnvelope\"}});var V2e=G(TN=>{\"use strict\";Object.defineProperty(TN,\"__esModule\",{value:!0});TN.toMessageSignatureBundle=qmt;TN.toDSSEBundle=Wmt;var Gmt=yb(),RN=QN();function qmt(e){return{mediaType:e.certificateChain?RN.BUNDLE_V02_MEDIA_TYPE:RN.BUNDLE_V03_MEDIA_TYPE,content:{$case:\"messageSignature\",messageSignature:{messageDigest:{algorithm:Gmt.HashAlgorithm.SHA2_256,digest:e.digest},signature:e.signature}},verificationMaterial:W2e(e)}}function Wmt(e){return{mediaType:e.certificateChain?RN.BUNDLE_V02_MEDIA_TYPE:RN.BUNDLE_V03_MEDIA_TYPE,content:{$case:\"dsseEnvelope\",dsseEnvelope:Vmt(e)},verificationMaterial:W2e(e)}}function Vmt(e){return{payloadType:e.artifactType,payload:e.artifact,signatures:[Ymt(e)]}}function Ymt(e){return{keyid:e.keyHint||\"\",sig:e.signature}}function W2e(e){return{content:Kmt(e),tlogEntries:[],timestampVerificationData:{rfc3161Timestamps:[]}}}function Kmt(e){return e.certificate?e.certificateChain?{$case:\"x509CertificateChain\",x509CertificateChain:{certificates:[{rawBytes:e.certificate}]}}:{$case:\"certificate\",certificate:{rawBytes:e.certificate}}:{$case:\"publicKey\",publicKey:{hint:e.keyHint||\"\"}}}});var lY=G(FN=>{\"use strict\";Object.defineProperty(FN,\"__esModule\",{value:!0});FN.ValidationError=void 0;var aY=class extends Error{constructor(t,r){super(t),this.fields=r}};FN.ValidationError=aY});var cY=G(ny=>{\"use strict\";Object.defineProperty(ny,\"__esModule\",{value:!0});ny.assertBundle=Jmt;ny.assertBundleV01=Y2e;ny.isBundleV01=zmt;ny.assertBundleV02=Zmt;ny.assertBundleLatest=Xmt;var NN=lY();function Jmt(e){let t=ON(e);if(t.length>0)throw new NN.ValidationError(\"invalid bundle\",t)}function Y2e(e){let t=[];if(t.push(...ON(e)),t.push(...$mt(e)),t.length>0)throw new NN.ValidationError(\"invalid v0.1 bundle\",t)}function zmt(e){try{return Y2e(e),!0}catch{return!1}}function Zmt(e){let t=[];if(t.push(...ON(e)),t.push(...K2e(e)),t.length>0)throw new NN.ValidationError(\"invalid v0.2 bundle\",t)}function Xmt(e){let t=[];if(t.push(...ON(e)),t.push(...K2e(e)),t.push(...eyt(e)),t.length>0)throw new NN.ValidationError(\"invalid bundle\",t)}function ON(e){let t=[];if((e.mediaType===void 0||!e.mediaType.match(/^application\\/vnd\\.dev\\.sigstore\\.bundle\\+json;version=\\d\\.\\d/)&&!e.mediaType.match(/^application\\/vnd\\.dev\\.sigstore\\.bundle\\.v\\d\\.\\d\\+json/))&&t.push(\"mediaType\"),e.content===void 0)t.push(\"content\");else switch(e.content.$case){case\"messageSignature\":e.content.messageSignature.messageDigest===void 0?t.push(\"content.messageSignature.messageDigest\"):e.content.messageSignature.messageDigest.digest.length===0&&t.push(\"content.messageSignature.messageDigest.digest\"),e.content.messageSignature.signature.length===0&&t.push(\"content.messageSignature.signature\");break;case\"dsseEnvelope\":e.content.dsseEnvelope.payload.length===0&&t.push(\"content.dsseEnvelope.payload\"),e.content.dsseEnvelope.signatures.length!==1?t.push(\"content.dsseEnvelope.signatures\"):e.content.dsseEnvelope.signatures[0].sig.length===0&&t.push(\"content.dsseEnvelope.signatures[0].sig\");break}if(e.verificationMaterial===void 0)t.push(\"verificationMaterial\");else{if(e.verificationMaterial.content===void 0)t.push(\"verificationMaterial.content\");else switch(e.verificationMaterial.content.$case){case\"x509CertificateChain\":e.verificationMaterial.content.x509CertificateChain.certificates.length===0&&t.push(\"verificationMaterial.content.x509CertificateChain.certificates\"),e.verificationMaterial.content.x509CertificateChain.certificates.forEach((r,s)=>{r.rawBytes.length===0&&t.push(`verificationMaterial.content.x509CertificateChain.certificates[${s}].rawBytes`)});break;case\"certificate\":e.verificationMaterial.content.certificate.rawBytes.length===0&&t.push(\"verificationMaterial.content.certificate.rawBytes\");break}e.verificationMaterial.tlogEntries===void 0?t.push(\"verificationMaterial.tlogEntries\"):e.verificationMaterial.tlogEntries.length>0&&e.verificationMaterial.tlogEntries.forEach((r,s)=>{r.logId===void 0&&t.push(`verificationMaterial.tlogEntries[${s}].logId`),r.kindVersion===void 0&&t.push(`verificationMaterial.tlogEntries[${s}].kindVersion`)})}return t}function $mt(e){let t=[];return e.verificationMaterial&&e.verificationMaterial.tlogEntries?.length>0&&e.verificationMaterial.tlogEntries.forEach((r,s)=>{r.inclusionPromise===void 0&&t.push(`verificationMaterial.tlogEntries[${s}].inclusionPromise`)}),t}function K2e(e){let t=[];return e.verificationMaterial&&e.verificationMaterial.tlogEntries?.length>0&&e.verificationMaterial.tlogEntries.forEach((r,s)=>{r.inclusionProof===void 0?t.push(`verificationMaterial.tlogEntries[${s}].inclusionProof`):r.inclusionProof.checkpoint===void 0&&t.push(`verificationMaterial.tlogEntries[${s}].inclusionProof.checkpoint`)}),t}function eyt(e){let t=[];return e.verificationMaterial?.content?.$case===\"x509CertificateChain\"&&t.push(\"verificationMaterial.content.$case\"),t}});var z2e=G(vA=>{\"use strict\";Object.defineProperty(vA,\"__esModule\",{value:!0});vA.envelopeToJSON=vA.envelopeFromJSON=vA.bundleToJSON=vA.bundleFromJSON=void 0;var LN=yb(),J2e=QN(),uY=cY(),tyt=e=>{let t=LN.Bundle.fromJSON(e);switch(t.mediaType){case J2e.BUNDLE_V01_MEDIA_TYPE:(0,uY.assertBundleV01)(t);break;case J2e.BUNDLE_V02_MEDIA_TYPE:(0,uY.assertBundleV02)(t);break;default:(0,uY.assertBundleLatest)(t);break}return t};vA.bundleFromJSON=tyt;var ryt=e=>LN.Bundle.toJSON(e);vA.bundleToJSON=ryt;var nyt=e=>LN.Envelope.fromJSON(e);vA.envelopeFromJSON=nyt;var iyt=e=>LN.Envelope.toJSON(e);vA.envelopeToJSON=iyt});var Ib=G(Zr=>{\"use strict\";Object.defineProperty(Zr,\"__esModule\",{value:!0});Zr.isBundleV01=Zr.assertBundleV02=Zr.assertBundleV01=Zr.assertBundleLatest=Zr.assertBundle=Zr.envelopeToJSON=Zr.envelopeFromJSON=Zr.bundleToJSON=Zr.bundleFromJSON=Zr.ValidationError=Zr.isBundleWithPublicKey=Zr.isBundleWithMessageSignature=Zr.isBundleWithDsseEnvelope=Zr.isBundleWithCertificateChain=Zr.BUNDLE_V03_MEDIA_TYPE=Zr.BUNDLE_V03_LEGACY_MEDIA_TYPE=Zr.BUNDLE_V02_MEDIA_TYPE=Zr.BUNDLE_V01_MEDIA_TYPE=Zr.toMessageSignatureBundle=Zr.toDSSEBundle=void 0;var Z2e=V2e();Object.defineProperty(Zr,\"toDSSEBundle\",{enumerable:!0,get:function(){return Z2e.toDSSEBundle}});Object.defineProperty(Zr,\"toMessageSignatureBundle\",{enumerable:!0,get:function(){return Z2e.toMessageSignatureBundle}});var yg=QN();Object.defineProperty(Zr,\"BUNDLE_V01_MEDIA_TYPE\",{enumerable:!0,get:function(){return yg.BUNDLE_V01_MEDIA_TYPE}});Object.defineProperty(Zr,\"BUNDLE_V02_MEDIA_TYPE\",{enumerable:!0,get:function(){return yg.BUNDLE_V02_MEDIA_TYPE}});Object.defineProperty(Zr,\"BUNDLE_V03_LEGACY_MEDIA_TYPE\",{enumerable:!0,get:function(){return yg.BUNDLE_V03_LEGACY_MEDIA_TYPE}});Object.defineProperty(Zr,\"BUNDLE_V03_MEDIA_TYPE\",{enumerable:!0,get:function(){return yg.BUNDLE_V03_MEDIA_TYPE}});Object.defineProperty(Zr,\"isBundleWithCertificateChain\",{enumerable:!0,get:function(){return yg.isBundleWithCertificateChain}});Object.defineProperty(Zr,\"isBundleWithDsseEnvelope\",{enumerable:!0,get:function(){return yg.isBundleWithDsseEnvelope}});Object.defineProperty(Zr,\"isBundleWithMessageSignature\",{enumerable:!0,get:function(){return yg.isBundleWithMessageSignature}});Object.defineProperty(Zr,\"isBundleWithPublicKey\",{enumerable:!0,get:function(){return yg.isBundleWithPublicKey}});var syt=lY();Object.defineProperty(Zr,\"ValidationError\",{enumerable:!0,get:function(){return syt.ValidationError}});var MN=z2e();Object.defineProperty(Zr,\"bundleFromJSON\",{enumerable:!0,get:function(){return MN.bundleFromJSON}});Object.defineProperty(Zr,\"bundleToJSON\",{enumerable:!0,get:function(){return MN.bundleToJSON}});Object.defineProperty(Zr,\"envelopeFromJSON\",{enumerable:!0,get:function(){return MN.envelopeFromJSON}});Object.defineProperty(Zr,\"envelopeToJSON\",{enumerable:!0,get:function(){return MN.envelopeToJSON}});var Eb=cY();Object.defineProperty(Zr,\"assertBundle\",{enumerable:!0,get:function(){return Eb.assertBundle}});Object.defineProperty(Zr,\"assertBundleLatest\",{enumerable:!0,get:function(){return Eb.assertBundleLatest}});Object.defineProperty(Zr,\"assertBundleV01\",{enumerable:!0,get:function(){return Eb.assertBundleV01}});Object.defineProperty(Zr,\"assertBundleV02\",{enumerable:!0,get:function(){return Eb.assertBundleV02}});Object.defineProperty(Zr,\"isBundleV01\",{enumerable:!0,get:function(){return Eb.isBundleV01}})});var Cb=G(_N=>{\"use strict\";Object.defineProperty(_N,\"__esModule\",{value:!0});_N.ByteStream=void 0;var fY=class extends Error{},UN=class e{constructor(t){this.start=0,t?(this.buf=t,this.view=Buffer.from(t)):(this.buf=new ArrayBuffer(0),this.view=Buffer.from(this.buf))}get buffer(){return this.view.subarray(0,this.start)}get length(){return this.view.byteLength}get position(){return this.start}seek(t){this.start=t}slice(t,r){let s=t+r;if(s>this.length)throw new fY(\"request past end of buffer\");return this.view.subarray(t,s)}appendChar(t){this.ensureCapacity(1),this.view[this.start]=t,this.start+=1}appendUint16(t){this.ensureCapacity(2);let r=new Uint16Array([t]),s=new Uint8Array(r.buffer);this.view[this.start]=s[1],this.view[this.start+1]=s[0],this.start+=2}appendUint24(t){this.ensureCapacity(3);let r=new Uint32Array([t]),s=new Uint8Array(r.buffer);this.view[this.start]=s[2],this.view[this.start+1]=s[1],this.view[this.start+2]=s[0],this.start+=3}appendView(t){this.ensureCapacity(t.length),this.view.set(t,this.start),this.start+=t.length}getBlock(t){if(t<=0)return Buffer.alloc(0);if(this.start+t>this.view.length)throw new Error(\"request past end of buffer\");let r=this.view.subarray(this.start,this.start+t);return this.start+=t,r}getUint8(){return this.getBlock(1)[0]}getUint16(){let t=this.getBlock(2);return t[0]<<8|t[1]}ensureCapacity(t){if(this.start+t>this.view.byteLength){let r=e.BLOCK_SIZE+(t>e.BLOCK_SIZE?t:0);this.realloc(this.view.byteLength+r)}}realloc(t){let r=new ArrayBuffer(t),s=Buffer.from(r);s.set(this.view),this.buf=r,this.view=s}};_N.ByteStream=UN;UN.BLOCK_SIZE=1024});var HN=G(Uw=>{\"use strict\";Object.defineProperty(Uw,\"__esModule\",{value:!0});Uw.ASN1TypeError=Uw.ASN1ParseError=void 0;var AY=class extends Error{};Uw.ASN1ParseError=AY;var pY=class extends Error{};Uw.ASN1TypeError=pY});var $2e=G(jN=>{\"use strict\";Object.defineProperty(jN,\"__esModule\",{value:!0});jN.decodeLength=oyt;jN.encodeLength=ayt;var X2e=HN();function oyt(e){let t=e.getUint8();if(!(t&128))return t;let r=t&127;if(r>6)throw new X2e.ASN1ParseError(\"length exceeds 6 byte limit\");let s=0;for(let a=0;a<r;a++)s=s*256+e.getUint8();if(s===0)throw new X2e.ASN1ParseError(\"indefinite length encoding not supported\");return s}function ayt(e){if(e<128)return Buffer.from([e]);let t=BigInt(e),r=[];for(;t>0n;)r.unshift(Number(t&255n)),t=t>>8n;return Buffer.from([128|r.length,...r])}});var tve=G(Eg=>{\"use strict\";Object.defineProperty(Eg,\"__esModule\",{value:!0});Eg.parseInteger=uyt;Eg.parseStringASCII=eve;Eg.parseTime=fyt;Eg.parseOID=Ayt;Eg.parseBoolean=pyt;Eg.parseBitString=hyt;var lyt=/^(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\.\\d{3})?Z$/,cyt=/^(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\.\\d{3})?Z$/;function uyt(e){let t=0,r=e.length,s=e[t],a=s>127,n=a?255:0;for(;s==n&&++t<r;)s=e[t];if(r-t===0)return BigInt(a?-1:0);s=a?s-256:s;let f=BigInt(s);for(let p=t+1;p<r;++p)f=f*BigInt(256)+BigInt(e[p]);return f}function eve(e){return e.toString(\"ascii\")}function fyt(e,t){let r=eve(e),s=t?lyt.exec(r):cyt.exec(r);if(!s)throw new Error(\"invalid time\");if(t){let a=Number(s[1]);a+=a>=50?1900:2e3,s[1]=a.toString()}return new Date(`${s[1]}-${s[2]}-${s[3]}T${s[4]}:${s[5]}:${s[6]}Z`)}function Ayt(e){let t=0,r=e.length,s=e[t++],a=Math.floor(s/40),n=s%40,c=`${a}.${n}`,f=0;for(;t<r;++t)s=e[t],f=(f<<7)+(s&127),s&128||(c+=`.${f}`,f=0);return c}function pyt(e){return e[0]!==0}function hyt(e){let t=e[0],r=1,s=e.length,a=[];for(let n=r;n<s;++n){let c=e[n],f=n===s-1?t:0;for(let p=7;p>=f;--p)a.push(c>>p&1)}return a}});var nve=G(GN=>{\"use strict\";Object.defineProperty(GN,\"__esModule\",{value:!0});GN.ASN1Tag=void 0;var rve=HN(),iy={BOOLEAN:1,INTEGER:2,BIT_STRING:3,OCTET_STRING:4,OBJECT_IDENTIFIER:6,SEQUENCE:16,SET:17,PRINTABLE_STRING:19,UTC_TIME:23,GENERALIZED_TIME:24},hY={UNIVERSAL:0,APPLICATION:1,CONTEXT_SPECIFIC:2,PRIVATE:3},gY=class{constructor(t){if(this.number=t&31,this.constructed=(t&32)===32,this.class=t>>6,this.number===31)throw new rve.ASN1ParseError(\"long form tags not supported\");if(this.class===hY.UNIVERSAL&&this.number===0)throw new rve.ASN1ParseError(\"unsupported tag 0x00\")}isUniversal(){return this.class===hY.UNIVERSAL}isContextSpecific(t){let r=this.class===hY.CONTEXT_SPECIFIC;return t!==void 0?r&&this.number===t:r}isBoolean(){return this.isUniversal()&&this.number===iy.BOOLEAN}isInteger(){return this.isUniversal()&&this.number===iy.INTEGER}isBitString(){return this.isUniversal()&&this.number===iy.BIT_STRING}isOctetString(){return this.isUniversal()&&this.number===iy.OCTET_STRING}isOID(){return this.isUniversal()&&this.number===iy.OBJECT_IDENTIFIER}isUTCTime(){return this.isUniversal()&&this.number===iy.UTC_TIME}isGeneralizedTime(){return this.isUniversal()&&this.number===iy.GENERALIZED_TIME}toDER(){return this.number|(this.constructed?32:0)|this.class<<6}};GN.ASN1Tag=gY});var ave=G(WN=>{\"use strict\";Object.defineProperty(WN,\"__esModule\",{value:!0});WN.ASN1Obj=void 0;var dY=Cb(),sy=HN(),sve=$2e(),_w=tve(),gyt=nve(),qN=class{constructor(t,r,s){this.tag=t,this.value=r,this.subs=s}static parseBuffer(t){return ove(new dY.ByteStream(t))}toDER(){let t=new dY.ByteStream;if(this.subs.length>0)for(let a of this.subs)t.appendView(a.toDER());else t.appendView(this.value);let r=t.buffer,s=new dY.ByteStream;return s.appendChar(this.tag.toDER()),s.appendView((0,sve.encodeLength)(r.length)),s.appendView(r),s.buffer}toBoolean(){if(!this.tag.isBoolean())throw new sy.ASN1TypeError(\"not a boolean\");return(0,_w.parseBoolean)(this.value)}toInteger(){if(!this.tag.isInteger())throw new sy.ASN1TypeError(\"not an integer\");return(0,_w.parseInteger)(this.value)}toOID(){if(!this.tag.isOID())throw new sy.ASN1TypeError(\"not an OID\");return(0,_w.parseOID)(this.value)}toDate(){switch(!0){case this.tag.isUTCTime():return(0,_w.parseTime)(this.value,!0);case this.tag.isGeneralizedTime():return(0,_w.parseTime)(this.value,!1);default:throw new sy.ASN1TypeError(\"not a date\")}}toBitString(){if(!this.tag.isBitString())throw new sy.ASN1TypeError(\"not a bit string\");return(0,_w.parseBitString)(this.value)}};WN.ASN1Obj=qN;function ove(e){let t=new gyt.ASN1Tag(e.getUint8()),r=(0,sve.decodeLength)(e),s=e.slice(e.position,r),a=e.position,n=[];if(t.constructed)n=ive(e,r);else if(t.isOctetString())try{n=ive(e,r)}catch{}return n.length===0&&e.seek(a+r),new qN(t,s,n)}function ive(e,t){let r=e.position+t;if(r>e.length)throw new sy.ASN1ParseError(\"invalid length\");let s=[];for(;e.position<r;)s.push(ove(e));if(e.position!==r)throw new sy.ASN1ParseError(\"invalid length\");return s}});var YN=G(VN=>{\"use strict\";Object.defineProperty(VN,\"__esModule\",{value:!0});VN.ASN1Obj=void 0;var dyt=ave();Object.defineProperty(VN,\"ASN1Obj\",{enumerable:!0,get:function(){return dyt.ASN1Obj}})});var Hw=G(Ig=>{\"use strict\";var myt=Ig&&Ig.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ig,\"__esModule\",{value:!0});Ig.createPublicKey=yyt;Ig.digest=Eyt;Ig.verify=Iyt;Ig.bufferEqual=Cyt;var wb=myt(Ie(\"crypto\"));function yyt(e,t=\"spki\"){return typeof e==\"string\"?wb.default.createPublicKey(e):wb.default.createPublicKey({key:e,format:\"der\",type:t})}function Eyt(e,...t){let r=wb.default.createHash(e);for(let s of t)r.update(s);return r.digest()}function Iyt(e,t,r,s){try{return wb.default.verify(s,e,t,r)}catch{return!1}}function Cyt(e,t){try{return wb.default.timingSafeEqual(e,t)}catch{return!1}}});var lve=G(mY=>{\"use strict\";Object.defineProperty(mY,\"__esModule\",{value:!0});mY.preAuthEncoding=Byt;var wyt=\"DSSEv1\";function Byt(e,t){let r=[wyt,e.length,e,t.length,\"\"].join(\" \");return Buffer.concat([Buffer.from(r,\"ascii\"),t])}});var fve=G(KN=>{\"use strict\";Object.defineProperty(KN,\"__esModule\",{value:!0});KN.base64Encode=vyt;KN.base64Decode=Syt;var cve=\"base64\",uve=\"utf-8\";function vyt(e){return Buffer.from(e,uve).toString(cve)}function Syt(e){return Buffer.from(e,cve).toString(uve)}});var Ave=G(EY=>{\"use strict\";Object.defineProperty(EY,\"__esModule\",{value:!0});EY.canonicalize=yY;function yY(e){let t=\"\";if(e===null||typeof e!=\"object\"||e.toJSON!=null)t+=JSON.stringify(e);else if(Array.isArray(e)){t+=\"[\";let r=!0;e.forEach(s=>{r||(t+=\",\"),r=!1,t+=yY(s)}),t+=\"]\"}else{t+=\"{\";let r=!0;Object.keys(e).sort().forEach(s=>{r||(t+=\",\"),r=!1,t+=JSON.stringify(s),t+=\":\",t+=yY(e[s])}),t+=\"}\"}return t}});var IY=G(JN=>{\"use strict\";Object.defineProperty(JN,\"__esModule\",{value:!0});JN.toDER=Pyt;JN.fromDER=xyt;var Dyt=/-----BEGIN (.*)-----/,byt=/-----END (.*)-----/;function Pyt(e){let t=\"\";return e.split(`\n`).forEach(r=>{r.match(Dyt)||r.match(byt)||(t+=r)}),Buffer.from(t,\"base64\")}function xyt(e,t=\"CERTIFICATE\"){let s=e.toString(\"base64\").match(/.{1,64}/g)||\"\";return[`-----BEGIN ${t}-----`,...s,`-----END ${t}-----`].join(`\n`).concat(`\n`)}});var zN=G(jw=>{\"use strict\";Object.defineProperty(jw,\"__esModule\",{value:!0});jw.SHA2_HASH_ALGOS=jw.ECDSA_SIGNATURE_ALGOS=void 0;jw.ECDSA_SIGNATURE_ALGOS={\"1.2.840.10045.4.3.1\":\"sha224\",\"1.2.840.10045.4.3.2\":\"sha256\",\"1.2.840.10045.4.3.3\":\"sha384\",\"1.2.840.10045.4.3.4\":\"sha512\"};jw.SHA2_HASH_ALGOS={\"2.16.840.1.101.3.4.2.1\":\"sha256\",\"2.16.840.1.101.3.4.2.2\":\"sha384\",\"2.16.840.1.101.3.4.2.3\":\"sha512\"}});var wY=G(ZN=>{\"use strict\";Object.defineProperty(ZN,\"__esModule\",{value:!0});ZN.RFC3161TimestampVerificationError=void 0;var CY=class extends Error{};ZN.RFC3161TimestampVerificationError=CY});var hve=G(SA=>{\"use strict\";var kyt=SA&&SA.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||(\"get\"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Qyt=SA&&SA.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ryt=SA&&SA.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r)&&kyt(t,e,r);return Qyt(t,e),t};Object.defineProperty(SA,\"__esModule\",{value:!0});SA.TSTInfo=void 0;var pve=Ryt(Hw()),Tyt=zN(),Fyt=wY(),BY=class{constructor(t){this.root=t}get version(){return this.root.subs[0].toInteger()}get genTime(){return this.root.subs[4].toDate()}get messageImprintHashAlgorithm(){let t=this.messageImprintObj.subs[0].subs[0].toOID();return Tyt.SHA2_HASH_ALGOS[t]}get messageImprintHashedMessage(){return this.messageImprintObj.subs[1].value}get raw(){return this.root.toDER()}verify(t){let r=pve.digest(this.messageImprintHashAlgorithm,t);if(!pve.bufferEqual(r,this.messageImprintHashedMessage))throw new Fyt.RFC3161TimestampVerificationError(\"message imprint does not match artifact\")}get messageImprintObj(){return this.root.subs[2]}};SA.TSTInfo=BY});var dve=G(DA=>{\"use strict\";var Nyt=DA&&DA.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||(\"get\"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Oyt=DA&&DA.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Lyt=DA&&DA.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r)&&Nyt(t,e,r);return Oyt(t,e),t};Object.defineProperty(DA,\"__esModule\",{value:!0});DA.RFC3161Timestamp=void 0;var Myt=YN(),vY=Lyt(Hw()),gve=zN(),Bb=wY(),Uyt=hve(),_yt=\"1.2.840.113549.1.7.2\",Hyt=\"1.2.840.113549.1.9.16.1.4\",jyt=\"1.2.840.113549.1.9.4\",SY=class e{constructor(t){this.root=t}static parse(t){let r=Myt.ASN1Obj.parseBuffer(t);return new e(r)}get status(){return this.pkiStatusInfoObj.subs[0].toInteger()}get contentType(){return this.contentTypeObj.toOID()}get eContentType(){return this.eContentTypeObj.toOID()}get signingTime(){return this.tstInfo.genTime}get signerIssuer(){return this.signerSidObj.subs[0].value}get signerSerialNumber(){return this.signerSidObj.subs[1].value}get signerDigestAlgorithm(){let t=this.signerDigestAlgorithmObj.subs[0].toOID();return gve.SHA2_HASH_ALGOS[t]}get signatureAlgorithm(){let t=this.signatureAlgorithmObj.subs[0].toOID();return gve.ECDSA_SIGNATURE_ALGOS[t]}get signatureValue(){return this.signatureValueObj.value}get tstInfo(){return new Uyt.TSTInfo(this.eContentObj.subs[0].subs[0])}verify(t,r){if(!this.timeStampTokenObj)throw new Bb.RFC3161TimestampVerificationError(\"timeStampToken is missing\");if(this.contentType!==_yt)throw new Bb.RFC3161TimestampVerificationError(`incorrect content type: ${this.contentType}`);if(this.eContentType!==Hyt)throw new Bb.RFC3161TimestampVerificationError(`incorrect encapsulated content type: ${this.eContentType}`);this.tstInfo.verify(t),this.verifyMessageDigest(),this.verifySignature(r)}verifyMessageDigest(){let t=vY.digest(this.signerDigestAlgorithm,this.tstInfo.raw),r=this.messageDigestAttributeObj.subs[1].subs[0].value;if(!vY.bufferEqual(t,r))throw new Bb.RFC3161TimestampVerificationError(\"signed data does not match tstInfo\")}verifySignature(t){let r=this.signedAttrsObj.toDER();if(r[0]=49,!vY.verify(r,t,this.signatureValue,this.signatureAlgorithm))throw new Bb.RFC3161TimestampVerificationError(\"signature verification failed\")}get pkiStatusInfoObj(){return this.root.subs[0]}get timeStampTokenObj(){return this.root.subs[1]}get contentTypeObj(){return this.timeStampTokenObj.subs[0]}get signedDataObj(){return this.timeStampTokenObj.subs.find(r=>r.tag.isContextSpecific(0)).subs[0]}get encapContentInfoObj(){return this.signedDataObj.subs[2]}get signerInfosObj(){let t=this.signedDataObj;return t.subs[t.subs.length-1]}get signerInfoObj(){return this.signerInfosObj.subs[0]}get eContentTypeObj(){return this.encapContentInfoObj.subs[0]}get eContentObj(){return this.encapContentInfoObj.subs[1]}get signedAttrsObj(){return this.signerInfoObj.subs.find(r=>r.tag.isContextSpecific(0))}get messageDigestAttributeObj(){return this.signedAttrsObj.subs.find(r=>r.subs[0].tag.isOID()&&r.subs[0].toOID()===jyt)}get signerSidObj(){return this.signerInfoObj.subs[1]}get signerDigestAlgorithmObj(){return this.signerInfoObj.subs[2]}get signatureAlgorithmObj(){return this.signerInfoObj.subs[4]}get signatureValueObj(){return this.signerInfoObj.subs[5]}};DA.RFC3161Timestamp=SY});var mve=G(XN=>{\"use strict\";Object.defineProperty(XN,\"__esModule\",{value:!0});XN.RFC3161Timestamp=void 0;var Gyt=dve();Object.defineProperty(XN,\"RFC3161Timestamp\",{enumerable:!0,get:function(){return Gyt.RFC3161Timestamp}})});var Eve=G(bA=>{\"use strict\";var qyt=bA&&bA.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||(\"get\"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Wyt=bA&&bA.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Vyt=bA&&bA.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r)&&qyt(t,e,r);return Wyt(t,e),t};Object.defineProperty(bA,\"__esModule\",{value:!0});bA.SignedCertificateTimestamp=void 0;var Yyt=Vyt(Hw()),yve=Cb(),DY=class e{constructor(t){this.version=t.version,this.logID=t.logID,this.timestamp=t.timestamp,this.extensions=t.extensions,this.hashAlgorithm=t.hashAlgorithm,this.signatureAlgorithm=t.signatureAlgorithm,this.signature=t.signature}get datetime(){return new Date(Number(this.timestamp.readBigInt64BE()))}get algorithm(){switch(this.hashAlgorithm){case 0:return\"none\";case 1:return\"md5\";case 2:return\"sha1\";case 3:return\"sha224\";case 4:return\"sha256\";case 5:return\"sha384\";case 6:return\"sha512\";default:return\"unknown\"}}verify(t,r){let s=new yve.ByteStream;return s.appendChar(this.version),s.appendChar(0),s.appendView(this.timestamp),s.appendUint16(1),s.appendView(t),s.appendUint16(this.extensions.byteLength),this.extensions.byteLength>0&&s.appendView(this.extensions),Yyt.verify(s.buffer,r,this.signature,this.algorithm)}static parse(t){let r=new yve.ByteStream(t),s=r.getUint8(),a=r.getBlock(32),n=r.getBlock(8),c=r.getUint16(),f=r.getBlock(c),p=r.getUint8(),h=r.getUint8(),E=r.getUint16(),C=r.getBlock(E);if(r.position!==t.length)throw new Error(\"SCT buffer length mismatch\");return new e({version:s,logID:a,timestamp:n,extensions:f,hashAlgorithm:p,signatureAlgorithm:h,signature:C})}};bA.SignedCertificateTimestamp=DY});var TY=G(ca=>{\"use strict\";Object.defineProperty(ca,\"__esModule\",{value:!0});ca.X509SCTExtension=ca.X509SubjectKeyIDExtension=ca.X509AuthorityKeyIDExtension=ca.X509SubjectAlternativeNameExtension=ca.X509KeyUsageExtension=ca.X509BasicConstraintsExtension=ca.X509Extension=void 0;var Kyt=Cb(),Jyt=Eve(),fh=class{constructor(t){this.root=t}get oid(){return this.root.subs[0].toOID()}get critical(){return this.root.subs.length===3?this.root.subs[1].toBoolean():!1}get value(){return this.extnValueObj.value}get valueObj(){return this.extnValueObj}get extnValueObj(){return this.root.subs[this.root.subs.length-1]}};ca.X509Extension=fh;var bY=class extends fh{get isCA(){return this.sequence.subs[0]?.toBoolean()??!1}get pathLenConstraint(){return this.sequence.subs.length>1?this.sequence.subs[1].toInteger():void 0}get sequence(){return this.extnValueObj.subs[0]}};ca.X509BasicConstraintsExtension=bY;var PY=class extends fh{get digitalSignature(){return this.bitString[0]===1}get keyCertSign(){return this.bitString[5]===1}get crlSign(){return this.bitString[6]===1}get bitString(){return this.extnValueObj.subs[0].toBitString()}};ca.X509KeyUsageExtension=PY;var xY=class extends fh{get rfc822Name(){return this.findGeneralName(1)?.value.toString(\"ascii\")}get uri(){return this.findGeneralName(6)?.value.toString(\"ascii\")}otherName(t){let r=this.findGeneralName(0);return r===void 0||r.subs[0].toOID()!==t?void 0:r.subs[1].subs[0].value.toString(\"ascii\")}findGeneralName(t){return this.generalNames.find(r=>r.tag.isContextSpecific(t))}get generalNames(){return this.extnValueObj.subs[0].subs}};ca.X509SubjectAlternativeNameExtension=xY;var kY=class extends fh{get keyIdentifier(){return this.findSequenceMember(0)?.value}findSequenceMember(t){return this.sequence.subs.find(r=>r.tag.isContextSpecific(t))}get sequence(){return this.extnValueObj.subs[0]}};ca.X509AuthorityKeyIDExtension=kY;var QY=class extends fh{get keyIdentifier(){return this.extnValueObj.subs[0].value}};ca.X509SubjectKeyIDExtension=QY;var RY=class extends fh{constructor(t){super(t)}get signedCertificateTimestamps(){let t=this.extnValueObj.subs[0].value,r=new Kyt.ByteStream(t),s=r.getUint16()+2,a=[];for(;r.position<s;){let n=r.getUint16(),c=r.getBlock(n);a.push(Jyt.SignedCertificateTimestamp.parse(c))}if(r.position!==s)throw new Error(\"SCT list length does not match actual length\");return a}};ca.X509SCTExtension=RY});var wve=G(sc=>{\"use strict\";var zyt=sc&&sc.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||(\"get\"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),Zyt=sc&&sc.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Cve=sc&&sc.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r)&&zyt(t,e,r);return Zyt(t,e),t};Object.defineProperty(sc,\"__esModule\",{value:!0});sc.X509Certificate=sc.EXTENSION_OID_SCT=void 0;var Xyt=YN(),Ive=Cve(Hw()),$yt=zN(),eEt=Cve(IY()),oy=TY(),tEt=\"2.5.29.14\",rEt=\"2.5.29.15\",nEt=\"2.5.29.17\",iEt=\"2.5.29.19\",sEt=\"2.5.29.35\";sc.EXTENSION_OID_SCT=\"1.3.6.1.4.1.11129.2.4.2\";var FY=class e{constructor(t){this.root=t}static parse(t){let r=typeof t==\"string\"?eEt.toDER(t):t,s=Xyt.ASN1Obj.parseBuffer(r);return new e(s)}get tbsCertificate(){return this.tbsCertificateObj}get version(){return`v${(this.versionObj.subs[0].toInteger()+BigInt(1)).toString()}`}get serialNumber(){return this.serialNumberObj.value}get notBefore(){return this.validityObj.subs[0].toDate()}get notAfter(){return this.validityObj.subs[1].toDate()}get issuer(){return this.issuerObj.value}get subject(){return this.subjectObj.value}get publicKey(){return this.subjectPublicKeyInfoObj.toDER()}get signatureAlgorithm(){let t=this.signatureAlgorithmObj.subs[0].toOID();return $yt.ECDSA_SIGNATURE_ALGOS[t]}get signatureValue(){return this.signatureValueObj.value.subarray(1)}get subjectAltName(){let t=this.extSubjectAltName;return t?.uri||t?.rfc822Name}get extensions(){return this.extensionsObj?.subs[0]?.subs||[]}get extKeyUsage(){let t=this.findExtension(rEt);return t?new oy.X509KeyUsageExtension(t):void 0}get extBasicConstraints(){let t=this.findExtension(iEt);return t?new oy.X509BasicConstraintsExtension(t):void 0}get extSubjectAltName(){let t=this.findExtension(nEt);return t?new oy.X509SubjectAlternativeNameExtension(t):void 0}get extAuthorityKeyID(){let t=this.findExtension(sEt);return t?new oy.X509AuthorityKeyIDExtension(t):void 0}get extSubjectKeyID(){let t=this.findExtension(tEt);return t?new oy.X509SubjectKeyIDExtension(t):void 0}get extSCT(){let t=this.findExtension(sc.EXTENSION_OID_SCT);return t?new oy.X509SCTExtension(t):void 0}get isCA(){let t=this.extBasicConstraints?.isCA||!1;return this.extKeyUsage?t&&this.extKeyUsage.keyCertSign:t}extension(t){let r=this.findExtension(t);return r?new oy.X509Extension(r):void 0}verify(t){let r=t?.publicKey||this.publicKey,s=Ive.createPublicKey(r);return Ive.verify(this.tbsCertificate.toDER(),s,this.signatureValue,this.signatureAlgorithm)}validForDate(t){return this.notBefore<=t&&t<=this.notAfter}equals(t){return this.root.toDER().equals(t.root.toDER())}clone(){let t=this.root.toDER(),r=Buffer.alloc(t.length);return t.copy(r),e.parse(r)}findExtension(t){return this.extensions.find(r=>r.subs[0].toOID()===t)}get tbsCertificateObj(){return this.root.subs[0]}get signatureAlgorithmObj(){return this.root.subs[1]}get signatureValueObj(){return this.root.subs[2]}get versionObj(){return this.tbsCertificateObj.subs[0]}get serialNumberObj(){return this.tbsCertificateObj.subs[1]}get issuerObj(){return this.tbsCertificateObj.subs[3]}get validityObj(){return this.tbsCertificateObj.subs[4]}get subjectObj(){return this.tbsCertificateObj.subs[5]}get subjectPublicKeyInfoObj(){return this.tbsCertificateObj.subs[6]}get extensionsObj(){return this.tbsCertificateObj.subs.find(t=>t.tag.isContextSpecific(3))}};sc.X509Certificate=FY});var vve=G(Cg=>{\"use strict\";Object.defineProperty(Cg,\"__esModule\",{value:!0});Cg.X509SCTExtension=Cg.X509Certificate=Cg.EXTENSION_OID_SCT=void 0;var Bve=wve();Object.defineProperty(Cg,\"EXTENSION_OID_SCT\",{enumerable:!0,get:function(){return Bve.EXTENSION_OID_SCT}});Object.defineProperty(Cg,\"X509Certificate\",{enumerable:!0,get:function(){return Bve.X509Certificate}});var oEt=TY();Object.defineProperty(Cg,\"X509SCTExtension\",{enumerable:!0,get:function(){return oEt.X509SCTExtension}})});var bl=G(zn=>{\"use strict\";var aEt=zn&&zn.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||(\"get\"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),lEt=zn&&zn.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),vb=zn&&zn.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r)&&aEt(t,e,r);return lEt(t,e),t};Object.defineProperty(zn,\"__esModule\",{value:!0});zn.X509SCTExtension=zn.X509Certificate=zn.EXTENSION_OID_SCT=zn.ByteStream=zn.RFC3161Timestamp=zn.pem=zn.json=zn.encoding=zn.dsse=zn.crypto=zn.ASN1Obj=void 0;var cEt=YN();Object.defineProperty(zn,\"ASN1Obj\",{enumerable:!0,get:function(){return cEt.ASN1Obj}});zn.crypto=vb(Hw());zn.dsse=vb(lve());zn.encoding=vb(fve());zn.json=vb(Ave());zn.pem=vb(IY());var uEt=mve();Object.defineProperty(zn,\"RFC3161Timestamp\",{enumerable:!0,get:function(){return uEt.RFC3161Timestamp}});var fEt=Cb();Object.defineProperty(zn,\"ByteStream\",{enumerable:!0,get:function(){return fEt.ByteStream}});var NY=vve();Object.defineProperty(zn,\"EXTENSION_OID_SCT\",{enumerable:!0,get:function(){return NY.EXTENSION_OID_SCT}});Object.defineProperty(zn,\"X509Certificate\",{enumerable:!0,get:function(){return NY.X509Certificate}});Object.defineProperty(zn,\"X509SCTExtension\",{enumerable:!0,get:function(){return NY.X509SCTExtension}})});var Sve=G(OY=>{\"use strict\";Object.defineProperty(OY,\"__esModule\",{value:!0});OY.extractJWTSubject=pEt;var AEt=bl();function pEt(e){let t=e.split(\".\",3),r=JSON.parse(AEt.encoding.base64Decode(t[1]));switch(r.iss){case\"https://accounts.google.com\":case\"https://oauth2.sigstore.dev/auth\":return r.email;default:return r.sub}}});var Dve=G((yer,hEt)=>{hEt.exports={name:\"@sigstore/sign\",version:\"3.1.0\",description:\"Sigstore signing library\",main:\"dist/index.js\",types:\"dist/index.d.ts\",scripts:{clean:\"shx rm -rf dist *.tsbuildinfo\",build:\"tsc --build\",test:\"jest\"},files:[\"dist\"],author:\"bdehamer@github.com\",license:\"Apache-2.0\",repository:{type:\"git\",url:\"git+https://github.com/sigstore/sigstore-js.git\"},bugs:{url:\"https://github.com/sigstore/sigstore-js/issues\"},homepage:\"https://github.com/sigstore/sigstore-js/tree/main/packages/sign#readme\",publishConfig:{provenance:!0},devDependencies:{\"@sigstore/jest\":\"^0.0.0\",\"@sigstore/mock\":\"^0.10.0\",\"@sigstore/rekor-types\":\"^3.0.0\",\"@types/make-fetch-happen\":\"^10.0.4\",\"@types/promise-retry\":\"^1.1.6\"},dependencies:{\"@sigstore/bundle\":\"^3.1.0\",\"@sigstore/core\":\"^2.0.0\",\"@sigstore/protobuf-specs\":\"^0.4.0\",\"make-fetch-happen\":\"^14.0.2\",\"proc-log\":\"^5.0.0\",\"promise-retry\":\"^2.0.1\"},engines:{node:\"^18.17.0 || >=20.5.0\"}}});var Pve=G(Gw=>{\"use strict\";var gEt=Gw&&Gw.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Gw,\"__esModule\",{value:!0});Gw.getUserAgent=void 0;var bve=gEt(Ie(\"os\")),dEt=()=>{let e=Dve().version,t=process.version,r=bve.default.platform(),s=bve.default.arch();return`sigstore-js/${e} (Node ${t}) (${r}/${s})`};Gw.getUserAgent=dEt});var wg=G(Ki=>{\"use strict\";var mEt=Ki&&Ki.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||(\"get\"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),yEt=Ki&&Ki.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),xve=Ki&&Ki.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var s=e(t),a=0;a<s.length;a++)s[a]!==\"default\"&&mEt(r,t,s[a]);return yEt(r,t),r}}();Object.defineProperty(Ki,\"__esModule\",{value:!0});Ki.ua=Ki.oidc=Ki.pem=Ki.json=Ki.encoding=Ki.dsse=Ki.crypto=void 0;var Sb=bl();Object.defineProperty(Ki,\"crypto\",{enumerable:!0,get:function(){return Sb.crypto}});Object.defineProperty(Ki,\"dsse\",{enumerable:!0,get:function(){return Sb.dsse}});Object.defineProperty(Ki,\"encoding\",{enumerable:!0,get:function(){return Sb.encoding}});Object.defineProperty(Ki,\"json\",{enumerable:!0,get:function(){return Sb.json}});Object.defineProperty(Ki,\"pem\",{enumerable:!0,get:function(){return Sb.pem}});Ki.oidc=xve(Sve());Ki.ua=xve(Pve())});var MY=G($N=>{\"use strict\";Object.defineProperty($N,\"__esModule\",{value:!0});$N.BaseBundleBuilder=void 0;var LY=class{constructor(t){this.signer=t.signer,this.witnesses=t.witnesses}async create(t){let r=await this.prepare(t).then(f=>this.signer.sign(f)),s=await this.package(t,r),a=await Promise.all(this.witnesses.map(f=>f.testify(s.content,EEt(r.key)))),n=[],c=[];return a.forEach(({tlogEntries:f,rfc3161Timestamps:p})=>{n.push(...f??[]),c.push(...p??[])}),s.verificationMaterial.tlogEntries=n,s.verificationMaterial.timestampVerificationData={rfc3161Timestamps:c},s}async prepare(t){return t.data}};$N.BaseBundleBuilder=LY;function EEt(e){switch(e.$case){case\"publicKey\":return e.publicKey;case\"x509Certificate\":return e.certificate}}});var _Y=G(PA=>{\"use strict\";var IEt=PA&&PA.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||(\"get\"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),CEt=PA&&PA.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),wEt=PA&&PA.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var s=e(t),a=0;a<s.length;a++)s[a]!==\"default\"&&IEt(r,t,s[a]);return CEt(r,t),r}}();Object.defineProperty(PA,\"__esModule\",{value:!0});PA.toMessageSignatureBundle=BEt;PA.toDSSEBundle=vEt;var kve=wEt(Ib()),UY=wg();function BEt(e,t){let r=UY.crypto.digest(\"sha256\",e.data);return kve.toMessageSignatureBundle({digest:r,signature:t.signature,certificate:t.key.$case===\"x509Certificate\"?UY.pem.toDER(t.key.certificate):void 0,keyHint:t.key.$case===\"publicKey\"?t.key.hint:void 0,certificateChain:!0})}function vEt(e,t,r){return kve.toDSSEBundle({artifact:e.data,artifactType:e.type,signature:t.signature,certificate:t.key.$case===\"x509Certificate\"?UY.pem.toDER(t.key.certificate):void 0,keyHint:t.key.$case===\"publicKey\"?t.key.hint:void 0,certificateChain:r})}});var Rve=G(eO=>{\"use strict\";Object.defineProperty(eO,\"__esModule\",{value:!0});eO.DSSEBundleBuilder=void 0;var SEt=wg(),DEt=MY(),bEt=_Y(),HY=class extends DEt.BaseBundleBuilder{constructor(t){super(t),this.certificateChain=t.certificateChain??!1}async prepare(t){let r=Qve(t);return SEt.dsse.preAuthEncoding(r.type,r.data)}async package(t,r){return(0,bEt.toDSSEBundle)(Qve(t),r,this.certificateChain)}};eO.DSSEBundleBuilder=HY;function Qve(e){return{...e,type:e.type??\"\"}}});var Tve=G(tO=>{\"use strict\";Object.defineProperty(tO,\"__esModule\",{value:!0});tO.MessageSignatureBundleBuilder=void 0;var PEt=MY(),xEt=_Y(),jY=class extends PEt.BaseBundleBuilder{constructor(t){super(t)}async package(t,r){return(0,xEt.toMessageSignatureBundle)(t,r)}};tO.MessageSignatureBundleBuilder=jY});var Fve=G(qw=>{\"use strict\";Object.defineProperty(qw,\"__esModule\",{value:!0});qw.MessageSignatureBundleBuilder=qw.DSSEBundleBuilder=void 0;var kEt=Rve();Object.defineProperty(qw,\"DSSEBundleBuilder\",{enumerable:!0,get:function(){return kEt.DSSEBundleBuilder}});var QEt=Tve();Object.defineProperty(qw,\"MessageSignatureBundleBuilder\",{enumerable:!0,get:function(){return QEt.MessageSignatureBundleBuilder}})});var nO=G(rO=>{\"use strict\";Object.defineProperty(rO,\"__esModule\",{value:!0});rO.HTTPError=void 0;var GY=class extends Error{constructor({status:t,message:r,location:s}){super(`(${t}) ${r}`),this.statusCode=t,this.location=s}};rO.HTTPError=GY});var Ww=G(Db=>{\"use strict\";Object.defineProperty(Db,\"__esModule\",{value:!0});Db.InternalError=void 0;Db.internalError=TEt;var REt=nO(),iO=class extends Error{constructor({code:t,message:r,cause:s}){super(r),this.name=this.constructor.name,this.cause=s,this.code=t}};Db.InternalError=iO;function TEt(e,t,r){throw e instanceof REt.HTTPError&&(r+=` - ${e.message}`),new iO({code:t,message:r,cause:e})}});var sO=G((Per,Nve)=>{Nve.exports=fetch});var Ove=G(Vw=>{\"use strict\";var FEt=Vw&&Vw.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Vw,\"__esModule\",{value:!0});Vw.CIContextProvider=void 0;var NEt=FEt(sO()),OEt=[LEt,MEt],qY=class{constructor(t=\"sigstore\"){this.audience=t}async getToken(){return Promise.any(OEt.map(t=>t(this.audience))).catch(()=>Promise.reject(\"CI: no tokens available\"))}};Vw.CIContextProvider=qY;async function LEt(e){if(!process.env.ACTIONS_ID_TOKEN_REQUEST_URL||!process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN)return Promise.reject(\"no token available\");let t=new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);return t.searchParams.append(\"audience\",e),(await(0,NEt.default)(t.href,{retry:2,headers:{Accept:\"application/json\",Authorization:`Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`}})).json().then(s=>s.value)}async function MEt(){return process.env.SIGSTORE_ID_TOKEN?process.env.SIGSTORE_ID_TOKEN:Promise.reject(\"no token available\")}});var Lve=G(oO=>{\"use strict\";Object.defineProperty(oO,\"__esModule\",{value:!0});oO.CIContextProvider=void 0;var UEt=Ove();Object.defineProperty(oO,\"CIContextProvider\",{enumerable:!0,get:function(){return UEt.CIContextProvider}})});var Uve=G((Qer,Mve)=>{var _Et=Symbol(\"proc-log.meta\");Mve.exports={META:_Et,output:{LEVELS:[\"standard\",\"error\",\"buffer\",\"flush\"],KEYS:{standard:\"standard\",error:\"error\",buffer:\"buffer\",flush:\"flush\"},standard:function(...e){return process.emit(\"output\",\"standard\",...e)},error:function(...e){return process.emit(\"output\",\"error\",...e)},buffer:function(...e){return process.emit(\"output\",\"buffer\",...e)},flush:function(...e){return process.emit(\"output\",\"flush\",...e)}},log:{LEVELS:[\"notice\",\"error\",\"warn\",\"info\",\"verbose\",\"http\",\"silly\",\"timing\",\"pause\",\"resume\"],KEYS:{notice:\"notice\",error:\"error\",warn:\"warn\",info:\"info\",verbose:\"verbose\",http:\"http\",silly:\"silly\",timing:\"timing\",pause:\"pause\",resume:\"resume\"},error:function(...e){return process.emit(\"log\",\"error\",...e)},notice:function(...e){return process.emit(\"log\",\"notice\",...e)},warn:function(...e){return process.emit(\"log\",\"warn\",...e)},info:function(...e){return process.emit(\"log\",\"info\",...e)},verbose:function(...e){return process.emit(\"log\",\"verbose\",...e)},http:function(...e){return process.emit(\"log\",\"http\",...e)},silly:function(...e){return process.emit(\"log\",\"silly\",...e)},timing:function(...e){return process.emit(\"log\",\"timing\",...e)},pause:function(){return process.emit(\"log\",\"pause\")},resume:function(){return process.emit(\"log\",\"resume\")}},time:{LEVELS:[\"start\",\"end\"],KEYS:{start:\"start\",end:\"end\"},start:function(e,t){process.emit(\"time\",\"start\",e);function r(){return process.emit(\"time\",\"end\",e)}if(typeof t==\"function\"){let s=t();return s&&s.finally?s.finally(r):(r(),s)}return r},end:function(e){return process.emit(\"time\",\"end\",e)}},input:{LEVELS:[\"start\",\"end\",\"read\"],KEYS:{start:\"start\",end:\"end\",read:\"read\"},start:function(e){process.emit(\"input\",\"start\");function t(){return process.emit(\"input\",\"end\")}if(typeof e==\"function\"){let r=e();return r&&r.finally?r.finally(t):(t(),r)}return t},end:function(){return process.emit(\"input\",\"end\")},read:function(...e){let t,r,s=new Promise((a,n)=>{t=a,r=n});return process.emit(\"input\",\"read\",t,r,...e),s}}}});var jve=G((Rer,Hve)=>{\"use strict\";function _ve(e,t){for(let r in t)Object.defineProperty(e,r,{value:t[r],enumerable:!0,configurable:!0});return e}function HEt(e,t,r){if(!e||typeof e==\"string\")throw new TypeError(\"Please pass an Error to err-code\");r||(r={}),typeof t==\"object\"&&(r=t,t=void 0),t!=null&&(r.code=t);try{return _ve(e,r)}catch{r.message=e.message,r.stack=e.stack;let a=function(){};return a.prototype=Object.create(Object.getPrototypeOf(e)),_ve(new a,r)}}Hve.exports=HEt});var qve=G((Ter,Gve)=>{function Zc(e,t){typeof t==\"boolean\"&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(e)),this._timeouts=e,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}Gve.exports=Zc;Zc.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};Zc.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null};Zc.prototype.retry=function(e){if(this._timeout&&clearTimeout(this._timeout),!e)return!1;var t=new Date().getTime();if(e&&t-this._operationStart>=this._maxRetryTime)return this._errors.unshift(new Error(\"RetryOperation timeout occurred\")),!1;this._errors.push(e);var r=this._timeouts.shift();if(r===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),r=this._timeouts.shift();else return!1;var s=this,a=setTimeout(function(){s._attempts++,s._operationTimeoutCb&&(s._timeout=setTimeout(function(){s._operationTimeoutCb(s._attempts)},s._operationTimeout),s._options.unref&&s._timeout.unref()),s._fn(s._attempts)},r);return this._options.unref&&a.unref(),!0};Zc.prototype.attempt=function(e,t){this._fn=e,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var r=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){r._operationTimeoutCb()},r._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};Zc.prototype.try=function(e){console.log(\"Using RetryOperation.try() is deprecated\"),this.attempt(e)};Zc.prototype.start=function(e){console.log(\"Using RetryOperation.start() is deprecated\"),this.attempt(e)};Zc.prototype.start=Zc.prototype.try;Zc.prototype.errors=function(){return this._errors};Zc.prototype.attempts=function(){return this._attempts};Zc.prototype.mainError=function(){if(this._errors.length===0)return null;for(var e={},t=null,r=0,s=0;s<this._errors.length;s++){var a=this._errors[s],n=a.message,c=(e[n]||0)+1;e[n]=c,c>=r&&(t=a,r=c)}return t}});var Wve=G(ay=>{var jEt=qve();ay.operation=function(e){var t=ay.timeouts(e);return new jEt(t,{forever:e&&e.forever,unref:e&&e.unref,maxRetryTime:e&&e.maxRetryTime})};ay.timeouts=function(e){if(e instanceof Array)return[].concat(e);var t={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var r in e)t[r]=e[r];if(t.minTimeout>t.maxTimeout)throw new Error(\"minTimeout is greater than maxTimeout\");for(var s=[],a=0;a<t.retries;a++)s.push(this.createTimeout(a,t));return e&&e.forever&&!s.length&&s.push(this.createTimeout(a,t)),s.sort(function(n,c){return n-c}),s};ay.createTimeout=function(e,t){var r=t.randomize?Math.random()+1:1,s=Math.round(r*t.minTimeout*Math.pow(t.factor,e));return s=Math.min(s,t.maxTimeout),s};ay.wrap=function(e,t,r){if(t instanceof Array&&(r=t,t=null),!r){r=[];for(var s in e)typeof e[s]==\"function\"&&r.push(s)}for(var a=0;a<r.length;a++){var n=r[a],c=e[n];e[n]=function(p){var h=ay.operation(t),E=Array.prototype.slice.call(arguments,1),C=E.pop();E.push(function(S){h.retry(S)||(S&&(arguments[0]=h.mainError()),C.apply(this,arguments))}),h.attempt(function(){p.apply(e,E)})}.bind(e,c),e[n].options=t}}});var Yve=G((Ner,Vve)=>{Vve.exports=Wve()});var zve=G((Oer,Jve)=>{\"use strict\";var GEt=jve(),qEt=Yve(),WEt=Object.prototype.hasOwnProperty;function Kve(e){return e&&e.code===\"EPROMISERETRY\"&&WEt.call(e,\"retried\")}function VEt(e,t){var r,s;return typeof e==\"object\"&&typeof t==\"function\"&&(r=t,t=e,e=r),s=qEt.operation(t),new Promise(function(a,n){s.attempt(function(c){Promise.resolve().then(function(){return e(function(f){throw Kve(f)&&(f=f.retried),GEt(new Error(\"Retrying\"),\"EPROMISERETRY\",{retried:f})},c)}).then(a,function(f){Kve(f)&&(f=f.retried,s.retry(f||new Error))||n(f)})})})}Jve.exports=VEt});var aO=G(bb=>{\"use strict\";var Xve=bb&&bb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(bb,\"__esModule\",{value:!0});bb.fetchWithRetry=iIt;var YEt=Ie(\"http2\"),KEt=Xve(sO()),Zve=Uve(),JEt=Xve(zve()),zEt=wg(),ZEt=nO(),{HTTP2_HEADER_LOCATION:XEt,HTTP2_HEADER_CONTENT_TYPE:$Et,HTTP2_HEADER_USER_AGENT:eIt,HTTP_STATUS_INTERNAL_SERVER_ERROR:tIt,HTTP_STATUS_TOO_MANY_REQUESTS:rIt,HTTP_STATUS_REQUEST_TIMEOUT:nIt}=YEt.constants;async function iIt(e,t){return(0,JEt.default)(async(r,s)=>{let a=t.method||\"POST\",n={[eIt]:zEt.ua.getUserAgent(),...t.headers},c=await(0,KEt.default)(e,{method:a,headers:n,body:t.body,timeout:t.timeout,retry:!1}).catch(f=>(Zve.log.http(\"fetch\",`${a} ${e} attempt ${s} failed with ${f}`),r(f)));if(c.ok)return c;{let f=await sIt(c);if(Zve.log.http(\"fetch\",`${a} ${e} attempt ${s} failed with ${c.status}`),oIt(c.status))return r(f);throw f}},aIt(t.retry))}var sIt=async e=>{let t=e.statusText,r=e.headers.get(XEt)||void 0;if(e.headers.get($Et)?.includes(\"application/json\"))try{t=(await e.json()).message||t}catch{}return new ZEt.HTTPError({status:e.status,message:t,location:r})},oIt=e=>[nIt,rIt].includes(e)||e>=tIt,aIt=e=>typeof e==\"boolean\"?{retries:e?1:0}:typeof e==\"number\"?{retries:e}:{retries:0,...e}});var $ve=G(lO=>{\"use strict\";Object.defineProperty(lO,\"__esModule\",{value:!0});lO.Fulcio=void 0;var lIt=aO(),WY=class{constructor(t){this.options=t}async createSigningCertificate(t){let{baseURL:r,retry:s,timeout:a}=this.options,n=`${r}/api/v2/signingCert`;return(await(0,lIt.fetchWithRetry)(n,{headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(t),timeout:a,retry:s})).json()}};lO.Fulcio=WY});var eSe=G(cO=>{\"use strict\";Object.defineProperty(cO,\"__esModule\",{value:!0});cO.CAClient=void 0;var cIt=Ww(),uIt=$ve(),VY=class{constructor(t){this.fulcio=new uIt.Fulcio({baseURL:t.fulcioBaseURL,retry:t.retry,timeout:t.timeout})}async createSigningCertificate(t,r,s){let a=fIt(t,r,s);try{let n=await this.fulcio.createSigningCertificate(a);return(n.signedCertificateEmbeddedSct?n.signedCertificateEmbeddedSct:n.signedCertificateDetachedSct).chain.certificates}catch(n){(0,cIt.internalError)(n,\"CA_CREATE_SIGNING_CERTIFICATE_ERROR\",\"error creating signing certificate\")}}};cO.CAClient=VY;function fIt(e,t,r){return{credentials:{oidcIdentityToken:e},publicKeyRequest:{publicKey:{algorithm:\"ECDSA\",content:t},proofOfPossession:r.toString(\"base64\")}}}});var rSe=G(Yw=>{\"use strict\";var AIt=Yw&&Yw.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Yw,\"__esModule\",{value:!0});Yw.EphemeralSigner=void 0;var tSe=AIt(Ie(\"crypto\")),pIt=\"ec\",hIt=\"P-256\",YY=class{constructor(){this.keypair=tSe.default.generateKeyPairSync(pIt,{namedCurve:hIt})}async sign(t){let r=tSe.default.sign(null,t,this.keypair.privateKey),s=this.keypair.publicKey.export({format:\"pem\",type:\"spki\"}).toString(\"ascii\");return{signature:r,key:{$case:\"publicKey\",publicKey:s}}}};Yw.EphemeralSigner=YY});var nSe=G(ly=>{\"use strict\";Object.defineProperty(ly,\"__esModule\",{value:!0});ly.FulcioSigner=ly.DEFAULT_FULCIO_URL=void 0;var KY=Ww(),gIt=wg(),dIt=eSe(),mIt=rSe();ly.DEFAULT_FULCIO_URL=\"https://fulcio.sigstore.dev\";var JY=class{constructor(t){this.ca=new dIt.CAClient({...t,fulcioBaseURL:t.fulcioBaseURL||ly.DEFAULT_FULCIO_URL}),this.identityProvider=t.identityProvider,this.keyHolder=t.keyHolder||new mIt.EphemeralSigner}async sign(t){let r=await this.getIdentityToken(),s;try{s=gIt.oidc.extractJWTSubject(r)}catch(f){throw new KY.InternalError({code:\"IDENTITY_TOKEN_PARSE_ERROR\",message:`invalid identity token: ${r}`,cause:f})}let a=await this.keyHolder.sign(Buffer.from(s));if(a.key.$case!==\"publicKey\")throw new KY.InternalError({code:\"CA_CREATE_SIGNING_CERTIFICATE_ERROR\",message:\"unexpected format for signing key\"});let n=await this.ca.createSigningCertificate(r,a.key.publicKey,a.signature);return{signature:(await this.keyHolder.sign(t)).signature,key:{$case:\"x509Certificate\",certificate:n[0]}}}async getIdentityToken(){try{return await this.identityProvider.getToken()}catch(t){throw new KY.InternalError({code:\"IDENTITY_TOKEN_READ_ERROR\",message:\"error retrieving identity token\",cause:t})}}};ly.FulcioSigner=JY});var sSe=G(Kw=>{\"use strict\";Object.defineProperty(Kw,\"__esModule\",{value:!0});Kw.FulcioSigner=Kw.DEFAULT_FULCIO_URL=void 0;var iSe=nSe();Object.defineProperty(Kw,\"DEFAULT_FULCIO_URL\",{enumerable:!0,get:function(){return iSe.DEFAULT_FULCIO_URL}});Object.defineProperty(Kw,\"FulcioSigner\",{enumerable:!0,get:function(){return iSe.FulcioSigner}})});var lSe=G(uO=>{\"use strict\";Object.defineProperty(uO,\"__esModule\",{value:!0});uO.Rekor=void 0;var oSe=aO(),zY=class{constructor(t){this.options=t}async createEntry(t){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/log/entries`,f=await(await(0,oSe.fetchWithRetry)(n,{headers:{\"Content-Type\":\"application/json\",Accept:\"application/json\"},body:JSON.stringify(t),timeout:s,retry:a})).json();return aSe(f)}async getEntry(t){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/log/entries/${t}`,f=await(await(0,oSe.fetchWithRetry)(n,{method:\"GET\",headers:{Accept:\"application/json\"},timeout:s,retry:a})).json();return aSe(f)}};uO.Rekor=zY;function aSe(e){let t=Object.entries(e);if(t.length!=1)throw new Error(\"Received multiple entries in Rekor response\");let[r,s]=t[0];return{...s,uuid:r}}});var uSe=G(fO=>{\"use strict\";Object.defineProperty(fO,\"__esModule\",{value:!0});fO.TLogClient=void 0;var cSe=Ww(),yIt=nO(),EIt=lSe(),ZY=class{constructor(t){this.fetchOnConflict=t.fetchOnConflict??!1,this.rekor=new EIt.Rekor({baseURL:t.rekorBaseURL,retry:t.retry,timeout:t.timeout})}async createEntry(t){let r;try{r=await this.rekor.createEntry(t)}catch(s){if(IIt(s)&&this.fetchOnConflict){let a=s.location.split(\"/\").pop()||\"\";try{r=await this.rekor.getEntry(a)}catch(n){(0,cSe.internalError)(n,\"TLOG_FETCH_ENTRY_ERROR\",\"error fetching tlog entry\")}}else(0,cSe.internalError)(s,\"TLOG_CREATE_ENTRY_ERROR\",\"error creating tlog entry\")}return r}};fO.TLogClient=ZY;function IIt(e){return e instanceof yIt.HTTPError&&e.statusCode===409&&e.location!==void 0}});var fSe=G(XY=>{\"use strict\";Object.defineProperty(XY,\"__esModule\",{value:!0});XY.toProposedEntry=wIt;var CIt=Ib(),Bg=wg(),Pb=\"sha256\";function wIt(e,t,r=\"dsse\"){switch(e.$case){case\"dsseEnvelope\":return r===\"intoto\"?SIt(e.dsseEnvelope,t):vIt(e.dsseEnvelope,t);case\"messageSignature\":return BIt(e.messageSignature,t)}}function BIt(e,t){let r=e.messageDigest.digest.toString(\"hex\"),s=e.signature.toString(\"base64\"),a=Bg.encoding.base64Encode(t);return{apiVersion:\"0.0.1\",kind:\"hashedrekord\",spec:{data:{hash:{algorithm:Pb,value:r}},signature:{content:s,publicKey:{content:a}}}}}function vIt(e,t){let r=JSON.stringify((0,CIt.envelopeToJSON)(e)),s=Bg.encoding.base64Encode(t);return{apiVersion:\"0.0.1\",kind:\"dsse\",spec:{proposedContent:{envelope:r,verifiers:[s]}}}}function SIt(e,t){let r=Bg.crypto.digest(Pb,e.payload).toString(\"hex\"),s=DIt(e,t),a=Bg.encoding.base64Encode(e.payload.toString(\"base64\")),n=Bg.encoding.base64Encode(e.signatures[0].sig.toString(\"base64\")),c=e.signatures[0].keyid,f=Bg.encoding.base64Encode(t),p={payloadType:e.payloadType,payload:a,signatures:[{sig:n,publicKey:f}]};return c.length>0&&(p.signatures[0].keyid=c),{apiVersion:\"0.0.2\",kind:\"intoto\",spec:{content:{envelope:p,hash:{algorithm:Pb,value:s},payloadHash:{algorithm:Pb,value:r}}}}}function DIt(e,t){let r={payloadType:e.payloadType,payload:e.payload.toString(\"base64\"),signatures:[{sig:e.signatures[0].sig.toString(\"base64\"),publicKey:t}]};return e.signatures[0].keyid.length>0&&(r.signatures[0].keyid=e.signatures[0].keyid),Bg.crypto.digest(Pb,Bg.json.canonicalize(r)).toString(\"hex\")}});var ASe=G(cy=>{\"use strict\";Object.defineProperty(cy,\"__esModule\",{value:!0});cy.RekorWitness=cy.DEFAULT_REKOR_URL=void 0;var bIt=wg(),PIt=uSe(),xIt=fSe();cy.DEFAULT_REKOR_URL=\"https://rekor.sigstore.dev\";var $Y=class{constructor(t){this.entryType=t.entryType,this.tlog=new PIt.TLogClient({...t,rekorBaseURL:t.rekorBaseURL||cy.DEFAULT_REKOR_URL})}async testify(t,r){let s=(0,xIt.toProposedEntry)(t,r,this.entryType),a=await this.tlog.createEntry(s);return kIt(a)}};cy.RekorWitness=$Y;function kIt(e){let t=Buffer.from(e.logID,\"hex\"),r=bIt.encoding.base64Decode(e.body),s=JSON.parse(r),a=e?.verification?.signedEntryTimestamp?QIt(e.verification.signedEntryTimestamp):void 0,n=e?.verification?.inclusionProof?RIt(e.verification.inclusionProof):void 0;return{tlogEntries:[{logIndex:e.logIndex.toString(),logId:{keyId:t},integratedTime:e.integratedTime.toString(),kindVersion:{kind:s.kind,version:s.apiVersion},inclusionPromise:a,inclusionProof:n,canonicalizedBody:Buffer.from(e.body,\"base64\")}]}}function QIt(e){return{signedEntryTimestamp:Buffer.from(e,\"base64\")}}function RIt(e){return{logIndex:e.logIndex.toString(),treeSize:e.treeSize.toString(),rootHash:Buffer.from(e.rootHash,\"hex\"),hashes:e.hashes.map(t=>Buffer.from(t,\"hex\")),checkpoint:{envelope:e.checkpoint}}}});var pSe=G(AO=>{\"use strict\";Object.defineProperty(AO,\"__esModule\",{value:!0});AO.TimestampAuthority=void 0;var TIt=aO(),e7=class{constructor(t){this.options=t}async createTimestamp(t){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/timestamp`;return(await(0,TIt.fetchWithRetry)(n,{headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(t),timeout:s,retry:a})).buffer()}};AO.TimestampAuthority=e7});var gSe=G(pO=>{\"use strict\";Object.defineProperty(pO,\"__esModule\",{value:!0});pO.TSAClient=void 0;var FIt=Ww(),NIt=pSe(),OIt=wg(),hSe=\"sha256\",t7=class{constructor(t){this.tsa=new NIt.TimestampAuthority({baseURL:t.tsaBaseURL,retry:t.retry,timeout:t.timeout})}async createTimestamp(t){let r={artifactHash:OIt.crypto.digest(hSe,t).toString(\"base64\"),hashAlgorithm:hSe};try{return await this.tsa.createTimestamp(r)}catch(s){(0,FIt.internalError)(s,\"TSA_CREATE_TIMESTAMP_ERROR\",\"error creating timestamp\")}}};pO.TSAClient=t7});var dSe=G(hO=>{\"use strict\";Object.defineProperty(hO,\"__esModule\",{value:!0});hO.TSAWitness=void 0;var LIt=gSe(),r7=class{constructor(t){this.tsa=new LIt.TSAClient({tsaBaseURL:t.tsaBaseURL,retry:t.retry,timeout:t.timeout})}async testify(t){let r=MIt(t);return{rfc3161Timestamps:[{signedTimestamp:await this.tsa.createTimestamp(r)}]}}};hO.TSAWitness=r7;function MIt(e){switch(e.$case){case\"dsseEnvelope\":return e.dsseEnvelope.signatures[0].sig;case\"messageSignature\":return e.messageSignature.signature}}});var ySe=G(vg=>{\"use strict\";Object.defineProperty(vg,\"__esModule\",{value:!0});vg.TSAWitness=vg.RekorWitness=vg.DEFAULT_REKOR_URL=void 0;var mSe=ASe();Object.defineProperty(vg,\"DEFAULT_REKOR_URL\",{enumerable:!0,get:function(){return mSe.DEFAULT_REKOR_URL}});Object.defineProperty(vg,\"RekorWitness\",{enumerable:!0,get:function(){return mSe.RekorWitness}});var UIt=dSe();Object.defineProperty(vg,\"TSAWitness\",{enumerable:!0,get:function(){return UIt.TSAWitness}})});var i7=G(Cs=>{\"use strict\";Object.defineProperty(Cs,\"__esModule\",{value:!0});Cs.TSAWitness=Cs.RekorWitness=Cs.DEFAULT_REKOR_URL=Cs.FulcioSigner=Cs.DEFAULT_FULCIO_URL=Cs.CIContextProvider=Cs.InternalError=Cs.MessageSignatureBundleBuilder=Cs.DSSEBundleBuilder=void 0;var ESe=Fve();Object.defineProperty(Cs,\"DSSEBundleBuilder\",{enumerable:!0,get:function(){return ESe.DSSEBundleBuilder}});Object.defineProperty(Cs,\"MessageSignatureBundleBuilder\",{enumerable:!0,get:function(){return ESe.MessageSignatureBundleBuilder}});var _It=Ww();Object.defineProperty(Cs,\"InternalError\",{enumerable:!0,get:function(){return _It.InternalError}});var HIt=Lve();Object.defineProperty(Cs,\"CIContextProvider\",{enumerable:!0,get:function(){return HIt.CIContextProvider}});var ISe=sSe();Object.defineProperty(Cs,\"DEFAULT_FULCIO_URL\",{enumerable:!0,get:function(){return ISe.DEFAULT_FULCIO_URL}});Object.defineProperty(Cs,\"FulcioSigner\",{enumerable:!0,get:function(){return ISe.FulcioSigner}});var n7=ySe();Object.defineProperty(Cs,\"DEFAULT_REKOR_URL\",{enumerable:!0,get:function(){return n7.DEFAULT_REKOR_URL}});Object.defineProperty(Cs,\"RekorWitness\",{enumerable:!0,get:function(){return n7.RekorWitness}});Object.defineProperty(Cs,\"TSAWitness\",{enumerable:!0,get:function(){return n7.TSAWitness}})});var wSe=G(xb=>{\"use strict\";var CSe=xb&&xb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(xb,\"__esModule\",{value:!0});xb.appDataPath=GIt;var jIt=CSe(Ie(\"os\")),Jw=CSe(Ie(\"path\"));function GIt(e){let t=jIt.default.homedir();switch(process.platform){case\"darwin\":{let r=Jw.default.join(t,\"Library\",\"Application Support\");return Jw.default.join(r,e)}case\"win32\":{let r=process.env.LOCALAPPDATA||Jw.default.join(t,\"AppData\",\"Local\");return Jw.default.join(r,e,\"Data\")}default:{let r=process.env.XDG_DATA_HOME||Jw.default.join(t,\".local\",\"share\");return Jw.default.join(r,e)}}}});var xA=G(Pl=>{\"use strict\";Object.defineProperty(Pl,\"__esModule\",{value:!0});Pl.UnsupportedAlgorithmError=Pl.CryptoError=Pl.LengthOrHashMismatchError=Pl.UnsignedMetadataError=Pl.RepositoryError=Pl.ValueError=void 0;var s7=class extends Error{};Pl.ValueError=s7;var kb=class extends Error{};Pl.RepositoryError=kb;var o7=class extends kb{};Pl.UnsignedMetadataError=o7;var a7=class extends kb{};Pl.LengthOrHashMismatchError=a7;var gO=class extends Error{};Pl.CryptoError=gO;var l7=class extends gO{};Pl.UnsupportedAlgorithmError=l7});var vSe=G(Sg=>{\"use strict\";Object.defineProperty(Sg,\"__esModule\",{value:!0});Sg.isDefined=qIt;Sg.isObject=BSe;Sg.isStringArray=WIt;Sg.isObjectArray=VIt;Sg.isStringRecord=YIt;Sg.isObjectRecord=KIt;function qIt(e){return e!==void 0}function BSe(e){return typeof e==\"object\"&&e!==null}function WIt(e){return Array.isArray(e)&&e.every(t=>typeof t==\"string\")}function VIt(e){return Array.isArray(e)&&e.every(BSe)}function YIt(e){return typeof e==\"object\"&&e!==null&&Object.keys(e).every(t=>typeof t==\"string\")&&Object.values(e).every(t=>typeof t==\"string\")}function KIt(e){return typeof e==\"object\"&&e!==null&&Object.keys(e).every(t=>typeof t==\"string\")&&Object.values(e).every(t=>typeof t==\"object\"&&t!==null)}});var u7=G((ttr,bSe)=>{var SSe=\",\",JIt=\":\",zIt=\"[\",ZIt=\"]\",XIt=\"{\",$It=\"}\";function c7(e){let t=[];if(typeof e==\"string\")t.push(DSe(e));else if(typeof e==\"boolean\")t.push(JSON.stringify(e));else if(Number.isInteger(e))t.push(JSON.stringify(e));else if(e===null)t.push(JSON.stringify(e));else if(Array.isArray(e)){t.push(zIt);let r=!0;e.forEach(s=>{r||t.push(SSe),r=!1,t.push(c7(s))}),t.push(ZIt)}else if(typeof e==\"object\"){t.push(XIt);let r=!0;Object.keys(e).sort().forEach(s=>{r||t.push(SSe),r=!1,t.push(DSe(s)),t.push(JIt),t.push(c7(e[s]))}),t.push($It)}else throw new TypeError(\"cannot encode \"+e.toString());return t.join(\"\")}function DSe(e){return'\"'+e.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"')+'\"'}bSe.exports={canonicalize:c7}});var PSe=G(zw=>{\"use strict\";var eCt=zw&&zw.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(zw,\"__esModule\",{value:!0});zw.verifySignature=void 0;var tCt=u7(),rCt=eCt(Ie(\"crypto\")),nCt=(e,t,r)=>{let s=Buffer.from((0,tCt.canonicalize)(e));return rCt.default.verify(void 0,s,t,Buffer.from(r,\"hex\"))};zw.verifySignature=nCt});var pf=G(Xc=>{\"use strict\";var iCt=Xc&&Xc.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||(\"get\"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),sCt=Xc&&Xc.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),xSe=Xc&&Xc.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r)&&iCt(t,e,r);return sCt(t,e),t};Object.defineProperty(Xc,\"__esModule\",{value:!0});Xc.crypto=Xc.guard=void 0;Xc.guard=xSe(vSe());Xc.crypto=xSe(PSe())});var uy=G(Ah=>{\"use strict\";var oCt=Ah&&Ah.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ah,\"__esModule\",{value:!0});Ah.Signed=Ah.MetadataKind=void 0;Ah.isMetadataKind=lCt;var aCt=oCt(Ie(\"util\")),Qb=xA(),f7=pf(),kSe=[\"1\",\"0\",\"31\"],A7;(function(e){e.Root=\"root\",e.Timestamp=\"timestamp\",e.Snapshot=\"snapshot\",e.Targets=\"targets\"})(A7||(Ah.MetadataKind=A7={}));function lCt(e){return typeof e==\"string\"&&Object.values(A7).includes(e)}var p7=class e{constructor(t){this.specVersion=t.specVersion||kSe.join(\".\");let r=this.specVersion.split(\".\");if(!(r.length===2||r.length===3)||!r.every(s=>cCt(s)))throw new Qb.ValueError(\"Failed to parse specVersion\");if(r[0]!=kSe[0])throw new Qb.ValueError(\"Unsupported specVersion\");this.expires=t.expires,this.version=t.version,this.unrecognizedFields=t.unrecognizedFields||{}}equals(t){return t instanceof e?this.specVersion===t.specVersion&&this.expires===t.expires&&this.version===t.version&&aCt.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}isExpired(t){return t||(t=new Date),t>=new Date(this.expires)}static commonFieldsFromJSON(t){let{spec_version:r,expires:s,version:a,...n}=t;if(f7.guard.isDefined(r)){if(typeof r!=\"string\")throw new TypeError(\"spec_version must be a string\")}else throw new Qb.ValueError(\"spec_version is not defined\");if(f7.guard.isDefined(s)){if(typeof s!=\"string\")throw new TypeError(\"expires must be a string\")}else throw new Qb.ValueError(\"expires is not defined\");if(f7.guard.isDefined(a)){if(typeof a!=\"number\")throw new TypeError(\"version must be a number\")}else throw new Qb.ValueError(\"version is not defined\");return{specVersion:r,expires:s,version:a,unrecognizedFields:n}}};Ah.Signed=p7;function cCt(e){return!isNaN(Number(e))}});var Rb=G(bg=>{\"use strict\";var QSe=bg&&bg.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(bg,\"__esModule\",{value:!0});bg.TargetFile=bg.MetaFile=void 0;var RSe=QSe(Ie(\"crypto\")),mO=QSe(Ie(\"util\")),Dg=xA(),dO=pf(),h7=class e{constructor(t){if(t.version<=0)throw new Dg.ValueError(\"Metafile version must be at least 1\");t.length!==void 0&&TSe(t.length),this.version=t.version,this.length=t.length,this.hashes=t.hashes,this.unrecognizedFields=t.unrecognizedFields||{}}equals(t){return t instanceof e?this.version===t.version&&this.length===t.length&&mO.default.isDeepStrictEqual(this.hashes,t.hashes)&&mO.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}verify(t){if(this.length!==void 0&&t.length!==this.length)throw new Dg.LengthOrHashMismatchError(`Expected length ${this.length} but got ${t.length}`);this.hashes&&Object.entries(this.hashes).forEach(([r,s])=>{let a;try{a=RSe.default.createHash(r)}catch{throw new Dg.LengthOrHashMismatchError(`Hash algorithm ${r} not supported`)}let n=a.update(t).digest(\"hex\");if(n!==s)throw new Dg.LengthOrHashMismatchError(`Expected hash ${s} but got ${n}`)})}toJSON(){let t={version:this.version,...this.unrecognizedFields};return this.length!==void 0&&(t.length=this.length),this.hashes&&(t.hashes=this.hashes),t}static fromJSON(t){let{version:r,length:s,hashes:a,...n}=t;if(typeof r!=\"number\")throw new TypeError(\"version must be a number\");if(dO.guard.isDefined(s)&&typeof s!=\"number\")throw new TypeError(\"length must be a number\");if(dO.guard.isDefined(a)&&!dO.guard.isStringRecord(a))throw new TypeError(\"hashes must be string keys and values\");return new e({version:r,length:s,hashes:a,unrecognizedFields:n})}};bg.MetaFile=h7;var g7=class e{constructor(t){TSe(t.length),this.length=t.length,this.path=t.path,this.hashes=t.hashes,this.unrecognizedFields=t.unrecognizedFields||{}}get custom(){let t=this.unrecognizedFields.custom;return!t||Array.isArray(t)||typeof t!=\"object\"?{}:t}equals(t){return t instanceof e?this.length===t.length&&this.path===t.path&&mO.default.isDeepStrictEqual(this.hashes,t.hashes)&&mO.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}async verify(t){let r=0,s=Object.keys(this.hashes).reduce((a,n)=>{try{a[n]=RSe.default.createHash(n)}catch{throw new Dg.LengthOrHashMismatchError(`Hash algorithm ${n} not supported`)}return a},{});for await(let a of t)r+=a.length,Object.values(s).forEach(n=>{n.update(a)});if(r!==this.length)throw new Dg.LengthOrHashMismatchError(`Expected length ${this.length} but got ${r}`);Object.entries(s).forEach(([a,n])=>{let c=this.hashes[a],f=n.digest(\"hex\");if(f!==c)throw new Dg.LengthOrHashMismatchError(`Expected hash ${c} but got ${f}`)})}toJSON(){return{length:this.length,hashes:this.hashes,...this.unrecognizedFields}}static fromJSON(t,r){let{length:s,hashes:a,...n}=r;if(typeof s!=\"number\")throw new TypeError(\"length must be a number\");if(!dO.guard.isStringRecord(a))throw new TypeError(\"hashes must have string keys and values\");return new e({length:s,path:t,hashes:a,unrecognizedFields:n})}};bg.TargetFile=g7;function TSe(e){if(e<0)throw new Dg.ValueError(\"Length must be at least 0\")}});var FSe=G(d7=>{\"use strict\";Object.defineProperty(d7,\"__esModule\",{value:!0});d7.encodeOIDString=fCt;var uCt=6;function fCt(e){let t=e.split(\".\"),r=parseInt(t[0],10)*40+parseInt(t[1],10),s=[];t.slice(2).forEach(n=>{let c=ACt(parseInt(n,10));s.push(...c)});let a=Buffer.from([r,...s]);return Buffer.from([uCt,a.length,...a])}function ACt(e){let t=[],r=0;for(;e>0;)t.unshift(e&127|r),e>>=7,r=128;return t}});var MSe=G(Fb=>{\"use strict\";var pCt=Fb&&Fb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Fb,\"__esModule\",{value:!0});Fb.getPublicKey=mCt;var Zw=pCt(Ie(\"crypto\")),Tb=xA(),m7=FSe(),yO=48,NSe=3,OSe=0,hCt=\"1.3.101.112\",gCt=\"1.2.840.10045.2.1\",dCt=\"1.2.840.10045.3.1.7\",y7=\"-----BEGIN PUBLIC KEY-----\";function mCt(e){switch(e.keyType){case\"rsa\":return yCt(e);case\"ed25519\":return ECt(e);case\"ecdsa\":case\"ecdsa-sha2-nistp256\":case\"ecdsa-sha2-nistp384\":return ICt(e);default:throw new Tb.UnsupportedAlgorithmError(`Unsupported key type: ${e.keyType}`)}}function yCt(e){if(!e.keyVal.startsWith(y7))throw new Tb.CryptoError(\"Invalid key format\");let t=Zw.default.createPublicKey(e.keyVal);switch(e.scheme){case\"rsassa-pss-sha256\":return{key:t,padding:Zw.default.constants.RSA_PKCS1_PSS_PADDING};default:throw new Tb.UnsupportedAlgorithmError(`Unsupported RSA scheme: ${e.scheme}`)}}function ECt(e){let t;if(e.keyVal.startsWith(y7))t=Zw.default.createPublicKey(e.keyVal);else{if(!LSe(e.keyVal))throw new Tb.CryptoError(\"Invalid key format\");t=Zw.default.createPublicKey({key:CCt.hexToDER(e.keyVal),format:\"der\",type:\"spki\"})}return{key:t}}function ICt(e){let t;if(e.keyVal.startsWith(y7))t=Zw.default.createPublicKey(e.keyVal);else{if(!LSe(e.keyVal))throw new Tb.CryptoError(\"Invalid key format\");t=Zw.default.createPublicKey({key:wCt.hexToDER(e.keyVal),format:\"der\",type:\"spki\"})}return{key:t}}var CCt={hexToDER:e=>{let t=Buffer.from(e,\"hex\"),r=(0,m7.encodeOIDString)(hCt),s=Buffer.concat([Buffer.concat([Buffer.from([yO]),Buffer.from([r.length]),r]),Buffer.concat([Buffer.from([NSe]),Buffer.from([t.length+1]),Buffer.from([OSe]),t])]);return Buffer.concat([Buffer.from([yO]),Buffer.from([s.length]),s])}},wCt={hexToDER:e=>{let t=Buffer.from(e,\"hex\"),r=Buffer.concat([Buffer.from([NSe]),Buffer.from([t.length+1]),Buffer.from([OSe]),t]),s=Buffer.concat([(0,m7.encodeOIDString)(gCt),(0,m7.encodeOIDString)(dCt)]),a=Buffer.concat([Buffer.from([yO]),Buffer.from([s.length]),s]);return Buffer.concat([Buffer.from([yO]),Buffer.from([a.length+r.length]),a,r])}},LSe=e=>/^[0-9a-fA-F]+$/.test(e)});var EO=G(Xw=>{\"use strict\";var BCt=Xw&&Xw.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Xw,\"__esModule\",{value:!0});Xw.Key=void 0;var USe=BCt(Ie(\"util\")),Nb=xA(),_Se=pf(),vCt=MSe(),E7=class e{constructor(t){let{keyID:r,keyType:s,scheme:a,keyVal:n,unrecognizedFields:c}=t;this.keyID=r,this.keyType=s,this.scheme=a,this.keyVal=n,this.unrecognizedFields=c||{}}verifySignature(t){let r=t.signatures[this.keyID];if(!r)throw new Nb.UnsignedMetadataError(\"no signature for key found in metadata\");if(!this.keyVal.public)throw new Nb.UnsignedMetadataError(\"no public key found\");let s=(0,vCt.getPublicKey)({keyType:this.keyType,scheme:this.scheme,keyVal:this.keyVal.public}),a=t.signed.toJSON();try{if(!_Se.crypto.verifySignature(a,s,r.sig))throw new Nb.UnsignedMetadataError(`failed to verify ${this.keyID} signature`)}catch(n){throw n instanceof Nb.UnsignedMetadataError?n:new Nb.UnsignedMetadataError(`failed to verify ${this.keyID} signature`)}}equals(t){return t instanceof e?this.keyID===t.keyID&&this.keyType===t.keyType&&this.scheme===t.scheme&&USe.default.isDeepStrictEqual(this.keyVal,t.keyVal)&&USe.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}toJSON(){return{keytype:this.keyType,scheme:this.scheme,keyval:this.keyVal,...this.unrecognizedFields}}static fromJSON(t,r){let{keytype:s,scheme:a,keyval:n,...c}=r;if(typeof s!=\"string\")throw new TypeError(\"keytype must be a string\");if(typeof a!=\"string\")throw new TypeError(\"scheme must be a string\");if(!_Se.guard.isStringRecord(n))throw new TypeError(\"keyval must be a string record\");return new e({keyID:t,keyType:s,scheme:a,keyVal:n,unrecognizedFields:c})}};Xw.Key=E7});var WSe=G((ctr,qSe)=>{\"use strict\";qSe.exports=jSe;function jSe(e,t,r){e instanceof RegExp&&(e=HSe(e,r)),t instanceof RegExp&&(t=HSe(t,r));var s=GSe(e,t,r);return s&&{start:s[0],end:s[1],pre:r.slice(0,s[0]),body:r.slice(s[0]+e.length,s[1]),post:r.slice(s[1]+t.length)}}function HSe(e,t){var r=t.match(e);return r?r[0]:null}jSe.range=GSe;function GSe(e,t,r){var s,a,n,c,f,p=r.indexOf(e),h=r.indexOf(t,p+1),E=p;if(p>=0&&h>0){for(s=[],n=r.length;E>=0&&!f;)E==p?(s.push(E),p=r.indexOf(e,E+1)):s.length==1?f=[s.pop(),h]:(a=s.pop(),a<n&&(n=a,c=h),h=r.indexOf(t,E+1)),E=p<h&&p>=0?p:h;s.length&&(f=[n,c])}return f}});var $Se=G((utr,XSe)=>{var VSe=WSe();XSe.exports=bCt;var YSe=\"\\0SLASH\"+Math.random()+\"\\0\",KSe=\"\\0OPEN\"+Math.random()+\"\\0\",C7=\"\\0CLOSE\"+Math.random()+\"\\0\",JSe=\"\\0COMMA\"+Math.random()+\"\\0\",zSe=\"\\0PERIOD\"+Math.random()+\"\\0\";function I7(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function SCt(e){return e.split(\"\\\\\\\\\").join(YSe).split(\"\\\\{\").join(KSe).split(\"\\\\}\").join(C7).split(\"\\\\,\").join(JSe).split(\"\\\\.\").join(zSe)}function DCt(e){return e.split(YSe).join(\"\\\\\").split(KSe).join(\"{\").split(C7).join(\"}\").split(JSe).join(\",\").split(zSe).join(\".\")}function ZSe(e){if(!e)return[\"\"];var t=[],r=VSe(\"{\",\"}\",e);if(!r)return e.split(\",\");var s=r.pre,a=r.body,n=r.post,c=s.split(\",\");c[c.length-1]+=\"{\"+a+\"}\";var f=ZSe(n);return n.length&&(c[c.length-1]+=f.shift(),c.push.apply(c,f)),t.push.apply(t,c),t}function bCt(e){return e?(e.substr(0,2)===\"{}\"&&(e=\"\\\\{\\\\}\"+e.substr(2)),Ob(SCt(e),!0).map(DCt)):[]}function PCt(e){return\"{\"+e+\"}\"}function xCt(e){return/^-?0\\d/.test(e)}function kCt(e,t){return e<=t}function QCt(e,t){return e>=t}function Ob(e,t){var r=[],s=VSe(\"{\",\"}\",e);if(!s)return[e];var a=s.pre,n=s.post.length?Ob(s.post,!1):[\"\"];if(/\\$$/.test(s.pre))for(var c=0;c<n.length;c++){var f=a+\"{\"+s.body+\"}\"+n[c];r.push(f)}else{var p=/^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(s.body),h=/^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(s.body),E=p||h,C=s.body.indexOf(\",\")>=0;if(!E&&!C)return s.post.match(/,.*\\}/)?(e=s.pre+\"{\"+s.body+C7+s.post,Ob(e)):[e];var S;if(E)S=s.body.split(/\\.\\./);else if(S=ZSe(s.body),S.length===1&&(S=Ob(S[0],!1).map(PCt),S.length===1))return n.map(function(Ee){return s.pre+S[0]+Ee});var x;if(E){var I=I7(S[0]),T=I7(S[1]),O=Math.max(S[0].length,S[1].length),U=S.length==3?Math.abs(I7(S[2])):1,Y=kCt,te=T<I;te&&(U*=-1,Y=QCt);var ie=S.some(xCt);x=[];for(var ue=I;Y(ue,T);ue+=U){var ae;if(h)ae=String.fromCharCode(ue),ae===\"\\\\\"&&(ae=\"\");else if(ae=String(ue),ie){var de=O-ae.length;if(de>0){var Ae=new Array(de+1).join(\"0\");ue<0?ae=\"-\"+Ae+ae.slice(1):ae=Ae+ae}}x.push(ae)}}else{x=[];for(var Ce=0;Ce<S.length;Ce++)x.push.apply(x,Ob(S[Ce],!1))}for(var Ce=0;Ce<x.length;Ce++)for(var c=0;c<n.length;c++){var f=a+x[Ce]+n[c];(!t||E||f)&&r.push(f)}}return r}});var eDe=G(IO=>{\"use strict\";Object.defineProperty(IO,\"__esModule\",{value:!0});IO.assertValidPattern=void 0;var RCt=1024*64,TCt=e=>{if(typeof e!=\"string\")throw new TypeError(\"invalid pattern\");if(e.length>RCt)throw new TypeError(\"pattern is too long\")};IO.assertValidPattern=TCt});var rDe=G(CO=>{\"use strict\";Object.defineProperty(CO,\"__esModule\",{value:!0});CO.parseClass=void 0;var FCt={\"[:alnum:]\":[\"\\\\p{L}\\\\p{Nl}\\\\p{Nd}\",!0],\"[:alpha:]\":[\"\\\\p{L}\\\\p{Nl}\",!0],\"[:ascii:]\":[\"\\\\x00-\\\\x7f\",!1],\"[:blank:]\":[\"\\\\p{Zs}\\\\t\",!0],\"[:cntrl:]\":[\"\\\\p{Cc}\",!0],\"[:digit:]\":[\"\\\\p{Nd}\",!0],\"[:graph:]\":[\"\\\\p{Z}\\\\p{C}\",!0,!0],\"[:lower:]\":[\"\\\\p{Ll}\",!0],\"[:print:]\":[\"\\\\p{C}\",!0],\"[:punct:]\":[\"\\\\p{P}\",!0],\"[:space:]\":[\"\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f\",!0],\"[:upper:]\":[\"\\\\p{Lu}\",!0],\"[:word:]\":[\"\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}\",!0],\"[:xdigit:]\":[\"A-Fa-f0-9\",!1]},Lb=e=>e.replace(/[[\\]\\\\-]/g,\"\\\\$&\"),NCt=e=>e.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"),tDe=e=>e.join(\"\"),OCt=(e,t)=>{let r=t;if(e.charAt(r)!==\"[\")throw new Error(\"not in a brace expression\");let s=[],a=[],n=r+1,c=!1,f=!1,p=!1,h=!1,E=r,C=\"\";e:for(;n<e.length;){let T=e.charAt(n);if((T===\"!\"||T===\"^\")&&n===r+1){h=!0,n++;continue}if(T===\"]\"&&c&&!p){E=n+1;break}if(c=!0,T===\"\\\\\"&&!p){p=!0,n++;continue}if(T===\"[\"&&!p){for(let[O,[U,Y,te]]of Object.entries(FCt))if(e.startsWith(O,n)){if(C)return[\"$.\",!1,e.length-r,!0];n+=O.length,te?a.push(U):s.push(U),f=f||Y;continue e}}if(p=!1,C){T>C?s.push(Lb(C)+\"-\"+Lb(T)):T===C&&s.push(Lb(T)),C=\"\",n++;continue}if(e.startsWith(\"-]\",n+1)){s.push(Lb(T+\"-\")),n+=2;continue}if(e.startsWith(\"-\",n+1)){C=T,n+=2;continue}s.push(Lb(T)),n++}if(E<n)return[\"\",!1,0,!1];if(!s.length&&!a.length)return[\"$.\",!1,e.length-r,!0];if(a.length===0&&s.length===1&&/^\\\\?.$/.test(s[0])&&!h){let T=s[0].length===2?s[0].slice(-1):s[0];return[NCt(T),!1,E-r,!1]}let S=\"[\"+(h?\"^\":\"\")+tDe(s)+\"]\",x=\"[\"+(h?\"\":\"^\")+tDe(a)+\"]\";return[s.length&&a.length?\"(\"+S+\"|\"+x+\")\":s.length?S:x,f,E-r,!0]};CO.parseClass=OCt});var BO=G(wO=>{\"use strict\";Object.defineProperty(wO,\"__esModule\",{value:!0});wO.unescape=void 0;var LCt=(e,{windowsPathsNoEscape:t=!1}={})=>t?e.replace(/\\[([^\\/\\\\])\\]/g,\"$1\"):e.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g,\"$1$2\").replace(/\\\\([^\\/])/g,\"$1\");wO.unescape=LCt});var v7=G(DO=>{\"use strict\";Object.defineProperty(DO,\"__esModule\",{value:!0});DO.AST=void 0;var MCt=rDe(),vO=BO(),UCt=new Set([\"!\",\"?\",\"+\",\"*\",\"@\"]),nDe=e=>UCt.has(e),_Ct=\"(?!(?:^|/)\\\\.\\\\.?(?:$|/))\",SO=\"(?!\\\\.)\",HCt=new Set([\"[\",\".\"]),jCt=new Set([\"..\",\".\"]),GCt=new Set(\"().*{}+?[]^$\\\\!\"),qCt=e=>e.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"),B7=\"[^/]\",iDe=B7+\"*?\",sDe=B7+\"+?\",w7=class e{type;#e;#t;#s=!1;#r=[];#i;#n;#o;#l=!1;#a;#c;#f=!1;constructor(t,r,s={}){this.type=t,t&&(this.#t=!0),this.#i=r,this.#e=this.#i?this.#i.#e:this,this.#a=this.#e===this?s:this.#e.#a,this.#o=this.#e===this?[]:this.#e.#o,t===\"!\"&&!this.#e.#l&&this.#o.push(this),this.#n=this.#i?this.#i.#r.length:0}get hasMagic(){if(this.#t!==void 0)return this.#t;for(let t of this.#r)if(typeof t!=\"string\"&&(t.type||t.hasMagic))return this.#t=!0;return this.#t}toString(){return this.#c!==void 0?this.#c:this.type?this.#c=this.type+\"(\"+this.#r.map(t=>String(t)).join(\"|\")+\")\":this.#c=this.#r.map(t=>String(t)).join(\"\")}#p(){if(this!==this.#e)throw new Error(\"should only call on root\");if(this.#l)return this;this.toString(),this.#l=!0;let t;for(;t=this.#o.pop();){if(t.type!==\"!\")continue;let r=t,s=r.#i;for(;s;){for(let a=r.#n+1;!s.type&&a<s.#r.length;a++)for(let n of t.#r){if(typeof n==\"string\")throw new Error(\"string part in extglob AST??\");n.copyIn(s.#r[a])}r=s,s=r.#i}}return this}push(...t){for(let r of t)if(r!==\"\"){if(typeof r!=\"string\"&&!(r instanceof e&&r.#i===this))throw new Error(\"invalid part: \"+r);this.#r.push(r)}}toJSON(){let t=this.type===null?this.#r.slice().map(r=>typeof r==\"string\"?r:r.toJSON()):[this.type,...this.#r.map(r=>r.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#e||this.#e.#l&&this.#i?.type===\"!\")&&t.push({}),t}isStart(){if(this.#e===this)return!0;if(!this.#i?.isStart())return!1;if(this.#n===0)return!0;let t=this.#i;for(let r=0;r<this.#n;r++){let s=t.#r[r];if(!(s instanceof e&&s.type===\"!\"))return!1}return!0}isEnd(){if(this.#e===this||this.#i?.type===\"!\")return!0;if(!this.#i?.isEnd())return!1;if(!this.type)return this.#i?.isEnd();let t=this.#i?this.#i.#r.length:0;return this.#n===t-1}copyIn(t){typeof t==\"string\"?this.push(t):this.push(t.clone(this))}clone(t){let r=new e(this.type,t);for(let s of this.#r)r.copyIn(s);return r}static#u(t,r,s,a){let n=!1,c=!1,f=-1,p=!1;if(r.type===null){let x=s,I=\"\";for(;x<t.length;){let T=t.charAt(x++);if(n||T===\"\\\\\"){n=!n,I+=T;continue}if(c){x===f+1?(T===\"^\"||T===\"!\")&&(p=!0):T===\"]\"&&!(x===f+2&&p)&&(c=!1),I+=T;continue}else if(T===\"[\"){c=!0,f=x,p=!1,I+=T;continue}if(!a.noext&&nDe(T)&&t.charAt(x)===\"(\"){r.push(I),I=\"\";let O=new e(T,r);x=e.#u(t,O,x,a),r.push(O);continue}I+=T}return r.push(I),x}let h=s+1,E=new e(null,r),C=[],S=\"\";for(;h<t.length;){let x=t.charAt(h++);if(n||x===\"\\\\\"){n=!n,S+=x;continue}if(c){h===f+1?(x===\"^\"||x===\"!\")&&(p=!0):x===\"]\"&&!(h===f+2&&p)&&(c=!1),S+=x;continue}else if(x===\"[\"){c=!0,f=h,p=!1,S+=x;continue}if(nDe(x)&&t.charAt(h)===\"(\"){E.push(S),S=\"\";let I=new e(x,E);E.push(I),h=e.#u(t,I,h,a);continue}if(x===\"|\"){E.push(S),S=\"\",C.push(E),E=new e(null,r);continue}if(x===\")\")return S===\"\"&&r.#r.length===0&&(r.#f=!0),E.push(S),S=\"\",r.push(...C,E),h;S+=x}return r.type=null,r.#t=void 0,r.#r=[t.substring(s-1)],h}static fromGlob(t,r={}){let s=new e(null,void 0,r);return e.#u(t,s,0,r),s}toMMPattern(){if(this!==this.#e)return this.#e.toMMPattern();let t=this.toString(),[r,s,a,n]=this.toRegExpSource();if(!(a||this.#t||this.#a.nocase&&!this.#a.nocaseMagicOnly&&t.toUpperCase()!==t.toLowerCase()))return s;let f=(this.#a.nocase?\"i\":\"\")+(n?\"u\":\"\");return Object.assign(new RegExp(`^${r}$`,f),{_src:r,_glob:t})}get options(){return this.#a}toRegExpSource(t){let r=t??!!this.#a.dot;if(this.#e===this&&this.#p(),!this.type){let p=this.isStart()&&this.isEnd(),h=this.#r.map(x=>{let[I,T,O,U]=typeof x==\"string\"?e.#h(x,this.#t,p):x.toRegExpSource(t);return this.#t=this.#t||O,this.#s=this.#s||U,I}).join(\"\"),E=\"\";if(this.isStart()&&typeof this.#r[0]==\"string\"&&!(this.#r.length===1&&jCt.has(this.#r[0]))){let I=HCt,T=r&&I.has(h.charAt(0))||h.startsWith(\"\\\\.\")&&I.has(h.charAt(2))||h.startsWith(\"\\\\.\\\\.\")&&I.has(h.charAt(4)),O=!r&&!t&&I.has(h.charAt(0));E=T?_Ct:O?SO:\"\"}let C=\"\";return this.isEnd()&&this.#e.#l&&this.#i?.type===\"!\"&&(C=\"(?:$|\\\\/)\"),[E+h+C,(0,vO.unescape)(h),this.#t=!!this.#t,this.#s]}let s=this.type===\"*\"||this.type===\"+\",a=this.type===\"!\"?\"(?:(?!(?:\":\"(?:\",n=this.#A(r);if(this.isStart()&&this.isEnd()&&!n&&this.type!==\"!\"){let p=this.toString();return this.#r=[p],this.type=null,this.#t=void 0,[p,(0,vO.unescape)(this.toString()),!1,!1]}let c=!s||t||r||!SO?\"\":this.#A(!0);c===n&&(c=\"\"),c&&(n=`(?:${n})(?:${c})*?`);let f=\"\";if(this.type===\"!\"&&this.#f)f=(this.isStart()&&!r?SO:\"\")+sDe;else{let p=this.type===\"!\"?\"))\"+(this.isStart()&&!r&&!t?SO:\"\")+iDe+\")\":this.type===\"@\"?\")\":this.type===\"?\"?\")?\":this.type===\"+\"&&c?\")\":this.type===\"*\"&&c?\")?\":`)${this.type}`;f=a+n+p}return[f,(0,vO.unescape)(n),this.#t=!!this.#t,this.#s]}#A(t){return this.#r.map(r=>{if(typeof r==\"string\")throw new Error(\"string type in extglob ast??\");let[s,a,n,c]=r.toRegExpSource(t);return this.#s=this.#s||c,s}).filter(r=>!(this.isStart()&&this.isEnd())||!!r).join(\"|\")}static#h(t,r,s=!1){let a=!1,n=\"\",c=!1;for(let f=0;f<t.length;f++){let p=t.charAt(f);if(a){a=!1,n+=(GCt.has(p)?\"\\\\\":\"\")+p;continue}if(p===\"\\\\\"){f===t.length-1?n+=\"\\\\\\\\\":a=!0;continue}if(p===\"[\"){let[h,E,C,S]=(0,MCt.parseClass)(t,f);if(C){n+=h,c=c||E,f+=C-1,r=r||S;continue}}if(p===\"*\"){s&&t===\"*\"?n+=sDe:n+=iDe,r=!0;continue}if(p===\"?\"){n+=B7,r=!0;continue}n+=qCt(p)}return[n,(0,vO.unescape)(t),!!r,c]}};DO.AST=w7});var S7=G(bO=>{\"use strict\";Object.defineProperty(bO,\"__esModule\",{value:!0});bO.escape=void 0;var WCt=(e,{windowsPathsNoEscape:t=!1}={})=>t?e.replace(/[?*()[\\]]/g,\"[$&]\"):e.replace(/[?*()[\\]\\\\]/g,\"\\\\$&\");bO.escape=WCt});var ADe=G(pr=>{\"use strict\";var VCt=pr&&pr.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(pr,\"__esModule\",{value:!0});pr.unescape=pr.escape=pr.AST=pr.Minimatch=pr.match=pr.makeRe=pr.braceExpand=pr.defaults=pr.filter=pr.GLOBSTAR=pr.sep=pr.minimatch=void 0;var YCt=VCt($Se()),PO=eDe(),lDe=v7(),KCt=S7(),JCt=BO(),zCt=(e,t,r={})=>((0,PO.assertValidPattern)(t),!r.nocomment&&t.charAt(0)===\"#\"?!1:new fy(t,r).match(e));pr.minimatch=zCt;var ZCt=/^\\*+([^+@!?\\*\\[\\(]*)$/,XCt=e=>t=>!t.startsWith(\".\")&&t.endsWith(e),$Ct=e=>t=>t.endsWith(e),ewt=e=>(e=e.toLowerCase(),t=>!t.startsWith(\".\")&&t.toLowerCase().endsWith(e)),twt=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),rwt=/^\\*+\\.\\*+$/,nwt=e=>!e.startsWith(\".\")&&e.includes(\".\"),iwt=e=>e!==\".\"&&e!==\"..\"&&e.includes(\".\"),swt=/^\\.\\*+$/,owt=e=>e!==\".\"&&e!==\"..\"&&e.startsWith(\".\"),awt=/^\\*+$/,lwt=e=>e.length!==0&&!e.startsWith(\".\"),cwt=e=>e.length!==0&&e!==\".\"&&e!==\"..\",uwt=/^\\?+([^+@!?\\*\\[\\(]*)?$/,fwt=([e,t=\"\"])=>{let r=cDe([e]);return t?(t=t.toLowerCase(),s=>r(s)&&s.toLowerCase().endsWith(t)):r},Awt=([e,t=\"\"])=>{let r=uDe([e]);return t?(t=t.toLowerCase(),s=>r(s)&&s.toLowerCase().endsWith(t)):r},pwt=([e,t=\"\"])=>{let r=uDe([e]);return t?s=>r(s)&&s.endsWith(t):r},hwt=([e,t=\"\"])=>{let r=cDe([e]);return t?s=>r(s)&&s.endsWith(t):r},cDe=([e])=>{let t=e.length;return r=>r.length===t&&!r.startsWith(\".\")},uDe=([e])=>{let t=e.length;return r=>r.length===t&&r!==\".\"&&r!==\"..\"},fDe=typeof process==\"object\"&&process?typeof process.env==\"object\"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:\"posix\",oDe={win32:{sep:\"\\\\\"},posix:{sep:\"/\"}};pr.sep=fDe===\"win32\"?oDe.win32.sep:oDe.posix.sep;pr.minimatch.sep=pr.sep;pr.GLOBSTAR=Symbol(\"globstar **\");pr.minimatch.GLOBSTAR=pr.GLOBSTAR;var gwt=\"[^/]\",dwt=gwt+\"*?\",mwt=\"(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?\",ywt=\"(?:(?!(?:\\\\/|^)\\\\.).)*?\",Ewt=(e,t={})=>r=>(0,pr.minimatch)(r,e,t);pr.filter=Ewt;pr.minimatch.filter=pr.filter;var $c=(e,t={})=>Object.assign({},e,t),Iwt=e=>{if(!e||typeof e!=\"object\"||!Object.keys(e).length)return pr.minimatch;let t=pr.minimatch;return Object.assign((s,a,n={})=>t(s,a,$c(e,n)),{Minimatch:class extends t.Minimatch{constructor(a,n={}){super(a,$c(e,n))}static defaults(a){return t.defaults($c(e,a)).Minimatch}},AST:class extends t.AST{constructor(a,n,c={}){super(a,n,$c(e,c))}static fromGlob(a,n={}){return t.AST.fromGlob(a,$c(e,n))}},unescape:(s,a={})=>t.unescape(s,$c(e,a)),escape:(s,a={})=>t.escape(s,$c(e,a)),filter:(s,a={})=>t.filter(s,$c(e,a)),defaults:s=>t.defaults($c(e,s)),makeRe:(s,a={})=>t.makeRe(s,$c(e,a)),braceExpand:(s,a={})=>t.braceExpand(s,$c(e,a)),match:(s,a,n={})=>t.match(s,a,$c(e,n)),sep:t.sep,GLOBSTAR:pr.GLOBSTAR})};pr.defaults=Iwt;pr.minimatch.defaults=pr.defaults;var Cwt=(e,t={})=>((0,PO.assertValidPattern)(e),t.nobrace||!/\\{(?:(?!\\{).)*\\}/.test(e)?[e]:(0,YCt.default)(e));pr.braceExpand=Cwt;pr.minimatch.braceExpand=pr.braceExpand;var wwt=(e,t={})=>new fy(e,t).makeRe();pr.makeRe=wwt;pr.minimatch.makeRe=pr.makeRe;var Bwt=(e,t,r={})=>{let s=new fy(t,r);return e=e.filter(a=>s.match(a)),s.options.nonull&&!e.length&&e.push(t),e};pr.match=Bwt;pr.minimatch.match=pr.match;var aDe=/[?*]|[+@!]\\(.*?\\)|\\[|\\]/,vwt=e=>e.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"),fy=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(t,r={}){(0,PO.assertValidPattern)(t),r=r||{},this.options=r,this.pattern=t,this.platform=r.platform||fDe,this.isWindows=this.platform===\"win32\",this.windowsPathsNoEscape=!!r.windowsPathsNoEscape||r.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\\\/g,\"/\")),this.preserveMultipleSlashes=!!r.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!r.nonegate,this.comment=!1,this.empty=!1,this.partial=!!r.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=r.windowsNoMagicRoot!==void 0?r.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let t of this.set)for(let r of t)if(typeof r!=\"string\")return!0;return!1}debug(...t){}make(){let t=this.pattern,r=this.options;if(!r.nocomment&&t.charAt(0)===\"#\"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],r.debug&&(this.debug=(...n)=>console.error(...n)),this.debug(this.pattern,this.globSet);let s=this.globSet.map(n=>this.slashSplit(n));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let a=this.globParts.map((n,c,f)=>{if(this.isWindows&&this.windowsNoMagicRoot){let p=n[0]===\"\"&&n[1]===\"\"&&(n[2]===\"?\"||!aDe.test(n[2]))&&!aDe.test(n[3]),h=/^[a-z]:/i.test(n[0]);if(p)return[...n.slice(0,4),...n.slice(4).map(E=>this.parse(E))];if(h)return[n[0],...n.slice(1).map(E=>this.parse(E))]}return n.map(p=>this.parse(p))});if(this.debug(this.pattern,a),this.set=a.filter(n=>n.indexOf(!1)===-1),this.isWindows)for(let n=0;n<this.set.length;n++){let c=this.set[n];c[0]===\"\"&&c[1]===\"\"&&this.globParts[n][2]===\"?\"&&typeof c[3]==\"string\"&&/^[a-z]:$/i.test(c[3])&&(c[2]=\"?\")}this.debug(this.pattern,this.set)}preprocess(t){if(this.options.noglobstar)for(let s=0;s<t.length;s++)for(let a=0;a<t[s].length;a++)t[s][a]===\"**\"&&(t[s][a]=\"*\");let{optimizationLevel:r=1}=this.options;return r>=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):r>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(r=>{let s=-1;for(;(s=r.indexOf(\"**\",s+1))!==-1;){let a=s;for(;r[a+1]===\"**\";)a++;a!==s&&r.splice(s,a-s)}return r})}levelOneOptimize(t){return t.map(r=>(r=r.reduce((s,a)=>{let n=s[s.length-1];return a===\"**\"&&n===\"**\"?s:a===\"..\"&&n&&n!==\"..\"&&n!==\".\"&&n!==\"**\"?(s.pop(),s):(s.push(a),s)},[]),r.length===0?[\"\"]:r))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let r=!1;do{if(r=!1,!this.preserveMultipleSlashes){for(let a=1;a<t.length-1;a++){let n=t[a];a===1&&n===\"\"&&t[0]===\"\"||(n===\".\"||n===\"\")&&(r=!0,t.splice(a,1),a--)}t[0]===\".\"&&t.length===2&&(t[1]===\".\"||t[1]===\"\")&&(r=!0,t.pop())}let s=0;for(;(s=t.indexOf(\"..\",s+1))!==-1;){let a=t[s-1];a&&a!==\".\"&&a!==\"..\"&&a!==\"**\"&&(r=!0,t.splice(s-1,2),s-=2)}}while(r);return t.length===0?[\"\"]:t}firstPhasePreProcess(t){let r=!1;do{r=!1;for(let s of t){let a=-1;for(;(a=s.indexOf(\"**\",a+1))!==-1;){let c=a;for(;s[c+1]===\"**\";)c++;c>a&&s.splice(a+1,c-a);let f=s[a+1],p=s[a+2],h=s[a+3];if(f!==\"..\"||!p||p===\".\"||p===\"..\"||!h||h===\".\"||h===\"..\")continue;r=!0,s.splice(a,1);let E=s.slice(0);E[a]=\"**\",t.push(E),a--}if(!this.preserveMultipleSlashes){for(let c=1;c<s.length-1;c++){let f=s[c];c===1&&f===\"\"&&s[0]===\"\"||(f===\".\"||f===\"\")&&(r=!0,s.splice(c,1),c--)}s[0]===\".\"&&s.length===2&&(s[1]===\".\"||s[1]===\"\")&&(r=!0,s.pop())}let n=0;for(;(n=s.indexOf(\"..\",n+1))!==-1;){let c=s[n-1];if(c&&c!==\".\"&&c!==\"..\"&&c!==\"**\"){r=!0;let p=n===1&&s[n+1]===\"**\"?[\".\"]:[];s.splice(n-1,2,...p),s.length===0&&s.push(\"\"),n-=2}}}}while(r);return t}secondPhasePreProcess(t){for(let r=0;r<t.length-1;r++)for(let s=r+1;s<t.length;s++){let a=this.partsMatch(t[r],t[s],!this.preserveMultipleSlashes);if(a){t[r]=[],t[s]=a;break}}return t.filter(r=>r.length)}partsMatch(t,r,s=!1){let a=0,n=0,c=[],f=\"\";for(;a<t.length&&n<r.length;)if(t[a]===r[n])c.push(f===\"b\"?r[n]:t[a]),a++,n++;else if(s&&t[a]===\"**\"&&r[n]===t[a+1])c.push(t[a]),a++;else if(s&&r[n]===\"**\"&&t[a]===r[n+1])c.push(r[n]),n++;else if(t[a]===\"*\"&&r[n]&&(this.options.dot||!r[n].startsWith(\".\"))&&r[n]!==\"**\"){if(f===\"b\")return!1;f=\"a\",c.push(t[a]),a++,n++}else if(r[n]===\"*\"&&t[a]&&(this.options.dot||!t[a].startsWith(\".\"))&&t[a]!==\"**\"){if(f===\"a\")return!1;f=\"b\",c.push(r[n]),a++,n++}else return!1;return t.length===r.length&&c}parseNegate(){if(this.nonegate)return;let t=this.pattern,r=!1,s=0;for(let a=0;a<t.length&&t.charAt(a)===\"!\";a++)r=!r,s++;s&&(this.pattern=t.slice(s)),this.negate=r}matchOne(t,r,s=!1){let a=this.options;if(this.isWindows){let T=typeof t[0]==\"string\"&&/^[a-z]:$/i.test(t[0]),O=!T&&t[0]===\"\"&&t[1]===\"\"&&t[2]===\"?\"&&/^[a-z]:$/i.test(t[3]),U=typeof r[0]==\"string\"&&/^[a-z]:$/i.test(r[0]),Y=!U&&r[0]===\"\"&&r[1]===\"\"&&r[2]===\"?\"&&typeof r[3]==\"string\"&&/^[a-z]:$/i.test(r[3]),te=O?3:T?0:void 0,ie=Y?3:U?0:void 0;if(typeof te==\"number\"&&typeof ie==\"number\"){let[ue,ae]=[t[te],r[ie]];ue.toLowerCase()===ae.toLowerCase()&&(r[ie]=ue,ie>te?r=r.slice(ie):te>ie&&(t=t.slice(te)))}}let{optimizationLevel:n=1}=this.options;n>=2&&(t=this.levelTwoFileOptimize(t)),this.debug(\"matchOne\",this,{file:t,pattern:r}),this.debug(\"matchOne\",t.length,r.length);for(var c=0,f=0,p=t.length,h=r.length;c<p&&f<h;c++,f++){this.debug(\"matchOne loop\");var E=r[f],C=t[c];if(this.debug(r,E,C),E===!1)return!1;if(E===pr.GLOBSTAR){this.debug(\"GLOBSTAR\",[r,E,C]);var S=c,x=f+1;if(x===h){for(this.debug(\"** at the end\");c<p;c++)if(t[c]===\".\"||t[c]===\"..\"||!a.dot&&t[c].charAt(0)===\".\")return!1;return!0}for(;S<p;){var I=t[S];if(this.debug(`\nglobstar while`,t,S,r,x,I),this.matchOne(t.slice(S),r.slice(x),s))return this.debug(\"globstar found match!\",S,p,I),!0;if(I===\".\"||I===\"..\"||!a.dot&&I.charAt(0)===\".\"){this.debug(\"dot detected!\",t,S,r,x);break}this.debug(\"globstar swallow a segment, and continue\"),S++}return!!(s&&(this.debug(`\n>>> no match, partial?`,t,S,r,x),S===p))}let T;if(typeof E==\"string\"?(T=C===E,this.debug(\"string match\",E,C,T)):(T=E.test(C),this.debug(\"pattern match\",E,C,T)),!T)return!1}if(c===p&&f===h)return!0;if(c===p)return s;if(f===h)return c===p-1&&t[c]===\"\";throw new Error(\"wtf?\")}braceExpand(){return(0,pr.braceExpand)(this.pattern,this.options)}parse(t){(0,PO.assertValidPattern)(t);let r=this.options;if(t===\"**\")return pr.GLOBSTAR;if(t===\"\")return\"\";let s,a=null;(s=t.match(awt))?a=r.dot?cwt:lwt:(s=t.match(ZCt))?a=(r.nocase?r.dot?twt:ewt:r.dot?$Ct:XCt)(s[1]):(s=t.match(uwt))?a=(r.nocase?r.dot?Awt:fwt:r.dot?pwt:hwt)(s):(s=t.match(rwt))?a=r.dot?iwt:nwt:(s=t.match(swt))&&(a=owt);let n=lDe.AST.fromGlob(t,this.options).toMMPattern();return a&&typeof n==\"object\"&&Reflect.defineProperty(n,\"test\",{value:a}),n}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let t=this.set;if(!t.length)return this.regexp=!1,this.regexp;let r=this.options,s=r.noglobstar?dwt:r.dot?mwt:ywt,a=new Set(r.nocase?[\"i\"]:[]),n=t.map(p=>{let h=p.map(E=>{if(E instanceof RegExp)for(let C of E.flags.split(\"\"))a.add(C);return typeof E==\"string\"?vwt(E):E===pr.GLOBSTAR?pr.GLOBSTAR:E._src});return h.forEach((E,C)=>{let S=h[C+1],x=h[C-1];E!==pr.GLOBSTAR||x===pr.GLOBSTAR||(x===void 0?S!==void 0&&S!==pr.GLOBSTAR?h[C+1]=\"(?:\\\\/|\"+s+\"\\\\/)?\"+S:h[C]=s:S===void 0?h[C-1]=x+\"(?:\\\\/|\"+s+\")?\":S!==pr.GLOBSTAR&&(h[C-1]=x+\"(?:\\\\/|\\\\/\"+s+\"\\\\/)\"+S,h[C+1]=pr.GLOBSTAR))}),h.filter(E=>E!==pr.GLOBSTAR).join(\"/\")}).join(\"|\"),[c,f]=t.length>1?[\"(?:\",\")\"]:[\"\",\"\"];n=\"^\"+c+n+f+\"$\",this.negate&&(n=\"^(?!\"+n+\").+$\");try{this.regexp=new RegExp(n,[...a].join(\"\"))}catch{this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split(\"/\"):this.isWindows&&/^\\/\\/[^\\/]+/.test(t)?[\"\",...t.split(/\\/+/)]:t.split(/\\/+/)}match(t,r=this.partial){if(this.debug(\"match\",t,this.pattern),this.comment)return!1;if(this.empty)return t===\"\";if(t===\"/\"&&r)return!0;let s=this.options;this.isWindows&&(t=t.split(\"\\\\\").join(\"/\"));let a=this.slashSplit(t);this.debug(this.pattern,\"split\",a);let n=this.set;this.debug(this.pattern,\"set\",n);let c=a[a.length-1];if(!c)for(let f=a.length-2;!c&&f>=0;f--)c=a[f];for(let f=0;f<n.length;f++){let p=n[f],h=a;if(s.matchBase&&p.length===1&&(h=[c]),this.matchOne(h,p,r))return s.flipNegate?!0:!this.negate}return s.flipNegate?!1:this.negate}static defaults(t){return pr.minimatch.defaults(t).Minimatch}};pr.Minimatch=fy;var Swt=v7();Object.defineProperty(pr,\"AST\",{enumerable:!0,get:function(){return Swt.AST}});var Dwt=S7();Object.defineProperty(pr,\"escape\",{enumerable:!0,get:function(){return Dwt.escape}});var bwt=BO();Object.defineProperty(pr,\"unescape\",{enumerable:!0,get:function(){return bwt.unescape}});pr.minimatch.AST=lDe.AST;pr.minimatch.Minimatch=fy;pr.minimatch.escape=KCt.escape;pr.minimatch.unescape=JCt.unescape});var P7=G(eu=>{\"use strict\";var pDe=eu&&eu.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(eu,\"__esModule\",{value:!0});eu.SuccinctRoles=eu.DelegatedRole=eu.Role=eu.TOP_LEVEL_ROLE_NAMES=void 0;var hDe=pDe(Ie(\"crypto\")),Pwt=ADe(),xO=pDe(Ie(\"util\")),kO=xA(),Ay=pf();eu.TOP_LEVEL_ROLE_NAMES=[\"root\",\"targets\",\"snapshot\",\"timestamp\"];var Mb=class e{constructor(t){let{keyIDs:r,threshold:s,unrecognizedFields:a}=t;if(xwt(r))throw new kO.ValueError(\"duplicate key IDs found\");if(s<1)throw new kO.ValueError(\"threshold must be at least 1\");this.keyIDs=r,this.threshold=s,this.unrecognizedFields=a||{}}equals(t){return t instanceof e?this.threshold===t.threshold&&xO.default.isDeepStrictEqual(this.keyIDs,t.keyIDs)&&xO.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}toJSON(){return{keyids:this.keyIDs,threshold:this.threshold,...this.unrecognizedFields}}static fromJSON(t){let{keyids:r,threshold:s,...a}=t;if(!Ay.guard.isStringArray(r))throw new TypeError(\"keyids must be an array\");if(typeof s!=\"number\")throw new TypeError(\"threshold must be a number\");return new e({keyIDs:r,threshold:s,unrecognizedFields:a})}};eu.Role=Mb;function xwt(e){return new Set(e).size!==e.length}var D7=class e extends Mb{constructor(t){super(t);let{name:r,terminating:s,paths:a,pathHashPrefixes:n}=t;if(this.name=r,this.terminating=s,t.paths&&t.pathHashPrefixes)throw new kO.ValueError(\"paths and pathHashPrefixes are mutually exclusive\");this.paths=a,this.pathHashPrefixes=n}equals(t){return t instanceof e?super.equals(t)&&this.name===t.name&&this.terminating===t.terminating&&xO.default.isDeepStrictEqual(this.paths,t.paths)&&xO.default.isDeepStrictEqual(this.pathHashPrefixes,t.pathHashPrefixes):!1}isDelegatedPath(t){if(this.paths)return this.paths.some(r=>Qwt(t,r));if(this.pathHashPrefixes){let s=hDe.default.createHash(\"sha256\").update(t).digest(\"hex\");return this.pathHashPrefixes.some(a=>s.startsWith(a))}return!1}toJSON(){let t={...super.toJSON(),name:this.name,terminating:this.terminating};return this.paths&&(t.paths=this.paths),this.pathHashPrefixes&&(t.path_hash_prefixes=this.pathHashPrefixes),t}static fromJSON(t){let{keyids:r,threshold:s,name:a,terminating:n,paths:c,path_hash_prefixes:f,...p}=t;if(!Ay.guard.isStringArray(r))throw new TypeError(\"keyids must be an array of strings\");if(typeof s!=\"number\")throw new TypeError(\"threshold must be a number\");if(typeof a!=\"string\")throw new TypeError(\"name must be a string\");if(typeof n!=\"boolean\")throw new TypeError(\"terminating must be a boolean\");if(Ay.guard.isDefined(c)&&!Ay.guard.isStringArray(c))throw new TypeError(\"paths must be an array of strings\");if(Ay.guard.isDefined(f)&&!Ay.guard.isStringArray(f))throw new TypeError(\"path_hash_prefixes must be an array of strings\");return new e({keyIDs:r,threshold:s,name:a,terminating:n,paths:c,pathHashPrefixes:f,unrecognizedFields:p})}};eu.DelegatedRole=D7;var kwt=(e,t)=>e.map((r,s)=>[r,t[s]]);function Qwt(e,t){let r=e.split(\"/\"),s=t.split(\"/\");return s.length!=r.length?!1:kwt(r,s).every(([a,n])=>(0,Pwt.minimatch)(a,n))}var b7=class e extends Mb{constructor(t){super(t);let{bitLength:r,namePrefix:s}=t;if(r<=0||r>32)throw new kO.ValueError(\"bitLength must be between 1 and 32\");this.bitLength=r,this.namePrefix=s,this.numberOfBins=Math.pow(2,r),this.suffixLen=(this.numberOfBins-1).toString(16).length}equals(t){return t instanceof e?super.equals(t)&&this.bitLength===t.bitLength&&this.namePrefix===t.namePrefix:!1}getRoleForTarget(t){let a=hDe.default.createHash(\"sha256\").update(t).digest().subarray(0,4),n=32-this.bitLength,f=(a.readUInt32BE()>>>n).toString(16).padStart(this.suffixLen,\"0\");return`${this.namePrefix}-${f}`}*getRoles(){for(let t=0;t<this.numberOfBins;t++){let r=t.toString(16).padStart(this.suffixLen,\"0\");yield`${this.namePrefix}-${r}`}}isDelegatedRole(t){let r=this.namePrefix+\"-\";if(!t.startsWith(r))return!1;let s=t.slice(r.length,t.length);if(s.length!=this.suffixLen||!s.match(/^[0-9a-fA-F]+$/))return!1;let a=parseInt(s,16);return 0<=a&&a<this.numberOfBins}toJSON(){return{...super.toJSON(),bit_length:this.bitLength,name_prefix:this.namePrefix}}static fromJSON(t){let{keyids:r,threshold:s,bit_length:a,name_prefix:n,...c}=t;if(!Ay.guard.isStringArray(r))throw new TypeError(\"keyids must be an array of strings\");if(typeof s!=\"number\")throw new TypeError(\"threshold must be a number\");if(typeof a!=\"number\")throw new TypeError(\"bit_length must be a number\");if(typeof n!=\"string\")throw new TypeError(\"name_prefix must be a string\");return new e({keyIDs:r,threshold:s,bitLength:a,namePrefix:n,unrecognizedFields:c})}};eu.SuccinctRoles=b7});var Q7=G($w=>{\"use strict\";var Rwt=$w&&$w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty($w,\"__esModule\",{value:!0});$w.Root=void 0;var gDe=Rwt(Ie(\"util\")),x7=uy(),dDe=xA(),Twt=EO(),QO=P7(),RO=pf(),k7=class e extends x7.Signed{constructor(t){if(super(t),this.type=x7.MetadataKind.Root,this.keys=t.keys||{},this.consistentSnapshot=t.consistentSnapshot??!0,!t.roles)this.roles=QO.TOP_LEVEL_ROLE_NAMES.reduce((r,s)=>({...r,[s]:new QO.Role({keyIDs:[],threshold:1})}),{});else{let r=new Set(Object.keys(t.roles));if(!QO.TOP_LEVEL_ROLE_NAMES.every(s=>r.has(s)))throw new dDe.ValueError(\"missing top-level role\");this.roles=t.roles}}addKey(t,r){if(!this.roles[r])throw new dDe.ValueError(`role ${r} does not exist`);this.roles[r].keyIDs.includes(t.keyID)||this.roles[r].keyIDs.push(t.keyID),this.keys[t.keyID]=t}equals(t){return t instanceof e?super.equals(t)&&this.consistentSnapshot===t.consistentSnapshot&&gDe.default.isDeepStrictEqual(this.keys,t.keys)&&gDe.default.isDeepStrictEqual(this.roles,t.roles):!1}toJSON(){return{_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,keys:Fwt(this.keys),roles:Nwt(this.roles),consistent_snapshot:this.consistentSnapshot,...this.unrecognizedFields}}static fromJSON(t){let{unrecognizedFields:r,...s}=x7.Signed.commonFieldsFromJSON(t),{keys:a,roles:n,consistent_snapshot:c,...f}=r;if(typeof c!=\"boolean\")throw new TypeError(\"consistent_snapshot must be a boolean\");return new e({...s,keys:Owt(a),roles:Lwt(n),consistentSnapshot:c,unrecognizedFields:f})}};$w.Root=k7;function Fwt(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function Nwt(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function Owt(e){let t;if(RO.guard.isDefined(e)){if(!RO.guard.isObjectRecord(e))throw new TypeError(\"keys must be an object\");t=Object.entries(e).reduce((r,[s,a])=>({...r,[s]:Twt.Key.fromJSON(s,a)}),{})}return t}function Lwt(e){let t;if(RO.guard.isDefined(e)){if(!RO.guard.isObjectRecord(e))throw new TypeError(\"roles must be an object\");t=Object.entries(e).reduce((r,[s,a])=>({...r,[s]:QO.Role.fromJSON(a)}),{})}return t}});var T7=G(TO=>{\"use strict\";Object.defineProperty(TO,\"__esModule\",{value:!0});TO.Signature=void 0;var R7=class e{constructor(t){let{keyID:r,sig:s}=t;this.keyID=r,this.sig=s}toJSON(){return{keyid:this.keyID,sig:this.sig}}static fromJSON(t){let{keyid:r,sig:s}=t;if(typeof r!=\"string\")throw new TypeError(\"keyid must be a string\");if(typeof s!=\"string\")throw new TypeError(\"sig must be a string\");return new e({keyID:r,sig:s})}};TO.Signature=R7});var O7=G(e1=>{\"use strict\";var Mwt=e1&&e1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e1,\"__esModule\",{value:!0});e1.Snapshot=void 0;var Uwt=Mwt(Ie(\"util\")),F7=uy(),yDe=Rb(),mDe=pf(),N7=class e extends F7.Signed{constructor(t){super(t),this.type=F7.MetadataKind.Snapshot,this.meta=t.meta||{\"targets.json\":new yDe.MetaFile({version:1})}}equals(t){return t instanceof e?super.equals(t)&&Uwt.default.isDeepStrictEqual(this.meta,t.meta):!1}toJSON(){return{_type:this.type,meta:_wt(this.meta),spec_version:this.specVersion,version:this.version,expires:this.expires,...this.unrecognizedFields}}static fromJSON(t){let{unrecognizedFields:r,...s}=F7.Signed.commonFieldsFromJSON(t),{meta:a,...n}=r;return new e({...s,meta:Hwt(a),unrecognizedFields:n})}};e1.Snapshot=N7;function _wt(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function Hwt(e){let t;if(mDe.guard.isDefined(e))if(mDe.guard.isObjectRecord(e))t=Object.entries(e).reduce((r,[s,a])=>({...r,[s]:yDe.MetaFile.fromJSON(a)}),{});else throw new TypeError(\"meta field is malformed\");return t}});var EDe=G(t1=>{\"use strict\";var jwt=t1&&t1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t1,\"__esModule\",{value:!0});t1.Delegations=void 0;var FO=jwt(Ie(\"util\")),Gwt=xA(),qwt=EO(),L7=P7(),NO=pf(),M7=class e{constructor(t){if(this.keys=t.keys,this.unrecognizedFields=t.unrecognizedFields||{},t.roles&&Object.keys(t.roles).some(r=>L7.TOP_LEVEL_ROLE_NAMES.includes(r)))throw new Gwt.ValueError(\"Delegated role name conflicts with top-level role name\");this.succinctRoles=t.succinctRoles,this.roles=t.roles}equals(t){return t instanceof e?FO.default.isDeepStrictEqual(this.keys,t.keys)&&FO.default.isDeepStrictEqual(this.roles,t.roles)&&FO.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields)&&FO.default.isDeepStrictEqual(this.succinctRoles,t.succinctRoles):!1}*rolesForTarget(t){if(this.roles)for(let r of Object.values(this.roles))r.isDelegatedPath(t)&&(yield{role:r.name,terminating:r.terminating});else this.succinctRoles&&(yield{role:this.succinctRoles.getRoleForTarget(t),terminating:!0})}toJSON(){let t={keys:Wwt(this.keys),...this.unrecognizedFields};return this.roles?t.roles=Vwt(this.roles):this.succinctRoles&&(t.succinct_roles=this.succinctRoles.toJSON()),t}static fromJSON(t){let{keys:r,roles:s,succinct_roles:a,...n}=t,c;return NO.guard.isObject(a)&&(c=L7.SuccinctRoles.fromJSON(a)),new e({keys:Ywt(r),roles:Kwt(s),unrecognizedFields:n,succinctRoles:c})}};t1.Delegations=M7;function Wwt(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function Vwt(e){return Object.values(e).map(t=>t.toJSON())}function Ywt(e){if(!NO.guard.isObjectRecord(e))throw new TypeError(\"keys is malformed\");return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:qwt.Key.fromJSON(r,s)}),{})}function Kwt(e){let t;if(NO.guard.isDefined(e)){if(!NO.guard.isObjectArray(e))throw new TypeError(\"roles is malformed\");t=e.reduce((r,s)=>{let a=L7.DelegatedRole.fromJSON(s);return{...r,[a.name]:a}},{})}return t}});var H7=G(r1=>{\"use strict\";var Jwt=r1&&r1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r1,\"__esModule\",{value:!0});r1.Targets=void 0;var IDe=Jwt(Ie(\"util\")),U7=uy(),zwt=EDe(),Zwt=Rb(),OO=pf(),_7=class e extends U7.Signed{constructor(t){super(t),this.type=U7.MetadataKind.Targets,this.targets=t.targets||{},this.delegations=t.delegations}addTarget(t){this.targets[t.path]=t}equals(t){return t instanceof e?super.equals(t)&&IDe.default.isDeepStrictEqual(this.targets,t.targets)&&IDe.default.isDeepStrictEqual(this.delegations,t.delegations):!1}toJSON(){let t={_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,targets:Xwt(this.targets),...this.unrecognizedFields};return this.delegations&&(t.delegations=this.delegations.toJSON()),t}static fromJSON(t){let{unrecognizedFields:r,...s}=U7.Signed.commonFieldsFromJSON(t),{targets:a,delegations:n,...c}=r;return new e({...s,targets:$wt(a),delegations:e1t(n),unrecognizedFields:c})}};r1.Targets=_7;function Xwt(e){return Object.entries(e).reduce((t,[r,s])=>({...t,[r]:s.toJSON()}),{})}function $wt(e){let t;if(OO.guard.isDefined(e))if(OO.guard.isObjectRecord(e))t=Object.entries(e).reduce((r,[s,a])=>({...r,[s]:Zwt.TargetFile.fromJSON(s,a)}),{});else throw new TypeError(\"targets must be an object\");return t}function e1t(e){let t;if(OO.guard.isDefined(e))if(OO.guard.isObject(e))t=zwt.Delegations.fromJSON(e);else throw new TypeError(\"delegations must be an object\");return t}});var W7=G(LO=>{\"use strict\";Object.defineProperty(LO,\"__esModule\",{value:!0});LO.Timestamp=void 0;var j7=uy(),CDe=Rb(),G7=pf(),q7=class e extends j7.Signed{constructor(t){super(t),this.type=j7.MetadataKind.Timestamp,this.snapshotMeta=t.snapshotMeta||new CDe.MetaFile({version:1})}equals(t){return t instanceof e?super.equals(t)&&this.snapshotMeta.equals(t.snapshotMeta):!1}toJSON(){return{_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,meta:{\"snapshot.json\":this.snapshotMeta.toJSON()},...this.unrecognizedFields}}static fromJSON(t){let{unrecognizedFields:r,...s}=j7.Signed.commonFieldsFromJSON(t),{meta:a,...n}=r;return new e({...s,snapshotMeta:t1t(a),unrecognizedFields:n})}};LO.Timestamp=q7;function t1t(e){let t;if(G7.guard.isDefined(e)){let r=e[\"snapshot.json\"];if(!G7.guard.isDefined(r)||!G7.guard.isObject(r))throw new TypeError(\"missing snapshot.json in meta\");t=CDe.MetaFile.fromJSON(r)}return t}});var BDe=G(i1=>{\"use strict\";var r1t=i1&&i1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(i1,\"__esModule\",{value:!0});i1.Metadata=void 0;var n1t=u7(),wDe=r1t(Ie(\"util\")),n1=uy(),Ub=xA(),i1t=Q7(),s1t=T7(),o1t=O7(),a1t=H7(),l1t=W7(),V7=pf(),Y7=class e{constructor(t,r,s){this.signed=t,this.signatures=r||{},this.unrecognizedFields=s||{}}sign(t,r=!0){let s=Buffer.from((0,n1t.canonicalize)(this.signed.toJSON())),a=t(s);r||(this.signatures={}),this.signatures[a.keyID]=a}verifyDelegate(t,r){let s,a={};switch(this.signed.type){case n1.MetadataKind.Root:a=this.signed.keys,s=this.signed.roles[t];break;case n1.MetadataKind.Targets:if(!this.signed.delegations)throw new Ub.ValueError(`No delegations found for ${t}`);a=this.signed.delegations.keys,this.signed.delegations.roles?s=this.signed.delegations.roles[t]:this.signed.delegations.succinctRoles&&this.signed.delegations.succinctRoles.isDelegatedRole(t)&&(s=this.signed.delegations.succinctRoles);break;default:throw new TypeError(\"invalid metadata type\")}if(!s)throw new Ub.ValueError(`no delegation found for ${t}`);let n=new Set;if(s.keyIDs.forEach(c=>{let f=a[c];if(f)try{f.verifySignature(r),n.add(f.keyID)}catch{}}),n.size<s.threshold)throw new Ub.UnsignedMetadataError(`${t} was signed by ${n.size}/${s.threshold} keys`)}equals(t){return t instanceof e?this.signed.equals(t.signed)&&wDe.default.isDeepStrictEqual(this.signatures,t.signatures)&&wDe.default.isDeepStrictEqual(this.unrecognizedFields,t.unrecognizedFields):!1}toJSON(){return{signatures:Object.values(this.signatures).map(r=>r.toJSON()),signed:this.signed.toJSON(),...this.unrecognizedFields}}static fromJSON(t,r){let{signed:s,signatures:a,...n}=r;if(!V7.guard.isDefined(s)||!V7.guard.isObject(s))throw new TypeError(\"signed is not defined\");if(t!==s._type)throw new Ub.ValueError(`expected '${t}', got ${s._type}`);if(!V7.guard.isObjectArray(a))throw new TypeError(\"signatures is not an array\");let c;switch(t){case n1.MetadataKind.Root:c=i1t.Root.fromJSON(s);break;case n1.MetadataKind.Timestamp:c=l1t.Timestamp.fromJSON(s);break;case n1.MetadataKind.Snapshot:c=o1t.Snapshot.fromJSON(s);break;case n1.MetadataKind.Targets:c=a1t.Targets.fromJSON(s);break;default:throw new TypeError(\"invalid metadata type\")}let f={};return a.forEach(p=>{let h=s1t.Signature.fromJSON(p);if(f[h.keyID])throw new Ub.ValueError(`multiple signatures found for keyid: ${h.keyID}`);f[h.keyID]=h}),new e(c,f,n)}};i1.Metadata=Y7});var MO=G(Fi=>{\"use strict\";Object.defineProperty(Fi,\"__esModule\",{value:!0});Fi.Timestamp=Fi.Targets=Fi.Snapshot=Fi.Signature=Fi.Root=Fi.Metadata=Fi.Key=Fi.TargetFile=Fi.MetaFile=Fi.ValueError=Fi.MetadataKind=void 0;var c1t=uy();Object.defineProperty(Fi,\"MetadataKind\",{enumerable:!0,get:function(){return c1t.MetadataKind}});var u1t=xA();Object.defineProperty(Fi,\"ValueError\",{enumerable:!0,get:function(){return u1t.ValueError}});var vDe=Rb();Object.defineProperty(Fi,\"MetaFile\",{enumerable:!0,get:function(){return vDe.MetaFile}});Object.defineProperty(Fi,\"TargetFile\",{enumerable:!0,get:function(){return vDe.TargetFile}});var f1t=EO();Object.defineProperty(Fi,\"Key\",{enumerable:!0,get:function(){return f1t.Key}});var A1t=BDe();Object.defineProperty(Fi,\"Metadata\",{enumerable:!0,get:function(){return A1t.Metadata}});var p1t=Q7();Object.defineProperty(Fi,\"Root\",{enumerable:!0,get:function(){return p1t.Root}});var h1t=T7();Object.defineProperty(Fi,\"Signature\",{enumerable:!0,get:function(){return h1t.Signature}});var g1t=O7();Object.defineProperty(Fi,\"Snapshot\",{enumerable:!0,get:function(){return g1t.Snapshot}});var d1t=H7();Object.defineProperty(Fi,\"Targets\",{enumerable:!0,get:function(){return d1t.Targets}});var m1t=W7();Object.defineProperty(Fi,\"Timestamp\",{enumerable:!0,get:function(){return m1t.Timestamp}})});var DDe=G((xtr,SDe)=>{var s1=1e3,o1=s1*60,a1=o1*60,py=a1*24,y1t=py*7,E1t=py*365.25;SDe.exports=function(e,t){t=t||{};var r=typeof e;if(r===\"string\"&&e.length>0)return I1t(e);if(r===\"number\"&&isFinite(e))return t.long?w1t(e):C1t(e);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(e))};function I1t(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),s=(t[2]||\"ms\").toLowerCase();switch(s){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return r*E1t;case\"weeks\":case\"week\":case\"w\":return r*y1t;case\"days\":case\"day\":case\"d\":return r*py;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return r*a1;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return r*o1;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return r*s1;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return r;default:return}}}}function C1t(e){var t=Math.abs(e);return t>=py?Math.round(e/py)+\"d\":t>=a1?Math.round(e/a1)+\"h\":t>=o1?Math.round(e/o1)+\"m\":t>=s1?Math.round(e/s1)+\"s\":e+\"ms\"}function w1t(e){var t=Math.abs(e);return t>=py?UO(e,t,py,\"day\"):t>=a1?UO(e,t,a1,\"hour\"):t>=o1?UO(e,t,o1,\"minute\"):t>=s1?UO(e,t,s1,\"second\"):e+\" ms\"}function UO(e,t,r,s){var a=t>=r*1.5;return Math.round(e/r)+\" \"+s+(a?\"s\":\"\")}});var K7=G((ktr,bDe)=>{function B1t(e){r.debug=r,r.default=r,r.coerce=p,r.disable=c,r.enable=a,r.enabled=f,r.humanize=DDe(),r.destroy=h,Object.keys(e).forEach(E=>{r[E]=e[E]}),r.names=[],r.skips=[],r.formatters={};function t(E){let C=0;for(let S=0;S<E.length;S++)C=(C<<5)-C+E.charCodeAt(S),C|=0;return r.colors[Math.abs(C)%r.colors.length]}r.selectColor=t;function r(E){let C,S=null,x,I;function T(...O){if(!T.enabled)return;let U=T,Y=Number(new Date),te=Y-(C||Y);U.diff=te,U.prev=C,U.curr=Y,C=Y,O[0]=r.coerce(O[0]),typeof O[0]!=\"string\"&&O.unshift(\"%O\");let ie=0;O[0]=O[0].replace(/%([a-zA-Z%])/g,(ae,de)=>{if(ae===\"%%\")return\"%\";ie++;let Ae=r.formatters[de];if(typeof Ae==\"function\"){let Ce=O[ie];ae=Ae.call(U,Ce),O.splice(ie,1),ie--}return ae}),r.formatArgs.call(U,O),(U.log||r.log).apply(U,O)}return T.namespace=E,T.useColors=r.useColors(),T.color=r.selectColor(E),T.extend=s,T.destroy=r.destroy,Object.defineProperty(T,\"enabled\",{enumerable:!0,configurable:!1,get:()=>S!==null?S:(x!==r.namespaces&&(x=r.namespaces,I=r.enabled(E)),I),set:O=>{S=O}}),typeof r.init==\"function\"&&r.init(T),T}function s(E,C){let S=r(this.namespace+(typeof C>\"u\"?\":\":C)+E);return S.log=this.log,S}function a(E){r.save(E),r.namespaces=E,r.names=[],r.skips=[];let C=(typeof E==\"string\"?E:\"\").trim().replace(\" \",\",\").split(\",\").filter(Boolean);for(let S of C)S[0]===\"-\"?r.skips.push(S.slice(1)):r.names.push(S)}function n(E,C){let S=0,x=0,I=-1,T=0;for(;S<E.length;)if(x<C.length&&(C[x]===E[S]||C[x]===\"*\"))C[x]===\"*\"?(I=x,T=S,x++):(S++,x++);else if(I!==-1)x=I+1,T++,S=T;else return!1;for(;x<C.length&&C[x]===\"*\";)x++;return x===C.length}function c(){let E=[...r.names,...r.skips.map(C=>\"-\"+C)].join(\",\");return r.enable(\"\"),E}function f(E){for(let C of r.skips)if(n(E,C))return!1;for(let C of r.names)if(n(E,C))return!0;return!1}function p(E){return E instanceof Error?E.stack||E.message:E}function h(){console.warn(\"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.\")}return r.enable(r.load()),r}bDe.exports=B1t});var PDe=G((oc,_O)=>{oc.formatArgs=S1t;oc.save=D1t;oc.load=b1t;oc.useColors=v1t;oc.storage=P1t();oc.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn(\"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.\"))}})();oc.colors=[\"#0000CC\",\"#0000FF\",\"#0033CC\",\"#0033FF\",\"#0066CC\",\"#0066FF\",\"#0099CC\",\"#0099FF\",\"#00CC00\",\"#00CC33\",\"#00CC66\",\"#00CC99\",\"#00CCCC\",\"#00CCFF\",\"#3300CC\",\"#3300FF\",\"#3333CC\",\"#3333FF\",\"#3366CC\",\"#3366FF\",\"#3399CC\",\"#3399FF\",\"#33CC00\",\"#33CC33\",\"#33CC66\",\"#33CC99\",\"#33CCCC\",\"#33CCFF\",\"#6600CC\",\"#6600FF\",\"#6633CC\",\"#6633FF\",\"#66CC00\",\"#66CC33\",\"#9900CC\",\"#9900FF\",\"#9933CC\",\"#9933FF\",\"#99CC00\",\"#99CC33\",\"#CC0000\",\"#CC0033\",\"#CC0066\",\"#CC0099\",\"#CC00CC\",\"#CC00FF\",\"#CC3300\",\"#CC3333\",\"#CC3366\",\"#CC3399\",\"#CC33CC\",\"#CC33FF\",\"#CC6600\",\"#CC6633\",\"#CC9900\",\"#CC9933\",\"#CCCC00\",\"#CCCC33\",\"#FF0000\",\"#FF0033\",\"#FF0066\",\"#FF0099\",\"#FF00CC\",\"#FF00FF\",\"#FF3300\",\"#FF3333\",\"#FF3366\",\"#FF3399\",\"#FF33CC\",\"#FF33FF\",\"#FF6600\",\"#FF6633\",\"#FF9900\",\"#FF9933\",\"#FFCC00\",\"#FFCC33\"];function v1t(){if(typeof window<\"u\"&&window.process&&(window.process.type===\"renderer\"||window.process.__nwjs))return!0;if(typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/))return!1;let e;return typeof document<\"u\"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<\"u\"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<\"u\"&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)}function S1t(e){if(e[0]=(this.useColors?\"%c\":\"\")+this.namespace+(this.useColors?\" %c\":\" \")+e[0]+(this.useColors?\"%c \":\" \")+\"+\"+_O.exports.humanize(this.diff),!this.useColors)return;let t=\"color: \"+this.color;e.splice(1,0,t,\"color: inherit\");let r=0,s=0;e[0].replace(/%[a-zA-Z%]/g,a=>{a!==\"%%\"&&(r++,a===\"%c\"&&(s=r))}),e.splice(s,0,t)}oc.log=console.debug||console.log||(()=>{});function D1t(e){try{e?oc.storage.setItem(\"debug\",e):oc.storage.removeItem(\"debug\")}catch{}}function b1t(){let e;try{e=oc.storage.getItem(\"debug\")}catch{}return!e&&typeof process<\"u\"&&\"env\"in process&&(e=process.env.DEBUG),e}function P1t(){try{return localStorage}catch{}}_O.exports=K7()(oc);var{formatters:x1t}=_O.exports;x1t.j=function(e){try{return JSON.stringify(e)}catch(t){return\"[UnexpectedJSONParseError]: \"+t.message}}});var kDe=G((io,jO)=>{var k1t=Ie(\"tty\"),HO=Ie(\"util\");io.init=L1t;io.log=F1t;io.formatArgs=R1t;io.save=N1t;io.load=O1t;io.useColors=Q1t;io.destroy=HO.deprecate(()=>{},\"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.\");io.colors=[6,2,3,4,5,1];try{let e=Ie(\"supports-color\");e&&(e.stderr||e).level>=2&&(io.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}io.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,t)=>{let r=t.substring(6).toLowerCase().replace(/_([a-z])/g,(a,n)=>n.toUpperCase()),s=process.env[t];return/^(yes|on|true|enabled)$/i.test(s)?s=!0:/^(no|off|false|disabled)$/i.test(s)?s=!1:s===\"null\"?s=null:s=Number(s),e[r]=s,e},{});function Q1t(){return\"colors\"in io.inspectOpts?!!io.inspectOpts.colors:k1t.isatty(process.stderr.fd)}function R1t(e){let{namespace:t,useColors:r}=this;if(r){let s=this.color,a=\"\\x1B[3\"+(s<8?s:\"8;5;\"+s),n=`  ${a};1m${t} \\x1B[0m`;e[0]=n+e[0].split(`\n`).join(`\n`+n),e.push(a+\"m+\"+jO.exports.humanize(this.diff)+\"\\x1B[0m\")}else e[0]=T1t()+t+\" \"+e[0]}function T1t(){return io.inspectOpts.hideDate?\"\":new Date().toISOString()+\" \"}function F1t(...e){return process.stderr.write(HO.formatWithOptions(io.inspectOpts,...e)+`\n`)}function N1t(e){e?process.env.DEBUG=e:delete process.env.DEBUG}function O1t(){return process.env.DEBUG}function L1t(e){e.inspectOpts={};let t=Object.keys(io.inspectOpts);for(let r=0;r<t.length;r++)e.inspectOpts[t[r]]=io.inspectOpts[t[r]]}jO.exports=K7()(io);var{formatters:xDe}=jO.exports;xDe.o=function(e){return this.inspectOpts.colors=this.useColors,HO.inspect(e,this.inspectOpts).split(`\n`).map(t=>t.trim()).join(\" \")};xDe.O=function(e){return this.inspectOpts.colors=this.useColors,HO.inspect(e,this.inspectOpts)}});var z7=G((Qtr,J7)=>{typeof process>\"u\"||process.type===\"renderer\"||process.browser===!0||process.__nwjs?J7.exports=PDe():J7.exports=kDe()});var qO=G(Ji=>{\"use strict\";Object.defineProperty(Ji,\"__esModule\",{value:!0});Ji.DownloadHTTPError=Ji.DownloadLengthMismatchError=Ji.DownloadError=Ji.ExpiredMetadataError=Ji.EqualVersionError=Ji.BadVersionError=Ji.RepositoryError=Ji.PersistError=Ji.RuntimeError=Ji.ValueError=void 0;var Z7=class extends Error{};Ji.ValueError=Z7;var X7=class extends Error{};Ji.RuntimeError=X7;var $7=class extends Error{};Ji.PersistError=$7;var _b=class extends Error{};Ji.RepositoryError=_b;var GO=class extends _b{};Ji.BadVersionError=GO;var eK=class extends GO{};Ji.EqualVersionError=eK;var tK=class extends _b{};Ji.ExpiredMetadataError=tK;var Hb=class extends Error{};Ji.DownloadError=Hb;var rK=class extends Hb{};Ji.DownloadLengthMismatchError=rK;var nK=class extends Hb{constructor(t,r){super(t),this.statusCode=r}};Ji.DownloadHTTPError=nK});var RDe=G(l1=>{\"use strict\";var sK=l1&&l1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(l1,\"__esModule\",{value:!0});l1.withTempFile=void 0;var iK=sK(Ie(\"fs/promises\")),M1t=sK(Ie(\"os\")),QDe=sK(Ie(\"path\")),U1t=async e=>_1t(async t=>e(QDe.default.join(t,\"tempfile\")));l1.withTempFile=U1t;var _1t=async e=>{let t=await iK.default.realpath(M1t.default.tmpdir()),r=await iK.default.mkdtemp(t+QDe.default.sep);try{return await e(r)}finally{await iK.default.rm(r,{force:!0,recursive:!0,maxRetries:3})}}});var aK=G(Pg=>{\"use strict\";var VO=Pg&&Pg.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Pg,\"__esModule\",{value:!0});Pg.DefaultFetcher=Pg.BaseFetcher=void 0;var H1t=VO(z7()),TDe=VO(Ie(\"fs\")),j1t=VO(sO()),G1t=VO(Ie(\"util\")),FDe=qO(),q1t=RDe(),W1t=(0,H1t.default)(\"tuf:fetch\"),WO=class{async downloadFile(t,r,s){return(0,q1t.withTempFile)(async a=>{let n=await this.fetch(t),c=0,f=TDe.default.createWriteStream(a);try{for await(let p of n){let h=Buffer.from(p);if(c+=h.length,c>r)throw new FDe.DownloadLengthMismatchError(\"Max length reached\");await V1t(f,h)}}finally{await G1t.default.promisify(f.close).bind(f)()}return s(a)})}async downloadBytes(t,r){return this.downloadFile(t,r,async s=>{let a=TDe.default.createReadStream(s),n=[];for await(let c of a)n.push(c);return Buffer.concat(n)})}};Pg.BaseFetcher=WO;var oK=class extends WO{constructor(t={}){super(),this.timeout=t.timeout,this.retry=t.retry}async fetch(t){W1t(\"GET %s\",t);let r=await(0,j1t.default)(t,{timeout:this.timeout,retry:this.retry});if(!r.ok||!r?.body)throw new FDe.DownloadHTTPError(\"Failed to download\",r.status);return r.body}};Pg.DefaultFetcher=oK;var V1t=async(e,t)=>new Promise((r,s)=>{e.write(t,a=>{a&&s(a),r(!0)})})});var NDe=G(YO=>{\"use strict\";Object.defineProperty(YO,\"__esModule\",{value:!0});YO.defaultConfig=void 0;YO.defaultConfig={maxRootRotations:256,maxDelegations:32,rootMaxLength:512e3,timestampMaxLength:16384,snapshotMaxLength:2e6,targetsMaxLength:5e6,prefixTargetsWithHash:!0,fetchTimeout:1e5,fetchRetries:void 0,fetchRetry:2}});var ODe=G(KO=>{\"use strict\";Object.defineProperty(KO,\"__esModule\",{value:!0});KO.TrustedMetadataStore=void 0;var ws=MO(),Hi=qO(),lK=class{constructor(t){this.trustedSet={},this.referenceTime=new Date,this.loadTrustedRoot(t)}get root(){if(!this.trustedSet.root)throw new ReferenceError(\"No trusted root metadata\");return this.trustedSet.root}get timestamp(){return this.trustedSet.timestamp}get snapshot(){return this.trustedSet.snapshot}get targets(){return this.trustedSet.targets}getRole(t){return this.trustedSet[t]}updateRoot(t){let r=JSON.parse(t.toString(\"utf8\")),s=ws.Metadata.fromJSON(ws.MetadataKind.Root,r);if(s.signed.type!=ws.MetadataKind.Root)throw new Hi.RepositoryError(`Expected 'root', got ${s.signed.type}`);if(this.root.verifyDelegate(ws.MetadataKind.Root,s),s.signed.version!=this.root.signed.version+1)throw new Hi.BadVersionError(`Expected version ${this.root.signed.version+1}, got ${s.signed.version}`);return s.verifyDelegate(ws.MetadataKind.Root,s),this.trustedSet.root=s,s}updateTimestamp(t){if(this.snapshot)throw new Hi.RuntimeError(\"Cannot update timestamp after snapshot\");if(this.root.signed.isExpired(this.referenceTime))throw new Hi.ExpiredMetadataError(\"Final root.json is expired\");let r=JSON.parse(t.toString(\"utf8\")),s=ws.Metadata.fromJSON(ws.MetadataKind.Timestamp,r);if(s.signed.type!=ws.MetadataKind.Timestamp)throw new Hi.RepositoryError(`Expected 'timestamp', got ${s.signed.type}`);if(this.root.verifyDelegate(ws.MetadataKind.Timestamp,s),this.timestamp){if(s.signed.version<this.timestamp.signed.version)throw new Hi.BadVersionError(`New timestamp version ${s.signed.version} is less than current version ${this.timestamp.signed.version}`);if(s.signed.version===this.timestamp.signed.version)throw new Hi.EqualVersionError(`New timestamp version ${s.signed.version} is equal to current version ${this.timestamp.signed.version}`);let a=this.timestamp.signed.snapshotMeta,n=s.signed.snapshotMeta;if(n.version<a.version)throw new Hi.BadVersionError(`New snapshot version ${n.version} is less than current version ${a.version}`)}return this.trustedSet.timestamp=s,this.checkFinalTimestamp(),s}updateSnapshot(t,r=!1){if(!this.timestamp)throw new Hi.RuntimeError(\"Cannot update snapshot before timestamp\");if(this.targets)throw new Hi.RuntimeError(\"Cannot update snapshot after targets\");this.checkFinalTimestamp();let s=this.timestamp.signed.snapshotMeta;r||s.verify(t);let a=JSON.parse(t.toString(\"utf8\")),n=ws.Metadata.fromJSON(ws.MetadataKind.Snapshot,a);if(n.signed.type!=ws.MetadataKind.Snapshot)throw new Hi.RepositoryError(`Expected 'snapshot', got ${n.signed.type}`);return this.root.verifyDelegate(ws.MetadataKind.Snapshot,n),this.snapshot&&Object.entries(this.snapshot.signed.meta).forEach(([c,f])=>{let p=n.signed.meta[c];if(!p)throw new Hi.RepositoryError(`Missing file ${c} in new snapshot`);if(p.version<f.version)throw new Hi.BadVersionError(`New version ${p.version} of ${c} is less than current version ${f.version}`)}),this.trustedSet.snapshot=n,this.checkFinalSnapsnot(),n}updateDelegatedTargets(t,r,s){if(!this.snapshot)throw new Hi.RuntimeError(\"Cannot update delegated targets before snapshot\");this.checkFinalSnapsnot();let a=this.trustedSet[s];if(!a)throw new Hi.RuntimeError(`No trusted ${s} metadata`);let n=this.snapshot.signed.meta?.[`${r}.json`];if(!n)throw new Hi.RepositoryError(`Missing ${r}.json in snapshot`);n.verify(t);let c=JSON.parse(t.toString(\"utf8\")),f=ws.Metadata.fromJSON(ws.MetadataKind.Targets,c);if(f.signed.type!=ws.MetadataKind.Targets)throw new Hi.RepositoryError(`Expected 'targets', got ${f.signed.type}`);a.verifyDelegate(r,f);let p=f.signed.version;if(p!=n.version)throw new Hi.BadVersionError(`Version ${p} of ${r} does not match snapshot version ${n.version}`);if(f.signed.isExpired(this.referenceTime))throw new Hi.ExpiredMetadataError(`${r}.json is expired`);this.trustedSet[r]=f}loadTrustedRoot(t){let r=JSON.parse(t.toString(\"utf8\")),s=ws.Metadata.fromJSON(ws.MetadataKind.Root,r);if(s.signed.type!=ws.MetadataKind.Root)throw new Hi.RepositoryError(`Expected 'root', got ${s.signed.type}`);s.verifyDelegate(ws.MetadataKind.Root,s),this.trustedSet.root=s}checkFinalTimestamp(){if(!this.timestamp)throw new ReferenceError(\"No trusted timestamp metadata\");if(this.timestamp.signed.isExpired(this.referenceTime))throw new Hi.ExpiredMetadataError(\"Final timestamp.json is expired\")}checkFinalSnapsnot(){if(!this.snapshot)throw new ReferenceError(\"No trusted snapshot metadata\");if(!this.timestamp)throw new ReferenceError(\"No trusted timestamp metadata\");if(this.snapshot.signed.isExpired(this.referenceTime))throw new Hi.ExpiredMetadataError(\"snapshot.json is expired\");let t=this.timestamp.signed.snapshotMeta;if(this.snapshot.signed.version!==t.version)throw new Hi.BadVersionError(\"Snapshot version doesn't match timestamp\")}};KO.TrustedMetadataStore=lK});var LDe=G(cK=>{\"use strict\";Object.defineProperty(cK,\"__esModule\",{value:!0});cK.join=K1t;var Y1t=Ie(\"url\");function K1t(e,t){return new Y1t.URL(J1t(e)+z1t(t)).toString()}function J1t(e){return e.endsWith(\"/\")?e:e+\"/\"}function z1t(e){return e.startsWith(\"/\")?e.slice(1):e}});var MDe=G(tu=>{\"use strict\";var Z1t=tu&&tu.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||(\"get\"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),X1t=tu&&tu.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),AK=tu&&tu.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r)&&Z1t(t,e,r);return X1t(t,e),t},$1t=tu&&tu.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(tu,\"__esModule\",{value:!0});tu.Updater=void 0;var kA=MO(),eBt=$1t(z7()),c1=AK(Ie(\"fs\")),JO=AK(Ie(\"path\")),tBt=NDe(),hy=qO(),rBt=aK(),nBt=ODe(),jb=AK(LDe()),uK=(0,eBt.default)(\"tuf:cache\"),fK=class{constructor(t){let{metadataDir:r,metadataBaseUrl:s,targetDir:a,targetBaseUrl:n,fetcher:c,config:f}=t;this.dir=r,this.metadataBaseUrl=s,this.targetDir=a,this.targetBaseUrl=n,this.forceCache=t.forceCache??!1;let p=this.loadLocalMetadata(kA.MetadataKind.Root);this.trustedSet=new nBt.TrustedMetadataStore(p),this.config={...tBt.defaultConfig,...f},this.fetcher=c||new rBt.DefaultFetcher({timeout:this.config.fetchTimeout,retry:this.config.fetchRetries??this.config.fetchRetry})}async refresh(){if(this.forceCache)try{await this.loadTimestamp({checkRemote:!1})}catch{await this.loadRoot(),await this.loadTimestamp()}else await this.loadRoot(),await this.loadTimestamp();await this.loadSnapshot(),await this.loadTargets(kA.MetadataKind.Targets,kA.MetadataKind.Root)}async getTargetInfo(t){return this.trustedSet.targets||await this.refresh(),this.preorderDepthFirstWalk(t)}async downloadTarget(t,r,s){let a=r||this.generateTargetPath(t);if(!s){if(!this.targetBaseUrl)throw new hy.ValueError(\"Target base URL not set\");s=this.targetBaseUrl}let n=t.path;if(this.trustedSet.root.signed.consistentSnapshot&&this.config.prefixTargetsWithHash){let p=Object.values(t.hashes),{dir:h,base:E}=JO.parse(n),C=`${p[0]}.${E}`;n=h?`${h}/${C}`:C}let f=jb.join(s,n);return await this.fetcher.downloadFile(f,t.length,async p=>{await t.verify(c1.createReadStream(p)),uK(\"WRITE %s\",a),c1.copyFileSync(p,a)}),a}async findCachedTarget(t,r){r||(r=this.generateTargetPath(t));try{if(c1.existsSync(r))return await t.verify(c1.createReadStream(r)),r}catch{return}}loadLocalMetadata(t){let r=JO.join(this.dir,`${t}.json`);return uK(\"READ %s\",r),c1.readFileSync(r)}async loadRoot(){let r=this.trustedSet.root.signed.version+1,s=r+this.config.maxRootRotations;for(let a=r;a<s;a++){let n=jb.join(this.metadataBaseUrl,`${a}.root.json`);try{let c=await this.fetcher.downloadBytes(n,this.config.rootMaxLength);this.trustedSet.updateRoot(c),this.persistMetadata(kA.MetadataKind.Root,c)}catch(c){if(c instanceof hy.DownloadHTTPError&&[403,404].includes(c.statusCode))break;throw c}}}async loadTimestamp({checkRemote:t}={checkRemote:!0}){try{let a=this.loadLocalMetadata(kA.MetadataKind.Timestamp);if(this.trustedSet.updateTimestamp(a),!t)return}catch{}let r=jb.join(this.metadataBaseUrl,\"timestamp.json\"),s=await this.fetcher.downloadBytes(r,this.config.timestampMaxLength);try{this.trustedSet.updateTimestamp(s)}catch(a){if(a instanceof hy.EqualVersionError)return;throw a}this.persistMetadata(kA.MetadataKind.Timestamp,s)}async loadSnapshot(){try{let t=this.loadLocalMetadata(kA.MetadataKind.Snapshot);this.trustedSet.updateSnapshot(t,!0)}catch{if(!this.trustedSet.timestamp)throw new ReferenceError(\"No timestamp metadata\");let r=this.trustedSet.timestamp.signed.snapshotMeta,s=r.length||this.config.snapshotMaxLength,a=this.trustedSet.root.signed.consistentSnapshot?r.version:void 0,n=jb.join(this.metadataBaseUrl,a?`${a}.snapshot.json`:\"snapshot.json\");try{let c=await this.fetcher.downloadBytes(n,s);this.trustedSet.updateSnapshot(c),this.persistMetadata(kA.MetadataKind.Snapshot,c)}catch(c){throw new hy.RuntimeError(`Unable to load snapshot metadata error ${c}`)}}}async loadTargets(t,r){if(this.trustedSet.getRole(t))return this.trustedSet.getRole(t);try{let s=this.loadLocalMetadata(t);this.trustedSet.updateDelegatedTargets(s,t,r)}catch{if(!this.trustedSet.snapshot)throw new ReferenceError(\"No snapshot metadata\");let a=this.trustedSet.snapshot.signed.meta[`${t}.json`],n=a.length||this.config.targetsMaxLength,c=this.trustedSet.root.signed.consistentSnapshot?a.version:void 0,f=encodeURIComponent(t),p=jb.join(this.metadataBaseUrl,c?`${c}.${f}.json`:`${f}.json`);try{let h=await this.fetcher.downloadBytes(p,n);this.trustedSet.updateDelegatedTargets(h,t,r),this.persistMetadata(t,h)}catch(h){throw new hy.RuntimeError(`Unable to load targets error ${h}`)}}return this.trustedSet.getRole(t)}async preorderDepthFirstWalk(t){let r=[{roleName:kA.MetadataKind.Targets,parentRoleName:kA.MetadataKind.Root}],s=new Set;for(;s.size<=this.config.maxDelegations&&r.length>0;){let{roleName:a,parentRoleName:n}=r.pop();if(s.has(a))continue;let c=(await this.loadTargets(a,n))?.signed;if(!c)continue;let f=c.targets?.[t];if(f)return f;if(s.add(a),c.delegations){let p=[],h=c.delegations.rolesForTarget(t);for(let{role:E,terminating:C}of h)if(p.push({roleName:E,parentRoleName:a}),C){r.splice(0);break}p.reverse(),r.push(...p)}}}generateTargetPath(t){if(!this.targetDir)throw new hy.ValueError(\"Target directory not set\");let r=encodeURIComponent(t.path);return JO.join(this.targetDir,r)}persistMetadata(t,r){let s=encodeURIComponent(t);try{let a=JO.join(this.dir,`${s}.json`);uK(\"WRITE %s\",a),c1.writeFileSync(a,r.toString(\"utf8\"))}catch(a){throw new hy.PersistError(`Failed to persist metadata ${s} error: ${a}`)}}};tu.Updater=fK});var UDe=G(xg=>{\"use strict\";Object.defineProperty(xg,\"__esModule\",{value:!0});xg.Updater=xg.BaseFetcher=xg.TargetFile=void 0;var iBt=MO();Object.defineProperty(xg,\"TargetFile\",{enumerable:!0,get:function(){return iBt.TargetFile}});var sBt=aK();Object.defineProperty(xg,\"BaseFetcher\",{enumerable:!0,get:function(){return sBt.BaseFetcher}});var oBt=MDe();Object.defineProperty(xg,\"Updater\",{enumerable:!0,get:function(){return oBt.Updater}})});var hK=G(zO=>{\"use strict\";Object.defineProperty(zO,\"__esModule\",{value:!0});zO.TUFError=void 0;var pK=class extends Error{constructor({code:t,message:r,cause:s}){super(r),this.code=t,this.cause=s,this.name=this.constructor.name}};zO.TUFError=pK});var _De=G(Gb=>{\"use strict\";var aBt=Gb&&Gb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Gb,\"__esModule\",{value:!0});Gb.readTarget=cBt;var lBt=aBt(Ie(\"fs\")),ZO=hK();async function cBt(e,t){let r=await uBt(e,t);return new Promise((s,a)=>{lBt.default.readFile(r,\"utf-8\",(n,c)=>{n?a(new ZO.TUFError({code:\"TUF_READ_TARGET_ERROR\",message:`error reading target ${r}`,cause:n})):s(c)})})}async function uBt(e,t){let r;try{r=await e.getTargetInfo(t)}catch(a){throw new ZO.TUFError({code:\"TUF_REFRESH_METADATA_ERROR\",message:\"error refreshing TUF metadata\",cause:a})}if(!r)throw new ZO.TUFError({code:\"TUF_FIND_TARGET_ERROR\",message:`target ${t} not found`});let s=await e.findCachedTarget(r);if(!s)try{s=await e.downloadTarget(r)}catch(a){throw new ZO.TUFError({code:\"TUF_DOWNLOAD_TARGET_ERROR\",message:`error downloading target ${s}`,cause:a})}return s}});var HDe=G((jtr,fBt)=>{fBt.exports={\"https://tuf-repo-cdn.sigstore.dev\":{\"root.json\":\"ewogInNpZ25hdHVyZXMiOiBbCiAgewogICAia2V5aWQiOiAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICJzaWciOiAiMzA0NjAyMjEwMDhhYjFmNmYxN2Q0ZjllNmQ3ZGNmMWM4ODkxMmI2YjUzY2MxMDM4ODY0NGFlMWYwOWJjMzdhMDgyY2QwNjAwM2UwMjIxMDBlMTQ1ZWY0YzdiNzgyZDRlODEwN2I1MzQzN2U2NjlkMDQ3Njg5MmNlOTk5OTAzYWUzM2QxNDQ0ODM2Njk5NmU3IgogIH0sCiAgewogICAia2V5aWQiOiAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICJzaWciOiAiMzA0NTAyMjEwMGM3NjhiMmY4NmRhOTk1NjkwMTljMTYwYTA4MWRhNTRhZTM2YzM0YzBhMzEyMGQzY2I2OWI1M2I3ZDExMzc1OGUwMjIwNGY2NzE1MThmNjE3YjIwZDQ2NTM3ZmFlNmMzYjYzYmFlODkxM2Y0ZjE5NjIxNTYxMDVjYzRmMDE5YWMzNWM2YSIKICB9LAogIHsKICAgImtleWlkIjogIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAic2lnIjogIjMwNDUwMjIxMDBiNDQzNGU2OTk1ZDM2OGQyM2U3NDc1OWFjZDBjYjkwMTNjODNhNWQzNTExZjBmOTk3ZWM1NGM0NTZhZTQzNTBhMDIyMDE1YjBlMjY1ZDE4MmQyYjYxZGM3NGUxNTVkOThiM2MzZmJlNTY0YmEwNTI4NmFhMTRjOGRmMDJjOWI3NTY1MTYiCiAgfSwKICB7CiAgICJrZXlpZCI6ICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgInNpZyI6ICIzMDQ1MDIyMTAwODJjNTg0MTFkOTg5ZWI5Zjg2MTQxMDg1N2Q0MjM4MTU5MGVjOTQyNGRiZGFhNTFlNzhlZDEzNTE1NDMxOTA0ZTAyMjAxMTgxODVkYTZhNmMyOTQ3MTMxYzE3Nzk3ZTJiYjc2MjBjZTI2ZTVmMzAxZDFjZWFjNWYyYTdlNThmOWRjZjJlIgogIH0sCiAgewogICAia2V5aWQiOiAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIsCiAgICJzaWciOiAiMzA0NjAyMjEwMGM3ODUxMzg1NGNhZTljMzJlYWE2Yjg4ZTE4OTEyZjQ4MDA2YzI3NTdhMjU4ZjkxNzMxMmNhYmE3NTk0OGViOWUwMjIxMDBkOWUxYjRjZTBhZGZlOWZkMmUyMTQ4ZDdmYTI3YTJmNDBiYTExMjJiZDY5ZGE3NjEyZDhkMTc3NmIwMTNjOTFkIgogIH0sCiAgewogICAia2V5aWQiOiAiZmRmYTgzYTA3YjVhODM1ODliODdkZWQ0MWY3N2YzOWQyMzJhZDkxZjdjY2U1Mjg2OGRhY2QwNmJhMDg5ODQ5ZiIsCiAgICJzaWciOiAiMzA0NTAyMjA1NjQ4M2EyZDVkOWVhOWNlYzZlMTFlYWRmYjMzYzQ4NGI2MTQyOThmYWNhMTVhY2YxYzQzMWIxMWVkN2Y3MzRjMDIyMTAwZDBjMWQ3MjZhZjkyYTg3ZTRlNjY0NTljYTVhZGYzOGEwNWI0NGUxZjk0MzE4NDIzZjk1NGJhZThiY2E1YmIyZSIKICB9LAogIHsKICAgImtleWlkIjogImUyZjU5YWNiOTQ4ODUxOTQwN2UxOGNiZmM5MzI5NTEwYmUwM2MwNGFjYTk5MjlkMmYwMzAxMzQzZmVjODU1MjMiLAogICAic2lnIjogIjMwNDYwMjIxMDBkMDA0ZGU4ODAyNGMzMmRjNTY1M2E5ZjQ4NDNjZmM1MjE1NDI3MDQ4YWQ5NjAwZDJjZjljOTY5ZTZlZGZmM2QyMDIyMTAwZDllYmI3OThmNWZjNjZhZjEwODk5ZGVjZTAxNGE4NjI4Y2NmM2M1NDAyY2Q0YTQyNzAyMDc0NzJmOGY2ZTcxMiIKICB9LAogIHsKICAgImtleWlkIjogIjNjMzQ0YWEwNjhmZDRjYzRlODdkYzUwYjYxMmMwMjQzMWZiYzc3MWU5NTAwMzk5MzY4M2EyYjBiZjI2MGNmMGUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiN2IwOTk5NmM0NWNhMmQ0YjA1NjAzZTU2YmFlZmEyOTcxOGEwYjcxMTQ3Y2Y4YzZlNjYzNDliYWE2MTQ3N2RmMDIyMTAwYzRkYTgwYzcxN2I0ZmE3YmJhMGZkNWM3MmRhOGEwNDk5MzU4YjAxMzU4YjIzMDlmNDFkMTQ1NmVhMWU3ZTFkOSIKICB9LAogIHsKICAgImtleWlkIjogImVjODE2Njk3MzRlMDE3OTk2YzViODVmM2QwMmMzZGUxZGQ0NjM3YTE1MjAxOWZlMWFmMTI1ZDJmOTM2OGI5NWUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiZTk3ODJjMzA3NDRlNDExYTgyZmE4NWI1MTM4ZDYwMWNlMTQ4YmMxOTI1OGFlYzY0ZTdlYzI0NDc4ZjM4ODEyMDIyMTAwY2FlZjYzZGNhZjFhNGI5YTUwMGQzYmQwZTNmMTY0ZWMxOGYxYjYzZDdhOTQ2MGQ5YWNhYjEwNjZkYjBmMDE2ZCIKICB9LAogIHsKICAgImtleWlkIjogIjFlMWQ2NWNlOThiMTBhZGRhZDQ3NjRmZWJmN2RkYTJkMDQzNmIzZDNhMzg5MzU3OWMwZGRkYWVhMjBlNTQ4NDkiLAogICAic2lnIjogIjMwNDUwMjIwNzQ2ZWMzZjg1MzRjZTU1NTMxZDBkMDFmZjY0OTY0ZWY0NDBkMWU3ZDJjNGMxNDI0MDliOGU5NzY5ZjFhZGE2ZjAyMjEwMGUzYjkyOWZjZDkzZWExOGZlYWEwODI1ODg3YTcyMTA0ODk4NzlhNjY3ODBjMDdhODNmNGJkNDZlMmYwOWFiM2IiCiAgfQogXSwKICJzaWduZWQiOiB7CiAgIl90eXBlIjogInJvb3QiLAogICJjb25zaXN0ZW50X3NuYXBzaG90IjogdHJ1ZSwKICAiZXhwaXJlcyI6ICIyMDI1LTAyLTE5VDA4OjA0OjMyWiIsCiAgImtleXMiOiB7CiAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFekJ6Vk9tSENQb2pNVkxTSTM2NFdpaVY4TlByRFxuNklnUnhWbGlza3ovdit5M0pFUjVtY1ZHY09ObGlEY1dNQzVKMmxmSG1qUE5QaGI0SDd4bThMemZTQT09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBzYW50aWFnb3RvcnJlcyIKICAgfSwKICAgIjYxNjQzODM4MTI1YjQ0MGI0MGRiNjk0MmY1Y2I1YTMxYzBkYzA0MzY4MzE2ZWIyYWFhNThiOTU5MDRhNTgyMjIiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVpbmlrU3NBUW1Za05lSDVlWXEvQ25JekxhYWNPXG54bFNhYXdRRE93cUt5L3RDcXhxNXh4UFNKYzIxSzRXSWhzOUd5T2tLZnp1ZVkzR0lMemNNSlo0Y1d3PT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2kta2V5b3duZXIiOiAiQGJvYmNhbGxhd2F5IgogICB9LAogICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXk4WEtzbWhCWURJOEpjMEd3ekJ4ZUtheDBjbTVcblNUS0VVNjVIUEZ1blVuNDFzVDhwaTBGak00SWtIei9ZVW13bUxVTzBXdDdseGhqNkJrTElLNHFZQXc9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAZGxvcmVuYyIKICAgfSwKICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVXUmlHcjUraiszSjVTc0grWnRyNW5FMkgyd083XG5CVituTzNzOTNnTGNhMThxVE96SFkxb1d5QUdEeWtNU3NHVFVCU3Q5RCtBbjBLZktzRDJtZlNNNDJRPT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2ktb25saW5lLXVyaSI6ICJnY3BrbXM6Ly9wcm9qZWN0cy9zaWdzdG9yZS1yb290LXNpZ25pbmcvbG9jYXRpb25zL2dsb2JhbC9rZXlSaW5ncy9yb290L2NyeXB0b0tleXMvdGltZXN0YW1wIgogICB9LAogICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTBnaHJoOTJMdzFZcjNpZEdWNVdxQ3RNREI4Q3hcbitEOGhkQzR3MlpMTklwbFZSb1ZHTHNrWWEzZ2hlTXlPamlKOGtQaTE1YVEyLy83UCtvajdVdkpQR3c9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAam9zaHVhZ2wiCiAgIH0sCiAgICJlNzFhNTRkNTQzODM1YmE4NmFkYWQ5NDYwMzc5Yzc2NDFmYjg3MjZkMTY0ZWE3NjY4MDFhMWM1MjJhYmE3ZWEyIjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFRVhzejNTWlhGYjhqTVY0Mmo2cEpseWpialI4S1xuTjNCd29jZXhxNkxNSWI1cXNXS09RdkxOMTZOVWVmTGM0SHN3T291bVJzVlZhYWpTcFFTNmZvYmtSdz09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBtbm02NzgiCiAgIH0KICB9LAogICJyb2xlcyI6IHsKICAgInJvb3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI2ZjI2MDA4OWQ1OTIzZGFmMjAxNjZjYTY1N2M1NDNhZjYxODM0NmFiOTcxODg0YTk5OTYyYjAxOTg4YmJlMGMzIiwKICAgICAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICAgIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAgICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIKICAgIF0sCiAgICAidGhyZXNob2xkIjogMwogICB9LAogICAic25hcHNob3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI3MjQ3ZjBkYmFkODViMTQ3ZTE4NjNiYWRlNzYxMjQzY2M3ODVkY2I3YWE0MTBlNzEwNWRkM2QyYjYxYTM2ZDJjIgogICAgXSwKICAgICJ0aHJlc2hvbGQiOiAxLAogICAgIngtdHVmLW9uLWNpLWV4cGlyeS1wZXJpb2QiOiAzNjUwLAogICAgIngtdHVmLW9uLWNpLXNpZ25pbmctcGVyaW9kIjogMzY1CiAgIH0sCiAgICJ0YXJnZXRzIjogewogICAgImtleWlkcyI6IFsKICAgICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICAgImU3MWE1NGQ1NDM4MzViYTg2YWRhZDk0NjAzNzljNzY0MWZiODcyNmQxNjRlYTc2NjgwMWExYzUyMmFiYTdlYTIiLAogICAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IiwKICAgICAiNjE2NDM4MzgxMjViNDQwYjQwZGI2OTQyZjVjYjVhMzFjMGRjMDQzNjgzMTZlYjJhYWE1OGI5NTkwNGE1ODIyMiIsCiAgICAgImE2ODdlNWJmNGZhYjgyYjBlZTU4ZDQ2ZTA1Yzk1MzUxNDVhMmM5YWZiNDU4ZjQzZDQyYjQ1Y2EwZmRjZTJhNzAiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDMKICAgfSwKICAgInRpbWVzdGFtcCI6IHsKICAgICJrZXlpZHMiOiBbCiAgICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDEsCiAgICAieC10dWYtb24tY2ktZXhwaXJ5LXBlcmlvZCI6IDcsCiAgICAieC10dWYtb24tY2ktc2lnbmluZy1wZXJpb2QiOiA0CiAgIH0KICB9LAogICJzcGVjX3ZlcnNpb24iOiAiMS4wIiwKICAidmVyc2lvbiI6IDEwLAogICJ4LXR1Zi1vbi1jaS1leHBpcnktcGVyaW9kIjogMTgyLAogICJ4LXR1Zi1vbi1jaS1zaWduaW5nLXBlcmlvZCI6IDMxCiB9Cn0=\",targets:{\"trusted_root.json\":\"ewogICJtZWRpYVR5cGUiOiAiYXBwbGljYXRpb24vdm5kLmRldi5zaWdzdG9yZS50cnVzdGVkcm9vdCtqc29uO3ZlcnNpb249MC4xIiwKICAidGxvZ3MiOiBbCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vcmVrb3Iuc2lnc3RvcmUuZGV2IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUyRzJZKzJ0YWJkVFY1QmNHaUJJeDBhOWZBRndya0JibUxTR3RrczRMM3FYNnlZWTB6dWZCbmhDOFVyL2l5NTVHaFdQLzlBL2JZMkxoQzMwTTkrUll0dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDEtMTJUMTE6NTM6MjcuMDAwWiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAid05JOWF0UUdseitWV2ZPNkxSeWdINFFVZlkvOFc0UkZ3aVQ1aTVXUmdCMD0iCiAgICAgIH0KICAgIH0KICBdLAogICJjZXJ0aWZpY2F0ZUF1dGhvcml0aWVzIjogWwogICAgewogICAgICAic3ViamVjdCI6IHsKICAgICAgICAib3JnYW5pemF0aW9uIjogInNpZ3N0b3JlLmRldiIsCiAgICAgICAgImNvbW1vbk5hbWUiOiAic2lnc3RvcmUiCiAgICAgIH0sCiAgICAgICJ1cmkiOiAiaHR0cHM6Ly9mdWxjaW8uc2lnc3RvcmUuZGV2IiwKICAgICAgImNlcnRDaGFpbiI6IHsKICAgICAgICAiY2VydGlmaWNhdGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQitEQ0NBWDZnQXdJQkFnSVROVmtEWm9DaW9mUERzeTdkZm02Z2VMYnVoekFLQmdncWhrak9QUVFEQXpBcU1SVXdFd1lEVlFRS0V3eHphV2R6ZEc5eVpTNWtaWFl4RVRBUEJnTlZCQU1UQ0hOcFozTjBiM0psTUI0WERUSXhNRE13TnpBek1qQXlPVm9YRFRNeE1ESXlNekF6TWpBeU9Wb3dLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQjJNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWlBMklBQkxTeUE3SWk1aytwTk84WkVXWTB5bGVtV0Rvd09rTmEza0wrR1pFNVo1R1dlaEw5L0E5YlJOQTNSYnJzWjVpMEpjYXN0YVJMN1NwNWZwL2pENWR4cWMvVWRUVm5sdlMxNmFuKzJZZnN3ZS9RdUxvbFJVQ3JjT0UyKzJpQTUrdHpkNk5tTUdRd0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFFd0hRWURWUjBPQkJZRUZNakZIUUJCbWlRcE1sRWs2dzJ1U3UxS0J0UHNNQjhHQTFVZEl3UVlNQmFBRk1qRkhRQkJtaVFwTWxFazZ3MnVTdTFLQnRQc01Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01IOGxpV0pmTXVpNnZYWEJoakRnWTRNd3NsbU4vVEp4VmUvODNXckZvbXdtTmYwNTZ5MVg0OEY5YzRtM2Ezb3pYQUl4QUtqUmF5NS9hai9qc0tLR0lrbVFhdGpJOHV1cEhyLytDeEZ2YUpXbXBZcU5rTERHUlUrOW9yemg1aEkyUnJjdWFRPT0iCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMDdUMDM6MjA6MjkuMDAwWiIsCiAgICAgICAgImVuZCI6ICIyMDIyLTEyLTMxVDIzOjU5OjU5Ljk5OVoiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAic2lnc3RvcmUuZGV2IiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJzaWdzdG9yZSIKICAgICAgfSwKICAgICAgInVyaSI6ICJodHRwczovL2Z1bGNpby5zaWdzdG9yZS5kZXYiLAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlDR2pDQ0FhR2dBd0lCQWdJVUFMblZpVmZuVTBickphc21Sa0hybi9VbmZhUXdDZ1lJS29aSXpqMEVBd013S2pFVk1CTUdBMVVFQ2hNTWMybG5jM1J2Y21VdVpHVjJNUkV3RHdZRFZRUURFd2h6YVdkemRHOXlaVEFlRncweU1qQTBNVE15TURBMk1UVmFGdzB6TVRFd01EVXhNelUyTlRoYU1EY3hGVEFUQmdOVkJBb1RESE5wWjNOMGIzSmxMbVJsZGpFZU1Cd0dBMVVFQXhNVmMybG5jM1J2Y21VdGFXNTBaWEp0WldScFlYUmxNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRThSVlMveXNIK05PdnVEWnlQSVp0aWxnVUY5TmxhcllwQWQ5SFAxdkJCSDFVNUNWNzdMU1M3czBaaUg0bkU3SHY3cHRTNkx2dlIvU1RrNzk4TFZnTXpMbEo0SGVJZkYzdEhTYWV4TGNZcFNBU3Ixa1MwTi9SZ0JKei85aldDaVhubzNzd2VUQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0V3WURWUjBsQkF3d0NnWUlLd1lCQlFVSEF3TXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMzlQcHoxWWtFWmI1cU5qcEtGV2l4aTRZWkQ4d0h3WURWUjBqQkJnd0ZvQVVXTUFlWDVGRnBXYXBlc3lRb1pNaTBDckZ4Zm93Q2dZSUtvWkl6ajBFQXdNRFp3QXdaQUl3UENzUUs0RFlpWllEUElhRGk1SEZLbmZ4WHg2QVNTVm1FUmZzeW5ZQmlYMlg2U0pSblpVODQvOURaZG5GdnZ4bUFqQk90NlFwQmxjNEovMER4dmtUQ3FwY2x2emlMNkJDQ1BuamRsSUIzUHUzQnhzUG15Z1VZN0lpMnpiZENkbGlpb3c9IgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUI5ekNDQVh5Z0F3SUJBZ0lVQUxaTkFQRmR4SFB3amVEbG9Ed3lZQ2hBTy80d0NnWUlLb1pJemowRUF3TXdLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQWVGdzB5TVRFd01EY3hNelUyTlRsYUZ3MHpNVEV3TURVeE16VTJOVGhhTUNveEZUQVRCZ05WQkFvVERITnBaM04wYjNKbExtUmxkakVSTUE4R0ExVUVBeE1JYzJsbmMzUnZjbVV3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBVDdYZUZUNHJiM1BRR3dTNElhanRMazMvT2xucGdhbmdhQmNsWXBzWUJyNWkrNHluQjA3Y2ViM0xQME9JT1pkeGV4WDY5YzVpVnV5SlJRK0h6MDV5aStVRjN1QldBbEhwaVM1c2gwK0gyR0hFN1NYcmsxRUM1bTFUcjE5TDlnZzkyall6QmhNQTRHQTFVZER3RUIvd1FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUll3QjVma1VXbFpxbDZ6SkNoa3lMUUtzWEYrakFmQmdOVkhTTUVHREFXZ0JSWXdCNWZrVVdsWnFsNnpKQ2hreUxRS3NYRitqQUtCZ2dxaGtqT1BRUURBd05wQURCbUFqRUFqMW5IZVhacCsxM05XQk5hK0VEc0RQOEcxV1dnMXRDTVdQL1dIUHFwYVZvMGpoc3dlTkZaZ1NzMGVFN3dZSTRxQWpFQTJXQjlvdDk4c0lrb0YzdlpZZGQzL1Z0V0I1YjlUTk1lYTdJeC9zdEo1VGZjTExlQUJMRTRCTkpPc1E0dm5CSEoiCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjItMDQtMTNUMjA6MDY6MTUuMDAwWiIKICAgICAgfQogICAgfQogIF0sCiAgImN0bG9ncyI6IFsKICAgIHsKICAgICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9jdGZlLnNpZ3N0b3JlLmRldi90ZXN0IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUViZndSK1JKdWRYc2NnUkJScEtYMVhGRHkzUHl1ZER4ei9TZm5SaTFmVDhla3BmQmQyTzF1b3o3anIzWjhuS3p4QTY5RVVRK2VGQ0ZJM3pldWJQV1U3dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMTRUMDA6MDA6MDAuMDAwWiIsCiAgICAgICAgICAiZW5kIjogIjIwMjItMTAtMzFUMjM6NTk6NTkuOTk5WiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAiQ0dDUzhDaFMvMmhGMGRGcko0U2NSV2NZckJZOXd6alNiZWE4SWdZMmIzST0iCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vY3RmZS5zaWdzdG9yZS5kZXYvMjAyMiIsCiAgICAgICJoYXNoQWxnb3JpdGhtIjogIlNIQTJfMjU2IiwKICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAicmF3Qnl0ZXMiOiAiTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFaVBTbEZpMENtRlRmRWpDVXFGOUh1Q0VjWVhOS0FhWWFsSUptQlo4eXllelBqVHFoeHJLQnBNbmFvY1Z0TEpCSTFlTTN1WG5RelFHQUpkSjRnczlGeXc9PSIsCiAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICJzdGFydCI6ICIyMDIyLTEwLTIwVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgfQogICAgICB9LAogICAgICAibG9nSWQiOiB7CiAgICAgICAgImtleUlkIjogIjNUMHdhc2JIRVRKakdSNGNtV2MzQXFKS1hyamVQSzMvaDRweWdDOHA3bzQ9IgogICAgICB9CiAgICB9CiAgXSwKICAidGltZXN0YW1wQXV0aG9yaXRpZXMiOiBbCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAiR2l0SHViLCBJbmMuIiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJJbnRlcm5hbCBTZXJ2aWNlcyBSb290IgogICAgICB9LAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlCM0RDQ0FXS2dBd0lCQWdJVWNoa05zSDM2WGEwNGIxTHFJYytxcjlEVmVjTXdDZ1lJS29aSXpqMEVBd013TWpFVk1CTUdBMVVFQ2hNTVIybDBTSFZpTENCSmJtTXVNUmt3RndZRFZRUURFeEJVVTBFZ2FXNTBaWEp0WldScFlYUmxNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVEkwTURReE16QXdNREF3TUZvd01qRVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVJrd0Z3WURWUVFERXhCVVUwRWdWR2x0WlhOMFlXMXdhVzVuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVUQ1Wk5iU3FZTWQ2cjhxcE9PRVg5aWJHblpUOUdzdVhPaHIvZjhVOUZKdWdCR0V4S1lwNDBPVUxTMGVyalpXN3hWOXhWNTJObkpmNU9lRHE0ZTVaS3FOV01GUXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CTUdBMVVkSlFRTU1Bb0dDQ3NHQVFVRkJ3TUlNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVhVzFSdWRPZ1Z0MGxlcVkwV0tZYnVQcjQ3d0F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl3YlVIOUh2RDRlakNaSk9XUW5xQWxrcVVSbGx2dTlNOCtWcUxiaVJLK3pTZlpDWndzaWxqUm44TVFRUlNrWEVFNUFqRUFnK1Z4cXRvamZWZnU4RGh6emhDeDlHS0VUYkpIYjE5aVY3Mm1NS1ViREFGbXpaNmJROGI1NFpiOHRpZHk1YVdlIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUNFRENDQVpXZ0F3SUJBZ0lVWDhaTzVRWFA3dk40ZE1RNWU5c1UzbnViOE9nd0NnWUlLb1pJemowRUF3TXdPREVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1SOHdIUVlEVlFRREV4WkpiblJsY201aGJDQlRaWEoyYVdObGN5QlNiMjkwTUI0WERUSXpNRFF4TkRBd01EQXdNRm9YRFRJNE1EUXhNakF3TURBd01Gb3dNakVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1Sa3dGd1lEVlFRREV4QlVVMEVnYVc1MFpYSnRaV1JwWVhSbE1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFdk1MWS9kVFZidklKWUFOQXVzekV3Sm5RRTFsbGZ0eW55TUtJTWhoNDhIbXFiVnI1eWd5YnpzTFJMVktiQldPZFoyMWFlSnorZ1ppeXRaZXRxY3lGOVdsRVI1TkVNZjZKVjdaTm9qUXB4SHE0UkhHb0dTY2VRdi9xdlRpWnhFREtvMll3WkRBT0JnTlZIUThCQWY4RUJBTUNBUVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZEJnTlZIUTRFRmdRVWFXMVJ1ZE9nVnQwbGVxWTBXS1lidVByNDd3QXdId1lEVlIwakJCZ3dGb0FVOU5ZWWxvYm5BRzRjMC9xanh5SC9scS93eitRd0NnWUlLb1pJemowRUF3TURhUUF3WmdJeEFLMUIxODV5Z0NySVlGbElzM0dqc3dqbndTTUc2TFk4d29MVmRha0tEWnhWYThmOGNxTXMxRGhjeEowKzA5dzk1UUl4QU8rdEJ6Wms3dmpVSjlpSmdENFI2WldUeFFXS3FObTc0ak85OW8rbzlzdjRGSS9TWlRaVEZ5TW4wSUpFSGRObXlBPT0iCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQjlEQ0NBWHFnQXdJQkFnSVVhL0pBa2RVaks0SlV3c3F0YWlSSkdXaHFMU293Q2dZSUtvWkl6ajBFQXdNd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVE16TURReE1UQXdNREF3TUZvd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRWY5akZBWHh6NGt4NjhBSFJNT2tGQmhmbERjTVR2emFYejR4L0ZDY1hqSi8xcUVLb24vcVBJR25hVVJza0R0eU5iTkRPcGVKVERERnF0NDhpTVBybnpweDZJWndxZW1mVUpONHhCRVpmemErcFl0L2l5b2QrOXRacjIwUlJXU3YvbzBVd1F6QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFqQWRCZ05WSFE0RUZnUVU5TllZbG9ibkFHNGMwL3FqeHlIL2xxL3d6K1F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl4QUxaTFo4QmdSWHpLeExNTU45VklsTytlNGhyQm5OQmdGN3R6N0hucm93djJOZXRaRXJJQUNLRnltQmx2V0R2dE1BSXdaTytraTZzc1ExYnNabzk4TzhtRUFmMk5aN2lpQ2dERFUwVndqZWNvNnp5ZWgwekJUczkvN2dWNkFITlE1M3hEIgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgInZhbGlkRm9yIjogewogICAgICAgICJzdGFydCI6ICIyMDIzLTA0LTE0VDAwOjAwOjAwLjAwMFoiCiAgICAgIH0KICAgIH0KICBdCn0K\",\"registry.npmjs.org%2Fkeys.json\":\"ewogICAgImtleXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OmpsM2J3c3d1ODBQampva0NnaDBvMnc1YzJVNExoUUFFNTdnajljejFrekEiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTFPbGIzek1BRkZ4WEtIaUlrUU81Y0ozWWhsNWk2VVBwK0lodXRlQkpidUhjQTVVb2dLbzBFV3RsV3dXNktTYUtvVE5FWUw3SmxDUWlWbmtoQmt0VWdnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIxOTk5LTAxLTAxVDAwOjAwOjAwLjAwMFoiLAogICAgICAgICAgICAgICAgICAgICJlbmQiOiAiMjAyNS0wMS0yOVQwMDowMDowMC4wMDBaIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJrZXlJZCI6ICJTSEEyNTY6amwzYndzd3U4MFBqam9rQ2doMG8ydzVjMlU0TGhRQUU1N2dqOWN6MWt6QSIsCiAgICAgICAgICAgICJrZXlVc2FnZSI6ICJucG06YXR0ZXN0YXRpb25zIiwKICAgICAgICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUxT2xiM3pNQUZGeFhLSGlJa1FPNWNKM1lobDVpNlVQcCtJaHV0ZUJKYnVIY0E1VW9nS28wRVd0bFd3VzZLU2FLb1RORVlMN0psQ1FpVm5raEJrdFVnZz09IiwKICAgICAgICAgICAgICAgICJrZXlEZXRhaWxzIjogIlBLSVhfRUNEU0FfUDI1Nl9TSEFfMjU2IiwKICAgICAgICAgICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICAgICAgICAgICAic3RhcnQiOiAiMjAyMi0xMi0wMVQwMDowMDowMC4wMDBaIiwKICAgICAgICAgICAgICAgICAgICAiZW5kIjogIjIwMjUtMDEtMjlUMDA6MDA6MDAuMDAwWiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OkRoUTh3UjVBUEJ2RkhMRi8rVGMrQVl2UE9kVHBjSURxT2h4c0JIUndDN1UiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgImtleUlkIjogIlNIQTI1NjpEaFE4d1I1QVBCdkZITEYvK1RjK0FZdlBPZFRwY0lEcU9oeHNCSFJ3QzdVIiwKICAgICAgICAgICAgImtleVVzYWdlIjogIm5wbTphdHRlc3RhdGlvbnMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICBdCn0K\"}}}});var GDe=G(u1=>{\"use strict\";var jDe=u1&&u1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(u1,\"__esModule\",{value:!0});u1.TUFClient=void 0;var kg=jDe(Ie(\"fs\")),qb=jDe(Ie(\"path\")),ABt=UDe(),pBt=XO(),hBt=_De(),dK=\"targets\",gK=class{constructor(t){let r=new URL(t.mirrorURL),s=encodeURIComponent(r.host+r.pathname.replace(/\\/$/,\"\")),a=qb.default.join(t.cachePath,s);gBt(a),dBt({cachePath:a,mirrorURL:t.mirrorURL,tufRootPath:t.rootPath,forceInit:t.forceInit}),this.updater=mBt({mirrorURL:t.mirrorURL,cachePath:a,forceCache:t.forceCache,retry:t.retry,timeout:t.timeout})}async refresh(){return this.updater.refresh()}getTarget(t){return(0,hBt.readTarget)(this.updater,t)}};u1.TUFClient=gK;function gBt(e){let t=qb.default.join(e,dK);kg.default.existsSync(e)||kg.default.mkdirSync(e,{recursive:!0}),kg.default.existsSync(t)||kg.default.mkdirSync(t)}function dBt({cachePath:e,mirrorURL:t,tufRootPath:r,forceInit:s}){let a=qb.default.join(e,\"root.json\");if(!kg.default.existsSync(a)||s)if(r)kg.default.copyFileSync(r,a);else{let c=HDe()[t];if(!c)throw new pBt.TUFError({code:\"TUF_INIT_CACHE_ERROR\",message:`No root.json found for mirror: ${t}`});kg.default.writeFileSync(a,Buffer.from(c[\"root.json\"],\"base64\")),Object.entries(c.targets).forEach(([f,p])=>{kg.default.writeFileSync(qb.default.join(e,dK,f),Buffer.from(p,\"base64\"))})}}function mBt(e){let t={fetchTimeout:e.timeout,fetchRetry:e.retry};return new ABt.Updater({metadataBaseUrl:e.mirrorURL,targetBaseUrl:`${e.mirrorURL}/targets`,metadataDir:e.cachePath,targetDir:qb.default.join(e.cachePath,dK),forceCache:e.forceCache,config:t})}});var XO=G(ph=>{\"use strict\";Object.defineProperty(ph,\"__esModule\",{value:!0});ph.TUFError=ph.DEFAULT_MIRROR_URL=void 0;ph.getTrustedRoot=SBt;ph.initTUF=DBt;var yBt=yb(),EBt=wSe(),IBt=GDe();ph.DEFAULT_MIRROR_URL=\"https://tuf-repo-cdn.sigstore.dev\";var CBt=\"sigstore-js\",wBt={retries:2},BBt=5e3,vBt=\"trusted_root.json\";async function SBt(e={}){let r=await qDe(e).getTarget(vBt);return yBt.TrustedRoot.fromJSON(JSON.parse(r))}async function DBt(e={}){let t=qDe(e);return t.refresh().then(()=>t)}function qDe(e){return new IBt.TUFClient({cachePath:e.cachePath||(0,EBt.appDataPath)(CBt),rootPath:e.rootPath,mirrorURL:e.mirrorURL||ph.DEFAULT_MIRROR_URL,retry:e.retry??wBt,timeout:e.timeout??BBt,forceCache:e.forceCache??!1,forceInit:e.forceInit??e.force??!1})}var bBt=hK();Object.defineProperty(ph,\"TUFError\",{enumerable:!0,get:function(){return bBt.TUFError}})});var WDe=G($O=>{\"use strict\";Object.defineProperty($O,\"__esModule\",{value:!0});$O.DSSESignatureContent=void 0;var Wb=bl(),mK=class{constructor(t){this.env=t}compareDigest(t){return Wb.crypto.bufferEqual(t,Wb.crypto.digest(\"sha256\",this.env.payload))}compareSignature(t){return Wb.crypto.bufferEqual(t,this.signature)}verifySignature(t){return Wb.crypto.verify(this.preAuthEncoding,t,this.signature)}get signature(){return this.env.signatures.length>0?this.env.signatures[0].sig:Buffer.from(\"\")}get preAuthEncoding(){return Wb.dsse.preAuthEncoding(this.env.payloadType,this.env.payload)}};$O.DSSESignatureContent=mK});var VDe=G(eL=>{\"use strict\";Object.defineProperty(eL,\"__esModule\",{value:!0});eL.MessageSignatureContent=void 0;var yK=bl(),EK=class{constructor(t,r){this.signature=t.signature,this.messageDigest=t.messageDigest.digest,this.artifact=r}compareSignature(t){return yK.crypto.bufferEqual(t,this.signature)}compareDigest(t){return yK.crypto.bufferEqual(t,this.messageDigest)}verifySignature(t){return yK.crypto.verify(this.artifact,t,this.signature)}};eL.MessageSignatureContent=EK});var KDe=G(tL=>{\"use strict\";Object.defineProperty(tL,\"__esModule\",{value:!0});tL.toSignedEntity=kBt;tL.signatureContent=YDe;var IK=bl(),PBt=WDe(),xBt=VDe();function kBt(e,t){let{tlogEntries:r,timestampVerificationData:s}=e.verificationMaterial,a=[];for(let n of r)a.push({$case:\"transparency-log\",tlogEntry:n});for(let n of s?.rfc3161Timestamps??[])a.push({$case:\"timestamp-authority\",timestamp:IK.RFC3161Timestamp.parse(n.signedTimestamp)});return{signature:YDe(e,t),key:QBt(e),tlogEntries:r,timestamps:a}}function YDe(e,t){switch(e.content.$case){case\"dsseEnvelope\":return new PBt.DSSESignatureContent(e.content.dsseEnvelope);case\"messageSignature\":return new xBt.MessageSignatureContent(e.content.messageSignature,t)}}function QBt(e){switch(e.verificationMaterial.content.$case){case\"publicKey\":return{$case:\"public-key\",hint:e.verificationMaterial.content.publicKey.hint};case\"x509CertificateChain\":return{$case:\"certificate\",certificate:IK.X509Certificate.parse(e.verificationMaterial.content.x509CertificateChain.certificates[0].rawBytes)};case\"certificate\":return{$case:\"certificate\",certificate:IK.X509Certificate.parse(e.verificationMaterial.content.certificate.rawBytes)}}}});var vo=G(f1=>{\"use strict\";Object.defineProperty(f1,\"__esModule\",{value:!0});f1.PolicyError=f1.VerificationError=void 0;var rL=class extends Error{constructor({code:t,message:r,cause:s}){super(r),this.code=t,this.cause=s,this.name=this.constructor.name}},CK=class extends rL{};f1.VerificationError=CK;var wK=class extends rL{};f1.PolicyError=wK});var JDe=G(nL=>{\"use strict\";Object.defineProperty(nL,\"__esModule\",{value:!0});nL.filterCertAuthorities=RBt;nL.filterTLogAuthorities=TBt;function RBt(e,t){return e.filter(r=>r.validFor.start<=t.start&&r.validFor.end>=t.end)}function TBt(e,t){return e.filter(r=>t.logID&&!r.logID.equals(t.logID)?!1:r.validFor.start<=t.targetDate&&t.targetDate<=r.validFor.end)}});var dy=G(gy=>{\"use strict\";Object.defineProperty(gy,\"__esModule\",{value:!0});gy.filterTLogAuthorities=gy.filterCertAuthorities=void 0;gy.toTrustMaterial=NBt;var BK=bl(),Vb=yb(),FBt=vo(),vK=new Date(0),SK=new Date(864e13),XDe=JDe();Object.defineProperty(gy,\"filterCertAuthorities\",{enumerable:!0,get:function(){return XDe.filterCertAuthorities}});Object.defineProperty(gy,\"filterTLogAuthorities\",{enumerable:!0,get:function(){return XDe.filterTLogAuthorities}});function NBt(e,t){let r=typeof t==\"function\"?t:OBt(t);return{certificateAuthorities:e.certificateAuthorities.map(ZDe),timestampAuthorities:e.timestampAuthorities.map(ZDe),tlogs:e.tlogs.map(zDe),ctlogs:e.ctlogs.map(zDe),publicKey:r}}function zDe(e){let t=e.publicKey.keyDetails,r=t===Vb.PublicKeyDetails.PKCS1_RSA_PKCS1V5||t===Vb.PublicKeyDetails.PKIX_RSA_PKCS1V5||t===Vb.PublicKeyDetails.PKIX_RSA_PKCS1V15_2048_SHA256||t===Vb.PublicKeyDetails.PKIX_RSA_PKCS1V15_3072_SHA256||t===Vb.PublicKeyDetails.PKIX_RSA_PKCS1V15_4096_SHA256?\"pkcs1\":\"spki\";return{logID:e.logId.keyId,publicKey:BK.crypto.createPublicKey(e.publicKey.rawBytes,r),validFor:{start:e.publicKey.validFor?.start||vK,end:e.publicKey.validFor?.end||SK}}}function ZDe(e){return{certChain:e.certChain.certificates.map(t=>BK.X509Certificate.parse(t.rawBytes)),validFor:{start:e.validFor?.start||vK,end:e.validFor?.end||SK}}}function OBt(e){return t=>{let r=(e||{})[t];if(!r)throw new FBt.VerificationError({code:\"PUBLIC_KEY_ERROR\",message:`key not found: ${t}`});return{publicKey:BK.crypto.createPublicKey(r.rawBytes),validFor:s=>(r.validFor?.start||vK)<=s&&(r.validFor?.end||SK)>=s}}}});var DK=G(Yb=>{\"use strict\";Object.defineProperty(Yb,\"__esModule\",{value:!0});Yb.CertificateChainVerifier=void 0;Yb.verifyCertificateChain=MBt;var my=vo(),LBt=dy();function MBt(e,t){let r=(0,LBt.filterCertAuthorities)(t,{start:e.notBefore,end:e.notAfter}),s;for(let a of r)try{return new iL({trustedCerts:a.certChain,untrustedCert:e}).verify()}catch(n){s=n}throw new my.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"Failed to verify certificate chain\",cause:s})}var iL=class{constructor(t){this.untrustedCert=t.untrustedCert,this.trustedCerts=t.trustedCerts,this.localCerts=UBt([...t.trustedCerts,t.untrustedCert])}verify(){let t=this.sort();return this.checkPath(t),t}sort(){let t=this.untrustedCert,r=this.buildPaths(t);if(r=r.filter(a=>a.some(n=>this.trustedCerts.includes(n))),r.length===0)throw new my.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"no trusted certificate path found\"});let s=r.reduce((a,n)=>a.length<n.length?a:n);return[t,...s].slice(0,-1)}buildPaths(t){let r=[],s=this.findIssuer(t);if(s.length===0)throw new my.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"no valid certificate path found\"});for(let a=0;a<s.length;a++){let n=s[a];if(n.equals(t)){r.push([t]);continue}let c=this.buildPaths(n);for(let f=0;f<c.length;f++)r.push([n,...c[f]])}return r}findIssuer(t){let r=[],s;return t.subject.equals(t.issuer)&&t.verify()?[t]:(t.extAuthorityKeyID&&(s=t.extAuthorityKeyID.keyIdentifier),this.localCerts.forEach(a=>{if(s&&a.extSubjectKeyID){a.extSubjectKeyID.keyIdentifier.equals(s)&&r.push(a);return}a.subject.equals(t.issuer)&&r.push(a)}),r=r.filter(a=>{try{return t.verify(a)}catch{return!1}}),r)}checkPath(t){if(t.length<1)throw new my.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"certificate chain must contain at least one certificate\"});if(!t.slice(1).every(s=>s.isCA))throw new my.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"intermediate certificate is not a CA\"});for(let s=t.length-2;s>=0;s--)if(!t[s].issuer.equals(t[s+1].subject))throw new my.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"incorrect certificate name chaining\"});for(let s=0;s<t.length;s++){let a=t[s];if(a.extBasicConstraints?.isCA){let n=a.extBasicConstraints.pathLenConstraint;if(n!==void 0&&n<s-1)throw new my.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"path length constraint exceeded\"})}}}};Yb.CertificateChainVerifier=iL;function UBt(e){for(let t=0;t<e.length;t++)for(let r=t+1;r<e.length;r++)e[t].equals(e[r])&&(e.splice(r,1),r--);return e}});var $De=G(bK=>{\"use strict\";Object.defineProperty(bK,\"__esModule\",{value:!0});bK.verifySCTs=jBt;var sL=bl(),_Bt=vo(),HBt=dy();function jBt(e,t,r){let s,a=e.clone();for(let p=0;p<a.extensions.length;p++){let h=a.extensions[p];if(h.subs[0].toOID()===sL.EXTENSION_OID_SCT){s=new sL.X509SCTExtension(h),a.extensions.splice(p,1);break}}if(!s)return[];if(s.signedCertificateTimestamps.length===0)return[];let n=new sL.ByteStream,c=sL.crypto.digest(\"sha256\",t.publicKey);n.appendView(c);let f=a.tbsCertificate.toDER();return n.appendUint24(f.length),n.appendView(f),s.signedCertificateTimestamps.map(p=>{if(!(0,HBt.filterTLogAuthorities)(r,{logID:p.logID,targetDate:p.datetime}).some(C=>p.verify(n.buffer,C.publicKey)))throw new _Bt.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"SCT verification failed\"});return p.logID})}});var tbe=G(oL=>{\"use strict\";Object.defineProperty(oL,\"__esModule\",{value:!0});oL.verifyPublicKey=KBt;oL.verifyCertificate=JBt;var GBt=bl(),ebe=vo(),qBt=DK(),WBt=$De(),VBt=\"1.3.6.1.4.1.57264.1.1\",YBt=\"1.3.6.1.4.1.57264.1.8\";function KBt(e,t,r){let s=r.publicKey(e);return t.forEach(a=>{if(!s.validFor(a))throw new ebe.VerificationError({code:\"PUBLIC_KEY_ERROR\",message:`Public key is not valid for timestamp: ${a.toISOString()}`})}),{key:s.publicKey}}function JBt(e,t,r){let s=(0,qBt.verifyCertificateChain)(e,r.certificateAuthorities);if(!t.every(n=>s.every(c=>c.validForDate(n))))throw new ebe.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"certificate is not valid or expired at the specified date\"});return{scts:(0,WBt.verifySCTs)(s[0],s[1],r.ctlogs),signer:zBt(s[0])}}function zBt(e){let t,r=e.extension(YBt);r?t=r.valueObj.subs?.[0]?.value.toString(\"ascii\"):t=e.extension(VBt)?.value.toString(\"ascii\");let s={extensions:{issuer:t},subjectAlternativeName:e.subjectAltName};return{key:GBt.crypto.createPublicKey(e.publicKey),identity:s}}});var nbe=G(aL=>{\"use strict\";Object.defineProperty(aL,\"__esModule\",{value:!0});aL.verifySubjectAlternativeName=ZBt;aL.verifyExtensions=XBt;var rbe=vo();function ZBt(e,t){if(t===void 0||!t.match(e))throw new rbe.PolicyError({code:\"UNTRUSTED_SIGNER_ERROR\",message:`certificate identity error - expected ${e}, got ${t}`})}function XBt(e,t={}){let r;for(r in e)if(t[r]!==e[r])throw new rbe.PolicyError({code:\"UNTRUSTED_SIGNER_ERROR\",message:`invalid certificate extension - expected ${r}=${e[r]}, got ${r}=${t[r]}`})}});var ibe=G(RK=>{\"use strict\";Object.defineProperty(RK,\"__esModule\",{value:!0});RK.verifyCheckpoint=t2t;var xK=bl(),A1=vo(),$Bt=dy(),PK=`\n\n`,e2t=/\\u2014 (\\S+) (\\S+)\\n/g;function t2t(e,t){let r=(0,$Bt.filterTLogAuthorities)(t,{targetDate:new Date(Number(e.integratedTime)*1e3)}),s=e.inclusionProof,a=kK.fromString(s.checkpoint.envelope),n=QK.fromString(a.note);if(!r2t(a,r))throw new A1.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"invalid checkpoint signature\"});if(!xK.crypto.bufferEqual(n.logHash,s.rootHash))throw new A1.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"root hash mismatch\"})}function r2t(e,t){let r=Buffer.from(e.note,\"utf-8\");return e.signatures.every(s=>{let a=t.find(n=>xK.crypto.bufferEqual(n.logID.subarray(0,4),s.keyHint));return a?xK.crypto.verify(r,a.publicKey,s.signature):!1})}var kK=class e{constructor(t,r){this.note=t,this.signatures=r}static fromString(t){if(!t.includes(PK))throw new A1.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"missing checkpoint separator\"});let r=t.indexOf(PK),s=t.slice(0,r+1),n=t.slice(r+PK.length).matchAll(e2t),c=Array.from(n,f=>{let[,p,h]=f,E=Buffer.from(h,\"base64\");if(E.length<5)throw new A1.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"malformed checkpoint signature\"});return{name:p,keyHint:E.subarray(0,4),signature:E.subarray(4)}});if(c.length===0)throw new A1.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"no signatures found in checkpoint\"});return new e(s,c)}},QK=class e{constructor(t,r,s,a){this.origin=t,this.logSize=r,this.logHash=s,this.rest=a}static fromString(t){let r=t.trimEnd().split(`\n`);if(r.length<3)throw new A1.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"too few lines in checkpoint header\"});let s=r[0],a=BigInt(r[1]),n=Buffer.from(r[2],\"base64\"),c=r.slice(3);return new e(s,a,n,c)}}});var sbe=G(OK=>{\"use strict\";Object.defineProperty(OK,\"__esModule\",{value:!0});OK.verifyMerkleInclusion=s2t;var NK=bl(),TK=vo(),n2t=Buffer.from([0]),i2t=Buffer.from([1]);function s2t(e){let t=e.inclusionProof,r=BigInt(t.logIndex),s=BigInt(t.treeSize);if(r<0n||r>=s)throw new TK.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:`invalid index: ${r}`});let{inner:a,border:n}=o2t(r,s);if(t.hashes.length!==a+n)throw new TK.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"invalid hash count\"});let c=t.hashes.slice(0,a),f=t.hashes.slice(a),p=A2t(e.canonicalizedBody),h=l2t(a2t(p,c,r),f);if(!NK.crypto.bufferEqual(h,t.rootHash))throw new TK.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"calculated root hash does not match inclusion proof\"})}function o2t(e,t){let r=c2t(e,t),s=u2t(e>>BigInt(r));return{inner:r,border:s}}function a2t(e,t,r){return t.reduce((s,a,n)=>r>>BigInt(n)&BigInt(1)?FK(a,s):FK(s,a),e)}function l2t(e,t){return t.reduce((r,s)=>FK(s,r),e)}function c2t(e,t){return f2t(e^t-BigInt(1))}function u2t(e){return e.toString(2).split(\"1\").length-1}function f2t(e){return e===0n?0:e.toString(2).length}function FK(e,t){return NK.crypto.digest(\"sha256\",i2t,e,t)}function A2t(e){return NK.crypto.digest(\"sha256\",n2t,e)}});var abe=G(LK=>{\"use strict\";Object.defineProperty(LK,\"__esModule\",{value:!0});LK.verifyTLogSET=g2t;var obe=bl(),p2t=vo(),h2t=dy();function g2t(e,t){if(!(0,h2t.filterTLogAuthorities)(t,{logID:e.logId.keyId,targetDate:new Date(Number(e.integratedTime)*1e3)}).some(a=>{let n=d2t(e),c=Buffer.from(obe.json.canonicalize(n),\"utf8\"),f=e.inclusionPromise.signedEntryTimestamp;return obe.crypto.verify(c,a.publicKey,f)}))throw new p2t.VerificationError({code:\"TLOG_INCLUSION_PROMISE_ERROR\",message:\"inclusion promise could not be verified\"})}function d2t(e){let{integratedTime:t,logIndex:r,logId:s,canonicalizedBody:a}=e;return{body:a.toString(\"base64\"),integratedTime:Number(t),logIndex:Number(r),logID:s.keyId.toString(\"hex\")}}});var lbe=G(_K=>{\"use strict\";Object.defineProperty(_K,\"__esModule\",{value:!0});_K.verifyRFC3161Timestamp=E2t;var MK=bl(),UK=vo(),m2t=DK(),y2t=dy();function E2t(e,t,r){let s=e.signingTime;if(r=(0,y2t.filterCertAuthorities)(r,{start:s,end:s}),r=C2t(r,{serialNumber:e.signerSerialNumber,issuer:e.signerIssuer}),!r.some(n=>{try{return I2t(e,t,n),!0}catch{return!1}}))throw new UK.VerificationError({code:\"TIMESTAMP_ERROR\",message:\"timestamp could not be verified\"})}function I2t(e,t,r){let[s,...a]=r.certChain,n=MK.crypto.createPublicKey(s.publicKey),c=e.signingTime;try{new m2t.CertificateChainVerifier({untrustedCert:s,trustedCerts:a}).verify()}catch{throw new UK.VerificationError({code:\"TIMESTAMP_ERROR\",message:\"invalid certificate chain\"})}if(!r.certChain.every(p=>p.validForDate(c)))throw new UK.VerificationError({code:\"TIMESTAMP_ERROR\",message:\"timestamp was signed with an expired certificate\"});e.verify(t,n)}function C2t(e,t){return e.filter(r=>r.certChain.length>0&&MK.crypto.bufferEqual(r.certChain[0].serialNumber,t.serialNumber)&&MK.crypto.bufferEqual(r.certChain[0].issuer,t.issuer))}});var cbe=G(lL=>{\"use strict\";Object.defineProperty(lL,\"__esModule\",{value:!0});lL.verifyTSATimestamp=b2t;lL.verifyTLogTimestamp=P2t;var w2t=vo(),B2t=ibe(),v2t=sbe(),S2t=abe(),D2t=lbe();function b2t(e,t,r){return(0,D2t.verifyRFC3161Timestamp)(e,t,r),{type:\"timestamp-authority\",logID:e.signerSerialNumber,timestamp:e.signingTime}}function P2t(e,t){let r=!1;if(x2t(e)&&((0,S2t.verifyTLogSET)(e,t),r=!0),k2t(e)&&((0,v2t.verifyMerkleInclusion)(e),(0,B2t.verifyCheckpoint)(e,t),r=!0),!r)throw new w2t.VerificationError({code:\"TLOG_MISSING_INCLUSION_ERROR\",message:\"inclusion could not be verified\"});return{type:\"transparency-log\",logID:e.logId.keyId,timestamp:new Date(Number(e.integratedTime)*1e3)}}function x2t(e){return e.inclusionPromise!==void 0}function k2t(e){return e.inclusionProof!==void 0}});var ube=G(HK=>{\"use strict\";Object.defineProperty(HK,\"__esModule\",{value:!0});HK.verifyDSSETLogBody=Q2t;var cL=vo();function Q2t(e,t){switch(e.apiVersion){case\"0.0.1\":return R2t(e,t);default:throw new cL.VerificationError({code:\"TLOG_BODY_ERROR\",message:`unsupported dsse version: ${e.apiVersion}`})}}function R2t(e,t){if(e.spec.signatures?.length!==1)throw new cL.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"signature count mismatch\"});let r=e.spec.signatures[0].signature;if(!t.compareSignature(Buffer.from(r,\"base64\")))throw new cL.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"tlog entry signature mismatch\"});let s=e.spec.payloadHash?.value||\"\";if(!t.compareDigest(Buffer.from(s,\"hex\")))throw new cL.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"DSSE payload hash mismatch\"})}});var fbe=G(GK=>{\"use strict\";Object.defineProperty(GK,\"__esModule\",{value:!0});GK.verifyHashedRekordTLogBody=T2t;var jK=vo();function T2t(e,t){switch(e.apiVersion){case\"0.0.1\":return F2t(e,t);default:throw new jK.VerificationError({code:\"TLOG_BODY_ERROR\",message:`unsupported hashedrekord version: ${e.apiVersion}`})}}function F2t(e,t){let r=e.spec.signature.content||\"\";if(!t.compareSignature(Buffer.from(r,\"base64\")))throw new jK.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"signature mismatch\"});let s=e.spec.data.hash?.value||\"\";if(!t.compareDigest(Buffer.from(s,\"hex\")))throw new jK.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"digest mismatch\"})}});var Abe=G(qK=>{\"use strict\";Object.defineProperty(qK,\"__esModule\",{value:!0});qK.verifyIntotoTLogBody=N2t;var uL=vo();function N2t(e,t){switch(e.apiVersion){case\"0.0.2\":return O2t(e,t);default:throw new uL.VerificationError({code:\"TLOG_BODY_ERROR\",message:`unsupported intoto version: ${e.apiVersion}`})}}function O2t(e,t){if(e.spec.content.envelope.signatures?.length!==1)throw new uL.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"signature count mismatch\"});let r=L2t(e.spec.content.envelope.signatures[0].sig);if(!t.compareSignature(Buffer.from(r,\"base64\")))throw new uL.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"tlog entry signature mismatch\"});let s=e.spec.content.payloadHash?.value||\"\";if(!t.compareDigest(Buffer.from(s,\"hex\")))throw new uL.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"DSSE payload hash mismatch\"})}function L2t(e){return Buffer.from(e,\"base64\").toString(\"utf-8\")}});var hbe=G(WK=>{\"use strict\";Object.defineProperty(WK,\"__esModule\",{value:!0});WK.verifyTLogBody=H2t;var pbe=vo(),M2t=ube(),U2t=fbe(),_2t=Abe();function H2t(e,t){let{kind:r,version:s}=e.kindVersion,a=JSON.parse(e.canonicalizedBody.toString(\"utf8\"));if(r!==a.kind||s!==a.apiVersion)throw new pbe.VerificationError({code:\"TLOG_BODY_ERROR\",message:`kind/version mismatch - expected: ${r}/${s}, received: ${a.kind}/${a.apiVersion}`});switch(a.kind){case\"dsse\":return(0,M2t.verifyDSSETLogBody)(a,t);case\"intoto\":return(0,_2t.verifyIntotoTLogBody)(a,t);case\"hashedrekord\":return(0,U2t.verifyHashedRekordTLogBody)(a,t);default:throw new pbe.VerificationError({code:\"TLOG_BODY_ERROR\",message:`unsupported kind: ${r}`})}}});var Ebe=G(fL=>{\"use strict\";Object.defineProperty(fL,\"__esModule\",{value:!0});fL.Verifier=void 0;var j2t=Ie(\"util\"),p1=vo(),gbe=tbe(),dbe=nbe(),mbe=cbe(),G2t=hbe(),VK=class{constructor(t,r={}){this.trustMaterial=t,this.options={ctlogThreshold:r.ctlogThreshold??1,tlogThreshold:r.tlogThreshold??1,tsaThreshold:r.tsaThreshold??0}}verify(t,r){let s=this.verifyTimestamps(t),a=this.verifySigningKey(t,s);return this.verifyTLogs(t),this.verifySignature(t,a),r&&this.verifyPolicy(r,a.identity||{}),a}verifyTimestamps(t){let r=0,s=0,a=t.timestamps.map(n=>{switch(n.$case){case\"timestamp-authority\":return s++,(0,mbe.verifyTSATimestamp)(n.timestamp,t.signature.signature,this.trustMaterial.timestampAuthorities);case\"transparency-log\":return r++,(0,mbe.verifyTLogTimestamp)(n.tlogEntry,this.trustMaterial.tlogs)}});if(ybe(a))throw new p1.VerificationError({code:\"TIMESTAMP_ERROR\",message:\"duplicate timestamp\"});if(r<this.options.tlogThreshold)throw new p1.VerificationError({code:\"TIMESTAMP_ERROR\",message:`expected ${this.options.tlogThreshold} tlog timestamps, got ${r}`});if(s<this.options.tsaThreshold)throw new p1.VerificationError({code:\"TIMESTAMP_ERROR\",message:`expected ${this.options.tsaThreshold} tsa timestamps, got ${s}`});return a.map(n=>n.timestamp)}verifySigningKey({key:t},r){switch(t.$case){case\"public-key\":return(0,gbe.verifyPublicKey)(t.hint,r,this.trustMaterial);case\"certificate\":{let s=(0,gbe.verifyCertificate)(t.certificate,r,this.trustMaterial);if(ybe(s.scts))throw new p1.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"duplicate SCT\"});if(s.scts.length<this.options.ctlogThreshold)throw new p1.VerificationError({code:\"CERTIFICATE_ERROR\",message:`expected ${this.options.ctlogThreshold} SCTs, got ${s.scts.length}`});return s.signer}}}verifyTLogs({signature:t,tlogEntries:r}){r.forEach(s=>(0,G2t.verifyTLogBody)(s,t))}verifySignature(t,r){if(!t.signature.verifySignature(r.key))throw new p1.VerificationError({code:\"SIGNATURE_ERROR\",message:\"signature verification failed\"})}verifyPolicy(t,r){t.subjectAlternativeName&&(0,dbe.verifySubjectAlternativeName)(t.subjectAlternativeName,r.subjectAlternativeName),t.extensions&&(0,dbe.verifyExtensions)(t.extensions,r.extensions)}};fL.Verifier=VK;function ybe(e){for(let t=0;t<e.length;t++)for(let r=t+1;r<e.length;r++)if((0,j2t.isDeepStrictEqual)(e[t],e[r]))return!0;return!1}});var AL=G(ru=>{\"use strict\";Object.defineProperty(ru,\"__esModule\",{value:!0});ru.Verifier=ru.toTrustMaterial=ru.VerificationError=ru.PolicyError=ru.toSignedEntity=void 0;var q2t=KDe();Object.defineProperty(ru,\"toSignedEntity\",{enumerable:!0,get:function(){return q2t.toSignedEntity}});var Ibe=vo();Object.defineProperty(ru,\"PolicyError\",{enumerable:!0,get:function(){return Ibe.PolicyError}});Object.defineProperty(ru,\"VerificationError\",{enumerable:!0,get:function(){return Ibe.VerificationError}});var W2t=dy();Object.defineProperty(ru,\"toTrustMaterial\",{enumerable:!0,get:function(){return W2t.toTrustMaterial}});var V2t=Ebe();Object.defineProperty(ru,\"Verifier\",{enumerable:!0,get:function(){return V2t.Verifier}})});var Cbe=G(Ha=>{\"use strict\";Object.defineProperty(Ha,\"__esModule\",{value:!0});Ha.DEFAULT_TIMEOUT=Ha.DEFAULT_RETRY=void 0;Ha.createBundleBuilder=J2t;Ha.createKeyFinder=z2t;Ha.createVerificationPolicy=Z2t;var Y2t=bl(),h1=i7(),K2t=AL();Ha.DEFAULT_RETRY={retries:2};Ha.DEFAULT_TIMEOUT=5e3;function J2t(e,t){let r={signer:X2t(t),witnesses:evt(t)};switch(e){case\"messageSignature\":return new h1.MessageSignatureBundleBuilder(r);case\"dsseEnvelope\":return new h1.DSSEBundleBuilder({...r,certificateChain:t.legacyCompatibility})}}function z2t(e){return t=>{let r=e(t);if(!r)throw new K2t.VerificationError({code:\"PUBLIC_KEY_ERROR\",message:`key not found: ${t}`});return{publicKey:Y2t.crypto.createPublicKey(r),validFor:()=>!0}}}function Z2t(e){let t={},r=e.certificateIdentityEmail||e.certificateIdentityURI;return r&&(t.subjectAlternativeName=r),e.certificateIssuer&&(t.extensions={issuer:e.certificateIssuer}),t}function X2t(e){return new h1.FulcioSigner({fulcioBaseURL:e.fulcioURL,identityProvider:e.identityProvider||$2t(e),retry:e.retry??Ha.DEFAULT_RETRY,timeout:e.timeout??Ha.DEFAULT_TIMEOUT})}function $2t(e){let t=e.identityToken;return t?{getToken:()=>Promise.resolve(t)}:new h1.CIContextProvider(\"sigstore\")}function evt(e){let t=[];return tvt(e)&&t.push(new h1.RekorWitness({rekorBaseURL:e.rekorURL,entryType:e.legacyCompatibility?\"intoto\":\"dsse\",fetchOnConflict:!1,retry:e.retry??Ha.DEFAULT_RETRY,timeout:e.timeout??Ha.DEFAULT_TIMEOUT})),rvt(e)&&t.push(new h1.TSAWitness({tsaBaseURL:e.tsaServerURL,retry:e.retry??Ha.DEFAULT_RETRY,timeout:e.timeout??Ha.DEFAULT_TIMEOUT})),t}function tvt(e){return e.tlogUpload!==!1}function rvt(e){return e.tsaServerURL!==void 0}});var vbe=G(nu=>{\"use strict\";var nvt=nu&&nu.__createBinding||(Object.create?function(e,t,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||(\"get\"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,a)}:function(e,t,r,s){s===void 0&&(s=r),e[s]=t[r]}),ivt=nu&&nu.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),wbe=nu&&nu.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(t!=null)for(var s=e(t),a=0;a<s.length;a++)s[a]!==\"default\"&&nvt(r,t,s[a]);return ivt(r,t),r}}();Object.defineProperty(nu,\"__esModule\",{value:!0});nu.sign=ovt;nu.attest=avt;nu.verify=lvt;nu.createVerifier=Bbe;var KK=Ib(),svt=wbe(XO()),YK=AL(),g1=wbe(Cbe());async function ovt(e,t={}){let s=await g1.createBundleBuilder(\"messageSignature\",t).create({data:e});return(0,KK.bundleToJSON)(s)}async function avt(e,t,r={}){let a=await g1.createBundleBuilder(\"dsseEnvelope\",r).create({data:e,type:t});return(0,KK.bundleToJSON)(a)}async function lvt(e,t,r){let s;return Buffer.isBuffer(t)?s=t:r=t,Bbe(r).then(a=>a.verify(e,s))}async function Bbe(e={}){let t=await svt.getTrustedRoot({mirrorURL:e.tufMirrorURL,rootPath:e.tufRootPath,cachePath:e.tufCachePath,forceCache:e.tufForceCache,retry:e.retry??g1.DEFAULT_RETRY,timeout:e.timeout??g1.DEFAULT_TIMEOUT}),r=e.keySelector?g1.createKeyFinder(e.keySelector):void 0,s=(0,YK.toTrustMaterial)(t,r),a={ctlogThreshold:e.ctLogThreshold,tlogThreshold:e.tlogThreshold},n=new YK.Verifier(s,a),c=g1.createVerificationPolicy(e);return{verify:(f,p)=>{let h=(0,KK.bundleFromJSON)(f),E=(0,YK.toSignedEntity)(h,p);n.verify(E,c)}}}});var Dbe=G(Ni=>{\"use strict\";Object.defineProperty(Ni,\"__esModule\",{value:!0});Ni.verify=Ni.sign=Ni.createVerifier=Ni.attest=Ni.VerificationError=Ni.PolicyError=Ni.TUFError=Ni.InternalError=Ni.DEFAULT_REKOR_URL=Ni.DEFAULT_FULCIO_URL=Ni.ValidationError=void 0;var cvt=Ib();Object.defineProperty(Ni,\"ValidationError\",{enumerable:!0,get:function(){return cvt.ValidationError}});var JK=i7();Object.defineProperty(Ni,\"DEFAULT_FULCIO_URL\",{enumerable:!0,get:function(){return JK.DEFAULT_FULCIO_URL}});Object.defineProperty(Ni,\"DEFAULT_REKOR_URL\",{enumerable:!0,get:function(){return JK.DEFAULT_REKOR_URL}});Object.defineProperty(Ni,\"InternalError\",{enumerable:!0,get:function(){return JK.InternalError}});var uvt=XO();Object.defineProperty(Ni,\"TUFError\",{enumerable:!0,get:function(){return uvt.TUFError}});var Sbe=AL();Object.defineProperty(Ni,\"PolicyError\",{enumerable:!0,get:function(){return Sbe.PolicyError}});Object.defineProperty(Ni,\"VerificationError\",{enumerable:!0,get:function(){return Sbe.VerificationError}});var pL=vbe();Object.defineProperty(Ni,\"attest\",{enumerable:!0,get:function(){return pL.attest}});Object.defineProperty(Ni,\"createVerifier\",{enumerable:!0,get:function(){return pL.createVerifier}});Object.defineProperty(Ni,\"sign\",{enumerable:!0,get:function(){return pL.sign}});Object.defineProperty(Ni,\"verify\",{enumerable:!0,get:function(){return pL.verify}})});Dt();qe();Dt();var rPe=Ie(\"child_process\"),nPe=et(Rd());Vt();var qI=new Map([]);var Gv={};Yt(Gv,{BaseCommand:()=>At,WorkspaceRequiredError:()=>ar,getCli:()=>h0e,getDynamicLibs:()=>p0e,getPluginConfiguration:()=>VI,openWorkspace:()=>WI,pluginCommands:()=>qI,runExit:()=>QT});Vt();var At=class extends at{constructor(){super(...arguments);this.cwd=he.String(\"--cwd\",{hidden:!0})}validateAndExecute(){if(typeof this.cwd<\"u\")throw new st(\"The --cwd option is ambiguous when used anywhere else than the very first parameter provided in the command line, before even the command path\");return super.validateAndExecute()}};qe();Dt();Vt();var ar=class extends st{constructor(t,r){let s=K.relative(t,r),a=K.join(t,Ut.fileName);super(`This command can only be run from within a workspace of your project (${s} isn't a workspace of ${a}).`)}};qe();Dt();rA();Bc();sv();Vt();var Qit=et(pi());ul();var p0e=()=>new Map([[\"@yarnpkg/cli\",Gv],[\"@yarnpkg/core\",jv],[\"@yarnpkg/fslib\",RB],[\"@yarnpkg/libzip\",nv],[\"@yarnpkg/parsers\",_B],[\"@yarnpkg/shell\",cv],[\"clipanion\",XB],[\"semver\",Qit],[\"typanion\",Yo]]);qe();async function WI(e,t){let{project:r,workspace:s}=await Rt.find(e,t);if(!s)throw new ar(r.cwd,t);return s}qe();Dt();rA();Bc();sv();Vt();var FSt=et(pi());ul();var Q5={};Yt(Q5,{AddCommand:()=>zI,BinCommand:()=>ZI,CacheCleanCommand:()=>XI,ClipanionCommand:()=>iC,ConfigCommand:()=>rC,ConfigGetCommand:()=>$I,ConfigSetCommand:()=>eC,ConfigUnsetCommand:()=>tC,DedupeCommand:()=>nC,EntryCommand:()=>oC,ExecCommand:()=>lC,ExplainCommand:()=>fC,ExplainPeerRequirementsCommand:()=>cC,HelpCommand:()=>sC,InfoCommand:()=>AC,LinkCommand:()=>hC,NodeCommand:()=>gC,PluginCheckCommand:()=>dC,PluginImportCommand:()=>EC,PluginImportSourcesCommand:()=>IC,PluginListCommand:()=>mC,PluginRemoveCommand:()=>CC,PluginRuntimeCommand:()=>wC,RebuildCommand:()=>BC,RemoveCommand:()=>vC,RunCommand:()=>DC,RunIndexCommand:()=>SC,SetResolutionCommand:()=>bC,SetVersionCommand:()=>uC,SetVersionSourcesCommand:()=>yC,UnlinkCommand:()=>PC,UpCommand:()=>xC,VersionCommand:()=>aC,WhyCommand:()=>kC,WorkspaceCommand:()=>NC,WorkspacesListCommand:()=>FC,YarnCommand:()=>pC,dedupeUtils:()=>_T,default:()=>Wot,suggestUtils:()=>$u});var Lde=et(Rd());qe();qe();qe();Vt();var tde=et(Yv());ul();var $u={};Yt($u,{Modifier:()=>l5,Strategy:()=>MT,Target:()=>Kv,WorkspaceModifier:()=>zge,applyModifier:()=>Zst,extractDescriptorFromPath:()=>c5,extractRangeModifier:()=>Zge,fetchDescriptorFrom:()=>u5,findProjectDescriptors:()=>ede,getModifier:()=>Jv,getSuggestedDescriptors:()=>zv,makeWorkspaceDescriptor:()=>$ge,toWorkspaceModifier:()=>Xge});qe();qe();Dt();var a5=et(pi()),Jst=\"workspace:\",Kv=(s=>(s.REGULAR=\"dependencies\",s.DEVELOPMENT=\"devDependencies\",s.PEER=\"peerDependencies\",s))(Kv||{}),l5=(s=>(s.CARET=\"^\",s.TILDE=\"~\",s.EXACT=\"\",s))(l5||{}),zge=(s=>(s.CARET=\"^\",s.TILDE=\"~\",s.EXACT=\"*\",s))(zge||{}),MT=(n=>(n.KEEP=\"keep\",n.REUSE=\"reuse\",n.PROJECT=\"project\",n.LATEST=\"latest\",n.CACHE=\"cache\",n))(MT||{});function Jv(e,t){return e.exact?\"\":e.caret?\"^\":e.tilde?\"~\":t.configuration.get(\"defaultSemverRangePrefix\")}var zst=/^([\\^~]?)[0-9]+(?:\\.[0-9]+){0,2}(?:-\\S+)?$/;function Zge(e,{project:t}){let r=e.match(zst);return r?r[1]:t.configuration.get(\"defaultSemverRangePrefix\")}function Zst(e,t){let{protocol:r,source:s,params:a,selector:n}=j.parseRange(e.range);return a5.default.valid(n)&&(n=`${t}${e.range}`),j.makeDescriptor(e,j.makeRange({protocol:r,source:s,params:a,selector:n}))}function Xge(e){switch(e){case\"^\":return\"^\";case\"~\":return\"~\";case\"\":return\"*\";default:throw new Error(`Assertion failed: Unknown modifier: \"${e}\"`)}}function $ge(e,t){return j.makeDescriptor(e.anchoredDescriptor,`${Jst}${Xge(t)}`)}async function ede(e,{project:t,target:r}){let s=new Map,a=n=>{let c=s.get(n.descriptorHash);return c||s.set(n.descriptorHash,c={descriptor:n,locators:[]}),c};for(let n of t.workspaces)if(r===\"peerDependencies\"){let c=n.manifest.peerDependencies.get(e.identHash);c!==void 0&&a(c).locators.push(n.anchoredLocator)}else{let c=n.manifest.dependencies.get(e.identHash),f=n.manifest.devDependencies.get(e.identHash);r===\"devDependencies\"?f!==void 0?a(f).locators.push(n.anchoredLocator):c!==void 0&&a(c).locators.push(n.anchoredLocator):c!==void 0?a(c).locators.push(n.anchoredLocator):f!==void 0&&a(f).locators.push(n.anchoredLocator)}return s}async function c5(e,{cwd:t,workspace:r}){return await $st(async s=>{K.isAbsolute(e)||(e=K.relative(r.cwd,K.resolve(t,e)),e.match(/^\\.{0,2}\\//)||(e=`./${e}`));let{project:a}=r,n=await u5(j.makeIdent(null,\"archive\"),e,{project:r.project,cache:s,workspace:r});if(!n)throw new Error(\"Assertion failed: The descriptor should have been found\");let c=new ki,f=a.configuration.makeResolver(),p=a.configuration.makeFetcher(),h={checksums:a.storedChecksums,project:a,cache:s,fetcher:p,report:c,resolver:f},E=f.bindDescriptor(n,r.anchoredLocator,h),C=j.convertDescriptorToLocator(E),S=await p.fetch(C,h),x=await Ut.find(S.prefixPath,{baseFs:S.packageFs});if(!x.name)throw new Error(\"Target path doesn't have a name\");return j.makeDescriptor(x.name,e)})}function Xst(e){if(e.range===\"unknown\")return{type:\"resolve\",range:\"latest\"};if(Fr.validRange(e.range))return{type:\"fixed\",range:e.range};if(Up.test(e.range))return{type:\"resolve\",range:e.range};let t=e.range.match(/^(?:jsr:|npm:)(.*)/);if(!t)return{type:\"fixed\",range:e.range};let[,r]=t,s=`${j.stringifyIdent(e)}@`;return r.startsWith(s)&&(r=r.slice(s.length)),Fr.validRange(r)?{type:\"fixed\",range:e.range}:Up.test(r)?{type:\"resolve\",range:e.range}:{type:\"fixed\",range:e.range}}async function zv(e,{project:t,workspace:r,cache:s,target:a,fixed:n,modifier:c,strategies:f,maxResults:p=1/0}){if(!(p>=0))throw new Error(`Invalid maxResults (${p})`);let h=!n||e.range===\"unknown\"?Xst(e):{type:\"fixed\",range:e.range};if(h.type===\"fixed\")return{suggestions:[{descriptor:e,name:`Use ${j.prettyDescriptor(t.configuration,e)}`,reason:\"(unambiguous explicit request)\"}],rejections:[]};let E=typeof r<\"u\"&&r!==null&&r.manifest[a].get(e.identHash)||null,C=[],S=[],x=async I=>{try{await I()}catch(T){S.push(T)}};for(let I of f){if(C.length>=p)break;switch(I){case\"keep\":await x(async()=>{E&&C.push({descriptor:E,name:`Keep ${j.prettyDescriptor(t.configuration,E)}`,reason:\"(no changes)\"})});break;case\"reuse\":await x(async()=>{for(let{descriptor:T,locators:O}of(await ede(e,{project:t,target:a})).values()){if(O.length===1&&O[0].locatorHash===r.anchoredLocator.locatorHash&&f.includes(\"keep\"))continue;let U=`(originally used by ${j.prettyLocator(t.configuration,O[0])}`;U+=O.length>1?` and ${O.length-1} other${O.length>2?\"s\":\"\"})`:\")\",C.push({descriptor:T,name:`Reuse ${j.prettyDescriptor(t.configuration,T)}`,reason:U})}});break;case\"cache\":await x(async()=>{for(let T of t.storedDescriptors.values())T.identHash===e.identHash&&C.push({descriptor:T,name:`Reuse ${j.prettyDescriptor(t.configuration,T)}`,reason:\"(already used somewhere in the lockfile)\"})});break;case\"project\":await x(async()=>{if(r.manifest.name!==null&&e.identHash===r.manifest.name.identHash)return;let T=t.tryWorkspaceByIdent(e);if(T===null)return;let O=$ge(T,c);C.push({descriptor:O,name:`Attach ${j.prettyDescriptor(t.configuration,O)}`,reason:`(local workspace at ${pe.pretty(t.configuration,T.relativeCwd,pe.Type.PATH)})`})});break;case\"latest\":{let T=t.configuration.get(\"enableNetwork\"),O=t.configuration.get(\"enableOfflineMode\");await x(async()=>{if(a===\"peerDependencies\")C.push({descriptor:j.makeDescriptor(e,\"*\"),name:\"Use *\",reason:\"(catch-all peer dependency pattern)\"});else if(!T&&!O)C.push({descriptor:null,name:\"Resolve from latest\",reason:pe.pretty(t.configuration,\"(unavailable because enableNetwork is toggled off)\",\"grey\")});else{let U=await u5(e,h.range,{project:t,cache:s,workspace:r,modifier:c});U&&C.push({descriptor:U,name:`Use ${j.prettyDescriptor(t.configuration,U)}`,reason:`(resolved from ${O?\"the cache\":\"latest\"})`})}})}break}}return{suggestions:C.slice(0,p),rejections:S.slice(0,p)}}async function u5(e,t,{project:r,cache:s,workspace:a,preserveModifier:n=!0,modifier:c}){let f=r.configuration.normalizeDependency(j.makeDescriptor(e,t)),p=new ki,h=r.configuration.makeFetcher(),E=r.configuration.makeResolver(),C={project:r,fetcher:h,cache:s,checksums:r.storedChecksums,report:p,cacheOptions:{skipIntegrityCheck:!0}},S={...C,resolver:E,fetchOptions:C},x=E.bindDescriptor(f,a.anchoredLocator,S),I=await E.getCandidates(x,{},S);if(I.length===0)return null;let T=I[0],{protocol:O,source:U,params:Y,selector:te}=j.parseRange(j.convertToManifestRange(T.reference));if(O===r.configuration.get(\"defaultProtocol\")&&(O=null),a5.default.valid(te)){let ie=te;if(typeof c<\"u\")te=c+te;else if(n!==!1){let de=typeof n==\"string\"?n:f.range;te=Zge(de,{project:r})+te}let ue=j.makeDescriptor(T,j.makeRange({protocol:O,source:U,params:Y,selector:te}));(await E.getCandidates(r.configuration.normalizeDependency(ue),{},S)).length!==1&&(te=ie)}return j.makeDescriptor(T,j.makeRange({protocol:O,source:U,params:Y,selector:te}))}async function $st(e){return await le.mktempPromise(async t=>{let r=ze.create(t);return r.useWithSource(t,{enableMirror:!1,compressionLevel:0},t,{overwrite:!0}),await e(new Jr(t,{configuration:r,check:!1,immutable:!1}))})}var zI=class extends At{constructor(){super(...arguments);this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.fixed=he.Boolean(\"-F,--fixed\",!1,{description:\"Store dependency tags as-is instead of resolving them\"});this.exact=he.Boolean(\"-E,--exact\",!1,{description:\"Don't use any semver modifier on the resolved range\"});this.tilde=he.Boolean(\"-T,--tilde\",!1,{description:\"Use the `~` semver modifier on the resolved range\"});this.caret=he.Boolean(\"-C,--caret\",!1,{description:\"Use the `^` semver modifier on the resolved range\"});this.dev=he.Boolean(\"-D,--dev\",!1,{description:\"Add a package as a dev dependency\"});this.peer=he.Boolean(\"-P,--peer\",!1,{description:\"Add a package as a peer dependency\"});this.optional=he.Boolean(\"-O,--optional\",!1,{description:\"Add / upgrade a package to an optional regular / peer dependency\"});this.preferDev=he.Boolean(\"--prefer-dev\",!1,{description:\"Add / upgrade a package to a dev dependency\"});this.interactive=he.Boolean(\"-i,--interactive\",{description:\"Reuse the specified package from other workspaces in the project\"});this.cached=he.Boolean(\"--cached\",!1,{description:\"Reuse the highest version already used somewhere within the project\"});this.mode=he.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:ks(Na)});this.silent=he.Boolean(\"--silent\",{hidden:!0});this.packages=he.Rest()}static{this.paths=[[\"add\"]]}static{this.usage=at.Usage({description:\"add dependencies to the project\",details:\"\\n      This command adds a package to the package.json for the nearest workspace.\\n\\n      - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\\n\\n      - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\\n\\n      - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\\n\\n      - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\\\"peerDependenciesMeta\\\": { \\\"<package>\\\": { \\\"optional\\\": true } }`\\n\\n      - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\\n\\n      - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\\n\\n      If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\\n\\n      If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n\\n      For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/protocols.\\n    \",examples:[[\"Add a regular package to the current workspace\",\"$0 add lodash\"],[\"Add a specific version for a package to the current workspace\",\"$0 add lodash@1.2.3\"],[\"Add a package from a GitHub repository (the master branch) to the current workspace using a URL\",\"$0 add lodash@https://github.com/lodash/lodash\"],[\"Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol\",\"$0 add lodash@github:lodash/lodash\"],[\"Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)\",\"$0 add lodash@lodash/lodash\"],[\"Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)\",\"$0 add lodash-es@lodash/lodash#es\"],[\"Add a local package (gzipped tarball format) to the current workspace\",\"$0 add local-package-name@file:../path/to/local-package-name-v0.1.2.tgz\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=r.isInteractive({interactive:this.interactive,stdout:this.context.stdout}),p=f||r.get(\"preferReuse\"),h=Jv(this,s),E=[p?\"reuse\":void 0,\"project\",this.cached?\"cache\":void 0,\"latest\"].filter(Y=>typeof Y<\"u\"),C=f?1/0:1,S=Y=>{let te=j.tryParseDescriptor(Y.slice(4));return te?te.range===\"unknown\"?j.makeDescriptor(te,`jsr:${j.stringifyIdent(te)}@latest`):j.makeDescriptor(te,`jsr:${te.range}`):null},x=await Promise.all(this.packages.map(async Y=>{let te=Y.match(/^\\.{0,2}\\//)?await c5(Y,{cwd:this.context.cwd,workspace:a}):Y.startsWith(\"jsr:\")?S(Y):j.tryParseDescriptor(Y),ie=Y.match(/^(https?:|git@github)/);if(ie)throw new st(`It seems you are trying to add a package using a ${pe.pretty(r,`${ie[0]}...`,pe.Type.RANGE)} url; we now require package names to be explicitly specified.\nTry running the command again with the package name prefixed: ${pe.pretty(r,\"yarn add\",pe.Type.CODE)} ${pe.pretty(r,j.makeDescriptor(j.makeIdent(null,\"my-package\"),`${ie[0]}...`),pe.Type.DESCRIPTOR)}`);if(!te)throw new st(`The ${pe.pretty(r,Y,pe.Type.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let ue=eot(a,te,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(ue.map(async de=>{let Ae=await zv(te,{project:s,workspace:a,cache:n,fixed:c,target:de,modifier:h,strategies:E,maxResults:C});return{request:te,suggestedDescriptors:Ae,target:de}}))})).then(Y=>Y.flat()),I=await cA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async Y=>{for(let{request:te,suggestedDescriptors:{suggestions:ie,rejections:ue}}of x)if(ie.filter(de=>de.descriptor!==null).length===0){let[de]=ue;if(typeof de>\"u\")throw new Error(\"Assertion failed: Expected an error to have been set\");s.configuration.get(\"enableNetwork\")?Y.reportError(27,`${j.prettyDescriptor(r,te)} can't be resolved to a satisfying range`):Y.reportError(27,`${j.prettyDescriptor(r,te)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),Y.reportSeparator(),Y.reportExceptionOnce(de)}});if(I.hasErrors())return I.exitCode();let T=!1,O=[],U=[];for(let{suggestedDescriptors:{suggestions:Y},target:te}of x){let ie,ue=Y.filter(Ce=>Ce.descriptor!==null),ae=ue[0].descriptor,de=ue.every(Ce=>j.areDescriptorsEqual(Ce.descriptor,ae));ue.length===1||de?ie=ae:(T=!0,{answer:ie}=await(0,tde.prompt)({type:\"select\",name:\"answer\",message:\"Which range do you want to use?\",choices:Y.map(({descriptor:Ce,name:Ee,reason:g})=>Ce?{name:Ee,hint:g,descriptor:Ce}:{name:Ee,hint:g,disabled:!0}),onCancel:()=>process.exit(130),result(Ce){return this.find(Ce,\"descriptor\")},stdin:this.context.stdin,stdout:this.context.stdout}));let Ae=a.manifest[te].get(ie.identHash);(typeof Ae>\"u\"||Ae.descriptorHash!==ie.descriptorHash)&&(a.manifest[te].set(ie.identHash,ie),this.optional&&(te===\"dependencies\"?a.manifest.ensureDependencyMeta({...ie,range:\"unknown\"}).optional=!0:te===\"peerDependencies\"&&(a.manifest.ensurePeerDependencyMeta({...ie,range:\"unknown\"}).optional=!0)),typeof Ae>\"u\"?O.push([a,te,ie,E]):U.push([a,te,Ae,ie]))}return await r.triggerMultipleHooks(Y=>Y.afterWorkspaceDependencyAddition,O),await r.triggerMultipleHooks(Y=>Y.afterWorkspaceDependencyReplacement,U),T&&this.context.stdout.write(`\n`),await s.installWithNewReport({json:this.json,stdout:this.context.stdout,quiet:this.context.quiet},{cache:n,mode:this.mode})}};function eot(e,t,{dev:r,peer:s,preferDev:a,optional:n}){let c=e.manifest.dependencies.has(t.identHash),f=e.manifest.devDependencies.has(t.identHash),p=e.manifest.peerDependencies.has(t.identHash);if((r||s)&&c)throw new st(`Package \"${j.prettyIdent(e.project.configuration,t)}\" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!s&&p)throw new st(`Package \"${j.prettyIdent(e.project.configuration,t)}\" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(n&&f)throw new st(`Package \"${j.prettyIdent(e.project.configuration,t)}\" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(n&&!s&&p)throw new st(`Package \"${j.prettyIdent(e.project.configuration,t)}\" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||a)&&n)throw new st(`Package \"${j.prettyIdent(e.project.configuration,t)}\" cannot simultaneously be a dev dependency and an optional dependency`);let h=[];return s&&h.push(\"peerDependencies\"),(r||a)&&h.push(\"devDependencies\"),n&&h.push(\"dependencies\"),h.length>0?h:f?[\"devDependencies\"]:p?[\"peerDependencies\"]:[\"dependencies\"]}qe();qe();Vt();var ZI=class extends At{constructor(){super(...arguments);this.verbose=he.Boolean(\"-v,--verbose\",!1,{description:\"Print both the binary name and the locator of the package that provides the binary\"});this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.name=he.String({required:!1})}static{this.paths=[[\"bin\"]]}static{this.usage=at.Usage({description:\"get the path to a binary script\",details:`\n      When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \\`-v,--verbose\\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary.\n\n      When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive.\n    `,examples:[[\"List all the available binaries\",\"$0 bin\"],[\"Print the path to a specific binary\",\"$0 bin eslint\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Rt.find(r,this.context.cwd);if(await s.restoreInstallState(),this.name){let f=(await Cn.getPackageAccessibleBinaries(a,{project:s})).get(this.name);if(!f)throw new st(`Couldn't find a binary named \"${this.name}\" for package \"${j.prettyLocator(r,a)}\"`);let[,p]=f;return this.context.stdout.write(`${p}\n`),0}return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async c=>{let f=await Cn.getPackageAccessibleBinaries(a,{project:s}),h=Array.from(f.keys()).reduce((E,C)=>Math.max(E,C.length),0);for(let[E,[C,S]]of f)c.reportJson({name:E,source:j.stringifyIdent(C),path:S});if(this.verbose)for(let[E,[C]]of f)c.reportInfo(null,`${E.padEnd(h,\" \")}   ${j.prettyLocator(r,C)}`);else for(let E of f.keys())c.reportInfo(null,E)})).exitCode()}};qe();Dt();Vt();var XI=class extends At{constructor(){super(...arguments);this.mirror=he.Boolean(\"--mirror\",!1,{description:\"Remove the global cache files instead of the local cache files\"});this.all=he.Boolean(\"--all\",!1,{description:\"Remove both the global cache files and the local cache files of the current project\"})}static{this.paths=[[\"cache\",\"clean\"],[\"cache\",\"clear\"]]}static{this.usage=at.Usage({description:\"remove the shared cache files\",details:`\n      This command will remove all the files from the cache.\n    `,examples:[[\"Remove all the local archives\",\"$0 cache clean\"],[\"Remove all the archives stored in the ~/.yarn directory\",\"$0 cache clean --mirror\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(!r.get(\"enableCacheClean\"))throw new st(\"Cache cleaning is currently disabled. To enable it, set `enableCacheClean: true` in your configuration file. Note: Cache cleaning is typically not required and should be avoided when using Zero-Installs.\");let s=await Jr.find(r);return(await Ot.start({configuration:r,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&s.mirrorCwd!==null,c=!this.mirror;n&&(await le.removePromise(s.mirrorCwd),await r.triggerHook(f=>f.cleanGlobalArtifacts,r)),c&&await le.removePromise(s.cwd)})).exitCode()}};qe();Vt();Jl();var f5=Ie(\"util\"),$I=class extends At{constructor(){super(...arguments);this.why=he.Boolean(\"--why\",!1,{description:\"Print the explanation for why a setting has its value\"});this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.unsafe=he.Boolean(\"--no-redacted\",!1,{description:\"Don't redact secrets (such as tokens) from the output\"});this.name=he.String()}static{this.paths=[[\"config\",\"get\"]]}static{this.usage=at.Usage({description:\"read a configuration settings\",details:`\n      This command will print a configuration setting.\n\n      Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \\`--no-redacted\\` to get the untransformed value.\n    `,examples:[[\"Print a simple configuration setting\",\"yarn config get yarnPath\"],[\"Print a complex configuration setting\",\"yarn config get packageExtensions\"],[\"Print a nested field from the configuration\",`yarn config get 'npmScopes[\"my-company\"].npmRegistryServer'`],[\"Print a token from the configuration\",\"yarn config get npmAuthToken --no-redacted\"],[\"Print a configuration setting as JSON\",\"yarn config get packageExtensions --json\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=this.name.replace(/[.[].*$/,\"\"),a=this.name.replace(/^[^.[]*/,\"\");if(typeof r.settings.get(s)>\"u\")throw new st(`Couldn't find a configuration settings named \"${s}\"`);let c=r.getSpecial(s,{hideSecrets:!this.unsafe,getNativePaths:!0}),f=Ge.convertMapsToIndexableObjects(c),p=a?ba(f,a):f,h=await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async E=>{E.reportJson(p)});if(!this.json){if(typeof p==\"string\")return this.context.stdout.write(`${p}\n`),h.exitCode();f5.inspect.styles.name=\"cyan\",this.context.stdout.write(`${(0,f5.inspect)(p,{depth:1/0,colors:r.get(\"enableColors\"),compact:!1})}\n`)}return h.exitCode()}};qe();Vt();Jl();var A5=Ie(\"util\"),eC=class extends At{constructor(){super(...arguments);this.json=he.Boolean(\"--json\",!1,{description:\"Set complex configuration settings to JSON values\"});this.home=he.Boolean(\"-H,--home\",!1,{description:\"Update the home configuration instead of the project configuration\"});this.name=he.String();this.value=he.String()}static{this.paths=[[\"config\",\"set\"]]}static{this.usage=at.Usage({description:\"change a configuration settings\",details:`\n      This command will set a configuration setting.\n\n      When used without the \\`--json\\` flag, it can only set a simple configuration setting (a string, a number, or a boolean).\n\n      When used with the \\`--json\\` flag, it can set both simple and complex configuration settings, including Arrays and Objects.\n    `,examples:[[\"Set a simple configuration setting (a string, a number, or a boolean)\",\"yarn config set initScope myScope\"],[\"Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag\",'yarn config set initScope --json \\\\\"myScope\\\\\"'],[\"Set a complex configuration setting (an Array) using the `--json` flag\",`yarn config set unsafeHttpWhitelist --json '[\"*.example.com\", \"example.com\"]'`],[\"Set a complex configuration setting (an Object) using the `--json` flag\",`yarn config set packageExtensions --json '{ \"@babel/parser@*\": { \"dependencies\": { \"@babel/types\": \"*\" } } }'`],[\"Set a nested configuration setting\",'yarn config set npmScopes.company.npmRegistryServer \"https://npm.example.com\"'],[\"Set a nested configuration setting using indexed access for non-simple keys\",`yarn config set 'npmRegistries[\"//npm.example.com\"].npmAuthToken' \"ffffffff-ffff-ffff-ffff-ffffffffffff\"`]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new st(\"This command must be run from within a project folder\");return r.projectCwd},a=this.name.replace(/[.[].*$/,\"\"),n=this.name.replace(/^[^.[]*\\.?/,\"\");if(typeof r.settings.get(a)>\"u\")throw new st(`Couldn't find a configuration settings named \"${a}\"`);if(a===\"enableStrictSettings\")throw new st(\"This setting only affects the file it's in, and thus cannot be set from the CLI\");let f=this.json?JSON.parse(this.value):this.value;await(this.home?I=>ze.updateHomeConfiguration(I):I=>ze.updateConfiguration(s(),I))(I=>{if(n){let T=c0(I);return Vd(T,this.name,f),T}else return{...I,[a]:f}});let E=(await ze.find(this.context.cwd,this.context.plugins)).getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),C=Ge.convertMapsToIndexableObjects(E),S=n?ba(C,n):C;return(await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async I=>{A5.inspect.styles.name=\"cyan\",I.reportInfo(0,`Successfully set ${this.name} to ${(0,A5.inspect)(S,{depth:1/0,colors:r.get(\"enableColors\"),compact:!1})}`)})).exitCode()}};qe();Vt();Jl();var tC=class extends At{constructor(){super(...arguments);this.home=he.Boolean(\"-H,--home\",!1,{description:\"Update the home configuration instead of the project configuration\"});this.name=he.String()}static{this.paths=[[\"config\",\"unset\"]]}static{this.usage=at.Usage({description:\"unset a configuration setting\",details:`\n      This command will unset a configuration setting.\n    `,examples:[[\"Unset a simple configuration setting\",\"yarn config unset initScope\"],[\"Unset a complex configuration setting\",\"yarn config unset packageExtensions\"],[\"Unset a nested configuration setting\",\"yarn config unset npmScopes.company.npmRegistryServer\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new st(\"This command must be run from within a project folder\");return r.projectCwd},a=this.name.replace(/[.[].*$/,\"\"),n=this.name.replace(/^[^.[]*\\.?/,\"\");if(typeof r.settings.get(a)>\"u\")throw new st(`Couldn't find a configuration settings named \"${a}\"`);let f=this.home?h=>ze.updateHomeConfiguration(h):h=>ze.updateConfiguration(s(),h);return(await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async h=>{let E=!1;await f(C=>{if(!d2(C,this.name))return h.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),E=!0,C;let S=n?c0(C):{...C};return u0(S,this.name),S}),E||h.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};qe();Dt();Vt();var UT=Ie(\"util\"),rC=class extends At{constructor(){super(...arguments);this.noDefaults=he.Boolean(\"--no-defaults\",!1,{description:\"Omit the default values from the display\"});this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.verbose=he.Boolean(\"-v,--verbose\",{hidden:!0});this.why=he.Boolean(\"--why\",{hidden:!0});this.names=he.Rest()}static{this.paths=[[\"config\"]]}static{this.usage=at.Usage({description:\"display the current configuration\",details:`\n      This command prints the current active configuration settings.\n    `,examples:[[\"Print the active configuration settings\",\"$0 config\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins,{strict:!1}),s=await PI({configuration:r,stdout:this.context.stdout,forceError:this.json},[{option:this.verbose,message:\"The --verbose option is deprecated, the settings' descriptions are now always displayed\"},{option:this.why,message:\"The --why option is deprecated, the settings' sources are now always displayed\"}]);if(s!==null)return s;let a=this.names.length>0?[...new Set(this.names)].sort():[...r.settings.keys()].sort(),n,c=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async f=>{if(r.invalid.size>0&&!this.json){for(let[p,h]of r.invalid)f.reportError(34,`Invalid configuration key \"${p}\" in ${h}`);f.reportSeparator()}if(this.json)for(let p of a){if(this.noDefaults&&!r.sources.has(p))continue;let h=r.settings.get(p);typeof h>\"u\"&&f.reportError(34,`No configuration key named \"${p}\"`);let E=r.getSpecial(p,{hideSecrets:!0,getNativePaths:!0}),C=r.sources.get(p)??\"<default>\",S=C&&C[0]!==\"<\"?fe.fromPortablePath(C):C;f.reportJson({key:p,effective:E,source:S,...h})}else{let p={breakLength:1/0,colors:r.get(\"enableColors\"),maxArrayLength:2},h={},E={children:h};for(let C of a){if(this.noDefaults&&!r.sources.has(C))continue;let S=r.settings.get(C),x=r.sources.get(C)??\"<default>\",I=r.getSpecial(C,{hideSecrets:!0,getNativePaths:!0}),T={Description:{label:\"Description\",value:pe.tuple(pe.Type.MARKDOWN,{text:S.description,format:this.cli.format(),paragraphs:!1})},Source:{label:\"Source\",value:pe.tuple(x[0]===\"<\"?pe.Type.CODE:pe.Type.PATH,x)}};h[C]={value:pe.tuple(pe.Type.CODE,C),children:T};let O=(U,Y)=>{for(let[te,ie]of Y)if(ie instanceof Map){let ue={};U[te]={children:ue},O(ue,ie)}else U[te]={label:te,value:pe.tuple(pe.Type.NO_HINT,(0,UT.inspect)(ie,p))}};I instanceof Map?O(T,I):T.Value={label:\"Value\",value:pe.tuple(pe.Type.NO_HINT,(0,UT.inspect)(I,p))}}a.length!==1&&(n=void 0),Rs.emitTree(E,{configuration:r,json:this.json,stdout:this.context.stdout,separators:2})}});if(!this.json&&typeof n<\"u\"){let f=a[0],p=(0,UT.inspect)(r.getSpecial(f,{hideSecrets:!0,getNativePaths:!0}),{colors:r.get(\"enableColors\")});this.context.stdout.write(`\n`),this.context.stdout.write(`${p}\n`)}return c.exitCode()}};qe();Vt();ul();var _T={};Yt(_T,{Strategy:()=>Zv,acceptedStrategies:()=>tot,dedupe:()=>p5});qe();qe();var rde=et(Jo()),Zv=(t=>(t.HIGHEST=\"highest\",t))(Zv||{}),tot=new Set(Object.values(Zv)),rot={highest:async(e,t,{resolver:r,fetcher:s,resolveOptions:a,fetchOptions:n})=>{let c=new Map;for(let[p,h]of e.storedResolutions){let E=e.storedDescriptors.get(p);if(typeof E>\"u\")throw new Error(`Assertion failed: The descriptor (${p}) should have been registered`);Ge.getSetWithDefault(c,E.identHash).add(h)}let f=new Map(Ge.mapAndFilter(e.storedDescriptors.values(),p=>j.isVirtualDescriptor(p)?Ge.mapAndFilter.skip:[p.descriptorHash,Ge.makeDeferred()]));for(let p of e.storedDescriptors.values()){let h=f.get(p.descriptorHash);if(typeof h>\"u\")throw new Error(`Assertion failed: The descriptor (${p.descriptorHash}) should have been registered`);let E=e.storedResolutions.get(p.descriptorHash);if(typeof E>\"u\")throw new Error(`Assertion failed: The resolution (${p.descriptorHash}) should have been registered`);let C=e.originalPackages.get(E);if(typeof C>\"u\")throw new Error(`Assertion failed: The package (${E}) should have been registered`);Promise.resolve().then(async()=>{let S=r.getResolutionDependencies(p,a),x=Object.fromEntries(await Ge.allSettledSafe(Object.entries(S).map(async([te,ie])=>{let ue=f.get(ie.descriptorHash);if(typeof ue>\"u\")throw new Error(`Assertion failed: The descriptor (${ie.descriptorHash}) should have been registered`);let ae=await ue.promise;if(!ae)throw new Error(\"Assertion failed: Expected the dependency to have been through the dedupe process itself\");return[te,ae.updatedPackage]})));if(t.length&&!rde.default.isMatch(j.stringifyIdent(p),t)||!r.shouldPersistResolution(C,a))return C;let I=c.get(p.identHash);if(typeof I>\"u\")throw new Error(`Assertion failed: The resolutions (${p.identHash}) should have been registered`);if(I.size===1)return C;let T=[...I].map(te=>{let ie=e.originalPackages.get(te);if(typeof ie>\"u\")throw new Error(`Assertion failed: The package (${te}) should have been registered`);return ie}),O=await r.getSatisfying(p,x,T,a),U=O.locators?.[0];if(typeof U>\"u\"||!O.sorted)return C;let Y=e.originalPackages.get(U.locatorHash);if(typeof Y>\"u\")throw new Error(`Assertion failed: The package (${U.locatorHash}) should have been registered`);return Y}).then(async S=>{let x=await e.preparePackage(S,{resolver:r,resolveOptions:a});h.resolve({descriptor:p,currentPackage:C,updatedPackage:S,resolvedPackage:x})}).catch(S=>{h.reject(S)})}return[...f.values()].map(p=>p.promise)}};async function p5(e,{strategy:t,patterns:r,cache:s,report:a}){let{configuration:n}=e,c=new ki,f=n.makeResolver(),p=n.makeFetcher(),h={cache:s,checksums:e.storedChecksums,fetcher:p,project:e,report:c,cacheOptions:{skipIntegrityCheck:!0}},E={project:e,resolver:f,report:c,fetchOptions:h};return await a.startTimerPromise(\"Deduplication step\",async()=>{let C=rot[t],S=await C(e,r,{resolver:f,resolveOptions:E,fetcher:p,fetchOptions:h}),x=yo.progressViaCounter(S.length);await a.reportProgress(x);let I=0;await Promise.all(S.map(U=>U.then(Y=>{if(Y===null||Y.currentPackage.locatorHash===Y.updatedPackage.locatorHash)return;I++;let{descriptor:te,currentPackage:ie,updatedPackage:ue}=Y;a.reportInfo(0,`${j.prettyDescriptor(n,te)} can be deduped from ${j.prettyLocator(n,ie)} to ${j.prettyLocator(n,ue)}`),a.reportJson({descriptor:j.stringifyDescriptor(te),currentResolution:j.stringifyLocator(ie),updatedResolution:j.stringifyLocator(ue)}),e.storedResolutions.set(te.descriptorHash,ue.locatorHash)}).finally(()=>x.tick())));let T;switch(I){case 0:T=\"No packages\";break;case 1:T=\"One package\";break;default:T=`${I} packages`}let O=pe.pretty(n,t,pe.Type.CODE);return a.reportInfo(0,`${T} can be deduped using the ${O} strategy`),I})}var nC=class extends At{constructor(){super(...arguments);this.strategy=he.String(\"-s,--strategy\",\"highest\",{description:\"The strategy to use when deduping dependencies\",validator:ks(Zv)});this.check=he.Boolean(\"-c,--check\",!1,{description:\"Exit with exit code 1 when duplicates are found, without persisting the dependency tree\"});this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.mode=he.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:ks(Na)});this.patterns=he.Rest()}static{this.paths=[[\"dedupe\"]]}static{this.usage=at.Usage({description:\"deduplicate dependencies with overlapping ranges\",details:\"\\n      Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\\n\\n      This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\\n\\n      - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\\n\\n      **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\\n\\n      If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n\\n      This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\\n\\n      ### In-depth explanation:\\n\\n      Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\\n\\n      **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\\n\\n      Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\\n\\n      **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\\n    \",examples:[[\"Dedupe all packages\",\"$0 dedupe\"],[\"Dedupe all packages using a specific strategy\",\"$0 dedupe --strategy highest\"],[\"Dedupe a specific package\",\"$0 dedupe lodash\"],[\"Dedupe all packages with the `@babel/*` scope\",\"$0 dedupe '@babel/*'\"],[\"Check for duplicates (can be used as a CI step)\",\"$0 dedupe --check\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd),a=await Jr.find(r);await s.restoreInstallState({restoreResolutions:!1});let n=0,c=await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout,json:this.json},async f=>{n=await p5(s,{strategy:this.strategy,patterns:this.patterns,cache:a,report:f})});return c.hasErrors()?c.exitCode():this.check?n?1:0:await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:a,mode:this.mode})}};qe();Vt();var iC=class extends At{static{this.paths=[[\"--clipanion=definitions\"]]}async execute(){let{plugins:t}=await ze.find(this.context.cwd,this.context.plugins),r=[];for(let c of t){let{commands:f}=c[1];if(f){let h=va.from(f).definitions();r.push([c[0],h])}}let s=this.cli.definitions(),a=(c,f)=>c.split(\" \").slice(1).join()===f.split(\" \").slice(1).join(),n=nde()[\"@yarnpkg/builder\"].bundles.standard;for(let c of r){let f=c[1];for(let p of f)s.find(h=>a(h.path,p.path)).plugin={name:c[0],isDefault:n.includes(c[0])}}this.context.stdout.write(`${JSON.stringify(s,null,2)}\n`)}};var sC=class extends At{static{this.paths=[[\"help\"],[\"--help\"],[\"-h\"]]}async execute(){this.context.stdout.write(this.cli.usage(null))}};qe();Dt();Vt();var oC=class extends At{constructor(){super(...arguments);this.leadingArgument=he.String();this.args=he.Proxy()}async execute(){if(this.leadingArgument.match(/[\\\\/]/)&&!j.tryParseIdent(this.leadingArgument)){let r=K.resolve(this.context.cwd,fe.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:r})}else return await this.cli.run([\"run\",this.leadingArgument,...this.args])}};qe();var aC=class extends At{static{this.paths=[[\"-v\"],[\"--version\"]]}async execute(){this.context.stdout.write(`${An||\"<unknown>\"}\n`)}};qe();qe();Vt();var lC=class extends At{constructor(){super(...arguments);this.commandName=he.String();this.args=he.Proxy()}static{this.paths=[[\"exec\"]]}static{this.usage=at.Usage({description:\"execute a shell script\",details:`\n      This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell.\n\n      It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment).\n    `,examples:[[\"Execute a single shell command\",\"$0 exec echo Hello World\"],[\"Execute a shell script\",'$0 exec \"tsc & babel src --out-dir lib\"']]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Rt.find(r,this.context.cwd);return await s.restoreInstallState(),await Cn.executePackageShellcode(a,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:s})}};qe();Vt();ul();var cC=class extends At{constructor(){super(...arguments);this.hash=he.String({required:!1,validator:Nx(SE(),[qB(/^p[0-9a-f]{6}$/)])})}static{this.paths=[[\"explain\",\"peer-requirements\"]]}static{this.usage=at.Usage({description:\"explain a set of peer requirements\",details:`\n      A peer requirement represents all peer requests that a subject must satisfy when providing a requested package to requesters.\n\n      When the hash argument is specified, this command prints a detailed explanation of the peer requirement corresponding to the hash and whether it is satisfied or not.\n\n      When used without arguments, this command lists all peer requirements and the corresponding hash that can be used to get detailed information about a given requirement.\n\n      **Note:** A hash is a seven-letter code consisting of the letter 'p' followed by six characters that can be obtained from peer dependency warnings or from the list of all peer requirements(\\`yarn explain peer-requirements\\`).\n    `,examples:[[\"Explain the corresponding peer requirement for a hash\",\"$0 explain peer-requirements p1a4ed\"],[\"List all peer requirements\",\"$0 explain peer-requirements\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd);return await s.restoreInstallState({restoreResolutions:!1}),await s.applyLightResolution(),typeof this.hash<\"u\"?await iot(this.hash,s,{stdout:this.context.stdout}):await sot(s,{stdout:this.context.stdout})}};async function iot(e,t,r){let s=t.peerRequirementNodes.get(e);if(typeof s>\"u\")throw new Error(`No peerDependency requirements found for hash: \"${e}\"`);let a=new Set,n=p=>a.has(p.requester.locatorHash)?{value:pe.tuple(pe.Type.DEPENDENT,{locator:p.requester,descriptor:p.descriptor}),children:p.children.size>0?[{value:pe.tuple(pe.Type.NO_HINT,\"...\")}]:[]}:(a.add(p.requester.locatorHash),{value:pe.tuple(pe.Type.DEPENDENT,{locator:p.requester,descriptor:p.descriptor}),children:Object.fromEntries(Array.from(p.children.values(),h=>[j.stringifyLocator(h.requester),n(h)]))}),c=t.peerWarnings.find(p=>p.hash===e);return(await Ot.start({configuration:t.configuration,stdout:r.stdout,includeFooter:!1,includePrefix:!1},async p=>{let h=pe.mark(t.configuration),E=c?h.Cross:h.Check;if(p.reportInfo(0,`Package ${pe.pretty(t.configuration,s.subject,pe.Type.LOCATOR)} is requested to provide ${pe.pretty(t.configuration,s.ident,pe.Type.IDENT)} by its descendants`),p.reportSeparator(),p.reportInfo(0,pe.pretty(t.configuration,s.subject,pe.Type.LOCATOR)),Rs.emitTree({children:Object.fromEntries(Array.from(s.requests.values(),C=>[j.stringifyLocator(C.requester),n(C)]))},{configuration:t.configuration,stdout:r.stdout,json:!1}),p.reportSeparator(),s.provided.range===\"missing:\"){let C=c?\"\":\" , but all peer requests are optional\";p.reportInfo(0,`${E} Package ${pe.pretty(t.configuration,s.subject,pe.Type.LOCATOR)} does not provide ${pe.pretty(t.configuration,s.ident,pe.Type.IDENT)}${C}.`)}else{let C=t.storedResolutions.get(s.provided.descriptorHash);if(!C)throw new Error(\"Assertion failed: Expected the descriptor to be registered\");let S=t.storedPackages.get(C);if(!S)throw new Error(\"Assertion failed: Expected the package to be registered\");p.reportInfo(0,`${E} Package ${pe.pretty(t.configuration,s.subject,pe.Type.LOCATOR)} provides ${pe.pretty(t.configuration,s.ident,pe.Type.IDENT)} with version ${j.prettyReference(t.configuration,S.version??\"0.0.0\")}, ${c?\"which does not satisfy all requests.\":\"which satisfies all requests\"}`),c?.type===3&&(c.range?p.reportInfo(0,`  The combined requested range is ${pe.pretty(t.configuration,c.range,pe.Type.RANGE)}`):p.reportInfo(0,\"  Unfortunately, the requested ranges have no overlap\"))}})).exitCode()}async function sot(e,t){return(await Ot.start({configuration:e.configuration,stdout:t.stdout,includeFooter:!1,includePrefix:!1},async s=>{let a=pe.mark(e.configuration),n=Ge.sortMap(e.peerRequirementNodes,[([,c])=>j.stringifyLocator(c.subject),([,c])=>j.stringifyIdent(c.ident)]);for(let[,c]of n.values()){if(!c.root)continue;let f=e.peerWarnings.find(E=>E.hash===c.hash),p=[...j.allPeerRequests(c)],h;if(p.length>2?h=` and ${p.length-1} other dependencies`:p.length===2?h=\" and 1 other dependency\":h=\"\",c.provided.range!==\"missing:\"){let E=e.storedResolutions.get(c.provided.descriptorHash);if(!E)throw new Error(\"Assertion failed: Expected the resolution to have been registered\");let C=e.storedPackages.get(E);if(!C)throw new Error(\"Assertion failed: Expected the provided package to have been registered\");let S=`${pe.pretty(e.configuration,c.hash,pe.Type.CODE)} \\u2192 ${f?a.Cross:a.Check} ${j.prettyLocator(e.configuration,c.subject)} provides ${j.prettyLocator(e.configuration,C)} to ${j.prettyLocator(e.configuration,p[0].requester)}${h}`;f?s.reportWarning(0,S):s.reportInfo(0,S)}else{let E=`${pe.pretty(e.configuration,c.hash,pe.Type.CODE)} \\u2192 ${f?a.Cross:a.Check} ${j.prettyLocator(e.configuration,c.subject)} doesn't provide ${j.prettyIdent(e.configuration,c.ident)} to ${j.prettyLocator(e.configuration,p[0].requester)}${h}`;f?s.reportWarning(0,E):s.reportInfo(0,E)}}})).exitCode()}qe();Vt();ul();qe();qe();Dt();Vt();var ide=et(pi()),uC=class extends At{constructor(){super(...arguments);this.useYarnPath=he.Boolean(\"--yarn-path\",{description:\"Set the yarnPath setting even if the version can be accessed by Corepack\"});this.onlyIfNeeded=he.Boolean(\"--only-if-needed\",!1,{description:\"Only lock the Yarn version if it isn't already locked\"});this.version=he.String()}static{this.paths=[[\"set\",\"version\"]]}static{this.usage=at.Usage({description:\"lock the Yarn version used by the project\",details:\"\\n      This command will set a specific release of Yarn to be used by Corepack: https://nodejs.org/api/corepack.html.\\n\\n      By default it only will set the `packageManager` field at the root of your project, but if the referenced release cannot be represented this way, if you already have `yarnPath` configured, or if you set the `--yarn-path` command line flag, then the release will also be downloaded from the Yarn GitHub repository, stored inside your project, and referenced via the `yarnPath` settings from your project `.yarnrc.yml` file.\\n\\n      A very good use case for this command is to enforce the version of Yarn used by any single member of your team inside the same project - by doing this you ensure that you have control over Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting different behavior.\\n\\n      The version specifier can be:\\n\\n      - a tag:\\n        - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\\n        - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\\n        - `classic` -> the most recent classic (`^0.x || ^1.x`) release\\n\\n      - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\\n\\n      - a semver version (e.g. `2.4.1`, `1.22.1`)\\n\\n      - a local file referenced through either a relative or absolute path\\n\\n      - `self` -> the version used to invoke the command\\n    \",examples:[[\"Download the latest release from the Yarn repository\",\"$0 set version latest\"],[\"Download the latest canary release from the Yarn repository\",\"$0 set version canary\"],[\"Download the latest classic release from the Yarn repository\",\"$0 set version classic\"],[\"Download the most recent Yarn 3 build\",\"$0 set version 3.x\"],[\"Download a specific Yarn 2 build\",\"$0 set version 2.0.0-rc.30\"],[\"Switch back to a specific Yarn 1 release\",\"$0 set version 1.22.1\"],[\"Use a release from the local filesystem\",\"$0 set version ./yarn.cjs\"],[\"Use a release from a URL\",\"$0 set version https://repo.yarnpkg.com/3.1.0/packages/yarnpkg-cli/bin/yarn.js\"],[\"Download the version used to invoke the command\",\"$0 set version self\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&r.get(\"yarnPath\")){let f=r.sources.get(\"yarnPath\");if(!f)throw new Error(\"Assertion failed: Expected 'yarnPath' to have a source\");let p=r.projectCwd??r.startingCwd;if(K.contains(p,f))return 0}let s=()=>{if(typeof An>\"u\")throw new st(\"The --install flag can only be used without explicit version specifier from the Yarn CLI\");return`file://${process.argv[1]}`},a,n=(f,p)=>({version:p,url:f.replace(/\\{\\}/g,p)});if(this.version===\"self\")a={url:s(),version:An??\"self\"};else if(this.version===\"latest\"||this.version===\"berry\"||this.version===\"stable\")a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await Xv(r,\"stable\"));else if(this.version===\"canary\")a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await Xv(r,\"canary\"));else if(this.version===\"classic\")a={url:\"https://classic.yarnpkg.com/latest.js\",version:\"classic\"};else if(this.version.match(/^https?:/))a={url:this.version,version:\"remote\"};else if(this.version.match(/^\\.{0,2}[\\\\/]/)||fe.isAbsolute(this.version))a={url:`file://${K.resolve(fe.toPortablePath(this.version))}`,version:\"file\"};else if(Fr.satisfiesWithPrereleases(this.version,\">=2.0.0\"))a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",this.version);else if(Fr.satisfiesWithPrereleases(this.version,\"^0.x || ^1.x\"))a=n(\"https://github.com/yarnpkg/yarn/releases/download/v{}/yarn-{}.js\",this.version);else if(Fr.validRange(this.version))a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await oot(r,this.version));else throw new st(`Invalid version descriptor \"${this.version}\"`);return(await Ot.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async f=>{let p=async()=>{let h=\"file://\";return a.url.startsWith(h)?(f.reportInfo(0,`Retrieving ${pe.pretty(r,a.url,pe.Type.PATH)}`),await le.readFilePromise(a.url.slice(h.length))):(f.reportInfo(0,`Downloading ${pe.pretty(r,a.url,pe.Type.URL)}`),await nn.get(a.url,{configuration:r}))};await h5(r,a.version,p,{report:f,useYarnPath:this.useYarnPath})})).exitCode()}};async function oot(e,t){let s=(await nn.get(\"https://repo.yarnpkg.com/tags\",{configuration:e,jsonResponse:!0})).tags.filter(a=>Fr.satisfiesWithPrereleases(a,t));if(s.length===0)throw new st(`No matching release found for range ${pe.pretty(e,t,pe.Type.RANGE)}.`);return s[0]}async function Xv(e,t){let r=await nn.get(\"https://repo.yarnpkg.com/tags\",{configuration:e,jsonResponse:!0});if(!r.latest[t])throw new st(`Tag ${pe.pretty(e,t,pe.Type.RANGE)} not found`);return r.latest[t]}async function h5(e,t,r,{report:s,useYarnPath:a}){let n,c=async()=>(typeof n>\"u\"&&(n=await r()),n);if(t===null){let te=await c();await le.mktempPromise(async ie=>{let ue=K.join(ie,\"yarn.cjs\");await le.writeFilePromise(ue,te);let{stdout:ae}=await qr.execvp(process.execPath,[fe.fromPortablePath(ue),\"--version\"],{cwd:ie,env:{...e.env,YARN_IGNORE_PATH:\"1\"}});if(t=ae.trim(),!ide.default.valid(t))throw new Error(`Invalid semver version. ${pe.pretty(e,\"yarn --version\",pe.Type.CODE)} returned:\n${t}`)})}let f=e.projectCwd??e.startingCwd,p=K.resolve(f,\".yarn/releases\"),h=K.resolve(p,`yarn-${t}.cjs`),E=K.relative(e.startingCwd,h),C=Ge.isTaggedYarnVersion(t),S=e.get(\"yarnPath\"),x=!C,I=x||!!S||!!a;if(a===!1){if(x)throw new _t(0,\"You explicitly opted out of yarnPath usage in your command line, but the version you specified cannot be represented by Corepack\");I=!1}else!I&&!process.env.COREPACK_ROOT&&(s.reportWarning(0,`You don't seem to have ${pe.applyHyperlink(e,\"Corepack\",\"https://nodejs.org/api/corepack.html\")} enabled; we'll have to rely on ${pe.applyHyperlink(e,\"yarnPath\",\"https://yarnpkg.com/configuration/yarnrc#yarnPath\")} instead`),I=!0);if(I){let te=await c();s.reportInfo(0,`Saving the new release in ${pe.pretty(e,E,\"magenta\")}`),await le.removePromise(K.dirname(h)),await le.mkdirPromise(K.dirname(h),{recursive:!0}),await le.writeFilePromise(h,te,{mode:493}),await ze.updateConfiguration(f,{yarnPath:K.relative(f,h)})}else await le.removePromise(K.dirname(h)),await ze.updateConfiguration(f,{yarnPath:ze.deleteProperty});let T=await Ut.tryFind(f)||new Ut;T.packageManager=`yarn@${C?t:await Xv(e,\"stable\")}`;let O={};T.exportTo(O);let U=K.join(f,Ut.fileName),Y=`${JSON.stringify(O,null,T.indent)}\n`;return await le.changeFilePromise(U,Y,{automaticNewlines:!0}),{bundleVersion:t}}function sde(e){return Br[jx(e)]}var aot=/## (?<code>YN[0-9]{4}) - `(?<name>[A-Z_]+)`\\n\\n(?<details>(?:.(?!##))+)/gs;async function lot(e){let r=`https://repo.yarnpkg.com/${Ge.isTaggedYarnVersion(An)?An:await Xv(e,\"canary\")}/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx`,s=await nn.get(r,{configuration:e});return new Map(Array.from(s.toString().matchAll(aot),({groups:a})=>{if(!a)throw new Error(\"Assertion failed: Expected the match to have been successful\");let n=sde(a.code);if(a.name!==n)throw new Error(`Assertion failed: Invalid error code data: Expected \"${a.name}\" to be named \"${n}\"`);return[a.code,a.details]}))}var fC=class extends At{constructor(){super(...arguments);this.code=he.String({required:!1,validator:WB(SE(),[qB(/^YN[0-9]{4}$/)])});this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"explain\"]]}static{this.usage=at.Usage({description:\"explain an error code\",details:`\n      When the code argument is specified, this command prints its name and its details.\n\n      When used without arguments, this command lists all error codes and their names.\n    `,examples:[[\"Explain an error code\",\"$0 explain YN0006\"],[\"List all error codes\",\"$0 explain\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(typeof this.code<\"u\"){let s=sde(this.code),a=pe.pretty(r,s,pe.Type.CODE),n=this.cli.format().header(`${this.code} - ${a}`),f=(await lot(r)).get(this.code),p=typeof f<\"u\"?pe.jsonOrPretty(this.json,r,pe.tuple(pe.Type.MARKDOWN,{text:f,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description.\n\nYou can help us by editing this page on GitHub \\u{1F642}:\n${pe.jsonOrPretty(this.json,r,pe.tuple(pe.Type.URL,\"https://github.com/yarnpkg/berry/blob/master/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx\"))}\n`;this.json?this.context.stdout.write(`${JSON.stringify({code:this.code,name:s,details:p})}\n`):this.context.stdout.write(`${n}\n\n${p}\n`)}else{let s={children:Ge.mapAndFilter(Object.entries(Br),([a,n])=>Number.isNaN(Number(a))?Ge.mapAndFilter.skip:{label:Kf(Number(a)),value:pe.tuple(pe.Type.CODE,n)})};Rs.emitTree(s,{configuration:r,stdout:this.context.stdout,json:this.json})}}};qe();Dt();Vt();var ode=et(Jo()),AC=class extends At{constructor(){super(...arguments);this.all=he.Boolean(\"-A,--all\",!1,{description:\"Print versions of a package from the whole project\"});this.recursive=he.Boolean(\"-R,--recursive\",!1,{description:\"Print information for all packages, including transitive dependencies\"});this.extra=he.Array(\"-X,--extra\",[],{description:\"An array of requests of extra data provided by plugins\"});this.cache=he.Boolean(\"--cache\",!1,{description:\"Print information about the cache entry of a package (path, size, checksum)\"});this.dependents=he.Boolean(\"--dependents\",!1,{description:\"Print all dependents for each matching package\"});this.manifest=he.Boolean(\"--manifest\",!1,{description:\"Print data obtained by looking at the package archive (license, homepage, ...)\"});this.nameOnly=he.Boolean(\"--name-only\",!1,{description:\"Only print the name for the matching packages\"});this.virtuals=he.Boolean(\"--virtuals\",!1,{description:\"Print each instance of the virtual packages\"});this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.patterns=he.Rest()}static{this.paths=[[\"info\"]]}static{this.usage=at.Usage({description:\"see information related to packages\",details:\"\\n      This command prints various information related to the specified packages, accepting glob patterns.\\n\\n      By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\\n\\n      Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\\n\\n      Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\\n    \",examples:[[\"Show information about Lodash\",\"$0 info lodash\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a&&!this.all)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let c=new Set(this.extra);this.cache&&c.add(\"cache\"),this.dependents&&c.add(\"dependents\"),this.manifest&&c.add(\"manifest\");let f=(ie,{recursive:ue})=>{let ae=ie.anchoredLocator.locatorHash,de=new Map,Ae=[ae];for(;Ae.length>0;){let Ce=Ae.shift();if(de.has(Ce))continue;let Ee=s.storedPackages.get(Ce);if(typeof Ee>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");if(de.set(Ce,Ee),j.isVirtualLocator(Ee)&&Ae.push(j.devirtualizeLocator(Ee).locatorHash),!(!ue&&Ce!==ae))for(let g of Ee.dependencies.values()){let Se=s.storedResolutions.get(g.descriptorHash);if(typeof Se>\"u\")throw new Error(\"Assertion failed: Expected the resolution to be registered\");Ae.push(Se)}}return de.values()},p=({recursive:ie})=>{let ue=new Map;for(let ae of s.workspaces)for(let de of f(ae,{recursive:ie}))ue.set(de.locatorHash,de);return ue.values()},h=({all:ie,recursive:ue})=>ie&&ue?s.storedPackages.values():ie?p({recursive:ue}):f(a,{recursive:ue}),E=({all:ie,recursive:ue})=>{let ae=h({all:ie,recursive:ue}),de=this.patterns.map(Ee=>{let g=j.parseLocator(Ee),Se=ode.default.makeRe(j.stringifyIdent(g)),Be=j.isVirtualLocator(g),me=Be?j.devirtualizeLocator(g):g;return ce=>{let X=j.stringifyIdent(ce);if(!Se.test(X))return!1;if(g.reference===\"unknown\")return!0;let De=j.isVirtualLocator(ce),Qe=De?j.devirtualizeLocator(ce):ce;return!(Be&&De&&g.reference!==ce.reference||me.reference!==Qe.reference)}}),Ae=Ge.sortMap([...ae],Ee=>j.stringifyLocator(Ee));return{selection:Ae.filter(Ee=>de.length===0||de.some(g=>g(Ee))),sortedLookup:Ae}},{selection:C,sortedLookup:S}=E({all:this.all,recursive:this.recursive});if(C.length===0)throw new st(\"No package matched your request\");let x=new Map;if(this.dependents)for(let ie of S)for(let ue of ie.dependencies.values()){let ae=s.storedResolutions.get(ue.descriptorHash);if(typeof ae>\"u\")throw new Error(\"Assertion failed: Expected the resolution to be registered\");Ge.getArrayWithDefault(x,ae).push(ie)}let I=new Map;for(let ie of S){if(!j.isVirtualLocator(ie))continue;let ue=j.devirtualizeLocator(ie);Ge.getArrayWithDefault(I,ue.locatorHash).push(ie)}let T={},O={children:T},U=r.makeFetcher(),Y={project:s,fetcher:U,cache:n,checksums:s.storedChecksums,report:new ki,cacheOptions:{skipIntegrityCheck:!0}},te=[async(ie,ue,ae)=>{if(!ue.has(\"manifest\"))return;let de=await U.fetch(ie,Y),Ae;try{Ae=await Ut.find(de.prefixPath,{baseFs:de.packageFs})}finally{de.releaseFs?.()}ae(\"Manifest\",{License:pe.tuple(pe.Type.NO_HINT,Ae.license),Homepage:pe.tuple(pe.Type.URL,Ae.raw.homepage??null)})},async(ie,ue,ae)=>{if(!ue.has(\"cache\"))return;let de=s.storedChecksums.get(ie.locatorHash)??null,Ae=n.getLocatorPath(ie,de),Ce;if(Ae!==null)try{Ce=await le.statPromise(Ae)}catch{}let Ee=typeof Ce<\"u\"?[Ce.size,pe.Type.SIZE]:void 0;ae(\"Cache\",{Checksum:pe.tuple(pe.Type.NO_HINT,de),Path:pe.tuple(pe.Type.PATH,Ae),Size:Ee})}];for(let ie of C){let ue=j.isVirtualLocator(ie);if(!this.virtuals&&ue)continue;let ae={},de={value:[ie,pe.Type.LOCATOR],children:ae};if(T[j.stringifyLocator(ie)]=de,this.nameOnly){delete de.children;continue}let Ae=I.get(ie.locatorHash);typeof Ae<\"u\"&&(ae.Instances={label:\"Instances\",value:pe.tuple(pe.Type.NUMBER,Ae.length)}),ae.Version={label:\"Version\",value:pe.tuple(pe.Type.NO_HINT,ie.version)};let Ce=(g,Se)=>{let Be={};if(ae[g]=Be,Array.isArray(Se))Be.children=Se.map(me=>({value:me}));else{let me={};Be.children=me;for(let[ce,X]of Object.entries(Se))typeof X>\"u\"||(me[ce]={label:ce,value:X})}};if(!ue){for(let g of te)await g(ie,c,Ce);await r.triggerHook(g=>g.fetchPackageInfo,ie,c,Ce)}ie.bin.size>0&&!ue&&Ce(\"Exported Binaries\",[...ie.bin.keys()].map(g=>pe.tuple(pe.Type.PATH,g)));let Ee=x.get(ie.locatorHash);typeof Ee<\"u\"&&Ee.length>0&&Ce(\"Dependents\",Ee.map(g=>pe.tuple(pe.Type.LOCATOR,g))),ie.dependencies.size>0&&!ue&&Ce(\"Dependencies\",[...ie.dependencies.values()].map(g=>{let Se=s.storedResolutions.get(g.descriptorHash),Be=typeof Se<\"u\"?s.storedPackages.get(Se)??null:null;return pe.tuple(pe.Type.RESOLUTION,{descriptor:g,locator:Be})})),ie.peerDependencies.size>0&&ue&&Ce(\"Peer dependencies\",[...ie.peerDependencies.values()].map(g=>{let Se=ie.dependencies.get(g.identHash),Be=typeof Se<\"u\"?s.storedResolutions.get(Se.descriptorHash)??null:null,me=Be!==null?s.storedPackages.get(Be)??null:null;return pe.tuple(pe.Type.RESOLUTION,{descriptor:g,locator:me})}))}Rs.emitTree(O,{configuration:r,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};qe();Dt();Bc();var HT=et(Rd());Vt();var g5=et(pi());ul();var cot=[{selector:e=>e===-1,name:\"nodeLinker\",value:\"node-modules\"},{selector:e=>e!==-1&&e<8,name:\"enableGlobalCache\",value:!1},{selector:e=>e!==-1&&e<8,name:\"compressionLevel\",value:\"mixed\"}],pC=class extends At{constructor(){super(...arguments);this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.immutable=he.Boolean(\"--immutable\",{description:\"Abort with an error exit code if the lockfile was to be modified\"});this.immutableCache=he.Boolean(\"--immutable-cache\",{description:\"Abort with an error exit code if the cache folder was to be modified\"});this.refreshLockfile=he.Boolean(\"--refresh-lockfile\",{description:\"Refresh the package metadata stored in the lockfile\"});this.checkCache=he.Boolean(\"--check-cache\",{description:\"Always refetch the packages and ensure that their checksums are consistent\"});this.checkResolutions=he.Boolean(\"--check-resolutions\",{description:\"Validates that the package resolutions are coherent\"});this.inlineBuilds=he.Boolean(\"--inline-builds\",{description:\"Verbosely print the output of the build steps of dependencies\"});this.mode=he.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:ks(Na)});this.cacheFolder=he.String(\"--cache-folder\",{hidden:!0});this.frozenLockfile=he.Boolean(\"--frozen-lockfile\",{hidden:!0});this.ignoreEngines=he.Boolean(\"--ignore-engines\",{hidden:!0});this.nonInteractive=he.Boolean(\"--non-interactive\",{hidden:!0});this.preferOffline=he.Boolean(\"--prefer-offline\",{hidden:!0});this.production=he.Boolean(\"--production\",{hidden:!0});this.registry=he.String(\"--registry\",{hidden:!0});this.silent=he.Boolean(\"--silent\",{hidden:!0});this.networkTimeout=he.String(\"--network-timeout\",{hidden:!0})}static{this.paths=[[\"install\"],at.Default]}static{this.usage=at.Usage({description:\"install the project dependencies\",details:\"\\n      This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics:\\n\\n      - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ).\\n\\n      - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of `cacheFolder` in `yarn config` to see where the cache files are stored).\\n\\n      - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the `.pnp.cjs` file you might know).\\n\\n      - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail.\\n\\n      Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your `.pnp.cjs` file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches.\\n\\n      If the `--immutable` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the `immutablePatterns` configuration setting). For backward compatibility we offer an alias under the name of `--frozen-lockfile`, but it will be removed in a later release.\\n\\n      If the `--immutable-cache` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed).\\n\\n      If the `--refresh-lockfile` option is set, Yarn will keep the same resolution for the packages currently in the lockfile but will refresh their metadata. If used together with `--immutable`, it can validate that the lockfile information are consistent. This flag is enabled by default when Yarn detects it runs within a pull request context.\\n\\n      If the `--check-cache` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them.\\n\\n      If the `--inline-builds` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n    \",examples:[[\"Install the project\",\"$0 install\"],[\"Validate a project when using Zero-Installs\",\"$0 install --immutable --immutable-cache\"],[\"Validate a project when using Zero-Installs (slightly safer if you accept external PRs)\",\"$0 install --immutable --immutable-cache --check-cache\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<\"u\"&&r.useWithSource(\"<cli>\",{enableInlineBuilds:this.inlineBuilds},r.startingCwd,{overwrite:!0});let s=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,a=await PI({configuration:r,stdout:this.context.stdout},[{option:this.ignoreEngines,message:\"The --ignore-engines option is deprecated; engine checking isn't a core feature anymore\",error:!HT.default.VERCEL},{option:this.registry,message:\"The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file\"},{option:this.preferOffline,message:\"The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead\",error:!HT.default.VERCEL},{option:this.production,message:\"The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead\",error:!0},{option:this.nonInteractive,message:\"The --non-interactive option is deprecated\",error:!s},{option:this.frozenLockfile,message:\"The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead\",callback:()=>this.immutable=this.frozenLockfile},{option:this.cacheFolder,message:\"The cache-folder option has been deprecated; use rc settings instead\",error:!HT.default.NETLIFY}]);if(a!==null)return a;let n=this.mode===\"update-lockfile\";if(n&&(this.immutable||this.immutableCache))throw new st(`${pe.pretty(r,\"--immutable\",pe.Type.CODE)} and ${pe.pretty(r,\"--immutable-cache\",pe.Type.CODE)} cannot be used with ${pe.pretty(r,\"--mode=update-lockfile\",pe.Type.CODE)}`);let c=(this.immutable??r.get(\"enableImmutableInstalls\"))&&!n,f=this.immutableCache&&!n;if(r.projectCwd!==null){let T=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async O=>{let U=!1;await Aot(r,c)&&(O.reportInfo(48,\"Automatically removed core plugins that are now builtins \\u{1F44D}\"),U=!0),await fot(r,c)&&(O.reportInfo(48,\"Automatically fixed merge conflicts \\u{1F44D}\"),U=!0),U&&O.reportSeparator()});if(T.hasErrors())return T.exitCode()}if(r.projectCwd!==null){let T=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async O=>{if(ze.telemetry?.isNew)ze.telemetry.commitTips(),O.reportInfo(65,\"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry\"),O.reportInfo(65,`Run ${pe.pretty(r,\"yarn config set --home enableTelemetry 0\",pe.Type.CODE)} to disable`),O.reportSeparator();else if(ze.telemetry?.shouldShowTips){let U=await nn.get(\"https://repo.yarnpkg.com/tags\",{configuration:r,jsonResponse:!0}).catch(()=>null);if(U!==null){let Y=null;if(An!==null){let ie=g5.default.prerelease(An)?\"canary\":\"stable\",ue=U.latest[ie];ue!==null&&g5.default.gt(ue,An)&&(Y=[ie,ue])}if(Y)ze.telemetry.commitTips(),O.reportInfo(88,`${pe.applyStyle(r,`A new ${Y[0]} version of Yarn is available:`,pe.Style.BOLD)} ${j.prettyReference(r,Y[1])}!`),O.reportInfo(88,`Upgrade now by running ${pe.pretty(r,`yarn set version ${Y[1]}`,pe.Type.CODE)}`),O.reportSeparator();else{let te=ze.telemetry.selectTip(U.tips);te&&(O.reportInfo(89,pe.pretty(r,te.message,pe.Type.MARKDOWN_INLINE)),te.url&&O.reportInfo(89,`Learn more at ${te.url}`),O.reportSeparator())}}}});if(T.hasErrors())return T.exitCode()}let{project:p,workspace:h}=await Rt.find(r,this.context.cwd),E=p.lockfileLastVersion;if(E!==null){let T=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async O=>{let U={};for(let Y of cot)Y.selector(E)&&typeof r.sources.get(Y.name)>\"u\"&&(r.use(\"<compat>\",{[Y.name]:Y.value},p.cwd,{overwrite:!0}),U[Y.name]=Y.value);Object.keys(U).length>0&&(await ze.updateConfiguration(p.cwd,U),O.reportInfo(87,\"Migrated your project to the latest Yarn version \\u{1F680}\"),O.reportSeparator())});if(T.hasErrors())return T.exitCode()}let C=await Jr.find(r,{immutable:f,check:this.checkCache});if(!h)throw new ar(p.cwd,this.context.cwd);await p.restoreInstallState({restoreResolutions:!1});let S=r.get(\"enableHardenedMode\");S&&typeof r.sources.get(\"enableHardenedMode\")>\"u\"&&await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async T=>{T.reportWarning(0,\"Yarn detected that the current workflow is executed from a public pull request. For safety the hardened mode has been enabled.\"),T.reportWarning(0,`It will prevent malicious lockfile manipulations, in exchange for a slower install time. You can opt-out if necessary; check our ${pe.applyHyperlink(r,\"documentation\",\"https://yarnpkg.com/features/security#hardened-mode\")} for more details.`),T.reportSeparator()}),(this.refreshLockfile??S)&&(p.lockfileNeedsRefresh=!0);let x=this.checkResolutions??S;return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,forceSectionAlignment:!0,includeLogs:!0,includeVersion:!0},async T=>{await p.install({cache:C,report:T,immutable:c,checkResolutions:x,mode:this.mode})})).exitCode()}},uot=\"<<<<<<<\";async function fot(e,t){if(!e.projectCwd)return!1;let r=K.join(e.projectCwd,Er.lockfile);if(!await le.existsPromise(r)||!(await le.readFilePromise(r,\"utf8\")).includes(uot))return!1;if(t)throw new _t(47,\"Cannot autofix a lockfile when running an immutable install\");let a=await qr.execvp(\"git\",[\"rev-parse\",\"MERGE_HEAD\",\"HEAD\"],{cwd:e.projectCwd});if(a.code!==0&&(a=await qr.execvp(\"git\",[\"rev-parse\",\"REBASE_HEAD\",\"HEAD\"],{cwd:e.projectCwd})),a.code!==0&&(a=await qr.execvp(\"git\",[\"rev-parse\",\"CHERRY_PICK_HEAD\",\"HEAD\"],{cwd:e.projectCwd})),a.code!==0)throw new _t(83,\"Git returned an error when trying to find the commits pertaining to the conflict\");let n=await Promise.all(a.stdout.trim().split(/\\n/).map(async f=>{let p=await qr.execvp(\"git\",[\"show\",`${f}:./${Er.lockfile}`],{cwd:e.projectCwd});if(p.code!==0)throw new _t(83,`Git returned an error when trying to access the lockfile content in ${f}`);try{return cs(p.stdout)}catch{throw new _t(46,\"A variant of the conflicting lockfile failed to parse\")}}));n=n.filter(f=>!!f.__metadata);for(let f of n){if(f.__metadata.version<7)for(let p of Object.keys(f)){if(p===\"__metadata\")continue;let h=j.parseDescriptor(p,!0),E=e.normalizeDependency(h),C=j.stringifyDescriptor(E);C!==p&&(f[C]=f[p],delete f[p])}for(let p of Object.keys(f)){if(p===\"__metadata\")continue;let h=f[p].checksum;typeof h>\"u\"||h.includes(\"/\")||(f[p].checksum=`${f.__metadata.cacheKey}/${h}`)}}let c=Object.assign({},...n);c.__metadata.version=`${Math.min(...n.map(f=>parseInt(f.__metadata.version??0)))}`,c.__metadata.cacheKey=\"merged\";for(let[f,p]of Object.entries(c))typeof p==\"string\"&&delete c[f];return await le.changeFilePromise(r,cl(c),{automaticNewlines:!0}),!0}async function Aot(e,t){if(!e.projectCwd)return!1;let r=[],s=K.join(e.projectCwd,\".yarn/plugins/@yarnpkg\");return await ze.updateConfiguration(e.projectCwd,{plugins:n=>{if(!Array.isArray(n))return n;let c=n.filter(f=>{if(!f.path)return!0;let p=K.resolve(e.projectCwd,f.path),h=X2.has(f.spec)&&K.contains(s,p);return h&&r.push(p),!h});return c.length===0?ze.deleteProperty:c.length===n.length?n:c}},{immutable:t})?(await Promise.all(r.map(async n=>{await le.removePromise(n)})),!0):!1}qe();Dt();Vt();var hC=class extends At{constructor(){super(...arguments);this.all=he.Boolean(\"-A,--all\",!1,{description:\"Link all workspaces belonging to the target projects to the current one\"});this.private=he.Boolean(\"-p,--private\",!1,{description:\"Also link private workspaces belonging to the target projects to the current one\"});this.relative=he.Boolean(\"-r,--relative\",!1,{description:\"Link workspaces using relative paths instead of absolute paths\"});this.destinations=he.Rest()}static{this.paths=[[\"link\"]]}static{this.usage=at.Usage({description:\"connect the local project to another one\",details:\"\\n      This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\\n    \",examples:[[\"Register one or more remote workspaces for use in the current project\",\"$0 link ~/ts-loader ~/jest\"],[\"Register all workspaces from a remote project for use in the current project\",\"$0 link ~/jest --all\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=s.topLevelWorkspace,f=[];for(let p of this.destinations){let h=K.resolve(this.context.cwd,fe.toPortablePath(p)),E=await ze.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:C,workspace:S}=await Rt.find(E,h);if(s.cwd===C.cwd)throw new st(`Invalid destination '${p}'; Can't link the project to itself`);if(!S)throw new ar(C.cwd,h);if(this.all){let x=!1;for(let I of C.workspaces)I.manifest.name&&(!I.manifest.private||this.private)&&(f.push(I),x=!0);if(!x)throw new st(`No workspace found to be linked in the target project: ${p}`)}else{if(!S.manifest.name)throw new st(`The target workspace at '${p}' doesn't have a name and thus cannot be linked`);if(S.manifest.private&&!this.private)throw new st(`The target workspace at '${p}' is marked private - use the --private flag to link it anyway`);f.push(S)}}for(let p of f){let h=j.stringifyIdent(p.anchoredLocator),E=this.relative?K.relative(s.cwd,p.cwd):p.cwd;c.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${E}`})}return await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};Vt();var gC=class extends At{constructor(){super(...arguments);this.args=he.Proxy()}static{this.paths=[[\"node\"]]}static{this.usage=at.Usage({description:\"run node with the hook already setup\",details:`\n      This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment).\n\n      The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version.\n    `,examples:[[\"Run a Node script\",\"$0 node ./my-script.js\"]]})}async execute(){return this.cli.run([\"exec\",\"node\",...this.args])}};qe();Vt();var dC=class extends At{constructor(){super(...arguments);this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"plugin\",\"check\"]]}static{this.usage=at.Usage({category:\"Plugin-related commands\",description:\"find all third-party plugins that differ from their own spec\",details:`\n      Check only the plugins from https.\n\n      If this command detects any plugin differences in the CI environment, it will throw an error.\n    `,examples:[[\"find all third-party plugins that differ from their own spec\",\"$0 plugin check\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=await ze.findRcFiles(this.context.cwd);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{for(let c of s)if(c.data?.plugins)for(let f of c.data.plugins){if(!f.checksum||!f.spec.match(/^https?:/))continue;let p=await nn.get(f.spec,{configuration:r}),h=Ln.makeHash(p);if(f.checksum===h)continue;let E=pe.pretty(r,f.path,pe.Type.PATH),C=pe.pretty(r,f.spec,pe.Type.URL),S=`${E} is different from the file provided by ${C}`;n.reportJson({...f,newChecksum:h}),n.reportError(0,S)}})).exitCode()}};qe();qe();Dt();Vt();var fde=Ie(\"os\");qe();Dt();Vt();var ade=Ie(\"os\");qe();Bc();Vt();var pot=\"https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml\";async function Pm(e,t){let r=await nn.get(pot,{configuration:e}),s=cs(r.toString());return Object.fromEntries(Object.entries(s).filter(([a,n])=>!t||Fr.satisfiesWithPrereleases(t,n.range??\"<4.0.0-rc.1\")))}var mC=class extends At{constructor(){super(...arguments);this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"plugin\",\"list\"]]}static{this.usage=at.Usage({category:\"Plugin-related commands\",description:\"list the available official plugins\",details:\"\\n      This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\\n    \",examples:[[\"List the official plugins\",\"$0 plugin list\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{let n=await Pm(r,An);for(let[c,{experimental:f,...p}]of Object.entries(n)){let h=c;f&&(h+=\" [experimental]\"),a.reportJson({name:c,experimental:f,...p}),a.reportInfo(null,h)}})).exitCode()}};var hot=/^[0-9]+$/,got=process.platform===\"win32\";function lde(e){return hot.test(e)?`pull/${e}/head`:e}var dot=({repository:e,branch:t},r)=>[[\"git\",\"init\",fe.fromPortablePath(r)],[\"git\",\"remote\",\"add\",\"origin\",e],[\"git\",\"fetch\",\"origin\",\"--depth=1\",lde(t)],[\"git\",\"reset\",\"--hard\",\"FETCH_HEAD\"]],mot=({branch:e})=>[[\"git\",\"fetch\",\"origin\",\"--depth=1\",lde(e),\"--force\"],[\"git\",\"reset\",\"--hard\",\"FETCH_HEAD\"],[\"git\",\"clean\",\"-dfx\",\"-e\",\"packages/yarnpkg-cli/bundles\"]],yot=({plugins:e,noMinify:t},r,s)=>[[\"yarn\",\"build:cli\",...new Array().concat(...e.map(a=>[\"--plugin\",K.resolve(s,a)])),...t?[\"--no-minify\"]:[],\"|\"],[got?\"move\":\"mv\",\"packages/yarnpkg-cli/bundles/yarn.js\",fe.fromPortablePath(r),\"|\"]],yC=class extends At{constructor(){super(...arguments);this.installPath=he.String(\"--path\",{description:\"The path where the repository should be cloned to\"});this.repository=he.String(\"--repository\",\"https://github.com/yarnpkg/berry.git\",{description:\"The repository that should be cloned\"});this.branch=he.String(\"--branch\",\"master\",{description:\"The branch of the repository that should be cloned\"});this.plugins=he.Array(\"--plugin\",[],{description:\"An array of additional plugins that should be included in the bundle\"});this.dryRun=he.Boolean(\"-n,--dry-run\",!1,{description:\"If set, the bundle will be built but not added to the project\"});this.noMinify=he.Boolean(\"--no-minify\",!1,{description:\"Build a bundle for development (debugging) - non-minified and non-mangled\"});this.force=he.Boolean(\"-f,--force\",!1,{description:\"Always clone the repository instead of trying to fetch the latest commits\"});this.skipPlugins=he.Boolean(\"--skip-plugins\",!1,{description:\"Skip updating the contrib plugins\"})}static{this.paths=[[\"set\",\"version\",\"from\",\"sources\"]]}static{this.usage=at.Usage({description:\"build Yarn from master\",details:`\n      This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project.\n\n      By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \\`--skip-plugins\\` flag.\n    `,examples:[[\"Build Yarn from master\",\"$0 set version from sources\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd),a=typeof this.installPath<\"u\"?K.resolve(this.context.cwd,fe.toPortablePath(this.installPath)):K.resolve(fe.toPortablePath((0,ade.tmpdir)()),\"yarnpkg-sources\",Ln.makeHash(this.repository).slice(0,6));return(await Ot.start({configuration:r,stdout:this.context.stdout},async c=>{await d5(this,{configuration:r,report:c,target:a}),c.reportSeparator(),c.reportInfo(0,\"Building a fresh bundle\"),c.reportSeparator();let f=await qr.execvp(\"git\",[\"rev-parse\",\"--short\",\"HEAD\"],{cwd:a,strict:!0}),p=K.join(a,`packages/yarnpkg-cli/bundles/yarn-${f.stdout.trim()}.js`);le.existsSync(p)||(await $v(yot(this,p,a),{configuration:r,context:this.context,target:a}),c.reportSeparator());let h=await le.readFilePromise(p);if(!this.dryRun){let{bundleVersion:E}=await h5(r,null,async()=>h,{report:c});this.skipPlugins||await Eot(this,E,{project:s,report:c,target:a})}})).exitCode()}};async function $v(e,{configuration:t,context:r,target:s}){for(let[a,...n]of e){let c=n[n.length-1]===\"|\";if(c&&n.pop(),c)await qr.pipevp(a,n,{cwd:s,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${pe.pretty(t,`  $ ${[a,...n].join(\" \")}`,\"grey\")}\n`);try{await qr.execvp(a,n,{cwd:s,strict:!0})}catch(f){throw r.stdout.write(f.stdout||f.stack),f}}}}async function d5(e,{configuration:t,report:r,target:s}){let a=!1;if(!e.force&&le.existsSync(K.join(s,\".git\"))){r.reportInfo(0,\"Fetching the latest commits\"),r.reportSeparator();try{await $v(mot(e),{configuration:t,context:e.context,target:s}),a=!0}catch{r.reportSeparator(),r.reportWarning(0,\"Repository update failed; we'll try to regenerate it\")}}a||(r.reportInfo(0,\"Cloning the remote repository\"),r.reportSeparator(),await le.removePromise(s),await le.mkdirPromise(s,{recursive:!0}),await $v(dot(e,s),{configuration:t,context:e.context,target:s}))}async function Eot(e,t,{project:r,report:s,target:a}){let n=await Pm(r.configuration,t),c=new Set(Object.keys(n));for(let f of r.configuration.plugins.keys())c.has(f)&&await m5(f,e,{project:r,report:s,target:a})}qe();qe();Dt();Vt();var cde=et(pi()),ude=Ie(\"vm\");var EC=class extends At{constructor(){super(...arguments);this.name=he.String();this.checksum=he.Boolean(\"--checksum\",!0,{description:\"Whether to care if this plugin is modified\"})}static{this.paths=[[\"plugin\",\"import\"]]}static{this.usage=at.Usage({category:\"Plugin-related commands\",description:\"download a plugin\",details:`\n      This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations.\n\n      Three types of plugin references are accepted:\n\n      - If the plugin is stored within the Yarn repository, it can be referenced by name.\n      - Third-party plugins can be referenced directly through their public urls.\n      - Local plugins can be referenced by their path on the disk.\n\n      If the \\`--no-checksum\\` option is set, Yarn will no longer care if the plugin is modified.\n\n      Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \\`@yarnpkg/builder\\` package).\n    `,examples:[['Download and activate the \"@yarnpkg/plugin-exec\" plugin',\"$0 plugin import @yarnpkg/plugin-exec\"],['Download and activate the \"@yarnpkg/plugin-exec\" plugin (shorthand)',\"$0 plugin import exec\"],[\"Download and activate a community plugin\",\"$0 plugin import https://example.org/path/to/plugin.js\"],[\"Activate a local plugin\",\"$0 plugin import ./path/to/plugin.js\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,stdout:this.context.stdout},async a=>{let{project:n}=await Rt.find(r,this.context.cwd),c,f;if(this.name.match(/^\\.{0,2}[\\\\/]/)||fe.isAbsolute(this.name)){let p=K.resolve(this.context.cwd,fe.toPortablePath(this.name));a.reportInfo(0,`Reading ${pe.pretty(r,p,pe.Type.PATH)}`),c=K.relative(n.cwd,p),f=await le.readFilePromise(p)}else{let p;if(this.name.match(/^https?:/)){try{new URL(this.name)}catch{throw new _t(52,`Plugin specifier \"${this.name}\" is neither a plugin name nor a valid url`)}c=this.name,p=this.name}else{let h=j.parseLocator(this.name.replace(/^((@yarnpkg\\/)?plugin-)?/,\"@yarnpkg/plugin-\"));if(h.reference!==\"unknown\"&&!cde.default.valid(h.reference))throw new _t(0,\"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.\");let E=j.stringifyIdent(h),C=await Pm(r,An);if(!Object.hasOwn(C,E)){let S=`Couldn't find a plugin named ${j.prettyIdent(r,h)} on the remote registry.\n`;throw r.plugins.has(E)?S+=`A plugin named ${j.prettyIdent(r,h)} is already installed; possibly attempting to import a built-in plugin.`:S+=`Note that only the plugins referenced on our website (${pe.pretty(r,\"https://github.com/yarnpkg/berry/blob/master/plugins.yml\",pe.Type.URL)}) can be referenced by their name; any other plugin will have to be referenced through its public url (for example ${pe.pretty(r,\"https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js\",pe.Type.URL)}).`,new _t(51,S)}c=E,p=C[E].url,h.reference!==\"unknown\"?p=p.replace(/\\/master\\//,`/${E}/${h.reference}/`):An!==null&&(p=p.replace(/\\/master\\//,`/@yarnpkg/cli/${An}/`))}a.reportInfo(0,`Downloading ${pe.pretty(r,p,\"green\")}`),f=await nn.get(p,{configuration:r})}await y5(c,f,{checksum:this.checksum,project:n,report:a})})).exitCode()}};async function y5(e,t,{checksum:r=!0,project:s,report:a}){let{configuration:n}=s,c={},f={exports:c};(0,ude.runInNewContext)(t.toString(),{module:f,exports:c});let h=`.yarn/plugins/${f.exports.name}.cjs`,E=K.resolve(s.cwd,h);a.reportInfo(0,`Saving the new plugin in ${pe.pretty(n,h,\"magenta\")}`),await le.mkdirPromise(K.dirname(E),{recursive:!0}),await le.writeFilePromise(E,t);let C={path:h,spec:e};r&&(C.checksum=Ln.makeHash(t)),await ze.addPlugin(s.cwd,[C])}var Iot=({pluginName:e,noMinify:t},r)=>[[\"yarn\",`build:${e}`,...t?[\"--no-minify\"]:[],\"|\"]],IC=class extends At{constructor(){super(...arguments);this.installPath=he.String(\"--path\",{description:\"The path where the repository should be cloned to\"});this.repository=he.String(\"--repository\",\"https://github.com/yarnpkg/berry.git\",{description:\"The repository that should be cloned\"});this.branch=he.String(\"--branch\",\"master\",{description:\"The branch of the repository that should be cloned\"});this.noMinify=he.Boolean(\"--no-minify\",!1,{description:\"Build a plugin for development (debugging) - non-minified and non-mangled\"});this.force=he.Boolean(\"-f,--force\",!1,{description:\"Always clone the repository instead of trying to fetch the latest commits\"});this.name=he.String()}static{this.paths=[[\"plugin\",\"import\",\"from\",\"sources\"]]}static{this.usage=at.Usage({category:\"Plugin-related commands\",description:\"build a plugin from sources\",details:`\n      This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations.\n\n      The plugins can be referenced by their short name if sourced from the official Yarn repository.\n    `,examples:[['Build and activate the \"@yarnpkg/plugin-exec\" plugin',\"$0 plugin import from sources @yarnpkg/plugin-exec\"],['Build and activate the \"@yarnpkg/plugin-exec\" plugin (shorthand)',\"$0 plugin import from sources exec\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=typeof this.installPath<\"u\"?K.resolve(this.context.cwd,fe.toPortablePath(this.installPath)):K.resolve(fe.toPortablePath((0,fde.tmpdir)()),\"yarnpkg-sources\",Ln.makeHash(this.repository).slice(0,6));return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let{project:c}=await Rt.find(r,this.context.cwd),f=j.parseIdent(this.name.replace(/^((@yarnpkg\\/)?plugin-)?/,\"@yarnpkg/plugin-\")),p=j.stringifyIdent(f),h=await Pm(r,An);if(!Object.hasOwn(h,p))throw new _t(51,`Couldn't find a plugin named \"${p}\" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let E=p;await d5(this,{configuration:r,report:n,target:s}),await m5(E,this,{project:c,report:n,target:s})})).exitCode()}};async function m5(e,{context:t,noMinify:r},{project:s,report:a,target:n}){let c=e.replace(/@yarnpkg\\//,\"\"),{configuration:f}=s;a.reportSeparator(),a.reportInfo(0,`Building a fresh ${c}`),a.reportSeparator(),await $v(Iot({pluginName:c,noMinify:r},n),{configuration:f,context:t,target:n}),a.reportSeparator();let p=K.resolve(n,`packages/${c}/bundles/${e}.js`),h=await le.readFilePromise(p);await y5(e,h,{project:s,report:a})}qe();Dt();Vt();var CC=class extends At{constructor(){super(...arguments);this.name=he.String()}static{this.paths=[[\"plugin\",\"remove\"]]}static{this.usage=at.Usage({category:\"Plugin-related commands\",description:\"remove a plugin\",details:`\n      This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration.\n\n      **Note:** The plugins have to be referenced by their name property, which can be obtained using the \\`yarn plugin runtime\\` command. Shorthands are not allowed.\n   `,examples:[[\"Remove a plugin imported from the Yarn repository\",\"$0 plugin remove @yarnpkg/plugin-typescript\"],[\"Remove a plugin imported from a local file\",\"$0 plugin remove my-local-plugin\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd);return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let c=this.name,f=j.parseIdent(c);if(!r.plugins.has(c))throw new st(`${j.prettyIdent(r,f)} isn't referenced by the current configuration`);let p=`.yarn/plugins/${c}.cjs`,h=K.resolve(s.cwd,p);le.existsSync(h)&&(n.reportInfo(0,`Removing ${pe.pretty(r,p,pe.Type.PATH)}...`),await le.removePromise(h)),n.reportInfo(0,\"Updating the configuration...\"),await ze.updateConfiguration(s.cwd,{plugins:E=>{if(!Array.isArray(E))return E;let C=E.filter(S=>S.path!==p);return C.length===0?ze.deleteProperty:C.length===E.length?E:C}})})).exitCode()}};qe();Vt();var wC=class extends At{constructor(){super(...arguments);this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"plugin\",\"runtime\"]]}static{this.usage=at.Usage({category:\"Plugin-related commands\",description:\"list the active plugins\",details:`\n      This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins.\n    `,examples:[[\"List the currently active plugins\",\"$0 plugin runtime\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{for(let n of r.plugins.keys()){let c=this.context.plugins.plugins.has(n),f=n;c&&(f+=\" [builtin]\"),a.reportJson({name:n,builtin:c}),a.reportInfo(null,`${f}`)}})).exitCode()}};qe();qe();Vt();var BC=class extends At{constructor(){super(...arguments);this.idents=he.Rest()}static{this.paths=[[\"rebuild\"]]}static{this.usage=at.Usage({description:\"rebuild the project's native packages\",details:`\n      This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again.\n\n      Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future).\n\n      By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory.\n    `,examples:[[\"Rebuild all packages\",\"$0 rebuild\"],[\"Rebuild fsevents only\",\"$0 rebuild fsevents\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);let c=new Set;for(let f of this.idents)c.add(j.parseIdent(f).identHash);if(await s.restoreInstallState({restoreResolutions:!1}),await s.resolveEverything({cache:n,report:new ki}),c.size>0)for(let f of s.storedPackages.values())c.has(f.identHash)&&(s.storedBuildState.delete(f.locatorHash),s.skippedBuilds.delete(f.locatorHash));else s.storedBuildState.clear(),s.skippedBuilds.clear();return await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};qe();qe();qe();Vt();var E5=et(Jo());ul();var vC=class extends At{constructor(){super(...arguments);this.all=he.Boolean(\"-A,--all\",!1,{description:\"Apply the operation to all workspaces from the current project\"});this.mode=he.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:ks(Na)});this.patterns=he.Rest()}static{this.paths=[[\"remove\"]]}static{this.usage=at.Usage({description:\"remove dependencies from the project\",details:`\n      This command will remove the packages matching the specified patterns from the current workspace.\n\n      If the \\`--mode=<mode>\\` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n      - \\`skip-build\\` will not run the build scripts at all. Note that this is different from setting \\`enableScripts\\` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n      - \\`update-lockfile\\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n      This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n    `,examples:[[\"Remove a dependency from the current project\",\"$0 remove lodash\"],[\"Remove a dependency from all workspaces at once\",\"$0 remove lodash --all\"],[\"Remove all dependencies starting with `eslint-`\",\"$0 remove 'eslint-*'\"],[\"Remove all dependencies with the `@babel` scope\",\"$0 remove '@babel/*'\"],[\"Remove all dependencies matching `react-dom` or `react-helmet`\",\"$0 remove 'react-{dom,helmet}'\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.all?s.workspaces:[a],f=[\"dependencies\",\"devDependencies\",\"peerDependencies\"],p=[],h=!1,E=[];for(let I of this.patterns){let T=!1,O=j.parseIdent(I);for(let U of c){let Y=[...U.manifest.peerDependenciesMeta.keys()];for(let te of(0,E5.default)(Y,I))U.manifest.peerDependenciesMeta.delete(te),h=!0,T=!0;for(let te of f){let ie=U.manifest.getForScope(te),ue=[...ie.values()].map(ae=>j.stringifyIdent(ae));for(let ae of(0,E5.default)(ue,j.stringifyIdent(O))){let{identHash:de}=j.parseIdent(ae),Ae=ie.get(de);if(typeof Ae>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");U.manifest[te].delete(de),E.push([U,te,Ae]),h=!0,T=!0}}}T||p.push(I)}let C=p.length>1?\"Patterns\":\"Pattern\",S=p.length>1?\"don't\":\"doesn't\",x=this.all?\"any\":\"this\";if(p.length>0)throw new st(`${C} ${pe.prettyList(r,p,pe.Type.CODE)} ${S} match any packages referenced by ${x} workspace`);return h?(await r.triggerMultipleHooks(I=>I.afterWorkspaceDependencyRemoval,E),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})):0}};qe();qe();Vt();var Ade=Ie(\"util\"),SC=class extends At{constructor(){super(...arguments);this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"run\"]]}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);return(await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async c=>{let f=a.manifest.scripts,p=Ge.sortMap(f.keys(),C=>C),h={breakLength:1/0,colors:r.get(\"enableColors\"),maxArrayLength:2},E=p.reduce((C,S)=>Math.max(C,S.length),0);for(let[C,S]of f.entries())c.reportInfo(null,`${C.padEnd(E,\" \")}   ${(0,Ade.inspect)(S,h)}`),c.reportJson({name:C,script:S})})).exitCode()}};qe();qe();Vt();var DC=class extends At{constructor(){super(...arguments);this.inspect=he.String(\"--inspect\",!1,{tolerateBoolean:!0,description:\"Forwarded to the underlying Node process when executing a binary\"});this.inspectBrk=he.String(\"--inspect-brk\",!1,{tolerateBoolean:!0,description:\"Forwarded to the underlying Node process when executing a binary\"});this.topLevel=he.Boolean(\"-T,--top-level\",!1,{description:\"Check the root workspace for scripts and/or binaries instead of the current one\"});this.binariesOnly=he.Boolean(\"-B,--binaries-only\",!1,{description:\"Ignore any user defined scripts and only check for binaries\"});this.require=he.String(\"--require\",{description:\"Forwarded to the underlying Node process when executing a binary\"});this.silent=he.Boolean(\"--silent\",{hidden:!0});this.scriptName=he.String();this.args=he.Proxy()}static{this.paths=[[\"run\"]]}static{this.usage=at.Usage({description:\"run a script defined in the package.json\",details:`\n      This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace:\n\n      - If the \\`scripts\\` field from your local package.json contains a matching script name, its definition will get executed.\n\n      - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed.\n\n      - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed.\n\n      Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax).\n    `,examples:[[\"Run the tests from the local workspace\",\"$0 run test\"],['Same thing, but without the \"run\" keyword',\"$0 test\"],[\"Inspect Webpack while running\",\"$0 run --inspect-brk webpack\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a,locator:n}=await Rt.find(r,this.context.cwd);await s.restoreInstallState();let c=this.topLevel?s.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await Cn.hasPackageScript(c,this.scriptName,{project:s}))return await Cn.executePackageScript(c,this.scriptName,this.args,{project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let f=await Cn.getPackageAccessibleBinaries(c,{project:s});if(f.get(this.scriptName)){let h=[];return this.inspect&&(typeof this.inspect==\"string\"?h.push(`--inspect=${this.inspect}`):h.push(\"--inspect\")),this.inspectBrk&&(typeof this.inspectBrk==\"string\"?h.push(`--inspect-brk=${this.inspectBrk}`):h.push(\"--inspect-brk\")),this.require&&h.push(`--require=${this.require}`),await Cn.executePackageAccessibleBinary(c,this.scriptName,this.args,{cwd:this.context.cwd,project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:h,packageAccessibleBinaries:f})}if(!this.topLevel&&!this.binariesOnly&&a&&this.scriptName.includes(\":\")){let E=(await Promise.all(s.workspaces.map(async C=>C.manifest.scripts.has(this.scriptName)?C:null))).filter(C=>C!==null);if(E.length===1)return await Cn.executeWorkspaceScript(E[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName===\"node-gyp\"?new st(`Couldn't find a script name \"${this.scriptName}\" in the top-level (used by ${j.prettyLocator(r,n)}). This typically happens because some package depends on \"node-gyp\" to build itself, but didn't list it in their dependencies. To fix that, please run \"yarn add node-gyp\" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new st(`Couldn't find a script name \"${this.scriptName}\" in the top-level (used by ${j.prettyLocator(r,n)}).`);{if(this.scriptName===\"global\")throw new st(\"The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead\");let h=[this.scriptName].concat(this.args);for(let[E,C]of qI)for(let S of C)if(h.length>=S.length&&JSON.stringify(h.slice(0,S.length))===JSON.stringify(S))throw new st(`Couldn't find a script named \"${this.scriptName}\", but a matching command can be found in the ${E} plugin. You can install it with \"yarn plugin import ${E}\".`);throw new st(`Couldn't find a script named \"${this.scriptName}\".`)}}};qe();qe();Vt();var bC=class extends At{constructor(){super(...arguments);this.descriptor=he.String();this.resolution=he.String()}static{this.paths=[[\"set\",\"resolution\"]]}static{this.usage=at.Usage({description:\"enforce a package resolution\",details:'\\n      This command updates the resolution table so that `descriptor` is resolved by `resolution`.\\n\\n      Note that by default this command only affect the current resolution table - meaning that this \"manual override\" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, edit the `resolutions` field in your top-level manifest.\\n\\n      Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\\n    ',examples:[[\"Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0\",\"$0 set resolution lodash@npm:^1.2.3 npm:1.5.0\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(await s.restoreInstallState({restoreResolutions:!1}),!a)throw new ar(s.cwd,this.context.cwd);let c=j.parseDescriptor(this.descriptor,!0),f=j.makeDescriptor(c,this.resolution);return s.storedDescriptors.set(c.descriptorHash,c),s.storedDescriptors.set(f.descriptorHash,f),s.resolutionAliases.set(c.descriptorHash,f.descriptorHash),await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};qe();Dt();Vt();var pde=et(Jo()),PC=class extends At{constructor(){super(...arguments);this.all=he.Boolean(\"-A,--all\",!1,{description:\"Unlink all workspaces belonging to the target project from the current one\"});this.leadingArguments=he.Rest()}static{this.paths=[[\"unlink\"]]}static{this.usage=at.Usage({description:\"disconnect the local project from another one\",details:`\n      This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments.\n    `,examples:[[\"Unregister a remote workspace in the current project\",\"$0 unlink ~/ts-loader\"],[\"Unregister all workspaces from a remote project in the current project\",\"$0 unlink ~/jest --all\"],[\"Unregister all previously linked workspaces\",\"$0 unlink --all\"],[\"Unregister all workspaces matching a glob\",\"$0 unlink '@babel/*' 'pkg-{a,b}'\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);let c=s.topLevelWorkspace,f=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:p,reference:h}of c.manifest.resolutions)h.startsWith(\"portal:\")&&f.add(p.descriptor.fullName);if(this.leadingArguments.length>0)for(let p of this.leadingArguments){let h=K.resolve(this.context.cwd,fe.toPortablePath(p));if(Ge.isPathLike(p)){let E=await ze.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:C,workspace:S}=await Rt.find(E,h);if(!S)throw new ar(C.cwd,h);if(this.all){for(let x of C.workspaces)x.manifest.name&&f.add(j.stringifyIdent(x.anchoredLocator));if(f.size===0)throw new st(\"No workspace found to be unlinked in the target project\")}else{if(!S.manifest.name)throw new st(\"The target workspace doesn't have a name and thus cannot be unlinked\");f.add(j.stringifyIdent(S.anchoredLocator))}}else{let E=[...c.manifest.resolutions.map(({pattern:C})=>C.descriptor.fullName)];for(let C of(0,pde.default)(E,p))f.add(C)}}return c.manifest.resolutions=c.manifest.resolutions.filter(({pattern:p})=>!f.has(p.descriptor.fullName)),await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};qe();qe();qe();Vt();var hde=et(Yv()),I5=et(Jo());ul();var xC=class extends At{constructor(){super(...arguments);this.interactive=he.Boolean(\"-i,--interactive\",{description:\"Offer various choices, depending on the detected upgrade paths\"});this.fixed=he.Boolean(\"-F,--fixed\",!1,{description:\"Store dependency tags as-is instead of resolving them\"});this.exact=he.Boolean(\"-E,--exact\",!1,{description:\"Don't use any semver modifier on the resolved range\"});this.tilde=he.Boolean(\"-T,--tilde\",!1,{description:\"Use the `~` semver modifier on the resolved range\"});this.caret=he.Boolean(\"-C,--caret\",!1,{description:\"Use the `^` semver modifier on the resolved range\"});this.recursive=he.Boolean(\"-R,--recursive\",!1,{description:\"Resolve again ALL resolutions for those packages\"});this.mode=he.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:ks(Na)});this.patterns=he.Rest()}static{this.paths=[[\"up\"]]}static{this.usage=at.Usage({description:\"upgrade dependencies across the project\",details:\"\\n      This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\\n\\n      If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\\n\\n      If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\\n\\n      The, `-C,--caret`, `-E,--exact` and  `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n\\n      Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\\n\\n      This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\\n\\n      **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\\n    \",examples:[[\"Upgrade all instances of lodash to the latest release\",\"$0 up lodash\"],[\"Upgrade all instances of lodash to the latest release, but ask confirmation for each\",\"$0 up lodash -i\"],[\"Upgrade all instances of lodash to 1.2.3\",\"$0 up lodash@1.2.3\"],[\"Upgrade all instances of packages with the `@babel` scope to the latest release\",\"$0 up '@babel/*'\"],[\"Upgrade all instances of packages containing the word `jest` to the latest release\",\"$0 up '*jest*'\"],[\"Upgrade all instances of packages with the `@babel` scope to 7.0.0\",\"$0 up '@babel/*@7.0.0'\"]]})}static{this.schema=[YB(\"recursive\",Vf.Forbids,[\"interactive\",\"exact\",\"tilde\",\"caret\"],{ignore:[void 0,!1]})]}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=[...s.storedDescriptors.values()],f=c.map(E=>j.stringifyIdent(E)),p=new Set;for(let E of this.patterns){if(j.parseDescriptor(E).range!==\"unknown\")throw new st(\"Ranges aren't allowed when using --recursive\");for(let C of(0,I5.default)(f,E)){let S=j.parseIdent(C);p.add(S.identHash)}}let h=c.filter(E=>p.has(E.identHash));for(let E of h)s.storedDescriptors.delete(E.descriptorHash),s.storedResolutions.delete(E.descriptorHash);return await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}async executeUpClassic(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=r.isInteractive({interactive:this.interactive,stdout:this.context.stdout}),p=Jv(this,s),h=f?[\"keep\",\"reuse\",\"project\",\"latest\"]:[\"project\",\"latest\"],E=[],C=[];for(let O of this.patterns){let U=!1,Y=j.parseDescriptor(O),te=j.stringifyIdent(Y);for(let ie of s.workspaces)for(let ue of[\"dependencies\",\"devDependencies\"]){let de=[...ie.manifest.getForScope(ue).values()].map(Ce=>j.stringifyIdent(Ce)),Ae=te===\"*\"?de:(0,I5.default)(de,te);for(let Ce of Ae){let Ee=j.parseIdent(Ce),g=ie.manifest[ue].get(Ee.identHash);if(typeof g>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");let Se=j.makeDescriptor(Ee,Y.range);E.push(Promise.resolve().then(async()=>[ie,ue,g,await zv(Se,{project:s,workspace:ie,cache:n,target:ue,fixed:c,modifier:p,strategies:h})])),U=!0}}U||C.push(O)}if(C.length>1)throw new st(`Patterns ${pe.prettyList(r,C,pe.Type.CODE)} don't match any packages referenced by any workspace`);if(C.length>0)throw new st(`Pattern ${pe.prettyList(r,C,pe.Type.CODE)} doesn't match any packages referenced by any workspace`);let S=await Promise.all(E),x=await cA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async O=>{for(let[,,U,{suggestions:Y,rejections:te}]of S){let ie=Y.filter(ue=>ue.descriptor!==null);if(ie.length===0){let[ue]=te;if(typeof ue>\"u\")throw new Error(\"Assertion failed: Expected an error to have been set\");let ae=this.cli.error(ue);s.configuration.get(\"enableNetwork\")?O.reportError(27,`${j.prettyDescriptor(r,U)} can't be resolved to a satisfying range\n\n${ae}`):O.reportError(27,`${j.prettyDescriptor(r,U)} can't be resolved to a satisfying range (note: network resolution has been disabled)\n\n${ae}`)}else ie.length>1&&!f&&O.reportError(27,`${j.prettyDescriptor(r,U)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(x.hasErrors())return x.exitCode();let I=!1,T=[];for(let[O,U,,{suggestions:Y}]of S){let te,ie=Y.filter(Ae=>Ae.descriptor!==null),ue=ie[0].descriptor,ae=ie.every(Ae=>j.areDescriptorsEqual(Ae.descriptor,ue));ie.length===1||ae?te=ue:(I=!0,{answer:te}=await(0,hde.prompt)({type:\"select\",name:\"answer\",message:`Which range do you want to use in ${j.prettyWorkspace(r,O)} \\u276F ${U}?`,choices:Y.map(({descriptor:Ae,name:Ce,reason:Ee})=>Ae?{name:Ce,hint:Ee,descriptor:Ae}:{name:Ce,hint:Ee,disabled:!0}),onCancel:()=>process.exit(130),result(Ae){return this.find(Ae,\"descriptor\")},stdin:this.context.stdin,stdout:this.context.stdout}));let de=O.manifest[U].get(te.identHash);if(typeof de>\"u\")throw new Error(\"Assertion failed: This descriptor should have a matching entry\");if(de.descriptorHash!==te.descriptorHash)O.manifest[U].set(te.identHash,te),T.push([O,U,de,te]);else{let Ae=r.makeResolver(),Ce={project:s,resolver:Ae},Ee=r.normalizeDependency(de),g=Ae.bindDescriptor(Ee,O.anchoredLocator,Ce);s.forgetResolution(g)}}return await r.triggerMultipleHooks(O=>O.afterWorkspaceDependencyReplacement,T),I&&this.context.stdout.write(`\n`),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}};qe();qe();qe();Vt();var kC=class extends At{constructor(){super(...arguments);this.recursive=he.Boolean(\"-R,--recursive\",!1,{description:\"List, for each workspace, what are all the paths that lead to the dependency\"});this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.peers=he.Boolean(\"--peers\",!1,{description:\"Also print the peer dependencies that match the specified name\"});this.package=he.String()}static{this.paths=[[\"why\"]]}static{this.usage=at.Usage({description:\"display the reason why a package is needed\",details:`\n      This command prints the exact reasons why a package appears in the dependency tree.\n\n      If \\`-R,--recursive\\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named \"Foo\" when looking for \"Bar\", it means that \"Foo\" already got printed higher in the tree.\n    `,examples:[[\"Explain why lodash is used in your project\",\"$0 why lodash\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=j.parseIdent(this.package).identHash,c=this.recursive?wot(s,n,{configuration:r,peers:this.peers}):Cot(s,n,{configuration:r,peers:this.peers});Rs.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1})}};function Cot(e,t,{configuration:r,peers:s}){let a=Ge.sortMap(e.storedPackages.values(),f=>j.stringifyLocator(f)),n={},c={children:n};for(let f of a){let p={};for(let E of f.dependencies.values()){if(!s&&f.peerDependencies.has(E.identHash))continue;let C=e.storedResolutions.get(E.descriptorHash);if(!C)throw new Error(\"Assertion failed: The resolution should have been registered\");let S=e.storedPackages.get(C);if(!S)throw new Error(\"Assertion failed: The package should have been registered\");if(S.identHash!==t)continue;{let I=j.stringifyLocator(f);n[I]={value:[f,pe.Type.LOCATOR],children:p}}let x=j.stringifyLocator(S);p[x]={value:[{descriptor:E,locator:S},pe.Type.DEPENDENT]}}}return c}function wot(e,t,{configuration:r,peers:s}){let a=Ge.sortMap(e.workspaces,S=>j.stringifyLocator(S.anchoredLocator)),n=new Set,c=new Set,f=S=>{if(n.has(S.locatorHash))return c.has(S.locatorHash);if(n.add(S.locatorHash),S.identHash===t)return c.add(S.locatorHash),!0;let x=!1;S.identHash===t&&(x=!0);for(let I of S.dependencies.values()){if(!s&&S.peerDependencies.has(I.identHash))continue;let T=e.storedResolutions.get(I.descriptorHash);if(!T)throw new Error(\"Assertion failed: The resolution should have been registered\");let O=e.storedPackages.get(T);if(!O)throw new Error(\"Assertion failed: The package should have been registered\");f(O)&&(x=!0)}return x&&c.add(S.locatorHash),x};for(let S of a)f(S.anchoredPackage);let p=new Set,h={},E={children:h},C=(S,x,I)=>{if(!c.has(S.locatorHash))return;let T=I!==null?pe.tuple(pe.Type.DEPENDENT,{locator:S,descriptor:I}):pe.tuple(pe.Type.LOCATOR,S),O={},U={value:T,children:O},Y=j.stringifyLocator(S);if(x[Y]=U,!(I!==null&&e.tryWorkspaceByLocator(S))&&!p.has(S.locatorHash)){p.add(S.locatorHash);for(let te of S.dependencies.values()){if(!s&&S.peerDependencies.has(te.identHash))continue;let ie=e.storedResolutions.get(te.descriptorHash);if(!ie)throw new Error(\"Assertion failed: The resolution should have been registered\");let ue=e.storedPackages.get(ie);if(!ue)throw new Error(\"Assertion failed: The package should have been registered\");C(ue,O,te)}}};for(let S of a)C(S.anchoredPackage,h,null);return E}qe();var k5={};Yt(k5,{GitFetcher:()=>tS,GitResolver:()=>rS,default:()=>Got,gitUtils:()=>Oa});qe();Dt();var Oa={};Yt(Oa,{TreeishProtocols:()=>eS,clone:()=>x5,fetchBase:()=>Nde,fetchChangedFiles:()=>Ode,fetchChangedWorkspaces:()=>Hot,fetchRoot:()=>Fde,isGitUrl:()=>TC,lsRemote:()=>Tde,normalizeLocator:()=>_ot,normalizeRepoUrl:()=>QC,resolveUrl:()=>P5,splitRepoUrl:()=>G0,validateRepoUrl:()=>b5});qe();Dt();Vt();Jl();var Qde=et(Pde()),RC=et(Ie(\"querystring\")),S5=et(pi());function v5(e,t,r){let s=e.indexOf(r);return e.lastIndexOf(t,s>-1?s:1/0)}function xde(e){try{return new URL(e)}catch{return}}function Mot(e){let t=v5(e,\"@\",\"#\"),r=v5(e,\":\",\"#\");return r>t&&(e=`${e.slice(0,r)}/${e.slice(r+1)}`),v5(e,\":\",\"#\")===-1&&e.indexOf(\"//\")===-1&&(e=`ssh://${e}`),e}function kde(e){return xde(e)||xde(Mot(e))}function QC(e,{git:t=!1}={}){if(e=e.replace(/^git\\+https:/,\"https:\"),e=e.replace(/^(?:github:|https:\\/\\/github\\.com\\/|git:\\/\\/github\\.com\\/)?(?!\\.{1,2}\\/)([a-zA-Z0-9._-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\\.git)?(#.*)?$/,\"https://github.com/$1/$2.git$3\"),e=e.replace(/^https:\\/\\/github\\.com\\/(?!\\.{1,2}\\/)([a-zA-Z0-9._-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\\/tarball\\/(.+)?$/,\"https://github.com/$1/$2.git#$3\"),t){let r=kde(e);r&&(e=r.href),e=e.replace(/^git\\+([^:]+):/,\"$1:\")}return e}function Rde(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||\"ssh\"} -o BatchMode=yes`}}var Uot=[/^ssh:/,/^git(?:\\+[^:]+)?:/,/^(?:git\\+)?https?:[^#]+\\/[^#]+(?:\\.git)(?:#.*)?$/,/^git@[^#]+\\/[^#]+\\.git(?:#.*)?$/,/^(?:github:|https:\\/\\/github\\.com\\/)?(?!\\.{1,2}\\/)([a-zA-Z._0-9-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\\.git)?(?:#.*)?$/,/^https:\\/\\/github\\.com\\/(?!\\.{1,2}\\/)([a-zA-Z0-9._-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\\/tarball\\/(.+)?$/],eS=(a=>(a.Commit=\"commit\",a.Head=\"head\",a.Tag=\"tag\",a.Semver=\"semver\",a))(eS||{});function TC(e){return e?Uot.some(t=>!!e.match(t)):!1}function G0(e){e=QC(e);let t=e.indexOf(\"#\");if(t===-1)return{repo:e,treeish:{protocol:\"head\",request:\"HEAD\"},extra:{}};let r=e.slice(0,t),s=e.slice(t+1);if(s.match(/^[a-z]+=/)){let a=RC.default.parse(s);for(let[p,h]of Object.entries(a))if(typeof h!=\"string\")throw new Error(`Assertion failed: The ${p} parameter must be a literal string`);let n=Object.values(eS).find(p=>Object.hasOwn(a,p)),[c,f]=typeof n<\"u\"?[n,a[n]]:[\"head\",\"HEAD\"];for(let p of Object.values(eS))delete a[p];return{repo:r,treeish:{protocol:c,request:f},extra:a}}else{let a=s.indexOf(\":\"),[n,c]=a===-1?[null,s]:[s.slice(0,a),s.slice(a+1)];return{repo:r,treeish:{protocol:n,request:c},extra:{}}}}function _ot(e){return j.makeLocator(e,QC(e.reference))}function b5(e,{configuration:t}){let r=QC(e,{git:!0});if(!nn.getNetworkSettings(`https://${(0,Qde.default)(r).resource}`,{configuration:t}).enableNetwork)throw new _t(80,`Request to '${r}' has been blocked because of your configuration settings`);return r}async function Tde(e,t){let r=b5(e,{configuration:t}),s=await D5(\"listing refs\",[\"ls-remote\",r],{cwd:t.startingCwd,env:Rde()},{configuration:t,normalizedRepoUrl:r}),a=new Map,n=/^([a-f0-9]{40})\\t([^\\n]+)/gm,c;for(;(c=n.exec(s.stdout))!==null;)a.set(c[2],c[1]);return a}async function P5(e,t){let{repo:r,treeish:{protocol:s,request:a},extra:n}=G0(e),c=await Tde(r,t),f=(h,E)=>{switch(h){case\"commit\":{if(!E.match(/^[a-f0-9]{40}$/))throw new Error(\"Invalid commit hash\");return RC.default.stringify({...n,commit:E})}case\"head\":{let C=c.get(E===\"HEAD\"?E:`refs/heads/${E}`);if(typeof C>\"u\")throw new Error(`Unknown head (\"${E}\")`);return RC.default.stringify({...n,commit:C})}case\"tag\":{let C=c.get(`refs/tags/${E}`);if(typeof C>\"u\")throw new Error(`Unknown tag (\"${E}\")`);return RC.default.stringify({...n,commit:C})}case\"semver\":{let C=Fr.validRange(E);if(!C)throw new Error(`Invalid range (\"${E}\")`);let S=new Map([...c.entries()].filter(([I])=>I.startsWith(\"refs/tags/\")).map(([I,T])=>[S5.default.parse(I.slice(10)),T]).filter(I=>I[0]!==null)),x=S5.default.maxSatisfying([...S.keys()],C);if(x===null)throw new Error(`No matching range (\"${E}\")`);return RC.default.stringify({...n,commit:S.get(x)})}case null:{let C;if((C=p(\"commit\",E))!==null||(C=p(\"tag\",E))!==null||(C=p(\"head\",E))!==null)return C;throw E.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve \"${E}\" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve \"${E}\" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol (\"${h}\")`)}},p=(h,E)=>{try{return f(h,E)}catch{return null}};return QC(`${r}#${f(s,a)}`)}async function x5(e,t){return await t.getLimit(\"cloneConcurrency\")(async()=>{let{repo:r,treeish:{protocol:s,request:a}}=G0(e);if(s!==\"commit\")throw new Error(\"Invalid treeish protocol when cloning\");let n=b5(r,{configuration:t}),c=await le.mktempPromise(),f={cwd:c,env:Rde()};return await D5(\"cloning the repository\",[\"clone\",\"-c\",\"core.autocrlf=false\",n,fe.fromPortablePath(c)],f,{configuration:t,normalizedRepoUrl:n}),await D5(\"switching branch\",[\"checkout\",`${a}`],f,{configuration:t,normalizedRepoUrl:n}),c})}async function Fde(e){let t,r=e;do{if(t=r,await le.existsPromise(K.join(t,\".git\")))return t;r=K.dirname(t)}while(r!==t);return null}async function Nde(e,{baseRefs:t}){if(t.length===0)throw new st(\"Can't run this command with zero base refs specified.\");let r=[];for(let f of t){let{code:p}=await qr.execvp(\"git\",[\"merge-base\",f,\"HEAD\"],{cwd:e});p===0&&r.push(f)}if(r.length===0)throw new st(`No ancestor could be found between any of HEAD and ${t.join(\", \")}`);let{stdout:s}=await qr.execvp(\"git\",[\"merge-base\",\"HEAD\",...r],{cwd:e,strict:!0}),a=s.trim(),{stdout:n}=await qr.execvp(\"git\",[\"show\",\"--quiet\",\"--pretty=format:%s\",a],{cwd:e,strict:!0}),c=n.trim();return{hash:a,title:c}}async function Ode(e,{base:t,project:r}){let s=Ge.buildIgnorePattern(r.configuration.get(\"changesetIgnorePatterns\")),{stdout:a}=await qr.execvp(\"git\",[\"diff\",\"--name-only\",`${t}`],{cwd:e,strict:!0}),n=a.split(/\\r\\n|\\r|\\n/).filter(h=>h.length>0).map(h=>K.resolve(e,fe.toPortablePath(h))),{stdout:c}=await qr.execvp(\"git\",[\"ls-files\",\"--others\",\"--exclude-standard\"],{cwd:e,strict:!0}),f=c.split(/\\r\\n|\\r|\\n/).filter(h=>h.length>0).map(h=>K.resolve(e,fe.toPortablePath(h))),p=[...new Set([...n,...f].sort())];return s?p.filter(h=>!K.relative(r.cwd,h).match(s)):p}async function Hot({ref:e,project:t}){if(t.configuration.projectCwd===null)throw new st(\"This command can only be run from within a Yarn project\");let r=[K.resolve(t.cwd,Er.lockfile),K.resolve(t.cwd,t.configuration.get(\"cacheFolder\")),K.resolve(t.cwd,t.configuration.get(\"installStatePath\")),K.resolve(t.cwd,t.configuration.get(\"virtualFolder\"))];await t.configuration.triggerHook(c=>c.populateYarnPaths,t,c=>{c!=null&&r.push(c)});let s=await Fde(t.configuration.projectCwd);if(s==null)throw new st(\"This command can only be run on Git repositories\");let a=await Nde(s,{baseRefs:typeof e==\"string\"?[e]:t.configuration.get(\"changesetBaseRefs\")}),n=await Ode(s,{base:a.hash,project:t});return new Set(Ge.mapAndFilter(n,c=>{let f=t.tryWorkspaceByFilePath(c);return f===null?Ge.mapAndFilter.skip:r.some(p=>c.startsWith(p))?Ge.mapAndFilter.skip:f}))}async function D5(e,t,r,{configuration:s,normalizedRepoUrl:a}){try{return await qr.execvp(\"git\",t,{...r,strict:!0})}catch(n){if(!(n instanceof qr.ExecError))throw n;let c=n.reportExtra,f=n.stderr.toString();throw new _t(1,`Failed ${e}`,p=>{p.reportError(1,`  ${pe.prettyField(s,{label:\"Repository URL\",value:pe.tuple(pe.Type.URL,a)})}`);for(let h of f.matchAll(/^(.+?): (.*)$/gm)){let[,E,C]=h;E=E.toLowerCase();let S=E===\"error\"?\"Error\":`${E2(E)} Error`;p.reportError(1,`  ${pe.prettyField(s,{label:S,value:pe.tuple(pe.Type.NO_HINT,C)})}`)}c?.(p)})}}var tS=class{supports(t,r){return TC(t.reference)}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,a=new Map(r.checksums);a.set(t.locatorHash,s);let n={...r,checksums:a},c=await this.downloadHosted(t,n);if(c!==null)return c;let[f,p,h]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(t,n),...r.cacheOptions});return{packageFs:f,releaseFs:p,prefixPath:j.getIdentVendorPath(t),checksum:h}}async downloadHosted(t,r){return r.project.configuration.reduceHook(s=>s.fetchHostedRepository,null,t,r)}async cloneFromRemote(t,r){let s=G0(t.reference),a=await x5(t.reference,r.project.configuration),n=K.resolve(a,s.extra.cwd??vt.dot),c=K.join(n,\"package.tgz\");await Cn.prepareExternalProject(n,c,{configuration:r.project.configuration,report:r.report,workspace:s.extra.workspace,locator:t});let f=await le.readFilePromise(c);return await Ge.releaseAfterUseAsync(async()=>await ds.convertToZip(f,{configuration:r.project.configuration,prefixPath:j.getIdentVendorPath(t),stripComponents:1}))}};qe();qe();var rS=class{supportsDescriptor(t,r){return TC(t.range)}supportsLocator(t,r){return TC(t.reference)}shouldPersistResolution(t,r){return!0}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=await P5(t.range,s.project.configuration);return[j.makeLocator(t,a)]}async getSatisfying(t,r,s,a){let n=G0(t.range);return{locators:s.filter(f=>{if(f.identHash!==t.identHash)return!1;let p=G0(f.reference);return!(n.repo!==p.repo||n.treeish.protocol===\"commit\"&&n.treeish.request!==p.treeish.request)}),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await Ge.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var jot={configuration:{changesetBaseRefs:{description:\"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.\",type:\"STRING\",isArray:!0,isNullable:!1,default:[\"master\",\"origin/master\",\"upstream/master\",\"main\",\"origin/main\",\"upstream/main\"]},changesetIgnorePatterns:{description:\"Array of glob patterns; files matching them will be ignored when fetching the changed files\",type:\"STRING\",default:[],isArray:!0},cloneConcurrency:{description:\"Maximal number of concurrent clones\",type:\"NUMBER\",default:2}},fetchers:[tS],resolvers:[rS]};var Got=jot;Vt();var FC=class extends At{constructor(){super(...arguments);this.since=he.String(\"--since\",{description:\"Only include workspaces that have been changed since the specified ref.\",tolerateBoolean:!0});this.recursive=he.Boolean(\"-R,--recursive\",!1,{description:\"Find packages via dependencies/devDependencies instead of using the workspaces field\"});this.noPrivate=he.Boolean(\"--no-private\",{description:\"Exclude workspaces that have the private field set to true\"});this.verbose=he.Boolean(\"-v,--verbose\",!1,{description:\"Also return the cross-dependencies between workspaces\"});this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"workspaces\",\"list\"]]}static{this.usage=at.Usage({category:\"Workspace-related commands\",description:\"list all available workspaces\",details:\"\\n      This command will print the list of all workspaces in the project.\\n\\n      - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\\n\\n      - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\\n\\n      - If `--no-private` is set, Yarn will not list any workspaces that have the `private` field set to `true`.\\n\\n      - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\\n    \"})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{let c=this.since?await Oa.fetchChangedWorkspaces({ref:this.since,project:s}):s.workspaces,f=new Set(c);if(this.recursive)for(let p of[...c].map(h=>h.getRecursiveWorkspaceDependents()))for(let h of p)f.add(h);for(let p of f){let{manifest:h}=p;if(h.private&&this.noPrivate)continue;let E;if(this.verbose){let C=new Set,S=new Set;for(let x of Ut.hardDependencies)for(let[I,T]of h.getForScope(x)){let O=s.tryWorkspaceByDescriptor(T);O===null?s.workspacesByIdent.has(I)&&S.add(T):C.add(O)}E={workspaceDependencies:Array.from(C).map(x=>x.relativeCwd),mismatchedWorkspaceDependencies:Array.from(S).map(x=>j.stringifyDescriptor(x))}}n.reportInfo(null,`${p.relativeCwd}`),n.reportJson({location:p.relativeCwd,name:h.name?j.stringifyIdent(h.name):null,...E})}})).exitCode()}};qe();qe();Vt();var NC=class extends At{constructor(){super(...arguments);this.workspaceName=he.String();this.commandName=he.String();this.args=he.Proxy()}static{this.paths=[[\"workspace\"]]}static{this.usage=at.Usage({category:\"Workspace-related commands\",description:\"run a command within the specified workspace\",details:`\n      This command will run a given sub-command on a single workspace.\n    `,examples:[[\"Add a package to a single workspace\",\"yarn workspace components add -D react\"],[\"Run build script on a single workspace\",\"yarn workspace components run build\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=s.workspaces,c=new Map(n.map(p=>[j.stringifyIdent(p.anchoredLocator),p])),f=c.get(this.workspaceName);if(f===void 0){let p=Array.from(c.keys()).sort();throw new st(`Workspace '${this.workspaceName}' not found. Did you mean any of the following:\n  - ${p.join(`\n  - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:f.cwd})}};var qot={configuration:{enableImmutableInstalls:{description:\"If true (the default on CI), prevents the install command from modifying the lockfile\",type:\"BOOLEAN\",default:Lde.isCI},defaultSemverRangePrefix:{description:\"The default save prefix: '^', '~' or ''\",type:\"STRING\",values:[\"^\",\"~\",\"\"],default:\"^\"},preferReuse:{description:\"If true, `yarn add` will attempt to reuse the most common dependency range in other workspaces.\",type:\"BOOLEAN\",default:!1}},commands:[XI,$I,eC,tC,bC,yC,uC,FC,iC,sC,oC,aC,zI,ZI,rC,nC,lC,cC,fC,AC,pC,hC,PC,gC,dC,IC,EC,CC,mC,wC,BC,vC,SC,DC,xC,kC,NC]},Wot=qot;var N5={};Yt(N5,{default:()=>Jot});qe();qe();var R5=\"catalog:\";var T5=e=>e.startsWith(R5),Vot=e=>e.range.slice(R5.length)||null,Mde=e=>e===null?\"default catalog\":`catalog \"${e}\"`,Yot=e=>e.scope?`@${e.scope}/${e.name}`:e.name,F5=(e,t,r,s)=>{let a=Vot(t),n;if(a===null)n=e.configuration.get(\"catalog\");else try{let E=e.configuration.get(\"catalogs\");E&&(n=E.get(a))}catch{n=void 0}if(!n||n.size===0)throw new _t(82,`${j.prettyDescriptor(e.configuration,t)}: ${Mde(a)} not found or empty`);let c=Yot(t),f=n.get(c);if(!f)throw new _t(82,`${j.prettyDescriptor(e.configuration,t)}: entry not found in ${Mde(a)}`);let p=e.configuration.normalizeDependency(j.makeDescriptor(t,f));return r.supportsDescriptor(p,s)?r.bindDescriptor(p,e.topLevelWorkspace.anchoredLocator,s):p};var Kot={configuration:{catalog:{description:\"The default catalog of packages\",type:\"MAP\",valueDefinition:{description:\"The catalog of packages\",type:\"STRING\"}},catalogs:{description:\"Named catalogs of packages\",type:\"MAP\",valueDefinition:{description:\"A named catalog\",type:\"MAP\",valueDefinition:{description:\"Package version in the catalog\",type:\"STRING\"}}}},hooks:{beforeWorkspacePacking:(e,t)=>{let r=e.project,s=r.configuration.makeResolver(),a={project:r,resolver:s,report:new ki};for(let n of Ut.allDependencies){let c=t[n];if(c)for(let[f,p]of Object.entries(c)){if(typeof p!=\"string\"||!T5(p))continue;let h=j.parseIdent(f),E=j.makeDescriptor(h,p),C=F5(r,E,s,a),{protocol:S,source:x,params:I,selector:T}=j.parseRange(j.convertToManifestRange(C.range));S===e.project.configuration.get(\"defaultProtocol\")&&(S=null),c[f]=j.makeRange({protocol:S,source:x,params:I,selector:T})}}},reduceDependency:async(e,t,r,s,{resolver:a,resolveOptions:n})=>T5(e.range)?F5(t,e,a,n):e}},Jot=Kot;var _5={};Yt(_5,{default:()=>Zot});qe();var Qt={optional:!0},O5=[[\"@tailwindcss/aspect-ratio@<0.2.1\",{peerDependencies:{tailwindcss:\"^2.0.2\"}}],[\"@tailwindcss/line-clamp@<0.2.1\",{peerDependencies:{tailwindcss:\"^2.0.2\"}}],[\"@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0\",{peerDependencies:{postcss:\"^8.0.0\"}}],[\"@samverschueren/stream-to-observable@<0.3.1\",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],[\"any-observable@<0.5.1\",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],[\"@pm2/agent@<1.0.4\",{dependencies:{debug:\"*\"}}],[\"debug@<4.2.0\",{peerDependenciesMeta:{\"supports-color\":Qt}}],[\"got@<11\",{dependencies:{\"@types/responselike\":\"^1.0.0\",\"@types/keyv\":\"^3.1.1\"}}],[\"cacheable-lookup@<4.1.2\",{dependencies:{\"@types/keyv\":\"^3.1.1\"}}],[\"http-link-dataloader@*\",{peerDependencies:{graphql:\"^0.13.1 || ^14.0.0\"}}],[\"typescript-language-server@*\",{dependencies:{\"vscode-jsonrpc\":\"^5.0.1\",\"vscode-languageserver-protocol\":\"^3.15.0\"}}],[\"postcss-syntax@*\",{peerDependenciesMeta:{\"postcss-html\":Qt,\"postcss-jsx\":Qt,\"postcss-less\":Qt,\"postcss-markdown\":Qt,\"postcss-scss\":Qt}}],[\"jss-plugin-rule-value-function@<=10.1.1\",{dependencies:{\"tiny-warning\":\"^1.0.2\"}}],[\"ink-select-input@<4.1.0\",{peerDependencies:{react:\"^16.8.2\"}}],[\"license-webpack-plugin@<2.3.18\",{peerDependenciesMeta:{webpack:Qt}}],[\"snowpack@>=3.3.0\",{dependencies:{\"node-gyp\":\"^7.1.0\"}}],[\"promise-inflight@*\",{peerDependenciesMeta:{bluebird:Qt}}],[\"reactcss@*\",{peerDependencies:{react:\"*\"}}],[\"react-color@<=2.19.0\",{peerDependencies:{react:\"*\"}}],[\"gatsby-plugin-i18n@*\",{dependencies:{ramda:\"^0.24.1\"}}],[\"useragent@^2.0.0\",{dependencies:{request:\"^2.88.0\",yamlparser:\"0.0.x\",semver:\"5.5.x\"}}],[\"@apollographql/apollo-tools@<=0.5.2\",{peerDependencies:{graphql:\"^14.2.1 || ^15.0.0\"}}],[\"material-table@^2.0.0\",{dependencies:{\"@babel/runtime\":\"^7.11.2\"}}],[\"@babel/parser@*\",{dependencies:{\"@babel/types\":\"^7.8.3\"}}],[\"fork-ts-checker-webpack-plugin@<=6.3.4\",{peerDependencies:{eslint:\">= 6\",typescript:\">= 2.7\",webpack:\">= 4\",\"vue-template-compiler\":\"*\"},peerDependenciesMeta:{eslint:Qt,\"vue-template-compiler\":Qt}}],[\"rc-animate@<=3.1.1\",{peerDependencies:{react:\">=16.9.0\",\"react-dom\":\">=16.9.0\"}}],[\"react-bootstrap-table2-paginator@*\",{dependencies:{classnames:\"^2.2.6\"}}],[\"react-draggable@<=4.4.3\",{peerDependencies:{react:\">= 16.3.0\",\"react-dom\":\">= 16.3.0\"}}],[\"apollo-upload-client@<14\",{peerDependencies:{graphql:\"14 - 15\"}}],[\"react-instantsearch-core@<=6.7.0\",{peerDependencies:{algoliasearch:\">= 3.1 < 5\"}}],[\"react-instantsearch-dom@<=6.7.0\",{dependencies:{\"react-fast-compare\":\"^3.0.0\"}}],[\"ws@<7.2.1\",{peerDependencies:{bufferutil:\"^4.0.1\",\"utf-8-validate\":\"^5.0.2\"},peerDependenciesMeta:{bufferutil:Qt,\"utf-8-validate\":Qt}}],[\"react-portal@<4.2.2\",{peerDependencies:{\"react-dom\":\"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0\"}}],[\"react-scripts@<=4.0.1\",{peerDependencies:{react:\"*\"}}],[\"testcafe@<=1.10.1\",{dependencies:{\"@babel/plugin-transform-for-of\":\"^7.12.1\",\"@babel/runtime\":\"^7.12.5\"}}],[\"testcafe-legacy-api@<=4.2.0\",{dependencies:{\"testcafe-hammerhead\":\"^17.0.1\",\"read-file-relative\":\"^1.2.0\"}}],[\"@google-cloud/firestore@<=4.9.3\",{dependencies:{protobufjs:\"^6.8.6\"}}],[\"gatsby-source-apiserver@*\",{dependencies:{\"babel-polyfill\":\"^6.26.0\"}}],[\"@webpack-cli/package-utils@<=1.0.1-alpha.4\",{dependencies:{\"cross-spawn\":\"^7.0.3\"}}],[\"gatsby-remark-prismjs@<3.3.28\",{dependencies:{lodash:\"^4\"}}],[\"gatsby-plugin-favicon@*\",{peerDependencies:{webpack:\"*\"}}],[\"gatsby-plugin-sharp@<=4.6.0-next.3\",{dependencies:{debug:\"^4.3.1\"}}],[\"gatsby-react-router-scroll@<=5.6.0-next.0\",{dependencies:{\"prop-types\":\"^15.7.2\"}}],[\"@rebass/forms@*\",{dependencies:{\"@styled-system/should-forward-prop\":\"^5.0.0\"},peerDependencies:{react:\"^16.8.6\"}}],[\"rebass@*\",{peerDependencies:{react:\"^16.8.6\"}}],[\"@ant-design/react-slick@<=0.28.3\",{peerDependencies:{react:\">=16.0.0\"}}],[\"mqtt@<4.2.7\",{dependencies:{duplexify:\"^4.1.1\"}}],[\"vue-cli-plugin-vuetify@<=2.0.3\",{dependencies:{semver:\"^6.3.0\"},peerDependenciesMeta:{\"sass-loader\":Qt,\"vuetify-loader\":Qt}}],[\"vue-cli-plugin-vuetify@<=2.0.4\",{dependencies:{\"null-loader\":\"^3.0.0\"}}],[\"vue-cli-plugin-vuetify@>=2.4.3\",{peerDependencies:{vue:\"*\"}}],[\"@vuetify/cli-plugin-utils@<=0.0.4\",{dependencies:{semver:\"^6.3.0\"},peerDependenciesMeta:{\"sass-loader\":Qt}}],[\"@vue/cli-plugin-typescript@<=5.0.0-alpha.0\",{dependencies:{\"babel-loader\":\"^8.1.0\"}}],[\"@vue/cli-plugin-typescript@<=5.0.0-beta.0\",{dependencies:{\"@babel/core\":\"^7.12.16\"},peerDependencies:{\"vue-template-compiler\":\"^2.0.0\"},peerDependenciesMeta:{\"vue-template-compiler\":Qt}}],[\"cordova-ios@<=6.3.0\",{dependencies:{underscore:\"^1.9.2\"}}],[\"cordova-lib@<=10.0.1\",{dependencies:{underscore:\"^1.9.2\"}}],[\"git-node-fs@*\",{peerDependencies:{\"js-git\":\"^0.7.8\"},peerDependenciesMeta:{\"js-git\":Qt}}],[\"consolidate@<0.16.0\",{peerDependencies:{mustache:\"^3.0.0\"},peerDependenciesMeta:{mustache:Qt}}],[\"consolidate@<=0.16.0\",{peerDependencies:{velocityjs:\"^2.0.1\",tinyliquid:\"^0.2.34\",\"liquid-node\":\"^3.0.1\",jade:\"^1.11.0\",\"then-jade\":\"*\",dust:\"^0.3.0\",\"dustjs-helpers\":\"^1.7.4\",\"dustjs-linkedin\":\"^2.7.5\",swig:\"^1.4.2\",\"swig-templates\":\"^2.0.3\",\"razor-tmpl\":\"^1.3.1\",atpl:\">=0.7.6\",liquor:\"^0.0.5\",twig:\"^1.15.2\",ejs:\"^3.1.5\",eco:\"^1.1.0-rc-3\",jazz:\"^0.0.18\",jqtpl:\"~1.1.0\",hamljs:\"^0.6.2\",hamlet:\"^0.3.3\",whiskers:\"^0.4.0\",\"haml-coffee\":\"^1.14.1\",\"hogan.js\":\"^3.0.2\",templayed:\">=0.2.3\",handlebars:\"^4.7.6\",underscore:\"^1.11.0\",lodash:\"^4.17.20\",pug:\"^3.0.0\",\"then-pug\":\"*\",qejs:\"^3.0.5\",walrus:\"^0.10.1\",mustache:\"^4.0.1\",just:\"^0.1.8\",ect:\"^0.5.9\",mote:\"^0.2.0\",toffee:\"^0.3.6\",dot:\"^1.1.3\",\"bracket-template\":\"^1.1.5\",ractive:\"^1.3.12\",nunjucks:\"^3.2.2\",htmling:\"^0.0.8\",\"babel-core\":\"^6.26.3\",plates:\"~0.4.11\",\"react-dom\":\"^16.13.1\",react:\"^16.13.1\",\"arc-templates\":\"^0.5.3\",vash:\"^0.13.0\",slm:\"^2.0.0\",marko:\"^3.14.4\",teacup:\"^2.0.0\",\"coffee-script\":\"^1.12.7\",squirrelly:\"^5.1.0\",twing:\"^5.0.2\"},peerDependenciesMeta:{velocityjs:Qt,tinyliquid:Qt,\"liquid-node\":Qt,jade:Qt,\"then-jade\":Qt,dust:Qt,\"dustjs-helpers\":Qt,\"dustjs-linkedin\":Qt,swig:Qt,\"swig-templates\":Qt,\"razor-tmpl\":Qt,atpl:Qt,liquor:Qt,twig:Qt,ejs:Qt,eco:Qt,jazz:Qt,jqtpl:Qt,hamljs:Qt,hamlet:Qt,whiskers:Qt,\"haml-coffee\":Qt,\"hogan.js\":Qt,templayed:Qt,handlebars:Qt,underscore:Qt,lodash:Qt,pug:Qt,\"then-pug\":Qt,qejs:Qt,walrus:Qt,mustache:Qt,just:Qt,ect:Qt,mote:Qt,toffee:Qt,dot:Qt,\"bracket-template\":Qt,ractive:Qt,nunjucks:Qt,htmling:Qt,\"babel-core\":Qt,plates:Qt,\"react-dom\":Qt,react:Qt,\"arc-templates\":Qt,vash:Qt,slm:Qt,marko:Qt,teacup:Qt,\"coffee-script\":Qt,squirrelly:Qt,twing:Qt}}],[\"vue-loader@<=16.3.3\",{peerDependencies:{\"@vue/compiler-sfc\":\"^3.0.8\",webpack:\"^4.1.0 || ^5.0.0-0\"},peerDependenciesMeta:{\"@vue/compiler-sfc\":Qt}}],[\"vue-loader@^16.7.0\",{peerDependencies:{\"@vue/compiler-sfc\":\"^3.0.8\",vue:\"^3.2.13\"},peerDependenciesMeta:{\"@vue/compiler-sfc\":Qt,vue:Qt}}],[\"scss-parser@<=1.0.5\",{dependencies:{lodash:\"^4.17.21\"}}],[\"query-ast@<1.0.5\",{dependencies:{lodash:\"^4.17.21\"}}],[\"redux-thunk@<=2.3.0\",{peerDependencies:{redux:\"^4.0.0\"}}],[\"skypack@<=0.3.2\",{dependencies:{tar:\"^6.1.0\"}}],[\"@npmcli/metavuln-calculator@<2.0.0\",{dependencies:{\"json-parse-even-better-errors\":\"^2.3.1\"}}],[\"bin-links@<2.3.0\",{dependencies:{\"mkdirp-infer-owner\":\"^1.0.2\"}}],[\"rollup-plugin-polyfill-node@<=0.8.0\",{peerDependencies:{rollup:\"^1.20.0 || ^2.0.0\"}}],[\"snowpack@<3.8.6\",{dependencies:{\"magic-string\":\"^0.25.7\"}}],[\"elm-webpack-loader@*\",{dependencies:{temp:\"^0.9.4\"}}],[\"winston-transport@<=4.4.0\",{dependencies:{logform:\"^2.2.0\"}}],[\"jest-vue-preprocessor@*\",{dependencies:{\"@babel/core\":\"7.8.7\",\"@babel/template\":\"7.8.6\"},peerDependencies:{pug:\"^2.0.4\"},peerDependenciesMeta:{pug:Qt}}],[\"redux-persist@*\",{peerDependencies:{react:\">=16\"},peerDependenciesMeta:{react:Qt}}],[\"sodium@>=3\",{dependencies:{\"node-gyp\":\"^3.8.0\"}}],[\"babel-plugin-graphql-tag@<=3.1.0\",{peerDependencies:{graphql:\"^14.0.0 || ^15.0.0\"}}],[\"@playwright/test@<=1.14.1\",{dependencies:{\"jest-matcher-utils\":\"^26.4.2\"}}],...[\"babel-plugin-remove-graphql-queries@<3.14.0-next.1\",\"babel-preset-gatsby-package@<1.14.0-next.1\",\"create-gatsby@<1.14.0-next.1\",\"gatsby-admin@<0.24.0-next.1\",\"gatsby-cli@<3.14.0-next.1\",\"gatsby-core-utils@<2.14.0-next.1\",\"gatsby-design-tokens@<3.14.0-next.1\",\"gatsby-legacy-polyfills@<1.14.0-next.1\",\"gatsby-plugin-benchmark-reporting@<1.14.0-next.1\",\"gatsby-plugin-graphql-config@<0.23.0-next.1\",\"gatsby-plugin-image@<1.14.0-next.1\",\"gatsby-plugin-mdx@<2.14.0-next.1\",\"gatsby-plugin-netlify-cms@<5.14.0-next.1\",\"gatsby-plugin-no-sourcemaps@<3.14.0-next.1\",\"gatsby-plugin-page-creator@<3.14.0-next.1\",\"gatsby-plugin-preact@<5.14.0-next.1\",\"gatsby-plugin-preload-fonts@<2.14.0-next.1\",\"gatsby-plugin-schema-snapshot@<2.14.0-next.1\",\"gatsby-plugin-styletron@<6.14.0-next.1\",\"gatsby-plugin-subfont@<3.14.0-next.1\",\"gatsby-plugin-utils@<1.14.0-next.1\",\"gatsby-recipes@<0.25.0-next.1\",\"gatsby-source-shopify@<5.6.0-next.1\",\"gatsby-source-wikipedia@<3.14.0-next.1\",\"gatsby-transformer-screenshot@<3.14.0-next.1\",\"gatsby-worker@<0.5.0-next.1\"].map(e=>[e,{dependencies:{\"@babel/runtime\":\"^7.14.8\"}}]),[\"gatsby-core-utils@<2.14.0-next.1\",{dependencies:{got:\"8.3.2\"}}],[\"gatsby-plugin-gatsby-cloud@<=3.1.0-next.0\",{dependencies:{\"gatsby-core-utils\":\"^2.13.0-next.0\"}}],[\"gatsby-plugin-gatsby-cloud@<=3.2.0-next.1\",{peerDependencies:{webpack:\"*\"}}],[\"babel-plugin-remove-graphql-queries@<=3.14.0-next.1\",{dependencies:{\"gatsby-core-utils\":\"^2.8.0-next.1\"}}],[\"gatsby-plugin-netlify@3.13.0-next.1\",{dependencies:{\"gatsby-core-utils\":\"^2.13.0-next.0\"}}],[\"clipanion-v3-codemod@<=0.2.0\",{peerDependencies:{jscodeshift:\"^0.11.0\"}}],[\"react-live@*\",{peerDependencies:{\"react-dom\":\"*\",react:\"*\"}}],[\"webpack@<4.44.1\",{peerDependenciesMeta:{\"webpack-cli\":Qt,\"webpack-command\":Qt}}],[\"webpack@<5.0.0-beta.23\",{peerDependenciesMeta:{\"webpack-cli\":Qt}}],[\"webpack-dev-server@<3.10.2\",{peerDependenciesMeta:{\"webpack-cli\":Qt}}],[\"@docusaurus/responsive-loader@<1.5.0\",{peerDependenciesMeta:{sharp:Qt,jimp:Qt}}],[\"eslint-module-utils@*\",{peerDependenciesMeta:{\"eslint-import-resolver-node\":Qt,\"eslint-import-resolver-typescript\":Qt,\"eslint-import-resolver-webpack\":Qt,\"@typescript-eslint/parser\":Qt}}],[\"eslint-plugin-import@*\",{peerDependenciesMeta:{\"@typescript-eslint/parser\":Qt}}],[\"critters-webpack-plugin@<3.0.2\",{peerDependenciesMeta:{\"html-webpack-plugin\":Qt}}],[\"terser@<=5.10.0\",{dependencies:{acorn:\"^8.5.0\"}}],[\"babel-preset-react-app@10.0.x <10.0.2\",{dependencies:{\"@babel/plugin-proposal-private-property-in-object\":\"^7.16.7\"}}],[\"eslint-config-react-app@*\",{peerDependenciesMeta:{typescript:Qt}}],[\"@vue/eslint-config-typescript@<11.0.0\",{peerDependenciesMeta:{typescript:Qt}}],[\"unplugin-vue2-script-setup@<0.9.1\",{peerDependencies:{\"@vue/composition-api\":\"^1.4.3\",\"@vue/runtime-dom\":\"^3.2.26\"}}],[\"@cypress/snapshot@*\",{dependencies:{debug:\"^3.2.7\"}}],[\"auto-relay@<=0.14.0\",{peerDependencies:{\"reflect-metadata\":\"^0.1.13\"}}],[\"vue-template-babel-compiler@<1.2.0\",{peerDependencies:{\"vue-template-compiler\":\"^2.6.0\"}}],[\"@parcel/transformer-image@<2.5.0\",{peerDependencies:{\"@parcel/core\":\"*\"}}],[\"@parcel/transformer-js@<2.5.0\",{peerDependencies:{\"@parcel/core\":\"*\"}}],[\"parcel@*\",{peerDependenciesMeta:{\"@parcel/core\":Qt}}],[\"react-scripts@*\",{peerDependencies:{eslint:\"*\"}}],[\"focus-trap-react@^8.0.0\",{dependencies:{tabbable:\"^5.3.2\"}}],[\"react-rnd@<10.3.7\",{peerDependencies:{react:\">=16.3.0\",\"react-dom\":\">=16.3.0\"}}],[\"connect-mongo@<5.0.0\",{peerDependencies:{\"express-session\":\"^1.17.1\"}}],[\"vue-i18n@<9\",{peerDependencies:{vue:\"^2\"}}],[\"vue-router@<4\",{peerDependencies:{vue:\"^2\"}}],[\"unified@<10\",{dependencies:{\"@types/unist\":\"^2.0.0\"}}],[\"react-github-btn@<=1.3.0\",{peerDependencies:{react:\">=16.3.0\"}}],[\"react-dev-utils@*\",{peerDependencies:{typescript:\">=2.7\",webpack:\">=4\"},peerDependenciesMeta:{typescript:Qt}}],[\"@asyncapi/react-component@<=1.0.0-next.39\",{peerDependencies:{react:\">=16.8.0\",\"react-dom\":\">=16.8.0\"}}],[\"xo@*\",{peerDependencies:{webpack:\">=1.11.0\"},peerDependenciesMeta:{webpack:Qt}}],[\"babel-plugin-remove-graphql-queries@<=4.20.0-next.0\",{dependencies:{\"@babel/types\":\"^7.15.4\"}}],[\"gatsby-plugin-page-creator@<=4.20.0-next.1\",{dependencies:{\"fs-extra\":\"^10.1.0\"}}],[\"gatsby-plugin-utils@<=3.14.0-next.1\",{dependencies:{fastq:\"^1.13.0\"},peerDependencies:{graphql:\"^15.0.0\"}}],[\"gatsby-plugin-mdx@<3.1.0-next.1\",{dependencies:{mkdirp:\"^1.0.4\"}}],[\"gatsby-plugin-mdx@^2\",{peerDependencies:{gatsby:\"^3.0.0-next\"}}],[\"fdir@<=5.2.0\",{peerDependencies:{picomatch:\"2.x\"},peerDependenciesMeta:{picomatch:Qt}}],[\"babel-plugin-transform-typescript-metadata@<=0.3.2\",{peerDependencies:{\"@babel/core\":\"^7\",\"@babel/traverse\":\"^7\"},peerDependenciesMeta:{\"@babel/traverse\":Qt}}],[\"graphql-compose@>=9.0.10\",{peerDependencies:{graphql:\"^14.2.0 || ^15.0.0 || ^16.0.0\"}}],[\"vite-plugin-vuetify@<=1.0.2\",{peerDependencies:{vue:\"^3.0.0\"}}],[\"webpack-plugin-vuetify@<=2.0.1\",{peerDependencies:{vue:\"^3.2.6\"}}],[\"eslint-import-resolver-vite@<2.0.1\",{dependencies:{debug:\"^4.3.4\",resolve:\"^1.22.8\"}}],[\"notistack@^3.0.0\",{dependencies:{csstype:\"^3.0.10\"}}],[\"@fastify/type-provider-typebox@^5.0.0\",{peerDependencies:{fastify:\"^5.0.0\"}}],[\"@fastify/type-provider-typebox@^4.0.0\",{peerDependencies:{fastify:\"^4.0.0\"}}]];var L5;function Ude(){return typeof L5>\"u\"&&(L5=Ie(\"zlib\").brotliDecompressSync(Buffer.from(\"G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==\",\"base64\")).toString()),L5}var M5;function _de(){return typeof M5>\"u\"&&(M5=Ie(\"zlib\").brotliDecompressSync(Buffer.from(\"G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=\",\"base64\")).toString()),M5}var U5;function Hde(){return typeof U5>\"u\"&&(U5=Ie(\"zlib\").brotliDecompressSync(Buffer.from(\"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\",\"base64\")).toString()),U5}var jde=new Map([[j.makeIdent(null,\"fsevents\").identHash,Ude],[j.makeIdent(null,\"resolve\").identHash,_de],[j.makeIdent(null,\"typescript\").identHash,Hde]]),zot={hooks:{registerPackageExtensions:async(e,t)=>{for(let[r,s]of O5)t(j.parseDescriptor(r,!0),s)},getBuiltinPatch:async(e,t)=>{let r=\"compat/\";if(!t.startsWith(r))return;let s=j.parseIdent(t.slice(r.length)),a=jde.get(s.identHash)?.();return typeof a<\"u\"?a:null},reduceDependency:async(e,t,r,s)=>typeof jde.get(e.identHash)>\"u\"?e:j.makeDescriptor(e,j.makeRange({protocol:\"patch:\",source:j.stringifyDescriptor(e),selector:`optional!builtin<compat/${j.stringifyIdent(e)}>`,params:null}))}},Zot=zot;var nq={};Yt(nq,{ConstraintsCheckCommand:()=>GC,ConstraintsQueryCommand:()=>HC,ConstraintsSourceCommand:()=>jC,default:()=>dat});qe();qe();iS();var LC=class{constructor(t){this.project=t}createEnvironment(){let t=new OC([\"cwd\",\"ident\"]),r=new OC([\"workspace\",\"type\",\"ident\"]),s=new OC([\"ident\"]),a={manifestUpdates:new Map,reportedErrors:new Map},n=new Map,c=new Map;for(let f of this.project.storedPackages.values()){let p=Array.from(f.peerDependencies.values(),h=>[j.stringifyIdent(h),h.range]);n.set(f.locatorHash,{workspace:null,ident:j.stringifyIdent(f),version:f.version,dependencies:new Map,peerDependencies:new Map(p.filter(([h])=>f.peerDependenciesMeta.get(h)?.optional!==!0)),optionalPeerDependencies:new Map(p.filter(([h])=>f.peerDependenciesMeta.get(h)?.optional===!0))})}for(let f of this.project.storedPackages.values()){let p=n.get(f.locatorHash);p.dependencies=new Map(Array.from(f.dependencies.values(),h=>{let E=this.project.storedResolutions.get(h.descriptorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let C=n.get(E);if(typeof C>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");return[j.stringifyIdent(h),C]})),p.dependencies.delete(p.ident)}for(let f of this.project.workspaces){let p=j.stringifyIdent(f.anchoredLocator),h=f.manifest.exportTo({}),E=n.get(f.anchoredLocator.locatorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");let C=(T,O,{caller:U=Ui.getCaller()}={})=>{let Y=nS(T),te=Ge.getMapWithDefault(a.manifestUpdates,f.cwd),ie=Ge.getMapWithDefault(te,Y),ue=Ge.getSetWithDefault(ie,O);U!==null&&ue.add(U)},S=T=>C(T,void 0,{caller:Ui.getCaller()}),x=T=>{Ge.getArrayWithDefault(a.reportedErrors,f.cwd).push(T)},I=t.insert({cwd:f.relativeCwd,ident:p,manifest:h,pkg:E,set:C,unset:S,error:x});c.set(f,I);for(let T of Ut.allDependencies)for(let O of f.manifest[T].values()){let U=j.stringifyIdent(O),Y=()=>{C([T,U],void 0,{caller:Ui.getCaller()})},te=ue=>{C([T,U],ue,{caller:Ui.getCaller()})},ie=null;if(T!==\"peerDependencies\"&&(T!==\"dependencies\"||!f.manifest.devDependencies.has(O.identHash))){let ue=f.anchoredPackage.dependencies.get(O.identHash);if(ue){if(typeof ue>\"u\")throw new Error(\"Assertion failed: The dependency should have been registered\");let ae=this.project.storedResolutions.get(ue.descriptorHash);if(typeof ae>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let de=n.get(ae);if(typeof de>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");ie=de}}r.insert({workspace:I,ident:U,range:O.range,type:T,resolution:ie,update:te,delete:Y,error:x})}}for(let f of this.project.storedPackages.values()){let p=this.project.tryWorkspaceByLocator(f);if(!p)continue;let h=c.get(p);if(typeof h>\"u\")throw new Error(\"Assertion failed: The workspace should have been registered\");let E=n.get(f.locatorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");E.workspace=h}return{workspaces:t,dependencies:r,packages:s,result:a}}async process(){let t=this.createEnvironment(),r={Yarn:{workspace:a=>t.workspaces.find(a)[0]??null,workspaces:a=>t.workspaces.find(a),dependency:a=>t.dependencies.find(a)[0]??null,dependencies:a=>t.dependencies.find(a),package:a=>t.packages.find(a)[0]??null,packages:a=>t.packages.find(a)}},s=await this.project.loadUserConfig();return s?.constraints?(await s.constraints(r),t.result):null}};qe();qe();Vt();var HC=class extends At{constructor(){super(...arguments);this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.query=he.String()}static{this.paths=[[\"constraints\",\"query\"]]}static{this.usage=at.Usage({category:\"Constraints-related commands\",description:\"query the constraints fact database\",details:`\n      This command will output all matches to the given prolog query.\n    `,examples:[[\"List all dependencies throughout the workspace\",\"yarn constraints query 'workspace_has_dependency(_, DependencyName, _, _).'\"]]})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(lS(),aS)),s=await ze.find(this.context.cwd,this.context.plugins),{project:a}=await Rt.find(s,this.context.cwd),n=await r.find(a),c=this.query;return c.endsWith(\".\")||(c=`${c}.`),(await Ot.start({configuration:s,json:this.json,stdout:this.context.stdout},async p=>{for await(let h of n.query(c)){let E=Array.from(Object.entries(h)),C=E.length,S=E.reduce((x,[I])=>Math.max(x,I.length),0);for(let x=0;x<C;x++){let[I,T]=E[x];p.reportInfo(null,`${hat(x,C)}${I.padEnd(S,\" \")} = ${pat(T)}`)}p.reportJson(h)}})).exitCode()}};function pat(e){return typeof e!=\"string\"?`${e}`:e.match(/^[a-zA-Z][a-zA-Z0-9_]+$/)?e:`'${e}'`}function hat(e,t){let r=e===0,s=e===t-1;return r&&s?\"\":r?\"\\u250C \":s?\"\\u2514 \":\"\\u2502 \"}qe();Vt();var jC=class extends At{constructor(){super(...arguments);this.verbose=he.Boolean(\"-v,--verbose\",!1,{description:\"Also print the fact database automatically compiled from the workspace manifests\"})}static{this.paths=[[\"constraints\",\"source\"]]}static{this.usage=at.Usage({category:\"Constraints-related commands\",description:\"print the source code for the constraints\",details:\"\\n      This command will print the Prolog source code used by the constraints engine. Adding the `-v,--verbose` flag will print the *full* source code, including the fact database automatically compiled from the workspace manifests.\\n    \",examples:[[\"Prints the source code\",\"yarn constraints source\"],[\"Print the source code and the fact database\",\"yarn constraints source -v\"]]})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(lS(),aS)),s=await ze.find(this.context.cwd,this.context.plugins),{project:a}=await Rt.find(s,this.context.cwd),n=await r.find(a);this.context.stdout.write(this.verbose?n.fullSource:n.source)}};qe();qe();Vt();iS();var GC=class extends At{constructor(){super(...arguments);this.fix=he.Boolean(\"--fix\",!1,{description:\"Attempt to automatically fix unambiguous issues, following a multi-pass process\"});this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"constraints\"]]}static{this.usage=at.Usage({category:\"Constraints-related commands\",description:\"check that the project constraints are met\",details:`\n      This command will run constraints on your project and emit errors for each one that is found but isn't met. If any error is emitted the process will exit with a non-zero exit code.\n\n      If the \\`--fix\\` flag is used, Yarn will attempt to automatically fix the issues the best it can, following a multi-pass process (with a maximum of 10 iterations). Some ambiguous patterns cannot be autofixed, in which case you'll have to manually specify the right resolution.\n\n      For more information as to how to write constraints, please consult our dedicated page on our website: https://yarnpkg.com/features/constraints.\n    `,examples:[[\"Check that all constraints are satisfied\",\"yarn constraints\"],[\"Autofix all unmet constraints\",\"yarn constraints --fix\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd);await s.restoreInstallState();let a=await s.loadUserConfig(),n;if(a?.constraints)n=new LC(s);else{let{Constraints:h}=await Promise.resolve().then(()=>(lS(),aS));n=await h.find(s)}let c,f=!1,p=!1;for(let h=this.fix?10:1;h>0;--h){let E=await n.process();if(!E)break;let{changedWorkspaces:C,remainingErrors:S}=jT(s,E,{fix:this.fix}),x=[];for(let[I,T]of C){let O=I.manifest.indent;I.manifest=new Ut,I.manifest.indent=O,I.manifest.load(T),x.push(I.persistManifest())}if(await Promise.all(x),!(C.size>0&&h>1)){c=Gde(S,{configuration:r}),f=!1,p=!0;for(let[,I]of S)for(let T of I)T.fixable?f=!0:p=!1}}if(c.children.length===0)return 0;if(f){let h=p?`Those errors can all be fixed by running ${pe.pretty(r,\"yarn constraints --fix\",pe.Type.CODE)}`:`Errors prefixed by '\\u2699' can be fixed by running ${pe.pretty(r,\"yarn constraints --fix\",pe.Type.CODE)}`;await Ot.start({configuration:r,stdout:this.context.stdout,includeNames:!1,includeFooter:!1},async E=>{E.reportInfo(0,h),E.reportSeparator()})}return c.children=Ge.sortMap(c.children,h=>h.value[1]),Rs.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1}),1}};iS();var gat={configuration:{enableConstraintsChecks:{description:\"If true, constraints will run during installs\",type:\"BOOLEAN\",default:!1},constraintsPath:{description:\"The path of the constraints file.\",type:\"ABSOLUTE_PATH\",default:\"./constraints.pro\"}},commands:[HC,jC,GC],hooks:{async validateProjectAfterInstall(e,{reportError:t}){if(!e.configuration.get(\"enableConstraintsChecks\"))return;let r=await e.loadUserConfig(),s;if(r?.constraints)s=new LC(e);else{let{Constraints:c}=await Promise.resolve().then(()=>(lS(),aS));s=await c.find(e)}let a=await s.process();if(!a)return;let{remainingErrors:n}=jT(e,a);if(n.size!==0)if(e.configuration.isCI)for(let[c,f]of n)for(let p of f)t(84,`${pe.pretty(e.configuration,c.anchoredLocator,pe.Type.IDENT)}: ${p.text}`);else t(84,`Constraint check failed; run ${pe.pretty(e.configuration,\"yarn constraints\",pe.Type.CODE)} for more details`)}}},dat=gat;var iq={};Yt(iq,{CreateCommand:()=>qC,DlxCommand:()=>WC,default:()=>yat});qe();Vt();var qC=class extends At{constructor(){super(...arguments);this.pkg=he.String(\"-p,--package\",{description:\"The package to run the provided command from\"});this.quiet=he.Boolean(\"-q,--quiet\",!1,{description:\"Only report critical errors instead of printing the full install logs\"});this.command=he.String();this.args=he.Proxy()}static{this.paths=[[\"create\"]]}async execute(){let r=[];this.pkg&&r.push(\"--package\",this.pkg),this.quiet&&r.push(\"--quiet\");let s=this.command.replace(/^(@[^@/]+)(@|$)/,\"$1/create$2\"),a=j.parseDescriptor(s),n=a.name.match(/^create(-|$)/)?a:a.scope?j.makeIdent(a.scope,`create-${a.name}`):j.makeIdent(null,`create-${a.name}`),c=j.stringifyIdent(n);return a.range!==\"unknown\"&&(c+=`@${a.range}`),this.cli.run([\"dlx\",...r,c,...this.args])}};qe();qe();Dt();Vt();var WC=class extends At{constructor(){super(...arguments);this.packages=he.Array(\"-p,--package\",{description:\"The package(s) to install before running the command\"});this.quiet=he.Boolean(\"-q,--quiet\",!1,{description:\"Only report critical errors instead of printing the full install logs\"});this.command=he.String();this.args=he.Proxy()}static{this.paths=[[\"dlx\"]]}static{this.usage=at.Usage({description:\"run a package in a temporary environment\",details:\"\\n      This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\\n\\n      By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\\n\\n      Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\\n    \",examples:[[\"Use create-vite to scaffold a new Vite project\",\"yarn dlx create-vite\"],[\"Install multiple packages for a single command\",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e \"console.log('hello!')\"`]]})}async execute(){return ze.telemetry=null,await le.mktempPromise(async r=>{let s=K.join(r,`dlx-${process.pid}`);await le.mkdirPromise(s),await le.writeFilePromise(K.join(s,\"package.json\"),`{}\n`),await le.writeFilePromise(K.join(s,\"yarn.lock\"),\"\");let a=K.join(s,\".yarnrc.yml\"),n=await ze.findProjectCwd(this.context.cwd),f={enableGlobalCache:!(await ze.find(this.context.cwd,null,{strict:!1})).get(\"enableGlobalCache\"),enableTelemetry:!1,logFilters:[{code:Kf(68),level:pe.LogLevel.Discard}]},p=n!==null?K.join(n,\".yarnrc.yml\"):null;p!==null&&le.existsSync(p)?(await le.copyFilePromise(p,a),await ze.updateConfiguration(s,O=>{let U=Ge.toMerged(O,f);return Array.isArray(O.plugins)&&(U.plugins=O.plugins.map(Y=>{let te=typeof Y==\"string\"?Y:Y.path,ie=fe.isAbsolute(te)?te:fe.resolve(fe.fromPortablePath(n),te);return typeof Y==\"string\"?ie:{path:ie,spec:Y.spec}})),U})):await le.writeJsonPromise(a,f);let h=this.packages??[this.command],E=j.parseDescriptor(this.command).name,C=await this.cli.run([\"add\",\"--fixed\",\"--\",...h],{cwd:s,quiet:this.quiet});if(C!==0)return C;this.quiet||this.context.stdout.write(`\n`);let S=await ze.find(s,this.context.plugins),{project:x,workspace:I}=await Rt.find(S,s);if(I===null)throw new ar(x.cwd,s);await x.restoreInstallState();let T=await Cn.getWorkspaceAccessibleBinaries(I);return T.has(E)===!1&&T.size===1&&typeof this.packages>\"u\"&&(E=Array.from(T)[0][0]),await Cn.executeWorkspaceAccessibleBinary(I,E,this.args,{packageAccessibleBinaries:T,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};var mat={commands:[qC,WC]},yat=mat;var aq={};Yt(aq,{ExecFetcher:()=>uS,ExecResolver:()=>fS,default:()=>Cat,execUtils:()=>VT});qe();qe();Dt();var uA=\"exec:\";var VT={};Yt(VT,{loadGeneratorFile:()=>cS,makeLocator:()=>oq,makeSpec:()=>gme,parseSpec:()=>sq});qe();Dt();function sq(e){let{params:t,selector:r}=j.parseRange(e),s=fe.toPortablePath(r);return{parentLocator:t&&typeof t.locator==\"string\"?j.parseLocator(t.locator):null,path:s}}function gme({parentLocator:e,path:t,generatorHash:r,protocol:s}){let a=e!==null?{locator:j.stringifyLocator(e)}:{},n=typeof r<\"u\"?{hash:r}:{};return j.makeRange({protocol:s,source:t,selector:t,params:{...n,...a}})}function oq(e,{parentLocator:t,path:r,generatorHash:s,protocol:a}){return j.makeLocator(e,gme({parentLocator:t,path:r,generatorHash:s,protocol:a}))}async function cS(e,t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(e,{protocol:t}),n=K.isAbsolute(a)?{packageFs:new bn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new bn(vt.root),prefixPath:K.relative(vt.root,n.localPath)}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=K.join(c.prefixPath,a);return await f.readFilePromise(p,\"utf8\")}var uS=class{supports(t,r){return!!t.reference.startsWith(uA)}getLocalPath(t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(t.reference,{protocol:uA});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:K.resolve(n,a)}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t),loader:()=>this.fetchFromDisk(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),localPath:this.getLocalPath(t,r),checksum:c}}async fetchFromDisk(t,r){let s=await cS(t.reference,uA,r);return le.mktempPromise(async a=>{let n=K.join(a,\"generator.js\");return await le.writeFilePromise(n,s),le.mktempPromise(async c=>{if(await this.generatePackage(c,t,n,r),!le.existsSync(K.join(c,\"build\")))throw new Error(\"The script should have generated a build directory\");return await ds.makeArchiveFromDirectory(K.join(c,\"build\"),{prefixPath:j.getIdentVendorPath(t),compressionLevel:r.project.configuration.get(\"compressionLevel\")})})})}async generatePackage(t,r,s,a){return await le.mktempPromise(async n=>{let c=await Cn.makeScriptEnv({project:a.project,binFolder:n}),f=K.join(t,\"runtime.js\");return await le.mktempPromise(async p=>{let h=K.join(p,\"buildfile.log\"),E=K.join(t,\"generator\"),C=K.join(t,\"build\");await le.mkdirPromise(E),await le.mkdirPromise(C);let S={tempDir:fe.fromPortablePath(E),buildDir:fe.fromPortablePath(C),locator:j.stringifyLocator(r)};await le.writeFilePromise(f,`\n          // Expose 'Module' as a global variable\n          Object.defineProperty(global, 'Module', {\n            get: () => require('module'),\n            configurable: true,\n            enumerable: false,\n          });\n\n          // Expose non-hidden built-in modules as global variables\n          for (const name of Module.builtinModules.filter((name) => name !== 'module' && !name.startsWith('_'))) {\n            Object.defineProperty(global, name, {\n              get: () => require(name),\n              configurable: true,\n              enumerable: false,\n            });\n          }\n\n          // Expose the 'execEnv' global variable\n          Object.defineProperty(global, 'execEnv', {\n            value: {\n              ...${JSON.stringify(S)},\n            },\n            enumerable: true,\n          });\n        `);let x=c.NODE_OPTIONS||\"\",I=/\\s*--require\\s+\\S*\\.pnp\\.c?js\\s*/g;x=x.replace(I,\" \").trim(),c.NODE_OPTIONS=x;let{stdout:T,stderr:O}=a.project.configuration.getSubprocessStreams(h,{header:`# This file contains the result of Yarn generating a package (${j.stringifyLocator(r)})\n`,prefix:j.prettyLocator(a.project.configuration,r),report:a.report}),{code:U}=await qr.pipevp(process.execPath,[\"--require\",fe.fromPortablePath(f),fe.fromPortablePath(s),j.stringifyIdent(r)],{cwd:t,env:c,stdin:null,stdout:T,stderr:O});if(U!==0)throw le.detachTemp(p),new Error(`Package generation failed (exit code ${U}, logs can be found here: ${pe.pretty(a.project.configuration,h,pe.Type.PATH)})`)})})}};qe();qe();var Eat=2,fS=class{supportsDescriptor(t,r){return!!t.range.startsWith(uA)}supportsLocator(t,r){return!!t.reference.startsWith(uA)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return j.bindDescriptor(t,{locator:j.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){if(!s.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=sq(t.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let c=await cS(j.makeRange({protocol:uA,source:a,selector:a,params:{locator:j.stringifyLocator(n)}}),uA,s.fetchOptions),f=Ln.makeHash(`${Eat}`,c).slice(0,6);return[oq(t,{parentLocator:n,path:a,generatorHash:f,protocol:uA})]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await Ge.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Iat={fetchers:[uS],resolvers:[fS]},Cat=Iat;var cq={};Yt(cq,{FileFetcher:()=>gS,FileResolver:()=>dS,TarballFileFetcher:()=>mS,TarballFileResolver:()=>yS,default:()=>vat,fileUtils:()=>Rm});qe();Dt();var VC=/^(?:[a-zA-Z]:[\\\\/]|\\.{0,2}\\/)/,AS=/^[^?]*\\.(?:tar\\.gz|tgz)(?:::.*)?$/,ts=\"file:\";var Rm={};Yt(Rm,{fetchArchiveFromLocator:()=>hS,makeArchiveFromLocator:()=>YT,makeBufferFromLocator:()=>lq,makeLocator:()=>YC,makeSpec:()=>dme,parseSpec:()=>pS});qe();Dt();function pS(e){let{params:t,selector:r}=j.parseRange(e),s=fe.toPortablePath(r);return{parentLocator:t&&typeof t.locator==\"string\"?j.parseLocator(t.locator):null,path:s}}function dme({parentLocator:e,path:t,hash:r,protocol:s}){let a=e!==null?{locator:j.stringifyLocator(e)}:{},n=typeof r<\"u\"?{hash:r}:{};return j.makeRange({protocol:s,source:t,selector:t,params:{...n,...a}})}function YC(e,{parentLocator:t,path:r,hash:s,protocol:a}){return j.makeLocator(e,dme({parentLocator:t,path:r,hash:s,protocol:a}))}async function hS(e,t){let{parentLocator:r,path:s}=j.parseFileStyleRange(e.reference,{protocol:ts}),a=K.isAbsolute(s)?{packageFs:new bn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await t.fetcher.fetch(r,t),n=a.localPath?{packageFs:new bn(vt.root),prefixPath:K.relative(vt.root,a.localPath)}:a;a!==n&&a.releaseFs&&a.releaseFs();let c=n.packageFs,f=K.join(n.prefixPath,s);return await Ge.releaseAfterUseAsync(async()=>await c.readFilePromise(f),n.releaseFs)}async function YT(e,{protocol:t,fetchOptions:r,inMemory:s=!1}){let{parentLocator:a,path:n}=j.parseFileStyleRange(e.reference,{protocol:t}),c=K.isAbsolute(n)?{packageFs:new bn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(a,r),f=c.localPath?{packageFs:new bn(vt.root),prefixPath:K.relative(vt.root,c.localPath)}:c;c!==f&&c.releaseFs&&c.releaseFs();let p=f.packageFs,h=K.join(f.prefixPath,n);return await Ge.releaseAfterUseAsync(async()=>await ds.makeArchiveFromDirectory(h,{baseFs:p,prefixPath:j.getIdentVendorPath(e),compressionLevel:r.project.configuration.get(\"compressionLevel\"),inMemory:s}),f.releaseFs)}async function lq(e,{protocol:t,fetchOptions:r}){return(await YT(e,{protocol:t,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var gS=class{supports(t,r){return!!t.reference.startsWith(ts)}getLocalPath(t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(t.reference,{protocol:ts});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:K.resolve(n,a)}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),localPath:this.getLocalPath(t,r),checksum:c}}async fetchFromDisk(t,r){return YT(t,{protocol:ts,fetchOptions:r})}};qe();qe();var wat=2,dS=class{supportsDescriptor(t,r){return t.range.match(VC)?!0:!!t.range.startsWith(ts)}supportsLocator(t,r){return!!t.reference.startsWith(ts)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return VC.test(t.range)&&(t=j.makeDescriptor(t,`${ts}${t.range}`)),j.bindDescriptor(t,{locator:j.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){if(!s.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=pS(t.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let c=await lq(j.makeLocator(t,j.makeRange({protocol:ts,source:a,selector:a,params:{locator:j.stringifyLocator(n)}})),{protocol:ts,fetchOptions:s.fetchOptions}),f=Ln.makeHash(`${wat}`,c).slice(0,6);return[YC(t,{parentLocator:n,path:a,hash:f,protocol:ts})]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await Ge.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};qe();var mS=class{supports(t,r){return AS.test(t.reference)?!!t.reference.startsWith(ts):!1}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),checksum:c}}async fetchFromDisk(t,r){let s=await hS(t,r);return await ds.convertToZip(s,{configuration:r.project.configuration,prefixPath:j.getIdentVendorPath(t),stripComponents:1})}};qe();qe();qe();var yS=class{supportsDescriptor(t,r){return AS.test(t.range)?!!(t.range.startsWith(ts)||VC.test(t.range)):!1}supportsLocator(t,r){return AS.test(t.reference)?!!t.reference.startsWith(ts):!1}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return VC.test(t.range)&&(t=j.makeDescriptor(t,`${ts}${t.range}`)),j.bindDescriptor(t,{locator:j.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){if(!s.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=pS(t.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let c=YC(t,{parentLocator:n,path:a,hash:\"\",protocol:ts}),f=await hS(c,s.fetchOptions),p=Ln.makeHash(f).slice(0,6);return[YC(t,{parentLocator:n,path:a,hash:p,protocol:ts})]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await Ge.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Bat={fetchers:[mS,gS],resolvers:[yS,dS]},vat=Bat;var Aq={};Yt(Aq,{GithubFetcher:()=>ES,default:()=>Dat,githubUtils:()=>KT});qe();Dt();var KT={};Yt(KT,{invalidGithubUrlMessage:()=>Eme,isGithubUrl:()=>uq,parseGithubUrl:()=>fq});var mme=et(Ie(\"querystring\")),yme=[/^https?:\\/\\/(?:([^/]+?)@)?github.com\\/([^/#]+)\\/([^/#]+)\\/tarball\\/([^/#]+)(?:#(.*))?$/,/^https?:\\/\\/(?:([^/]+?)@)?github.com\\/([^/#]+)\\/([^/#]+?)(?:\\.git)?(?:#(.*))?$/];function uq(e){return e?yme.some(t=>!!e.match(t)):!1}function fq(e){let t;for(let f of yme)if(t=e.match(f),t)break;if(!t)throw new Error(Eme(e));let[,r,s,a,n=\"master\"]=t,{commit:c}=mme.default.parse(n);return n=c||n.replace(/[^:]*:/,\"\"),{auth:r,username:s,reponame:a,treeish:n}}function Eme(e){return`Input cannot be parsed as a valid GitHub URL ('${e}').`}var ES=class{supports(t,r){return!!uq(t.reference)}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),checksum:c}}async fetchFromNetwork(t,r){let s=await nn.get(this.getLocatorUrl(t,r),{configuration:r.project.configuration});return await le.mktempPromise(async a=>{let n=new bn(a);await ds.extractArchiveTo(s,n,{stripComponents:1});let c=Oa.splitRepoUrl(t.reference),f=K.join(a,\"package.tgz\");await Cn.prepareExternalProject(a,f,{configuration:r.project.configuration,report:r.report,workspace:c.extra.workspace,locator:t});let p=await le.readFilePromise(f);return await ds.convertToZip(p,{configuration:r.project.configuration,prefixPath:j.getIdentVendorPath(t),stripComponents:1})})}getLocatorUrl(t,r){let{auth:s,username:a,reponame:n,treeish:c}=fq(t.reference);return`https://${s?`${s}@`:\"\"}github.com/${a}/${n}/archive/${c}.tar.gz`}};var Sat={hooks:{async fetchHostedRepository(e,t,r){if(e!==null)return e;let s=new ES;if(!s.supports(t,r))return null;try{return await s.fetch(t,r)}catch{return null}}}},Dat=Sat;var pq={};Yt(pq,{TarballHttpFetcher:()=>CS,TarballHttpResolver:()=>wS,default:()=>Pat});qe();function IS(e){let t;try{t=new URL(e)}catch{return!1}return!(t.protocol!==\"http:\"&&t.protocol!==\"https:\"||!t.pathname.match(/(\\.tar\\.gz|\\.tgz|\\/[^.]+)$/))}var CS=class{supports(t,r){return IS(t.reference)}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),checksum:c}}async fetchFromNetwork(t,r){let s=await nn.get(t.reference,{configuration:r.project.configuration});return await ds.convertToZip(s,{configuration:r.project.configuration,prefixPath:j.getIdentVendorPath(t),stripComponents:1})}};qe();qe();var wS=class{supportsDescriptor(t,r){return IS(t.range)}supportsLocator(t,r){return IS(t.reference)}shouldPersistResolution(t,r){return!0}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){return[j.convertDescriptorToLocator(t)]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await Ge.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var bat={fetchers:[CS],resolvers:[wS]},Pat=bat;var hq={};Yt(hq,{InitCommand:()=>K0,InitInitializerCommand:()=>KC,default:()=>kat});Vt();qe();qe();Dt();Vt();var K0=class extends At{constructor(){super(...arguments);this.private=he.Boolean(\"-p,--private\",!1,{description:\"Initialize a private package\"});this.workspace=he.Boolean(\"-w,--workspace\",!1,{description:\"Initialize a workspace root with a `packages/` directory\"});this.install=he.String(\"-i,--install\",!1,{tolerateBoolean:!0,description:\"Initialize a package with a specific bundle that will be locked in the project\"});this.name=he.String(\"-n,--name\",{description:\"Initialize a package with the given name\"});this.usev2=he.Boolean(\"-2\",!1,{hidden:!0});this.yes=he.Boolean(\"-y,--yes\",{hidden:!0})}static{this.paths=[[\"init\"]]}static{this.usage=at.Usage({description:\"create a new package\",details:\"\\n      This command will setup a new package in your local directory.\\n\\n      If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\\n\\n      If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\\n\\n      If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\\n\\n      The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\\n    \",examples:[[\"Create a new package in the local directory\",\"yarn init\"],[\"Create a new private package in the local directory\",\"yarn init -p\"],[\"Create a new package and store the Yarn release inside\",\"yarn init -i=latest\"],[\"Create a new private package and defines it as a workspace root\",\"yarn init -w\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=typeof this.install==\"string\"?this.install:this.usev2||this.install===!0?\"latest\":null;return s!==null?await this.executeProxy(r,s):await this.executeRegular(r)}async executeProxy(r,s){if(r.projectCwd!==null&&r.projectCwd!==this.context.cwd)throw new st(\"Cannot use the --install flag from within a project subdirectory\");le.existsSync(this.context.cwd)||await le.mkdirPromise(this.context.cwd,{recursive:!0});let a=K.join(this.context.cwd,Er.lockfile);le.existsSync(a)||await le.writeFilePromise(a,\"\");let n=await this.cli.run([\"set\",\"version\",s],{quiet:!0});if(n!==0)return n;let c=[];return this.private&&c.push(\"-p\"),this.workspace&&c.push(\"-w\"),this.name&&c.push(`-n=${this.name}`),this.yes&&c.push(\"-y\"),await le.mktempPromise(async f=>{let{code:p}=await qr.pipevp(\"yarn\",[\"init\",...c],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await Cn.makeScriptEnv({binFolder:f})});return p})}async initialize(){}async executeRegular(r){let s=null;try{s=(await Rt.find(r,this.context.cwd)).project}catch{s=null}le.existsSync(this.context.cwd)||await le.mkdirPromise(this.context.cwd,{recursive:!0});let a=await Ut.tryFind(this.context.cwd),n=a??new Ut,c=Object.fromEntries(r.get(\"initFields\").entries());n.load(c),n.name=n.name??j.makeIdent(r.get(\"initScope\"),this.name??K.basename(this.context.cwd)),n.packageManager=An&&Ge.isTaggedYarnVersion(An)?`yarn@${An}`:null,(!a&&this.workspace||this.private)&&(n.private=!0),this.workspace&&n.workspaceDefinitions.length===0&&(await le.mkdirPromise(K.join(this.context.cwd,\"packages\"),{recursive:!0}),n.workspaceDefinitions=[{pattern:\"packages/*\"}]);let f={};n.exportTo(f);let p=K.join(this.context.cwd,Ut.fileName);await le.changeFilePromise(p,`${JSON.stringify(f,null,2)}\n`,{automaticNewlines:!0});let h=[p],E=K.join(this.context.cwd,\"README.md\");if(le.existsSync(E)||(await le.writeFilePromise(E,`# ${j.stringifyIdent(n.name)}\n`),h.push(E)),!s||s.cwd===this.context.cwd){let C=K.join(this.context.cwd,Er.lockfile);le.existsSync(C)||(await le.writeFilePromise(C,\"\"),h.push(C));let x=[\".yarn/*\",\"!.yarn/patches\",\"!.yarn/plugins\",\"!.yarn/releases\",\"!.yarn/sdks\",\"!.yarn/versions\",\"\",\"# Whether you use PnP or not, the node_modules folder is often used to store\",\"# build artifacts that should be gitignored\",\"node_modules\",\"\",\"# Swap the comments on the following lines if you wish to use zero-installs\",\"# In that case, don't forget to run `yarn config set enableGlobalCache false`!\",\"# Documentation here: https://yarnpkg.com/features/caching#zero-installs\",\"\",\"#!.yarn/cache\",\".pnp.*\"].map(ue=>`${ue}\n`).join(\"\"),I=K.join(this.context.cwd,\".gitignore\");le.existsSync(I)||(await le.writeFilePromise(I,x),h.push(I));let O=[\"/.yarn/**            linguist-vendored\",\"/.yarn/releases/*    binary\",\"/.yarn/plugins/**/*  binary\",\"/.pnp.*              binary linguist-generated\"].map(ue=>`${ue}\n`).join(\"\"),U=K.join(this.context.cwd,\".gitattributes\");le.existsSync(U)||(await le.writeFilePromise(U,O),h.push(U));let Y={\"*\":{charset:\"utf-8\",endOfLine:\"lf\",indentSize:2,indentStyle:\"space\",insertFinalNewline:!0}};Ge.mergeIntoTarget(Y,r.get(\"initEditorConfig\"));let te=`root = true\n`;for(let[ue,ae]of Object.entries(Y)){te+=`\n[${ue}]\n`;for(let[de,Ae]of Object.entries(ae)){let Ce=de.replace(/[A-Z]/g,Ee=>`_${Ee.toLowerCase()}`);te+=`${Ce} = ${Ae}\n`}}let ie=K.join(this.context.cwd,\".editorconfig\");le.existsSync(ie)||(await le.writeFilePromise(ie,te),h.push(ie)),await this.cli.run([\"install\"],{quiet:!0}),await this.initialize(),le.existsSync(K.join(this.context.cwd,\".git\"))||(await qr.execvp(\"git\",[\"init\"],{cwd:this.context.cwd}),await qr.execvp(\"git\",[\"add\",\"--\",...h],{cwd:this.context.cwd}),await qr.execvp(\"git\",[\"commit\",\"--allow-empty\",\"-m\",\"First commit\"],{cwd:this.context.cwd}))}}};var KC=class extends K0{constructor(){super(...arguments);this.initializer=he.String();this.argv=he.Proxy()}static{this.paths=[[\"init\"]]}async initialize(){this.context.stdout.write(`\n`),await this.cli.run([\"dlx\",this.initializer,...this.argv],{quiet:!0})}};var xat={configuration:{initScope:{description:\"Scope used when creating packages via the init command\",type:\"STRING\",default:null},initFields:{description:\"Additional fields to set when creating packages via the init command\",type:\"MAP\",valueDefinition:{description:\"\",type:\"ANY\"}},initEditorConfig:{description:\"Extra rules to define in the generator editorconfig\",type:\"MAP\",valueDefinition:{description:\"\",type:\"ANY\"}}},commands:[K0,KC]},kat=xat;var fW={};Yt(fW,{SearchCommand:()=>Aw,UpgradeInteractiveCommand:()=>pw,default:()=>_pt});qe();var Cme=et(Ie(\"os\"));function JC({stdout:e}){if(Cme.default.endianness()===\"BE\")throw new Error(\"Interactive commands cannot be used on big-endian systems because ink depends on yoga-layout-prebuilt which only supports little-endian architectures\");if(!e.isTTY)throw new Error(\"Interactive commands can only be used inside a TTY environment\")}Vt();var Tye=et(Rq()),Tq={appId:\"OFCNCOG2CU\",apiKey:\"6fe4476ee5a1832882e326b506d14126\",indexName:\"npm-search\"},bct=(0,Tye.default)(Tq.appId,Tq.apiKey).initIndex(Tq.indexName),Fq=async(e,t=0)=>await bct.search(e,{analyticsTags:[\"yarn-plugin-interactive-tools\"],attributesToRetrieve:[\"name\",\"version\",\"owner\",\"repository\",\"humanDownloadsLast30Days\"],page:t,hitsPerPage:10});var CD=[\"regular\",\"dev\",\"peer\"],Aw=class extends At{static{this.paths=[[\"search\"]]}static{this.usage=at.Usage({category:\"Interactive commands\",description:\"open the search interface\",details:`\n    This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry.\n    `,examples:[[\"Open the search window\",\"yarn search\"]]})}async execute(){JC(this.context);let{Gem:t}=await Promise.resolve().then(()=>(xF(),eW)),{ScrollableItems:r}=await Promise.resolve().then(()=>(TF(),RF)),{useKeypress:s}=await Promise.resolve().then(()=>(fw(),tW)),{useMinistore:a}=await Promise.resolve().then(()=>(oW(),sW)),{renderForm:n}=await Promise.resolve().then(()=>(LF(),OF)),{default:c}=await Promise.resolve().then(()=>et(ywe())),{Box:f,Text:p}=await Promise.resolve().then(()=>et(Gc())),{default:h,useEffect:E,useState:C}=await Promise.resolve().then(()=>et(gn())),S=await ze.find(this.context.cwd,this.context.plugins),x=()=>h.createElement(f,{flexDirection:\"row\"},h.createElement(f,{flexDirection:\"column\",width:48},h.createElement(f,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to move between packages.\")),h.createElement(f,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<space>\"),\" to select a package.\")),h.createElement(f,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<space>\"),\" again to change the target.\"))),h.createElement(f,{flexDirection:\"column\"},h.createElement(f,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to install the selected packages.\")),h.createElement(f,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),I=()=>h.createElement(h.Fragment,null,h.createElement(f,{width:15},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Owner\")),h.createElement(f,{width:11},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Version\")),h.createElement(f,{width:10},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Downloads\"))),T=()=>h.createElement(f,{width:17},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Target\")),O=({hit:Ae,active:Ce})=>{let[Ee,g]=a(Ae.name,null);s({active:Ce},(me,ce)=>{if(ce.name!==\"space\")return;if(!Ee){g(CD[0]);return}let X=CD.indexOf(Ee)+1;X===CD.length?g(null):g(CD[X])},[Ee,g]);let Se=j.parseIdent(Ae.name),Be=j.prettyIdent(S,Se);return h.createElement(f,null,h.createElement(f,{width:45},h.createElement(p,{bold:!0,wrap:\"wrap\"},Be)),h.createElement(f,{width:14,marginLeft:1},h.createElement(p,{bold:!0,wrap:\"truncate\"},Ae.owner.name)),h.createElement(f,{width:10,marginLeft:1},h.createElement(p,{italic:!0,wrap:\"truncate\"},Ae.version)),h.createElement(f,{width:16,marginLeft:1},h.createElement(p,null,Ae.humanDownloadsLast30Days)))},U=({name:Ae,active:Ce})=>{let[Ee]=a(Ae,null),g=j.parseIdent(Ae);return h.createElement(f,null,h.createElement(f,{width:47},h.createElement(p,{bold:!0},\" - \",j.prettyIdent(S,g))),CD.map(Se=>h.createElement(f,{key:Se,width:14,marginLeft:1},h.createElement(p,null,\" \",h.createElement(t,{active:Ee===Se}),\" \",h.createElement(p,{bold:!0},Se)))))},Y=()=>h.createElement(f,{marginTop:1},h.createElement(p,null,\"Powered by Algolia.\")),ie=await n(({useSubmit:Ae})=>{let Ce=a();Ae(Ce);let Ee=Array.from(Ce.keys()).filter(_=>Ce.get(_)!==null),[g,Se]=C(\"\"),[Be,me]=C(0),[ce,X]=C([]),De=_=>{_.match(/\\t| /)||Se(_)},Qe=async()=>{me(0);let _=await Fq(g);_.query===g&&X(_.hits)},it=async()=>{let _=await Fq(g,Be+1);_.query===g&&_.page-1===Be&&(me(_.page),X([...ce,..._.hits]))};return E(()=>{g?Qe():X([])},[g]),h.createElement(f,{flexDirection:\"column\"},h.createElement(x,null),h.createElement(f,{flexDirection:\"row\",marginTop:1},h.createElement(p,{bold:!0},\"Search: \"),h.createElement(f,{width:41},h.createElement(c,{value:g,onChange:De,placeholder:\"i.e. babel, webpack, react...\",showCursor:!1})),h.createElement(I,null)),ce.length?h.createElement(r,{radius:2,loop:!1,children:ce.map(_=>h.createElement(O,{key:_.name,hit:_,active:!1})),willReachEnd:it}):h.createElement(p,{color:\"gray\"},\"Start typing...\"),h.createElement(f,{flexDirection:\"row\",marginTop:1},h.createElement(f,{width:49},h.createElement(p,{bold:!0},\"Selected:\")),h.createElement(T,null)),Ee.length?Ee.map(_=>h.createElement(U,{key:_,name:_,active:!1})):h.createElement(p,{color:\"gray\"},\"No selected packages...\"),h.createElement(Y,null))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ie>\"u\")return 1;let ue=Array.from(ie.keys()).filter(Ae=>ie.get(Ae)===\"regular\"),ae=Array.from(ie.keys()).filter(Ae=>ie.get(Ae)===\"dev\"),de=Array.from(ie.keys()).filter(Ae=>ie.get(Ae)===\"peer\");return ue.length&&await this.cli.run([\"add\",...ue]),ae.length&&await this.cli.run([\"add\",\"--dev\",...ae]),de&&await this.cli.run([\"add\",\"--peer\",...de]),0}};qe();Vt();cG();var Swe=et(pi());ul();var vwe=/^((?:[\\^~]|>=?)?)([0-9]+)(\\.[0-9]+)(\\.[0-9]+)((?:-\\S+)?)$/;function Dwe(e,t){return e.length>0?[e.slice(0,t)].concat(Dwe(e.slice(t),t)):[]}var pw=class extends At{constructor(){super(...arguments);this.mode=he.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:ks(Na)})}static{this.paths=[[\"upgrade-interactive\"]]}static{this.usage=at.Usage({category:\"Interactive commands\",description:\"open the upgrade interface\",details:\"\\n      This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n    \",examples:[[\"Open the upgrade window\",\"yarn upgrade-interactive\"]]})}async execute(){JC(this.context);let{ItemOptions:r}=await Promise.resolve().then(()=>(Bwe(),wwe)),{Pad:s}=await Promise.resolve().then(()=>(uW(),Cwe)),{ScrollableItems:a}=await Promise.resolve().then(()=>(TF(),RF)),{useMinistore:n,useMinistoreSetAll:c}=await Promise.resolve().then(()=>(oW(),sW)),{useKeypress:f}=await Promise.resolve().then(()=>(fw(),tW)),{renderForm:p}=await Promise.resolve().then(()=>(LF(),OF)),{Box:h,Text:E}=await Promise.resolve().then(()=>et(Gc())),{default:C,useCallback:S,useEffect:x,useRef:I,useState:T}=await Promise.resolve().then(()=>et(gn())),O=await ze.find(this.context.cwd,this.context.plugins),{project:U,workspace:Y}=await Rt.find(O,this.context.cwd),te=await Jr.find(O);if(!Y)throw new ar(U.cwd,this.context.cwd);await U.restoreInstallState({restoreResolutions:!1});let ie=this.context.stdout.rows-8,ue=(X,De)=>{let Qe=i0e(X,De),it=\"\";for(let _ of Qe)_.added?it+=pe.pretty(O,_.value,\"green\"):_.removed||(it+=_.value);return it},ae=(X,De)=>{if(X===De)return De;let Qe=j.parseRange(X),it=j.parseRange(De),_=Qe.selector.match(vwe),tt=it.selector.match(vwe);if(!_||!tt)return ue(X,De);let Ne=[\"gray\",\"red\",\"yellow\",\"green\",\"magenta\"],ke=null,be=\"\";for(let je=1;je<Ne.length;++je)ke!==null||_[je]!==tt[je]?(ke===null&&(ke=Ne[je-1]),be+=pe.pretty(O,tt[je],ke)):be+=tt[je];return be},de=async(X,De,Qe)=>{let it=await $u.fetchDescriptorFrom(X,Qe,{project:U,cache:te,preserveModifier:De,workspace:Y});return it!==null?it.range:X.range},Ae=async X=>{let De=Swe.default.valid(X.range)?`^${X.range}`:X.range,[Qe,it]=await Promise.all([de(X,X.range,De).catch(()=>null),de(X,X.range,\"latest\").catch(()=>null)]),_=[{value:null,label:X.range}];return Qe&&Qe!==X.range?_.push({value:Qe,label:ae(X.range,Qe)}):_.push({value:null,label:\"\"}),it&&it!==Qe&&it!==X.range?_.push({value:it,label:ae(X.range,it)}):_.push({value:null,label:\"\"}),_},Ce=()=>C.createElement(h,{flexDirection:\"row\"},C.createElement(h,{flexDirection:\"column\",width:49},C.createElement(h,{marginLeft:1},C.createElement(E,null,\"Press \",C.createElement(E,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",C.createElement(E,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to select packages.\")),C.createElement(h,{marginLeft:1},C.createElement(E,null,\"Press \",C.createElement(E,{bold:!0,color:\"cyanBright\"},\"<left>\"),\"/\",C.createElement(E,{bold:!0,color:\"cyanBright\"},\"<right>\"),\" to select versions.\")),C.createElement(h,{marginLeft:1},C.createElement(E,null,\"Press \",C.createElement(E,{bold:!0,color:\"cyanBright\"},\"c\"),\"/\",C.createElement(E,{bold:!0,color:\"cyanBright\"},\"r\"),\"/\",C.createElement(E,{bold:!0,color:\"cyanBright\"},\"l\"),\" to select all \",C.createElement(E,{bold:!0,color:\"cyanBright\"},\"current\"),\"/\",C.createElement(E,{bold:!0,color:\"cyanBright\"},\"range\"),\"/\",C.createElement(E,{bold:!0,color:\"cyanBright\"},\"latest\"),\".\"))),C.createElement(h,{flexDirection:\"column\"},C.createElement(h,{marginLeft:1},C.createElement(E,null,\"Press \",C.createElement(E,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to install.\")),C.createElement(h,{marginLeft:1},C.createElement(E,null,\"Press \",C.createElement(E,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),Ee=()=>C.createElement(h,{flexDirection:\"row\",paddingTop:1,paddingBottom:1},C.createElement(h,{width:50},C.createElement(E,{bold:!0},C.createElement(E,{color:\"greenBright\"},\"?\"),\" Pick the packages you want to upgrade.\")),C.createElement(h,{width:17},C.createElement(E,{bold:!0,underline:!0,color:\"gray\"},\"Current\")),C.createElement(h,{width:17},C.createElement(E,{bold:!0,underline:!0,color:\"gray\"},\"Range\")),C.createElement(h,{width:17},C.createElement(E,{bold:!0,underline:!0,color:\"gray\"},\"Latest\"))),g=({active:X,descriptor:De,suggestions:Qe})=>{let[it,_]=n(De.descriptorHash,null),tt=j.stringifyIdent(De),Ne=Math.max(0,45-tt.length);return C.createElement(C.Fragment,null,C.createElement(h,null,C.createElement(h,{width:45},C.createElement(E,{bold:!0},j.prettyIdent(O,De)),C.createElement(s,{active:X,length:Ne})),C.createElement(r,{active:X,options:Qe,value:it,skewer:!0,onChange:_,sizes:[17,17,17]})))},Se=({dependencies:X})=>{let De=c(),[Qe,it]=T(X.map(()=>null)),_=I(!0),tt=async ke=>{let be=await Ae(ke);return be.filter(je=>je.label!==\"\").length<=1?null:{descriptor:ke,suggestions:be}};x(()=>()=>{_.current=!1},[]),x(()=>{let ke=Math.trunc(ie*1.75),be=X.slice(0,ke),je=X.slice(ke),Re=Dwe(je,ie),ct=be.map(tt).reduce(async(Me,P)=>{await Me;let w=await P;w!==null&&_.current&&it(b=>{let y=b.findIndex(z=>z===null),F=[...b];return F[y]=w,F})},Promise.resolve());Re.reduce((Me,P)=>Promise.all(P.map(w=>Promise.resolve().then(()=>tt(w)))).then(async w=>{w=w.filter(b=>b!==null),await Me,_.current&&it(b=>{let y=b.findIndex(F=>F===null);return b.slice(0,y).concat(w).concat(b.slice(y+w.length))})}),ct).then(()=>{_.current&&it(Me=>Me.filter(P=>P!==null))})},[]);let Ne=S(ke=>{if(ke!==\"c\"&&ke!==\"r\"&&ke!==\"l\")return;let be=[];for(let je of Qe){if(je===null)continue;let Re;ke===\"c\"?Re=null:ke===\"r\"?Re=je.suggestions[1].value:Re=je.suggestions[2].value??je.suggestions[1].value,be.push([je.descriptor.descriptorHash,Re])}De(be)},[Qe,De]);return f({active:!0},Ne,[Ne]),Qe.length?C.createElement(a,{radius:ie>>1,children:Qe.map((ke,be)=>ke!==null?C.createElement(g,{key:be,active:!1,descriptor:ke.descriptor,suggestions:ke.suggestions}):C.createElement(E,{key:be},\"Loading...\"))}):C.createElement(E,null,\"No upgrades found\")},me=await p(({useSubmit:X})=>{X(n());let De=new Map;for(let it of U.workspaces)for(let _ of[\"dependencies\",\"devDependencies\"])for(let tt of it.manifest[_].values())U.tryWorkspaceByDescriptor(tt)===null&&(tt.range.startsWith(\"link:\")||De.set(tt.descriptorHash,tt));let Qe=Ge.sortMap(De.values(),it=>j.stringifyDescriptor(it));return C.createElement(h,{flexDirection:\"column\"},C.createElement(Ce,null),C.createElement(Ee,null),C.createElement(Se,{dependencies:Qe}))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof me>\"u\")return 1;let ce=!1;for(let X of U.workspaces)for(let De of[\"dependencies\",\"devDependencies\"]){let Qe=X.manifest[De];for(let it of Qe.values()){let _=me.get(it.descriptorHash);typeof _<\"u\"&&_!==null&&(Qe.set(it.identHash,j.makeDescriptor(it,_)),ce=!0)}}return ce?await U.installWithNewReport({quiet:this.context.quiet,stdout:this.context.stdout},{cache:te,mode:this.mode}):0}};var Upt={commands:[Aw,pw]},_pt=Upt;var pW={};Yt(pW,{default:()=>qpt});qe();var BD=\"jsr:\";qe();qe();function hw(e){let t=e.range.slice(4);if(Fr.validRange(t))return j.makeDescriptor(e,`npm:${j.stringifyIdent(j.wrapIdentIntoScope(e,\"jsr\"))}@${t}`);let r=j.tryParseDescriptor(t,!0);if(r!==null)return j.makeDescriptor(e,`npm:${j.stringifyIdent(j.wrapIdentIntoScope(r,\"jsr\"))}@${r.range}`);throw new Error(`Invalid range: ${e.range}`)}function gw(e){return j.makeLocator(j.wrapIdentIntoScope(e,\"jsr\"),`npm:${e.reference.slice(4)}`)}function AW(e){return j.makeLocator(j.unwrapIdentFromScope(e,\"jsr\"),`jsr:${e.reference.slice(4)}`)}var MF=class{supports(t,r){return t.reference.startsWith(BD)}getLocalPath(t,r){let s=gw(t);return r.fetcher.getLocalPath(s,r)}fetch(t,r){let s=gw(t);return r.fetcher.fetch(s,r)}};var UF=class{supportsDescriptor(t,r){return!!t.range.startsWith(BD)}supportsLocator(t,r){return!!t.reference.startsWith(BD)}shouldPersistResolution(t,r){let s=gw(t);return r.resolver.shouldPersistResolution(s,r)}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{inner:hw(t)}}async getCandidates(t,r,s){let a=s.project.configuration.normalizeDependency(hw(t));return(await s.resolver.getCandidates(a,r,s)).map(c=>AW(c))}async getSatisfying(t,r,s,a){let n=a.project.configuration.normalizeDependency(hw(t));return a.resolver.getSatisfying(n,r,s,a)}async resolve(t,r){let s=gw(t),a=await r.resolver.resolve(s,r);return{...a,...AW(a)}}};var Hpt=[\"dependencies\",\"devDependencies\",\"peerDependencies\"];function jpt(e,t){for(let r of Hpt)for(let s of e.manifest.getForScope(r).values()){if(!s.range.startsWith(\"jsr:\"))continue;let a=hw(s),n=r===\"dependencies\"?j.makeDescriptor(s,\"unknown\"):null,c=n!==null&&e.manifest.ensureDependencyMeta(n).optional?\"optionalDependencies\":r;t[c][j.stringifyIdent(s)]=a.range}}var Gpt={hooks:{beforeWorkspacePacking:jpt},resolvers:[UF],fetchers:[MF]},qpt=Gpt;var hW={};Yt(hW,{LinkFetcher:()=>vD,LinkResolver:()=>SD,PortalFetcher:()=>DD,PortalResolver:()=>bD,default:()=>Vpt});qe();Dt();var eh=\"portal:\",th=\"link:\";var vD=class{supports(t,r){return!!t.reference.startsWith(th)}getLocalPath(t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(t.reference,{protocol:th});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:K.resolve(n,a)}async fetch(t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(t.reference,{protocol:th}),n=K.isAbsolute(a)?{packageFs:new bn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new bn(vt.root),prefixPath:K.relative(vt.root,n.localPath),localPath:vt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=K.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new bn(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,discardFromLookup:!0,localPath:p}:{packageFs:new Gf(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,discardFromLookup:!0}}};qe();Dt();var SD=class{supportsDescriptor(t,r){return!!t.range.startsWith(th)}supportsLocator(t,r){return!!t.reference.startsWith(th)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return j.bindDescriptor(t,{locator:j.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=t.range.slice(th.length);return[j.makeLocator(t,`${th}${fe.toPortablePath(a)}`)]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){return{...t,version:\"0.0.0\",languageName:r.project.configuration.get(\"defaultLanguageName\"),linkType:\"SOFT\",conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map}}};qe();Dt();var DD=class{supports(t,r){return!!t.reference.startsWith(eh)}getLocalPath(t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(t.reference,{protocol:eh});if(K.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:K.resolve(n,a)}async fetch(t,r){let{parentLocator:s,path:a}=j.parseFileStyleRange(t.reference,{protocol:eh}),n=K.isAbsolute(a)?{packageFs:new bn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new bn(vt.root),prefixPath:K.relative(vt.root,n.localPath),localPath:vt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=K.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new bn(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,localPath:p}:{packageFs:new Gf(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot}}};qe();qe();Dt();var bD=class{supportsDescriptor(t,r){return!!t.range.startsWith(eh)}supportsLocator(t,r){return!!t.reference.startsWith(eh)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){return j.bindDescriptor(t,{locator:j.stringifyLocator(r)})}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=t.range.slice(eh.length);return[j.makeLocator(t,`${eh}${fe.toPortablePath(a)}`)]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let s=await r.fetchOptions.fetcher.fetch(t,r.fetchOptions),a=await Ge.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...t,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"SOFT\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Wpt={fetchers:[vD,DD],resolvers:[SD,bD]},Vpt=Wpt;var ZW={};Yt(ZW,{NodeModulesLinker:()=>jD,NodeModulesMode:()=>YW,PnpLooseLinker:()=>GD,default:()=>c0t});Dt();qe();Dt();Dt();var dW=(e,t)=>`${e}@${t}`,bwe=(e,t)=>{let r=t.indexOf(\"#\"),s=r>=0?t.substring(r+1):t;return dW(e,s)};var xwe=(e,t={})=>{let r=t.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),s=t.check||r>=9,a=t.hoistingLimits||new Map,n={check:s,debugLevel:r,hoistingLimits:a,fastLookupPossible:!0},c;n.debugLevel>=0&&(c=Date.now());let f=$pt(e,n),p=!1,h=0;do{let E=mW(f,[f],new Set([f.locator]),new Map,n);p=E.anotherRoundNeeded||E.isGraphChanged,n.fastLookupPossible=!1,h++}while(p);if(n.debugLevel>=0&&console.log(`hoist time: ${Date.now()-c}ms, rounds: ${h}`),n.debugLevel>=1){let E=PD(f);if(mW(f,[f],new Set([f.locator]),new Map,n).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree:\n${E}, next tree:\n${PD(f)}`);let S=kwe(f);if(S)throw new Error(`${S}, after hoisting finished:\n${PD(f)}`)}return n.debugLevel>=2&&console.log(PD(f)),eht(f)},Ypt=e=>{let t=e[e.length-1],r=new Map,s=new Set,a=n=>{if(!s.has(n)){s.add(n);for(let c of n.hoistedDependencies.values())r.set(c.name,c);for(let c of n.dependencies.values())n.peerNames.has(c.name)||a(c)}};return a(t),r},Kpt=e=>{let t=e[e.length-1],r=new Map,s=new Set,a=new Set,n=(c,f)=>{if(s.has(c))return;s.add(c);for(let h of c.hoistedDependencies.values())if(!f.has(h.name)){let E;for(let C of e)E=C.dependencies.get(h.name),E&&r.set(E.name,E)}let p=new Set;for(let h of c.dependencies.values())p.add(h.name);for(let h of c.dependencies.values())c.peerNames.has(h.name)||n(h,p)};return n(t,a),r},Pwe=(e,t)=>{if(t.decoupled)return t;let{name:r,references:s,ident:a,locator:n,dependencies:c,originalDependencies:f,hoistedDependencies:p,peerNames:h,reasons:E,isHoistBorder:C,hoistPriority:S,dependencyKind:x,hoistedFrom:I,hoistedTo:T}=t,O={name:r,references:new Set(s),ident:a,locator:n,dependencies:new Map(c),originalDependencies:new Map(f),hoistedDependencies:new Map(p),peerNames:new Set(h),reasons:new Map(E),decoupled:!0,isHoistBorder:C,hoistPriority:S,dependencyKind:x,hoistedFrom:new Map(I),hoistedTo:new Map(T)},U=O.dependencies.get(r);return U&&U.ident==O.ident&&O.dependencies.set(r,O),e.dependencies.set(O.name,O),O},Jpt=(e,t)=>{let r=new Map([[e.name,[e.ident]]]);for(let a of e.dependencies.values())e.peerNames.has(a.name)||r.set(a.name,[a.ident]);let s=Array.from(t.keys());s.sort((a,n)=>{let c=t.get(a),f=t.get(n);if(f.hoistPriority!==c.hoistPriority)return f.hoistPriority-c.hoistPriority;{let p=c.dependents.size+c.peerDependents.size;return f.dependents.size+f.peerDependents.size-p}});for(let a of s){let n=a.substring(0,a.indexOf(\"@\",1)),c=a.substring(n.length+1);if(!e.peerNames.has(n)){let f=r.get(n);f||(f=[],r.set(n,f)),f.indexOf(c)<0&&f.push(c)}}return r},gW=e=>{let t=new Set,r=(s,a=new Set)=>{if(!a.has(s)){a.add(s);for(let n of s.peerNames)if(!e.peerNames.has(n)){let c=e.dependencies.get(n);c&&!t.has(c)&&r(c,a)}t.add(s)}};for(let s of e.dependencies.values())e.peerNames.has(s.name)||r(s);return t},mW=(e,t,r,s,a,n=new Set)=>{let c=t[t.length-1];if(n.has(c))return{anotherRoundNeeded:!1,isGraphChanged:!1};n.add(c);let f=tht(c),p=Jpt(c,f),h=e==c?new Map:a.fastLookupPossible?Ypt(t):Kpt(t),E,C=!1,S=!1,x=new Map(Array.from(p.entries()).map(([T,O])=>[T,O[0]])),I=new Map;do{let T=Xpt(e,t,r,h,x,p,s,I,a);T.isGraphChanged&&(S=!0),T.anotherRoundNeeded&&(C=!0),E=!1;for(let[O,U]of p)U.length>1&&!c.dependencies.has(O)&&(x.delete(O),U.shift(),x.set(O,U[0]),E=!0)}while(E);for(let T of c.dependencies.values())if(!c.peerNames.has(T.name)&&!r.has(T.locator)){r.add(T.locator);let O=mW(e,[...t,T],r,I,a);O.isGraphChanged&&(S=!0),O.anotherRoundNeeded&&(C=!0),r.delete(T.locator)}return{anotherRoundNeeded:C,isGraphChanged:S}},zpt=e=>{for(let[t,r]of e.dependencies)if(!e.peerNames.has(t)&&r.ident!==e.ident)return!0;return!1},Zpt=(e,t,r,s,a,n,c,f,{outputReason:p,fastLookupPossible:h})=>{let E,C=null,S=new Set;p&&(E=`${Array.from(t).map(O=>Bo(O)).join(\"\\u2192\")}`);let x=r[r.length-1],T=!(s.ident===x.ident);if(p&&!T&&(C=\"- self-reference\"),T&&(T=s.dependencyKind!==1,p&&!T&&(C=\"- workspace\")),T&&s.dependencyKind===2&&(T=!zpt(s),p&&!T&&(C=\"- external soft link with unhoisted dependencies\")),T&&(T=!e.peerNames.has(s.name),p&&!T&&(C=`- cannot shadow peer: ${Bo(e.originalDependencies.get(s.name).locator)} at ${E}`)),T){let O=!1,U=a.get(s.name);if(O=!U||U.ident===s.ident,p&&!O&&(C=`- filled by: ${Bo(U.locator)} at ${E}`),O)for(let Y=r.length-1;Y>=1;Y--){let ie=r[Y].dependencies.get(s.name);if(ie&&ie.ident!==s.ident){O=!1;let ue=f.get(x);ue||(ue=new Set,f.set(x,ue)),ue.add(s.name),p&&(C=`- filled by ${Bo(ie.locator)} at ${r.slice(0,Y).map(ae=>Bo(ae.locator)).join(\"\\u2192\")}`);break}}T=O}if(T&&(T=n.get(s.name)===s.ident,p&&!T&&(C=`- filled by: ${Bo(c.get(s.name)[0])} at ${E}`)),T){let O=!0,U=new Set(s.peerNames);for(let Y=r.length-1;Y>=1;Y--){let te=r[Y];for(let ie of U){if(te.peerNames.has(ie)&&te.originalDependencies.has(ie))continue;let ue=te.dependencies.get(ie);ue&&e.dependencies.get(ie)!==ue&&(Y===r.length-1?S.add(ue):(S=null,O=!1,p&&(C=`- peer dependency ${Bo(ue.locator)} from parent ${Bo(te.locator)} was not hoisted to ${E}`))),U.delete(ie)}if(!O)break}T=O}if(T&&!h)for(let O of s.hoistedDependencies.values()){let U=a.get(O.name)||e.dependencies.get(O.name);if(!U||O.ident!==U.ident){T=!1,p&&(C=`- previously hoisted dependency mismatch, needed: ${Bo(O.locator)}, available: ${Bo(U?.locator)}`);break}}return S!==null&&S.size>0?{isHoistable:2,dependsOn:S,reason:C}:{isHoistable:T?0:1,reason:C}},_F=e=>`${e.name}@${e.locator}`,Xpt=(e,t,r,s,a,n,c,f,p)=>{let h=t[t.length-1],E=new Set,C=!1,S=!1,x=(U,Y,te,ie,ue)=>{if(E.has(ie))return;let ae=[...Y,_F(ie)],de=[...te,_F(ie)],Ae=new Map,Ce=new Map;for(let me of gW(ie)){let ce=Zpt(h,r,[h,...U,ie],me,s,a,n,f,{outputReason:p.debugLevel>=2,fastLookupPossible:p.fastLookupPossible});if(Ce.set(me,ce),ce.isHoistable===2)for(let X of ce.dependsOn){let De=Ae.get(X.name)||new Set;De.add(me.name),Ae.set(X.name,De)}}let Ee=new Set,g=(me,ce,X)=>{if(!Ee.has(me)){Ee.add(me),Ce.set(me,{isHoistable:1,reason:X});for(let De of Ae.get(me.name)||[])g(ie.dependencies.get(De),ce,p.debugLevel>=2?`- peer dependency ${Bo(me.locator)} from parent ${Bo(ie.locator)} was not hoisted`:\"\")}};for(let[me,ce]of Ce)ce.isHoistable===1&&g(me,ce,ce.reason);let Se=!1;for(let me of Ce.keys())if(!Ee.has(me)){S=!0;let ce=c.get(ie);ce&&ce.has(me.name)&&(C=!0),Se=!0,ie.dependencies.delete(me.name),ie.hoistedDependencies.set(me.name,me),ie.reasons.delete(me.name);let X=h.dependencies.get(me.name);if(p.debugLevel>=2){let De=Array.from(Y).concat([ie.locator]).map(it=>Bo(it)).join(\"\\u2192\"),Qe=h.hoistedFrom.get(me.name);Qe||(Qe=[],h.hoistedFrom.set(me.name,Qe)),Qe.push(De),ie.hoistedTo.set(me.name,Array.from(t).map(it=>Bo(it.locator)).join(\"\\u2192\"))}if(!X)h.ident!==me.ident&&(h.dependencies.set(me.name,me),ue.add(me));else for(let De of me.references)X.references.add(De)}if(ie.dependencyKind===2&&Se&&(C=!0),p.check){let me=kwe(e);if(me)throw new Error(`${me}, after hoisting dependencies of ${[h,...U,ie].map(ce=>Bo(ce.locator)).join(\"\\u2192\")}:\n${PD(e)}`)}let Be=gW(ie);for(let me of Be)if(Ee.has(me)){let ce=Ce.get(me);if((a.get(me.name)===me.ident||!ie.reasons.has(me.name))&&ce.isHoistable!==0&&ie.reasons.set(me.name,ce.reason),!me.isHoistBorder&&de.indexOf(_F(me))<0){E.add(ie);let De=Pwe(ie,me);x([...U,ie],ae,de,De,T),E.delete(ie)}}},I,T=new Set(gW(h)),O=Array.from(t).map(U=>_F(U));do{I=T,T=new Set;for(let U of I){if(U.locator===h.locator||U.isHoistBorder)continue;let Y=Pwe(h,U);x([],Array.from(r),O,Y,T)}}while(T.size>0);return{anotherRoundNeeded:C,isGraphChanged:S}},kwe=e=>{let t=[],r=new Set,s=new Set,a=(n,c,f)=>{if(r.has(n)||(r.add(n),s.has(n)))return;let p=new Map(c);for(let h of n.dependencies.values())n.peerNames.has(h.name)||p.set(h.name,h);for(let h of n.originalDependencies.values()){let E=p.get(h.name),C=()=>`${Array.from(s).concat([n]).map(S=>Bo(S.locator)).join(\"\\u2192\")}`;if(n.peerNames.has(h.name)){let S=c.get(h.name);(S!==E||!S||S.ident!==h.ident)&&t.push(`${C()} - broken peer promise: expected ${h.ident} but found ${S&&S.ident}`)}else{let S=f.hoistedFrom.get(n.name),x=n.hoistedTo.get(h.name),I=`${S?` hoisted from ${S.join(\", \")}`:\"\"}`,T=`${x?` hoisted to ${x}`:\"\"}`,O=`${C()}${I}`;E?E.ident!==h.ident&&t.push(`${O} - broken require promise for ${h.name}${T}: expected ${h.ident}, but found: ${E.ident}`):t.push(`${O} - broken require promise: no required dependency ${h.name}${T} found`)}}s.add(n);for(let h of n.dependencies.values())n.peerNames.has(h.name)||a(h,p,n);s.delete(n)};return a(e,e.dependencies,e),t.join(`\n`)},$pt=(e,t)=>{let{identName:r,name:s,reference:a,peerNames:n}=e,c={name:s,references:new Set([a]),locator:dW(r,a),ident:bwe(r,a),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(n),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},f=new Map([[e,c]]),p=(h,E)=>{let C=f.get(h),S=!!C;if(!C){let{name:x,identName:I,reference:T,peerNames:O,hoistPriority:U,dependencyKind:Y}=h,te=t.hoistingLimits.get(E.locator);C={name:x,references:new Set([T]),locator:dW(I,T),ident:bwe(I,T),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(O),reasons:new Map,decoupled:!0,isHoistBorder:te?te.has(x):!1,hoistPriority:U||0,dependencyKind:Y||0,hoistedFrom:new Map,hoistedTo:new Map},f.set(h,C)}if(E.dependencies.set(h.name,C),E.originalDependencies.set(h.name,C),S){let x=new Set,I=T=>{if(!x.has(T)){x.add(T),T.decoupled=!1;for(let O of T.dependencies.values())T.peerNames.has(O.name)||I(O)}};I(C)}else for(let x of h.dependencies)p(x,C)};for(let h of e.dependencies)p(h,c);return c},yW=e=>e.substring(0,e.indexOf(\"@\",1)),eht=e=>{let t={name:e.name,identName:yW(e.locator),references:new Set(e.references),dependencies:new Set},r=new Set([e]),s=(a,n,c)=>{let f=r.has(a),p;if(n===a)p=c;else{let{name:h,references:E,locator:C}=a;p={name:h,identName:yW(C),references:E,dependencies:new Set}}if(c.dependencies.add(p),!f){r.add(a);for(let h of a.dependencies.values())a.peerNames.has(h.name)||s(h,a,p);r.delete(a)}};for(let a of e.dependencies.values())s(a,e,t);return t},tht=e=>{let t=new Map,r=new Set([e]),s=c=>`${c.name}@${c.ident}`,a=c=>{let f=s(c),p=t.get(f);return p||(p={dependents:new Set,peerDependents:new Set,hoistPriority:0},t.set(f,p)),p},n=(c,f)=>{let p=!!r.has(f);if(a(f).dependents.add(c.ident),!p){r.add(f);for(let E of f.dependencies.values()){let C=a(E);C.hoistPriority=Math.max(C.hoistPriority,E.hoistPriority),f.peerNames.has(E.name)?C.peerDependents.add(f.ident):n(f,E)}}};for(let c of e.dependencies.values())e.peerNames.has(c.name)||n(e,c);return t},Bo=e=>{if(!e)return\"none\";let t=e.indexOf(\"@\",1),r=e.substring(0,t);r.endsWith(\"$wsroot$\")&&(r=`wh:${r.replace(\"$wsroot$\",\"\")}`);let s=e.substring(t+1);if(s===\"workspace:.\")return\".\";if(s){let a=(s.indexOf(\"#\")>0?s.split(\"#\")[1]:s).replace(\"npm:\",\"\");return s.startsWith(\"virtual\")&&(r=`v:${r}`),a.startsWith(\"workspace\")&&(r=`w:${r}`,a=\"\"),`${r}${a?`@${a}`:\"\"}`}else return`${r}`};var PD=e=>{let t=0,r=(a,n,c=\"\")=>{if(t>5e4||n.has(a))return\"\";t++;let f=Array.from(a.dependencies.values()).sort((h,E)=>h.name===E.name?0:h.name>E.name?1:-1),p=\"\";n.add(a);for(let h=0;h<f.length;h++){let E=f[h];if(!a.peerNames.has(E.name)&&E!==a){let C=a.reasons.get(E.name),S=yW(E.locator);p+=`${c}${h<f.length-1?\"\\u251C\\u2500\":\"\\u2514\\u2500\"}${(n.has(E)?\">\":\"\")+(S!==E.name?`a:${E.name}:`:\"\")+Bo(E.locator)+(C?` ${C}`:\"\")}\n`,p+=r(E,n,`${c}${h<f.length-1?\"\\u2502 \":\"  \"}`)}}return n.delete(a),p};return r(e,new Set)+(t>5e4?`\nTree is too large, part of the tree has been dunped\n`:\"\")};var xD=(s=>(s.WORKSPACES=\"workspaces\",s.DEPENDENCIES=\"dependencies\",s.NONE=\"none\",s))(xD||{}),Qwe=\"node_modules\",eg=\"$wsroot$\";var kD=(e,t)=>{let{packageTree:r,hoistingLimits:s,errors:a,preserveSymlinksRequired:n}=nht(e,t),c=null;if(a.length===0){let f=xwe(r,{hoistingLimits:s});c=sht(e,f,t)}return{tree:c,errors:a,preserveSymlinksRequired:n}},hA=e=>`${e.name}@${e.reference}`,IW=e=>{let t=new Map;for(let[r,s]of e.entries())if(!s.dirList){let a=t.get(s.locator);a||(a={target:s.target,linkType:s.linkType,locations:[],aliases:s.aliases},t.set(s.locator,a)),a.locations.push(r)}for(let r of t.values())r.locations=r.locations.sort((s,a)=>{let n=s.split(K.delimiter).length,c=a.split(K.delimiter).length;return a===s?0:n!==c?c-n:a>s?1:-1});return t},Rwe=(e,t)=>{let r=j.isVirtualLocator(e)?j.devirtualizeLocator(e):e,s=j.isVirtualLocator(t)?j.devirtualizeLocator(t):t;return j.areLocatorsEqual(r,s)},EW=(e,t,r,s)=>{if(e.linkType!==\"SOFT\")return!1;let a=fe.toPortablePath(r.resolveVirtual&&t.reference&&t.reference.startsWith(\"virtual:\")?r.resolveVirtual(e.packageLocation):e.packageLocation);return K.contains(s,a)===null},rht=e=>{let t=e.getPackageInformation(e.topLevel);if(t===null)throw new Error(\"Assertion failed: Expected the top-level package to have been registered\");if(e.findPackageLocator(t.packageLocation)===null)throw new Error(\"Assertion failed: Expected the top-level package to have a physical locator\");let s=fe.toPortablePath(t.packageLocation.slice(0,-1)),a=new Map,n={children:new Map},c=e.getDependencyTreeRoots(),f=new Map,p=new Set,h=(S,x)=>{let I=hA(S);if(p.has(I))return;p.add(I);let T=e.getPackageInformation(S);if(T){let O=x?hA(x):\"\";if(hA(S)!==O&&T.linkType===\"SOFT\"&&!S.reference.startsWith(\"link:\")&&!EW(T,S,e,s)){let U=Twe(T,S,e);(!f.get(U)||S.reference.startsWith(\"workspace:\"))&&f.set(U,S)}for(let[U,Y]of T.packageDependencies)Y!==null&&(T.packagePeers.has(U)||h(e.getLocator(U,Y),S))}};for(let S of c)h(S,null);let E=s.split(K.sep);for(let S of f.values()){let x=e.getPackageInformation(S),T=fe.toPortablePath(x.packageLocation.slice(0,-1)).split(K.sep).slice(E.length),O=n;for(let U of T){let Y=O.children.get(U);Y||(Y={children:new Map},O.children.set(U,Y)),O=Y}O.workspaceLocator=S}let C=(S,x)=>{if(S.workspaceLocator){let I=hA(x),T=a.get(I);T||(T=new Set,a.set(I,T)),T.add(S.workspaceLocator)}for(let I of S.children.values())C(I,S.workspaceLocator||x)};for(let S of n.children.values())C(S,n.workspaceLocator);return a},nht=(e,t)=>{let r=[],s=!1,a=new Map,n=rht(e),c=e.getPackageInformation(e.topLevel);if(c===null)throw new Error(\"Assertion failed: Expected the top-level package to have been registered\");let f=e.findPackageLocator(c.packageLocation);if(f===null)throw new Error(\"Assertion failed: Expected the top-level package to have a physical locator\");let p=fe.toPortablePath(c.packageLocation.slice(0,-1)),h={name:f.name,identName:f.name,reference:f.reference,peerNames:c.packagePeers,dependencies:new Set,dependencyKind:1},E=new Map,C=(x,I)=>`${hA(I)}:${x}`,S=(x,I,T,O,U,Y,te,ie)=>{let ue=C(x,T),ae=E.get(ue),de=!!ae;!de&&T.name===f.name&&T.reference===f.reference&&(ae=h,E.set(ue,h));let Ae=EW(I,T,e,p);if(!ae){let me=0;Ae?me=2:I.linkType===\"SOFT\"&&T.name.endsWith(eg)&&(me=1),ae={name:x,identName:T.name,reference:T.reference,dependencies:new Set,peerNames:me===1?new Set:I.packagePeers,dependencyKind:me},E.set(ue,ae)}let Ce;if(Ae?Ce=2:U.linkType===\"SOFT\"?Ce=1:Ce=0,ae.hoistPriority=Math.max(ae.hoistPriority||0,Ce),ie&&!Ae){let me=hA({name:O.identName,reference:O.reference}),ce=a.get(me)||new Set;a.set(me,ce),ce.add(ae.name)}let Ee=new Map(I.packageDependencies);if(t.project){let me=t.project.workspacesByCwd.get(fe.toPortablePath(I.packageLocation.slice(0,-1)));if(me){let ce=new Set([...Array.from(me.manifest.peerDependencies.values(),X=>j.stringifyIdent(X)),...Array.from(me.manifest.peerDependenciesMeta.keys())]);for(let X of ce)Ee.has(X)||(Ee.set(X,Y.get(X)||null),ae.peerNames.add(X))}}let g=hA({name:T.name.replace(eg,\"\"),reference:T.reference}),Se=n.get(g);if(Se)for(let me of Se)Ee.set(`${me.name}${eg}`,me.reference);(I!==U||I.linkType!==\"SOFT\"||!Ae&&(!t.selfReferencesByCwd||t.selfReferencesByCwd.get(te)))&&O.dependencies.add(ae);let Be=T!==f&&I.linkType===\"SOFT\"&&!T.name.endsWith(eg)&&!Ae;if(!de&&!Be){let me=new Map;for(let[ce,X]of Ee)if(X!==null){let De=e.getLocator(ce,X),Qe=e.getLocator(ce.replace(eg,\"\"),X),it=e.getPackageInformation(Qe);if(it===null)throw new Error(\"Assertion failed: Expected the package to have been registered\");let _=EW(it,De,e,p);if(t.validateExternalSoftLinks&&t.project&&_){it.packageDependencies.size>0&&(s=!0);for(let[je,Re]of it.packageDependencies)if(Re!==null){let ct=j.parseLocator(Array.isArray(Re)?`${Re[0]}@${Re[1]}`:`${je}@${Re}`);if(hA(ct)!==hA(De)){let Me=Ee.get(je);if(Me){let P=j.parseLocator(Array.isArray(Me)?`${Me[0]}@${Me[1]}`:`${je}@${Me}`);Rwe(P,ct)||r.push({messageName:71,text:`Cannot link ${j.prettyIdent(t.project.configuration,j.parseIdent(De.name))} into ${j.prettyLocator(t.project.configuration,j.parseLocator(`${T.name}@${T.reference}`))} dependency ${j.prettyLocator(t.project.configuration,ct)} conflicts with parent dependency ${j.prettyLocator(t.project.configuration,P)}`})}else{let P=me.get(je);if(P){let w=P.target,b=j.parseLocator(Array.isArray(w)?`${w[0]}@${w[1]}`:`${je}@${w}`);Rwe(b,ct)||r.push({messageName:71,text:`Cannot link ${j.prettyIdent(t.project.configuration,j.parseIdent(De.name))} into ${j.prettyLocator(t.project.configuration,j.parseLocator(`${T.name}@${T.reference}`))} dependency ${j.prettyLocator(t.project.configuration,ct)} conflicts with dependency ${j.prettyLocator(t.project.configuration,b)} from sibling portal ${j.prettyIdent(t.project.configuration,j.parseIdent(P.portal.name))}`})}else me.set(je,{target:ct.reference,portal:De})}}}}let tt=t.hoistingLimitsByCwd?.get(te),Ne=_?te:K.relative(p,fe.toPortablePath(it.packageLocation))||vt.dot,ke=t.hoistingLimitsByCwd?.get(Ne);S(ce,it,De,ae,I,Ee,Ne,tt===\"dependencies\"||ke===\"dependencies\"||ke===\"workspaces\")}}};return S(f.name,c,f,h,c,c.packageDependencies,vt.dot,!1),{packageTree:h,hoistingLimits:a,errors:r,preserveSymlinksRequired:s}};function Twe(e,t,r){let s=r.resolveVirtual&&t.reference&&t.reference.startsWith(\"virtual:\")?r.resolveVirtual(e.packageLocation):e.packageLocation;return fe.toPortablePath(s||e.packageLocation)}function iht(e,t,r){let s=t.getLocator(e.name.replace(eg,\"\"),e.reference),a=t.getPackageInformation(s);if(a===null)throw new Error(\"Assertion failed: Expected the package to be registered\");return r.pnpifyFs?{linkType:\"SOFT\",target:fe.toPortablePath(a.packageLocation)}:{linkType:a.linkType,target:Twe(a,e,t)}}var sht=(e,t,r)=>{let s=new Map,a=(E,C,S)=>{let{linkType:x,target:I}=iht(E,e,r);return{locator:hA(E),nodePath:C,target:I,linkType:x,aliases:S}},n=E=>{let[C,S]=E.split(\"/\");return S?{scope:C,name:S}:{scope:null,name:C}},c=new Set,f=(E,C,S)=>{if(c.has(E))return;c.add(E);let x=Array.from(E.references).sort().join(\"#\");for(let I of E.dependencies){let T=Array.from(I.references).sort().join(\"#\");if(I.identName===E.identName.replace(eg,\"\")&&T===x)continue;let O=Array.from(I.references).sort(),U={name:I.identName,reference:O[0]},{name:Y,scope:te}=n(I.name),ie=te?[te,Y]:[Y],ue=K.join(C,Qwe),ae=K.join(ue,...ie),de=`${S}/${U.name}`,Ae=a(U,S,O.slice(1)),Ce=!1;if(Ae.linkType===\"SOFT\"&&r.project){let Ee=r.project.workspacesByCwd.get(Ae.target.slice(0,-1));Ce=!!(Ee&&!Ee.manifest.name)}if(!I.name.endsWith(eg)&&!Ce){let Ee=s.get(ae);if(Ee){if(Ee.dirList)throw new Error(`Assertion failed: ${ae} cannot merge dir node with leaf node`);{let Be=j.parseLocator(Ee.locator),me=j.parseLocator(Ae.locator);if(Ee.linkType!==Ae.linkType)throw new Error(`Assertion failed: ${ae} cannot merge nodes with different link types ${Ee.nodePath}/${j.stringifyLocator(Be)} and ${S}/${j.stringifyLocator(me)}`);if(Be.identHash!==me.identHash)throw new Error(`Assertion failed: ${ae} cannot merge nodes with different idents ${Ee.nodePath}/${j.stringifyLocator(Be)} and ${S}/s${j.stringifyLocator(me)}`);Ae.aliases=[...Ae.aliases,...Ee.aliases,j.parseLocator(Ee.locator).reference]}}s.set(ae,Ae);let g=ae.split(\"/\"),Se=g.indexOf(Qwe);for(let Be=g.length-1;Se>=0&&Be>Se;Be--){let me=fe.toPortablePath(g.slice(0,Be).join(K.sep)),ce=g[Be],X=s.get(me);if(!X)s.set(me,{dirList:new Set([ce])});else if(X.dirList){if(X.dirList.has(ce))break;X.dirList.add(ce)}}}f(I,Ae.linkType===\"SOFT\"?Ae.target:ae,de)}},p=a({name:t.name,reference:Array.from(t.references)[0]},\"\",[]),h=p.target;return s.set(h,p),f(t,h,\"\"),s};qe();qe();Dt();Dt();rA();Bc();var UW={};Yt(UW,{PnpInstaller:()=>Vm,PnpLinker:()=>ng,UnplugCommand:()=>mw,default:()=>Nht,getPnpPath:()=>ig,jsInstallUtils:()=>dA,pnpUtils:()=>HD,quotePathIfNeeded:()=>m1e});Dt();var d1e=Ie(\"url\");qe();qe();Dt();Dt();var Fwe={DEFAULT:{collapsed:!1,next:{\"*\":\"DEFAULT\"}},TOP_LEVEL:{collapsed:!1,next:{fallbackExclusionList:\"FALLBACK_EXCLUSION_LIST\",packageRegistryData:\"PACKAGE_REGISTRY_DATA\",\"*\":\"DEFAULT\"}},FALLBACK_EXCLUSION_LIST:{collapsed:!1,next:{\"*\":\"FALLBACK_EXCLUSION_ENTRIES\"}},FALLBACK_EXCLUSION_ENTRIES:{collapsed:!0,next:{\"*\":\"FALLBACK_EXCLUSION_DATA\"}},FALLBACK_EXCLUSION_DATA:{collapsed:!0,next:{\"*\":\"DEFAULT\"}},PACKAGE_REGISTRY_DATA:{collapsed:!1,next:{\"*\":\"PACKAGE_REGISTRY_ENTRIES\"}},PACKAGE_REGISTRY_ENTRIES:{collapsed:!0,next:{\"*\":\"PACKAGE_STORE_DATA\"}},PACKAGE_STORE_DATA:{collapsed:!1,next:{\"*\":\"PACKAGE_STORE_ENTRIES\"}},PACKAGE_STORE_ENTRIES:{collapsed:!0,next:{\"*\":\"PACKAGE_INFORMATION_DATA\"}},PACKAGE_INFORMATION_DATA:{collapsed:!1,next:{packageDependencies:\"PACKAGE_DEPENDENCIES\",\"*\":\"DEFAULT\"}},PACKAGE_DEPENDENCIES:{collapsed:!1,next:{\"*\":\"PACKAGE_DEPENDENCY\"}},PACKAGE_DEPENDENCY:{collapsed:!0,next:{\"*\":\"DEFAULT\"}}};function oht(e,t,r){let s=\"\";s+=\"[\";for(let a=0,n=e.length;a<n;++a)s+=HF(String(a),e[a],t,r).replace(/^ +/g,\"\"),a+1<n&&(s+=\", \");return s+=\"]\",s}function aht(e,t,r){let s=`${r}  `,a=\"\";a+=r,a+=`[\n`;for(let n=0,c=e.length;n<c;++n)a+=s+HF(String(n),e[n],t,s).replace(/^ +/,\"\"),n+1<c&&(a+=\",\"),a+=`\n`;return a+=r,a+=\"]\",a}function lht(e,t,r){let s=Object.keys(e),a=\"\";a+=\"{\";for(let n=0,c=s.length,f=0;n<c;++n){let p=s[n],h=e[p];typeof h>\"u\"||(f!==0&&(a+=\", \"),a+=JSON.stringify(p),a+=\": \",a+=HF(p,h,t,r).replace(/^ +/g,\"\"),f+=1)}return a+=\"}\",a}function cht(e,t,r){let s=Object.keys(e),a=`${r}  `,n=\"\";n+=r,n+=`{\n`;let c=0;for(let f=0,p=s.length;f<p;++f){let h=s[f],E=e[h];typeof E>\"u\"||(c!==0&&(n+=\",\",n+=`\n`),n+=a,n+=JSON.stringify(h),n+=\": \",n+=HF(h,E,t,a).replace(/^ +/g,\"\"),c+=1)}return c!==0&&(n+=`\n`),n+=r,n+=\"}\",n}function HF(e,t,r,s){let{next:a}=Fwe[r],n=a[e]||a[\"*\"];return Nwe(t,n,s)}function Nwe(e,t,r){let{collapsed:s}=Fwe[t];return Array.isArray(e)?s?oht(e,t,r):aht(e,t,r):typeof e==\"object\"&&e!==null?s?lht(e,t,r):cht(e,t,r):JSON.stringify(e)}function Owe(e){return Nwe(e,\"TOP_LEVEL\",\"\")}function QD(e,t){let r=Array.from(e);Array.isArray(t)||(t=[t]);let s=[];for(let n of t)s.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of s){let p=f[n]<f[c]?-1:f[n]>f[c]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function uht(e){let t=new Map,r=QD(e.fallbackExclusionList||[],[({name:s,reference:a})=>s,({name:s,reference:a})=>a]);for(let{name:s,reference:a}of r){let n=t.get(s);typeof n>\"u\"&&t.set(s,n=new Set),n.add(a)}return Array.from(t).map(([s,a])=>[s,Array.from(a)])}function fht(e){return QD(e.fallbackPool||[],([t])=>t)}function Aht(e){let t=[],r=e.dependencyTreeRoots.find(s=>e.packageRegistry.get(s.name)?.get(s.reference)?.packageLocation===\"./\");for(let[s,a]of QD(e.packageRegistry,([n])=>n===null?\"0\":`1${n}`)){if(s===null)continue;let n=[];t.push([s,n]);for(let[c,{packageLocation:f,packageDependencies:p,packagePeers:h,linkType:E,discardFromLookup:C}]of QD(a,([S])=>S===null?\"0\":`1${S}`)){if(c===null)continue;let S=[];s!==null&&c!==null&&!p.has(s)&&S.push([s,c]);for(let[U,Y]of p)S.push([U,Y]);let x=QD(S,([U])=>U),I=h&&h.size>0?Array.from(h):void 0,O={packageLocation:f,packageDependencies:x,packagePeers:I,linkType:E,discardFromLookup:C||void 0};n.push([c,O]),r&&s===r.name&&c===r.reference&&t.unshift([null,[[null,O]]])}}return t}function RD(e){return{__info:[\"This file is automatically generated. Do not touch it, or risk\",\"your modifications being lost.\"],dependencyTreeRoots:e.dependencyTreeRoots,enableTopLevelFallback:e.enableTopLevelFallback||!1,ignorePatternData:e.ignorePattern||null,pnpZipBackend:e.pnpZipBackend,fallbackExclusionList:uht(e),fallbackPool:fht(e),packageRegistryData:Aht(e)}}var Uwe=et(Mwe());function _we(e,t){return[e?`${e}\n`:\"\",`/* eslint-disable */\n`,`// @ts-nocheck\n`,`\"use strict\";\n`,`\n`,t,`\n`,(0,Uwe.default)()].join(\"\")}function pht(e){return JSON.stringify(e,null,2)}function hht(e){return`'${e.replace(/\\\\/g,\"\\\\\\\\\").replace(/'/g,\"\\\\'\").replace(/\\n/g,`\\\\\n`)}'`}function ght(e){return[`const RAW_RUNTIME_STATE =\n`,`${hht(Owe(e))};\n\n`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) {\n`,`  return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname});\n`,`}\n`].join(\"\")}function dht(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) {\n`,`  const fs = require('fs');\n`,`  const path = require('path');\n`,`  const pnpDataFilepath = path.resolve(__dirname, ${JSON.stringify(Er.pnpData)});\n`,`  return hydrateRuntimeState(JSON.parse(fs.readFileSync(pnpDataFilepath, 'utf8')), {basePath: basePath || __dirname});\n`,`}\n`].join(\"\")}function Hwe(e){let t=RD(e),r=ght(t);return _we(e.shebang,r)}function jwe(e){let t=RD(e),r=dht(),s=_we(e.shebang,r);return{dataFile:pht(t),loaderFile:s}}Dt();function wW(e,{basePath:t}){let r=fe.toPortablePath(t),s=K.resolve(r),a=e.ignorePatternData!==null?new RegExp(e.ignorePatternData):null,n=new Map,c=new Map(e.packageRegistryData.map(([C,S])=>[C,new Map(S.map(([x,I])=>{if(C===null!=(x===null))throw new Error(\"Assertion failed: The name and reference should be null, or neither should\");let T=I.discardFromLookup??!1,O={name:C,reference:x},U=n.get(I.packageLocation);U?(U.discardFromLookup=U.discardFromLookup&&T,T||(U.locator=O)):n.set(I.packageLocation,{locator:O,discardFromLookup:T});let Y=null;return[x,{packageDependencies:new Map(I.packageDependencies),packagePeers:new Set(I.packagePeers),linkType:I.linkType,discardFromLookup:T,get packageLocation(){return Y||(Y=K.join(s,I.packageLocation))}}]}))])),f=new Map(e.fallbackExclusionList.map(([C,S])=>[C,new Set(S)])),p=new Map(e.fallbackPool),h=e.dependencyTreeRoots,E=e.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:h,enableTopLevelFallback:E,fallbackExclusionList:f,pnpZipBackend:e.pnpZipBackend,fallbackPool:p,ignorePattern:a,packageLocatorsByLocations:n,packageRegistry:c}}Dt();Dt();var nh=Ie(\"module\"),Wm=Ie(\"url\"),RW=Ie(\"util\");var sa=Ie(\"url\");var Vwe=et(Ie(\"assert\"));var BW=Array.isArray,TD=JSON.stringify,FD=Object.getOwnPropertyNames,qm=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),vW=(e,t)=>RegExp.prototype.exec.call(e,t),SW=(e,...t)=>RegExp.prototype[Symbol.replace].apply(e,t),tg=(e,...t)=>String.prototype.endsWith.apply(e,t),DW=(e,...t)=>String.prototype.includes.apply(e,t),bW=(e,...t)=>String.prototype.lastIndexOf.apply(e,t),ND=(e,...t)=>String.prototype.indexOf.apply(e,t),Gwe=(e,...t)=>String.prototype.replace.apply(e,t),rg=(e,...t)=>String.prototype.slice.apply(e,t),gA=(e,...t)=>String.prototype.startsWith.apply(e,t),qwe=Map,Wwe=JSON.parse;function OD(e,t,r){return class extends r{constructor(...s){super(t(...s)),this.code=e,this.name=`${r.name} [${e}]`}}}var Ywe=OD(\"ERR_PACKAGE_IMPORT_NOT_DEFINED\",(e,t,r)=>`Package import specifier \"${e}\" is not defined${t?` in package ${t}package.json`:\"\"} imported from ${r}`,TypeError),PW=OD(\"ERR_INVALID_MODULE_SPECIFIER\",(e,t,r=void 0)=>`Invalid module \"${e}\" ${t}${r?` imported from ${r}`:\"\"}`,TypeError),Kwe=OD(\"ERR_INVALID_PACKAGE_TARGET\",(e,t,r,s=!1,a=void 0)=>{let n=typeof r==\"string\"&&!s&&r.length&&!gA(r,\"./\");return t===\".\"?((0,Vwe.default)(s===!1),`Invalid \"exports\" main target ${TD(r)} defined in the package config ${e}package.json${a?` imported from ${a}`:\"\"}${n?'; targets must start with \"./\"':\"\"}`):`Invalid \"${s?\"imports\":\"exports\"}\" target ${TD(r)} defined for '${t}' in the package config ${e}package.json${a?` imported from ${a}`:\"\"}${n?'; targets must start with \"./\"':\"\"}`},Error),LD=OD(\"ERR_INVALID_PACKAGE_CONFIG\",(e,t,r)=>`Invalid package config ${e}${t?` while importing ${t}`:\"\"}${r?`. ${r}`:\"\"}`,Error),Jwe=OD(\"ERR_PACKAGE_PATH_NOT_EXPORTED\",(e,t,r=void 0)=>t===\".\"?`No \"exports\" main defined in ${e}package.json${r?` imported from ${r}`:\"\"}`:`Package subpath '${t}' is not defined by \"exports\" in ${e}package.json${r?` imported from ${r}`:\"\"}`,Error);var GF=Ie(\"url\");function zwe(e,t){let r=Object.create(null);for(let s=0;s<t.length;s++){let a=t[s];qm(e,a)&&(r[a]=e[a])}return r}var jF=new qwe;function mht(e,t,r,s){let a=jF.get(e);if(a!==void 0)return a;let n=s(e);if(n===void 0){let x={pjsonPath:e,exists:!1,main:void 0,name:void 0,type:\"none\",exports:void 0,imports:void 0};return jF.set(e,x),x}let c;try{c=Wwe(n)}catch(x){throw new LD(e,(r?`\"${t}\" from `:\"\")+(0,GF.fileURLToPath)(r||t),x.message)}let{imports:f,main:p,name:h,type:E}=zwe(c,[\"imports\",\"main\",\"name\",\"type\"]),C=qm(c,\"exports\")?c.exports:void 0;(typeof f!=\"object\"||f===null)&&(f=void 0),typeof p!=\"string\"&&(p=void 0),typeof h!=\"string\"&&(h=void 0),E!==\"module\"&&E!==\"commonjs\"&&(E=\"none\");let S={pjsonPath:e,exists:!0,main:p,name:h,type:E,exports:C,imports:f};return jF.set(e,S),S}function Zwe(e,t){let r=new URL(\"./package.json\",e);for(;;){let n=r.pathname;if(tg(n,\"node_modules/package.json\"))break;let c=mht((0,GF.fileURLToPath)(r),e,void 0,t);if(c.exists)return c;let f=r;if(r=new URL(\"../package.json\",r),r.pathname===f.pathname)break}let s=(0,GF.fileURLToPath)(r),a={pjsonPath:s,exists:!1,main:void 0,name:void 0,type:\"none\",exports:void 0,imports:void 0};return jF.set(s,a),a}function yht(e,t,r){throw new Ywe(e,t&&(0,sa.fileURLToPath)(new URL(\".\",t)),(0,sa.fileURLToPath)(r))}function Eht(e,t,r,s){let a=`request is not a valid subpath for the \"${r?\"imports\":\"exports\"}\" resolution of ${(0,sa.fileURLToPath)(t)}`;throw new PW(e,a,s&&(0,sa.fileURLToPath)(s))}function MD(e,t,r,s,a){throw typeof t==\"object\"&&t!==null?t=TD(t,null,\"\"):t=`${t}`,new Kwe((0,sa.fileURLToPath)(new URL(\".\",r)),e,t,s,a&&(0,sa.fileURLToPath)(a))}var Xwe=/(^|\\\\|\\/)((\\.|%2e)(\\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\\\|\\/|$)/i,$we=/\\*/g;function Iht(e,t,r,s,a,n,c,f){if(t!==\"\"&&!n&&e[e.length-1]!==\"/\"&&MD(r,e,s,c,a),!gA(e,\"./\")){if(c&&!gA(e,\"../\")&&!gA(e,\"/\")){let C=!1;try{new URL(e),C=!0}catch{}if(!C)return n?SW($we,e,()=>t):e+t}MD(r,e,s,c,a)}vW(Xwe,rg(e,2))!==null&&MD(r,e,s,c,a);let p=new URL(e,s),h=p.pathname,E=new URL(\".\",s).pathname;if(gA(h,E)||MD(r,e,s,c,a),t===\"\")return p;if(vW(Xwe,t)!==null){let C=n?Gwe(r,\"*\",()=>t):r+t;Eht(C,s,c,a)}return n?new URL(SW($we,p.href,()=>t)):new URL(t,p)}function Cht(e){let t=+e;return`${t}`!==e?!1:t>=0&&t<4294967295}function dw(e,t,r,s,a,n,c,f){if(typeof t==\"string\")return Iht(t,r,s,e,a,n,c,f);if(BW(t)){if(t.length===0)return null;let p;for(let h=0;h<t.length;h++){let E=t[h],C;try{C=dw(e,E,r,s,a,n,c,f)}catch(S){if(p=S,S.code===\"ERR_INVALID_PACKAGE_TARGET\")continue;throw S}if(C!==void 0){if(C===null){p=null;continue}return C}}if(p==null)return p;throw p}else if(typeof t==\"object\"&&t!==null){let p=FD(t);for(let h=0;h<p.length;h++){let E=p[h];if(Cht(E))throw new LD((0,sa.fileURLToPath)(e),a,'\"exports\" cannot contain numeric property keys.')}for(let h=0;h<p.length;h++){let E=p[h];if(E===\"default\"||f.has(E)){let C=t[E],S=dw(e,C,r,s,a,n,c,f);if(S===void 0)continue;return S}}return}else if(t===null)return null;MD(s,t,e,c,a)}function t1e(e,t){let r=ND(e,\"*\"),s=ND(t,\"*\"),a=r===-1?e.length:r+1,n=s===-1?t.length:s+1;return a>n?-1:n>a||r===-1?1:s===-1||e.length>t.length?-1:t.length>e.length?1:0}function wht(e,t,r){if(typeof e==\"string\"||BW(e))return!0;if(typeof e!=\"object\"||e===null)return!1;let s=FD(e),a=!1,n=0;for(let c=0;c<s.length;c++){let f=s[c],p=f===\"\"||f[0]!==\".\";if(n++===0)a=p;else if(a!==p)throw new LD((0,sa.fileURLToPath)(t),r,`\"exports\" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.`)}return a}function xW(e,t,r){throw new Jwe((0,sa.fileURLToPath)(new URL(\".\",t)),e,r&&(0,sa.fileURLToPath)(r))}var e1e=new Set;function Bht(e,t,r){let s=(0,sa.fileURLToPath)(t);e1e.has(s+\"|\"+e)||(e1e.add(s+\"|\"+e),process.emitWarning(`Use of deprecated trailing slash pattern mapping \"${e}\" in the \"exports\" field module resolution of the package at ${s}${r?` imported from ${(0,sa.fileURLToPath)(r)}`:\"\"}. Mapping specifiers ending in \"/\" is no longer supported.`,\"DeprecationWarning\",\"DEP0155\"))}function r1e({packageJSONUrl:e,packageSubpath:t,exports:r,base:s,conditions:a}){if(wht(r,e,s)&&(r={\".\":r}),qm(r,t)&&!DW(t,\"*\")&&!tg(t,\"/\")){let p=r[t],h=dw(e,p,\"\",t,s,!1,!1,a);return h==null&&xW(t,e,s),h}let n=\"\",c,f=FD(r);for(let p=0;p<f.length;p++){let h=f[p],E=ND(h,\"*\");if(E!==-1&&gA(t,rg(h,0,E))){tg(t,\"/\")&&Bht(t,e,s);let C=rg(h,E+1);t.length>=h.length&&tg(t,C)&&t1e(n,h)===1&&bW(h,\"*\")===E&&(n=h,c=rg(t,E,t.length-C.length))}}if(n){let p=r[n],h=dw(e,p,c,n,s,!0,!1,a);return h==null&&xW(t,e,s),h}xW(t,e,s)}function n1e({name:e,base:t,conditions:r,readFileSyncFn:s}){if(e===\"#\"||gA(e,\"#/\")||tg(e,\"/\")){let c=\"is not a valid internal imports specifier name\";throw new PW(e,c,(0,sa.fileURLToPath)(t))}let a,n=Zwe(t,s);if(n.exists){a=(0,sa.pathToFileURL)(n.pjsonPath);let c=n.imports;if(c)if(qm(c,e)&&!DW(e,\"*\")){let f=dw(a,c[e],\"\",e,t,!1,!0,r);if(f!=null)return f}else{let f=\"\",p,h=FD(c);for(let E=0;E<h.length;E++){let C=h[E],S=ND(C,\"*\");if(S!==-1&&gA(e,rg(C,0,S))){let x=rg(C,S+1);e.length>=C.length&&tg(e,x)&&t1e(f,C)===1&&bW(C,\"*\")===S&&(f=C,p=rg(e,S,e.length-x.length))}}if(f){let E=c[f],C=dw(a,E,p,f,t,!0,!0,r);if(C!=null)return C}}}yht(e,a,t)}Dt();var vht=new Set([\"BUILTIN_NODE_RESOLUTION_FAILED\",\"MISSING_DEPENDENCY\",\"MISSING_PEER_DEPENDENCY\",\"QUALIFIED_PATH_RESOLUTION_FAILED\",\"UNDECLARED_DEPENDENCY\"]);function ys(e,t,r={},s){s??=vht.has(e)?\"MODULE_NOT_FOUND\":e;let a={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(t),{code:{...a,value:s},pnpCode:{...a,value:e},data:{...a,value:r}})}function uf(e){return fe.normalize(fe.fromPortablePath(e))}var a1e=et(s1e());function l1e(e){return Sht(),QW[e]}var QW;function Sht(){QW||(QW={\"--conditions\":[],...o1e(Dht()),...o1e(process.execArgv)})}function o1e(e){return(0,a1e.default)({\"--conditions\":[String],\"-C\":\"--conditions\"},{argv:e,permissive:!0})}function Dht(){let e=[],t=bht(process.env.NODE_OPTIONS||\"\",e);return e.length,t}function bht(e,t){let r=[],s=!1,a=!0;for(let n=0;n<e.length;++n){let c=e[n];if(c===\"\\\\\"&&s){if(n+1===e.length)return t.push(`invalid value for NODE_OPTIONS (invalid escape)\n`),r;c=e[++n]}else if(c===\" \"&&!s){a=!0;continue}else if(c==='\"'){s=!s;continue}a?(r.push(c),a=!1):r[r.length-1]+=c}return s&&t.push(`invalid value for NODE_OPTIONS (unterminated string)\n`),r}Dt();var[Bl,rh]=process.versions.node.split(\".\").map(e=>parseInt(e,10)),c1e=Bl>19||Bl===19&&rh>=2||Bl===18&&rh>=13,GJt=Bl===20&&rh<6||Bl===19&&rh>=3,qJt=Bl>19||Bl===19&&rh>=6,WJt=Bl>=21||Bl===20&&rh>=10||Bl===18&&rh>=19,VJt=Bl>=21||Bl===20&&rh>=10||Bl===18&&rh>=20,YJt=Bl>=22;function u1e(e){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send)if(e=e.map(t=>fe.fromPortablePath(mo.resolveVirtual(fe.toPortablePath(t)))),c1e)process.send({\"watch:require\":e});else for(let t of e)process.send({\"watch:require\":t})}function TW(e,t){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,s=Number(process.env.PNP_DEBUG_LEVEL),a=/^(?![a-zA-Z]:[\\\\/]|\\\\\\\\|\\.{0,2}(?:\\/|$))((?:node:)?(?:@[^/]+\\/)?[^/]+)\\/*(.*|)$/,n=/^(\\/|\\.{1,2}(\\/|$))/,c=/\\/$/,f=/^\\.{0,2}\\//,p={name:null,reference:null},h=[],E=new Set;if(e.enableTopLevelFallback===!0&&h.push(p),t.compatibilityMode!==!1)for(let Ne of[\"react-scripts\",\"gatsby\"]){let ke=e.packageRegistry.get(Ne);if(ke)for(let be of ke.keys()){if(be===null)throw new Error(\"Assertion failed: This reference shouldn't be null\");h.push({name:Ne,reference:be})}}let{ignorePattern:C,packageRegistry:S,packageLocatorsByLocations:x}=e;function I(Ne,ke){return{fn:Ne,args:ke,error:null,result:null}}function T(Ne){let ke=process.stderr?.hasColors?.()??process.stdout.isTTY,be=(ct,Me)=>`\\x1B[${ct}m${Me}\\x1B[0m`,je=Ne.error;console.error(je?be(\"31;1\",`\\u2716 ${Ne.error?.message.replace(/\\n.*/s,\"\")}`):be(\"33;1\",\"\\u203C Resolution\")),Ne.args.length>0&&console.error();for(let ct of Ne.args)console.error(`  ${be(\"37;1\",\"In \\u2190\")} ${(0,RW.inspect)(ct,{colors:ke,compact:!0})}`);Ne.result&&(console.error(),console.error(`  ${be(\"37;1\",\"Out \\u2192\")} ${(0,RW.inspect)(Ne.result,{colors:ke,compact:!0})}`));let Re=new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2)??[];if(Re.length>0){console.error();for(let ct of Re)console.error(`  ${be(\"38;5;244\",ct)}`)}console.error()}function O(Ne,ke){if(t.allowDebug===!1)return ke;if(Number.isFinite(s)){if(s>=2)return(...be)=>{let je=I(Ne,be);try{return je.result=ke(...be)}catch(Re){throw je.error=Re}finally{T(je)}};if(s>=1)return(...be)=>{try{return ke(...be)}catch(je){let Re=I(Ne,be);throw Re.error=je,T(Re),je}}}return ke}function U(Ne){let ke=g(Ne);if(!ke)throw ys(\"INTERNAL\",\"Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)\");return ke}function Y(Ne){if(Ne.name===null)return!0;for(let ke of e.dependencyTreeRoots)if(ke.name===Ne.name&&ke.reference===Ne.reference)return!0;return!1}let te=new Set([\"node\",\"require\",...l1e(\"--conditions\")]);function ie(Ne,ke=te,be){let je=me(K.join(Ne,\"internal.js\"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(je===null)throw ys(\"INTERNAL\",`The locator that owns the \"${Ne}\" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:Re}=U(je),ct=K.join(Re,Er.manifest);if(!t.fakeFs.existsSync(ct))return null;let Me=JSON.parse(t.fakeFs.readFileSync(ct,\"utf8\"));if(Me.exports==null)return null;let P=K.contains(Re,Ne);if(P===null)throw ys(\"INTERNAL\",\"unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)\");P!==\".\"&&!f.test(P)&&(P=`./${P}`);try{let w=r1e({packageJSONUrl:(0,Wm.pathToFileURL)(fe.fromPortablePath(ct)),packageSubpath:P,exports:Me.exports,base:be?(0,Wm.pathToFileURL)(fe.fromPortablePath(be)):null,conditions:ke});return fe.toPortablePath((0,Wm.fileURLToPath)(w))}catch(w){throw ys(\"EXPORTS_RESOLUTION_FAILED\",w.message,{unqualifiedPath:uf(Ne),locator:je,pkgJson:Me,subpath:uf(P),conditions:ke},w.code)}}function ue(Ne,ke,{extensions:be}){let je;try{ke.push(Ne),je=t.fakeFs.statSync(Ne)}catch{}if(je&&!je.isDirectory())return t.fakeFs.realpathSync(Ne);if(je&&je.isDirectory()){let Re;try{Re=JSON.parse(t.fakeFs.readFileSync(K.join(Ne,Er.manifest),\"utf8\"))}catch{}let ct;if(Re&&Re.main&&(ct=K.resolve(Ne,Re.main)),ct&&ct!==Ne){let Me=ue(ct,ke,{extensions:be});if(Me!==null)return Me}}for(let Re=0,ct=be.length;Re<ct;Re++){let Me=`${Ne}${be[Re]}`;if(ke.push(Me),t.fakeFs.existsSync(Me))return Me}if(je&&je.isDirectory())for(let Re=0,ct=be.length;Re<ct;Re++){let Me=K.format({dir:Ne,name:\"index\",ext:be[Re]});if(ke.push(Me),t.fakeFs.existsSync(Me))return Me}return null}function ae(Ne){let ke=new nh.Module(Ne,null);return ke.filename=Ne,ke.paths=nh.Module._nodeModulePaths(Ne),ke}function de(Ne,ke){return ke.endsWith(\"/\")&&(ke=K.join(ke,\"internal.js\")),nh.Module._resolveFilename(fe.fromPortablePath(Ne),ae(fe.fromPortablePath(ke)),!1,{plugnplay:!1})}function Ae(Ne){if(C===null)return!1;let ke=K.contains(e.basePath,Ne);return ke===null?!1:!!C.test(ke.replace(/\\/$/,\"\"))}let Ce={std:3,resolveVirtual:1,getAllLocators:1},Ee=p;function g({name:Ne,reference:ke}){let be=S.get(Ne);if(!be)return null;let je=be.get(ke);return je||null}function Se({name:Ne,reference:ke}){let be=[];for(let[je,Re]of S)if(je!==null)for(let[ct,Me]of Re)ct===null||Me.packageDependencies.get(Ne)!==ke||je===Ne&&ct===ke||be.push({name:je,reference:ct});return be}function Be(Ne,ke){let be=new Map,je=new Set,Re=Me=>{let P=JSON.stringify(Me.name);if(je.has(P))return;je.add(P);let w=Se(Me);for(let b of w)if(U(b).packagePeers.has(Ne))Re(b);else{let F=be.get(b.name);typeof F>\"u\"&&be.set(b.name,F=new Set),F.add(b.reference)}};Re(ke);let ct=[];for(let Me of[...be.keys()].sort())for(let P of[...be.get(Me)].sort())ct.push({name:Me,reference:P});return ct}function me(Ne,{resolveIgnored:ke=!1,includeDiscardFromLookup:be=!1}={}){if(Ae(Ne)&&!ke)return null;let je=K.relative(e.basePath,Ne);je.match(n)||(je=`./${je}`),je.endsWith(\"/\")||(je=`${je}/`);do{let Re=x.get(je);if(typeof Re>\"u\"||Re.discardFromLookup&&!be){je=je.substring(0,je.lastIndexOf(\"/\",je.length-2)+1);continue}return Re.locator}while(je!==\"\");return null}function ce(Ne){try{return t.fakeFs.readFileSync(fe.toPortablePath(Ne),\"utf8\")}catch(ke){if(ke.code===\"ENOENT\")return;throw ke}}function X(Ne,ke,{considerBuiltins:be=!0}={}){if(Ne.startsWith(\"#\"))throw new Error(\"resolveToUnqualified can not handle private import mappings\");if(Ne===\"pnpapi\")return fe.toPortablePath(t.pnpapiResolution);if(be&&(0,nh.isBuiltin)(Ne))return null;let je=uf(Ne),Re=ke&&uf(ke);if(ke&&Ae(ke)&&(!K.isAbsolute(Ne)||me(Ne)===null)){let P=de(Ne,ke);if(P===!1)throw ys(\"BUILTIN_NODE_RESOLUTION_FAILED\",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp)\n\nRequire request: \"${je}\"\nRequired by: ${Re}\n`,{request:je,issuer:Re});return fe.toPortablePath(P)}let ct,Me=Ne.match(a);if(Me){if(!ke)throw ys(\"API_ERROR\",\"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute\",{request:je,issuer:Re});let[,P,w]=Me,b=me(ke);if(!b){let Fe=de(Ne,ke);if(Fe===!1)throw ys(\"BUILTIN_NODE_RESOLUTION_FAILED\",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree).\n\nRequire path: \"${je}\"\nRequired by: ${Re}\n`,{request:je,issuer:Re});return fe.toPortablePath(Fe)}let F=U(b).packageDependencies.get(P),z=null;if(F==null&&b.name!==null){let Fe=e.fallbackExclusionList.get(b.name);if(!Fe||!Fe.has(b.reference)){for(let Ct=0,qt=h.length;Ct<qt;++Ct){let Pt=U(h[Ct]).packageDependencies.get(P);if(Pt!=null){r?z=Pt:F=Pt;break}}if(e.enableTopLevelFallback&&F==null&&z===null){let Ct=e.fallbackPool.get(P);Ct!=null&&(z=Ct)}}}let Z=null;if(F===null)if(Y(b))Z=ys(\"MISSING_PEER_DEPENDENCY\",`Your application tried to access ${P} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed.\n\nRequired package: ${P}${P!==je?` (via \"${je}\")`:\"\"}\nRequired by: ${Re}\n`,{request:je,issuer:Re,dependencyName:P});else{let Fe=Be(P,b);Fe.every(ut=>Y(ut))?Z=ys(\"MISSING_PEER_DEPENDENCY\",`${b.name} tried to access ${P} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound.\n\nRequired package: ${P}${P!==je?` (via \"${je}\")`:\"\"}\nRequired by: ${b.name}@${b.reference} (via ${Re})\n${Fe.map(ut=>`Ancestor breaking the chain: ${ut.name}@${ut.reference}\n`).join(\"\")}\n`,{request:je,issuer:Re,issuerLocator:Object.assign({},b),dependencyName:P,brokenAncestors:Fe}):Z=ys(\"MISSING_PEER_DEPENDENCY\",`${b.name} tried to access ${P} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound.\n\nRequired package: ${P}${P!==je?` (via \"${je}\")`:\"\"}\nRequired by: ${b.name}@${b.reference} (via ${Re})\n\n${Fe.map(ut=>`Ancestor breaking the chain: ${ut.name}@${ut.reference}\n`).join(\"\")}\n`,{request:je,issuer:Re,issuerLocator:Object.assign({},b),dependencyName:P,brokenAncestors:Fe})}else F===void 0&&(!be&&(0,nh.isBuiltin)(Ne)?Y(b)?Z=ys(\"UNDECLARED_DEPENDENCY\",`Your application tried to access ${P}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${P} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound.\n\nRequired package: ${P}${P!==je?` (via \"${je}\")`:\"\"}\nRequired by: ${Re}\n`,{request:je,issuer:Re,dependencyName:P}):Z=ys(\"UNDECLARED_DEPENDENCY\",`${b.name} tried to access ${P}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${P} isn't otherwise declared in ${b.name}'s dependencies, this makes the require call ambiguous and unsound.\n\nRequired package: ${P}${P!==je?` (via \"${je}\")`:\"\"}\nRequired by: ${Re}\n`,{request:je,issuer:Re,issuerLocator:Object.assign({},b),dependencyName:P}):Y(b)?Z=ys(\"UNDECLARED_DEPENDENCY\",`Your application tried to access ${P}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound.\n\nRequired package: ${P}${P!==je?` (via \"${je}\")`:\"\"}\nRequired by: ${Re}\n`,{request:je,issuer:Re,dependencyName:P}):Z=ys(\"UNDECLARED_DEPENDENCY\",`${b.name} tried to access ${P}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.\n\nRequired package: ${P}${P!==je?` (via \"${je}\")`:\"\"}\nRequired by: ${b.name}@${b.reference} (via ${Re})\n`,{request:je,issuer:Re,issuerLocator:Object.assign({},b),dependencyName:P}));if(F==null){if(z===null||Z===null)throw Z||new Error(\"Assertion failed: Expected an error to have been set\");F=z;let Fe=Z.message.replace(/\\n.*/g,\"\");Z.message=Fe,!E.has(Fe)&&s!==0&&(E.add(Fe),process.emitWarning(Z))}let $=Array.isArray(F)?{name:F[0],reference:F[1]}:{name:P,reference:F},se=U($);if(!se.packageLocation)throw ys(\"MISSING_DEPENDENCY\",`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod.\n\nRequired package: ${$.name}@${$.reference}${$.name!==je?` (via \"${je}\")`:\"\"}\nRequired by: ${b.name}@${b.reference} (via ${Re})\n`,{request:je,issuer:Re,dependencyLocator:Object.assign({},$)});let xe=se.packageLocation;w?ct=K.join(xe,w):ct=xe}else if(K.isAbsolute(Ne))ct=K.normalize(Ne);else{if(!ke)throw ys(\"API_ERROR\",\"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute\",{request:je,issuer:Re});let P=K.resolve(ke);ke.match(c)?ct=K.normalize(K.join(P,Ne)):ct=K.normalize(K.join(K.dirname(P),Ne))}return K.normalize(ct)}function De(Ne,ke,be=te,je){if(n.test(Ne))return ke;let Re=ie(ke,be,je);return Re?K.normalize(Re):ke}function Qe(Ne,{extensions:ke=Object.keys(nh.Module._extensions)}={}){let be=[],je=ue(Ne,be,{extensions:ke});if(je)return K.normalize(je);{u1e(be.map(Me=>fe.fromPortablePath(Me)));let Re=uf(Ne),ct=me(Ne);if(ct){let{packageLocation:Me}=U(ct),P=!0;try{t.fakeFs.accessSync(Me)}catch(w){if(w?.code===\"ENOENT\")P=!1;else{let b=(w?.message??w??\"empty exception thrown\").replace(/^[A-Z]/,y=>y.toLowerCase());throw ys(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`Required package exists but could not be accessed (${b}).\n\nMissing package: ${ct.name}@${ct.reference}\nExpected package location: ${uf(Me)}\n`,{unqualifiedPath:Re,extensions:ke})}}if(!P){let w=Me.includes(\"/unplugged/\")?\"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).\":\"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.\";throw ys(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`${w}\n\nMissing package: ${ct.name}@${ct.reference}\nExpected package location: ${uf(Me)}\n`,{unqualifiedPath:Re,extensions:ke})}}throw ys(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`Qualified path resolution failed: we looked for the following paths, but none could be accessed.\n\nSource path: ${Re}\n${be.map(Me=>`Not found: ${uf(Me)}\n`).join(\"\")}`,{unqualifiedPath:Re,extensions:ke})}}function it(Ne,ke,be){if(!ke)throw new Error(\"Assertion failed: An issuer is required to resolve private import mappings\");let je=n1e({name:Ne,base:(0,Wm.pathToFileURL)(fe.fromPortablePath(ke)),conditions:be.conditions??te,readFileSyncFn:ce});if(je instanceof URL)return Qe(fe.toPortablePath((0,Wm.fileURLToPath)(je)),{extensions:be.extensions});if(je.startsWith(\"#\"))throw new Error(\"Mapping from one private import to another isn't allowed\");return _(je,ke,be)}function _(Ne,ke,be={}){try{if(Ne.startsWith(\"#\"))return it(Ne,ke,be);let{considerBuiltins:je,extensions:Re,conditions:ct}=be,Me=X(Ne,ke,{considerBuiltins:je});if(Ne===\"pnpapi\")return Me;if(Me===null)return null;let P=()=>ke!==null?Ae(ke):!1,w=(!je||!(0,nh.isBuiltin)(Ne))&&!P()?De(Ne,Me,ct,ke):Me;return Qe(w,{extensions:Re})}catch(je){throw Object.hasOwn(je,\"pnpCode\")&&Object.assign(je.data,{request:uf(Ne),issuer:ke&&uf(ke)}),je}}function tt(Ne){let ke=K.normalize(Ne),be=mo.resolveVirtual(ke);return be!==ke?be:null}return{VERSIONS:Ce,topLevel:Ee,getLocator:(Ne,ke)=>Array.isArray(ke)?{name:ke[0],reference:ke[1]}:{name:Ne,reference:ke},getDependencyTreeRoots:()=>[...e.dependencyTreeRoots],getAllLocators(){let Ne=[];for(let[ke,be]of S)for(let je of be.keys())ke!==null&&je!==null&&Ne.push({name:ke,reference:je});return Ne},getPackageInformation:Ne=>{let ke=g(Ne);if(ke===null)return null;let be=fe.fromPortablePath(ke.packageLocation);return{...ke,packageLocation:be}},findPackageLocator:Ne=>me(fe.toPortablePath(Ne)),resolveToUnqualified:O(\"resolveToUnqualified\",(Ne,ke,be)=>{let je=ke!==null?fe.toPortablePath(ke):null,Re=X(fe.toPortablePath(Ne),je,be);return Re===null?null:fe.fromPortablePath(Re)}),resolveUnqualified:O(\"resolveUnqualified\",(Ne,ke)=>fe.fromPortablePath(Qe(fe.toPortablePath(Ne),ke))),resolveRequest:O(\"resolveRequest\",(Ne,ke,be)=>{let je=ke!==null?fe.toPortablePath(ke):null,Re=_(fe.toPortablePath(Ne),je,be);return Re===null?null:fe.fromPortablePath(Re)}),resolveVirtual:O(\"resolveVirtual\",Ne=>{let ke=tt(fe.toPortablePath(Ne));return ke!==null?fe.fromPortablePath(ke):null})}}Dt();var f1e=(e,t,r)=>{let s=RD(e),a=wW(s,{basePath:t}),n=fe.join(t,Er.pnpCjs);return TW(a,{fakeFs:r,pnpapiResolution:n})};var NW=et(p1e());Vt();var dA={};Yt(dA,{checkManifestCompatibility:()=>h1e,extractBuildRequest:()=>qF,getExtractHint:()=>OW,hasBindingGyp:()=>LW});qe();Dt();function h1e(e){return j.isPackageCompatible(e,Ui.getArchitectureSet())}function qF(e,t,r,{configuration:s}){let a=[];for(let n of[\"preinstall\",\"install\",\"postinstall\"])t.manifest.scripts.has(n)&&a.push({type:0,script:n});return!t.manifest.scripts.has(\"install\")&&t.misc.hasBindingGyp&&a.push({type:1,script:\"node-gyp rebuild\"}),a.length===0?null:e.linkType!==\"HARD\"?{skipped:!0,explain:n=>n.reportWarningOnce(6,`${j.prettyLocator(s,e)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`)}:r&&r.built===!1?{skipped:!0,explain:n=>n.reportInfoOnce(5,`${j.prettyLocator(s,e)} lists build scripts, but its build has been explicitly disabled through configuration.`)}:!s.get(\"enableScripts\")&&!r.built?{skipped:!0,explain:n=>n.reportWarningOnce(4,`${j.prettyLocator(s,e)} lists build scripts, but all build scripts have been disabled.`)}:h1e(e)?{skipped:!1,directives:a}:{skipped:!0,explain:n=>n.reportWarningOnce(76,`${j.prettyLocator(s,e)} The ${Ui.getArchitectureName()} architecture is incompatible with this package, build skipped.`)}}var xht=new Set([\".exe\",\".bin\",\".h\",\".hh\",\".hpp\",\".c\",\".cc\",\".cpp\",\".java\",\".jar\",\".node\"]);function OW(e){return e.packageFs.getExtractHint({relevantExtensions:xht})}function LW(e){let t=K.join(e.prefixPath,\"binding.gyp\");return e.packageFs.existsSync(t)}var HD={};Yt(HD,{getUnpluggedPath:()=>_D});qe();Dt();function _D(e,{configuration:t}){return K.resolve(t.get(\"pnpUnpluggedFolder\"),j.slugifyLocator(e))}var kht=new Set([j.makeIdent(null,\"open\").identHash,j.makeIdent(null,\"opn\").identHash]),ng=class{constructor(){this.mode=\"strict\";this.pnpCache=new Map}getCustomDataKey(){return JSON.stringify({name:\"PnpLinker\",version:2})}supportsPackage(t,r){return this.isEnabled(r)}async findPackageLocation(t,r){if(!this.isEnabled(r))throw new Error(\"Assertion failed: Expected the PnP linker to be enabled\");let s=ig(r.project).cjs;if(!le.existsSync(s))throw new st(`The project in ${pe.pretty(r.project.configuration,`${r.project.cwd}/package.json`,pe.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let a=Ge.getFactoryWithDefault(this.pnpCache,s,()=>Ge.dynamicRequire(s,{cachingStrategy:Ge.CachingStrategy.FsTime})),n={name:j.stringifyIdent(t),reference:t.reference},c=a.getPackageInformation(n);if(!c)throw new st(`Couldn't find ${j.prettyLocator(r.project.configuration,t)} in the currently installed PnP map - running an install might help`);return fe.toPortablePath(c.packageLocation)}async findPackageLocator(t,r){if(!this.isEnabled(r))return null;let s=ig(r.project).cjs;if(!le.existsSync(s))return null;let n=Ge.getFactoryWithDefault(this.pnpCache,s,()=>Ge.dynamicRequire(s,{cachingStrategy:Ge.CachingStrategy.FsTime})).findPackageLocator(fe.fromPortablePath(t));return n?j.makeLocator(j.parseIdent(n.name),n.reference):null}makeInstaller(t){return new Vm(t)}isEnabled(t){return!(t.project.configuration.get(\"nodeLinker\")!==\"pnp\"||t.project.configuration.get(\"pnpMode\")!==this.mode)}},Vm=class{constructor(t){this.opts=t;this.mode=\"strict\";this.asyncActions=new Ge.AsyncActions(10);this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=t}attachCustomData(t){this.customData=t}async installPackage(t,r,s){let a=j.stringifyIdent(t),n=t.reference,c=!!this.opts.project.tryWorkspaceByLocator(t),f=j.isVirtualLocator(t),p=t.peerDependencies.size>0&&!f,h=!p&&!c,E=!p&&t.linkType!==\"SOFT\",C,S;if(h||E){let te=f?j.devirtualizeLocator(t):t;C=this.customData.store.get(te.locatorHash),typeof C>\"u\"&&(C=await Qht(r),t.linkType===\"HARD\"&&this.customData.store.set(te.locatorHash,C)),C.manifest.type===\"module\"&&(this.isESMLoaderRequired=!0),S=this.opts.project.getDependencyMeta(te,t.version)}let x=h?qF(t,C,S,{configuration:this.opts.project.configuration}):null,I=E?await this.unplugPackageIfNeeded(t,C,r,S,s):r.packageFs;if(K.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let T=K.resolve(I.getRealPath(),r.prefixPath),O=MW(this.opts.project.cwd,T),U=new Map,Y=new Set;if(f){for(let te of t.peerDependencies.values())U.set(j.stringifyIdent(te),null),Y.add(j.stringifyIdent(te));if(!c){let te=j.devirtualizeLocator(t);this.virtualTemplates.set(te.locatorHash,{location:MW(this.opts.project.cwd,mo.resolveVirtual(T)),locator:te})}}return Ge.getMapWithDefault(this.packageRegistry,a).set(n,{packageLocation:O,packageDependencies:U,packagePeers:Y,linkType:t.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:T,buildRequest:x}}async attachInternalDependencies(t,r){let s=this.getPackageInformation(t);for(let[a,n]of r){let c=j.areIdentsEqual(a,n)?n.reference:[j.stringifyIdent(n),n.reference];s.packageDependencies.set(j.stringifyIdent(a),c)}}async attachExternalDependents(t,r){for(let s of r)this.getDiskInformation(s).packageDependencies.set(j.stringifyIdent(t),t.reference)}async finalizeInstall(){if(this.opts.project.configuration.get(\"pnpMode\")!==this.mode)return;let t=ig(this.opts.project);if(this.isEsmEnabled()||await le.removePromise(t.esmLoader),this.opts.project.configuration.get(\"nodeLinker\")!==\"pnp\"){await le.removePromise(t.cjs),await le.removePromise(t.data),await le.removePromise(t.esmLoader),await le.removePromise(this.opts.project.configuration.get(\"pnpUnpluggedFolder\"));return}for(let{locator:C,location:S}of this.virtualTemplates.values())Ge.getMapWithDefault(this.packageRegistry,j.stringifyIdent(C)).set(C.reference,{packageLocation:S,packageDependencies:new Map,packagePeers:new Set,linkType:\"SOFT\",discardFromLookup:!1});let r=this.opts.project.configuration.get(\"pnpFallbackMode\"),s=this.opts.project.workspaces.map(({anchoredLocator:C})=>({name:j.stringifyIdent(C),reference:C.reference})),a=r!==\"none\",n=[],c=new Map,f=Ge.buildIgnorePattern([\".yarn/sdks/**\",...this.opts.project.configuration.get(\"pnpIgnorePatterns\")]),p=this.packageRegistry,h=this.opts.project.configuration.get(\"pnpShebang\"),E=this.opts.project.configuration.get(\"pnpZipBackend\");if(r===\"dependencies-only\")for(let C of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(C)&&n.push({name:j.stringifyIdent(C),reference:C.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:s,enableTopLevelFallback:a,fallbackExclusionList:n,fallbackPool:c,ignorePattern:f,pnpZipBackend:E,packageRegistry:p,shebang:h}),{customData:this.customData}}async transformPnpSettings(t){}isEsmEnabled(){if(this.opts.project.configuration.sources.has(\"pnpEnableEsmLoader\"))return this.opts.project.configuration.get(\"pnpEnableEsmLoader\");if(this.isESMLoaderRequired)return!0;for(let t of this.opts.project.workspaces)if(t.manifest.type===\"module\")return!0;return!1}async finalizeInstallWithPnp(t){let r=ig(this.opts.project),s=await this.locateNodeModules(t.ignorePattern);if(s.length>0){this.opts.report.reportWarning(31,\"One or more node_modules have been detected and will be removed. This operation may take some time.\");for(let n of s)await le.removePromise(n)}if(await this.transformPnpSettings(t),this.opts.project.configuration.get(\"pnpEnableInlining\")){let n=Hwe(t);await le.changeFilePromise(r.cjs,n,{automaticNewlines:!0,mode:493}),await le.removePromise(r.data)}else{let{dataFile:n,loaderFile:c}=jwe(t);await le.changeFilePromise(r.cjs,c,{automaticNewlines:!0,mode:493}),await le.changeFilePromise(r.data,n,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(0,\"ESM support for PnP uses the experimental loader API and is therefore experimental\"),await le.changeFilePromise(r.esmLoader,(0,NW.default)(),{automaticNewlines:!0,mode:420}));let a=this.opts.project.configuration.get(\"pnpUnpluggedFolder\");if(this.unpluggedPaths.size===0)await le.removePromise(a);else for(let n of await le.readdirPromise(a)){let c=K.resolve(a,n);this.unpluggedPaths.has(c)||await le.removePromise(c)}}async locateNodeModules(t){let r=[],s=t?new RegExp(t):null;for(let a of this.opts.project.workspaces){let n=K.join(a.cwd,\"node_modules\");if(s&&s.test(K.relative(this.opts.project.cwd,a.cwd))||!le.existsSync(n))continue;let c=await le.readdirPromise(n,{withFileTypes:!0}),f=c.filter(p=>!p.isDirectory()||p.name===\".bin\"||!p.name.startsWith(\".\"));if(f.length===c.length)r.push(n);else for(let p of f)r.push(K.join(n,p.name))}return r}async unplugPackageIfNeeded(t,r,s,a,n){return this.shouldBeUnplugged(t,r,a)?this.unplugPackage(t,s,n):s.packageFs}shouldBeUnplugged(t,r,s){return typeof s.unplugged<\"u\"?s.unplugged:kht.has(t.identHash)||t.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(qF(t,r,s,{configuration:this.opts.project.configuration})?.skipped===!1||r.misc.extractHint)}async unplugPackage(t,r,s){let a=_D(t,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(t.locatorHash)?new jf(a,{baseFs:r.packageFs,pathUtils:K}):(this.unpluggedPaths.add(a),s.holdFetchResult(this.asyncActions.set(t.locatorHash,async()=>{let n=K.join(a,r.prefixPath,\".ready\");await le.existsPromise(n)||(this.opts.project.storedBuildState.delete(t.locatorHash),await le.mkdirPromise(a,{recursive:!0}),await le.copyPromise(a,vt.dot,{baseFs:r.packageFs,overwrite:!1}),await le.writeFilePromise(n,\"\"))})),new bn(a))}getPackageInformation(t){let r=j.stringifyIdent(t),s=t.reference,a=this.packageRegistry.get(r);if(!a)throw new Error(`Assertion failed: The package information store should have been available (for ${j.prettyIdent(this.opts.project.configuration,t)})`);let n=a.get(s);if(!n)throw new Error(`Assertion failed: The package information should have been available (for ${j.prettyLocator(this.opts.project.configuration,t)})`);return n}getDiskInformation(t){let r=Ge.getMapWithDefault(this.packageRegistry,\"@@disk\"),s=MW(this.opts.project.cwd,t);return Ge.getFactoryWithDefault(r,s,()=>({packageLocation:s,packageDependencies:new Map,packagePeers:new Set,linkType:\"SOFT\",discardFromLookup:!1}))}};function MW(e,t){let r=K.relative(e,t);return r.match(/^\\.{0,2}\\//)||(r=`./${r}`),r.replace(/\\/?$/,\"/\")}async function Qht(e){let t=await Ut.tryFind(e.prefixPath,{baseFs:e.packageFs})??new Ut,r=new Set([\"preinstall\",\"install\",\"postinstall\"]);for(let s of t.scripts.keys())r.has(s)||t.scripts.delete(s);return{manifest:{scripts:t.scripts,preferUnplugged:t.preferUnplugged,type:t.type},misc:{extractHint:OW(e),hasBindingGyp:LW(e)}}}qe();qe();Vt();var g1e=et(Jo());var mw=class extends At{constructor(){super(...arguments);this.all=he.Boolean(\"-A,--all\",!1,{description:\"Unplug direct dependencies from the entire project\"});this.recursive=he.Boolean(\"-R,--recursive\",!1,{description:\"Unplug both direct and transitive dependencies\"});this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.patterns=he.Rest()}static{this.paths=[[\"unplug\"]]}static{this.usage=at.Usage({description:\"force the unpacking of a list of packages\",details:\"\\n      This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\\n\\n      A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\\n\\n      Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\\n\\n      By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\\n\\n      This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\\n    \",examples:[[\"Unplug the lodash dependency from the active workspace\",\"yarn unplug lodash\"],[\"Unplug all instances of lodash referenced by any workspace\",\"yarn unplug lodash -A\"],[\"Unplug all instances of lodash referenced by the active workspace and its dependencies\",\"yarn unplug lodash -R\"],[\"Unplug all instances of lodash, anywhere\",\"yarn unplug lodash -AR\"],[\"Unplug one specific version of lodash\",\"yarn unplug lodash@1.2.3\"],[\"Unplug all packages with the `@babel` scope\",\"yarn unplug '@babel/*'\"],[\"Unplug all packages (only for testing, not recommended)\",\"yarn unplug -R '*'\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);if(r.get(\"nodeLinker\")!==\"pnp\")throw new st(\"This command can only be used if the `nodeLinker` option is set to `pnp`\");await s.restoreInstallState();let c=new Set(this.patterns),f=this.patterns.map(x=>{let I=j.parseDescriptor(x),T=I.range!==\"unknown\"?I:j.makeDescriptor(I,\"*\");if(!Fr.validRange(T.range))throw new st(`The range of the descriptor patterns must be a valid semver range (${j.prettyDescriptor(r,T)})`);return O=>{let U=j.stringifyIdent(O);return!g1e.default.isMatch(U,j.stringifyIdent(T))||O.version&&!Fr.satisfiesWithPrereleases(O.version,T.range)?!1:(c.delete(x),!0)}}),p=()=>{let x=[];for(let I of s.storedPackages.values())!s.tryWorkspaceByLocator(I)&&!j.isVirtualLocator(I)&&f.some(T=>T(I))&&x.push(I);return x},h=x=>{let I=new Set,T=[],O=(U,Y)=>{if(I.has(U.locatorHash))return;let te=!!s.tryWorkspaceByLocator(U);if(!(Y>0&&!this.recursive&&te)&&(I.add(U.locatorHash),!s.tryWorkspaceByLocator(U)&&f.some(ie=>ie(U))&&T.push(U),!(Y>0&&!this.recursive)))for(let ie of U.dependencies.values()){let ue=s.storedResolutions.get(ie.descriptorHash);if(!ue)throw new Error(\"Assertion failed: The resolution should have been registered\");let ae=s.storedPackages.get(ue);if(!ae)throw new Error(\"Assertion failed: The package should have been registered\");O(ae,Y+1)}};for(let U of x)O(U.anchoredPackage,0);return T},E,C;if(this.all&&this.recursive?(E=p(),C=\"the project\"):this.all?(E=h(s.workspaces),C=\"any workspace\"):(E=h([a]),C=\"this workspace\"),c.size>1)throw new st(`Patterns ${pe.prettyList(r,c,pe.Type.CODE)} don't match any packages referenced by ${C}`);if(c.size>0)throw new st(`Pattern ${pe.prettyList(r,c,pe.Type.CODE)} doesn't match any packages referenced by ${C}`);E=Ge.sortMap(E,x=>j.stringifyLocator(x));let S=await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async x=>{for(let I of E){let T=I.version??\"unknown\",O=s.topLevelWorkspace.manifest.ensureDependencyMeta(j.makeDescriptor(I,T));O.unplugged=!0,x.reportInfo(0,`Will unpack ${j.prettyLocator(r,I)} to ${pe.pretty(r,_D(I,{configuration:r}),pe.Type.PATH)}`),x.reportJson({locator:j.stringifyLocator(I),version:T})}await s.topLevelWorkspace.persistManifest(),this.json||x.reportSeparator()});return S.hasErrors()?S.exitCode():await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};var ig=e=>({cjs:K.join(e.cwd,Er.pnpCjs),data:K.join(e.cwd,Er.pnpData),esmLoader:K.join(e.cwd,Er.pnpEsmLoader)}),m1e=e=>/\\s/.test(e)?JSON.stringify(e):e;async function Rht(e,t,r){let s=/\\s*--require\\s+\\S*\\.pnp\\.c?js\\s*/g,a=/\\s*--experimental-loader\\s+\\S*\\.pnp\\.loader\\.mjs\\s*/,n=(t.NODE_OPTIONS??\"\").replace(s,\" \").replace(a,\" \").trim();if(e.configuration.get(\"nodeLinker\")!==\"pnp\"){t.NODE_OPTIONS=n||void 0;return}let c=ig(e),f=`--require ${m1e(fe.fromPortablePath(c.cjs))}`;le.existsSync(c.esmLoader)&&(f=`${f} --experimental-loader ${(0,d1e.pathToFileURL)(fe.fromPortablePath(c.esmLoader)).href}`),le.existsSync(c.cjs)&&(t.NODE_OPTIONS=n?`${f} ${n}`:f)}async function Tht(e,t){let r=ig(e);t(r.cjs),t(r.data),t(r.esmLoader),t(e.configuration.get(\"pnpUnpluggedFolder\"))}var Fht={hooks:{populateYarnPaths:Tht,setupScriptEnvironment:Rht},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: \"pnp\", \"pnpm\", or \"node-modules\"',type:\"STRING\",default:\"pnp\"},minizip:{description:\"Whether Yarn should use minizip to extract archives\",type:\"BOOLEAN\",default:!1},winLinkType:{description:\"Whether Yarn should use Windows Junctions or symlinks when creating links on Windows.\",type:\"STRING\",values:[\"junctions\",\"symlinks\"],default:\"junctions\"},pnpMode:{description:\"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.\",type:\"STRING\",default:\"strict\"},pnpShebang:{description:\"String to prepend to the generated PnP script\",type:\"STRING\",default:\"#!/usr/bin/env node\"},pnpIgnorePatterns:{description:\"Array of glob patterns; files matching them will use the classic resolution\",type:\"STRING\",default:[],isArray:!0},pnpZipBackend:{description:\"Whether to use the experimental js implementation for the ZipFS\",type:\"STRING\",values:[\"libzip\",\"js\"],default:\"libzip\"},pnpEnableEsmLoader:{description:\"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.\",type:\"BOOLEAN\",default:!1},pnpEnableInlining:{description:\"If true, the PnP data will be inlined along with the generated loader\",type:\"BOOLEAN\",default:!0},pnpFallbackMode:{description:\"If true, the generated PnP loader will follow the top-level fallback rule\",type:\"STRING\",default:\"dependencies-only\"},pnpUnpluggedFolder:{description:\"Folder where the unplugged packages must be stored\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/unplugged\"}},linkers:[ng],commands:[mw]},Nht=Fht;var S1e=et(w1e());Vt();var VW=et(Ie(\"crypto\")),D1e=et(Ie(\"fs\")),b1e=1,Ri=\"node_modules\",WF=\".bin\",P1e=\".yarn-state.yml\",Xht=1e3,YW=(s=>(s.CLASSIC=\"classic\",s.HARDLINKS_LOCAL=\"hardlinks-local\",s.HARDLINKS_GLOBAL=\"hardlinks-global\",s))(YW||{}),jD=class{constructor(){this.installStateCache=new Map}getCustomDataKey(){return JSON.stringify({name:\"NodeModulesLinker\",version:3})}supportsPackage(t,r){return this.isEnabled(r)}async findPackageLocation(t,r){if(!this.isEnabled(r))throw new Error(\"Assertion failed: Expected the node-modules linker to be enabled\");let s=r.project.tryWorkspaceByLocator(t);if(s)return s.cwd;let a=await Ge.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await WW(r.project,{unrollAliases:!0}));if(a===null)throw new st(\"Couldn't find the node_modules state file - running an install might help (findPackageLocation)\");let n=a.locatorMap.get(j.stringifyLocator(t));if(!n){let p=new st(`Couldn't find ${j.prettyLocator(r.project.configuration,t)} in the currently installed node_modules map - running an install might help`);throw p.code=\"LOCATOR_NOT_INSTALLED\",p}let c=n.locations.sort((p,h)=>p.split(K.sep).length-h.split(K.sep).length),f=K.join(r.project.configuration.startingCwd,Ri);return c.find(p=>K.contains(f,p))||n.locations[0]}async findPackageLocator(t,r){if(!this.isEnabled(r))return null;let s=await Ge.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await WW(r.project,{unrollAliases:!0}));if(s===null)return null;let{locationRoot:a,segments:n}=VF(K.resolve(t),{skipPrefix:r.project.cwd}),c=s.locationTree.get(a);if(!c)return null;let f=c.locator;for(let p of n){if(c=c.children.get(p),!c)break;f=c.locator||f}return j.parseLocator(f)}makeInstaller(t){return new qW(t)}isEnabled(t){return t.project.configuration.get(\"nodeLinker\")===\"node-modules\"}},qW=class{constructor(t){this.opts=t;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}attachCustomData(t){this.customData=t}async installPackage(t,r){let s=K.resolve(r.packageFs.getRealPath(),r.prefixPath),a=this.customData.store.get(t.locatorHash);if(typeof a>\"u\"&&(a=await $ht(t,r),t.linkType===\"HARD\"&&this.customData.store.set(t.locatorHash,a)),!j.isPackageCompatible(t,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildRequest:null};let n=new Map,c=new Set;n.has(j.stringifyIdent(t))||n.set(j.stringifyIdent(t),t.reference);let f=t;if(j.isVirtualLocator(t)){f=j.devirtualizeLocator(t);for(let E of t.peerDependencies.values())n.set(j.stringifyIdent(E),null),c.add(j.stringifyIdent(E))}let p={packageLocation:`${fe.fromPortablePath(s)}/`,packageDependencies:n,packagePeers:c,linkType:t.linkType,discardFromLookup:r.discardFromLookup??!1};this.localStore.set(t.locatorHash,{pkg:t,customPackageData:a,dependencyMeta:this.opts.project.getDependencyMeta(t,t.version),pnpNode:p});let h=r.checksum?r.checksum.substring(r.checksum.indexOf(\"/\")+1):null;return this.realLocatorChecksums.set(f.locatorHash,h),{packageLocation:s,buildRequest:null}}async attachInternalDependencies(t,r){let s=this.localStore.get(t.locatorHash);if(typeof s>\"u\")throw new Error(\"Assertion failed: Expected information object to have been registered\");for(let[a,n]of r){let c=j.areIdentsEqual(a,n)?n.reference:[j.stringifyIdent(n),n.reference];s.pnpNode.packageDependencies.set(j.stringifyIdent(a),c)}}async attachExternalDependents(t,r){throw new Error(\"External dependencies haven't been implemented for the node-modules linker\")}async finalizeInstall(){if(this.opts.project.configuration.get(\"nodeLinker\")!==\"node-modules\")return;let t=new mo({baseFs:new tA({maxOpenFiles:80,readOnlyArchives:!0})}),r=await WW(this.opts.project),s=this.opts.project.configuration.get(\"nmMode\");(r===null||s!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:s,mtimeMs:0});let a=new Map(this.opts.project.workspaces.map(S=>{let x=this.opts.project.configuration.get(\"nmHoistingLimits\");try{x=Ge.validateEnum(xD,S.manifest.installConfig?.hoistingLimits??x)}catch{let I=j.prettyWorkspace(this.opts.project.configuration,S);this.opts.report.reportWarning(57,`${I}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(xD).join(\", \")}, using default: \"${x}\"`)}return[S.relativeCwd,x]})),n=new Map(this.opts.project.workspaces.map(S=>{let x=this.opts.project.configuration.get(\"nmSelfReferences\");return x=S.manifest.installConfig?.selfReferences??x,[S.relativeCwd,x]})),c={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(S,x)=>Array.isArray(x)?{name:x[0],reference:x[1]}:{name:S,reference:x},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(S=>{let x=S.anchoredLocator;return{name:j.stringifyIdent(x),reference:x.reference}}),getPackageInformation:S=>{let x=S.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:j.makeLocator(j.parseIdent(S.name),S.reference),I=this.localStore.get(x.locatorHash);if(typeof I>\"u\")throw new Error(\"Assertion failed: Expected the package reference to have been registered\");return I.pnpNode},findPackageLocator:S=>{let x=this.opts.project.tryWorkspaceByCwd(fe.toPortablePath(S));if(x!==null){let I=x.anchoredLocator;return{name:j.stringifyIdent(I),reference:I.reference}}throw new Error(\"Assertion failed: Unimplemented\")},resolveToUnqualified:()=>{throw new Error(\"Assertion failed: Unimplemented\")},resolveUnqualified:()=>{throw new Error(\"Assertion failed: Unimplemented\")},resolveRequest:()=>{throw new Error(\"Assertion failed: Unimplemented\")},resolveVirtual:S=>fe.fromPortablePath(mo.resolveVirtual(fe.toPortablePath(S)))},{tree:f,errors:p,preserveSymlinksRequired:h}=kD(c,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:a,project:this.opts.project,selfReferencesByCwd:n});if(!f){for(let{messageName:S,text:x}of p)this.opts.report.reportError(S,x);return}let E=IW(f);await o0t(r,E,{baseFs:t,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async S=>{let x=j.parseLocator(S),I=this.localStore.get(x.locatorHash);if(typeof I>\"u\")throw new Error(\"Assertion failed: Expected the slot to exist\");return I.customPackageData.manifest}});let C=[];for(let[S,x]of E.entries()){if(Q1e(S))continue;let I=j.parseLocator(S),T=this.localStore.get(I.locatorHash);if(typeof T>\"u\")throw new Error(\"Assertion failed: Expected the slot to exist\");if(this.opts.project.tryWorkspaceByLocator(T.pkg))continue;let O=dA.extractBuildRequest(T.pkg,T.customPackageData,T.dependencyMeta,{configuration:this.opts.project.configuration});O&&C.push({buildLocations:x.locations,locator:I,buildRequest:O})}return h&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${pe.pretty(this.opts.project.configuration,\"--preserve-symlinks\",pe.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:C}}};async function $ht(e,t){let r=await Ut.tryFind(t.prefixPath,{baseFs:t.packageFs})??new Ut,s=new Set([\"preinstall\",\"install\",\"postinstall\"]);for(let a of r.scripts.keys())s.has(a)||r.scripts.delete(a);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{hasBindingGyp:dA.hasBindingGyp(t)}}}async function e0t(e,t,r,s,{installChangedByUser:a}){let n=\"\";n+=`# Warning: This file is automatically generated. Removing it is fine, but will\n`,n+=`# cause your node_modules installation to become invalidated.\n`,n+=`\n`,n+=`__metadata:\n`,n+=`  version: ${b1e}\n`,n+=`  nmMode: ${s.value}\n`;let c=Array.from(t.keys()).sort(),f=j.stringifyLocator(e.topLevelWorkspace.anchoredLocator);for(let E of c){let C=t.get(E);n+=`\n`,n+=`${JSON.stringify(E)}:\n`,n+=`  locations:\n`;for(let S of C.locations){let x=K.contains(e.cwd,S);if(x===null)throw new Error(`Assertion failed: Expected the path to be within the project (${S})`);n+=`    - ${JSON.stringify(x)}\n`}if(C.aliases.length>0){n+=`  aliases:\n`;for(let S of C.aliases)n+=`    - ${JSON.stringify(S)}\n`}if(E===f&&r.size>0){n+=`  bin:\n`;for(let[S,x]of r){let I=K.contains(e.cwd,S);if(I===null)throw new Error(`Assertion failed: Expected the path to be within the project (${S})`);n+=`    ${JSON.stringify(I)}:\n`;for(let[T,O]of x){let U=K.relative(K.join(S,Ri),O);n+=`      ${JSON.stringify(T)}: ${JSON.stringify(U)}\n`}}}}let p=e.cwd,h=K.join(p,Ri,P1e);a&&await le.removePromise(h),await le.changeFilePromise(h,n,{automaticNewlines:!0})}async function WW(e,{unrollAliases:t=!1}={}){let r=e.cwd,s=K.join(r,Ri,P1e),a;try{a=await le.statPromise(s)}catch{}if(!a)return null;let n=cs(await le.readFilePromise(s,\"utf8\"));if(n.__metadata.version>b1e)return null;let c=n.__metadata.nmMode||\"classic\",f=new Map,p=new Map;delete n.__metadata;for(let[h,E]of Object.entries(n)){let C=E.locations.map(x=>K.join(r,x)),S=E.bin;if(S)for(let[x,I]of Object.entries(S)){let T=K.join(r,fe.toPortablePath(x)),O=Ge.getMapWithDefault(p,T);for(let[U,Y]of Object.entries(I))O.set(U,fe.toPortablePath([T,Ri,Y].join(K.sep)))}if(f.set(h,{target:vt.dot,linkType:\"HARD\",locations:C,aliases:E.aliases||[]}),t&&E.aliases)for(let x of E.aliases){let{scope:I,name:T}=j.parseLocator(h),O=j.makeLocator(j.makeIdent(I,T),x),U=j.stringifyLocator(O);f.set(U,{target:vt.dot,linkType:\"HARD\",locations:C,aliases:[]})}}return{locatorMap:f,binSymlinks:p,locationTree:x1e(f,{skipPrefix:e.cwd}),nmMode:c,mtimeMs:a.mtimeMs}}var Ew=async(e,t)=>{if(e.split(K.sep).indexOf(Ri)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${e}`);try{let r;if(!t.innerLoop&&(r=await le.lstatPromise(e),!r.isDirectory()&&!r.isSymbolicLink()||r.isSymbolicLink()&&!t.isWorkspaceDir)){await le.unlinkPromise(e);return}let s=await le.readdirPromise(e,{withFileTypes:!0});for(let n of s){let c=K.join(e,n.name);n.isDirectory()?(n.name!==Ri||t&&t.innerLoop)&&await Ew(c,{innerLoop:!0,contentsOnly:!1}):await le.unlinkPromise(c)}let a=!t.innerLoop&&t.isWorkspaceDir&&r?.isSymbolicLink();!t.contentsOnly&&!a&&await le.rmdirPromise(e)}catch(r){if(r.code!==\"ENOENT\"&&r.code!==\"ENOTEMPTY\")throw r}},B1e=4,VF=(e,{skipPrefix:t})=>{let r=K.contains(t,e);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${e} which is outside project root: ${t}`);let s=r.split(K.sep).filter(p=>p!==\"\"),a=s.indexOf(Ri),n=s.slice(0,a).join(K.sep),c=K.join(t,n),f=s.slice(a);return{locationRoot:c,segments:f}},x1e=(e,{skipPrefix:t})=>{let r=new Map;if(e===null)return r;let s=()=>({children:new Map,linkType:\"HARD\"});for(let[a,n]of e.entries()){if(n.linkType===\"SOFT\"&&K.contains(t,n.target)!==null){let f=Ge.getFactoryWithDefault(r,n.target,s);f.locator=a,f.linkType=n.linkType}for(let c of n.locations){let{locationRoot:f,segments:p}=VF(c,{skipPrefix:t}),h=Ge.getFactoryWithDefault(r,f,s);for(let E=0;E<p.length;++E){let C=p[E];if(C!==\".\"){let S=Ge.getFactoryWithDefault(h.children,C,s);h.children.set(C,S),h=S}E===p.length-1&&(h.locator=a,h.linkType=n.linkType)}}}return r},KW=async(e,t,r)=>{if(process.platform===\"win32\"&&r===\"junctions\"){let s;try{s=await le.lstatPromise(e)}catch{}if(!s||s.isDirectory()){await le.symlinkPromise(e,t,\"junction\");return}}await le.symlinkPromise(K.relative(K.dirname(t),e),t)};async function k1e(e,t,r){let s=K.join(e,`${VW.default.randomBytes(16).toString(\"hex\")}.tmp`);try{await le.writeFilePromise(s,r);try{await le.linkPromise(s,t)}catch{}}finally{await le.unlinkPromise(s)}}async function t0t({srcPath:e,dstPath:t,entry:r,globalHardlinksStore:s,baseFs:a,nmMode:n}){if(r.kind===\"file\"){if(n.value===\"hardlinks-global\"&&s&&r.digest){let f=K.join(s,r.digest.substring(0,2),`${r.digest.substring(2)}.dat`),p;try{let h=await le.statPromise(f);if(h&&(!r.mtimeMs||h.mtimeMs>r.mtimeMs||h.mtimeMs<r.mtimeMs-Xht))if(await Ln.checksumFile(f,{baseFs:le,algorithm:\"sha1\"})!==r.digest){let C=K.join(s,`${VW.default.randomBytes(16).toString(\"hex\")}.tmp`);await le.renamePromise(f,C);let S=await a.readFilePromise(e);await le.writeFilePromise(C,S);try{await le.linkPromise(C,f),r.mtimeMs=new Date().getTime(),await le.unlinkPromise(C)}catch{}}else r.mtimeMs||(r.mtimeMs=Math.ceil(h.mtimeMs));await le.linkPromise(f,t),p=!0}catch{p=!1}if(!p){let h=await a.readFilePromise(e);await k1e(s,f,h),r.mtimeMs=new Date().getTime();try{await le.linkPromise(f,t)}catch(E){E&&E.code&&E.code==\"EXDEV\"&&(n.value=\"hardlinks-local\",await a.copyFilePromise(e,t))}}}else await a.copyFilePromise(e,t);let c=r.mode&511;c!==420&&await le.chmodPromise(t,c)}}var r0t=async(e,t,{baseFs:r,globalHardlinksStore:s,nmMode:a,windowsLinkType:n,packageChecksum:c})=>{await le.mkdirPromise(e,{recursive:!0});let f=async(E=vt.dot)=>{let C=K.join(t,E),S=await r.readdirPromise(C,{withFileTypes:!0}),x=new Map;for(let I of S){let T=K.join(E,I.name),O,U=K.join(C,I.name);if(I.isFile()){if(O={kind:\"file\",mode:(await r.lstatPromise(U)).mode},a.value===\"hardlinks-global\"){let Y=await Ln.checksumFile(U,{baseFs:r,algorithm:\"sha1\"});O.digest=Y}}else if(I.isDirectory())O={kind:\"directory\"};else if(I.isSymbolicLink())O={kind:\"symlink\",symlinkTo:await r.readlinkPromise(U)};else throw new Error(`Unsupported file type (file: ${U}, mode: 0o${await r.statSync(U).mode.toString(8).padStart(6,\"0\")})`);if(x.set(T,O),I.isDirectory()&&T!==Ri){let Y=await f(T);for(let[te,ie]of Y)x.set(te,ie)}}return x},p;if(a.value===\"hardlinks-global\"&&s&&c){let E=K.join(s,c.substring(0,2),`${c.substring(2)}.json`);try{p=new Map(Object.entries(JSON.parse(await le.readFilePromise(E,\"utf8\"))))}catch{p=await f()}}else p=await f();let h=!1;for(let[E,C]of p){let S=K.join(t,E),x=K.join(e,E);if(C.kind===\"directory\")await le.mkdirPromise(x,{recursive:!0});else if(C.kind===\"file\"){let I=C.mtimeMs;await t0t({srcPath:S,dstPath:x,entry:C,nmMode:a,baseFs:r,globalHardlinksStore:s}),C.mtimeMs!==I&&(h=!0)}else C.kind===\"symlink\"&&await KW(K.resolve(K.dirname(x),C.symlinkTo),x,n)}if(a.value===\"hardlinks-global\"&&s&&h&&c){let E=K.join(s,c.substring(0,2),`${c.substring(2)}.json`);await le.removePromise(E),await k1e(s,E,Buffer.from(JSON.stringify(Object.fromEntries(p))))}};function n0t(e,t,r,s){let a=new Map,n=new Map,c=new Map,f=!1,p=(h,E,C,S,x)=>{let I=!0,T=K.join(h,E),O=new Set;if(E===Ri||E.startsWith(\"@\")){let Y;try{Y=le.statSync(T)}catch{}I=!!Y,Y?Y.mtimeMs>r?(f=!0,O=new Set(le.readdirSync(T))):O=new Set(C.children.get(E).children.keys()):f=!0;let te=t.get(h);if(te){let ie=K.join(h,Ri,WF),ue;try{ue=le.statSync(ie)}catch{}if(!ue)f=!0;else if(ue.mtimeMs>r){f=!0;let ae=new Set(le.readdirSync(ie)),de=new Map;n.set(h,de);for(let[Ae,Ce]of te)ae.has(Ae)&&de.set(Ae,Ce)}else n.set(h,te)}}else I=x.has(E);let U=C.children.get(E);if(I){let{linkType:Y,locator:te}=U,ie={children:new Map,linkType:Y,locator:te};if(S.children.set(E,ie),te){let ue=Ge.getSetWithDefault(c,te);ue.add(T),c.set(te,ue)}for(let ue of U.children.keys())p(T,ue,U,ie,O)}else U.locator&&s.storedBuildState.delete(j.parseLocator(U.locator).locatorHash)};for(let[h,E]of e){let{linkType:C,locator:S}=E,x={children:new Map,linkType:C,locator:S};if(a.set(h,x),S){let I=Ge.getSetWithDefault(c,E.locator);I.add(h),c.set(E.locator,I)}E.children.has(Ri)&&p(h,Ri,E,x,new Set)}return{locationTree:a,binSymlinks:n,locatorLocations:c,installChangedByUser:f}}function Q1e(e){let t=j.parseDescriptor(e);return j.isVirtualDescriptor(t)&&(t=j.devirtualizeDescriptor(t)),t.range.startsWith(\"link:\")}async function i0t(e,t,r,{loadManifest:s}){let a=new Map;for(let[f,{locations:p}]of e){let h=Q1e(f)?null:await s(f,p[0]),E=new Map;if(h)for(let[C,S]of h.bin){let x=K.join(p[0],S);S!==\"\"&&le.existsSync(x)&&E.set(C,S)}a.set(f,E)}let n=new Map,c=(f,p,h)=>{let E=new Map,C=K.contains(r,f);if(h.locator&&C!==null){let S=a.get(h.locator);for(let[x,I]of S){let T=K.join(f,fe.toPortablePath(I));E.set(x,T)}for(let[x,I]of h.children){let T=K.join(f,x),O=c(T,T,I);O.size>0&&n.set(f,new Map([...n.get(f)||new Map,...O]))}}else for(let[S,x]of h.children){let I=c(K.join(f,S),p,x);for(let[T,O]of I)E.set(T,O)}return E};for(let[f,p]of t){let h=c(f,f,p);h.size>0&&n.set(f,new Map([...n.get(f)||new Map,...h]))}return n}var v1e=(e,t)=>{if(!e||!t)return e===t;let r=j.parseLocator(e);j.isVirtualLocator(r)&&(r=j.devirtualizeLocator(r));let s=j.parseLocator(t);return j.isVirtualLocator(s)&&(s=j.devirtualizeLocator(s)),j.areLocatorsEqual(r,s)};function JW(e){return K.join(e.get(\"globalFolder\"),\"store\")}function s0t(e,t){let r=s=>{let a=s.split(K.sep),n=a.lastIndexOf(Ri);if(n<0||n==a.length-1)throw new Error(`Assertion failed. Path is outside of any node_modules package ${s}`);return a.slice(0,n+(a[n+1].startsWith(\"@\")?3:2)).join(K.sep)};for(let s of e.values())for(let[a,n]of s)t.has(r(n))&&s.delete(a)}async function o0t(e,t,{baseFs:r,project:s,report:a,loadManifest:n,realLocatorChecksums:c}){let f=K.join(s.cwd,Ri),{locationTree:p,binSymlinks:h,locatorLocations:E,installChangedByUser:C}=n0t(e.locationTree,e.binSymlinks,e.mtimeMs,s),S=x1e(t,{skipPrefix:s.cwd}),x=[],I=async({srcDir:Ce,dstDir:Ee,linkType:g,globalHardlinksStore:Se,nmMode:Be,windowsLinkType:me,packageChecksum:ce})=>{let X=(async()=>{try{g===\"SOFT\"?(await le.mkdirPromise(K.dirname(Ee),{recursive:!0}),await KW(K.resolve(Ce),Ee,me)):await r0t(Ee,Ce,{baseFs:r,globalHardlinksStore:Se,nmMode:Be,windowsLinkType:me,packageChecksum:ce})}catch(De){throw De.message=`While persisting ${Ce} -> ${Ee} ${De.message}`,De}finally{ie.tick()}})().then(()=>x.splice(x.indexOf(X),1));x.push(X),x.length>B1e&&await Promise.race(x)},T=async(Ce,Ee,g)=>{let Se=(async()=>{let Be=async(me,ce,X)=>{try{X.innerLoop||await le.mkdirPromise(ce,{recursive:!0});let De=await le.readdirPromise(me,{withFileTypes:!0});for(let Qe of De){if(!X.innerLoop&&Qe.name===WF)continue;let it=K.join(me,Qe.name),_=K.join(ce,Qe.name);Qe.isDirectory()?(Qe.name!==Ri||X&&X.innerLoop)&&(await le.mkdirPromise(_,{recursive:!0}),await Be(it,_,{...X,innerLoop:!0})):de.value===\"hardlinks-local\"||de.value===\"hardlinks-global\"?await le.linkPromise(it,_):await le.copyFilePromise(it,_,D1e.default.constants.COPYFILE_FICLONE)}}catch(De){throw X.innerLoop||(De.message=`While cloning ${me} -> ${ce} ${De.message}`),De}finally{X.innerLoop||ie.tick()}};await Be(Ce,Ee,g)})().then(()=>x.splice(x.indexOf(Se),1));x.push(Se),x.length>B1e&&await Promise.race(x)},O=async(Ce,Ee,g)=>{if(g)for(let[Se,Be]of Ee.children){let me=g.children.get(Se);await O(K.join(Ce,Se),Be,me)}else{Ee.children.has(Ri)&&await Ew(K.join(Ce,Ri),{contentsOnly:!1});let Se=K.basename(Ce)===Ri&&p.has(K.join(K.dirname(Ce)));await Ew(Ce,{contentsOnly:Ce===f,isWorkspaceDir:Se})}};for(let[Ce,Ee]of p){let g=S.get(Ce);for(let[Se,Be]of Ee.children){if(Se===\".\")continue;let me=g&&g.children.get(Se),ce=K.join(Ce,Se);await O(ce,Be,me)}}let U=async(Ce,Ee,g)=>{if(g){v1e(Ee.locator,g.locator)||await Ew(Ce,{contentsOnly:Ee.linkType===\"HARD\"});for(let[Se,Be]of Ee.children){let me=g.children.get(Se);await U(K.join(Ce,Se),Be,me)}}else{Ee.children.has(Ri)&&await Ew(K.join(Ce,Ri),{contentsOnly:!0});let Se=K.basename(Ce)===Ri&&S.has(K.join(K.dirname(Ce)));await Ew(Ce,{contentsOnly:Ee.linkType===\"HARD\",isWorkspaceDir:Se})}};for(let[Ce,Ee]of S){let g=p.get(Ce);for(let[Se,Be]of Ee.children){if(Se===\".\")continue;let me=g&&g.children.get(Se);await U(K.join(Ce,Se),Be,me)}}let Y=new Map,te=[];for(let[Ce,Ee]of E)for(let g of Ee){let{locationRoot:Se,segments:Be}=VF(g,{skipPrefix:s.cwd}),me=S.get(Se),ce=Se;if(me){for(let X of Be)if(ce=K.join(ce,X),me=me.children.get(X),!me)break;if(me){let X=v1e(me.locator,Ce),De=t.get(me.locator),Qe=De.target,it=ce,_=De.linkType;if(X)Y.has(Qe)||Y.set(Qe,it);else if(Qe!==it){let tt=j.parseLocator(me.locator);j.isVirtualLocator(tt)&&(tt=j.devirtualizeLocator(tt)),te.push({srcDir:Qe,dstDir:it,linkType:_,realLocatorHash:tt.locatorHash})}}}}for(let[Ce,{locations:Ee}]of t.entries())for(let g of Ee){let{locationRoot:Se,segments:Be}=VF(g,{skipPrefix:s.cwd}),me=p.get(Se),ce=S.get(Se),X=Se,De=t.get(Ce),Qe=j.parseLocator(Ce);j.isVirtualLocator(Qe)&&(Qe=j.devirtualizeLocator(Qe));let it=Qe.locatorHash,_=De.target,tt=g;if(_===tt)continue;let Ne=De.linkType;for(let ke of Be)ce=ce.children.get(ke);if(!me)te.push({srcDir:_,dstDir:tt,linkType:Ne,realLocatorHash:it});else for(let ke of Be)if(X=K.join(X,ke),me=me.children.get(ke),!me){te.push({srcDir:_,dstDir:tt,linkType:Ne,realLocatorHash:it});break}}let ie=yo.progressViaCounter(te.length),ue=a.reportProgress(ie),ae=s.configuration.get(\"nmMode\"),de={value:ae},Ae=s.configuration.get(\"winLinkType\");try{let Ce=de.value===\"hardlinks-global\"?`${JW(s.configuration)}/v1`:null;if(Ce&&!await le.existsPromise(Ce)){await le.mkdirpPromise(Ce);for(let g=0;g<256;g++)await le.mkdirPromise(K.join(Ce,g.toString(16).padStart(2,\"0\")))}for(let g of te)(g.linkType===\"SOFT\"||!Y.has(g.srcDir))&&(Y.set(g.srcDir,g.dstDir),await I({...g,globalHardlinksStore:Ce,nmMode:de,windowsLinkType:Ae,packageChecksum:c.get(g.realLocatorHash)||null}));await Promise.all(x),x.length=0;for(let g of te){let Se=Y.get(g.srcDir);g.linkType!==\"SOFT\"&&g.dstDir!==Se&&await T(Se,g.dstDir,{nmMode:de})}await Promise.all(x),await le.mkdirPromise(f,{recursive:!0}),s0t(h,new Set(te.map(g=>g.dstDir)));let Ee=await i0t(t,S,s.cwd,{loadManifest:n});await a0t(h,Ee,s.cwd,Ae),await e0t(s,t,Ee,de,{installChangedByUser:C}),ae==\"hardlinks-global\"&&de.value==\"hardlinks-local\"&&a.reportWarningOnce(74,\"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices\")}finally{ue.stop()}}async function a0t(e,t,r,s){for(let a of e.keys()){if(K.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);if(!t.has(a)){let n=K.join(a,Ri,WF);await le.removePromise(n)}}for(let[a,n]of t){if(K.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);let c=K.join(a,Ri,WF),f=e.get(a)||new Map;await le.mkdirPromise(c,{recursive:!0});for(let p of f.keys())n.has(p)||(await le.removePromise(K.join(c,p)),process.platform===\"win32\"&&await le.removePromise(K.join(c,`${p}.cmd`)));for(let[p,h]of n){let E=f.get(p),C=K.join(c,p);E!==h&&(process.platform===\"win32\"?await(0,S1e.default)(fe.fromPortablePath(h),fe.fromPortablePath(C),{createPwshFile:!1}):(await le.removePromise(C),await KW(h,C,s),K.contains(r,await le.realpathPromise(h))!==null&&await le.chmodPromise(h,493)))}}}qe();Dt();rA();var GD=class extends ng{constructor(){super(...arguments);this.mode=\"loose\"}makeInstaller(r){return new zW(r)}},zW=class extends Vm{constructor(){super(...arguments);this.mode=\"loose\"}async transformPnpSettings(r){let s=new mo({baseFs:new tA({maxOpenFiles:80,readOnlyArchives:!0})}),a=f1e(r,this.opts.project.cwd,s),{tree:n,errors:c}=kD(a,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:C,text:S}of c)this.opts.report.reportError(C,S);return}let f=new Map;r.fallbackPool=f;let p=(C,S)=>{let x=j.parseLocator(S.locator),I=j.stringifyIdent(x);I===C?f.set(C,x.reference):f.set(C,[I,x.reference])},h=K.join(this.opts.project.cwd,Er.nodeModules),E=n.get(h);if(!(typeof E>\"u\")){if(\"target\"in E)throw new Error(\"Assertion failed: Expected the root junction point to be a directory\");for(let C of E.dirList){let S=K.join(h,C),x=n.get(S);if(typeof x>\"u\")throw new Error(\"Assertion failed: Expected the child to have been registered\");if(\"target\"in x)p(C,x);else for(let I of x.dirList){let T=K.join(S,I),O=n.get(T);if(typeof O>\"u\")throw new Error(\"Assertion failed: Expected the subchild to have been registered\");if(\"target\"in O)p(`${C}/${I}`,O);else throw new Error(\"Assertion failed: Expected the leaf junction to be a package\")}}}}};var l0t={hooks:{cleanGlobalArtifacts:async e=>{let t=JW(e);await le.removePromise(t)}},configuration:{nmHoistingLimits:{description:\"Prevents packages to be hoisted past specific levels\",type:\"STRING\",values:[\"workspaces\",\"dependencies\",\"none\"],default:\"none\"},nmMode:{description:\"Defines in which measure Yarn must use hardlinks and symlinks when generated `node_modules` directories.\",type:\"STRING\",values:[\"classic\",\"hardlinks-local\",\"hardlinks-global\"],default:\"classic\"},nmSelfReferences:{description:\"Defines whether the linker should generate self-referencing symlinks for workspaces.\",type:\"BOOLEAN\",default:!0}},linkers:[jD,GD]},c0t=l0t;var ZK={};Yt(ZK,{NpmHttpFetcher:()=>YD,NpmRemapResolver:()=>KD,NpmSemverFetcher:()=>ih,NpmSemverResolver:()=>JD,NpmTagResolver:()=>zD,default:()=>vvt,npmConfigUtils:()=>gi,npmHttpUtils:()=>en,npmPublishUtils:()=>d1});qe();var U1e=et(pi());var ei=\"npm:\";var en={};Yt(en,{AuthType:()=>O1e,customPackageError:()=>Ym,del:()=>D0t,get:()=>Km,getIdentUrl:()=>WD,getPackageMetadata:()=>Bw,handleInvalidAuthenticationError:()=>sg,post:()=>v0t,put:()=>S0t});qe();qe();Dt();var eV=et(Yv());Jl();var N1e=et(pi());var gi={};Yt(gi,{RegistryType:()=>T1e,getAuditRegistry:()=>u0t,getAuthConfiguration:()=>$W,getDefaultRegistry:()=>qD,getPublishRegistry:()=>f0t,getRegistryConfiguration:()=>F1e,getScopeConfiguration:()=>XW,getScopeRegistry:()=>Iw,isPackageApproved:()=>Cw,normalizeRegistry:()=>Vc});qe();var R1e=et(Jo()),T1e=(s=>(s.AUDIT_REGISTRY=\"npmAuditRegistry\",s.FETCH_REGISTRY=\"npmRegistryServer\",s.PUBLISH_REGISTRY=\"npmPublishRegistry\",s))(T1e||{});function Vc(e){return e.replace(/\\/$/,\"\")}function u0t({configuration:e}){return qD({configuration:e,type:\"npmAuditRegistry\"})}function f0t(e,{configuration:t}){return e.publishConfig?.registry?Vc(e.publishConfig.registry):e.name?Iw(e.name.scope,{configuration:t,type:\"npmPublishRegistry\"}):qD({configuration:t,type:\"npmPublishRegistry\"})}function Iw(e,{configuration:t,type:r=\"npmRegistryServer\"}){let s=XW(e,{configuration:t});if(s===null)return qD({configuration:t,type:r});let a=s.get(r);return a===null?qD({configuration:t,type:r}):Vc(a)}function qD({configuration:e,type:t=\"npmRegistryServer\"}){let r=e.get(t);return Vc(r!==null?r:e.get(\"npmRegistryServer\"))}function F1e(e,{configuration:t}){let r=t.get(\"npmRegistries\"),s=Vc(e),a=r.get(s);if(typeof a<\"u\")return a;let n=r.get(s.replace(/^[a-z]+:/,\"\"));return typeof n<\"u\"?n:null}var A0t=new Map([[\"npmRegistryServer\",\"https://npm.jsr.io/\"]]);function XW(e,{configuration:t}){if(e===null)return null;let s=t.get(\"npmScopes\").get(e);return s||(e===\"jsr\"?A0t:null)}function $W(e,{configuration:t,ident:r}){let s=r&&XW(r.scope,{configuration:t});return s?.get(\"npmAuthIdent\")||s?.get(\"npmAuthToken\")?s:F1e(e,{configuration:t})||t}function p0t({configuration:e,version:t,publishTimes:r}){let s=e.get(\"npmMinimalAgeGate\");if(s){let a=r?.[t];if(typeof a>\"u\"||(new Date().getTime()-new Date(a).getTime())/60/1e3<s)return!0}return!1}function h0t(e,t,r){let s=j.tryParseDescriptor(r);if(!s||s.identHash!==e.identHash&&!R1e.default.isMatch(j.stringifyIdent(e),j.stringifyIdent(s)))return!1;if(s.range===\"unknown\")return!0;let a=Fr.validRange(s.range);return!(!a||!a.test(t))}function g0t({configuration:e,ident:t,version:r}){return e.get(\"npmPreapprovedPackages\").some(s=>h0t(t,r,s))}function Cw(e){return!p0t(e)||g0t(e)}var O1e=(a=>(a[a.NO_AUTH=0]=\"NO_AUTH\",a[a.BEST_EFFORT=1]=\"BEST_EFFORT\",a[a.CONFIGURATION=2]=\"CONFIGURATION\",a[a.ALWAYS_AUTH=3]=\"ALWAYS_AUTH\",a))(O1e||{});async function sg(e,{attemptedAs:t,registry:r,headers:s,configuration:a}){if(KF(e))throw new _t(41,\"Invalid OTP token\");if(e.originalError?.name===\"HTTPError\"&&e.originalError?.response.statusCode===401)throw new _t(41,`Invalid authentication (${typeof t!=\"string\"?`as ${await P0t(r,s,{configuration:a})}`:`attempted as ${t}`})`)}function Ym(e,t){let r=e.response?.statusCode;return r?r===404?\"Package not found\":r>=500&&r<600?`The registry appears to be down (using a ${pe.applyHyperlink(t,\"local cache\",\"https://yarnpkg.com/advanced/lexicon#local-cache\")} might have protected you against such outages)`:null:null}function WD(e){return e.scope?`/@${e.scope}%2f${e.name}`:`/${e.name}`}var L1e=new Map,d0t=new Map;async function m0t(e){return await Ge.getFactoryWithDefault(L1e,e,async()=>{let t=null;try{t=await le.readJsonPromise(e)}catch{}return t})}async function y0t(e,t,{configuration:r,cached:s,registry:a,headers:n,version:c,...f}){return await Ge.getFactoryWithDefault(d0t,e,async()=>await Km(WD(t),{...f,customErrorMessage:Ym,configuration:r,registry:a,ident:t,headers:{...n,\"If-None-Match\":s?.etag,\"If-Modified-Since\":s?.lastModified},wrapNetworkRequest:async p=>async()=>{let h=await p();if(h.statusCode===304){if(s===null)throw new Error(\"Assertion failed: cachedMetadata should not be null\");return{...h,body:s.metadata}}let E=I0t(JSON.parse(h.body.toString())),C={metadata:E,etag:h.headers.etag,lastModified:h.headers[\"last-modified\"]};return L1e.set(e,Promise.resolve(C)),Promise.resolve().then(async()=>{let S=`${e}-${process.pid}.tmp`;await le.mkdirPromise(K.dirname(S),{recursive:!0}),await le.writeJsonPromise(S,C,{compact:!0}),await le.renamePromise(S,e)}).catch(()=>{}),{...h,body:E}}}))}function E0t(e){return e.scope!==null?`@${e.scope}-${e.name}-${e.scope.length}`:e.name}async function Bw(e,{cache:t,project:r,registry:s,headers:a,version:n,...c}){let{configuration:f}=r;s=VD(f,{ident:e,registry:s});let p=w0t(f,s),h=K.join(p,`${E0t(e)}.json`),E=null;if(!r.lockfileNeedsRefresh&&(E=await m0t(h),E)){if(typeof n<\"u\"&&typeof E.metadata.versions[n]<\"u\")return E.metadata;if(f.get(\"enableOfflineMode\")){let C=structuredClone(E.metadata),S=new Set;if(t){for(let I of Object.keys(C.versions)){let T=j.makeLocator(e,`npm:${I}`),O=t.getLocatorMirrorPath(T);(!O||!le.existsSync(O))&&(delete C.versions[I],S.add(I))}let x=C[\"dist-tags\"].latest;if(S.has(x)){let I=Object.keys(E.metadata.versions).sort(N1e.default.compare),T=I.indexOf(x);for(;S.has(I[T])&&T>=0;)T-=1;T>=0?C[\"dist-tags\"].latest=I[T]:delete C[\"dist-tags\"].latest}}return C}}return await y0t(h,e,{...c,configuration:f,cached:E,registry:s,headers:a,version:n})}var M1e=[\"name\",\"dist.tarball\",\"bin\",\"scripts\",\"os\",\"cpu\",\"libc\",\"dependencies\",\"dependenciesMeta\",\"optionalDependencies\",\"peerDependencies\",\"peerDependenciesMeta\",\"deprecated\"];function I0t(e){return{\"dist-tags\":e[\"dist-tags\"],versions:Object.fromEntries(Object.entries(e.versions).map(([t,r])=>[t,Yd(r,M1e)])),time:e.time}}var C0t=Ln.makeHash(\"time\",...M1e).slice(0,6);function w0t(e,t){let r=B0t(e),s=new URL(t);return K.join(r,C0t,s.hostname)}function B0t(e){return K.join(e.get(\"globalFolder\"),\"metadata/npm\")}async function Km(e,{configuration:t,headers:r,ident:s,authType:a,allowOidc:n,registry:c,...f}){c=VD(t,{ident:s,registry:c}),s&&s.scope&&typeof a>\"u\"&&(a=1);let p=await YF(c,{authType:a,allowOidc:n,configuration:t,ident:s});p&&(r={...r,authorization:p});try{return await nn.get(e.charAt(0)===\"/\"?`${c}${e}`:e,{configuration:t,headers:r,...f})}catch(h){throw await sg(h,{registry:c,configuration:t,headers:r}),h}}async function v0t(e,t,{attemptedAs:r,configuration:s,headers:a,ident:n,authType:c=3,allowOidc:f,registry:p,otp:h,...E}){p=VD(s,{ident:n,registry:p});let C=await YF(p,{authType:c,allowOidc:f,configuration:s,ident:n});C&&(a={...a,authorization:C}),h&&(a={...a,...ww(h)});try{return await nn.post(p+e,t,{configuration:s,headers:a,...E})}catch(S){if(!KF(S)||h)throw await sg(S,{attemptedAs:r,registry:p,configuration:s,headers:a}),S;h=await tV(S,{configuration:s});let x={...a,...ww(h)};try{return await nn.post(`${p}${e}`,t,{configuration:s,headers:x,...E})}catch(I){throw await sg(I,{attemptedAs:r,registry:p,configuration:s,headers:a}),I}}}async function S0t(e,t,{attemptedAs:r,configuration:s,headers:a,ident:n,authType:c=3,allowOidc:f,registry:p,otp:h,...E}){p=VD(s,{ident:n,registry:p});let C=await YF(p,{authType:c,allowOidc:f,configuration:s,ident:n});C&&(a={...a,authorization:C}),h&&(a={...a,...ww(h)});try{return await nn.put(p+e,t,{configuration:s,headers:a,...E})}catch(S){if(!KF(S))throw await sg(S,{attemptedAs:r,registry:p,configuration:s,headers:a}),S;h=await tV(S,{configuration:s});let x={...a,...ww(h)};try{return await nn.put(`${p}${e}`,t,{configuration:s,headers:x,...E})}catch(I){throw await sg(I,{attemptedAs:r,registry:p,configuration:s,headers:a}),I}}}async function D0t(e,{attemptedAs:t,configuration:r,headers:s,ident:a,authType:n=3,allowOidc:c,registry:f,otp:p,...h}){f=VD(r,{ident:a,registry:f});let E=await YF(f,{authType:n,allowOidc:c,configuration:r,ident:a});E&&(s={...s,authorization:E}),p&&(s={...s,...ww(p)});try{return await nn.del(f+e,{configuration:r,headers:s,...h})}catch(C){if(!KF(C)||p)throw await sg(C,{attemptedAs:t,registry:f,configuration:r,headers:s}),C;p=await tV(C,{configuration:r});let S={...s,...ww(p)};try{return await nn.del(`${f}${e}`,{configuration:r,headers:S,...h})}catch(x){throw await sg(x,{attemptedAs:t,registry:f,configuration:r,headers:s}),x}}}function VD(e,{ident:t,registry:r}){if(typeof r>\"u\"&&t)return Iw(t.scope,{configuration:e});if(typeof r!=\"string\")throw new Error(\"Assertion failed: The registry should be a string\");return Vc(r)}async function YF(e,{authType:t=2,allowOidc:r=!1,configuration:s,ident:a}){let n=$W(e,{configuration:s,ident:a}),c=b0t(n,t);if(!c)return null;let f=await s.reduceHook(p=>p.getNpmAuthenticationHeader,void 0,e,{configuration:s,ident:a});if(f)return f;if(n.get(\"npmAuthToken\"))return`Bearer ${n.get(\"npmAuthToken\")}`;if(n.get(\"npmAuthIdent\")){let p=n.get(\"npmAuthIdent\");return p.includes(\":\")?`Basic ${Buffer.from(p).toString(\"base64\")}`:`Basic ${p}`}if(r&&a){let p=await x0t(e,{configuration:s,ident:a});if(p)return`Bearer ${p}`}if(c&&t!==1)throw new _t(33,\"No authentication configured for request\");return null}function b0t(e,t){switch(t){case 2:return e.get(\"npmAlwaysAuth\");case 1:case 3:return!0;case 0:return!1;default:throw new Error(\"Unreachable\")}}async function P0t(e,t,{configuration:r}){if(typeof t>\"u\"||typeof t.authorization>\"u\")return\"an anonymous user\";try{return(await nn.get(new URL(`${e}/-/whoami`).href,{configuration:r,headers:t,jsonResponse:!0})).username??\"an unknown user\"}catch{return\"an unknown user\"}}async function tV(e,{configuration:t}){let r=e.originalError?.response.headers[\"npm-notice\"];if(r&&(await Ot.start({configuration:t,stdout:process.stdout,includeFooter:!1},async a=>{if(a.reportInfo(0,r.replace(/(https?:\\/\\/\\S+)/g,pe.pretty(t,\"$1\",pe.Type.URL))),!process.env.YARN_IS_TEST_ENV){let n=r.match(/open (https?:\\/\\/\\S+)/i);if(n&&Ui.openUrl){let{openNow:c}=await(0,eV.prompt)({type:\"confirm\",name:\"openNow\",message:\"Do you want to try to open this url now?\",required:!0,initial:!0,onCancel:()=>process.exit(130)});c&&(await Ui.openUrl(n[1])||(a.reportSeparator(),a.reportWarning(0,\"We failed to automatically open the url; you'll have to open it yourself in your browser of choice.\")))}}}),process.stdout.write(`\n`)),process.env.YARN_IS_TEST_ENV)return process.env.YARN_INJECT_NPM_2FA_TOKEN||\"\";let{otp:s}=await(0,eV.prompt)({type:\"password\",name:\"otp\",message:\"One-time password:\",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(`\n`),s}function KF(e){if(e.originalError?.name!==\"HTTPError\")return!1;try{return(e.originalError?.response.headers[\"www-authenticate\"].split(/,\\s*/).map(r=>r.toLowerCase())).includes(\"otp\")}catch{return!1}}function ww(e){return{\"npm-otp\":e}}async function x0t(e,{configuration:t,ident:r}){let s=null;if(process.env.GITLAB_CI)s=process.env.NPM_ID_TOKEN||null;else if(process.env.GITHUB_ACTIONS){if(!(process.env.ACTIONS_ID_TOKEN_REQUEST_URL&&process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN))return null;let a=`npm:${new URL(e).host.replace(\"registry.yarnpkg.com\",\"registry.npmjs.org\").replace(\"yarn.npmjs.org\",\"registry.npmjs.org\")}`,n=new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);n.searchParams.append(\"audience\",a),s=(await nn.get(n.href,{configuration:t,jsonResponse:!0,headers:{Authorization:`Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`}})).value}if(!s)return null;try{return(await nn.post(`${e}/-/npm/v1/oidc/token/exchange/package${WD(r)}`,null,{configuration:t,jsonResponse:!0,headers:{Authorization:`Bearer ${s}`}})).token||null}catch{}return null}var YD=class{supports(t,r){if(!t.reference.startsWith(ei))return!1;let{selector:s,params:a}=j.parseRange(t.reference);return!(!U1e.default.valid(s)||a===null||typeof a.__archiveUrl!=\"string\")}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),checksum:c}}async fetchFromNetwork(t,r){let{params:s}=j.parseRange(t.reference);if(s===null||typeof s.__archiveUrl!=\"string\")throw new Error(\"Assertion failed: The archiveUrl querystring parameter should have been available\");let a=await Km(s.__archiveUrl,{customErrorMessage:Ym,configuration:r.project.configuration,ident:t});return await ds.convertToZip(a,{configuration:r.project.configuration,prefixPath:j.getIdentVendorPath(t),stripComponents:1})}};qe();var KD=class{supportsDescriptor(t,r){return!(!t.range.startsWith(ei)||!j.tryParseDescriptor(t.range.slice(ei.length),!0))}supportsLocator(t,r){return!1}shouldPersistResolution(t,r){throw new Error(\"Unreachable\")}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){let s=r.project.configuration.normalizeDependency(j.parseDescriptor(t.range.slice(ei.length),!0));return r.resolver.getResolutionDependencies(s,r)}async getCandidates(t,r,s){let a=s.project.configuration.normalizeDependency(j.parseDescriptor(t.range.slice(ei.length),!0));return await s.resolver.getCandidates(a,r,s)}async getSatisfying(t,r,s,a){let n=a.project.configuration.normalizeDependency(j.parseDescriptor(t.range.slice(ei.length),!0));return a.resolver.getSatisfying(n,r,s,a)}resolve(t,r){throw new Error(\"Unreachable\")}};qe();qe();var _1e=et(pi());var ih=class e{supports(t,r){if(!t.reference.startsWith(ei))return!1;let s=new URL(t.reference);return!(!_1e.default.valid(s.pathname)||s.searchParams.has(\"__archiveUrl\"))}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),checksum:c}}async fetchFromNetwork(t,r){let s;try{s=await Km(e.getLocatorUrl(t),{customErrorMessage:Ym,configuration:r.project.configuration,ident:t})}catch{s=await Km(e.getLocatorUrl(t).replace(/%2f/g,\"/\"),{customErrorMessage:Ym,configuration:r.project.configuration,ident:t})}return await ds.convertToZip(s,{configuration:r.project.configuration,prefixPath:j.getIdentVendorPath(t),stripComponents:1})}static isConventionalTarballUrl(t,r,{configuration:s}){let a=Iw(t.scope,{configuration:s}),n=e.getLocatorUrl(t);return r=r.replace(/^https?:(\\/\\/(?:[^/]+\\.)?npmjs.org(?:$|\\/))/,\"https:$1\"),a=a.replace(/^https:\\/\\/registry\\.npmjs\\.org($|\\/)/,\"https://registry.yarnpkg.com$1\"),r=r.replace(/^https:\\/\\/registry\\.npmjs\\.org($|\\/)/,\"https://registry.yarnpkg.com$1\"),r===a+n||r===a+n.replace(/%2f/g,\"/\")}static getLocatorUrl(t){let r=Fr.clean(t.reference.slice(ei.length));if(r===null)throw new _t(10,\"The npm semver resolver got selected, but the version isn't semver\");return`${WD(t)}/-/${t.name}-${r}.tgz`}};qe();qe();qe();var rV=et(pi());var JF=j.makeIdent(null,\"node-gyp\"),k0t=/\\b(node-gyp|prebuild-install)\\b/,JD=class{supportsDescriptor(t,r){return t.range.startsWith(ei)?!!Fr.validRange(t.range.slice(ei.length)):!1}supportsLocator(t,r){if(!t.reference.startsWith(ei))return!1;let{selector:s}=j.parseRange(t.reference);return!!rV.default.valid(s)}shouldPersistResolution(t,r){return!0}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=Fr.validRange(t.range.slice(ei.length));if(a===null)throw new Error(`Expected a valid range, got ${t.range.slice(ei.length)}`);let n=await Bw(t,{cache:s.fetchOptions?.cache,project:s.project,version:rV.default.valid(a.raw)?a.raw:void 0}),c=Ge.mapAndFilter(Object.keys(n.versions),E=>{try{let C=new Fr.SemVer(E);if(a.test(C))return C}catch{}return Ge.mapAndFilter.skip}),f=c.filter(E=>Cw({configuration:s.project.configuration,ident:t,version:E.raw,publishTimes:n.time}));if(c.length>0&&f.length===0)throw new _t(16,`All versions satisfying \"${t.range.slice(ei.length)}\" are quarantined`);let p=f.filter(E=>!n.versions[E.raw].deprecated),h=p.length>0?p:f;return h.sort((E,C)=>-E.compare(C)),h.map(E=>{let C=j.makeLocator(t,`${ei}${E.raw}`),S=n.versions[E.raw].dist.tarball;return ih.isConventionalTarballUrl(C,S,{configuration:s.project.configuration})?C:j.bindLocator(C,{__archiveUrl:S})})}async getSatisfying(t,r,s,a){let n=Fr.validRange(t.range.slice(ei.length));if(n===null)throw new Error(`Expected a valid range, got ${t.range.slice(ei.length)}`);return{locators:Ge.mapAndFilter(s,p=>{if(p.identHash!==t.identHash)return Ge.mapAndFilter.skip;let h=j.tryParseRange(p.reference,{requireProtocol:ei});if(!h)return Ge.mapAndFilter.skip;let E=new Fr.SemVer(h.selector);return n.test(E)?{locator:p,version:E}:Ge.mapAndFilter.skip}).sort((p,h)=>-p.version.compare(h.version)).map(({locator:p})=>p),sorted:!0}}async resolve(t,r){let{selector:s}=j.parseRange(t.reference),a=Fr.clean(s);if(a===null)throw new _t(10,\"The npm semver resolver got selected, but the version isn't semver\");let n=await Bw(t,{cache:r.fetchOptions?.cache,project:r.project,version:a});if(!Object.hasOwn(n,\"versions\"))throw new _t(15,'Registry returned invalid data for - missing \"versions\" field');if(!Object.hasOwn(n.versions,a))throw new _t(16,`Registry failed to return reference \"${a}\"`);let c=new Ut;if(c.load(n.versions[a]),!c.dependencies.has(JF.identHash)&&!c.peerDependencies.has(JF.identHash)){for(let f of c.scripts.values())if(f.match(k0t)){c.dependencies.set(JF.identHash,j.makeDescriptor(JF,\"latest\"));break}}return{...t,version:a,languageName:\"node\",linkType:\"HARD\",conditions:c.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(c.dependencies),peerDependencies:c.peerDependencies,dependenciesMeta:c.dependenciesMeta,peerDependenciesMeta:c.peerDependenciesMeta,bin:c.bin}}};qe();qe();var zF=et(pi());var zD=class{supportsDescriptor(t,r){return!(!t.range.startsWith(ei)||!Up.test(t.range.slice(ei.length)))}supportsLocator(t,r){return!1}shouldPersistResolution(t,r){throw new Error(\"Unreachable\")}bindDescriptor(t,r,s){return t}getResolutionDependencies(t,r){return{}}async getCandidates(t,r,s){let a=t.range.slice(ei.length),n=await Bw(t,{cache:s.fetchOptions?.cache,project:s.project});if(!Object.hasOwn(n,\"dist-tags\"))throw new _t(15,'Registry returned invalid data - missing \"dist-tags\" field');let c=n[\"dist-tags\"];if(!Object.hasOwn(c,a))throw new _t(16,`Registry failed to return tag \"${a}\"`);let f=Object.keys(n.versions),p=n.time,h=c[a];if(a===\"latest\"&&!Cw({configuration:s.project.configuration,ident:t,version:h,publishTimes:p})){let S=h.includes(\"-\"),x=zF.default.rsort(f).find(I=>zF.default.lt(I,h)&&(S||!I.includes(\"-\"))&&Cw({configuration:s.project.configuration,ident:t,version:I,publishTimes:p}));if(!x)throw new _t(16,`The version for tag \"${a}\" is quarantined, and no lower version is available`);h=x}let E=j.makeLocator(t,`${ei}${h}`),C=n.versions[h].dist.tarball;return ih.isConventionalTarballUrl(E,C,{configuration:s.project.configuration})?[E]:[j.bindLocator(E,{__archiveUrl:C})]}async getSatisfying(t,r,s,a){let n=[];for(let c of s){if(c.identHash!==t.identHash)continue;let f=j.tryParseRange(c.reference,{requireProtocol:ei});if(!(!f||!zF.default.valid(f.selector))){if(f.params?.__archiveUrl){let p=j.makeRange({protocol:ei,selector:f.selector,source:null,params:null}),[h]=await a.resolver.getCandidates(j.makeDescriptor(t,p),r,a);if(c.reference!==h.reference)continue}n.push(c)}}return{locators:n,sorted:!1}}async resolve(t,r){throw new Error(\"Unreachable\")}};var d1={};Yt(d1,{getGitHead:()=>Cvt,getPublishAccess:()=>kbe,getReadmeContent:()=>Qbe,makePublishBody:()=>Ivt});qe();qe();Dt();var qV={};Yt(qV,{PackCommand:()=>Fw,default:()=>cmt,packUtils:()=>EA});qe();qe();qe();Dt();Vt();var EA={};Yt(EA,{genPackList:()=>EN,genPackStream:()=>GV,genPackageManifest:()=>m2e,hasPackScripts:()=>HV,prepareForPack:()=>jV});qe();Dt();var _V=et(Jo()),g2e=et(f2e()),d2e=Ie(\"zlib\"),Xdt=[\"/package.json\",\"/readme\",\"/readme.*\",\"/license\",\"/license.*\",\"/licence\",\"/licence.*\",\"/changelog\",\"/changelog.*\"],$dt=[\"/package.tgz\",\".github\",\".git\",\".hg\",\"node_modules\",\".npmignore\",\".gitignore\",\".#*\",\".DS_Store\"];async function HV(e){return!!(Cn.hasWorkspaceScript(e,\"prepack\")||Cn.hasWorkspaceScript(e,\"postpack\"))}async function jV(e,{report:t},r){await Cn.maybeExecuteWorkspaceLifecycleScript(e,\"prepack\",{report:t});try{let s=K.join(e.cwd,Ut.fileName);await le.existsPromise(s)&&await e.manifest.loadFile(s,{baseFs:le}),await r()}finally{await Cn.maybeExecuteWorkspaceLifecycleScript(e,\"postpack\",{report:t})}}async function GV(e,t){typeof t>\"u\"&&(t=await EN(e));let r=new Set;for(let n of e.manifest.publishConfig?.executableFiles??new Set)r.add(K.normalize(n));for(let n of e.manifest.bin.values())r.add(K.normalize(n));let s=g2e.default.pack();process.nextTick(async()=>{for(let n of t){let c=K.normalize(n),f=K.resolve(e.cwd,c),p=K.join(\"package\",c),h=await le.lstatPromise(f),E={name:p,mtime:new Date(Ai.SAFE_TIME*1e3)},C=r.has(c)?493:420,S,x,I=new Promise((O,U)=>{S=O,x=U}),T=O=>{O?x(O):S()};if(h.isFile()){let O;c===\"package.json\"?O=Buffer.from(JSON.stringify(await m2e(e),null,2)):O=await le.readFilePromise(f),s.entry({...E,mode:C,type:\"file\"},O,T)}else h.isSymbolicLink()?s.entry({...E,mode:C,type:\"symlink\",linkname:await le.readlinkPromise(f)},T):T(new Error(`Unsupported file type ${h.mode} for ${fe.fromPortablePath(c)}`));await I}s.finalize()});let a=(0,d2e.createGzip)();return s.pipe(a),a}async function m2e(e){let t=JSON.parse(JSON.stringify(e.manifest.raw));return await e.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,e,t),t}async function EN(e){let t=e.project,r=t.configuration,s={accept:[],reject:[]};for(let C of $dt)s.reject.push(C);for(let C of Xdt)s.accept.push(C);s.reject.push(r.get(\"rcFilename\"));let a=C=>{if(C===null||!C.startsWith(`${e.cwd}/`))return;let S=K.relative(e.cwd,C),x=K.resolve(vt.root,S);s.reject.push(x)};a(K.resolve(t.cwd,Er.lockfile)),a(r.get(\"cacheFolder\")),a(r.get(\"globalFolder\")),a(r.get(\"installStatePath\")),a(r.get(\"virtualFolder\")),a(r.get(\"yarnPath\")),await r.triggerHook(C=>C.populateYarnPaths,t,C=>{a(C)});for(let C of t.workspaces){let S=K.relative(e.cwd,C.cwd);S!==\"\"&&!S.match(/^(\\.\\.)?\\//)&&s.reject.push(`/${S}`)}let n={accept:[],reject:[]},c=e.manifest.publishConfig?.main??e.manifest.main,f=e.manifest.publishConfig?.module??e.manifest.module,p=e.manifest.publishConfig?.browser??e.manifest.browser,h=e.manifest.publishConfig?.bin??e.manifest.bin;c!=null&&n.accept.push(K.resolve(vt.root,c)),f!=null&&n.accept.push(K.resolve(vt.root,f)),typeof p==\"string\"&&n.accept.push(K.resolve(vt.root,p));for(let C of h.values())n.accept.push(K.resolve(vt.root,C));if(p instanceof Map)for(let[C,S]of p.entries())n.accept.push(K.resolve(vt.root,C)),typeof S==\"string\"&&n.accept.push(K.resolve(vt.root,S));let E=e.manifest.files!==null;if(E){n.reject.push(\"/*\");for(let C of e.manifest.files)y2e(n.accept,C,{cwd:vt.root})}return await emt(e.cwd,{hasExplicitFileList:E,globalList:s,ignoreList:n})}async function emt(e,{hasExplicitFileList:t,globalList:r,ignoreList:s}){let a=[],n=new Gf(e),c=[[vt.root,[s]]];for(;c.length>0;){let[f,p]=c.pop(),h=await n.lstatPromise(f);if(!p2e(f,{globalList:r,ignoreLists:h.isDirectory()?null:p}))if(h.isDirectory()){let E=await n.readdirPromise(f),C=!1,S=!1;if(!t||f!==vt.root)for(let T of E)C=C||T===\".gitignore\",S=S||T===\".npmignore\";let x=S?await A2e(n,f,\".npmignore\"):C?await A2e(n,f,\".gitignore\"):null,I=x!==null?[x].concat(p):p;p2e(f,{globalList:r,ignoreLists:p})&&(I=[...p,{accept:[],reject:[\"**/*\"]}]);for(let T of E)c.push([K.resolve(f,T),I])}else(h.isFile()||h.isSymbolicLink())&&a.push(K.relative(vt.root,f))}return a.sort()}async function A2e(e,t,r){let s={accept:[],reject:[]},a=await e.readFilePromise(K.join(t,r),\"utf8\");for(let n of a.split(/\\n/g))y2e(s.reject,n,{cwd:t});return s}function tmt(e,{cwd:t}){let r=e[0]===\"!\";return r&&(e=e.slice(1)),e.match(/\\.{0,1}\\//)&&(e=K.resolve(t,e)),r&&(e=`!${e}`),e}function y2e(e,t,{cwd:r}){let s=t.trim();s===\"\"||s[0]===\"#\"||e.push(tmt(s,{cwd:r}))}function p2e(e,{globalList:t,ignoreLists:r}){let s=yN(e,t.accept);if(s!==0)return s===2;let a=yN(e,t.reject);if(a!==0)return a===1;if(r!==null)for(let n of r){let c=yN(e,n.accept);if(c!==0)return c===2;let f=yN(e,n.reject);if(f!==0)return f===1}return!1}function yN(e,t){let r=t,s=[];for(let a=0;a<t.length;++a)t[a][0]!==\"!\"?r!==t&&r.push(t[a]):(r===t&&(r=t.slice(0,a)),s.push(t[a].slice(1)));return h2e(e,s)?2:h2e(e,r)?1:0}function h2e(e,t){let r=t,s=[];for(let a=0;a<t.length;++a)t[a].includes(\"/\")?r!==t&&r.push(t[a]):(r===t&&(r=t.slice(0,a)),s.push(t[a]));return!!(_V.default.isMatch(e,r,{dot:!0,nocase:!0})||_V.default.isMatch(e,s,{dot:!0,basename:!0,nocase:!0}))}var Fw=class extends At{constructor(){super(...arguments);this.installIfNeeded=he.Boolean(\"--install-if-needed\",!1,{description:\"Run a preliminary `yarn install` if the package contains build scripts\"});this.dryRun=he.Boolean(\"-n,--dry-run\",!1,{description:\"Print the file paths without actually generating the package archive\"});this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.out=he.String(\"-o,--out\",{description:\"Create the archive at the specified path\"});this.filename=he.String(\"--filename\",{hidden:!0})}static{this.paths=[[\"pack\"]]}static{this.usage=at.Usage({description:\"generate a tarball from the active workspace\",details:\"\\n      This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\\n\\n      If the `-o,--out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\\n    \",examples:[[\"Create an archive from the active workspace\",\"yarn pack\"],[\"List the files that would be made part of the workspace's archive\",\"yarn pack --dry-run\"],[\"Name and output the archive in a dedicated folder\",\"yarn pack --out /artifacts/%s-%v.tgz\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await HV(a)&&(this.installIfNeeded?await s.install({cache:await Jr.find(r),report:new ki}):await s.restoreInstallState());let n=this.out??this.filename,c=typeof n<\"u\"?K.resolve(this.context.cwd,rmt(n,{workspace:a})):K.resolve(a.cwd,\"package.tgz\");return(await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async p=>{await jV(a,{report:p},async()=>{p.reportJson({base:fe.fromPortablePath(a.cwd)});let h=await EN(a);for(let E of h)p.reportInfo(null,fe.fromPortablePath(E)),p.reportJson({location:fe.fromPortablePath(E)});if(!this.dryRun){let E=await GV(a,h);await le.mkdirPromise(K.dirname(c),{recursive:!0});let C=le.createWriteStream(c);E.pipe(C),await new Promise(S=>{C.on(\"finish\",S)})}}),this.dryRun||(p.reportInfo(0,`Package archive generated in ${pe.pretty(r,c,pe.Type.PATH)}`),p.reportJson({output:fe.fromPortablePath(c)}))})).exitCode()}};function rmt(e,{workspace:t}){let r=e.replace(\"%s\",nmt(t)).replace(\"%v\",imt(t));return fe.toPortablePath(r)}function nmt(e){return e.manifest.name!==null?j.slugifyIdent(e.manifest.name):\"package\"}function imt(e){return e.manifest.version!==null?e.manifest.version:\"unknown\"}var smt=[\"dependencies\",\"devDependencies\",\"peerDependencies\"],omt=\"workspace:\",amt=(e,t)=>{t.publishConfig&&(t.publishConfig.type&&(t.type=t.publishConfig.type),t.publishConfig.main&&(t.main=t.publishConfig.main),t.publishConfig.browser&&(t.browser=t.publishConfig.browser),t.publishConfig.module&&(t.module=t.publishConfig.module),t.publishConfig.exports&&(t.exports=t.publishConfig.exports),t.publishConfig.imports&&(t.imports=t.publishConfig.imports),t.publishConfig.bin&&(t.bin=t.publishConfig.bin));let r=e.project;for(let s of smt)for(let a of e.manifest.getForScope(s).values()){let n=r.tryWorkspaceByDescriptor(a),c=j.parseRange(a.range);if(c.protocol===omt)if(n===null){if(r.tryWorkspaceByIdent(a)===null)throw new _t(21,`${j.prettyDescriptor(r.configuration,a)}: No local workspace found for this range`)}else{let f;j.areDescriptorsEqual(a,n.anchoredDescriptor)||c.selector===\"*\"?f=n.manifest.version??\"0.0.0\":c.selector===\"~\"||c.selector===\"^\"?f=`${c.selector}${n.manifest.version??\"0.0.0\"}`:f=c.selector;let p=s===\"dependencies\"?j.makeDescriptor(a,\"unknown\"):null,h=p!==null&&e.manifest.ensureDependencyMeta(p).optional?\"optionalDependencies\":s;t[h][j.stringifyIdent(a)]=f}}},lmt={hooks:{beforeWorkspacePacking:amt},commands:[Fw]},cmt=lmt;var xbe=et(b2e());qe();var bbe=et(Dbe()),{env:Bt}=process,fvt=\"application/vnd.in-toto+json\",Avt=\"https://in-toto.io/Statement/v0.1\",pvt=\"https://in-toto.io/Statement/v1\",hvt=\"https://slsa.dev/provenance/v0.2\",gvt=\"https://slsa.dev/provenance/v1\",dvt=\"https://github.com/actions/runner\",mvt=\"https://slsa-framework.github.io/github-actions-buildtypes/workflow/v1\",yvt=\"https://github.com/npm/cli/gitlab\",Evt=\"v0alpha1\",Pbe=async(e,t)=>{let r;if(Bt.GITHUB_ACTIONS){if(!Bt.ACTIONS_ID_TOKEN_REQUEST_URL)throw new _t(91,'Provenance generation in GitHub Actions requires \"write\" access to the \"id-token\" permission');let s=(Bt.GITHUB_WORKFLOW_REF||\"\").replace(`${Bt.GITHUB_REPOSITORY}/`,\"\"),a=s.indexOf(\"@\"),n=s.slice(0,a),c=s.slice(a+1);r={_type:pvt,subject:e,predicateType:gvt,predicate:{buildDefinition:{buildType:mvt,externalParameters:{workflow:{ref:c,repository:`${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}`,path:n}},internalParameters:{github:{event_name:Bt.GITHUB_EVENT_NAME,repository_id:Bt.GITHUB_REPOSITORY_ID,repository_owner_id:Bt.GITHUB_REPOSITORY_OWNER_ID}},resolvedDependencies:[{uri:`git+${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}@${Bt.GITHUB_REF}`,digest:{gitCommit:Bt.GITHUB_SHA}}]},runDetails:{builder:{id:`${dvt}/${Bt.RUNNER_ENVIRONMENT}`},metadata:{invocationId:`${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}/actions/runs/${Bt.GITHUB_RUN_ID}/attempts/${Bt.GITHUB_RUN_ATTEMPT}`}}}}}else if(Bt.GITLAB_CI){if(!Bt.SIGSTORE_ID_TOKEN)throw new _t(91,`Provenance generation in GitLab CI requires \"SIGSTORE_ID_TOKEN\" with \"sigstore\" audience to be present in \"id_tokens\". For more info see:\nhttps://docs.gitlab.com/ee/ci/secrets/id_token_authentication.html`);r={_type:Avt,subject:e,predicateType:hvt,predicate:{buildType:`${yvt}/${Evt}`,builder:{id:`${Bt.CI_PROJECT_URL}/-/runners/${Bt.CI_RUNNER_ID}`},invocation:{configSource:{uri:`git+${Bt.CI_PROJECT_URL}`,digest:{sha1:Bt.CI_COMMIT_SHA},entryPoint:Bt.CI_JOB_NAME},parameters:{CI:Bt.CI,CI_API_GRAPHQL_URL:Bt.CI_API_GRAPHQL_URL,CI_API_V4_URL:Bt.CI_API_V4_URL,CI_BUILD_BEFORE_SHA:Bt.CI_BUILD_BEFORE_SHA,CI_BUILD_ID:Bt.CI_BUILD_ID,CI_BUILD_NAME:Bt.CI_BUILD_NAME,CI_BUILD_REF:Bt.CI_BUILD_REF,CI_BUILD_REF_NAME:Bt.CI_BUILD_REF_NAME,CI_BUILD_REF_SLUG:Bt.CI_BUILD_REF_SLUG,CI_BUILD_STAGE:Bt.CI_BUILD_STAGE,CI_COMMIT_BEFORE_SHA:Bt.CI_COMMIT_BEFORE_SHA,CI_COMMIT_BRANCH:Bt.CI_COMMIT_BRANCH,CI_COMMIT_REF_NAME:Bt.CI_COMMIT_REF_NAME,CI_COMMIT_REF_PROTECTED:Bt.CI_COMMIT_REF_PROTECTED,CI_COMMIT_REF_SLUG:Bt.CI_COMMIT_REF_SLUG,CI_COMMIT_SHA:Bt.CI_COMMIT_SHA,CI_COMMIT_SHORT_SHA:Bt.CI_COMMIT_SHORT_SHA,CI_COMMIT_TIMESTAMP:Bt.CI_COMMIT_TIMESTAMP,CI_COMMIT_TITLE:Bt.CI_COMMIT_TITLE,CI_CONFIG_PATH:Bt.CI_CONFIG_PATH,CI_DEFAULT_BRANCH:Bt.CI_DEFAULT_BRANCH,CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX:Bt.CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX:Bt.CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_SERVER:Bt.CI_DEPENDENCY_PROXY_SERVER,CI_DEPENDENCY_PROXY_USER:Bt.CI_DEPENDENCY_PROXY_USER,CI_JOB_ID:Bt.CI_JOB_ID,CI_JOB_NAME:Bt.CI_JOB_NAME,CI_JOB_NAME_SLUG:Bt.CI_JOB_NAME_SLUG,CI_JOB_STAGE:Bt.CI_JOB_STAGE,CI_JOB_STARTED_AT:Bt.CI_JOB_STARTED_AT,CI_JOB_URL:Bt.CI_JOB_URL,CI_NODE_TOTAL:Bt.CI_NODE_TOTAL,CI_PAGES_DOMAIN:Bt.CI_PAGES_DOMAIN,CI_PAGES_URL:Bt.CI_PAGES_URL,CI_PIPELINE_CREATED_AT:Bt.CI_PIPELINE_CREATED_AT,CI_PIPELINE_ID:Bt.CI_PIPELINE_ID,CI_PIPELINE_IID:Bt.CI_PIPELINE_IID,CI_PIPELINE_SOURCE:Bt.CI_PIPELINE_SOURCE,CI_PIPELINE_URL:Bt.CI_PIPELINE_URL,CI_PROJECT_CLASSIFICATION_LABEL:Bt.CI_PROJECT_CLASSIFICATION_LABEL,CI_PROJECT_DESCRIPTION:Bt.CI_PROJECT_DESCRIPTION,CI_PROJECT_ID:Bt.CI_PROJECT_ID,CI_PROJECT_NAME:Bt.CI_PROJECT_NAME,CI_PROJECT_NAMESPACE:Bt.CI_PROJECT_NAMESPACE,CI_PROJECT_NAMESPACE_ID:Bt.CI_PROJECT_NAMESPACE_ID,CI_PROJECT_PATH:Bt.CI_PROJECT_PATH,CI_PROJECT_PATH_SLUG:Bt.CI_PROJECT_PATH_SLUG,CI_PROJECT_REPOSITORY_LANGUAGES:Bt.CI_PROJECT_REPOSITORY_LANGUAGES,CI_PROJECT_ROOT_NAMESPACE:Bt.CI_PROJECT_ROOT_NAMESPACE,CI_PROJECT_TITLE:Bt.CI_PROJECT_TITLE,CI_PROJECT_URL:Bt.CI_PROJECT_URL,CI_PROJECT_VISIBILITY:Bt.CI_PROJECT_VISIBILITY,CI_REGISTRY:Bt.CI_REGISTRY,CI_REGISTRY_IMAGE:Bt.CI_REGISTRY_IMAGE,CI_REGISTRY_USER:Bt.CI_REGISTRY_USER,CI_RUNNER_DESCRIPTION:Bt.CI_RUNNER_DESCRIPTION,CI_RUNNER_ID:Bt.CI_RUNNER_ID,CI_RUNNER_TAGS:Bt.CI_RUNNER_TAGS,CI_SERVER_HOST:Bt.CI_SERVER_HOST,CI_SERVER_NAME:Bt.CI_SERVER_NAME,CI_SERVER_PORT:Bt.CI_SERVER_PORT,CI_SERVER_PROTOCOL:Bt.CI_SERVER_PROTOCOL,CI_SERVER_REVISION:Bt.CI_SERVER_REVISION,CI_SERVER_SHELL_SSH_HOST:Bt.CI_SERVER_SHELL_SSH_HOST,CI_SERVER_SHELL_SSH_PORT:Bt.CI_SERVER_SHELL_SSH_PORT,CI_SERVER_URL:Bt.CI_SERVER_URL,CI_SERVER_VERSION:Bt.CI_SERVER_VERSION,CI_SERVER_VERSION_MAJOR:Bt.CI_SERVER_VERSION_MAJOR,CI_SERVER_VERSION_MINOR:Bt.CI_SERVER_VERSION_MINOR,CI_SERVER_VERSION_PATCH:Bt.CI_SERVER_VERSION_PATCH,CI_TEMPLATE_REGISTRY_HOST:Bt.CI_TEMPLATE_REGISTRY_HOST,GITLAB_CI:Bt.GITLAB_CI,GITLAB_FEATURES:Bt.GITLAB_FEATURES,GITLAB_USER_ID:Bt.GITLAB_USER_ID,GITLAB_USER_LOGIN:Bt.GITLAB_USER_LOGIN,RUNNER_GENERATE_ARTIFACTS_METADATA:Bt.RUNNER_GENERATE_ARTIFACTS_METADATA},environment:{name:Bt.CI_RUNNER_DESCRIPTION,architecture:Bt.CI_RUNNER_EXECUTABLE_ARCH,server:Bt.CI_SERVER_URL,project:Bt.CI_PROJECT_PATH,job:{id:Bt.CI_JOB_ID},pipeline:{id:Bt.CI_PIPELINE_ID,ref:Bt.CI_CONFIG_PATH}}},metadata:{buildInvocationId:`${Bt.CI_JOB_URL}`,completeness:{parameters:!0,environment:!0,materials:!1},reproducible:!1},materials:[{uri:`git+${Bt.CI_PROJECT_URL}`,digest:{sha1:Bt.CI_COMMIT_SHA}}]}}}else throw new _t(91,\"Provenance generation is only supported in GitHub Actions and GitLab CI\");return bbe.attest(Buffer.from(JSON.stringify(r)),fvt,t)};async function Ivt(e,t,{access:r,tag:s,registry:a,gitHead:n,provenance:c}){let f=e.manifest.name,p=e.manifest.version,h=j.stringifyIdent(f),E=xbe.default.fromData(t,{algorithms:[\"sha1\",\"sha512\"]}),C=r??kbe(e,f),S=await Qbe(e),x=await EA.genPackageManifest(e),I=`${h}-${p}.tgz`,T=new URL(`${Vc(a)}/${h}/-/${I}`),O={[I]:{content_type:\"application/octet-stream\",data:t.toString(\"base64\"),length:t.length}};if(c){let U={name:`pkg:npm/${h.replace(/^@/,\"%40\")}@${p}`,digest:{sha512:E.sha512[0].hexDigest()}},Y=await Pbe([U]),te=JSON.stringify(Y);O[`${h}-${p}.sigstore`]={content_type:Y.mediaType,data:te,length:te.length}}return{_id:h,_attachments:O,name:h,access:C,\"dist-tags\":{[s]:p},versions:{[p]:{...x,_id:`${h}@${p}`,name:h,version:p,gitHead:n,dist:{shasum:E.sha1[0].hexDigest(),integrity:E.sha512[0].toString(),tarball:T.toString()}}},readme:S}}async function Cvt(e){try{let{stdout:t}=await qr.execvp(\"git\",[\"rev-parse\",\"--revs-only\",\"HEAD\"],{cwd:e});return t.trim()===\"\"?void 0:t.trim()}catch{return}}function kbe(e,t){let r=e.project.configuration;return e.manifest.publishConfig&&typeof e.manifest.publishConfig.access==\"string\"?e.manifest.publishConfig.access:r.get(\"npmPublishAccess\")!==null?r.get(\"npmPublishAccess\"):t.scope?\"restricted\":\"public\"}async function Qbe(e){let t=fe.toPortablePath(`${e.cwd}/README.md`),r=e.manifest.name,a=`# ${j.stringifyIdent(r)}\n`;try{a=await le.readFilePromise(t,\"utf8\")}catch(n){if(n.code===\"ENOENT\")return a;throw n}return a}var zK={npmAlwaysAuth:{description:\"URL of the selected npm registry (note: npm enterprise isn't supported)\",type:\"BOOLEAN\",default:!1},npmAuthIdent:{description:\"Authentication identity for the npm registry (_auth in npm and yarn v1)\",type:\"SECRET\",default:null},npmAuthToken:{description:\"Authentication token for the npm registry (_authToken in npm and yarn v1)\",type:\"SECRET\",default:null}},Rbe={npmAuditRegistry:{description:\"Registry to query for audit reports\",type:\"STRING\",default:null},npmPublishRegistry:{description:\"Registry to push packages to\",type:\"STRING\",default:null},npmRegistryServer:{description:\"URL of the selected npm registry (note: npm enterprise isn't supported)\",type:\"STRING\",default:\"https://registry.yarnpkg.com\"}},wvt={npmMinimalAgeGate:{description:\"Minimum age of a package version according to the publish date on the npm registry to be considered for installation\",type:\"DURATION\",unit:\"m\",default:\"0m\"},npmPreapprovedPackages:{description:\"Array of package descriptors or package name glob patterns to exclude from the minimum release age check\",type:\"STRING\",isArray:!0,default:[]}},Bvt={configuration:{...zK,...Rbe,...wvt,npmScopes:{description:\"Settings per package scope\",type:\"MAP\",valueDefinition:{description:\"\",type:\"SHAPE\",properties:{...zK,...Rbe}}},npmRegistries:{description:\"Settings per registry\",type:\"MAP\",normalizeKeys:Vc,valueDefinition:{description:\"\",type:\"SHAPE\",properties:{...zK}}}},fetchers:[YD,ih],resolvers:[KD,JD,zD]},vvt=Bvt;var aJ={};Yt(aJ,{NpmAuditCommand:()=>y1,NpmInfoCommand:()=>E1,NpmLoginCommand:()=>I1,NpmLogoutCommand:()=>w1,NpmPublishCommand:()=>B1,NpmTagAddCommand:()=>S1,NpmTagListCommand:()=>v1,NpmTagRemoveCommand:()=>D1,NpmWhoamiCommand:()=>b1,default:()=>Ovt,npmAuditTypes:()=>zb,npmAuditUtils:()=>hL});qe();qe();Vt();var rJ=et(Jo());ul();var zb={};Yt(zb,{Environment:()=>Kb,Severity:()=>Jb});var Kb=(s=>(s.All=\"all\",s.Production=\"production\",s.Development=\"development\",s))(Kb||{}),Jb=(n=>(n.Info=\"info\",n.Low=\"low\",n.Moderate=\"moderate\",n.High=\"high\",n.Critical=\"critical\",n))(Jb||{});var hL={};Yt(hL,{allSeverities:()=>m1,getPackages:()=>tJ,getReportTree:()=>$K,getSeverityInclusions:()=>XK,getTopLevelDependencies:()=>eJ});qe();var Tbe=et(pi());var m1=[\"info\",\"low\",\"moderate\",\"high\",\"critical\"];function XK(e){if(typeof e>\"u\")return new Set(m1);let t=m1.indexOf(e),r=m1.slice(t);return new Set(r)}function $K(e){let t={},r={children:t};for(let[s,a]of Ge.sortMap(Object.entries(e),n=>n[0]))for(let n of Ge.sortMap(a,c=>`${c.id}`))t[`${s}/${n.id}`]={value:pe.tuple(pe.Type.IDENT,j.parseIdent(s)),children:{ID:typeof n.id<\"u\"&&{label:\"ID\",value:pe.tuple(pe.Type.ID,n.id)},Issue:{label:\"Issue\",value:pe.tuple(pe.Type.NO_HINT,n.title)},URL:typeof n.url<\"u\"&&{label:\"URL\",value:pe.tuple(pe.Type.URL,n.url)},Severity:{label:\"Severity\",value:pe.tuple(pe.Type.NO_HINT,n.severity)},\"Vulnerable Versions\":{label:\"Vulnerable Versions\",value:pe.tuple(pe.Type.RANGE,n.vulnerable_versions)},\"Tree Versions\":{label:\"Tree Versions\",children:[...n.versions].sort(Tbe.default.compare).map(c=>({value:pe.tuple(pe.Type.REFERENCE,c)}))},Dependents:{label:\"Dependents\",children:Ge.sortMap(n.dependents,c=>j.stringifyLocator(c)).map(c=>({value:pe.tuple(pe.Type.LOCATOR,c)}))}}};return r}function eJ(e,t,{all:r,environment:s}){let a=[],n=r?e.workspaces:[t],c=[\"all\",\"production\"].includes(s),f=[\"all\",\"development\"].includes(s);for(let p of n)for(let h of p.anchoredPackage.dependencies.values())(p.manifest.devDependencies.has(h.identHash)?!f:!c)||a.push({workspace:p,dependency:h});return a}function tJ(e,t,{recursive:r}){let s=new Map,a=new Set,n=[],c=e.configuration.makeResolver(),f={project:e,resolver:c},p=(h,E)=>{let C=e.storedResolutions.get(E.descriptorHash);if(typeof C>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");if(!a.has(C))a.add(C);else return;let S=e.storedPackages.get(C);if(typeof S>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");let x=j.ensureDevirtualizedDescriptor(E);if(c.supportsDescriptor(x,f)){let T=c.getResolutionDependencies(x,f);if(Object.keys(T).length>0)for(let O of Object.values(T))p(h,O)}if(j.ensureDevirtualizedLocator(S).reference.startsWith(\"npm:\")&&S.version!==null){let T=j.stringifyIdent(S),O=Ge.getMapWithDefault(s,T);Ge.getArrayWithDefault(O,S.version).push(h)}if(r)for(let T of S.dependencies.values())n.push([S,T])};for(let{workspace:h,dependency:E}of t)n.push([h.anchoredLocator,E]);for(;n.length>0;){let[h,E]=n.shift();p(h,E)}return s}var y1=class extends At{constructor(){super(...arguments);this.all=he.Boolean(\"-A,--all\",!1,{description:\"Audit dependencies from all workspaces\"});this.recursive=he.Boolean(\"-R,--recursive\",!1,{description:\"Audit transitive dependencies as well\"});this.environment=he.String(\"--environment\",\"all\",{description:\"Which environments to cover\",validator:ks(Kb)});this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.noDeprecations=he.Boolean(\"--no-deprecations\",!1,{description:\"Don't warn about deprecated packages\"});this.severity=he.String(\"--severity\",\"info\",{description:\"Minimal severity requested for packages to be displayed\",validator:ks(Jb)});this.excludes=he.Array(\"--exclude\",[],{description:\"Array of glob patterns of packages to exclude from audit\"});this.ignores=he.Array(\"--ignore\",[],{description:\"Array of glob patterns of advisory ID's to ignore in the audit report\"})}static{this.paths=[[\"npm\",\"audit\"]]}static{this.usage=at.Usage({description:\"perform a vulnerability audit against the installed packages\",details:`\n      This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths).\n\n      For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \\`-A,--all\\`. To extend this search to both direct and transitive dependencies, use \\`-R,--recursive\\`.\n\n      Applying the \\`--severity\\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${m1.map(r=>`\\`${r}\\``).join(\", \")}.\n\n      If the \\`--json\\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages.\n\n      If certain packages produce false positives for a particular environment, the \\`--exclude\\` flag can be used to exclude any number of packages from the audit. This can also be set in the configuration file with the \\`npmAuditExcludePackages\\` option.\n\n      If particular advisories are needed to be ignored, the \\`--ignore\\` flag can be used with Advisory ID's to ignore any number of advisories in the audit report. This can also be set in the configuration file with the \\`npmAuditIgnoreAdvisories\\` option.\n\n      To understand the dependency tree requiring vulnerable packages, check the raw report with the \\`--json\\` flag or use \\`yarn why package\\` to get more information as to who depends on them.\n    `,examples:[[\"Checks for known security issues with the installed packages. The output is a list of known issues.\",\"yarn npm audit\"],[\"Audit dependencies in all workspaces\",\"yarn npm audit --all\"],[\"Limit auditing to `dependencies` (excludes `devDependencies`)\",\"yarn npm audit --environment production\"],[\"Show audit report as valid JSON\",\"yarn npm audit --json\"],[\"Audit all direct and transitive dependencies\",\"yarn npm audit --recursive\"],[\"Output moderate (or more severe) vulnerabilities\",\"yarn npm audit --severity moderate\"],[\"Exclude certain packages\",\"yarn npm audit --exclude package1 --exclude package2\"],[\"Ignore specific advisories\",\"yarn npm audit --ignore 1234567 --ignore 7654321\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=eJ(s,a,{all:this.all,environment:this.environment}),c=tJ(s,n,{recursive:this.recursive}),f=Array.from(new Set([...r.get(\"npmAuditExcludePackages\"),...this.excludes])),p=Object.create(null);for(let[O,U]of c)f.some(Y=>rJ.default.isMatch(O,Y))||(p[O]=[...U.keys()]);let h=gi.getAuditRegistry({configuration:r}),E,C=await cA.start({configuration:r,stdout:this.context.stdout},async()=>{let O=en.post(\"/-/npm/v1/security/advisories/bulk\",p,{authType:en.AuthType.BEST_EFFORT,configuration:r,jsonResponse:!0,registry:h}),U=this.noDeprecations?[]:await Promise.all(Array.from(Object.entries(p),async([te,ie])=>{let ue=await en.getPackageMetadata(j.parseIdent(te),{project:s});return Ge.mapAndFilter(ie,ae=>{let{deprecated:de}=ue.versions[ae];return de?[te,ae,de]:Ge.mapAndFilter.skip})})),Y=await O;for(let[te,ie,ue]of U.flat(1))Object.hasOwn(Y,te)&&Y[te].some(ae=>Fr.satisfiesWithPrereleases(ie,ae.vulnerable_versions))||(Y[te]??=[],Y[te].push({id:`${te} (deprecation)`,title:(typeof ue==\"string\"?ue:\"\").trim()||\"This package has been deprecated.\",severity:\"moderate\",vulnerable_versions:ie}));E=Y});if(C.hasErrors())return C.exitCode();let S=XK(this.severity),x=Array.from(new Set([...r.get(\"npmAuditIgnoreAdvisories\"),...this.ignores])),I=Object.create(null);for(let[O,U]of Object.entries(E)){let Y=U.filter(te=>!rJ.default.isMatch(`${te.id}`,x)&&S.has(te.severity));Y.length>0&&(I[O]=Y.map(te=>{let ie=c.get(O);if(typeof ie>\"u\")throw new Error(\"Assertion failed: Expected the registry to only return packages that were requested\");let ue=[...ie.keys()].filter(de=>Fr.satisfiesWithPrereleases(de,te.vulnerable_versions)),ae=new Map;for(let de of ue)for(let Ae of ie.get(de))ae.set(Ae.locatorHash,Ae);return{...te,versions:ue,dependents:[...ae.values()]}}))}let T=Object.keys(I).length>0;return T?(Rs.emitTree($K(I),{configuration:r,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async O=>{O.reportInfo(1,\"No audit suggestions\")}),T?1:0)}};qe();qe();Dt();Vt();var nJ=et(pi()),iJ=Ie(\"util\"),E1=class extends At{constructor(){super(...arguments);this.fields=he.String(\"-f,--fields\",{description:\"A comma-separated list of manifest fields that should be displayed\"});this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.packages=he.Rest()}static{this.paths=[[\"npm\",\"info\"]]}static{this.usage=at.Usage({category:\"Npm-related commands\",description:\"show information about a package\",details:\"\\n      This command fetches information about a package from the npm registry and prints it in a tree format.\\n\\n      The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\\n\\n      Append `@<range>` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\\n\\n      If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\\n\\n      By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\\n    \",examples:[[\"Show all available information about react (except the `dist`, `readme`, and `users` fields)\",\"yarn npm info react\"],[\"Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)\",\"yarn npm info react --json\"],[\"Show all available information about react@16.12.0\",\"yarn npm info react@16.12.0\"],[\"Show all available information about react@next\",\"yarn npm info react@next\"],[\"Show the description of react\",\"yarn npm info react --fields description\"],[\"Show all available versions of react\",\"yarn npm info react --fields versions\"],[\"Show the readme of react\",\"yarn npm info react --fields readme\"],[\"Show a few fields of react\",\"yarn npm info react --fields homepage,repository\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd),a=typeof this.fields<\"u\"?new Set([\"name\",...this.fields.split(/\\s*,\\s*/)]):null,n=[],c=!1,f=await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async p=>{for(let h of this.packages){let E;if(h===\".\"){let ie=s.topLevelWorkspace;if(!ie.manifest.name)throw new st(`Missing ${pe.pretty(r,\"name\",pe.Type.CODE)} field in ${fe.fromPortablePath(K.join(ie.cwd,Er.manifest))}`);E=j.makeDescriptor(ie.manifest.name,\"unknown\")}else E=j.parseDescriptor(h);let C=en.getIdentUrl(E),S=sJ(await en.get(C,{configuration:r,ident:E,jsonResponse:!0,customErrorMessage:en.customPackageError})),x=Object.keys(S.versions).sort(nJ.default.compareLoose),T=S[\"dist-tags\"].latest||x[x.length-1],O=Fr.validRange(E.range);if(O){let ie=nJ.default.maxSatisfying(x,O);ie!==null?T=ie:(p.reportWarning(0,`Unmet range ${j.prettyRange(r,E.range)}; falling back to the latest version`),c=!0)}else Object.hasOwn(S[\"dist-tags\"],E.range)?T=S[\"dist-tags\"][E.range]:E.range!==\"unknown\"&&(p.reportWarning(0,`Unknown tag ${j.prettyRange(r,E.range)}; falling back to the latest version`),c=!0);let U=S.versions[T],Y={...S,...U,version:T,versions:x},te;if(a!==null){te={};for(let ie of a){let ue=Y[ie];if(typeof ue<\"u\")te[ie]=ue;else{p.reportWarning(1,`The ${pe.pretty(r,ie,pe.Type.CODE)} field doesn't exist inside ${j.prettyIdent(r,E)}'s information`),c=!0;continue}}}else this.json||(delete Y.dist,delete Y.readme,delete Y.users),te=Y;p.reportJson(te),this.json||n.push(te)}});iJ.inspect.styles.name=\"cyan\";for(let p of n)(p!==n[0]||c)&&this.context.stdout.write(`\n`),this.context.stdout.write(`${(0,iJ.inspect)(p,{depth:1/0,colors:!0,compact:!1})}\n`);return f.exitCode()}};function sJ(e){if(Array.isArray(e)){let t=[];for(let r of e)r=sJ(r),r&&t.push(r);return t}else if(typeof e==\"object\"&&e!==null){let t={};for(let r of Object.keys(e)){if(r.startsWith(\"_\"))continue;let s=sJ(e[r]);s&&(t[r]=s)}return t}else return e||null}qe();qe();Vt();var oJ=et(Yv()),I1=class extends At{constructor(){super(...arguments);this.scope=he.String(\"-s,--scope\",{description:\"Login to the registry configured for a given scope\"});this.publish=he.Boolean(\"--publish\",!1,{description:\"Login to the publish registry\"});this.alwaysAuth=he.Boolean(\"--always-auth\",{description:\"Set the npmAlwaysAuth configuration\"});this.webLogin=he.Boolean(\"--web-login\",{description:\"Enable web login\"})}static{this.paths=[[\"npm\",\"login\"]]}static{this.usage=at.Usage({category:\"Npm-related commands\",description:\"store new login info to access the npm registry\",details:\"\\n      This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\\n\\n      Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\\n\\n      Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\\n    \",examples:[[\"Login to the default registry\",\"yarn npm login\"],[\"Login to the registry linked to the @my-scope registry\",\"yarn npm login --scope my-scope\"],[\"Login to the publish registry for the current package\",\"yarn npm login --publish\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=await gL({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Ot.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let c=await xvt({registry:s,configuration:r,report:n,webLogin:this.webLogin,stdin:this.context.stdin,stdout:this.context.stdout});return await Qvt(s,c,{alwaysAuth:this.alwaysAuth,scope:this.scope}),n.reportInfo(0,\"Successfully logged in\")})).exitCode()}};async function gL({scope:e,publish:t,configuration:r,cwd:s}){return e&&t?gi.getScopeRegistry(e,{configuration:r,type:gi.RegistryType.PUBLISH_REGISTRY}):e?gi.getScopeRegistry(e,{configuration:r}):t?gi.getPublishRegistry((await WI(r,s)).manifest,{configuration:r}):gi.getDefaultRegistry({configuration:r})}async function Svt(e,t){let r;try{r=await en.post(\"/-/v1/login\",null,{configuration:t,registry:e,authType:en.AuthType.NO_AUTH,jsonResponse:!0,headers:{\"npm-auth-type\":\"web\"}})}catch{return null}return r}async function Dvt(e,t){let r=await nn.request(e,null,{configuration:t,jsonResponse:!0});if(r.statusCode===202){let s=r.headers[\"retry-after\"]??\"1\";return{type:\"waiting\",sleep:parseInt(s,10)}}return r.statusCode===200?{type:\"success\",token:r.body.token}:null}async function bvt({registry:e,configuration:t,report:r}){let s=await Svt(e,t);if(!s)return null;if(Ui.openUrl){r.reportInfo(0,\"Starting the web login process...\"),r.reportSeparator();let{openNow:a}=await(0,oJ.prompt)({type:\"confirm\",name:\"openNow\",message:\"Do you want to try to open your browser now?\",required:!0,initial:!0,onCancel:()=>process.exit(130)});r.reportSeparator(),(!a||!await Ui.openUrl(s.loginUrl))&&(r.reportWarning(0,\"We failed to automatically open the url; you'll have to open it yourself in your browser of choice:\"),r.reportWarning(0,pe.pretty(t,s.loginUrl,pe.Type.URL)),r.reportSeparator())}for(;;){let a=await Dvt(s.doneUrl,t);if(a===null)return null;if(a.type===\"waiting\")await new Promise(n=>setTimeout(n,a.sleep*1e3));else return a.token}}var Pvt=[\"https://registry.yarnpkg.com\",\"https://registry.npmjs.org\"];async function xvt(e){if(e.webLogin??Pvt.includes(e.registry)){let t=await bvt(e);if(t!==null)return t}return await kvt(e)}async function kvt({registry:e,configuration:t,report:r,stdin:s,stdout:a}){let n=await Rvt({configuration:t,registry:e,report:r,stdin:s,stdout:a}),c=`/-/user/org.couchdb.user:${encodeURIComponent(n.name)}`,f={_id:`org.couchdb.user:${n.name}`,name:n.name,password:n.password,type:\"user\",roles:[],date:new Date().toISOString()},p={attemptedAs:n.name,configuration:t,registry:e,jsonResponse:!0,authType:en.AuthType.NO_AUTH};try{return(await en.put(c,f,p)).token}catch(x){if(!(x.originalError?.name===\"HTTPError\"&&x.originalError?.response.statusCode===409))throw x}let h={...p,authType:en.AuthType.NO_AUTH,headers:{authorization:`Basic ${Buffer.from(`${n.name}:${n.password}`).toString(\"base64\")}`}},E=await en.get(c,h);for(let[x,I]of Object.entries(E))(!f[x]||x===\"roles\")&&(f[x]=I);let C=`${c}/-rev/${f._rev}`;return(await en.put(C,f,h)).token}async function Qvt(e,t,{alwaysAuth:r,scope:s}){let a=c=>f=>{let p=Ge.isIndexableObject(f)?f:{},h=p[c],E=Ge.isIndexableObject(h)?h:{};return{...p,[c]:{...E,...r!==void 0?{npmAlwaysAuth:r}:{},npmAuthToken:t}}},n=s?{npmScopes:a(s)}:{npmRegistries:a(e)};return await ze.updateHomeConfiguration(n)}async function Rvt({configuration:e,registry:t,report:r,stdin:s,stdout:a}){r.reportInfo(0,`Logging in to ${pe.pretty(e,t,pe.Type.URL)}`);let n=!1;if(t.match(/^https:\\/\\/npm\\.pkg\\.github\\.com(\\/|$)/)&&(r.reportInfo(0,\"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions.\"),n=!0),r.reportSeparator(),e.env.YARN_IS_TEST_ENV)return{name:e.env.YARN_INJECT_NPM_USER||\"\",password:e.env.YARN_INJECT_NPM_PASSWORD||\"\"};let c=await(0,oJ.prompt)([{type:\"input\",name:\"name\",message:\"Username:\",required:!0,onCancel:()=>process.exit(130),stdin:s,stdout:a},{type:\"password\",name:\"password\",message:n?\"Token:\":\"Password:\",required:!0,onCancel:()=>process.exit(130),stdin:s,stdout:a}]);return r.reportSeparator(),c}qe();qe();Vt();var C1=new Set([\"npmAuthIdent\",\"npmAuthToken\"]),w1=class extends At{constructor(){super(...arguments);this.scope=he.String(\"-s,--scope\",{description:\"Logout of the registry configured for a given scope\"});this.publish=he.Boolean(\"--publish\",!1,{description:\"Logout of the publish registry\"});this.all=he.Boolean(\"-A,--all\",!1,{description:\"Logout of all registries\"})}static{this.paths=[[\"npm\",\"logout\"]]}static{this.usage=at.Usage({category:\"Npm-related commands\",description:\"logout of the npm registry\",details:\"\\n      This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\\n\\n      Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\\n\\n      Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\\n\\n      Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\\n    \",examples:[[\"Logout of the default registry\",\"yarn npm logout\"],[\"Logout of the @my-scope scope\",\"yarn npm logout --scope my-scope\"],[\"Logout of the publish registry for the current package\",\"yarn npm logout --publish\"],[\"Logout of all registries\",\"yarn npm logout --all\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=async()=>{let n=await gL({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),c=await ze.find(this.context.cwd,this.context.plugins),f=j.makeIdent(this.scope??null,\"pkg\");return!gi.getAuthConfiguration(n,{configuration:c,ident:f}).get(\"npmAuthToken\")};return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{if(this.all&&(await Fvt(),n.reportInfo(0,\"Successfully logged out from everything\")),this.scope){await Fbe(\"npmScopes\",this.scope),await s()?n.reportInfo(0,`Successfully logged out from ${this.scope}`):n.reportWarning(0,\"Scope authentication settings removed, but some other ones settings still apply to it\");return}let c=await gL({configuration:r,cwd:this.context.cwd,publish:this.publish});await Fbe(\"npmRegistries\",c),await s()?n.reportInfo(0,`Successfully logged out from ${c}`):n.reportWarning(0,\"Registry authentication settings removed, but some other ones settings still apply to it\")})).exitCode()}};function Tvt(e,t){let r=e[t];if(!Ge.isIndexableObject(r))return!1;let s=new Set(Object.keys(r));if([...C1].every(n=>!s.has(n)))return!1;for(let n of C1)s.delete(n);if(s.size===0)return e[t]=void 0,!0;let a={...r};for(let n of C1)delete a[n];return e[t]=a,!0}async function Fvt(){let e=t=>{let r=!1,s=Ge.isIndexableObject(t)?{...t}:{};s.npmAuthToken&&(delete s.npmAuthToken,r=!0);for(let a of Object.keys(s))Tvt(s,a)&&(r=!0);if(Object.keys(s).length!==0)return r?s:t};return await ze.updateHomeConfiguration({npmRegistries:e,npmScopes:e})}async function Fbe(e,t){return await ze.updateHomeConfiguration({[e]:r=>{let s=Ge.isIndexableObject(r)?r:{};if(!Object.hasOwn(s,t))return r;let a=s[t],n=Ge.isIndexableObject(a)?a:{},c=new Set(Object.keys(n));if([...C1].every(p=>!c.has(p)))return r;for(let p of C1)c.delete(p);if(c.size===0)return Object.keys(s).length===1?void 0:{...s,[t]:void 0};let f={};for(let p of C1)f[p]=void 0;return{...s,[t]:{...n,...f}}}})}qe();Dt();Vt();var B1=class extends At{constructor(){super(...arguments);this.access=he.String(\"--access\",{description:\"The access for the published package (public or restricted)\"});this.tag=he.String(\"--tag\",\"latest\",{description:\"The tag on the registry that the package should be attached to\"});this.tolerateRepublish=he.Boolean(\"--tolerate-republish\",!1,{description:\"Warn and exit when republishing an already existing version of a package\"});this.otp=he.String(\"--otp\",{description:\"The OTP token to use with the command\"});this.provenance=he.Boolean(\"--provenance\",!1,{description:\"Generate provenance for the package. Only available in GitHub Actions and GitLab CI. Can be set globally through the `npmPublishProvenance` setting or the `YARN_NPM_CONFIG_PROVENANCE` environment variable, or per-package through the `publishConfig.provenance` field in package.json.\"});this.dryRun=he.Boolean(\"-n,--dry-run\",!1,{description:\"Show what would be published without actually publishing\"});this.json=he.Boolean(\"--json\",!1,{description:\"Output the result in JSON format\"})}static{this.paths=[[\"npm\",\"publish\"]]}static{this.usage=at.Usage({category:\"Npm-related commands\",description:\"publish the active workspace to the npm registry\",details:'\\n      This command will pack the active workspace into a fresh archive and upload it to the npm registry.\\n\\n      The package will by default be attached to the `latest` tag on the registry, but this behavior can be overridden by using the `--tag` option.\\n\\n      Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka \"private packages\"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\\n    ',examples:[[\"Publish the active workspace\",\"yarn npm publish\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);if(a.manifest.private)throw new st(\"Private workspaces cannot be published\");if(a.manifest.name===null||a.manifest.version===null)throw new st(\"Workspaces must have valid names and versions to be published on an external registry\");await s.restoreInstallState();let n=a.manifest.name,c=a.manifest.version,f=gi.getPublishRegistry(a.manifest,{configuration:r});return(await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async h=>{if(h.reportInfo(0,`Publishing to ${f} with tag ${this.tag}`),this.tolerateRepublish)try{let E=await en.get(en.getIdentUrl(n),{configuration:r,registry:f,ident:n,jsonResponse:!0});if(!Object.hasOwn(E,\"versions\"))throw new _t(15,'Registry returned invalid data for - missing \"versions\" field');if(Object.hasOwn(E.versions,c)){let C=`Registry already knows about version ${c}; skipping.`;h.reportWarning(0,C),h.reportJson({name:j.stringifyIdent(n),version:c,registry:f,warning:C,skipped:!0});return}}catch(E){if(E.originalError?.response?.statusCode!==404)throw E}await Cn.maybeExecuteWorkspaceLifecycleScript(a,\"prepublish\",{report:h}),await EA.prepareForPack(a,{report:h},async()=>{let E=await EA.genPackList(a);for(let Y of E)h.reportInfo(null,fe.fromPortablePath(Y)),h.reportJson({file:fe.fromPortablePath(Y)});let C=await EA.genPackStream(a,E),S=await Ge.bufferStream(C),x=await d1.getGitHead(a.cwd),I=!1,T=\"\";a.manifest.publishConfig&&\"provenance\"in a.manifest.publishConfig?(I=!!a.manifest.publishConfig.provenance,T=I?\"Generating provenance statement because `publishConfig.provenance` field is set.\":\"Skipping provenance statement because `publishConfig.provenance` field is set to false.\"):this.provenance?(I=!0,T=\"Generating provenance statement because `--provenance` flag is set.\"):r.get(\"npmPublishProvenance\")&&(I=!0,T=\"Generating provenance statement because `npmPublishProvenance` setting is set.\"),T&&(h.reportInfo(null,T),h.reportJson({type:\"provenance\",enabled:I,provenanceMessage:T}));let O=await d1.makePublishBody(a,S,{access:this.access,tag:this.tag,registry:f,gitHead:x,provenance:I});this.dryRun||await en.put(en.getIdentUrl(n),O,{configuration:r,registry:f,ident:n,otp:this.otp,jsonResponse:!0,allowOidc:!!(process.env.CI&&(process.env.GITHUB_ACTIONS||process.env.GITLAB_CI))});let U=this.dryRun?\"Package archive not published (dry run)\":\"Package archive published\";h.reportInfo(0,U),h.reportJson({name:j.stringifyIdent(n),version:c,registry:f,tag:this.tag||\"latest\",files:E.map(Y=>fe.fromPortablePath(Y)),access:this.access||null,dryRun:this.dryRun,published:!this.dryRun,message:U,provenance:!!I})})})).exitCode()}};qe();Vt();var Nbe=et(pi());qe();Dt();Vt();var v1=class extends At{constructor(){super(...arguments);this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.package=he.String({required:!1})}static{this.paths=[[\"npm\",\"tag\",\"list\"]]}static{this.usage=at.Usage({category:\"Npm-related commands\",description:\"list all dist-tags of a package\",details:`\n      This command will list all tags of a package from the npm registry.\n\n      If the package is not specified, Yarn will default to the current workspace.\n    `,examples:[[\"List all tags of package `my-pkg`\",\"yarn npm tag list my-pkg\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n;if(typeof this.package<\"u\")n=j.parseIdent(this.package);else{if(!a)throw new ar(s.cwd,this.context.cwd);if(!a.manifest.name)throw new st(`Missing 'name' field in ${fe.fromPortablePath(K.join(a.cwd,Er.manifest))}`);n=a.manifest.name}let c=await Zb(n,r),p={children:Ge.sortMap(Object.entries(c),([h])=>h).map(([h,E])=>({value:pe.tuple(pe.Type.RESOLUTION,{descriptor:j.makeDescriptor(n,h),locator:j.makeLocator(n,E)})}))};return Rs.emitTree(p,{configuration:r,json:this.json,stdout:this.context.stdout})}};async function Zb(e,t){let r=`/-/package${en.getIdentUrl(e)}/dist-tags`;return en.get(r,{configuration:t,ident:e,jsonResponse:!0,customErrorMessage:en.customPackageError})}var S1=class extends At{constructor(){super(...arguments);this.package=he.String();this.tag=he.String()}static{this.paths=[[\"npm\",\"tag\",\"add\"]]}static{this.usage=at.Usage({category:\"Npm-related commands\",description:\"add a tag for a specific version of a package\",details:`\n      This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten.\n    `,examples:[[\"Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`\",\"yarn npm tag add my-pkg@2.3.4-beta.4 beta\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=j.parseDescriptor(this.package,!0),c=n.range;if(!Nbe.default.valid(c))throw new st(`The range ${pe.pretty(r,n.range,pe.Type.RANGE)} must be a valid semver version`);let f=gi.getPublishRegistry(a.manifest,{configuration:r}),p=pe.pretty(r,n,pe.Type.IDENT),h=pe.pretty(r,c,pe.Type.RANGE),E=pe.pretty(r,this.tag,pe.Type.CODE);return(await Ot.start({configuration:r,stdout:this.context.stdout},async S=>{let x=await Zb(n,r);Object.hasOwn(x,this.tag)&&x[this.tag]===c&&S.reportWarning(0,`Tag ${E} is already set to version ${h}`);let I=`/-/package${en.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await en.put(I,c,{configuration:r,registry:f,ident:n,jsonRequest:!0,jsonResponse:!0}),S.reportInfo(0,`Tag ${E} added to version ${h} of package ${p}`)})).exitCode()}};qe();Vt();var D1=class extends At{constructor(){super(...arguments);this.package=he.String();this.tag=he.String()}static{this.paths=[[\"npm\",\"tag\",\"remove\"]]}static{this.usage=at.Usage({category:\"Npm-related commands\",description:\"remove a tag from a package\",details:`\n      This command will remove a tag from a package from the npm registry.\n    `,examples:[[\"Remove the `beta` tag from package `my-pkg`\",\"yarn npm tag remove my-pkg beta\"]]})}async execute(){if(this.tag===\"latest\")throw new st(\"The 'latest' tag cannot be removed.\");let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=j.parseIdent(this.package),c=gi.getPublishRegistry(a.manifest,{configuration:r}),f=pe.pretty(r,this.tag,pe.Type.CODE),p=pe.pretty(r,n,pe.Type.IDENT),h=await Zb(n,r);if(!Object.hasOwn(h,this.tag))throw new st(`${f} is not a tag of package ${p}`);return(await Ot.start({configuration:r,stdout:this.context.stdout},async C=>{let S=`/-/package${en.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await en.del(S,{configuration:r,registry:c,ident:n,jsonResponse:!0}),C.reportInfo(0,`Tag ${f} removed from package ${p}`)})).exitCode()}};qe();qe();Vt();var b1=class extends At{constructor(){super(...arguments);this.scope=he.String(\"-s,--scope\",{description:\"Print username for the registry configured for a given scope\"});this.publish=he.Boolean(\"--publish\",!1,{description:\"Print username for the publish registry\"})}static{this.paths=[[\"npm\",\"whoami\"]]}static{this.usage=at.Usage({category:\"Npm-related commands\",description:\"display the name of the authenticated user\",details:\"\\n      Print the username associated with the current authentication settings to the standard output.\\n\\n      When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\\n\\n      When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\\n    \",examples:[[\"Print username for the default registry\",\"yarn npm whoami\"],[\"Print username for the registry on a given scope\",\"yarn npm whoami --scope company\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s;return this.scope&&this.publish?s=gi.getScopeRegistry(this.scope,{configuration:r,type:gi.RegistryType.PUBLISH_REGISTRY}):this.scope?s=gi.getScopeRegistry(this.scope,{configuration:r}):this.publish?s=gi.getPublishRegistry((await WI(r,this.context.cwd)).manifest,{configuration:r}):s=gi.getDefaultRegistry({configuration:r}),(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let c;try{c=await en.get(\"/-/whoami\",{configuration:r,registry:s,authType:en.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?j.makeIdent(this.scope,\"\"):void 0})}catch(f){if(f.response?.statusCode===401||f.response?.statusCode===403){n.reportError(41,\"Authentication failed - your credentials may have expired\");return}else throw f}n.reportInfo(0,c.username)})).exitCode()}};var Nvt={configuration:{npmPublishAccess:{description:\"Default access of the published packages\",type:\"STRING\",default:null},npmPublishProvenance:{description:\"Whether to generate provenance for the published packages\",type:\"BOOLEAN\",default:!1},npmAuditExcludePackages:{description:\"Array of glob patterns of packages to exclude from npm audit\",type:\"STRING\",default:[],isArray:!0},npmAuditIgnoreAdvisories:{description:\"Array of glob patterns of advisory IDs to exclude from npm audit\",type:\"STRING\",default:[],isArray:!0}},commands:[y1,E1,I1,w1,B1,S1,v1,D1,b1]},Ovt=Nvt;var hJ={};Yt(hJ,{PatchCommand:()=>T1,PatchCommitCommand:()=>R1,PatchFetcher:()=>rP,PatchResolver:()=>nP,default:()=>eSt,patchUtils:()=>yy});qe();qe();Dt();rA();var yy={};Yt(yy,{applyPatchFile:()=>mL,diffFolders:()=>AJ,ensureUnpatchedDescriptor:()=>lJ,ensureUnpatchedLocator:()=>EL,extractPackageToDisk:()=>fJ,extractPatchFlags:()=>jbe,isParentRequired:()=>uJ,isPatchDescriptor:()=>yL,isPatchLocator:()=>Qg,loadPatchFiles:()=>tP,makeDescriptor:()=>IL,makeLocator:()=>cJ,makePatchHash:()=>pJ,parseDescriptor:()=>$b,parseLocator:()=>eP,parsePatchFile:()=>Xb,unpatchDescriptor:()=>Zvt,unpatchLocator:()=>Xvt});qe();Dt();qe();Dt();var Lvt=/^@@ -(\\d+)(,(\\d+))? \\+(\\d+)(,(\\d+))? @@.*/;function P1(e){return K.relative(vt.root,K.resolve(vt.root,fe.toPortablePath(e)))}function Mvt(e){let t=e.trim().match(Lvt);if(!t)throw new Error(`Bad header line: '${e}'`);return{original:{start:Math.max(Number(t[1]),1),length:Number(t[3]||1)},patched:{start:Math.max(Number(t[4]),1),length:Number(t[6]||1)}}}var Uvt=420,_vt=493;var Obe=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),Hvt=e=>({header:Mvt(e),parts:[]}),jvt={\"@\":\"header\",\"-\":\"deletion\",\"+\":\"insertion\",\" \":\"context\",\"\\\\\":\"pragma\",undefined:\"context\"};function Gvt(e){let t=[],r=Obe(),s=\"parsing header\",a=null,n=null;function c(){a&&(n&&(a.parts.push(n),n=null),r.hunks.push(a),a=null)}function f(){c(),t.push(r),r=Obe()}for(let p=0;p<e.length;p++){let h=e[p];if(s===\"parsing header\")if(h.startsWith(\"@@\"))s=\"parsing hunks\",r.hunks=[],p-=1;else if(h.startsWith(\"diff --git \")){r&&r.diffLineFromPath&&f();let E=h.match(/^diff --git a\\/(.*?) b\\/(.*?)\\s*$/);if(!E)throw new Error(`Bad diff line: ${h}`);r.diffLineFromPath=E[1],r.diffLineToPath=E[2]}else if(h.startsWith(\"old mode \"))r.oldMode=h.slice(9).trim();else if(h.startsWith(\"new mode \"))r.newMode=h.slice(9).trim();else if(h.startsWith(\"deleted file mode \"))r.deletedFileMode=h.slice(18).trim();else if(h.startsWith(\"new file mode \"))r.newFileMode=h.slice(14).trim();else if(h.startsWith(\"rename from \"))r.renameFrom=h.slice(12).trim();else if(h.startsWith(\"rename to \"))r.renameTo=h.slice(10).trim();else if(h.startsWith(\"index \")){let E=h.match(/(\\w+)\\.\\.(\\w+)/);if(!E)continue;r.beforeHash=E[1],r.afterHash=E[2]}else h.startsWith(\"semver exclusivity \")?r.semverExclusivity=h.slice(19).trim():h.startsWith(\"--- \")?r.fromPath=h.slice(6).trim():h.startsWith(\"+++ \")&&(r.toPath=h.slice(6).trim());else{let E=jvt[h[0]]||null;switch(E){case\"header\":c(),a=Hvt(h);break;case null:s=\"parsing header\",f(),p-=1;break;case\"pragma\":{if(!h.startsWith(\"\\\\ No newline at end of file\"))throw new Error(`Unrecognized pragma in patch file: ${h}`);if(!n)throw new Error(\"Bad parser state: No newline at EOF pragma encountered without context\");n.noNewlineAtEndOfFile=!0}break;case\"context\":case\"deletion\":case\"insertion\":{if(!a)throw new Error(\"Bad parser state: Hunk lines encountered before hunk header\");n&&n.type!==E&&(a.parts.push(n),n=null),n||(n={type:E,lines:[],noNewlineAtEndOfFile:!1}),n.lines.push(h.slice(1))}break;default:Ge.assertNever(E);break}}}f();for(let{hunks:p}of t)if(p)for(let h of p)Wvt(h);return t}function qvt(e){let t=[];for(let r of e){let{semverExclusivity:s,diffLineFromPath:a,diffLineToPath:n,oldMode:c,newMode:f,deletedFileMode:p,newFileMode:h,renameFrom:E,renameTo:C,beforeHash:S,afterHash:x,fromPath:I,toPath:T,hunks:O}=r,U=E?\"rename\":p?\"file deletion\":h?\"file creation\":O&&O.length>0?\"patch\":\"mode change\",Y=null;switch(U){case\"rename\":{if(!E||!C)throw new Error(\"Bad parser state: rename from & to not given\");t.push({type:\"rename\",semverExclusivity:s,fromPath:P1(E),toPath:P1(C)}),Y=C}break;case\"file deletion\":{let te=a||I;if(!te)throw new Error(\"Bad parse state: no path given for file deletion\");t.push({type:\"file deletion\",semverExclusivity:s,hunk:O&&O[0]||null,path:P1(te),mode:dL(p),hash:S})}break;case\"file creation\":{let te=n||T;if(!te)throw new Error(\"Bad parse state: no path given for file creation\");t.push({type:\"file creation\",semverExclusivity:s,hunk:O&&O[0]||null,path:P1(te),mode:dL(h),hash:x})}break;case\"patch\":case\"mode change\":Y=T||n;break;default:Ge.assertNever(U);break}Y&&c&&f&&c!==f&&t.push({type:\"mode change\",semverExclusivity:s,path:P1(Y),oldMode:dL(c),newMode:dL(f)}),Y&&O&&O.length&&t.push({type:\"patch\",semverExclusivity:s,path:P1(Y),hunks:O,beforeHash:S,afterHash:x})}if(t.length===0)throw new Error(\"Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string\");return t}function dL(e){let t=parseInt(e,8)&511;if(t!==Uvt&&t!==_vt)throw new Error(`Unexpected file mode string: ${e}`);return t}function Xb(e){let t=e.split(/\\n/g);return t[t.length-1]===\"\"&&t.pop(),qvt(Gvt(t))}function Wvt(e){let t=0,r=0;for(let{type:s,lines:a}of e.parts)switch(s){case\"context\":r+=a.length,t+=a.length;break;case\"deletion\":t+=a.length;break;case\"insertion\":r+=a.length;break;default:Ge.assertNever(s);break}if(t!==e.header.original.length||r!==e.header.patched.length){let s=a=>a<0?a:`+${a}`;throw new Error(`hunk header integrity check failed (expected @@ ${s(e.header.original.length)} ${s(e.header.patched.length)} @@, got @@ ${s(t)} ${s(r)} @@)`)}}qe();Dt();var x1=class extends Error{constructor(r,s){super(`Cannot apply hunk #${r+1}`);this.hunk=s}};async function k1(e,t,r){let s=await e.lstatPromise(t),a=await r();typeof a<\"u\"&&(t=a),await e.lutimesPromise(t,s.atime,s.mtime)}async function mL(e,{baseFs:t=new Yn,dryRun:r=!1,version:s=null}={}){for(let a of e)if(!(a.semverExclusivity!==null&&s!==null&&!Fr.satisfiesWithPrereleases(s,a.semverExclusivity)))switch(a.type){case\"file deletion\":if(r){if(!t.existsSync(a.path))throw new Error(`Trying to delete a file that doesn't exist: ${a.path}`)}else await k1(t,K.dirname(a.path),async()=>{await t.unlinkPromise(a.path)});break;case\"rename\":if(r){if(!t.existsSync(a.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${a.fromPath}`)}else await k1(t,K.dirname(a.fromPath),async()=>{await k1(t,K.dirname(a.toPath),async()=>{await k1(t,a.fromPath,async()=>(await t.movePromise(a.fromPath,a.toPath),a.toPath))})});break;case\"file creation\":if(r){if(t.existsSync(a.path))throw new Error(`Trying to create a file that already exists: ${a.path}`)}else{let n=a.hunk?a.hunk.parts[0].lines.join(`\n`)+(a.hunk.parts[0].noNewlineAtEndOfFile?\"\":`\n`):\"\";await t.mkdirpPromise(K.dirname(a.path),{chmod:493,utimes:[Ai.SAFE_TIME,Ai.SAFE_TIME]}),await t.writeFilePromise(a.path,n,{mode:a.mode}),await t.utimesPromise(a.path,Ai.SAFE_TIME,Ai.SAFE_TIME)}break;case\"patch\":await k1(t,a.path,async()=>{await Kvt(a,{baseFs:t,dryRun:r})});break;case\"mode change\":{let c=(await t.statPromise(a.path)).mode;if(Lbe(a.newMode)!==Lbe(c))continue;await k1(t,a.path,async()=>{await t.chmodPromise(a.path,a.newMode)})}break;default:Ge.assertNever(a);break}}function Lbe(e){return(e&64)>0}function Mbe(e){return e.replace(/\\s+$/,\"\")}function Yvt(e,t){return Mbe(e)===Mbe(t)}async function Kvt({hunks:e,path:t},{baseFs:r,dryRun:s=!1}){let a=await r.statSync(t).mode,c=(await r.readFileSync(t,\"utf8\")).split(/\\n/),f=[],p=0,h=0;for(let C of e){let S=Math.max(h,C.header.patched.start+p),x=Math.max(0,S-h),I=Math.max(0,c.length-S-C.header.original.length),T=Math.max(x,I),O=0,U=0,Y=null;for(;O<=T;){if(O<=x&&(U=S-O,Y=Ube(C,c,U),Y!==null)){O=-O;break}if(O<=I&&(U=S+O,Y=Ube(C,c,U),Y!==null))break;O+=1}if(Y===null)throw new x1(e.indexOf(C),C);f.push(Y),p+=O,h=U+C.header.original.length}if(s)return;let E=0;for(let C of f)for(let S of C)switch(S.type){case\"splice\":{let x=S.index+E;c.splice(x,S.numToDelete,...S.linesToInsert),E+=S.linesToInsert.length-S.numToDelete}break;case\"pop\":c.pop();break;case\"push\":c.push(S.line);break;default:Ge.assertNever(S);break}await r.writeFilePromise(t,c.join(`\n`),{mode:a})}function Ube(e,t,r){let s=[];for(let a of e.parts)switch(a.type){case\"context\":case\"deletion\":{for(let n of a.lines){let c=t[r];if(c==null||!Yvt(c,n))return null;r+=1}a.type===\"deletion\"&&(s.push({type:\"splice\",index:r-a.lines.length,numToDelete:a.lines.length,linesToInsert:[]}),a.noNewlineAtEndOfFile&&s.push({type:\"push\",line:\"\"}))}break;case\"insertion\":s.push({type:\"splice\",index:r,numToDelete:0,linesToInsert:a.lines}),a.noNewlineAtEndOfFile&&s.push({type:\"pop\"});break;default:Ge.assertNever(a.type);break}return s}var zvt=/^builtin<([^>]+)>$/;function Q1(e,t){let{protocol:r,source:s,selector:a,params:n}=j.parseRange(e);if(r!==\"patch:\")throw new Error(\"Invalid patch range\");if(s===null)throw new Error(\"Patch locators must explicitly define their source\");let c=a?a.split(/&/).map(E=>fe.toPortablePath(E)):[],f=n&&typeof n.locator==\"string\"?j.parseLocator(n.locator):null,p=n&&typeof n.version==\"string\"?n.version:null,h=t(s);return{parentLocator:f,sourceItem:h,patchPaths:c,sourceVersion:p}}function yL(e){return e.range.startsWith(\"patch:\")}function Qg(e){return e.reference.startsWith(\"patch:\")}function $b(e){let{sourceItem:t,...r}=Q1(e.range,j.parseDescriptor);return{...r,sourceDescriptor:t}}function eP(e){let{sourceItem:t,...r}=Q1(e.reference,j.parseLocator);return{...r,sourceLocator:t}}function Zvt(e){let{sourceItem:t}=Q1(e.range,j.parseDescriptor);return t}function Xvt(e){let{sourceItem:t}=Q1(e.reference,j.parseLocator);return t}function lJ(e){if(!yL(e))return e;let{sourceItem:t}=Q1(e.range,j.parseDescriptor);return t}function EL(e){if(!Qg(e))return e;let{sourceItem:t}=Q1(e.reference,j.parseLocator);return t}function _be({parentLocator:e,sourceItem:t,patchPaths:r,sourceVersion:s,patchHash:a},n){let c=e!==null?{locator:j.stringifyLocator(e)}:{},f=typeof s<\"u\"?{version:s}:{},p=typeof a<\"u\"?{hash:a}:{};return j.makeRange({protocol:\"patch:\",source:n(t),selector:r.join(\"&\"),params:{...f,...p,...c}})}function IL(e,{parentLocator:t,sourceDescriptor:r,patchPaths:s}){return j.makeDescriptor(e,_be({parentLocator:t,sourceItem:r,patchPaths:s},j.stringifyDescriptor))}function cJ(e,{parentLocator:t,sourcePackage:r,patchPaths:s,patchHash:a}){return j.makeLocator(e,_be({parentLocator:t,sourceItem:r,sourceVersion:r.version,patchPaths:s,patchHash:a},j.stringifyLocator))}function Hbe({onAbsolute:e,onRelative:t,onProject:r,onBuiltin:s},a){let n=a.lastIndexOf(\"!\");n!==-1&&(a=a.slice(n+1));let c=a.match(zvt);return c!==null?s(c[1]):a.startsWith(\"~/\")?r(a.slice(2)):K.isAbsolute(a)?e(a):t(a)}function jbe(e){let t=e.lastIndexOf(\"!\");return{optional:(t!==-1?new Set(e.slice(0,t).split(/!/)):new Set).has(\"optional\")}}function uJ(e){return Hbe({onAbsolute:()=>!1,onRelative:()=>!0,onProject:()=>!1,onBuiltin:()=>!1},e)}async function tP(e,t,r){let s=e!==null?await r.fetcher.fetch(e,r):null,a=s&&s.localPath?{packageFs:new bn(vt.root),prefixPath:K.relative(vt.root,s.localPath)}:s;s&&s!==a&&s.releaseFs&&s.releaseFs();let n=await Ge.releaseAfterUseAsync(async()=>await Promise.all(t.map(async c=>{let f=jbe(c),p=await Hbe({onAbsolute:async h=>await le.readFilePromise(h,\"utf8\"),onRelative:async h=>{if(a===null)throw new Error(\"Assertion failed: The parent locator should have been fetched\");return await a.packageFs.readFilePromise(K.join(a.prefixPath,h),\"utf8\")},onProject:async h=>await le.readFilePromise(K.join(r.project.cwd,h),\"utf8\"),onBuiltin:async h=>await r.project.configuration.firstHook(E=>E.getBuiltinPatch,r.project,h)},c);return{...f,source:p}})));for(let c of n)typeof c.source==\"string\"&&(c.source=c.source.replace(/\\r\\n?/g,`\n`));return n}async function fJ(e,{cache:t,project:r}){let s=r.storedPackages.get(e.locatorHash);if(typeof s>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");let a=EL(e),n=r.storedChecksums,c=new ki,f=await le.mktempPromise(),p=K.join(f,\"source\"),h=K.join(f,\"user\"),E=K.join(f,\".yarn-patch.json\"),C=r.configuration.makeFetcher(),S=[];try{let x,I;if(e.locatorHash===a.locatorHash){let T=await C.fetch(e,{cache:t,project:r,fetcher:C,checksums:n,report:c});S.push(()=>T.releaseFs?.()),x=T,I=T}else x=await C.fetch(e,{cache:t,project:r,fetcher:C,checksums:n,report:c}),S.push(()=>x.releaseFs?.()),I=await C.fetch(e,{cache:t,project:r,fetcher:C,checksums:n,report:c}),S.push(()=>I.releaseFs?.());await Promise.all([le.copyPromise(p,x.prefixPath,{baseFs:x.packageFs}),le.copyPromise(h,I.prefixPath,{baseFs:I.packageFs}),le.writeJsonPromise(E,{locator:j.stringifyLocator(e),version:s.version})])}finally{for(let x of S)x()}return le.detachTemp(f),h}async function AJ(e,t){let r=fe.fromPortablePath(e).replace(/\\\\/g,\"/\"),s=fe.fromPortablePath(t).replace(/\\\\/g,\"/\"),{stdout:a,stderr:n}=await qr.execvp(\"git\",[\"-c\",\"core.safecrlf=false\",\"diff\",\"--src-prefix=a/\",\"--dst-prefix=b/\",\"--ignore-cr-at-eol\",\"--full-index\",\"--no-index\",\"--no-renames\",\"--text\",r,s],{cwd:fe.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:\"1\",HOME:\"\",XDG_CONFIG_HOME:\"\",USERPROFILE:\"\"}});if(n.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH.\nThe following error was reported by 'git':\n${n}`);let c=r.startsWith(\"/\")?f=>f.slice(1):f=>f;return a.replace(new RegExp(`(a|b)(${Ge.escapeRegExp(`/${c(r)}/`)})`,\"g\"),\"$1/\").replace(new RegExp(`(a|b)${Ge.escapeRegExp(`/${c(s)}/`)}`,\"g\"),\"$1/\").replace(new RegExp(Ge.escapeRegExp(`${r}/`),\"g\"),\"\").replace(new RegExp(Ge.escapeRegExp(`${s}/`),\"g\"),\"\")}function pJ(e,t){let r=[];for(let{source:s}of e){if(s===null)continue;let a=Xb(s);for(let n of a){let{semverExclusivity:c,...f}=n;c!==null&&t!==null&&!Fr.satisfiesWithPrereleases(t,c)||r.push(JSON.stringify(f))}}return Ln.makeHash(`${3}`,...r).slice(0,6)}qe();function Gbe(e,{configuration:t,report:r}){for(let s of e.parts)for(let a of s.lines)switch(s.type){case\"context\":r.reportInfo(null,`  ${pe.pretty(t,a,\"grey\")}`);break;case\"deletion\":r.reportError(28,`- ${pe.pretty(t,a,pe.Type.REMOVED)}`);break;case\"insertion\":r.reportError(28,`+ ${pe.pretty(t,a,pe.Type.ADDED)}`);break;default:Ge.assertNever(s.type)}}var rP=class{supports(t,r){return!!Qg(t)}getLocalPath(t,r){return null}async fetch(t,r){let s=r.checksums.get(t.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(t,s,{onHit:()=>r.report.reportCacheHit(t),onMiss:()=>r.report.reportCacheMiss(t,`${j.prettyLocator(r.project.configuration,t)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(t,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:j.getIdentVendorPath(t),localPath:this.getLocalPath(t,r),checksum:c}}async patchPackage(t,r){let{parentLocator:s,sourceLocator:a,sourceVersion:n,patchPaths:c}=eP(t),f=await tP(s,c,r),p=await le.mktempPromise(),h=K.join(p,\"current.zip\"),E=await r.fetcher.fetch(a,r),C=j.getIdentVendorPath(t),S=new ps(h,{create:!0,level:r.project.configuration.get(\"compressionLevel\")});await Ge.releaseAfterUseAsync(async()=>{await S.copyPromise(C,E.prefixPath,{baseFs:E.packageFs,stableSort:!0})},E.releaseFs),S.saveAndClose();for(let{source:x,optional:I}of f){if(x===null)continue;let T=new ps(h,{level:r.project.configuration.get(\"compressionLevel\")}),O=new bn(K.resolve(vt.root,C),{baseFs:T});try{await mL(Xb(x),{baseFs:O,version:n})}catch(U){if(!(U instanceof x1))throw U;let Y=r.project.configuration.get(\"enableInlineHunks\"),te=!Y&&!I?\" (set enableInlineHunks for details)\":\"\",ie=`${j.prettyLocator(r.project.configuration,t)}: ${U.message}${te}`,ue=ae=>{Y&&Gbe(U.hunk,{configuration:r.project.configuration,report:ae})};if(T.discardAndClose(),I){r.report.reportWarningOnce(66,ie,{reportExtra:ue});continue}else throw new _t(66,ie,ue)}T.saveAndClose()}return new ps(h,{level:r.project.configuration.get(\"compressionLevel\")})}};qe();var nP=class{supportsDescriptor(t,r){return!!yL(t)}supportsLocator(t,r){return!!Qg(t)}shouldPersistResolution(t,r){return!1}bindDescriptor(t,r,s){let{patchPaths:a}=$b(t);return a.every(n=>!uJ(n))?t:j.bindDescriptor(t,{locator:j.stringifyLocator(r)})}getResolutionDependencies(t,r){let{sourceDescriptor:s}=$b(t);return{sourceDescriptor:r.project.configuration.normalizeDependency(s)}}async getCandidates(t,r,s){if(!s.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{parentLocator:a,patchPaths:n}=$b(t),c=await tP(a,n,s.fetchOptions),f=r.sourceDescriptor;if(typeof f>\"u\")throw new Error(\"Assertion failed: The dependency should have been resolved\");let p=pJ(c,f.version);return[cJ(t,{parentLocator:a,sourcePackage:f,patchPaths:n,patchHash:p})]}async getSatisfying(t,r,s,a){let[n]=await this.getCandidates(t,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(t,r){let{sourceLocator:s}=eP(t);return{...await r.resolver.resolve(s,r),...t}}};qe();Dt();Vt();var R1=class extends At{constructor(){super(...arguments);this.save=he.Boolean(\"-s,--save\",!1,{description:\"Add the patch to your resolution entries\"});this.patchFolder=he.String()}static{this.paths=[[\"patch-commit\"]]}static{this.usage=at.Usage({description:\"generate a patch out of a directory\",details:\"\\n      By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\\n\\n      With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\\n\\n      Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\\n    \"})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=K.resolve(this.context.cwd,fe.toPortablePath(this.patchFolder)),c=K.join(n,\"../source\"),f=K.join(n,\"../.yarn-patch.json\");if(!le.existsSync(c))throw new st(\"The argument folder didn't get created by 'yarn patch'\");let p=await AJ(c,n),h=await le.readJsonPromise(f),E=j.parseLocator(h.locator,!0);if(!s.storedPackages.has(E.locatorHash))throw new st(\"No package found in the project for the given locator\");if(!this.save){this.context.stdout.write(p);return}let C=r.get(\"patchFolder\"),S=K.join(C,`${j.slugifyLocator(E)}.patch`);await le.mkdirPromise(C,{recursive:!0}),await le.writeFilePromise(S,p);let x=[],I=new Map;for(let T of s.storedPackages.values()){if(j.isVirtualLocator(T))continue;let O=T.dependencies.get(E.identHash);if(!O)continue;let U=j.ensureDevirtualizedDescriptor(O),Y=lJ(U),te=s.storedResolutions.get(Y.descriptorHash);if(!te)throw new Error(\"Assertion failed: Expected the resolution to have been registered\");if(!s.storedPackages.get(te))throw new Error(\"Assertion failed: Expected the package to have been registered\");let ue=s.tryWorkspaceByLocator(T);if(ue)x.push(ue);else{let ae=s.originalPackages.get(T.locatorHash);if(!ae)throw new Error(\"Assertion failed: Expected the original package to have been registered\");let de=ae.dependencies.get(O.identHash);if(!de)throw new Error(\"Assertion failed: Expected the original dependency to have been registered\");I.set(de.descriptorHash,de)}}for(let T of x)for(let O of Ut.hardDependencies){let U=T.manifest[O].get(E.identHash);if(!U)continue;let Y=IL(U,{parentLocator:null,sourceDescriptor:j.convertLocatorToDescriptor(E),patchPaths:[K.join(Er.home,K.relative(s.cwd,S))]});T.manifest[O].set(U.identHash,Y)}for(let T of I.values()){let O=IL(T,{parentLocator:null,sourceDescriptor:j.convertLocatorToDescriptor(E),patchPaths:[K.join(Er.home,K.relative(s.cwd,S))]});s.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:j.stringifyIdent(O),description:T.range}},reference:O.range})}await s.persist()}};qe();Dt();Vt();var T1=class extends At{constructor(){super(...arguments);this.update=he.Boolean(\"-u,--update\",!1,{description:\"Reapply local patches that already apply to this packages\"});this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.package=he.String()}static{this.paths=[[\"patch\"]]}static{this.usage=at.Usage({description:\"prepare a package for patching\",details:\"\\n      This command will cause a package to be extracted in a temporary directory intended to be editable at will.\\n\\n      Once you're done with your changes, run `yarn patch-commit -s path` (with `path` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\\n\\n      Calling the command when you already have a patch won't import it by default (in other words, the default behavior is to reset existing patches). However, adding the `-u,--update` flag will import any current patch.\\n    \"})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let c=j.parseLocator(this.package);if(c.reference===\"unknown\"){let f=Ge.mapAndFilter([...s.storedPackages.values()],p=>p.identHash!==c.identHash?Ge.mapAndFilter.skip:j.isVirtualLocator(p)?Ge.mapAndFilter.skip:Qg(p)!==this.update?Ge.mapAndFilter.skip:p);if(f.length===0)throw new st(\"No package found in the project for the given locator\");if(f.length>1)throw new st(`Multiple candidate packages found; explicitly choose one of them (use \\`yarn why <package>\\` to get more information as to who depends on them):\n${f.map(p=>`\n- ${j.prettyLocator(r,p)}`).join(\"\")}`);c=f[0]}if(!s.storedPackages.has(c.locatorHash))throw new st(\"No package found in the project for the given locator\");await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let p=EL(c),h=await fJ(c,{cache:n,project:s});f.reportJson({locator:j.stringifyLocator(p),path:fe.fromPortablePath(h)});let E=this.update?\" along with its current modifications\":\"\";f.reportInfo(0,`Package ${j.prettyLocator(r,p)} got extracted with success${E}!`),f.reportInfo(0,`You can now edit the following folder: ${pe.pretty(r,fe.fromPortablePath(h),\"magenta\")}`),f.reportInfo(0,`Once you are done run ${pe.pretty(r,`yarn patch-commit -s ${process.platform===\"win32\"?'\"':\"\"}${fe.fromPortablePath(h)}${process.platform===\"win32\"?'\"':\"\"}`,\"cyan\")} and Yarn will store a patchfile based on your changes.`)})}};var $vt={configuration:{enableInlineHunks:{description:\"If true, the installs will print unmatched patch hunks\",type:\"BOOLEAN\",default:!1},patchFolder:{description:\"Folder where the patch files must be written\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/patches\"}},commands:[R1,T1],fetchers:[rP],resolvers:[nP]},eSt=$vt;var mJ={};Yt(mJ,{PnpmLinker:()=>iP,default:()=>oSt});qe();Dt();Vt();var iP=class{getCustomDataKey(){return JSON.stringify({name:\"PnpmLinker\",version:3})}supportsPackage(t,r){return this.isEnabled(r)}async findPackageLocation(t,r){if(!this.isEnabled(r))throw new Error(\"Assertion failed: Expected the pnpm linker to be enabled\");let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new st(`The project in ${pe.pretty(r.project.configuration,`${r.project.cwd}/package.json`,pe.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=a.pathsByLocator.get(t.locatorHash);if(typeof n>\"u\")throw new st(`Couldn't find ${j.prettyLocator(r.project.configuration,t)} in the currently installed pnpm map - running an install might help`);return n.packageLocation}async findPackageLocator(t,r){if(!this.isEnabled(r))return null;let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new st(`The project in ${pe.pretty(r.project.configuration,`${r.project.cwd}/package.json`,pe.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=t.match(/(^.*\\/node_modules\\/(@[^/]*\\/)?[^/]+)(\\/.*$)/);if(n){let p=a.locatorByPath.get(n[1]);if(p)return p}let c=t,f=t;do{f=c,c=K.dirname(f);let p=a.locatorByPath.get(f);if(p)return p}while(c!==f);return null}makeInstaller(t){return new gJ(t)}isEnabled(t){return t.project.configuration.get(\"nodeLinker\")===\"pnpm\"}},gJ=class{constructor(t){this.opts=t;this.asyncActions=new Ge.AsyncActions(10);this.customData={pathsByLocator:new Map,locatorByPath:new Map};this.indexFolderPromise=$P(le,{indexPath:K.join(t.project.configuration.get(\"globalFolder\"),\"index\")})}attachCustomData(t){}async installPackage(t,r,s){switch(t.linkType){case\"SOFT\":return this.installPackageSoft(t,r,s);case\"HARD\":return this.installPackageHard(t,r,s)}throw new Error(\"Assertion failed: Unsupported package link type\")}async installPackageSoft(t,r,s){let a=K.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.opts.project.tryWorkspaceByLocator(t)?K.join(a,Er.nodeModules):null;return this.customData.pathsByLocator.set(t.locatorHash,{packageLocation:a,dependenciesLocation:n}),{packageLocation:a,buildRequest:null}}async installPackageHard(t,r,s){let a=rSt(t,{project:this.opts.project}),n=a.packageLocation;this.customData.locatorByPath.set(n,j.stringifyLocator(t)),this.customData.pathsByLocator.set(t.locatorHash,a),s.holdFetchResult(this.asyncActions.set(t.locatorHash,async()=>{await le.mkdirPromise(n,{recursive:!0}),await le.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1,linkStrategy:{type:\"HardlinkFromIndex\",indexPath:await this.indexFolderPromise,autoRepair:!0}})}));let f=j.isVirtualLocator(t)?j.devirtualizeLocator(t):t,p={manifest:await Ut.tryFind(r.prefixPath,{baseFs:r.packageFs})??new Ut,misc:{hasBindingGyp:dA.hasBindingGyp(r)}},h=this.opts.project.getDependencyMeta(f,t.version),E=dA.extractBuildRequest(t,p,h,{configuration:this.opts.project.configuration});return{packageLocation:n,buildRequest:E}}async attachInternalDependencies(t,r){if(this.opts.project.configuration.get(\"nodeLinker\")!==\"pnpm\"||!qbe(t,{project:this.opts.project}))return;let s=this.customData.pathsByLocator.get(t.locatorHash);if(typeof s>\"u\")throw new Error(`Assertion failed: Expected the package to have been registered (${j.stringifyLocator(t)})`);let{dependenciesLocation:a}=s;a&&this.asyncActions.reduce(t.locatorHash,async n=>{await le.mkdirPromise(a,{recursive:!0});let c=await nSt(a),f=new Map(c),p=[n],h=(C,S)=>{let x=S;qbe(S,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,\"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies\"),x=j.devirtualizeLocator(S));let I=this.customData.pathsByLocator.get(x.locatorHash);if(typeof I>\"u\")throw new Error(`Assertion failed: Expected the package to have been registered (${j.stringifyLocator(S)})`);let T=j.stringifyIdent(C),O=K.join(a,T),U=K.relative(K.dirname(O),I.packageLocation),Y=f.get(T);f.delete(T),p.push(Promise.resolve().then(async()=>{if(Y){if(Y.isSymbolicLink()&&await le.readlinkPromise(O)===U)return;await le.removePromise(O)}await le.mkdirpPromise(K.dirname(O)),process.platform==\"win32\"&&this.opts.project.configuration.get(\"winLinkType\")===\"junctions\"?await le.symlinkPromise(I.packageLocation,O,\"junction\"):await le.symlinkPromise(U,O)}))},E=!1;for(let[C,S]of r)C.identHash===t.identHash&&(E=!0),h(C,S);!E&&!this.opts.project.tryWorkspaceByLocator(t)&&h(j.convertLocatorToDescriptor(t),t),p.push(iSt(a,f)),await Promise.all(p)})}async attachExternalDependents(t,r){throw new Error(\"External dependencies haven't been implemented for the pnpm linker\")}async finalizeInstall(){let t=Wbe(this.opts.project);if(this.opts.project.configuration.get(\"nodeLinker\")!==\"pnpm\")await le.removePromise(t);else{let r;try{r=new Set(await le.readdirPromise(t))}catch{r=new Set}for(let{dependenciesLocation:s}of this.customData.pathsByLocator.values()){if(!s)continue;let a=K.contains(t,s);if(a===null)continue;let[n]=a.split(K.sep);r.delete(n)}await Promise.all([...r].map(async s=>{await le.removePromise(K.join(t,s))}))}return await this.asyncActions.wait(),await dJ(t),this.opts.project.configuration.get(\"nodeLinker\")!==\"node-modules\"&&await dJ(tSt(this.opts.project)),{customData:this.customData}}};function tSt(e){return K.join(e.cwd,Er.nodeModules)}function Wbe(e){return e.configuration.get(\"pnpmStoreFolder\")}function rSt(e,{project:t}){let r=j.slugifyLocator(e),s=Wbe(t),a=K.join(s,r,\"package\"),n=K.join(s,r,Er.nodeModules);return{packageLocation:a,dependenciesLocation:n}}function qbe(e,{project:t}){return!j.isVirtualLocator(e)||!t.tryWorkspaceByLocator(e)}async function nSt(e){let t=new Map,r=[];try{r=await le.readdirPromise(e,{withFileTypes:!0})}catch(s){if(s.code!==\"ENOENT\")throw s}try{for(let s of r)if(!s.name.startsWith(\".\"))if(s.name.startsWith(\"@\")){let a=await le.readdirPromise(K.join(e,s.name),{withFileTypes:!0});if(a.length===0)t.set(s.name,s);else for(let n of a)t.set(`${s.name}/${n.name}`,n)}else t.set(s.name,s)}catch(s){if(s.code!==\"ENOENT\")throw s}return t}async function iSt(e,t){let r=[],s=new Set;for(let a of t.keys()){r.push(le.removePromise(K.join(e,a)));let n=j.tryParseIdent(a)?.scope;n&&s.add(`@${n}`)}return Promise.all(r).then(()=>Promise.all([...s].map(a=>dJ(K.join(e,a)))))}async function dJ(e){try{await le.rmdirPromise(e)}catch(t){if(t.code!==\"ENOENT\"&&t.code!==\"ENOTEMPTY\"&&t.code!==\"EBUSY\")throw t}}var sSt={configuration:{pnpmStoreFolder:{description:\"By default, the store is stored in the 'node_modules/.store' of the project. Sometimes in CI scenario's it is convenient to store this in a different location so it can be cached and reused.\",type:\"ABSOLUTE_PATH\",default:\"./node_modules/.store\"}},linkers:[iP]},oSt=sSt;var vJ={};Yt(vJ,{StageCommand:()=>F1,default:()=>mSt,stageUtils:()=>wL});qe();Dt();Vt();qe();Dt();var wL={};Yt(wL,{ActionType:()=>yJ,checkConsensus:()=>CL,expandDirectory:()=>CJ,findConsensus:()=>wJ,findVcsRoot:()=>EJ,genCommitMessage:()=>BJ,getCommitPrefix:()=>Vbe,isYarnFile:()=>IJ});Dt();var yJ=(n=>(n[n.CREATE=0]=\"CREATE\",n[n.DELETE=1]=\"DELETE\",n[n.ADD=2]=\"ADD\",n[n.REMOVE=3]=\"REMOVE\",n[n.MODIFY=4]=\"MODIFY\",n))(yJ||{});async function EJ(e,{marker:t}){do if(!le.existsSync(K.join(e,t)))e=K.dirname(e);else return e;while(e!==\"/\");return null}function IJ(e,{roots:t,names:r}){if(r.has(K.basename(e)))return!0;do if(!t.has(e))e=K.dirname(e);else return!0;while(e!==\"/\");return!1}function CJ(e){let t=[],r=[e];for(;r.length>0;){let s=r.pop(),a=le.readdirSync(s);for(let n of a){let c=K.resolve(s,n);le.lstatSync(c).isDirectory()?r.push(c):t.push(c)}}return t}function CL(e,t){let r=0,s=0;for(let a of e)a!==\"wip\"&&(t.test(a)?r+=1:s+=1);return r>=s}function wJ(e){let t=CL(e,/^(\\w\\(\\w+\\):\\s*)?\\w+s/),r=CL(e,/^(\\w\\(\\w+\\):\\s*)?[A-Z]/),s=CL(e,/^\\w\\(\\w+\\):/);return{useThirdPerson:t,useUpperCase:r,useComponent:s}}function Vbe(e){return e.useComponent?\"chore(yarn): \":\"\"}var aSt=new Map([[0,\"create\"],[1,\"delete\"],[2,\"add\"],[3,\"remove\"],[4,\"update\"]]);function BJ(e,t){let r=Vbe(e),s=[],a=t.slice().sort((n,c)=>n[0]-c[0]);for(;a.length>0;){let[n,c]=a.shift(),f=aSt.get(n);e.useUpperCase&&s.length===0&&(f=`${f[0].toUpperCase()}${f.slice(1)}`),e.useThirdPerson&&(f+=\"s\");let p=[c];for(;a.length>0&&a[0][0]===n;){let[,E]=a.shift();p.push(E)}p.sort();let h=p.shift();p.length===1?h+=\" (and one other)\":p.length>1&&(h+=` (and ${p.length} others)`),s.push(`${f} ${h}`)}return`${r}${s.join(\", \")}`}var lSt=\"Commit generated via `yarn stage`\",cSt=11;async function Ybe(e){let{code:t,stdout:r}=await qr.execvp(\"git\",[\"log\",\"-1\",\"--pretty=format:%H\"],{cwd:e});return t===0?r.trim():null}async function uSt(e,t){let r=[],s=t.filter(h=>K.basename(h.path)===\"package.json\");for(let{action:h,path:E}of s){let C=K.relative(e,E);if(h===4){let S=await Ybe(e),{stdout:x}=await qr.execvp(\"git\",[\"show\",`${S}:${C}`],{cwd:e,strict:!0}),I=await Ut.fromText(x),T=await Ut.fromFile(E),O=new Map([...T.dependencies,...T.devDependencies]),U=new Map([...I.dependencies,...I.devDependencies]);for(let[Y,te]of U){let ie=j.stringifyIdent(te),ue=O.get(Y);ue?ue.range!==te.range&&r.push([4,`${ie} to ${ue.range}`]):r.push([3,ie])}for(let[Y,te]of O)U.has(Y)||r.push([2,j.stringifyIdent(te)])}else if(h===0){let S=await Ut.fromFile(E);S.name?r.push([0,j.stringifyIdent(S.name)]):r.push([0,\"a package\"])}else if(h===1){let S=await Ybe(e),{stdout:x}=await qr.execvp(\"git\",[\"show\",`${S}:${C}`],{cwd:e,strict:!0}),I=await Ut.fromText(x);I.name?r.push([1,j.stringifyIdent(I.name)]):r.push([1,\"a package\"])}else throw new Error(\"Assertion failed: Unsupported action type\")}let{code:a,stdout:n}=await qr.execvp(\"git\",[\"log\",`-${cSt}`,\"--pretty=format:%s\"],{cwd:e}),c=a===0?n.split(/\\n/g).filter(h=>h!==\"\"):[],f=wJ(c);return BJ(f,r)}var fSt={0:[\" A \",\"?? \"],4:[\" M \"],1:[\" D \"]},ASt={0:[\"A  \"],4:[\"M  \"],1:[\"D  \"]},Kbe={async findRoot(e){return await EJ(e,{marker:\".git\"})},async filterChanges(e,t,r,s){let{stdout:a}=await qr.execvp(\"git\",[\"status\",\"-s\"],{cwd:e,strict:!0}),n=a.toString().split(/\\n/g),c=s?.staged?ASt:fSt;return[].concat(...n.map(p=>{if(p===\"\")return[];let h=p.slice(0,3),E=K.resolve(e,p.slice(3));if(!s?.staged&&h===\"?? \"&&p.endsWith(\"/\"))return CJ(E).map(C=>({action:0,path:C}));{let S=[0,4,1].find(x=>c[x].includes(h));return S!==void 0?[{action:S,path:E}]:[]}})).filter(p=>IJ(p.path,{roots:t,names:r}))},async genCommitMessage(e,t){return await uSt(e,t)},async makeStage(e,t){let r=t.map(s=>fe.fromPortablePath(s.path));await qr.execvp(\"git\",[\"add\",\"--\",...r],{cwd:e,strict:!0})},async makeCommit(e,t,r){let s=t.map(a=>fe.fromPortablePath(a.path));await qr.execvp(\"git\",[\"add\",\"-N\",\"--\",...s],{cwd:e,strict:!0}),await qr.execvp(\"git\",[\"commit\",\"-m\",`${r}\n\n${lSt}\n`,\"--\",...s],{cwd:e,strict:!0})},async makeReset(e,t){let r=t.map(s=>fe.fromPortablePath(s.path));await qr.execvp(\"git\",[\"reset\",\"HEAD\",\"--\",...r],{cwd:e,strict:!0})}};var pSt=[Kbe],F1=class extends At{constructor(){super(...arguments);this.commit=he.Boolean(\"-c,--commit\",!1,{description:\"Commit the staged files\"});this.reset=he.Boolean(\"-r,--reset\",!1,{description:\"Remove all files from the staging area\"});this.dryRun=he.Boolean(\"-n,--dry-run\",!1,{description:\"Print the commit message and the list of modified files without staging / committing\"});this.update=he.Boolean(\"-u,--update\",!1,{hidden:!0})}static{this.paths=[[\"stage\"]]}static{this.usage=at.Usage({description:\"add all yarn files to your vcs\",details:\"\\n      This command will add to your staging area the files belonging to Yarn (typically any modified `package.json` and `.yarnrc.yml` files, but also linker-generated files, cache data, etc). It will take your ignore list into account, so the cache files won't be added if the cache is ignored in a `.gitignore` file (assuming you use Git).\\n\\n      Running `--reset` will instead remove them from the staging area (the changes will still be there, but won't be committed until you stage them back).\\n\\n      Since the staging area is a non-existent concept in Mercurial, Yarn will always create a new commit when running this command on Mercurial repositories. You can get this behavior when using Git by using the `--commit` flag which will directly create a commit.\\n    \",examples:[[\"Adds all modified project files to the staging area\",\"yarn stage\"],[\"Creates a new commit containing all modified project files\",\"yarn stage --commit\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Rt.find(r,this.context.cwd),{driver:a,root:n}=await hSt(s.cwd),c=[r.get(\"cacheFolder\"),r.get(\"globalFolder\"),r.get(\"virtualFolder\"),r.get(\"yarnPath\")];await r.triggerHook(C=>C.populateYarnPaths,s,C=>{c.push(C)});let f=new Set;for(let C of c)for(let S of gSt(n,C))f.add(S);let p=new Set([r.get(\"rcFilename\"),Er.lockfile,Er.manifest]),h=await a.filterChanges(n,f,p),E=await a.genCommitMessage(n,h);if(this.dryRun)if(this.commit)this.context.stdout.write(`${E}\n`);else for(let C of h)this.context.stdout.write(`${fe.fromPortablePath(C.path)}\n`);else if(this.reset){let C=await a.filterChanges(n,f,p,{staged:!0});C.length===0?this.context.stdout.write(\"No staged changes found!\"):await a.makeReset(n,C)}else h.length===0?this.context.stdout.write(\"No changes found!\"):this.commit?await a.makeCommit(n,h,E):(await a.makeStage(n,h),this.context.stdout.write(E))}};async function hSt(e){let t=null,r=null;for(let s of pSt)if((r=await s.findRoot(e))!==null){t=s;break}if(t===null||r===null)throw new st(\"No stage driver has been found for your current project\");return{driver:t,root:r}}function gSt(e,t){let r=[];if(t===null)return r;for(;;){(t===e||t.startsWith(`${e}/`))&&r.push(t);let s;try{s=le.statSync(t)}catch{break}if(s.isSymbolicLink())t=K.resolve(K.dirname(t),le.readlinkSync(t));else break}return r}var dSt={commands:[F1]},mSt=dSt;var SJ={};Yt(SJ,{default:()=>SSt});qe();qe();Dt();var Zbe=et(pi());qe();var Jbe=et(Rq()),ySt=\"e8e1bd300d860104bb8c58453ffa1eb4\",ESt=\"OFCNCOG2CU\",zbe=async(e,t)=>{let r=j.stringifyIdent(e),a=ISt(t).initIndex(\"npm-search\");try{return(await a.getObject(r,{attributesToRetrieve:[\"types\"]})).types?.ts===\"definitely-typed\"}catch{return!1}},ISt=e=>(0,Jbe.default)(ESt,ySt,{requester:{async send(r){try{let s=await nn.request(r.url,r.data||null,{configuration:e,headers:r.headers});return{content:s.body,isTimedOut:!1,status:s.statusCode}}catch(s){return{content:s.response.body,isTimedOut:!1,status:s.response.statusCode}}}}});var Xbe=e=>e.scope?`${e.scope}__${e.name}`:`${e.name}`,CSt=async(e,t,r,s)=>{if(r.scope===\"types\")return;let{project:a}=e,{configuration:n}=a;if(!(n.get(\"tsEnableAutoTypes\")??(le.existsSync(K.join(e.cwd,\"tsconfig.json\"))||le.existsSync(K.join(a.cwd,\"tsconfig.json\")))))return;let f=n.makeResolver(),p={project:a,resolver:f,report:new ki};if(!await zbe(r,n))return;let E=Xbe(r),C=j.parseRange(r.range).selector;if(!Fr.validRange(C)){let O=n.normalizeDependency(r),U=await f.getCandidates(O,{},p);C=j.parseRange(U[0].reference).selector}let S=Zbe.default.coerce(C);if(S===null)return;let x=`${$u.Modifier.CARET}${S.major}`,I=j.makeDescriptor(j.makeIdent(\"types\",E),x),T=Ge.mapAndFind(a.workspaces,O=>{let U=O.manifest.dependencies.get(r.identHash)?.descriptorHash,Y=O.manifest.devDependencies.get(r.identHash)?.descriptorHash;if(U!==r.descriptorHash&&Y!==r.descriptorHash)return Ge.mapAndFind.skip;let te=[];for(let ie of Ut.allDependencies){let ue=O.manifest[ie].get(I.identHash);typeof ue>\"u\"||te.push([ie,ue])}return te.length===0?Ge.mapAndFind.skip:te});if(typeof T<\"u\")for(let[O,U]of T)e.manifest[O].set(U.identHash,U);else{try{let O=n.normalizeDependency(I);if((await f.getCandidates(O,{},p)).length===0)return}catch{return}e.manifest[$u.Target.DEVELOPMENT].set(I.identHash,I)}},wSt=async(e,t,r)=>{if(r.scope===\"types\")return;let{project:s}=e,{configuration:a}=s;if(!(a.get(\"tsEnableAutoTypes\")??(le.existsSync(K.join(e.cwd,\"tsconfig.json\"))||le.existsSync(K.join(s.cwd,\"tsconfig.json\")))))return;let c=Xbe(r),f=j.makeIdent(\"types\",c);for(let p of Ut.allDependencies)typeof e.manifest[p].get(f.identHash)>\"u\"||e.manifest[p].delete(f.identHash)},BSt=(e,t)=>{t.publishConfig&&t.publishConfig.typings&&(t.typings=t.publishConfig.typings),t.publishConfig&&t.publishConfig.types&&(t.types=t.publishConfig.types)},vSt={configuration:{tsEnableAutoTypes:{description:\"Whether Yarn should auto-install @types/ dependencies on 'yarn add'\",type:\"BOOLEAN\",isNullable:!0,default:null}},hooks:{afterWorkspaceDependencyAddition:CSt,afterWorkspaceDependencyRemoval:wSt,beforeWorkspacePacking:BSt}},SSt=vSt;var kJ={};Yt(kJ,{VersionApplyCommand:()=>M1,VersionCheckCommand:()=>U1,VersionCommand:()=>_1,default:()=>kSt,versionUtils:()=>L1});qe();qe();Vt();var L1={};Yt(L1,{Decision:()=>N1,applyPrerelease:()=>$be,applyReleases:()=>xJ,applyStrategy:()=>sP,clearVersionFiles:()=>DJ,getUndecidedDependentWorkspaces:()=>aP,getUndecidedWorkspaces:()=>BL,openVersionFile:()=>O1,requireMoreDecisions:()=>bSt,resolveVersionFiles:()=>oP,suggestStrategy:()=>PJ,updateVersionFiles:()=>bJ,validateReleaseDecision:()=>Ey});qe();Dt();Bc();Vt();Jl();var QA=et(pi()),DSt=/^(>=|[~^]|)(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(-(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(\\.(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\\+[0-9a-zA-Z-]+(\\.[0-9a-zA-Z-]+)*)?$/,N1=(h=>(h.UNDECIDED=\"undecided\",h.DECLINE=\"decline\",h.MAJOR=\"major\",h.MINOR=\"minor\",h.PATCH=\"patch\",h.PREMAJOR=\"premajor\",h.PREMINOR=\"preminor\",h.PREPATCH=\"prepatch\",h.PRERELEASE=\"prerelease\",h))(N1||{});function Ey(e){let t=QA.default.valid(e);return t||Ge.validateEnum(I4(N1,\"UNDECIDED\"),e)}async function oP(e,{prerelease:t=null}={}){let r=new Map,s=e.configuration.get(\"deferredVersionFolder\");if(!le.existsSync(s))return r;let a=await le.readdirPromise(s);for(let n of a){if(!n.endsWith(\".yml\"))continue;let c=K.join(s,n),f=await le.readFilePromise(c,\"utf8\"),p=cs(f);for(let[h,E]of Object.entries(p.releases||{})){if(E===\"decline\")continue;let C=j.parseIdent(h),S=e.tryWorkspaceByIdent(C);if(S===null)throw new Error(`Assertion failed: Expected a release definition file to only reference existing workspaces (${K.basename(c)} references ${h})`);if(S.manifest.version===null)throw new Error(`Assertion failed: Expected the workspace to have a version (${j.prettyLocator(e.configuration,S.anchoredLocator)})`);let x=S.manifest.raw.stableVersion??S.manifest.version,I=r.get(S),T=sP(E===\"prerelease\"?S.manifest.version:x,Ey(E));if(T===null)throw new Error(`Assertion failed: Expected ${x} to support being bumped via strategy ${E}`);let O=typeof I<\"u\"?QA.default.gt(T,I)?T:I:T;r.set(S,O)}}return t&&(r=new Map([...r].map(([n,c])=>[n,$be(c,{current:n.manifest.version,prerelease:t})]))),r}async function DJ(e){let t=e.configuration.get(\"deferredVersionFolder\");le.existsSync(t)&&await le.removePromise(t)}async function bJ(e,t){let r=new Set(t),s=e.configuration.get(\"deferredVersionFolder\");if(!le.existsSync(s))return;let a=await le.readdirPromise(s);for(let n of a){if(!n.endsWith(\".yml\"))continue;let c=K.join(s,n),f=await le.readFilePromise(c,\"utf8\"),p=cs(f),h=p?.releases;if(h){for(let E of Object.keys(h)){let C=j.parseIdent(E),S=e.tryWorkspaceByIdent(C);(S===null||r.has(S))&&delete p.releases[E]}Object.keys(p.releases).length>0?await le.changeFilePromise(c,cl(new cl.PreserveOrdering(p))):await le.unlinkPromise(c)}}}async function O1(e,{allowEmpty:t=!1}={}){let r=e.configuration;if(r.projectCwd===null)throw new st(\"This command can only be run from within a Yarn project\");let s=await Oa.fetchRoot(r.projectCwd),a=s!==null?await Oa.fetchBase(s,{baseRefs:r.get(\"changesetBaseRefs\")}):null,n=s!==null?await Oa.fetchChangedFiles(s,{base:a.hash,project:e}):[],c=r.get(\"deferredVersionFolder\"),f=n.filter(x=>K.contains(c,x)!==null);if(f.length>1)throw new st(`Your current branch contains multiple versioning files; this isn't supported:\n- ${f.map(x=>fe.fromPortablePath(x)).join(`\n- `)}`);let p=new Set(Ge.mapAndFilter(n,x=>{let I=e.tryWorkspaceByFilePath(x);return I===null?Ge.mapAndFilter.skip:I}));if(f.length===0&&p.size===0&&!t)return null;let h=f.length===1?f[0]:K.join(c,`${Ln.makeHash(Math.random().toString()).slice(0,8)}.yml`),E=le.existsSync(h)?await le.readFilePromise(h,\"utf8\"):\"{}\",C=cs(E),S=new Map;for(let x of C.declined||[]){let I=j.parseIdent(x),T=e.getWorkspaceByIdent(I);S.set(T,\"decline\")}for(let[x,I]of Object.entries(C.releases||{})){let T=j.parseIdent(x),O=e.getWorkspaceByIdent(T);S.set(O,Ey(I))}return{project:e,root:s,baseHash:a!==null?a.hash:null,baseTitle:a!==null?a.title:null,changedFiles:new Set(n),changedWorkspaces:p,releaseRoots:new Set([...p].filter(x=>x.manifest.version!==null)),releases:S,async saveAll(){let x={},I=[],T=[];for(let O of e.workspaces){if(O.manifest.version===null)continue;let U=j.stringifyIdent(O.anchoredLocator),Y=S.get(O);Y===\"decline\"?I.push(U):typeof Y<\"u\"?x[U]=Ey(Y):p.has(O)&&T.push(U)}await le.mkdirPromise(K.dirname(h),{recursive:!0}),await le.changeFilePromise(h,cl(new cl.PreserveOrdering({releases:Object.keys(x).length>0?x:void 0,declined:I.length>0?I:void 0,undecided:T.length>0?T:void 0})))}}}function bSt(e){return BL(e).size>0||aP(e).length>0}function BL(e){let t=new Set;for(let r of e.changedWorkspaces)r.manifest.version!==null&&(e.releases.has(r)||t.add(r));return t}function aP(e,{include:t=new Set}={}){let r=[],s=new Map(Ge.mapAndFilter([...e.releases],([n,c])=>c===\"decline\"?Ge.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n])),a=new Map(Ge.mapAndFilter([...e.releases],([n,c])=>c!==\"decline\"?Ge.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n]));for(let n of e.project.workspaces)if(!(!t.has(n)&&(a.has(n.anchoredLocator.locatorHash)||s.has(n.anchoredLocator.locatorHash)))&&n.manifest.version!==null)for(let c of Ut.hardDependencies)for(let f of n.manifest.getForScope(c).values()){let p=e.project.tryWorkspaceByDescriptor(f);p!==null&&s.has(p.anchoredLocator.locatorHash)&&r.push([n,p])}return r}function PJ(e,t){let r=QA.default.clean(t);for(let s of Object.values(N1))if(s!==\"undecided\"&&s!==\"decline\"&&QA.default.inc(e,s)===r)return s;return null}function sP(e,t){if(QA.default.valid(t))return t;if(e===null)throw new st(`Cannot apply the release strategy \"${t}\" unless the workspace already has a valid version`);if(!QA.default.valid(e))throw new st(`Cannot apply the release strategy \"${t}\" on a non-semver version (${e})`);let r=QA.default.inc(e,t);if(r===null)throw new st(`Cannot apply the release strategy \"${t}\" on the specified version (${e})`);return r}function xJ(e,t,{report:r,exact:s}){let a=new Map;for(let n of e.workspaces)for(let c of Ut.allDependencies)for(let f of n.manifest[c].values()){let p=e.tryWorkspaceByDescriptor(f);if(p===null||!t.has(p))continue;Ge.getArrayWithDefault(a,p).push([n,c,f.identHash])}for(let[n,c]of t){let f=n.manifest.version;n.manifest.version=c,QA.default.prerelease(c)===null?delete n.manifest.raw.stableVersion:n.manifest.raw.stableVersion||(n.manifest.raw.stableVersion=f);let p=n.manifest.name!==null?j.stringifyIdent(n.manifest.name):null;r.reportInfo(0,`${j.prettyLocator(e.configuration,n.anchoredLocator)}: Bumped to ${c}`),r.reportJson({cwd:fe.fromPortablePath(n.cwd),ident:p,oldVersion:f,newVersion:c});let h=a.get(n);if(!(typeof h>\"u\"))for(let[E,C,S]of h){let x=E.manifest[C].get(S);if(typeof x>\"u\")throw new Error(\"Assertion failed: The dependency should have existed\");let I=x.range,T=!1;if(I.startsWith(Ii.protocol)&&(I=I.slice(Ii.protocol.length),T=!0,I===n.relativeCwd))continue;let O=I.match(DSt);if(!O){r.reportWarning(0,`Couldn't auto-upgrade range ${I} (in ${j.prettyLocator(e.configuration,E.anchoredLocator)})`);continue}let U=s?`${c}`:`${O[1]}${c}`;T&&(U=`${Ii.protocol}${U}`);let Y=j.makeDescriptor(x,U);E.manifest[C].set(S,Y)}}}var PSt=new Map([[\"%n\",{extract:e=>e.length>=1?[e[0],e.slice(1)]:null,generate:(e=0)=>`${e+1}`}]]);function $be(e,{current:t,prerelease:r}){let s=new QA.default.SemVer(t),a=s.prerelease.slice(),n=[];s.prerelease=[],s.format()!==e&&(a.length=0);let c=!0,f=r.split(/\\./g);for(let p of f){let h=PSt.get(p);if(typeof h>\"u\")n.push(p),a[0]===p?a.shift():c=!1;else{let E=c?h.extract(a):null;E!==null&&typeof E[0]==\"number\"?(n.push(h.generate(E[0])),a=E[1]):(n.push(h.generate()),c=!1)}}return s.prerelease&&(s.prerelease=[]),`${e}-${n.join(\".\")}`}var M1=class extends At{constructor(){super(...arguments);this.all=he.Boolean(\"--all\",!1,{description:\"Apply the deferred version changes on all workspaces\"});this.dryRun=he.Boolean(\"--dry-run\",!1,{description:\"Print the versions without actually generating the package archive\"});this.prerelease=he.String(\"--prerelease\",{description:\"Add a prerelease identifier to new versions\",tolerateBoolean:!0});this.exact=he.Boolean(\"--exact\",!1,{description:\"Use the exact version of each package, removes any range. Useful for nightly releases where the range might match another version.\"});this.recursive=he.Boolean(\"-R,--recursive\",{description:\"Release the transitive workspaces as well\"});this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"version\",\"apply\"]]}static{this.usage=at.Usage({category:\"Release-related commands\",description:\"apply all the deferred version bumps at once\",details:`\n      This command will apply the deferred version changes and remove their definitions from the repository.\n\n      Note that if \\`--prerelease\\` is set, the given prerelease identifier (by default \\`rc.%n\\`) will be used on all new versions and the version definitions will be kept as-is.\n\n      By default only the current workspace will be bumped, but you can configure this behavior by using one of:\n\n      - \\`--recursive\\` to also apply the version bump on its dependencies\n      - \\`--all\\` to apply the version bump on all packages in the repository\n\n      Note that this command will also update the \\`workspace:\\` references across all your local workspaces, thus ensuring that they keep referring to the same workspaces even after the version bump.\n    `,examples:[[\"Apply the version change to the local workspace\",\"yarn version apply\"],[\"Apply the version change to all the workspaces in the local workspace\",\"yarn version apply --all\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let p=this.prerelease?typeof this.prerelease!=\"boolean\"?this.prerelease:\"rc.%n\":null,h=await oP(s,{prerelease:p}),E=new Map;if(this.all)E=h;else{let C=this.recursive?a.getRecursiveWorkspaceDependencies():[a];for(let S of C){let x=h.get(S);typeof x<\"u\"&&E.set(S,x)}}if(E.size===0){let C=h.size>0?\" Did you want to add --all?\":\"\";f.reportWarning(0,`The current workspace doesn't seem to require a version bump.${C}`);return}xJ(s,E,{report:f,exact:this.exact}),this.dryRun||(p||(this.all?await DJ(s):await bJ(s,[...E.keys()])),f.reportSeparator())});return this.dryRun||c.hasErrors()?c.exitCode():await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};qe();Dt();Vt();var vL=et(pi());var U1=class extends At{constructor(){super(...arguments);this.interactive=he.Boolean(\"-i,--interactive\",{description:\"Open an interactive interface used to set version bumps\"})}static{this.paths=[[\"version\",\"check\"]]}static{this.usage=at.Usage({category:\"Release-related commands\",description:\"check that all the relevant packages have been bumped\",details:\"\\n      **Warning:** This command currently requires Git.\\n\\n      This command will check that all the packages covered by the files listed in argument have been properly bumped or declined to bump.\\n\\n      In the case of a bump, the check will also cover transitive packages - meaning that should `Foo` be bumped, a package `Bar` depending on `Foo` will require a decision as to whether `Bar` will need to be bumped. This check doesn't cross packages that have declined to bump.\\n\\n      In case no arguments are passed to the function, the list of modified files will be generated by comparing the HEAD against `master`.\\n    \",examples:[[\"Check whether the modified packages need a bump\",\"yarn version check\"]]})}async execute(){return this.interactive?await this.executeInteractive():await this.executeStandard()}async executeInteractive(){JC(this.context);let{Gem:r}=await Promise.resolve().then(()=>(xF(),eW)),{ScrollableItems:s}=await Promise.resolve().then(()=>(TF(),RF)),{FocusRequest:a}=await Promise.resolve().then(()=>(nW(),uwe)),{useListInput:n}=await Promise.resolve().then(()=>(QF(),fwe)),{renderForm:c}=await Promise.resolve().then(()=>(LF(),OF)),{Box:f,Text:p}=await Promise.resolve().then(()=>et(Gc())),{default:h,useCallback:E,useState:C}=await Promise.resolve().then(()=>et(gn())),S=await ze.find(this.context.cwd,this.context.plugins),{project:x,workspace:I}=await Rt.find(S,this.context.cwd);if(!I)throw new ar(x.cwd,this.context.cwd);await x.restoreInstallState();let T=await O1(x);if(T===null||T.releaseRoots.size===0)return 0;if(T.root===null)throw new st(\"This command can only be run on Git repositories\");let O=()=>h.createElement(f,{flexDirection:\"row\",paddingBottom:1},h.createElement(f,{flexDirection:\"column\",width:60},h.createElement(f,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to select workspaces.\")),h.createElement(f,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<left>\"),\"/\",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<right>\"),\" to select release strategies.\"))),h.createElement(f,{flexDirection:\"column\"},h.createElement(f,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to save.\")),h.createElement(f,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),U=({workspace:de,active:Ae,decision:Ce,setDecision:Ee})=>{let g=de.manifest.raw.stableVersion??de.manifest.version;if(g===null)throw new Error(`Assertion failed: The version should have been set (${j.prettyLocator(S,de.anchoredLocator)})`);if(vL.default.prerelease(g)!==null)throw new Error(`Assertion failed: Prerelease identifiers shouldn't be found (${g})`);let Se=[\"undecided\",\"decline\",\"patch\",\"minor\",\"major\"];n(Ce,Se,{active:Ae,minus:\"left\",plus:\"right\",set:Ee});let Be=Ce===\"undecided\"?h.createElement(p,{color:\"yellow\"},g):Ce===\"decline\"?h.createElement(p,{color:\"green\"},g):h.createElement(p,null,h.createElement(p,{color:\"magenta\"},g),\" \\u2192 \",h.createElement(p,{color:\"green\"},vL.default.valid(Ce)?Ce:vL.default.inc(g,Ce)));return h.createElement(f,{flexDirection:\"column\"},h.createElement(f,null,h.createElement(p,null,j.prettyLocator(S,de.anchoredLocator),\" - \",Be)),h.createElement(f,null,Se.map(me=>h.createElement(f,{key:me,paddingLeft:2},h.createElement(p,null,h.createElement(r,{active:me===Ce}),\" \",me)))))},Y=de=>{let Ae=new Set(T.releaseRoots),Ce=new Map([...de].filter(([Ee])=>Ae.has(Ee)));for(;;){let Ee=aP({project:T.project,releases:Ce}),g=!1;if(Ee.length>0){for(let[Se]of Ee)if(!Ae.has(Se)){Ae.add(Se),g=!0;let Be=de.get(Se);typeof Be<\"u\"&&Ce.set(Se,Be)}}if(!g)break}return{relevantWorkspaces:Ae,relevantReleases:Ce}},te=()=>{let[de,Ae]=C(()=>new Map(T.releases)),Ce=E((Ee,g)=>{let Se=new Map(de);g!==\"undecided\"?Se.set(Ee,g):Se.delete(Ee);let{relevantReleases:Be}=Y(Se);Ae(Be)},[de,Ae]);return[de,Ce]},ie=({workspaces:de,releases:Ae})=>{let Ce=[];Ce.push(`${de.size} total`);let Ee=0,g=0;for(let Se of de){let Be=Ae.get(Se);typeof Be>\"u\"?g+=1:Be!==\"decline\"&&(Ee+=1)}return Ce.push(`${Ee} release${Ee===1?\"\":\"s\"}`),Ce.push(`${g} remaining`),h.createElement(p,{color:\"yellow\"},Ce.join(\", \"))},ae=await c(({useSubmit:de})=>{let[Ae,Ce]=te();de(Ae);let{relevantWorkspaces:Ee}=Y(Ae),g=new Set([...Ee].filter(ce=>!T.releaseRoots.has(ce))),[Se,Be]=C(0),me=E(ce=>{switch(ce){case a.BEFORE:Be(Se-1);break;case a.AFTER:Be(Se+1);break}},[Se,Be]);return h.createElement(f,{flexDirection:\"column\"},h.createElement(O,null),h.createElement(f,null,h.createElement(p,{wrap:\"wrap\"},\"The following files have been modified in your local checkout.\")),h.createElement(f,{flexDirection:\"column\",marginTop:1,paddingLeft:2},[...T.changedFiles].map(ce=>h.createElement(f,{key:ce},h.createElement(p,null,h.createElement(p,{color:\"grey\"},fe.fromPortablePath(T.root)),fe.sep,fe.relative(fe.fromPortablePath(T.root),fe.fromPortablePath(ce)))))),T.releaseRoots.size>0&&h.createElement(h.Fragment,null,h.createElement(f,{marginTop:1},h.createElement(p,{wrap:\"wrap\"},\"Because of those files having been modified, the following workspaces may need to be released again (note that private workspaces are also shown here, because even though they won't be published, releasing them will allow us to flag their dependents for potential re-release):\")),g.size>3?h.createElement(f,{marginTop:1},h.createElement(ie,{workspaces:T.releaseRoots,releases:Ae})):null,h.createElement(f,{marginTop:1,flexDirection:\"column\"},h.createElement(s,{active:Se%2===0,radius:1,size:2,onFocusRequest:me},[...T.releaseRoots].map(ce=>h.createElement(U,{key:ce.cwd,workspace:ce,decision:Ae.get(ce)||\"undecided\",setDecision:X=>Ce(ce,X)}))))),g.size>0?h.createElement(h.Fragment,null,h.createElement(f,{marginTop:1},h.createElement(p,{wrap:\"wrap\"},\"The following workspaces depend on other workspaces that have been marked for release, and thus may need to be released as well:\")),h.createElement(f,null,h.createElement(p,null,\"(Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<tab>\"),\" to move the focus between the workspace groups.)\")),g.size>5?h.createElement(f,{marginTop:1},h.createElement(ie,{workspaces:g,releases:Ae})):null,h.createElement(f,{marginTop:1,flexDirection:\"column\"},h.createElement(s,{active:Se%2===1,radius:2,size:2,onFocusRequest:me},[...g].map(ce=>h.createElement(U,{key:ce.cwd,workspace:ce,decision:Ae.get(ce)||\"undecided\",setDecision:X=>Ce(ce,X)}))))):null)},{versionFile:T},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ae>\"u\")return 1;T.releases.clear();for(let[de,Ae]of ae)T.releases.set(de,Ae);await T.saveAll()}async executeStandard(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);return await s.restoreInstallState(),(await Ot.start({configuration:r,stdout:this.context.stdout},async c=>{let f=await O1(s);if(f===null||f.releaseRoots.size===0)return;if(f.root===null)throw new st(\"This command can only be run on Git repositories\");if(c.reportInfo(0,`Your PR was started right after ${pe.pretty(r,f.baseHash.slice(0,7),\"yellow\")} ${pe.pretty(r,f.baseTitle,\"magenta\")}`),f.changedFiles.size>0){c.reportInfo(0,\"You have changed the following files since then:\"),c.reportSeparator();for(let S of f.changedFiles)c.reportInfo(null,`${pe.pretty(r,fe.fromPortablePath(f.root),\"gray\")}${fe.sep}${fe.relative(fe.fromPortablePath(f.root),fe.fromPortablePath(S))}`)}let p=!1,h=!1,E=BL(f);if(E.size>0){p||c.reportSeparator();for(let S of E)c.reportError(0,`${j.prettyLocator(r,S.anchoredLocator)} has been modified but doesn't have a release strategy attached`);p=!0}let C=aP(f);for(let[S,x]of C)h||c.reportSeparator(),c.reportError(0,`${j.prettyLocator(r,S.anchoredLocator)} doesn't have a release strategy attached, but depends on ${j.prettyWorkspace(r,x)} which is planned for release.`),h=!0;(p||h)&&(c.reportSeparator(),c.reportInfo(0,\"This command detected that at least some workspaces have received modifications without explicit instructions as to how they had to be released (if needed).\"),c.reportInfo(0,\"To correct these errors, run `yarn version check --interactive` then follow the instructions.\"))})).exitCode()}};qe();Vt();var SL=et(pi());var _1=class extends At{constructor(){super(...arguments);this.deferred=he.Boolean(\"-d,--deferred\",{description:\"Prepare the version to be bumped during the next release cycle\"});this.immediate=he.Boolean(\"-i,--immediate\",{description:\"Bump the version immediately\"});this.strategy=he.String()}static{this.paths=[[\"version\"]]}static{this.usage=at.Usage({category:\"Release-related commands\",description:\"apply a new version to the current package\",details:\"\\n      This command will bump the version number for the given package, following the specified strategy:\\n\\n      - If `major`, the first number from the semver range will be increased (`X.0.0`).\\n      - If `minor`, the second number from the semver range will be increased (`0.X.0`).\\n      - If `patch`, the third number from the semver range will be increased (`0.0.X`).\\n      - If prefixed by `pre` (`premajor`, ...), a `-0` suffix will be set (`0.0.0-0`).\\n      - If `prerelease`, the suffix will be increased (`0.0.0-X`); the third number from the semver range will also be increased if there was no suffix in the previous version.\\n      - If `decline`, the nonce will be increased for `yarn version check` to pass without version bump.\\n      - If a valid semver range, it will be used as new version.\\n      - If unspecified, Yarn will ask you for guidance.\\n\\n      For more information about the `--deferred` flag, consult our documentation (https://yarnpkg.com/features/release-workflow#deferred-versioning).\\n    \",examples:[[\"Immediately bump the version to the next major\",\"yarn version major\"],[\"Prepare the version to be bumped to the next major\",\"yarn version major --deferred\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=r.get(\"preferDeferredVersions\");this.deferred&&(n=!0),this.immediate&&(n=!1);let c=SL.default.valid(this.strategy),f=this.strategy===\"decline\",p;if(c)if(a.manifest.version!==null){let E=PJ(a.manifest.version,this.strategy);E!==null?p=E:p=this.strategy}else p=this.strategy;else{let E=a.manifest.version;if(!f){if(E===null)throw new st(\"Can't bump the version if there wasn't a version to begin with - use 0.0.0 as initial version then run the command again.\");if(typeof E!=\"string\"||!SL.default.valid(E))throw new st(`Can't bump the version (${E}) if it's not valid semver`)}p=Ey(this.strategy)}if(!n){let C=(await oP(s)).get(a);if(typeof C<\"u\"&&p!==\"decline\"){let S=sP(a.manifest.version,p);if(SL.default.lt(S,C))throw new st(`Can't bump the version to one that would be lower than the current deferred one (${C})`)}}let h=await O1(s,{allowEmpty:!0});return h.releases.set(a,p),await h.saveAll(),n?0:await this.cli.run([\"version\",\"apply\"])}};var xSt={configuration:{deferredVersionFolder:{description:\"Folder where are stored the versioning files\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/versions\"},preferDeferredVersions:{description:\"If true, running `yarn version` will assume the `--deferred` flag unless `--immediate` is set\",type:\"BOOLEAN\",default:!1}},commands:[M1,U1,_1]},kSt=xSt;var QJ={};Yt(QJ,{WorkspacesFocusCommand:()=>H1,WorkspacesForeachCommand:()=>G1,default:()=>TSt});qe();qe();Vt();var H1=class extends At{constructor(){super(...arguments);this.json=he.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.production=he.Boolean(\"--production\",!1,{description:\"Only install regular dependencies by omitting dev dependencies\"});this.all=he.Boolean(\"-A,--all\",!1,{description:\"Install the entire project\"});this.workspaces=he.Rest()}static{this.paths=[[\"workspaces\",\"focus\"]]}static{this.usage=at.Usage({category:\"Workspace-related commands\",description:\"install a single workspace and its dependencies\",details:\"\\n      This command will run an install as if the specified workspaces (and all other workspaces they depend on) were the only ones in the project. If no workspaces are explicitly listed, the active one will be assumed.\\n\\n      Note that this command is only very moderately useful when using zero-installs, since the cache will contain all the packages anyway - meaning that the only difference between a full install and a focused install would just be a few extra lines in the `.pnp.cjs` file, at the cost of introducing an extra complexity.\\n\\n      If the `-A,--all` flag is set, the entire project will be installed. Combine with `--production` to replicate the old `yarn install --production`.\\n    \"})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd),n=await Jr.find(r);await s.restoreInstallState({restoreResolutions:!1});let c;if(this.all)c=new Set(s.workspaces);else if(this.workspaces.length===0){if(!a)throw new ar(s.cwd,this.context.cwd);c=new Set([a])}else c=new Set(this.workspaces.map(f=>s.getWorkspaceByIdent(j.parseIdent(f))));for(let f of c)for(let p of this.production?[\"dependencies\"]:Ut.hardDependencies)for(let h of f.manifest.getForScope(p).values()){let E=s.tryWorkspaceByDescriptor(h);E!==null&&c.add(E)}for(let f of s.workspaces)c.has(f)?this.production&&f.manifest.devDependencies.clear():(f.manifest.installConfig=f.manifest.installConfig||{},f.manifest.installConfig.selfReferences=!1,f.manifest.dependencies.clear(),f.manifest.devDependencies.clear(),f.manifest.peerDependencies.clear(),f.manifest.scripts.clear());return await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n,persistProject:!1})}};qe();qe();qe();Vt();var j1=et(Jo()),tPe=et(Nd());ul();var G1=class extends At{constructor(){super(...arguments);this.from=he.Array(\"--from\",{description:\"An array of glob pattern idents or paths from which to base any recursion\"});this.all=he.Boolean(\"-A,--all\",{description:\"Run the command on all workspaces of a project\"});this.recursive=he.Boolean(\"-R,--recursive\",{description:\"Run the command on the current workspace and all of its recursive dependencies\"});this.worktree=he.Boolean(\"-W,--worktree\",{description:\"Run the command on all workspaces of the current worktree\"});this.verbose=he.Counter(\"-v,--verbose\",{description:\"Increase level of logging verbosity up to 2 times\"});this.parallel=he.Boolean(\"-p,--parallel\",!1,{description:\"Run the commands in parallel\"});this.interlaced=he.Boolean(\"-i,--interlaced\",!1,{description:\"Print the output of commands in real-time instead of buffering it\"});this.jobs=he.String(\"-j,--jobs\",{description:\"The maximum number of parallel tasks that the execution will be limited to; or `unlimited`\",validator:$U([ks([\"unlimited\"]),WB(XU(),[t_(),e_(1)])])});this.topological=he.Boolean(\"-t,--topological\",!1,{description:\"Run the command after all workspaces it depends on (regular) have finished\"});this.topologicalDev=he.Boolean(\"--topological-dev\",!1,{description:\"Run the command after all workspaces it depends on (regular + dev) have finished\"});this.include=he.Array(\"--include\",[],{description:\"An array of glob pattern idents or paths; only matching workspaces will be traversed\"});this.exclude=he.Array(\"--exclude\",[],{description:\"An array of glob pattern idents or paths; matching workspaces won't be traversed\"});this.publicOnly=he.Boolean(\"--no-private\",{description:\"Avoid running the command on private workspaces\"});this.since=he.String(\"--since\",{description:\"Only include workspaces that have been changed since the specified ref.\",tolerateBoolean:!0});this.dryRun=he.Boolean(\"-n,--dry-run\",{description:\"Print the commands that would be run, without actually running them\"});this.commandName=he.String();this.args=he.Proxy()}static{this.paths=[[\"workspaces\",\"foreach\"]]}static{this.usage=at.Usage({category:\"Workspace-related commands\",description:\"run a command on all workspaces\",details:\"\\n      This command will run a given sub-command on current and all its descendant workspaces. Various flags can alter the exact behavior of the command:\\n\\n      - If `-p,--parallel` is set, the commands will be ran in parallel; they'll by default be limited to a number of parallel tasks roughly equal to half your core number, but that can be overridden via `-j,--jobs`, or disabled by setting `-j unlimited`.\\n\\n      - If `-p,--parallel` and `-i,--interlaced` are both set, Yarn will print the lines from the output as it receives them. If `-i,--interlaced` wasn't set, it would instead buffer the output from each process and print the resulting buffers only after their source processes have exited.\\n\\n      - If `-t,--topological` is set, Yarn will only run the command after all workspaces that it depends on through the `dependencies` field have successfully finished executing. If `--topological-dev` is set, both the `dependencies` and `devDependencies` fields will be considered when figuring out the wait points.\\n\\n      - If `-A,--all` is set, Yarn will run the command on all the workspaces of a project.\\n\\n      - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\\n\\n      - If `-W,--worktree` is set, Yarn will find workspaces to run the command on by looking at the current worktree.\\n\\n      - If `--from` is set, Yarn will use the packages matching the 'from' glob as the starting point for any recursive search.\\n\\n      - If `--since` is set, Yarn will only run the command on workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\\n\\n      - If `--dry-run` is set, Yarn will explain what it would do without actually doing anything.\\n\\n      - The command may apply to only some workspaces through the use of `--include` which acts as a whitelist. The `--exclude` flag will do the opposite and will be a list of packages that mustn't execute the script. Both flags accept glob patterns (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. You can also use the `--no-private` flag to avoid running the command in private workspaces.\\n\\n      The `-v,--verbose` flag can be passed up to twice: once to prefix output lines with the originating workspace's name, and again to include start/finish/timing log lines. Maximum verbosity is enabled by default in terminal environments.\\n\\n      If the command is `run` and the script being run does not exist the child workspace will be skipped without error.\\n    \",examples:[[\"Publish all packages\",\"yarn workspaces foreach -A --no-private npm publish --tolerate-republish\"],[\"Run the build script on all descendant packages\",\"yarn workspaces foreach -A run build\"],[\"Run the build script on current and all descendant packages in parallel, building package dependencies first\",\"yarn workspaces foreach -Apt run build\"],[\"Run the build script on several packages and all their dependencies, building dependencies first\",\"yarn workspaces foreach -Rpt --from '{workspace-a,workspace-b}' run build\"]]})}static{this.schema=[YB(\"all\",Vf.Forbids,[\"from\",\"recursive\",\"since\",\"worktree\"],{missingIf:\"undefined\"}),r_([\"all\",\"recursive\",\"since\",\"worktree\"],{missingIf:\"undefined\"})]}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Rt.find(r,this.context.cwd);if(!this.all&&!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=this.cli.process([this.commandName,...this.args]),c=n.path.length===1&&n.path[0]===\"run\"&&typeof n.scriptName<\"u\"?n.scriptName:null;if(n.path.length===0)throw new st(\"Invalid subcommand name for iteration - use the 'run' keyword if you wish to execute a script\");let f=Ee=>{this.dryRun&&this.context.stdout.write(`${Ee}\n`)},p=()=>{let Ee=this.from.map(g=>j1.default.matcher(g));return s.workspaces.filter(g=>{let Se=j.stringifyIdent(g.anchoredLocator),Be=g.relativeCwd;return Ee.some(me=>me(Se)||me(Be))})},h=[];if(this.since?(f(\"Option --since is set; selecting the changed workspaces as root for workspace selection\"),h=Array.from(await Oa.fetchChangedWorkspaces({ref:this.since,project:s}))):this.from?(f(\"Option --from is set; selecting the specified workspaces\"),h=[...p()]):this.worktree?(f(\"Option --worktree is set; selecting the current workspace\"),h=[a]):this.recursive?(f(\"Option --recursive is set; selecting the current workspace\"),h=[a]):this.all&&(f(\"Option --all is set; selecting all workspaces\"),h=[...s.workspaces]),this.dryRun&&!this.all){for(let Ee of h)f(`\n- ${Ee.relativeCwd}\n  ${j.prettyLocator(r,Ee.anchoredLocator)}`);h.length>0&&f(\"\")}let E;if(this.recursive?this.since?(f(\"Option --recursive --since is set; recursively selecting all dependent workspaces\"),E=new Set(h.map(Ee=>[...Ee.getRecursiveWorkspaceDependents()]).flat())):(f(\"Option --recursive is set; recursively selecting all transitive dependencies\"),E=new Set(h.map(Ee=>[...Ee.getRecursiveWorkspaceDependencies()]).flat())):this.worktree?(f(\"Option --worktree is set; recursively selecting all nested workspaces\"),E=new Set(h.map(Ee=>[...Ee.getRecursiveWorkspaceChildren()]).flat())):E=null,E!==null&&(h=[...new Set([...h,...E])],this.dryRun))for(let Ee of E)f(`\n- ${Ee.relativeCwd}\n  ${j.prettyLocator(r,Ee.anchoredLocator)}`);let C=[],S=!1;if(c?.includes(\":\")){for(let Ee of s.workspaces)if(Ee.manifest.scripts.has(c)&&(S=!S,S===!1))break}for(let Ee of h){if(c&&!Ee.manifest.scripts.has(c)&&!S&&!(await Cn.getWorkspaceAccessibleBinaries(Ee)).has(c)){f(`Excluding ${Ee.relativeCwd} because it doesn't have a \"${c}\" script`);continue}if(!(c===r.env.npm_lifecycle_event&&Ee.cwd===a.cwd)){if(this.include.length>0&&!j1.default.isMatch(j.stringifyIdent(Ee.anchoredLocator),this.include)&&!j1.default.isMatch(Ee.relativeCwd,this.include)){f(`Excluding ${Ee.relativeCwd} because it doesn't match the --include filter`);continue}if(this.exclude.length>0&&(j1.default.isMatch(j.stringifyIdent(Ee.anchoredLocator),this.exclude)||j1.default.isMatch(Ee.relativeCwd,this.exclude))){f(`Excluding ${Ee.relativeCwd} because it matches the --exclude filter`);continue}if(this.publicOnly&&Ee.manifest.private===!0){f(`Excluding ${Ee.relativeCwd} because it's a private workspace and --no-private was set`);continue}C.push(Ee)}}if(C.sort((Ee,g)=>j.stringifyIdent(Ee.anchoredLocator).localeCompare(j.stringifyIdent(g.anchoredLocator))),this.dryRun)return 0;let x=this.verbose??(this.context.stdout.isTTY?1/0:0),I=x>0,T=x>1,O=this.parallel?this.jobs===\"unlimited\"?1/0:Number(this.jobs)||Math.ceil(Ui.availableParallelism()/2):1,U=O===1?!1:this.parallel,Y=U?this.interlaced:!0,te=(0,tPe.default)(O),ie=new Map,ue=new Set,ae=0,de=null,Ae=!1,Ce=await Ot.start({configuration:r,stdout:this.context.stdout,includePrefix:!1},async Ee=>{let g=async(Se,{commandIndex:Be})=>{if(Ae)return-1;!U&&T&&Be>1&&Ee.reportSeparator();let me=QSt(Se,{configuration:r,label:I,commandIndex:Be}),[ce,X]=ePe(Ee,{prefix:me,interlaced:Y}),[De,Qe]=ePe(Ee,{prefix:me,interlaced:Y});try{T&&Ee.reportInfo(null,`${me?`${me} `:\"\"}Process started`);let it=Date.now(),_=await this.cli.run([this.commandName,...this.args],{cwd:Se.cwd,stdout:ce,stderr:De})||0;ce.end(),De.end(),await X,await Qe;let tt=Date.now();if(T){let Ne=r.get(\"enableTimers\")?`, completed in ${pe.pretty(r,tt-it,pe.Type.DURATION)}`:\"\";Ee.reportInfo(null,`${me?`${me} `:\"\"}Process exited (exit code ${_})${Ne}`)}return _===130&&(Ae=!0,de=_),_}catch(it){throw ce.end(),De.end(),await X,await Qe,it}};for(let Se of C)ie.set(Se.anchoredLocator.locatorHash,Se);for(;ie.size>0&&!Ee.hasErrors();){let Se=[];for(let[X,De]of ie){if(ue.has(De.anchoredDescriptor.descriptorHash))continue;let Qe=!0;if(this.topological||this.topologicalDev){let it=this.topologicalDev?new Map([...De.manifest.dependencies,...De.manifest.devDependencies]):De.manifest.dependencies;for(let _ of it.values()){let tt=s.tryWorkspaceByDescriptor(_);if(Qe=tt===null||!ie.has(tt.anchoredLocator.locatorHash),!Qe)break}}if(Qe&&(ue.add(De.anchoredDescriptor.descriptorHash),Se.push(te(async()=>{let it=await g(De,{commandIndex:++ae});return ie.delete(X),ue.delete(De.anchoredDescriptor.descriptorHash),{workspace:De,exitCode:it}})),!U))break}if(Se.length===0){let X=Array.from(ie.values()).map(De=>j.prettyLocator(r,De.anchoredLocator)).join(\", \");Ee.reportError(3,`Dependency cycle detected (${X})`);return}let Be=await Promise.all(Se);Be.forEach(({workspace:X,exitCode:De})=>{De!==0&&Ee.reportError(0,`The command failed in workspace ${j.prettyLocator(r,X.anchoredLocator)} with exit code ${De}`)});let ce=Be.map(X=>X.exitCode).find(X=>X!==0);(this.topological||this.topologicalDev)&&typeof ce<\"u\"&&Ee.reportError(0,\"The command failed for workspaces that are depended upon by other workspaces; can't satisfy the dependency graph\")}});return de!==null?de:Ce.exitCode()}};function ePe(e,{prefix:t,interlaced:r}){let s=e.createStreamReporter(t),a=new Ge.DefaultStream;a.pipe(s,{end:!1}),a.on(\"finish\",()=>{s.end()});let n=new Promise(f=>{s.on(\"finish\",()=>{f(a.active)})});if(r)return[a,n];let c=new Ge.BufferStream;return c.pipe(a,{end:!1}),c.on(\"finish\",()=>{a.end()}),[c,n]}function QSt(e,{configuration:t,commandIndex:r,label:s}){if(!s)return null;let n=`[${j.stringifyIdent(e.anchoredLocator)}]:`,c=[\"#2E86AB\",\"#A23B72\",\"#F18F01\",\"#C73E1D\",\"#CCE2A3\"],f=c[r%c.length];return pe.pretty(t,n,f)}var RSt={commands:[H1,G1]},TSt=RSt;var VI=()=>({modules:new Map([[\"@yarnpkg/cli\",Gv],[\"@yarnpkg/core\",jv],[\"@yarnpkg/fslib\",RB],[\"@yarnpkg/libzip\",nv],[\"@yarnpkg/parsers\",_B],[\"@yarnpkg/shell\",cv],[\"clipanion\",XB],[\"semver\",FSt],[\"typanion\",Yo],[\"@yarnpkg/plugin-essentials\",Q5],[\"@yarnpkg/plugin-catalog\",N5],[\"@yarnpkg/plugin-compat\",_5],[\"@yarnpkg/plugin-constraints\",nq],[\"@yarnpkg/plugin-dlx\",iq],[\"@yarnpkg/plugin-exec\",aq],[\"@yarnpkg/plugin-file\",cq],[\"@yarnpkg/plugin-git\",k5],[\"@yarnpkg/plugin-github\",Aq],[\"@yarnpkg/plugin-http\",pq],[\"@yarnpkg/plugin-init\",hq],[\"@yarnpkg/plugin-interactive-tools\",fW],[\"@yarnpkg/plugin-jsr\",pW],[\"@yarnpkg/plugin-link\",hW],[\"@yarnpkg/plugin-nm\",ZW],[\"@yarnpkg/plugin-npm\",ZK],[\"@yarnpkg/plugin-npm-cli\",aJ],[\"@yarnpkg/plugin-pack\",qV],[\"@yarnpkg/plugin-patch\",hJ],[\"@yarnpkg/plugin-pnp\",UW],[\"@yarnpkg/plugin-pnpm\",mJ],[\"@yarnpkg/plugin-stage\",vJ],[\"@yarnpkg/plugin-typescript\",SJ],[\"@yarnpkg/plugin-version\",kJ],[\"@yarnpkg/plugin-workspace-tools\",QJ]]),plugins:new Set([\"@yarnpkg/plugin-essentials\",\"@yarnpkg/plugin-catalog\",\"@yarnpkg/plugin-compat\",\"@yarnpkg/plugin-constraints\",\"@yarnpkg/plugin-dlx\",\"@yarnpkg/plugin-exec\",\"@yarnpkg/plugin-file\",\"@yarnpkg/plugin-git\",\"@yarnpkg/plugin-github\",\"@yarnpkg/plugin-http\",\"@yarnpkg/plugin-init\",\"@yarnpkg/plugin-interactive-tools\",\"@yarnpkg/plugin-jsr\",\"@yarnpkg/plugin-link\",\"@yarnpkg/plugin-nm\",\"@yarnpkg/plugin-npm\",\"@yarnpkg/plugin-npm-cli\",\"@yarnpkg/plugin-pack\",\"@yarnpkg/plugin-patch\",\"@yarnpkg/plugin-pnp\",\"@yarnpkg/plugin-pnpm\",\"@yarnpkg/plugin-stage\",\"@yarnpkg/plugin-typescript\",\"@yarnpkg/plugin-version\",\"@yarnpkg/plugin-workspace-tools\"])});function iPe({cwd:e,pluginConfiguration:t}){let r=new va({binaryLabel:\"Yarn Package Manager\",binaryName:\"yarn\",binaryVersion:An??\"<unknown>\"});return Object.assign(r,{defaultContext:{...va.defaultContext,cwd:e,plugins:t,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr}})}function NSt(e){if(Ge.parseOptionalBoolean(process.env.YARN_IGNORE_NODE))return!0;let r=process.versions.node,s=\">=18.12.0\";if(Fr.satisfiesWithPrereleases(r,s))return!0;let a=new st(`This tool requires a Node version compatible with ${s} (got ${r}). Upgrade Node, or set \\`YARN_IGNORE_NODE=1\\` in your environment.`);return va.defaultContext.stdout.write(e.error(a)),!1}async function sPe({selfPath:e,pluginConfiguration:t}){return await ze.find(fe.toPortablePath(process.cwd()),t,{strict:!1,usePathCheck:e})}function OSt(e,t,{yarnPath:r}){if(!le.existsSync(r))return e.error(new Error(`The \"yarn-path\" option has been set, but the specified location doesn't exist (${r}).`)),1;process.on(\"SIGINT\",()=>{});let s={stdio:\"inherit\",env:{...process.env,YARN_IGNORE_PATH:\"1\"}};try{(0,rPe.execFileSync)(process.execPath,[fe.fromPortablePath(r),...t],s)}catch(a){return a.status??1}return 0}function LSt(e,t){let r=null,s=t;return t.length>=2&&t[0]===\"--cwd\"?(r=fe.toPortablePath(t[1]),s=t.slice(2)):t.length>=1&&t[0].startsWith(\"--cwd=\")?(r=fe.toPortablePath(t[0].slice(6)),s=t.slice(1)):t[0]===\"add\"&&t[t.length-2]===\"--cwd\"&&(r=fe.toPortablePath(t[t.length-1]),s=t.slice(0,t.length-2)),e.defaultContext.cwd=r!==null?K.resolve(r):K.cwd(),s}function MSt(e,{configuration:t}){if(!t.get(\"enableTelemetry\")||nPe.isCI||!process.stdout.isTTY)return;ze.telemetry=new GI(t,\"puba9cdc10ec5790a2cf4969dd413a47270\");let s=/^@yarnpkg\\/plugin-(.*)$/;for(let a of t.plugins.keys())qI.has(a.match(s)?.[1]??\"\")&&ze.telemetry?.reportPluginName(a);e.binaryVersion&&ze.telemetry.reportVersion(e.binaryVersion)}function oPe(e,{configuration:t}){for(let r of t.plugins.values())for(let s of r.commands||[])e.register(s)}async function USt(e,t,{selfPath:r,pluginConfiguration:s}){if(!NSt(e))return 1;let a=await sPe({selfPath:r,pluginConfiguration:s}),n=a.get(\"yarnPath\"),c=a.get(\"ignorePath\");if(n&&!c)return OSt(e,t,{yarnPath:n});delete process.env.YARN_IGNORE_PATH;let f=LSt(e,t);MSt(e,{configuration:a}),oPe(e,{configuration:a});let p=e.process(f,e.defaultContext);return p.help||ze.telemetry?.reportCommandName(p.path.join(\" \")),await e.run(p,e.defaultContext)}async function h0e({cwd:e=K.cwd(),pluginConfiguration:t=VI()}={}){let r=iPe({cwd:e,pluginConfiguration:t}),s=await sPe({pluginConfiguration:t,selfPath:null});return oPe(r,{configuration:s}),r}async function QT(e,{cwd:t=K.cwd(),selfPath:r,pluginConfiguration:s}){let a=iPe({cwd:t,pluginConfiguration:s});function n(){va.defaultContext.stdout.write(`ERROR: Yarn is terminating due to an unexpected empty event loop.\nPlease report this issue at https://github.com/yarnpkg/berry/issues.`)}process.once(\"beforeExit\",n);try{process.exitCode=42,process.exitCode=await USt(a,e,{selfPath:r,pluginConfiguration:s})}catch(c){va.defaultContext.stdout.write(a.error(c)),process.exitCode=1}finally{process.off(\"beforeExit\",n),await le.rmtempPromise()}}QT(process.argv.slice(2),{cwd:K.cwd(),selfPath:fe.toPortablePath(fe.resolve(process.argv[1])),pluginConfiguration:VI()});})();\n/**\n  @license\n  Copyright (c) 2015, Rebecca Turner\n\n  Permission to use, copy, modify, and/or distribute this software for any\n  purpose with or without fee is hereby granted, provided that the above\n  copyright notice and this permission notice appear in all copies.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n  REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n  FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n  INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n  PERFORMANCE OF THIS SOFTWARE.\n */\n/**\n  @license\n  Copyright Node.js contributors. All rights reserved.\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy\n  of this software and associated documentation files (the \"Software\"), to\n  deal in the Software without restriction, including without limitation the\n  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n  sell copies of the Software, and to permit persons to whom the Software is\n  furnished to do so, subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be included in\n  all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n  IN THE SOFTWARE.\n*/\n/**\n  @license\n  The MIT License (MIT)\n\n  Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy\n  of this software and associated documentation files (the \"Software\"), to deal\n  in the Software without restriction, including without limitation the rights\n  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n  copies of the Software, and to permit persons to whom the Software is\n  furnished to do so, subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be included in\n  all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n  THE SOFTWARE.\n*/\n/**\n  @license\n  Copyright Joyent, Inc. and other Node contributors.\n\n  Permission is hereby granted, free of charge, to any person obtaining a\n  copy of this software and associated documentation files (the\n  \"Software\"), to deal in the Software without restriction, including\n  without limitation the rights to use, copy, modify, merge, publish,\n  distribute, sublicense, and/or sell copies of the Software, and to permit\n  persons to whom the Software is furnished to do so, subject to the\n  following conditions:\n\n  The above copyright notice and this permission notice shall be included\n  in all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n  NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n  OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n  USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n/*! Bundled license information:\n\nis-number/index.js:\n  (*!\n   * is-number <https://github.com/jonschlinkert/is-number>\n   *\n   * Copyright (c) 2014-present, Jon Schlinkert.\n   * Released under the MIT License.\n   *)\n\nto-regex-range/index.js:\n  (*!\n   * to-regex-range <https://github.com/micromatch/to-regex-range>\n   *\n   * Copyright (c) 2015-present, Jon Schlinkert.\n   * Released under the MIT License.\n   *)\n\nfill-range/index.js:\n  (*!\n   * fill-range <https://github.com/jonschlinkert/fill-range>\n   *\n   * Copyright (c) 2014-present, Jon Schlinkert.\n   * Licensed under the MIT License.\n   *)\n\nis-extglob/index.js:\n  (*!\n   * is-extglob <https://github.com/jonschlinkert/is-extglob>\n   *\n   * Copyright (c) 2014-2016, Jon Schlinkert.\n   * Licensed under the MIT License.\n   *)\n\nis-glob/index.js:\n  (*!\n   * is-glob <https://github.com/jonschlinkert/is-glob>\n   *\n   * Copyright (c) 2014-2017, Jon Schlinkert.\n   * Released under the MIT License.\n   *)\n\nqueue-microtask/index.js:\n  (*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *)\n\nrun-parallel/index.js:\n  (*! run-parallel. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *)\n\ngit-url-parse/lib/index.js:\n  (*!\n   * buildToken\n   * Builds OAuth token prefix (helper function)\n   *\n   * @name buildToken\n   * @function\n   * @param {GitUrl} obj The parsed Git url object.\n   * @return {String} token prefix\n   *)\n\nobject-assign/index.js:\n  (*\n  object-assign\n  (c) Sindre Sorhus\n  @license MIT\n  *)\n\nreact/cjs/react.production.min.js:\n  (** @license React v17.0.2\n   * react.production.min.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n\nscheduler/cjs/scheduler.production.min.js:\n  (** @license React v0.20.2\n   * scheduler.production.min.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n\nreact-reconciler/cjs/react-reconciler.production.min.js:\n  (** @license React v0.26.2\n   * react-reconciler.production.min.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n\nis-windows/index.js:\n  (*!\n   * is-windows <https://github.com/jonschlinkert/is-windows>\n   *\n   * Copyright © 2015-2018, Jon Schlinkert.\n   * Released under the MIT License.\n   *)\n*/\n"
  },
  {
    "path": ".yarnrc.yml",
    "content": "nodeLinker: node-modules\n\nnpmScopes:\n  jsr:\n    npmRegistryServer: 'https://npm.jsr.io'\n\nyarnPath: .yarn/releases/yarn-4.13.0.cjs\n"
  },
  {
    "path": "CLAUDE.md",
    "content": "# NAPI-RS Project Guide\n\n## Project Structure\n\n**Core Architecture:**\n\n- `/crates/` - Rust implementation\n  - `napi/` - Main runtime library (Node-API bindings)\n  - `napi-sys/` - Low-level FFI bindings\n  - `macro/` - Procedural macros (`#[napi]` attributes)\n  - `backend/` - Code generation and TypeScript definitions\n  - `build/` - Build utilities\n- `/cli/` - Command-line tool (@napi-rs/cli)\n- `/examples/napi/` - Comprehensive test suite and examples\n- Monorepo using Cargo workspaces (Rust) + Yarn workspaces (JS)\n\n**Key Files:**\n\n- Root `Cargo.toml` - Workspace configuration\n- `/crates/backend/src/typegen.rs` - TypeScript generation logic\n- `/cli/src/utils/typegen.ts` - CLI TypeScript processing\n\n## Testing, Building, and Running Tests\n\n### Building\n\n```bash\n# Build all tests\nyarn build:tests\n\n# Build specific example (most common for testing changes)\nyarn workspace @examples/napi build\n```\n\n### Testing\n\n```bash\n# Run all tests in the example project\nyarn workspace @examples/napi test\n\n# Update test snapshots after changes\nyarn workspace @examples/napi test -u\n\n# Run specific test file\nyarn workspace @examples/napi test __tests__/values.spec.ts\n\n# Run Rust unit tests\ncargo test\n\n# Run linting\nyarn lint\n```\n\n### Common Development Workflow\n\n1. Make changes to Rust code\n2. Build: `yarn workspace @examples/napi build`\n3. Test: `yarn workspace @examples/napi test`\n4. Update snapshots if needed: `yarn workspace @examples/napi test -u`\n\n## Important Notes\n\n- JSDoc comments (`///`) in Rust become TypeScript documentation\n- Use `#[napi(object)]` for plain objects (interfaces)\n- Use `#[napi]` on impl blocks for classes\n- The `#[napi(js_name = \"...\")]` attribute renames in JS/TS\n- Build output: `.node` files in project root\n- TypeScript definitions: `index.d.cts`\n\n## Other notes\n\n- **Type generation**: Rebuild with `yarn workspace @examples/napi build` after changes\n- **Test snapshots**: Update with `-u` flag when output changes intentionally\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participation in our\ncommunity a harassment-free experience for everyone, regardless of age, body\nsize, visible or invisible disability, ethnicity, sex characteristics, gender\nidentity and expression, level of experience, education, socio-economic status,\nnationality, personal appearance, race, religion, or sexual identity\nand orientation.\n\nWe pledge to act and interact in ways that contribute to an open, welcoming,\ndiverse, inclusive, and healthy community.\n\n## Our Standards\n\nExamples of behavior that contributes to a positive environment for our\ncommunity include:\n\n- Demonstrating empathy and kindness toward other people\n- Being respectful of differing opinions, viewpoints, and experiences\n- Giving and gracefully accepting constructive feedback\n- Accepting responsibility and apologizing to those affected by our mistakes,\n  and learning from the experience\n- Focusing on what is best not just for us as individuals, but for the\n  overall community\n\nExamples of unacceptable behavior include:\n\n- The use of sexualized language or imagery, and sexual attention or\n  advances of any kind\n- Trolling, insulting or derogatory comments, and personal or political attacks\n- Public or private harassment\n- Publishing others' private information, such as a physical or email\n  address, without their explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n  professional setting\n\n## Enforcement Responsibilities\n\nCommunity leaders are responsible for clarifying and enforcing our standards of\nacceptable behavior and will take appropriate and fair corrective action in\nresponse to any behavior that they deem inappropriate, threatening, offensive,\nor harmful.\n\nCommunity leaders have the right and responsibility to remove, edit, or reject\ncomments, commits, code, wiki edits, issues, and other contributions that are\nnot aligned to this Code of Conduct, and will communicate reasons for moderation\ndecisions when appropriate.\n\n## Scope\n\nThis Code of Conduct applies within all community spaces, and also applies when\nan individual is officially representing the community in public spaces.\nExamples of representing our community include using an official e-mail address,\nposting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported to the community leaders responsible for enforcement at lynweklm@gmail.com.\nAll complaints will be reviewed and investigated promptly and fairly.\n\nAll community leaders are obligated to respect the privacy and security of the\nreporter of any incident.\n\n## Enforcement Guidelines\n\nCommunity leaders will follow these Community Impact Guidelines in determining\nthe consequences for any action they deem in violation of this Code of Conduct:\n\n### 1. Correction\n\n**Community Impact**: Use of inappropriate language or other behavior deemed\nunprofessional or unwelcome in the community.\n\n**Consequence**: A private, written warning from community leaders, providing\nclarity around the nature of the violation and an explanation of why the\nbehavior was inappropriate. A public apology may be requested.\n\n### 2. Warning\n\n**Community Impact**: A violation through a single incident or series\nof actions.\n\n**Consequence**: A warning with consequences for continued behavior. No\ninteraction with the people involved, including unsolicited interaction with\nthose enforcing the Code of Conduct, for a specified period of time. This\nincludes avoiding interactions in community spaces as well as external channels\nlike social media. Violating these terms may lead to a temporary or\npermanent ban.\n\n### 3. Temporary Ban\n\n**Community Impact**: A serious violation of community standards, including\nsustained inappropriate behavior.\n\n**Consequence**: A temporary ban from any sort of interaction or public\ncommunication with the community for a specified period of time. No public or\nprivate interaction with the people involved, including unsolicited interaction\nwith those enforcing the Code of Conduct, is allowed during this period.\nViolating these terms may lead to a permanent ban.\n\n### 4. Permanent Ban\n\n**Community Impact**: Demonstrating a pattern of violation of community\nstandards, including sustained inappropriate behavior, harassment of an\nindividual, or aggression toward or disparagement of classes of individuals.\n\n**Consequence**: A permanent ban from any sort of public interaction within\nthe community.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage],\nversion 2.0, available at\nhttps://www.contributor-covenant.org/version/2/0/code_of_conduct.html.\n\nCommunity Impact Guidelines were inspired by [Mozilla's code of conduct\nenforcement ladder](https://github.com/mozilla/diversity).\n\n[homepage]: https://www.contributor-covenant.org\n\nFor answers to common questions about this code of conduct, see the FAQ at\nhttps://www.contributor-covenant.org/faq. Translations are available at\nhttps://www.contributor-covenant.org/translations.\n"
  },
  {
    "path": "Cargo.toml",
    "content": "[workspace]\nresolver = \"2\"\nmembers = [\n  \"./crates/backend\",\n  \"./crates/build\",\n  \"./crates/macro\",\n  \"./crates/napi\",\n  \"./crates/sys\",\n  \"./examples/napi\",\n  \"./examples/napi-shared\",\n  \"./examples/napi-compat-mode\",\n  \"./examples/binary\",\n  \"./bench\",\n  \"./memory-testing\",\n  \"./examples/napi-cargo-test\",\n]\nexclude = [\"./testing\"]\n\n[workspace.package]\nrust-version = \"1.88\"\n\n[workspace.lints.clippy]\ndbg_macro = \"warn\"\ntodo = \"warn\"\nunimplemented = \"warn\"\nprint_stdout = \"warn\"     # Must be opt-in\nprint_stderr = \"warn\"     # Must be opt-in\nallow_attributes = \"warn\"\n\n[workspace.lints.rust]\nunexpected_cfgs = { level = \"warn\", check-cfg = ['cfg(tokio_unstable)'] }\n\n[profile.release]\nlto = true\n\n[profile.wasi]\ninherits = \"release\"\nopt-level = \"z\"\ndebug = true\n\n[profile.napi-rs-custom]\ninherits = \"dev\"\ncodegen-units = 1024\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2020-present LongYinan\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nMIT License\n\nCopyright (c) 2018 GitHub\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "SECURITY.md",
    "content": "## Security contact information\n\nTo report a security vulnerability, please use the\n[Tidelift security contact](https://tidelift.com/security).\nTidelift will coordinate the fix and disclosure.\n"
  },
  {
    "path": "alpine-zig.Dockerfile",
    "content": "FROM ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine\n\nARG ZIG_VERSION=0.12.0\n\nRUN apk add --update --no-cache --repository https://dl-cdn.alpinelinux.org/alpine/edge/testing xz xz-dev && \\\n  rustup target add x86_64-unknown-linux-gnu && \\\n  wget https://ziglang.org/download/${ZIG_VERSION}/zig-linux-x86_64-${ZIG_VERSION}.tar.xz && \\\n  tar -xvf zig-linux-x86_64-${ZIG_VERSION}.tar.xz && \\\n  mv zig-linux-x86_64-${ZIG_VERSION} /usr/local/zig && \\\n  ln -sf /usr/local/zig/zig /usr/local/bin/zig && \\\n  rm zig-linux-x86_64-${ZIG_VERSION}.tar.xz\n"
  },
  {
    "path": "alpine.Dockerfile",
    "content": "FROM node:18-alpine\n\nENV PATH=\"/aarch64-linux-musl-cross/bin:/usr/local/cargo/bin/rustup:/root/.cargo/bin:$PATH\" \\\n  RUSTFLAGS=\"-C target-feature=-crt-static\" \\\n  CC=\"clang\" \\\n  CXX=\"clang++\" \\\n  GN_EXE=gn\n\nRUN apk add --update --no-cache bash wget cmake musl-dev clang llvm build-base python3 && \\\n  sed -i -e 's/v[[:digit:]]\\..*\\//edge\\//g' /etc/apk/repositories && \\\n  apk add --update --no-cache --repository https://dl-cdn.alpinelinux.org/alpine/edge/testing \\\n  rustup \\\n  git \\\n  gn \\\n  tar \\\n  ninja && \\\n  apk update && \\\n  apk upgrade\n\nRUN rustup-init -y && \\\n  yarn global add pnpm lerna && \\\n  rustup target add aarch64-unknown-linux-musl && \\\n  wget https://github.com/napi-rs/napi-rs/releases/download/linux-musl-cross%4010/aarch64-linux-musl-cross.tgz && \\\n  tar -xvf aarch64-linux-musl-cross.tgz && \\\n  rm aarch64-linux-musl-cross.tgz\n"
  },
  {
    "path": "bench/Cargo.toml",
    "content": "[package]\nauthors = [\"LongYinan <lynweklm@gmail.com>\"]\nedition = \"2021\"\nname = \"napi-bench\"\npublish = false\nversion = \"0.1.0\"\n\n[lib]\ncrate-type = [\"cdylib\"]\n\n[dependencies]\nnapi = { path = \"../crates/napi\", features = [\n  \"tokio_rt\",\n  \"serde-json\",\n  \"compat-mode\",\n] }\nnapi-derive = { path = \"../crates/macro\", features = [\"compat-mode\"] }\nserde = \"1\"\nserde_json = \"1\"\n\n[target.'cfg(all(target_arch = \"x86_64\", not(target_env = \"musl\")))'.dependencies]\nmimalloc = { version = \"0.1\" }\n\n[build-dependencies]\nnapi-build = { path = \"../crates/build\" }\n"
  },
  {
    "path": "bench/async.bench.ts",
    "content": "import { cpus } from 'node:os'\nimport { createRequire } from 'node:module'\n\nimport { bench } from 'vitest'\n\nconst require = createRequire(import.meta.url)\n\nconst {\n  benchAsyncTask,\n  benchThreadsafeFunction,\n  benchTokioFuture,\n} = require('./index.node')\n\nconst buffer = Buffer.from('hello 🚀 rust!')\n\nconst ALL_THREADS = Array.from({ length: cpus().length })\n\nbench('spawn task', async () => {\n  await Promise.all(ALL_THREADS.map(() => benchAsyncTask(buffer)))\n})\n\nbench('ThreadSafeFunction', async () => {\n  await Promise.all(\n    ALL_THREADS.map(\n      () =>\n        new Promise<number | undefined>((resolve, reject) => {\n          benchThreadsafeFunction(buffer, (err?: Error, value?: number) => {\n            if (err) {\n              reject(err)\n            } else {\n              resolve(value)\n            }\n          })\n        }),\n    ),\n  )\n})\n\nbench('Tokio future to Promise', async () => {\n  await Promise.all(ALL_THREADS.map(() => benchTokioFuture(buffer)))\n})\n"
  },
  {
    "path": "bench/buffer.bench.ts",
    "content": "import { createRequire } from 'node:module'\n\nimport { bench } from 'vitest'\n\nconst require = createRequire(import.meta.url)\n\nconst { benchCreateBuffer } = require('./index.node')\n\nfunction createBuffer() {\n  const buf = Buffer.allocUnsafe(1024)\n  buf[0] = 1\n  buf[1] = 2\n  return buf\n}\n\nbench('napi-rs', () => {\n  benchCreateBuffer()\n})\n\nbench('JavaScript', () => {\n  createBuffer()\n})\n"
  },
  {
    "path": "bench/build.rs",
    "content": "extern crate napi_build;\n\nfn main() {\n  napi_build::setup();\n}\n"
  },
  {
    "path": "bench/create-array.bench.ts",
    "content": "import { createRequire } from 'node:module'\n\nimport { bench } from 'vitest'\n\nconst require = createRequire(import.meta.url)\n\nconst {\n  createArrayJson,\n  createArray,\n  createArrayWithSerdeTrait,\n} = require('./index.node')\n\nbench('createArrayJson', () => {\n  JSON.parse(createArrayJson())\n})\n\nbench('create array for loop', () => {\n  createArray()\n})\n\nbench('create array with serde trait', () => {\n  createArrayWithSerdeTrait()\n})\n"
  },
  {
    "path": "bench/get-array-from-js.bench.ts",
    "content": "import { createRequire } from 'node:module'\n\nimport { bench } from 'vitest'\n\nconst require = createRequire(import.meta.url)\n\nconst {\n  getArrayFromJson,\n  getArrayFromJsArray,\n  getArrayWithForLoop,\n} = require('./index.node')\n\nconst FIXTURE = Array.from({ length: 1000 }).fill(42)\n\nbench('get array from json string', () => {\n  getArrayFromJson(JSON.stringify(FIXTURE))\n})\n\nbench('get array from serde', () => {\n  getArrayFromJsArray(FIXTURE)\n})\n\nbench('get array with for loop', () => {\n  getArrayWithForLoop(FIXTURE)\n})\n"
  },
  {
    "path": "bench/get-set-property.bench.ts",
    "content": "import { createRequire } from 'node:module'\n\nimport { bench } from 'vitest'\n\nconst require = createRequire(import.meta.url)\n\nconst { TestClass } = require('./index.node')\n\nfunction createClass() {\n  const testObject = new TestClass()\n\n  Object.defineProperty(testObject, '_miterLimit', {\n    value: 10,\n    configurable: false,\n    enumerable: false,\n    writable: true,\n  })\n\n  Object.defineProperty(testObject, '_lineJoin', {\n    value: 'miter',\n    configurable: false,\n    enumerable: false,\n    writable: true,\n  })\n\n  return testObject\n}\n\nbench('Get Set from native#u32', () => {\n  const o = createClass()\n  o.miterNative\n  o.miterNative = 1\n})\n\nbench('Get Set from JavaScript#u32', () => {\n  const o = createClass()\n  o.miter\n  o.miter = 1\n})\n\nbench('Get Set from native#string', () => {\n  const o = createClass()\n  o.lineJoinNative\n  o.lineJoinNative = 'bevel'\n})\n\nbench('Get Set from JavaScript#string', () => {\n  const o = createClass()\n  o.lineJoin\n  o.lineJoin = 'bevel'\n})\n"
  },
  {
    "path": "bench/noop.bench.ts",
    "content": "import { createRequire } from 'node:module'\n\nimport { bench } from 'vitest'\n\nconst require = createRequire(import.meta.url)\n\nconst { noop: napiNoop } = require('./index.node')\n\nfunction noop() {}\n\nbench('napi-rs', () => {\n  napiNoop()\n})\n\nbench('JavaScript', () => {\n  noop()\n})\n"
  },
  {
    "path": "bench/package.json",
    "content": "{\n  \"name\": \"bench\",\n  \"version\": \"1.0.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"bench\": \"vitest bench \",\n    \"build\": \"napi-raw build --js false --release\"\n  },\n  \"devDependencies\": {\n    \"@napi-rs/cli\": \"workspace:*\",\n    \"tinybench\": \"^6.0.0\",\n    \"vitest\": \"^4.0.8\"\n  }\n}\n"
  },
  {
    "path": "bench/plus.bench.ts",
    "content": "import { createRequire } from 'node:module'\n\nimport { bench } from 'vitest'\n\nconst require = createRequire(import.meta.url)\n\nconst { plus } = require('./index.node')\n\nfunction plusJavascript(a: number, b: number) {\n  return a + b\n}\n\nbench('napi-rs', () => {\n  plus(1, 100)\n})\n\nbench('JavaScript', () => {\n  plusJavascript(1, 100)\n})\n"
  },
  {
    "path": "bench/query.bench.ts",
    "content": "import { createRequire } from 'node:module'\n\nimport { bench } from 'vitest'\n\nconst require = createRequire(import.meta.url)\n\nconst { query, engine } = require('./index.node')\n\nconst e = engine('model A {}')\n\nbench('query * 100', async () => {\n  await Promise.all(Array.from({ length: 100 }).map(() => query(e)))\n})\n\nbench('query * 1', async () => {\n  await query(e)\n})\n"
  },
  {
    "path": "bench/src/async_compute.rs",
    "content": "use napi::threadsafe_function::*;\nuse napi::{bindgen_prelude::*, *};\n\nstruct BufferLength(Buffer);\n\nimpl Task for BufferLength {\n  type Output = usize;\n  type JsValue = u32;\n\n  fn compute(&mut self) -> Result<Self::Output> {\n    Ok(self.0.len() + 1)\n  }\n\n  fn resolve(&mut self, _: Env, output: Self::Output) -> Result<Self::JsValue> {\n    Ok(output as u32)\n  }\n}\n\n#[js_function(1)]\nfn bench_async_task(ctx: CallContext) -> Result<PromiseRaw<u32>> {\n  let n = ctx.get::<Buffer>(0)?;\n  let task = BufferLength(n);\n  let async_promise = ctx.env.spawn(task)?;\n  Ok(async_promise.promise_object())\n}\n\n#[js_function(2)]\nfn bench_threadsafe_function(ctx: CallContext) -> Result<()> {\n  let buffer_ref = ctx.get::<Buffer>(0)?;\n  let callback = ctx.get::<ThreadsafeFunction<u32, (), u32>>(1)?;\n\n  std::thread::spawn(move || {\n    callback.call(\n      Ok((buffer_ref.len() + 1) as u32),\n      ThreadsafeFunctionCallMode::NonBlocking,\n    );\n  });\n\n  Ok(())\n}\n\n#[js_function(1)]\nfn bench_tokio_future(ctx: CallContext) -> Result<JsObject> {\n  let buffer_ref = ctx.get::<Buffer>(0)?;\n  ctx\n    .env\n    .execute_tokio_future(async move { Ok(buffer_ref.len()) }, |_, v: usize| {\n      Ok(v as u32 + 1)\n    })\n}\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"benchAsyncTask\", bench_async_task)?;\n  exports.create_named_method(\"benchThreadsafeFunction\", bench_threadsafe_function)?;\n  exports.create_named_method(\"benchTokioFuture\", bench_tokio_future)?;\n  Ok(())\n}\n"
  },
  {
    "path": "bench/src/buffer.rs",
    "content": "use napi::{ContextlessResult, Env, JsBuffer, JsObject, Result};\n\n#[contextless_function]\npub fn bench_create_buffer(env: Env) -> ContextlessResult<JsBuffer> {\n  let mut output = Vec::with_capacity(1024);\n  output.push(1);\n  output.push(2);\n  env\n    .create_buffer_with_data(output)\n    .map(|v| Some(v.into_raw()))\n}\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"benchCreateBuffer\", bench_create_buffer)?;\n  Ok(())\n}\n"
  },
  {
    "path": "bench/src/create_array.rs",
    "content": "use napi::{ContextlessResult, Env, JsObject, Result, Unknown};\nuse serde_json::to_string;\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"createArrayJson\", create_array_json)?;\n  exports.create_named_method(\"createArray\", create_array)?;\n  exports.create_named_method(\"createArrayWithSerdeTrait\", create_array_with_serde_trait)?;\n  Ok(())\n}\n\n#[contextless_function]\npub fn create_array_json(_: Env) -> ContextlessResult<String> {\n  let a: Vec<u32> = vec![42; 1000];\n  let arr_string = to_string(&a)?;\n  Ok(Some(arr_string))\n}\n\n#[contextless_function]\npub fn create_array(env: Env) -> ContextlessResult<JsObject> {\n  let a: Vec<u32> = vec![42; 1000];\n  let mut ret = env.create_array_with_length(a.len())?;\n  for (index, item) in a.iter().enumerate() {\n    ret.set_element(index as u32, env.create_uint32(*item)?)?;\n  }\n  Ok(Some(ret))\n}\n\n#[contextless_function]\npub fn create_array_with_serde_trait(env: Env) -> ContextlessResult<Unknown<'static>> {\n  let a: Vec<u32> = vec![42; 1000];\n  env.to_js_value(&a).map(Some)\n}\n"
  },
  {
    "path": "bench/src/get_set_property.rs",
    "content": "use std::str::FromStr;\n\nuse napi::*;\n\nstruct TestNative {\n  miter_limit: u32,\n  line_join: LineJoin,\n}\n\nenum LineJoin {\n  Miter,\n  Round,\n  Bevel,\n}\n\nimpl LineJoin {\n  fn as_str(&self) -> &str {\n    match self {\n      Self::Bevel => \"bevel\",\n      Self::Miter => \"miter\",\n      Self::Round => \"round\",\n    }\n  }\n}\n\nimpl FromStr for LineJoin {\n  type Err = Error;\n\n  fn from_str(value: &str) -> Result<LineJoin> {\n    match value {\n      \"bevel\" => Ok(Self::Bevel),\n      \"round\" => Ok(Self::Round),\n      \"miter\" => Ok(Self::Miter),\n      _ => Err(Error::new(\n        Status::InvalidArg,\n        format!(\"[{}] is not valid LineJoin value\", value),\n      )),\n    }\n  }\n}\n\npub fn register_js(exports: &mut JsObject, env: &Env) -> Result<()> {\n  let test_class = env.define_class::<bindgen_prelude::Unknown>(\n    \"TestClass\",\n    test_class_constructor,\n    &[\n      Property::new()\n        .with_utf8_name(\"miterNative\")?\n        .with_getter(get_miter_native)\n        .with_setter(set_miter_native),\n      Property::new()\n        .with_utf8_name(\"miter\")?\n        .with_getter(get_miter)\n        .with_setter(set_miter),\n      Property::new()\n        .with_utf8_name(\"lineJoinNative\")?\n        .with_getter(get_line_join_native)\n        .with_setter(set_line_join_native),\n      Property::new()\n        .with_utf8_name(\"lineJoin\")?\n        .with_getter(get_line_join)\n        .with_setter(set_line_join),\n    ],\n  )?;\n  exports.set_named_property(\"TestClass\", test_class)?;\n  Ok(())\n}\n\n#[js_function]\nfn test_class_constructor(ctx: CallContext) -> Result<()> {\n  let native = TestNative {\n    miter_limit: 10,\n    line_join: LineJoin::Miter,\n  };\n  let mut this = ctx.this_unchecked::<JsObject>();\n  ctx.env.wrap(&mut this, native, None)?;\n  Ok(())\n}\n\n#[js_function]\nfn get_miter_native(ctx: CallContext) -> Result<JsNumber> {\n  let this = ctx.this_unchecked::<JsObject>();\n  let native = ctx.env.unwrap::<TestNative>(&this)?;\n\n  ctx.env.create_uint32(native.miter_limit)\n}\n\n#[js_function(1)]\nfn set_miter_native(ctx: CallContext) -> Result<()> {\n  let miter: u32 = ctx.get::<JsNumber>(0)?.get_uint32()?;\n\n  let this = ctx.this_unchecked::<JsObject>();\n  let native = ctx.env.unwrap::<TestNative>(&this)?;\n\n  native.miter_limit = miter;\n\n  Ok(())\n}\n\n#[js_function]\nfn get_miter(ctx: CallContext) -> Result<Unknown> {\n  let this = ctx.this_unchecked::<JsObject>();\n  this.get_named_property(\"_miterLimit\")\n}\n\n#[js_function(1)]\nfn set_miter(ctx: CallContext) -> Result<()> {\n  let miter_number = ctx.get::<JsNumber>(0)?;\n  let miter = miter_number.get_uint32()?;\n\n  let mut this = ctx.this_unchecked::<JsObject>();\n  let native = ctx.env.unwrap::<TestNative>(&this)?;\n\n  native.miter_limit = miter;\n\n  this.set_named_property(\"_miterLimit\", miter_number)?;\n\n  Ok(())\n}\n\n#[js_function]\nfn get_line_join_native(ctx: CallContext) -> Result<JsString> {\n  let this = ctx.this_unchecked::<JsObject>();\n  let native = ctx.env.unwrap::<TestNative>(&this)?;\n\n  ctx.env.create_string(native.line_join.as_str())\n}\n\n#[js_function(1)]\nfn set_line_join_native(ctx: CallContext) -> Result<()> {\n  let line_join_string = ctx.get::<JsString>(0)?;\n  let line_join = line_join_string.into_utf8()?;\n\n  let this = ctx.this_unchecked::<JsObject>();\n  let native = ctx.env.unwrap::<TestNative>(&this)?;\n\n  native.line_join = LineJoin::from_str(line_join.as_str()?)?;\n\n  Ok(())\n}\n\n#[js_function]\nfn get_line_join(ctx: CallContext) -> Result<Unknown> {\n  let this = ctx.this_unchecked::<JsObject>();\n\n  this.get_named_property(\"_lineJoin\")\n}\n\n#[js_function(1)]\nfn set_line_join(ctx: CallContext) -> Result<()> {\n  let line_join_string = ctx.get::<JsString>(0)?;\n  let line_join = line_join_string.into_utf8()?;\n\n  let mut this = ctx.this_unchecked::<JsObject>();\n  let native = ctx.env.unwrap::<TestNative>(&this)?;\n\n  native.line_join = LineJoin::from_str(line_join.as_str()?)?;\n\n  this.set_named_property(\"_lineJoin\", line_join_string)?;\n\n  Ok(())\n}\n"
  },
  {
    "path": "bench/src/get_value_from_js.rs",
    "content": "use napi::{bindgen_prelude::Object, CallContext, JsObject, JsString, Result, Unknown};\nuse serde_json::from_str;\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"getArrayFromJson\", get_array_from_json)?;\n  exports.create_named_method(\"getArrayFromJsArray\", get_array_from_js_array)?;\n  exports.create_named_method(\"getArrayWithForLoop\", get_array_with_for_loop)?;\n  Ok(())\n}\n\n#[js_function(1)]\nfn get_array_from_json(ctx: CallContext) -> Result<()> {\n  let input = ctx.get::<JsString>(0)?.into_utf8()?;\n  let _: Vec<u32> = from_str(input.as_str()?)?;\n  Ok(())\n}\n\n#[js_function(1)]\nfn get_array_from_js_array(ctx: CallContext) -> Result<()> {\n  let input = ctx.get::<Object>(0)?;\n  let _: Vec<u32> = ctx.env.from_js_value(input)?;\n  Ok(())\n}\n\n#[js_function(1)]\nfn get_array_with_for_loop(ctx: CallContext) -> Result<()> {\n  let input = ctx.get::<JsObject>(0)?;\n  let array_length = input.get_array_length_unchecked()? as usize;\n  let mut result: Vec<Unknown> = Vec::with_capacity(array_length);\n  for i in 0..array_length {\n    result.insert(i, input.get_element::<Unknown>(i as u32)?);\n  }\n  Ok(())\n}\n"
  },
  {
    "path": "bench/src/lib.rs",
    "content": "#![allow(clippy::uninlined_format_args)]\n#![allow(clippy::zero_repeat_side_effects)]\n#![allow(deprecated)]\n\n#[macro_use]\nextern crate napi_derive;\n\nuse napi::{Env, JsObject, Result};\n\n#[cfg(all(\n  target_arch = \"x86_64\",\n  not(target_env = \"musl\"),\n  not(debug_assertions)\n))]\n#[global_allocator]\nstatic ALLOC: mimalloc::MiMalloc = mimalloc::MiMalloc;\n\nmod async_compute;\nmod buffer;\nmod create_array;\nmod get_set_property;\nmod get_value_from_js;\nmod noop;\nmod plus;\nmod query;\n\n#[module_exports]\nfn init(mut exports: JsObject, env: Env) -> Result<()> {\n  exports.create_named_method(\"noop\", noop::noop)?;\n\n  async_compute::register_js(&mut exports)?;\n  buffer::register_js(&mut exports)?;\n  plus::register_js(&mut exports)?;\n  get_set_property::register_js(&mut exports, &env)?;\n  create_array::register_js(&mut exports)?;\n  get_value_from_js::register_js(&mut exports)?;\n  query::register_js(&mut exports)?;\n\n  Ok(())\n}\n"
  },
  {
    "path": "bench/src/noop.rs",
    "content": "use napi::{ContextlessResult, Env, JsUndefined};\n\n#[contextless_function]\npub fn noop(_env: Env) -> ContextlessResult<JsUndefined> {\n  Ok(None)\n}\n"
  },
  {
    "path": "bench/src/plus.rs",
    "content": "use std::convert::TryInto;\n\nuse napi::{CallContext, JsNumber, JsObject, Result};\n\n#[js_function(2)]\nfn bench_plus(ctx: CallContext) -> Result<JsNumber> {\n  let a: u32 = ctx.get::<JsNumber>(0)?.try_into()?;\n  let b: u32 = ctx.get::<JsNumber>(1)?.try_into()?;\n  ctx.env.create_uint32(a + b)\n}\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"plus\", bench_plus)?;\n  Ok(())\n}\n"
  },
  {
    "path": "bench/src/query.rs",
    "content": "use napi::{CallContext, JsExternal, JsObject, JsString};\n\n#[derive(Clone)]\npub struct QueryEngine {\n  pub _datamodel: String,\n}\n\nunsafe impl Sync for QueryEngine {}\n\nimpl QueryEngine {\n  pub async fn query(&self) -> String {\n    let data = serde_json::json!({\n      \"findFirstBooking\": {\n        \"id\": \"ckovh15xa104945sj64rdk8oas\",\n        \"name\": \"1883da9ff9152\",\n        \"forename\": \"221c99bedc6a4\",\n        \"description\": \"8bf86b62ce6a\",\n        \"email\": \"9d57a869661cc\",\n        \"phone\": \"7e0c58d147215\",\n        \"arrivalDate\": -92229669,\n        \"departureDate\": 202138795,\n        \"price\": -1592700387,\n        \"advance\": -369294193,\n        \"advanceDueDate\": 925000428,\n        \"kids\": 520124290,\n        \"adults\": 1160258464,\n        \"status\": \"NO_PAYMENT\",\n        \"nourishment\": \"BB\",\n        \"createdAt\": \"2021-05-19T12:58:37.246Z\",\n        \"room\": { \"id\": \"ckovh15xa104955sj6r2tqaw1c\", \"name\": \"38683b87f2664\" }\n      }\n    });\n\n    serde_json::to_string(&data).unwrap()\n  }\n}\n\n#[js_function(1)]\nfn new_engine(ctx: CallContext) -> napi::Result<napi::JsExternal> {\n  let a = ctx.get::<JsString>(0)?.into_utf8()?;\n  let model = a.into_owned()?;\n  let model_len = model.len();\n  let qe = QueryEngine { _datamodel: model };\n  ctx.env.create_external(qe, Some(model_len as i64))\n}\n\n#[js_function(1)]\nfn query(ctx: CallContext) -> napi::Result<JsObject> {\n  let ext = ctx.get::<JsExternal>(0)?;\n  let qe = ctx.env.get_value_external::<QueryEngine>(&ext)?;\n  let qe = qe.clone();\n  ctx\n    .env\n    .execute_tokio_future(async move { Ok(qe.query().await) }, |env, v| {\n      env.create_string_from_std(v)\n    })\n}\n\npub fn register_js(exports: &mut JsObject) -> napi::Result<()> {\n  exports.create_named_method(\"engine\", new_engine)?;\n  exports.create_named_method(\"query\", query)?;\n  Ok(())\n}\n"
  },
  {
    "path": "bench/tsconfig.json",
    "content": "{\n  \"extends\": \"../tsconfig.json\",\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"rootDir\": \".\"\n  },\n  \"include\": [\".\"],\n  \"exclude\": [\"target\", \"src\"]\n}\n"
  },
  {
    "path": "bench/vite.config.ts",
    "content": "import { defineConfig } from 'vitest/config'\n\nexport default defineConfig({\n  mode: 'benchmark',\n})\n"
  },
  {
    "path": "cli/.npmignore",
    "content": ".git\nyarn.lock\ntarget\npackage-template/npm\npackage-template/README.md\n"
  },
  {
    "path": "cli/CHANGELOG.md",
    "content": "# Change Log\n\nAll notable changes to this project will be documented in this file.\nSee [Conventional Commits](https://conventionalcommits.org) for commit guidelines.\n\n## [3.5.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.5.0...@napi-rs/cli@3.5.1) (2025-12-30)\n\n### Bug Fixes\n\n- **cli:** load separatedConfig in config regardless of packageJson.napi ([#3065](https://github.com/napi-rs/napi-rs/issues/3065)) ([7ad0718](https://github.com/napi-rs/napi-rs/commit/7ad07187b48006242cf10683fe997174a677bab2))\n- **cli:** properly load WASM package in JS binding template ([#3038](https://github.com/napi-rs/napi-rs/issues/3038)) ([60452d0](https://github.com/napi-rs/napi-rs/commit/60452d01a4e6f414f50842a20df27804c2aa771d))\n\n# [3.5.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.4.1...@napi-rs/cli@3.5.0) (2025-12-02)\n\n### Bug Fixes\n\n- **cli:** use jsPackageName from cli options ([#3035](https://github.com/napi-rs/napi-rs/issues/3035)) ([94a6d37](https://github.com/napi-rs/napi-rs/commit/94a6d37436fbae2caca67f773e8706354b3f16d9))\n- **deps:** update dependency @inquirer/prompts to v8 ([#3020](https://github.com/napi-rs/napi-rs/issues/3020)) ([3d23d7d](https://github.com/napi-rs/napi-rs/commit/3d23d7d53f896d449d59d61cc495c5f79532cb7c))\n\n### Features\n\n- **napi:** add node_api_create_object_with_properties support for enum creation ([#2990](https://github.com/napi-rs/napi-rs/issues/2990)) ([e4f5360](https://github.com/napi-rs/napi-rs/commit/e4f5360dcd7cfc5241c3bae3b46b9ae844ebf147))\n\n### Performance Improvements\n\n- **cli:** replace debug with obug ([#3019](https://github.com/napi-rs/napi-rs/issues/3019)) ([f70331b](https://github.com/napi-rs/napi-rs/commit/f70331b08eb6d73d5315f0567bc76154e20521fb))\n\n## [3.4.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.4.0...@napi-rs/cli@3.4.1) (2025-10-24)\n\n### Bug Fixes\n\n- **cli:** remove createRequire in cjs binding ([#2976](https://github.com/napi-rs/napi-rs/issues/2976)) ([c388c12](https://github.com/napi-rs/napi-rs/commit/c388c120cfefbe40b16176615840203e3e1c6e75))\n\n# [3.4.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.3.1...@napi-rs/cli@3.4.0) (2025-10-23)\n\n### Bug Fixes\n\n- **cli:** correct OpenHarmony SDK path detection logic ([#2963](https://github.com/napi-rs/napi-rs/issues/2963)) ([b453673](https://github.com/napi-rs/napi-rs/commit/b4536731acfae389e634887a0923dd6f2a6bfaa0))\n- **napi:** do not invoke process.report on Windows ([#2972](https://github.com/napi-rs/napi-rs/issues/2972)) ([01485ff](https://github.com/napi-rs/napi-rs/commit/01485ff4231395b0f39d7bbd9b8053992f9d3923))\n\n### Features\n\n- **cli:** resolve command from args ([#2973](https://github.com/napi-rs/napi-rs/issues/2973)) ([13cb9dc](https://github.com/napi-rs/napi-rs/commit/13cb9dc1e06678c72aa18efb8041f2d18301d288))\n\n## [3.3.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.3.0...@napi-rs/cli@3.3.1) (2025-10-10)\n\n### Bug Fixes\n\n- **napi:** cleanup memory issues ([#2949](https://github.com/napi-rs/napi-rs/issues/2949)) ([8f40ebd](https://github.com/napi-rs/napi-rs/commit/8f40ebd206ff27d8ec7aa04c58dd2d2bb28d8288))\n\n# [3.3.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.2.0...@napi-rs/cli@3.3.0) (2025-10-03)\n\n### Bug Fixes\n\n- **cli:** avoid **tests** publish to npm ([#2927](https://github.com/napi-rs/napi-rs/issues/2927)) ([b26e8d5](https://github.com/napi-rs/napi-rs/commit/b26e8d569b2adf36698293bee874a79d4a8c6956))\n- **cli:** bundle empathic ([#2946](https://github.com/napi-rs/napi-rs/issues/2946)) ([70b66ee](https://github.com/napi-rs/napi-rs/commit/70b66ee1b0c93961fe294d2fa9ad43fdb6671172))\n- **deps:** update dependency find-up to v8 ([#2928](https://github.com/napi-rs/napi-rs/issues/2928)) ([196f5db](https://github.com/napi-rs/napi-rs/commit/196f5db7c3668398c39317a705cbaf23df1d8d8e))\n\n### Features\n\n- **cli:** export more build apis ([#2945](https://github.com/napi-rs/napi-rs/issues/2945)) ([ac118df](https://github.com/napi-rs/napi-rs/commit/ac118df1d41d43f82920b3936e0c8ab39bb19d4c))\n\n# [3.2.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.1.5...@napi-rs/cli@3.2.0) (2025-09-11)\n\n### Bug Fixes\n\n- **cli:** fix misuse of configPath as readNapiConfig first argument ([#2900](https://github.com/napi-rs/napi-rs/issues/2900)) ([c034e1e](https://github.com/napi-rs/napi-rs/commit/c034e1e4f01c2947dfc53fa9d5066e2e1fa113b7))\n- **cli:** NAPI_RS_NATIVE_LIBRARY_PATH usage ([#2907](https://github.com/napi-rs/napi-rs/issues/2907)) ([841ddf4](https://github.com/napi-rs/napi-rs/commit/841ddf4231ad46d482624971a794af091b9d8612))\n\n### Features\n\n- **cli:** add support for loongarch64-unknown-linux-gnu ([#2887](https://github.com/napi-rs/napi-rs/issues/2887)) ([807f579](https://github.com/napi-rs/napi-rs/commit/807f5797960e80de6cc291d90f5fc34575e011fe))\n\n## [3.1.5](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.1.4...@napi-rs/cli@3.1.5) (2025-08-16)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n## [3.1.4](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.1.3...@napi-rs/cli@3.1.4) (2025-08-13)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n## [3.1.3](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.1.2...@napi-rs/cli@3.1.3) (2025-08-10)\n\n### Bug Fixes\n\n- **cli:** generate next method on Iterator ([#2864](https://github.com/napi-rs/napi-rs/issues/2864)) ([364e816](https://github.com/napi-rs/napi-rs/commit/364e81648b8360e582defb8ca42ff4cb66351731))\n\n## [3.1.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.1.1...@napi-rs/cli@3.1.2) (2025-08-08)\n\n### Bug Fixes\n\n- **cli:** wrong condition for the native binding version check ([#2853](https://github.com/napi-rs/napi-rs/issues/2853)) ([b47efee](https://github.com/napi-rs/napi-rs/commit/b47efee028609ac8844fb31dfa0deb62cdfeaa67))\n\n## [3.1.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.1.0...@napi-rs/cli@3.1.1) (2025-08-08)\n\n### Bug Fixes\n\n- **cli:** don't enforce version check ([#2849](https://github.com/napi-rs/napi-rs/issues/2849)) ([eef8221](https://github.com/napi-rs/napi-rs/commit/eef822142151486e0835c47419c16afc6ff880c1))\n\n# [3.1.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.4...@napi-rs/cli@3.1.0) (2025-08-07)\n\n### Features\n\n- **cli:** validate the native binding versions ([#2837](https://github.com/napi-rs/napi-rs/issues/2837)) ([310581a](https://github.com/napi-rs/napi-rs/commit/310581a5f836ee738a56c1bff5d37068cdb601ca))\n- make generator an iterator ([#2784](https://github.com/napi-rs/napi-rs/issues/2784)) ([88fca29](https://github.com/napi-rs/napi-rs/commit/88fca29e3b8822de097358625c652e52d1a9e48c))\n\n## [3.0.4](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.3...@napi-rs/cli@3.0.4) (2025-07-24)\n\n### Bug Fixes\n\n- **cli:** migrate to latest wasm sjlj ([#2806](https://github.com/napi-rs/napi-rs/issues/2806)) ([02bd12a](https://github.com/napi-rs/napi-rs/commit/02bd12a7249452cd19cb1d62f1e342db83fa4b3f))\n\n## [3.0.3](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.2...@napi-rs/cli@3.0.3) (2025-07-23)\n\n### Bug Fixes\n\n- **cli:** rename options ([#2804](https://github.com/napi-rs/napi-rs/issues/2804)) ([cf6d8b0](https://github.com/napi-rs/napi-rs/commit/cf6d8b0334e36d237ee076d40bc9e7d4ba716c5d))\n\n## [3.0.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.1...@napi-rs/cli@3.0.2) (2025-07-23)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n# [3.0.0-alpha.100](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.99...@napi-rs/cli@3.0.0-alpha.100) (2025-07-17)\n\n### Features\n\n- **cli:** add buffer to wasi browser template ([#2777](https://github.com/napi-rs/napi-rs/issues/2777)) ([23a3fec](https://github.com/napi-rs/napi-rs/commit/23a3fec5dc682326ccb7ace0fa84284c85100121))\n\n# [3.0.0-alpha.99](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.98...@napi-rs/cli@3.0.0-alpha.99) (2025-07-12)\n\n### Bug Fixes\n\n- **cli:** ohos binding ([2700b04](https://github.com/napi-rs/napi-rs/commit/2700b047821f5caf65ba007a3684da3585425358))\n\n# [3.0.0-alpha.98](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.97...@napi-rs/cli@3.0.0-alpha.98) (2025-07-12)\n\n### Bug Fixes\n\n- **cli:** ohos js binding logic ([#2775](https://github.com/napi-rs/napi-rs/issues/2775)) ([16b5a37](https://github.com/napi-rs/napi-rs/commit/16b5a37951775dde9b529ea684c0e25c2acbe5d8))\n\n# [3.0.0-alpha.97](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.96...@napi-rs/cli@3.0.0-alpha.97) (2025-07-12)\n\n### Bug Fixes\n\n- **cli:** binding format ([#2774](https://github.com/napi-rs/napi-rs/issues/2774)) ([0a8a499](https://github.com/napi-rs/napi-rs/commit/0a8a499fa64d3f36642e9f7e00520cf101b1541f))\n\n# [3.0.0-alpha.96](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.95...@napi-rs/cli@3.0.0-alpha.96) (2025-07-12)\n\n### Features\n\n- **cli:** support ohos ([#2773](https://github.com/napi-rs/napi-rs/issues/2773)) ([69d2806](https://github.com/napi-rs/napi-rs/commit/69d28061ff81b45c78161d212320c19891d36f90))\n\n# [3.0.0-alpha.95](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.94...@napi-rs/cli@3.0.0-alpha.95) (2025-07-12)\n\n### Bug Fixes\n\n- **cli:** omit exports fields in publishConfig ([#2772](https://github.com/napi-rs/napi-rs/issues/2772)) ([3bb592d](https://github.com/napi-rs/napi-rs/commit/3bb592d47f799500ff735eea5b9b79b8556396ab))\n\n# [3.0.0-alpha.94](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.93...@napi-rs/cli@3.0.0-alpha.94) (2025-07-12)\n\n### Features\n\n- **cli:** allow skip optionalDependencies publish ([#2771](https://github.com/napi-rs/napi-rs/issues/2771)) ([948e076](https://github.com/napi-rs/napi-rs/commit/948e0762e9a64297f48e3466a1faeeb30b3d64af))\n\n# [3.0.0-alpha.93](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.92...@napi-rs/cli@3.0.0-alpha.93) (2025-07-10)\n\n### Bug Fixes\n\n- **cli:** check `kHandle` instead ([#2768](https://github.com/napi-rs/napi-rs/issues/2768)) ([93b9aa2](https://github.com/napi-rs/napi-rs/commit/93b9aa267c84f667c13601e6bdfae3788889ce66))\n\n# [3.0.0-alpha.92](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.91...@napi-rs/cli@3.0.0-alpha.92) (2025-07-04)\n\n### Bug Fixes\n\n- **cli:** set TARGET_CC rather than CC ([#2764](https://github.com/napi-rs/napi-rs/issues/2764)) ([3985bc6](https://github.com/napi-rs/napi-rs/commit/3985bc68cfa937b86e812081858c1878c5f5492c))\n- **cli:** throw error if targets are duplicated ([#2743](https://github.com/napi-rs/napi-rs/issues/2743)) ([27d0d92](https://github.com/napi-rs/napi-rs/commit/27d0d923c6c0e10d4a3d1c3e9dae1638d54a09ac))\n\n### Features\n\n- **napi:** support untyped TypedArray slice ([#2762](https://github.com/napi-rs/napi-rs/issues/2762)) ([0119f09](https://github.com/napi-rs/napi-rs/commit/0119f0923711da25cd5ad8a9be2616c2de57ba61))\n- **wasm-runtime:** never refer handles of workers ([#2763](https://github.com/napi-rs/napi-rs/issues/2763)) ([5078d54](https://github.com/napi-rs/napi-rs/commit/5078d548be9e0fa3105257448524cd1c69c53f6f))\n\n# [3.0.0-alpha.91](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.90...@napi-rs/cli@3.0.0-alpha.91) (2025-06-24)\n\n### Bug Fixes\n\n- **cli:** build config ([#2735](https://github.com/napi-rs/napi-rs/issues/2735)) ([6c2b0b5](https://github.com/napi-rs/napi-rs/commit/6c2b0b54decf3dbf5125e4778d7c2540d13af89f))\n\n# [3.0.0-alpha.90](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.89...@napi-rs/cli@3.0.0-alpha.90) (2025-06-24)\n\n### Bug Fixes\n\n- **cli:** handle CI.yaml targets omit ([#2730](https://github.com/napi-rs/napi-rs/issues/2730)) ([0d1a4c4](https://github.com/napi-rs/napi-rs/commit/0d1a4c4a94435093d5ad880af7dc26b8f27a415f))\n- **cli:** handle the wasi names in new command ([#2725](https://github.com/napi-rs/napi-rs/issues/2725)) ([1481031](https://github.com/napi-rs/napi-rs/commit/1481031f37654ab2fd0cda6557d28c2bee0d4b53))\n\n### Features\n\n- **cli:** new project from github project template ([#2723](https://github.com/napi-rs/napi-rs/issues/2723)) ([de95466](https://github.com/napi-rs/napi-rs/commit/de954666e0213298da848ed16ae33f5ef4b6c030))\n\n# [3.0.0-alpha.89](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.88...@napi-rs/cli@3.0.0-alpha.89) (2025-06-13)\n\n### Bug Fixes\n\n- **cli:** wasm url in binding files ([#2710](https://github.com/napi-rs/napi-rs/issues/2710)) ([e7af660](https://github.com/napi-rs/napi-rs/commit/e7af6608fc293eefe4eb2b8ff763348d52784ac7))\n\n# [3.0.0-alpha.88](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.87...@napi-rs/cli@3.0.0-alpha.88) (2025-06-08)\n\n### Bug Fixes\n\n- **napi-derive:** panic while creating type definition when Rust comment contains escape syntax ([#2701](https://github.com/napi-rs/napi-rs/issues/2701)) ([54935e3](https://github.com/napi-rs/napi-rs/commit/54935e34fa2672600e72ed19a854f0b5946e3d40))\n\n# [3.0.0-alpha.87](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.86...@napi-rs/cli@3.0.0-alpha.87) (2025-06-05)\n\n### Bug Fixes\n\n- **cli:** remove `require` in utils ([#2693](https://github.com/napi-rs/napi-rs/issues/2693)) ([21e5580](https://github.com/napi-rs/napi-rs/commit/21e5580f2846a099bf529bb0eaab798d46622d22))\n\n# [3.0.0-alpha.86](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.85...@napi-rs/cli@3.0.0-alpha.86) (2025-06-04)\n\n### Bug Fixes\n\n- **cli:** uses_default_features should also treat as enabled typeDef ([#2691](https://github.com/napi-rs/napi-rs/issues/2691)) ([fdbc070](https://github.com/napi-rs/napi-rs/commit/fdbc070d6a30ff581b0ea10565bae4ddfe45ab44))\n\n# [3.0.0-alpha.85](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.84...@napi-rs/cli@3.0.0-alpha.85) (2025-06-04)\n\n### Bug Fixes\n\n- revalidate shared libs if type def not found ([#2689](https://github.com/napi-rs/napi-rs/issues/2689)) ([5a17b88](https://github.com/napi-rs/napi-rs/commit/5a17b886368fcef18334174588ee2982d503d5c8))\n\n### Features\n\n- **cli:** detect type-def feature in cli ([#2690](https://github.com/napi-rs/napi-rs/issues/2690)) ([c9ff0ec](https://github.com/napi-rs/napi-rs/commit/c9ff0ec4646584d51631b12b5d7eb5e4712969ec))\n\n# [3.0.0-alpha.84](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.83...@napi-rs/cli@3.0.0-alpha.84) (2025-06-03)\n\n### Bug Fixes\n\n- **cli:** dtsHeader option merge orders ([a79f984](https://github.com/napi-rs/napi-rs/commit/a79f9846b64d1ecf511f1f31204c8fb2aa13d0d8))\n\n# [3.0.0-alpha.83](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.82...@napi-rs/cli@3.0.0-alpha.83) (2025-06-03)\n\n### Bug Fixes\n\n- **cli:** dtsHeader content ([da42542](https://github.com/napi-rs/napi-rs/commit/da42542f0af6f58e7302a5e5624faff574e3bb01))\n\n# [3.0.0-alpha.82](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.81...@napi-rs/cli@3.0.0-alpha.82) (2025-06-03)\n\n### Bug Fixes\n\n- type generation for shared libs ([#2684](https://github.com/napi-rs/napi-rs/issues/2684)) ([d874a46](https://github.com/napi-rs/napi-rs/commit/d874a4664748d3013c64d2f3f022c5cd6f8624a8))\n\n# [3.0.0-alpha.81](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.80...@napi-rs/cli@3.0.0-alpha.81) (2025-05-29)\n\n### Bug Fixes\n\n- **cli:** parse deps cargo metadata and find napi crates ([#2667](https://github.com/napi-rs/napi-rs/issues/2667)) ([28829d2](https://github.com/napi-rs/napi-rs/commit/28829d21021123a5914649ab122e0b13409e065a))\n- **deps:** update dependency @octokit/rest to v22 ([#2663](https://github.com/napi-rs/napi-rs/issues/2663)) ([bdc57ef](https://github.com/napi-rs/napi-rs/commit/bdc57ef391b2992ce9c5800d38f2bc7a60695949))\n\n# [3.0.0-alpha.80](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.79...@napi-rs/cli@3.0.0-alpha.80) (2025-05-20)\n\n### Bug Fixes\n\n- **cli:** do not create wasi binding in non-wasi packages ([#2654](https://github.com/napi-rs/napi-rs/issues/2654)) ([446a654](https://github.com/napi-rs/napi-rs/commit/446a65489cd6fa3aef953bf65beb4403e33735fd))\n\n# [3.0.0-alpha.79](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.78...@napi-rs/cli@3.0.0-alpha.79) (2025-05-16)\n\n### Bug Fixes\n\n- **cli:** path escaping issue in metadata parser ([#2605](https://github.com/napi-rs/napi-rs/issues/2605)) ([7010f60](https://github.com/napi-rs/napi-rs/commit/7010f6059bf36f12520bcda2ddb505c1d740c196))\n- **napi:** module_exports binding ([#2632](https://github.com/napi-rs/napi-rs/issues/2632)) ([ce99054](https://github.com/napi-rs/napi-rs/commit/ce990542b9639ca95b688c45d28d525c3a2d3c99))\n\n### Features\n\n- **napi-derive:** auto invalid type gen ([#2638](https://github.com/napi-rs/napi-rs/issues/2638)) ([21982a1](https://github.com/napi-rs/napi-rs/commit/21982a1508c8d0b534f902244f13d52b0b5ae573))\n- **napi:** support #[napi(module_exports)] ([#2631](https://github.com/napi-rs/napi-rs/issues/2631)) ([8cd752d](https://github.com/napi-rs/napi-rs/commit/8cd752db8679cb56a1ea2ed35190e9888cb9b6b8))\n\n# [3.0.0-alpha.78](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.77...@napi-rs/cli@3.0.0-alpha.78) (2025-04-16)\n\n### Bug Fixes\n\n- **cli:** replace .wasm extension of wasm artifact ([#2556](https://github.com/napi-rs/napi-rs/issues/2556)) ([e12d091](https://github.com/napi-rs/napi-rs/commit/e12d0918478fa63ebc59840a805e397937dcaa84))\n\n# [3.0.0-alpha.77](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.76...@napi-rs/cli@3.0.0-alpha.77) (2025-04-01)\n\n### Bug Fixes\n\n- **cli:** trim is not a function ([#2541](https://github.com/napi-rs/napi-rs/issues/2541)) ([be86a44](https://github.com/napi-rs/napi-rs/commit/be86a44acae70bb22586148c2a3a52754504f3c2))\n\n# [3.0.0-alpha.76](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.75...@napi-rs/cli@3.0.0-alpha.76) (2025-03-22)\n\n### Features\n\n- **cli:** add `wasm.browser.asyncInit` for large wasm file ([#2514](https://github.com/napi-rs/napi-rs/issues/2514)) ([9873fb3](https://github.com/napi-rs/napi-rs/commit/9873fb39ae0dbb1d45de83ab82be82bd9d122936))\n\n# [3.0.0-alpha.75](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.74...@napi-rs/cli@3.0.0-alpha.75) (2025-03-14)\n\n### Bug Fixes\n\n- **cli:** CXX path for s390x ([#2509](https://github.com/napi-rs/napi-rs/issues/2509)) ([134c1a6](https://github.com/napi-rs/napi-rs/commit/134c1a6778a4ab54df45b39e045cfe203d668e4e))\n\n# [3.0.0-alpha.74](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.73...@napi-rs/cli@3.0.0-alpha.74) (2025-03-13)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n# [3.0.0-alpha.73](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.72...@napi-rs/cli@3.0.0-alpha.73) (2025-03-03)\n\n### Bug Fixes\n\n- **cli:** combine existed CFLAGS and CXXFLAGS in napi cross ([#2493](https://github.com/napi-rs/napi-rs/issues/2493)) ([29e4508](https://github.com/napi-rs/napi-rs/commit/29e45086e83ea8c04a78fbe30361115874f5fe80))\n\n# [3.0.0-alpha.72](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.71...@napi-rs/cli@3.0.0-alpha.72) (2025-02-25)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n# [3.0.0-alpha.71](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.70...@napi-rs/cli@3.0.0-alpha.71) (2025-02-21)\n\n### Bug Fixes\n\n- **cli:** set the default value of dtsCache to true ([#2420](https://github.com/napi-rs/napi-rs/issues/2420)) ([514c168](https://github.com/napi-rs/napi-rs/commit/514c168d25bffa758748535784d115429b1fcf77))\n\n### Features\n\n- **cli:** allow specifing native library path via env variable ([#2471](https://github.com/napi-rs/napi-rs/issues/2471)) ([46e9b97](https://github.com/napi-rs/napi-rs/commit/46e9b97e12c9ba6d281824cf40b7553a19505b26))\n\n# [3.0.0-alpha.70](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.69...@napi-rs/cli@3.0.0-alpha.70) (2025-01-29)\n\n### Features\n\n- **cli:** add cross-toolchain path to PATH ([#2448](https://github.com/napi-rs/napi-rs/issues/2448)) ([3503f0c](https://github.com/napi-rs/napi-rs/commit/3503f0c8547210586d6390399481ee3982dab36f))\n\n# [3.0.0-alpha.69](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.68...@napi-rs/cli@3.0.0-alpha.69) (2025-01-26)\n\n### Bug Fixes\n\n- **cli:** add -gcc-toolchain flag to cross-compile ([#2445](https://github.com/napi-rs/napi-rs/issues/2445)) ([1ec9082](https://github.com/napi-rs/napi-rs/commit/1ec908216067dfe9b86d3534ccc88fa1bb76fe01))\n- **cli:** watch trigger ([#2446](https://github.com/napi-rs/napi-rs/issues/2446)) ([e2f70bf](https://github.com/napi-rs/napi-rs/commit/e2f70bf66d92a4f9750717c181c708772132fed0))\n\n# [3.0.0-alpha.68](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.67...@napi-rs/cli@3.0.0-alpha.68) (2025-01-20)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n# [3.0.0-alpha.67](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.66...@napi-rs/cli@3.0.0-alpha.67) (2025-01-19)\n\n### Bug Fixes\n\n- **cli:** s390x cross toolchain path ([#2432](https://github.com/napi-rs/napi-rs/issues/2432)) ([978a000](https://github.com/napi-rs/napi-rs/commit/978a00069b5a1449d72ca74f91c6575fb58a27df))\n\n# [3.0.0-alpha.66](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.65...@napi-rs/cli@3.0.0-alpha.66) (2025-01-19)\n\n### Features\n\n- **cli:** update cross-toolchain to support s390x ([0ad7e10](https://github.com/napi-rs/napi-rs/commit/0ad7e100226d56df4d7d6ca6a6b194934c651698))\n- **napi:** impl ReadableStream and AsyncGenerator ([#2418](https://github.com/napi-rs/napi-rs/issues/2418)) ([98cb767](https://github.com/napi-rs/napi-rs/commit/98cb7671d35bd62d346766399a1da98f0cccd7a6))\n\n# [3.0.0-alpha.65](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.64...@napi-rs/cli@3.0.0-alpha.65) (2024-12-18)\n\n### Bug Fixes\n\n- **cli:** wrong condintion in setFeatures ([#2396](https://github.com/napi-rs/napi-rs/issues/2396)) ([40ce1ff](https://github.com/napi-rs/napi-rs/commit/40ce1ffb7e45d8ef186b8b876e444c61680d602e))\n- **napi:** resuse threads worker on Node.js ([#2399](https://github.com/napi-rs/napi-rs/issues/2399)) ([8fffa49](https://github.com/napi-rs/napi-rs/commit/8fffa492822f26ae2139f2a8b8031bfbbd72e1f1))\n\n### Features\n\n- **cli:** add --no-dts-cache option to build command ([#2400](https://github.com/napi-rs/napi-rs/issues/2400)) ([a72c49b](https://github.com/napi-rs/napi-rs/commit/a72c49b92e6b7a2c33a0f0c79d9ec071997daae6))\n\n# [3.0.0-alpha.64](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.63...@napi-rs/cli@3.0.0-alpha.64) (2024-10-21)\n\n### Features\n\n- **cli):** `createRequire` for SEA support ([#2297](https://github.com/napi-rs/napi-rs/issues/2297)) ([7ef54f4](https://github.com/napi-rs/napi-rs/commit/7ef54f413be519b1bfb3d4a788203b63c34613c7))\n- support ESM binding ([#2284](https://github.com/napi-rs/napi-rs/issues/2284)) ([960d07e](https://github.com/napi-rs/napi-rs/commit/960d07e5da6ad3c050aca7ba0fd0a2f2c057f72f))\n\n# [3.0.0-alpha.63](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.62...@napi-rs/cli@3.0.0-alpha.63) (2024-10-02)\n\n### Bug Fixes\n\n- **ci:** bump FreeBSD version to 13.3 ([#2220](https://github.com/napi-rs/napi-rs/issues/2220)) ([b5a5b03](https://github.com/napi-rs/napi-rs/commit/b5a5b032f69c77d85eb52312b9439bff9a8b41d8))\n- **cli:** extra line break in the tail of dts file ([#2255](https://github.com/napi-rs/napi-rs/issues/2255)) ([20b9de3](https://github.com/napi-rs/napi-rs/commit/20b9de3ec7a6aaa1f807f9831247ee8b573c0e4e))\n- **deps:** update dependency @inquirer/prompts to v6 ([#2257](https://github.com/napi-rs/napi-rs/issues/2257)) ([e11ceac](https://github.com/napi-rs/napi-rs/commit/e11ceacd5984ac1150132613edbfef506557e88c))\n\n### Features\n\n- support structured enum with discriminated unions ([#2222](https://github.com/napi-rs/napi-rs/issues/2222)) ([c459f0a](https://github.com/napi-rs/napi-rs/commit/c459f0acf6e18ddd9edfe3bf2771ab76bff0c25f))\n\n# [3.0.0-alpha.62](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.61...@napi-rs/cli@3.0.0-alpha.62) (2024-07-21)\n\n### Bug Fixes\n\n- **cli:** should not log errors if everything fine ([3284f88](https://github.com/napi-rs/napi-rs/commit/3284f881a625b902bb222136d8081c71ab15cc86))\n\n# [3.0.0-alpha.61](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.60...@napi-rs/cli@3.0.0-alpha.61) (2024-07-18)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n# [3.0.0-alpha.60](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.59...@napi-rs/cli@3.0.0-alpha.60) (2024-07-16)\n\n### Bug Fixes\n\n- **cli:** bundle @octokit/rest into cjs entry ([#2190](https://github.com/napi-rs/napi-rs/issues/2190)) ([6078bb7](https://github.com/napi-rs/napi-rs/commit/6078bb7ccec935a685b78094a8faddc8a8590fe3))\n\n# [3.0.0-alpha.59](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.58...@napi-rs/cli@3.0.0-alpha.59) (2024-07-15)\n\n### Bug Fixes\n\n- **cli:** bundle lodash-es in cjs output ([#2189](https://github.com/napi-rs/napi-rs/issues/2189)) ([e860822](https://github.com/napi-rs/napi-rs/commit/e8608228b89f74793f4ea264fbbef00025449cad))\n- **cli:** worker files format ([#2186](https://github.com/napi-rs/napi-rs/issues/2186)) ([13c1838](https://github.com/napi-rs/napi-rs/commit/13c18388f5c57c1fa86a3a43ea9540af27d862c9))\n\n# [3.0.0-alpha.58](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.57...@napi-rs/cli@3.0.0-alpha.58) (2024-07-11)\n\n### Bug Fixes\n\n- **cli:** wasm binding files destination ([#2182](https://github.com/napi-rs/napi-rs/issues/2182)) ([5976f04](https://github.com/napi-rs/napi-rs/commit/5976f04e542da214013ea61c13340ad0eb4861d1))\n- **deps:** update dependency inquirer to v10 ([#2173](https://github.com/napi-rs/napi-rs/issues/2173)) ([9800ea7](https://github.com/napi-rs/napi-rs/commit/9800ea7350dc5db4332c5383417700cc3509b644))\n\n# [3.0.0-alpha.57](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.56...@napi-rs/cli@3.0.0-alpha.57) (2024-07-09)\n\n### Bug Fixes\n\n- **cli:** update wasi js binding files on any builds ([#2179](https://github.com/napi-rs/napi-rs/issues/2179)) ([731dced](https://github.com/napi-rs/napi-rs/commit/731dced1bb432667381a7a386a03025fc9154e10))\n\n# [3.0.0-alpha.56](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.55...@napi-rs/cli@3.0.0-alpha.56) (2024-07-05)\n\n### Bug Fixes\n\n- **cli:** rename env CC to TARGET_CC avoid proc-macro build failed ([#2137](https://github.com/napi-rs/napi-rs/issues/2137)) ([0749ef1](https://github.com/napi-rs/napi-rs/commit/0749ef183247f6d491c03952cc2ea128a03c5dae))\n- **deps:** update dependency @octokit/rest to v21 ([#2149](https://github.com/napi-rs/napi-rs/issues/2149)) ([c59e075](https://github.com/napi-rs/napi-rs/commit/c59e075f589f0123a0101fcf67351d7a303c7f07))\n- **deps:** update dependency emnapi to v1.2.0 ([#2118](https://github.com/napi-rs/napi-rs/issues/2118)) ([4b3a84b](https://github.com/napi-rs/napi-rs/commit/4b3a84bcd0e98fc85f9d6b1f0ecfe9fef1c7b970))\n- **typegen:** add missing `declare` keyword ([#2117](https://github.com/napi-rs/napi-rs/issues/2117)) ([734d74b](https://github.com/napi-rs/napi-rs/commit/734d74bd028e3328ada43316dc68f208477d6997))\n\n# [3.0.0-alpha.55](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.54...@napi-rs/cli@3.0.0-alpha.55) (2024-05-12)\n\n### Bug Fixes\n\n- **cli:** prevent the wasm optimization crash the build ([#2107](https://github.com/napi-rs/napi-rs/issues/2107)) ([c9c3c0e](https://github.com/napi-rs/napi-rs/commit/c9c3c0ed05afa6625969c6f4ffaa5955b053c956))\n- **deps:** update dependency @napi-rs/cross-toolchain to ^0.0.16 ([#2079](https://github.com/napi-rs/napi-rs/issues/2079)) ([d022f64](https://github.com/napi-rs/napi-rs/commit/d022f6483488697022b0126150afc3685d70417f))\n- **napi:** set explicit target flag for x86_64 CI template ([#2077](https://github.com/napi-rs/napi-rs/issues/2077)) ([ebc1e2c](https://github.com/napi-rs/napi-rs/commit/ebc1e2ca183de090bd02a1be1fd3cbb42f16cd86))\n\n# [3.0.0-alpha.54](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.53...@napi-rs/cli@3.0.0-alpha.54) (2024-04-23)\n\n### Bug Fixes\n\n- **cli:** non-fs polyfilled browser worker binding ([#2067](https://github.com/napi-rs/napi-rs/issues/2067)) ([3e44ae3](https://github.com/napi-rs/napi-rs/commit/3e44ae3c160f28f4c1087c80da712c7a86608693))\n\n# [3.0.0-alpha.52](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.51...@napi-rs/cli@3.0.0-alpha.52) (2024-04-22)\n\n### Bug Fixes\n\n- **cli:** pass fs to browser worker binding ([#2062](https://github.com/napi-rs/napi-rs/issues/2062)) ([12aec3c](https://github.com/napi-rs/napi-rs/commit/12aec3c1354d3b2c722787de38325477c750e988))\n\n### Features\n\n- **cli:** support generation of literal union from string enum ([#2054](https://github.com/napi-rs/napi-rs/issues/2054)) ([0adc36c](https://github.com/napi-rs/napi-rs/commit/0adc36ce1c0aaeff645e6d17d6c7d54c64a5b321))\n\n# [3.0.0-alpha.51](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.50...@napi-rs/cli@3.0.0-alpha.51) (2024-04-19)\n\n### Bug Fixes\n\n- **cli:** new project issue ([#2058](https://github.com/napi-rs/napi-rs/issues/2058)) ([10602fb](https://github.com/napi-rs/napi-rs/commit/10602fb76fb3c1b075fdb6524c141a4c85374c08))\n\n### Features\n\n- **cli:** improve the browser binding ([#2056](https://github.com/napi-rs/napi-rs/issues/2056)) ([4ccbb61](https://github.com/napi-rs/napi-rs/commit/4ccbb6117943d5aa06f985eced1555ecf4c6fb05))\n\n# [3.0.0-alpha.50](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.49...@napi-rs/cli@3.0.0-alpha.50) (2024-04-17)\n\n### Features\n\n- **cli:** optimize wasm output binary ([#2049](https://github.com/napi-rs/napi-rs/issues/2049)) ([7e33eb7](https://github.com/napi-rs/napi-rs/commit/7e33eb729fdb6347c27ed1e1d99d4ac10ec3ee77))\n\n# [3.0.0-alpha.49](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.48...@napi-rs/cli@3.0.0-alpha.49) (2024-04-16)\n\n### Bug Fixes\n\n- **cli:** wasi targets linker envs ([#2044](https://github.com/napi-rs/napi-rs/issues/2044)) ([a2d78fa](https://github.com/napi-rs/napi-rs/commit/a2d78fadf9cdafe42ef5cae2efbd48077fa31000))\n\n### Features\n\n- **cli:** allow to define dtsHeader in napi config ([#2045](https://github.com/napi-rs/napi-rs/issues/2045)) ([b3dd946](https://github.com/napi-rs/napi-rs/commit/b3dd94649af82f872648056ce447ee02d4cdddb4))\n\n# [3.0.0-alpha.48](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.47...@napi-rs/cli@3.0.0-alpha.48) (2024-04-15)\n\n### Features\n\n- **cli:** allow control the wasm Memory options via napi config ([#2038](https://github.com/napi-rs/napi-rs/issues/2038)) ([cc937e1](https://github.com/napi-rs/napi-rs/commit/cc937e1dbabcbc05bcb026126f82fe842554891d))\n\n# [3.0.0-alpha.47](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.45...@napi-rs/cli@3.0.0-alpha.47) (2024-04-13)\n\n### Bug Fixes\n\n- **deps:** update dependency emnapi to v1.1.1 ([#2017](https://github.com/napi-rs/napi-rs/issues/2017)) ([e4ad476](https://github.com/napi-rs/napi-rs/commit/e4ad4767efaf093fdff3dc768856f6100a6e3f72))\n\n### Features\n\n- **cli:** add support for armv7-unknown-linux-muslebihf ([#2019](https://github.com/napi-rs/napi-rs/issues/2019)) ([7ae5623](https://github.com/napi-rs/napi-rs/commit/7ae562352a7811aa6440561c7b3a97c05671dc0d))\n- **cli:** support wasm32-wasipxx targets ([#2030](https://github.com/napi-rs/napi-rs/issues/2030)) ([4c7d06f](https://github.com/napi-rs/napi-rs/commit/4c7d06fc72be2ce1af1489884ed810116e09117b))\n- **target:** add support for powerpc64le-unknown-linux-gnu ([#2023](https://github.com/napi-rs/napi-rs/issues/2023)) ([0fa755d](https://github.com/napi-rs/napi-rs/commit/0fa755d30ac5d7abb16dfa59b58d61deaaa7984c))\n- **target:** add support for s390x-unknown-linux-gnu ([#2028](https://github.com/napi-rs/napi-rs/issues/2028)) ([2e0f983](https://github.com/napi-rs/napi-rs/commit/2e0f983ccfbed6f8879ee7d5dbb8446068ee82ab))\n\n# [3.0.0-alpha.46](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.45...@napi-rs/cli@3.0.0-alpha.46) (2024-04-10)\n\n### Bug Fixes\n\n- **deps:** update dependency emnapi to v1.1.1 ([#2017](https://github.com/napi-rs/napi-rs/issues/2017)) ([e4ad476](https://github.com/napi-rs/napi-rs/commit/e4ad4767efaf093fdff3dc768856f6100a6e3f72))\n\n### Features\n\n- **cli:** add support for armv7-unknown-linux-muslebihf ([#2019](https://github.com/napi-rs/napi-rs/issues/2019)) ([7ae5623](https://github.com/napi-rs/napi-rs/commit/7ae562352a7811aa6440561c7b3a97c05671dc0d))\n- **cli:** support wasm32-wasipxx targets ([#2030](https://github.com/napi-rs/napi-rs/issues/2030)) ([4c7d06f](https://github.com/napi-rs/napi-rs/commit/4c7d06fc72be2ce1af1489884ed810116e09117b))\n- **target:** add support for powerpc64le-unknown-linux-gnu ([#2023](https://github.com/napi-rs/napi-rs/issues/2023)) ([0fa755d](https://github.com/napi-rs/napi-rs/commit/0fa755d30ac5d7abb16dfa59b58d61deaaa7984c))\n- **target:** add support for s390x-unknown-linux-gnu ([#2028](https://github.com/napi-rs/napi-rs/issues/2028)) ([2e0f983](https://github.com/napi-rs/napi-rs/commit/2e0f983ccfbed6f8879ee7d5dbb8446068ee82ab))\n\n# [3.0.0-alpha.45](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.44...@napi-rs/cli@3.0.0-alpha.45) (2024-03-28)\n\n### Bug Fixes\n\n- **cli:** wasi Node.js worker template ([#2015](https://github.com/napi-rs/napi-rs/issues/2015)) ([77399ff](https://github.com/napi-rs/napi-rs/commit/77399ff13057c9f776c18cdcc671164084a96fa5))\n\n# [3.0.0-alpha.44](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.43...@napi-rs/cli@3.0.0-alpha.44) (2024-03-21)\n\n### Bug Fixes\n\n- **deps:** update dependency emnapi to v1.1.0 ([#2006](https://github.com/napi-rs/napi-rs/issues/2006)) ([e2b1a3e](https://github.com/napi-rs/napi-rs/commit/e2b1a3e3d9328027e7b1e140230b99837f7761fe))\n\n# [3.0.0-alpha.43](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.42...@napi-rs/cli@3.0.0-alpha.43) (2024-02-28)\n\n### Bug Fixes\n\n- **cli:** cleanup js binding template ([#1984](https://github.com/napi-rs/napi-rs/issues/1984)) ([19a1336](https://github.com/napi-rs/napi-rs/commit/19a13361d407bb8c1daf68a4589ab0fe0d3cdcd4))\n\n# [3.0.0-alpha.42](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.41...@napi-rs/cli@3.0.0-alpha.42) (2024-02-28)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n# [3.0.0-alpha.41](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.40...@napi-rs/cli@3.0.0-alpha.41) (2024-02-22)\n\n### Bug Fixes\n\n- **cli:** allow more platform & arch fallback to wasm ([#1969](https://github.com/napi-rs/napi-rs/issues/1969)) ([da99081](https://github.com/napi-rs/napi-rs/commit/da99081ccf8dda6d0788dd4a466cf6b1eb7ba10b))\n- **cli:** fallback to wasm32 if platform is not support ([#1967](https://github.com/napi-rs/napi-rs/issues/1967)) ([0306e30](https://github.com/napi-rs/napi-rs/commit/0306e3045a0891f280cb7154fd9637ed2eb78f0d))\n\n# [3.0.0-alpha.40](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.39...@napi-rs/cli@3.0.0-alpha.40) (2024-02-19)\n\n### Bug Fixes\n\n- **cli,build:** build params ([#1960](https://github.com/napi-rs/napi-rs/issues/1960)) ([ad35076](https://github.com/napi-rs/napi-rs/commit/ad35076d072ddf7e98a1e8e5cc18c87d72f4e5f4))\n\n# [3.0.0-alpha.39](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.38...@napi-rs/cli@3.0.0-alpha.39) (2024-02-18)\n\n### Bug Fixes\n\n- **cli:** ensure cwd and outputDir are used for finding files ([#1949](https://github.com/napi-rs/napi-rs/issues/1949)) ([6aae4ba](https://github.com/napi-rs/napi-rs/commit/6aae4bac0fc16decf904115b5308f7981c43fca7))\n- **cli:** set cxxflags while WASI_SDK_PATH exists ([#1955](https://github.com/napi-rs/napi-rs/issues/1955)) ([09efd41](https://github.com/napi-rs/napi-rs/commit/09efd416e5712575d4d99c6865fd4c2dde8df943))\n\n### Features\n\n- **cli,build:** support setjmp.h ([#1958](https://github.com/napi-rs/napi-rs/issues/1958)) ([08b1f68](https://github.com/napi-rs/napi-rs/commit/08b1f689bf99414e5c7f10728b8e202ae124abca))\n\n# [3.0.0-alpha.38](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.37...@napi-rs/cli@3.0.0-alpha.38) (2024-02-12)\n\n### Features\n\n- **cli:** respect WASI_SDK_PATH env ([#1946](https://github.com/napi-rs/napi-rs/issues/1946)) ([bec6bd6](https://github.com/napi-rs/napi-rs/commit/bec6bd67befa56992645036d4a8c1da111af2641))\n\n# [3.0.0-alpha.37](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.36...@napi-rs/cli@3.0.0-alpha.37) (2024-02-12)\n\n### Bug Fixes\n\n- **cli:** log more wasi load errors ([ff2ccc9](https://github.com/napi-rs/napi-rs/commit/ff2ccc9f37aa8f73a34ebbc303bc60b7f49a3156))\n- **cli:** setup cxx env while using napi-cross ([#1942](https://github.com/napi-rs/napi-rs/issues/1942)) ([0205fd9](https://github.com/napi-rs/napi-rs/commit/0205fd976ea7616fab35db3403f65da048b90a41))\n\n# [3.0.0-alpha.36](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.35...@napi-rs/cli@3.0.0-alpha.36) (2024-01-16)\n\n### Bug Fixes\n\n- **cli,wasm-runtime:** dependencies ([#1905](https://github.com/napi-rs/napi-rs/issues/1905)) ([44dc39f](https://github.com/napi-rs/napi-rs/commit/44dc39f1f0d073f8a768e84c8d5aa4783d90b247))\n\n# [3.0.0-alpha.35](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.34...@napi-rs/cli@3.0.0-alpha.35) (2024-01-16)\n\n### Features\n\n- add wasm runtime package ([#1904](https://github.com/napi-rs/napi-rs/issues/1904)) ([120accd](https://github.com/napi-rs/napi-rs/commit/120accd965f03e1de89d0d9a2fba69b97d70b95c))\n- **cli:** Add support for s390x linux arch in js bindings template ([#1901](https://github.com/napi-rs/napi-rs/issues/1901)) ([ddeaf30](https://github.com/napi-rs/napi-rs/commit/ddeaf30f14c67b2f0dbe50f58a3daae6480ca27a))\n\n# [3.0.0-alpha.34](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.33...@napi-rs/cli@3.0.0-alpha.34) (2024-01-10)\n\n### Bug Fixes\n\n- **cli:** add browser entry ([#1899](https://github.com/napi-rs/napi-rs/issues/1899)) ([fc3d5cb](https://github.com/napi-rs/napi-rs/commit/fc3d5cbcff722ce4ffcd2911afedffe2be768046))\n\n# [3.0.0-alpha.33](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.32...@napi-rs/cli@3.0.0-alpha.33) (2024-01-08)\n\n### Bug Fixes\n\n- **cli:** artifacts wasi worker name ([#1895](https://github.com/napi-rs/napi-rs/issues/1895)) ([1676930](https://github.com/napi-rs/napi-rs/commit/16769307283c9f1c278340da0f6ddc90744d3668))\n\n# [3.0.0-alpha.32](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.31...@napi-rs/cli@3.0.0-alpha.32) (2024-01-08)\n\n### Bug Fixes\n\n- **cli:** missing files in created wasi package ([#1894](https://github.com/napi-rs/napi-rs/issues/1894)) ([9b8dab6](https://github.com/napi-rs/napi-rs/commit/9b8dab6b6363126f93d35979c215d310fb14ae21))\n\n# [3.0.0-alpha.31](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.30...@napi-rs/cli@3.0.0-alpha.31) (2024-01-08)\n\n### Bug Fixes\n\n- **deps:** update dependency @tybys/wasm-util to v0.8.1 ([#1892](https://github.com/napi-rs/napi-rs/issues/1892)) ([ecde07f](https://github.com/napi-rs/napi-rs/commit/ecde07f8c1155432abd28d93e40a2cdae0aae109))\n\n### Features\n\n- **cli:** support generate browser compatible codes ([#1891](https://github.com/napi-rs/napi-rs/issues/1891)) ([7d3b53d](https://github.com/napi-rs/napi-rs/commit/7d3b53d41d2c764403b9cbde005e572a96322e33))\n\n# [3.0.0-alpha.30](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.29...@napi-rs/cli@3.0.0-alpha.30) (2024-01-03)\n\n### Bug Fixes\n\n- **cli:** upload to github releases issue ([#1888](https://github.com/napi-rs/napi-rs/issues/1888)) ([3889d8a](https://github.com/napi-rs/napi-rs/commit/3889d8ad17d98c99f5ff9a8fd850d216e6fce40a))\n- **cli:** wasi fallback package load logic ([#1887](https://github.com/napi-rs/napi-rs/issues/1887)) ([5746355](https://github.com/napi-rs/napi-rs/commit/57463554e9113e62798478d6429b053b5145239c))\n\n# [3.0.0-alpha.29](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.28...@napi-rs/cli@3.0.0-alpha.29) (2024-01-02)\n\n### Bug Fixes\n\n- **cli:** missing wasm files in artifacts command ([#1884](https://github.com/napi-rs/napi-rs/issues/1884)) ([c73cb31](https://github.com/napi-rs/napi-rs/commit/c73cb31c113d5308d136dab2cacc9b8c10474177))\n\n# [3.0.0-alpha.28](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.27...@napi-rs/cli@3.0.0-alpha.28) (2023-12-31)\n\n### Bug Fixes\n\n- **cli:** copy binding files into wasi packages ([#1881](https://github.com/napi-rs/napi-rs/issues/1881)) ([f298016](https://github.com/napi-rs/napi-rs/commit/f29801686bddc6e8c8c887706af02e796e98ee35))\n\n# [3.0.0-alpha.27](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.26...@napi-rs/cli@3.0.0-alpha.27) (2023-12-29)\n\n### Bug Fixes\n\n- **deps:** update dependency emnapi to v0.45.0 ([#1879](https://github.com/napi-rs/napi-rs/issues/1879)) ([e175e6f](https://github.com/napi-rs/napi-rs/commit/e175e6fbd61821ebe7090c740f64872a80cb6b27))\n\n# [3.0.0-alpha.26](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.25...@napi-rs/cli@3.0.0-alpha.26) (2023-12-29)\n\n### Bug Fixes\n\n- **cli:** also load wasm file from packages ([#1876](https://github.com/napi-rs/napi-rs/issues/1876)) ([b0ba466](https://github.com/napi-rs/napi-rs/commit/b0ba466f9521b02eeb94b88aacad01558bfa12bc))\n- **cli:** exclude node_modules in artifacts command ([67743b1](https://github.com/napi-rs/napi-rs/commit/67743b10466a49c0bac145d38e904cb89118fb9f))\n\n# [3.0.0-alpha.25](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.24...@napi-rs/cli@3.0.0-alpha.25) (2023-12-28)\n\n### Bug Fixes\n\n- **cli:** compatible with napi artifacts -d option ([#1872](https://github.com/napi-rs/napi-rs/issues/1872)) ([72afe03](https://github.com/napi-rs/napi-rs/commit/72afe03aa4c097ecf14f43d9558f6af4db0e1546))\n\n# [3.0.0-alpha.24](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.23...@napi-rs/cli@3.0.0-alpha.24) (2023-12-26)\n\n### Features\n\n- **cli:** support wasi target test & release workflow ([#1867](https://github.com/napi-rs/napi-rs/issues/1867)) ([c42f00f](https://github.com/napi-rs/napi-rs/commit/c42f00ff43587ebe99b0cf5784ae1e05013ef57a))\n\n# [3.0.0-alpha.23](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.22...@napi-rs/cli@3.0.0-alpha.23) (2023-12-17)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n# [3.0.0-alpha.22](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.21...@napi-rs/cli@3.0.0-alpha.22) (2023-12-16)\n\n### Bug Fixes\n\n- **cli:** prepublish tagstyle flag ([#1863](https://github.com/napi-rs/napi-rs/issues/1863)) ([0faf752](https://github.com/napi-rs/napi-rs/commit/0faf752c0287b3275505da8539ed86a949c5ab7f))\n\n# [3.0.0-alpha.21](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.20...@napi-rs/cli@3.0.0-alpha.21) (2023-12-16)\n\n### Bug Fixes\n\n- **cli:** prepublish alias ([2a82399](https://github.com/napi-rs/napi-rs/commit/2a823996e5a922bc1be074247aded241b9316087))\n\n# [3.0.0-alpha.20](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.19...@napi-rs/cli@3.0.0-alpha.20) (2023-12-16)\n\n### Bug Fixes\n\n- **cli:** make prepublish as pre-publish alias ([#1861](https://github.com/napi-rs/napi-rs/issues/1861)) ([2b7a634](https://github.com/napi-rs/napi-rs/commit/2b7a6348f6f3e7b426fb5ea235c44891a85c4c71))\n\n# [3.0.0-alpha.19](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.18...@napi-rs/cli@3.0.0-alpha.19) (2023-12-15)\n\n### Bug Fixes\n\n- **cli:** prepublish command ([#1860](https://github.com/napi-rs/napi-rs/issues/1860)) ([f825972](https://github.com/napi-rs/napi-rs/commit/f825972b7529212e043db2e111179b3b32812293))\n\n### Features\n\n- **cli:** support read config from the given config file ([#1859](https://github.com/napi-rs/napi-rs/issues/1859)) ([5cab2bc](https://github.com/napi-rs/napi-rs/commit/5cab2bc57ba3fdb0c1e5069d604b98d351abdce7))\n\n# [3.0.0-alpha.18](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.17...@napi-rs/cli@3.0.0-alpha.18) (2023-12-13)\n\n### Bug Fixes\n\n- **cli:** artifacts default option value ([#1853](https://github.com/napi-rs/napi-rs/issues/1853)) ([8d4202e](https://github.com/napi-rs/napi-rs/commit/8d4202e5f4efcd9ec2ea80a9d6a145da20d3e774))\n\n# [3.0.0-alpha.17](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.16...@napi-rs/cli@3.0.0-alpha.17) (2023-12-13)\n\n### Bug Fixes\n\n- **binding:** add riscv64 binding ([#1851](https://github.com/napi-rs/napi-rs/issues/1851)) ([e3902e0](https://github.com/napi-rs/napi-rs/commit/e3902e001fea095045a04d472f3cba029c1e746e))\n- **cli:** make outputDir option of artifacts command compatible with v2 ([#1850](https://github.com/napi-rs/napi-rs/issues/1850)) ([a697cf1](https://github.com/napi-rs/napi-rs/commit/a697cf1cf54e0ca8dfa8e0b5b288c3bd55b895af))\n\n# [3.0.0-alpha.16](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.15...@napi-rs/cli@3.0.0-alpha.16) (2023-12-11)\n\n### Bug Fixes\n\n- **napi-derive,cli:** register function cross crates ([#1848](https://github.com/napi-rs/napi-rs/issues/1848)) ([dab4ce7](https://github.com/napi-rs/napi-rs/commit/dab4ce7fe0020f3187ee139d63726197c46535b1))\n\n# [3.0.0-alpha.15](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.14...@napi-rs/cli@3.0.0-alpha.15) (2023-12-08)\n\n### Bug Fixes\n\n- **cli:** manifestPath and js binding output path ([#1847](https://github.com/napi-rs/napi-rs/issues/1847)) ([1273735](https://github.com/napi-rs/napi-rs/commit/12737352502d532be2471fce126c765879d178c5))\n\n# [3.0.0-alpha.14](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.13...@napi-rs/cli@3.0.0-alpha.14) (2023-12-07)\n\n### Bug Fixes\n\n- **cli:** --features and --no-default-features should not be exclusive ([#1846](https://github.com/napi-rs/napi-rs/issues/1846)) ([f43d483](https://github.com/napi-rs/napi-rs/commit/f43d483090008a63716459a5a19b38772bd4d1f8))\n\n# [3.0.0-alpha.13](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.12...@napi-rs/cli@3.0.0-alpha.13) (2023-12-06)\n\n### Bug Fixes\n\n- **cli:** C_FLAGS should be CFLAGS ([266d1f2](https://github.com/napi-rs/napi-rs/commit/266d1f21ec16ad992b553540b612bed833621215))\n\n# [3.0.0-alpha.12](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.11...@napi-rs/cli@3.0.0-alpha.12) (2023-12-05)\n\n### Bug Fixes\n\n- **cli:** set CC env if not existed ([#1839](https://github.com/napi-rs/napi-rs/issues/1839)) ([a87e4a6](https://github.com/napi-rs/napi-rs/commit/a87e4a6d9560afc7f44f92cb01b2294cfaa97a37))\n\n# [3.0.0-alpha.11](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.10...@napi-rs/cli@3.0.0-alpha.11) (2023-12-05)\n\n### Bug Fixes\n\n- **cli:** duplicated node matrix ([#1835](https://github.com/napi-rs/napi-rs/issues/1835)) ([830dd8b](https://github.com/napi-rs/napi-rs/commit/830dd8b6bef2afc309718a81f4dd6e237ca7e324))\n- **cli:** throws if target path of new command test fails ([#1834](https://github.com/napi-rs/napi-rs/issues/1834)) ([5160857](https://github.com/napi-rs/napi-rs/commit/516085701f395e64d92582ad99788b67de431dfd))\n\n### Features\n\n- **cli:** support @napi-rs/cross-toolchain ([#1838](https://github.com/napi-rs/napi-rs/issues/1838)) ([91c0eb8](https://github.com/napi-rs/napi-rs/commit/91c0eb8ce8bf452b4843dd33540185a10d73d53a))\n\n# [3.0.0-alpha.10](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.9...@napi-rs/cli@3.0.0-alpha.10) (2023-12-01)\n\n### Features\n\n- **cli:** change wasm binding output format to cjs ([#1831](https://github.com/napi-rs/napi-rs/issues/1831)) ([d5ecf90](https://github.com/napi-rs/napi-rs/commit/d5ecf90d292c6e21614a40663b99b64ad4a983b9))\n\n# [3.0.0-alpha.9](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.8...@napi-rs/cli@3.0.0-alpha.9) (2023-11-30)\n\n### Bug Fixes\n\n- **cli:** add back constEnum option ([#1829](https://github.com/napi-rs/napi-rs/issues/1829)) ([afa0406](https://github.com/napi-rs/napi-rs/commit/afa040660cd4d4a53a0ed4f3757b2b2aad8084e5))\n\n### Features\n\n- **cli:** export parseTriple function ([#1830](https://github.com/napi-rs/napi-rs/issues/1830)) ([5949fc9](https://github.com/napi-rs/napi-rs/commit/5949fc9682c088180f2e96d4a3d3b9c93541baa9))\n- update cli template with edtion2021([#1739](https://github.com/napi-rs/napi-rs/issues/1739)) ([#1828](https://github.com/napi-rs/napi-rs/issues/1828)) ([4301b9a](https://github.com/napi-rs/napi-rs/commit/4301b9a7c35ca576dea6454fcb45dd7f3afcf7c0))\n\n# [3.0.0-alpha.8](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.7...@napi-rs/cli@3.0.0-alpha.8) (2023-11-20)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n# [3.0.0-alpha.7](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.6...@napi-rs/cli@3.0.0-alpha.7) (2023-11-08)\n\n### Bug Fixes\n\n- **cli:** artifacts command backward compatibility ([#1797](https://github.com/napi-rs/napi-rs/issues/1797)) ([6ec46b7](https://github.com/napi-rs/napi-rs/commit/6ec46b749e74e7de1e4ec1c612d1a2be888cc52f))\n- **cli:** wrong wasm file name with --platform flag ([#1798](https://github.com/napi-rs/napi-rs/issues/1798)) ([8ddd35c](https://github.com/napi-rs/napi-rs/commit/8ddd35c7880d436bad95f294c69778081590eb3a))\n\n# [3.0.0-alpha.6](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.5...@napi-rs/cli@3.0.0-alpha.6) (2023-11-07)\n\n### Bug Fixes\n\n- **cli:** js binding template ([#1788](https://github.com/napi-rs/napi-rs/issues/1788)) ([dac0738](https://github.com/napi-rs/napi-rs/commit/dac073805bd469b6a75ba0e12dc402d82608f296))\n- **cli:** pick right android tools while cross compiling ([#1675](https://github.com/napi-rs/napi-rs/issues/1675)) ([f2f4b48](https://github.com/napi-rs/napi-rs/commit/f2f4b48e8aa311b5670e972f4d0fde3e34803d39))\n- **cli:** set RANLIB while building android targets ([5d0240e](https://github.com/napi-rs/napi-rs/commit/5d0240e8ad90af18bdf426b3b00f023c03505f30))\n- **cli:** switch name parsing to allow periods in name ([fcb5c2b](https://github.com/napi-rs/napi-rs/commit/fcb5c2bdd0239c47eec95aa3af94417e9d495995))\n\n### Features\n\n- **cli:** add provenance to ci template ([#1671](https://github.com/napi-rs/napi-rs/issues/1671)) ([9ebe404](https://github.com/napi-rs/napi-rs/commit/9ebe404e9a4ec068d66d7011d3bc1fbd52c23325))\n- integrate with emnapi ([#1669](https://github.com/napi-rs/napi-rs/issues/1669)) ([13d0ce0](https://github.com/napi-rs/napi-rs/commit/13d0ce075e8b10702d675db2f45a721eac0dd30d))\n\n### Performance Improvements\n\n- **cli:** improve musl verification ([#1660](https://github.com/napi-rs/napi-rs/issues/1660)) ([3ee6be4](https://github.com/napi-rs/napi-rs/commit/3ee6be4e5f97a431735d12b610c8851d549c68b2))\n\n# [3.0.0-alpha.5](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.3...@napi-rs/cli@3.0.0-alpha.5) (2023-07-18)\n\n### Bug Fixes\n\n- **cli:** add back override cargo by env ([#1605](https://github.com/napi-rs/napi-rs/issues/1605)) ([e60b1a5](https://github.com/napi-rs/napi-rs/commit/e60b1a599b8f3649cafc2908d974565ac95eec2f))\n- **cli:** created template missing macOS testing ([#1659](https://github.com/napi-rs/napi-rs/issues/1659)) ([4e0c9b1](https://github.com/napi-rs/napi-rs/commit/4e0c9b14e449beb8aa6872b8b85db922535a3eca))\n- **cli:** incorrect behaviors ([#1626](https://github.com/napi-rs/napi-rs/issues/1626)) ([fb22a5a](https://github.com/napi-rs/napi-rs/commit/fb22a5ae07a53ce0eace25fdd3831ecf899dd654))\n- **cli:** revert back js-binding file ([#1603](https://github.com/napi-rs/napi-rs/issues/1603)) ([82c2113](https://github.com/napi-rs/napi-rs/commit/82c2113c242b48c62e651791528559f039852255))\n- **deps:** update dependency @octokit/rest to v20 ([#1653](https://github.com/napi-rs/napi-rs/issues/1653)) ([f610129](https://github.com/napi-rs/napi-rs/commit/f610129b112fd07c721d5e91fa0b4111a970290e))\n\n### Features\n\n- **cli:** add --use-cross command for building with `cross` ([#1584](https://github.com/napi-rs/napi-rs/issues/1584)) ([5860088](https://github.com/napi-rs/napi-rs/commit/58600883dd6ac69b8ffd1e51d7c5b00adcc09c33)), closes [#1582](https://github.com/napi-rs/napi-rs/issues/1582)\n- **cli:** detect Cargo `--profile` argument ([#1598](https://github.com/napi-rs/napi-rs/issues/1598)) ([8583603](https://github.com/napi-rs/napi-rs/commit/85836034ff522dedcd694debd2e0e2046aa97776))\n- **target:** riscv64gc-unknown-linux-gnu ([72fcd03](https://github.com/napi-rs/napi-rs/commit/72fcd03d982e2926bcc623061bbf287e2990f1e1))\n\n# [3.0.0-alpha.3](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.2...@napi-rs/cli@3.0.0-alpha.3) (2023-04-07)\n\n### Bug Fixes\n\n- **cli:** incorrect new project template content ([7fcd68f](https://github.com/napi-rs/napi-rs/commit/7fcd68f14d0bd3b278abefd88d08ecb508f25f50))\n\n# [3.0.0-alpha.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.1...@napi-rs/cli@3.0.0-alpha.2) (2023-04-06)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n# [3.0.0-alpha.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.0...@napi-rs/cli@3.0.0-alpha.1) (2023-04-06)\n\n### Bug Fixes\n\n- **cli:** missing shebang prefix in cli entries ([e4c4a5f](https://github.com/napi-rs/napi-rs/commit/e4c4a5fe5df7abfdbae1ce5e19e686b55624a283))\n\n# [3.0.0-alpha.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.15.2...@napi-rs/cli@3.0.0-alpha.0) (2023-04-06)\n\n### Features\n\n- **cli:** brand new cli tool with both cli and programmatical usage ([#1492](https://github.com/napi-rs/napi-rs/issues/1492)) ([a781a4f](https://github.com/napi-rs/napi-rs/commit/a781a4f27e19ffaf3e42a470a6d4a990c34c9e3b))\n\n### BREAKING CHANGES\n\n- **cli:** requires node >= 16 and some cli options have been renamed\n\n## [2.15.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.15.1...@napi-rs/cli@2.15.2) (2023-03-22)\n\n### Bug Fixes\n\n- **cli,napi-derive:** backward compatible with older cli with [#1531](https://github.com/napi-rs/napi-rs/issues/1531) ([#1536](https://github.com/napi-rs/napi-rs/issues/1536)) ([5398b16](https://github.com/napi-rs/napi-rs/commit/5398b16238dfc04562376d66d502d78357198c2f))\n\n## [2.15.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.15.0...@napi-rs/cli@2.15.1) (2023-03-21)\n\n### Bug Fixes\n\n- **cli,napi-derive:** re-export types from shared crate ([#1531](https://github.com/napi-rs/napi-rs/issues/1531)) ([3d48d44](https://github.com/napi-rs/napi-rs/commit/3d48d4464bd3b5c7866183bad007fcc9269d8721))\n- **cli:** dts pipe ([#1532](https://github.com/napi-rs/napi-rs/issues/1532)) ([0f0837f](https://github.com/napi-rs/napi-rs/commit/0f0837f5ca4b2938aa316b91cb7aacb6446e4fe8))\n\n# [2.15.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.14.8...@napi-rs/cli@2.15.0) (2023-03-21)\n\n### Bug Fixes\n\n- **cli:** export non const enums when generating typedefs ([#1527](https://github.com/napi-rs/napi-rs/issues/1527)) ([c8bd892](https://github.com/napi-rs/napi-rs/commit/c8bd8924e220ac39cfc29cf9e0e18eee6c36a912))\n\n### Features\n\n- export registers in wasm32 target ([#1529](https://github.com/napi-rs/napi-rs/issues/1529)) ([550ef7c](https://github.com/napi-rs/napi-rs/commit/550ef7c3ccd56ea5b06a9cc90a5363d83105b8b7))\n\n## [2.14.8](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.14.7...@napi-rs/cli@2.14.8) (2023-02-16)\n\n### Bug Fixes\n\n- **cli:** always generate typedef file even native code never changes ([#1489](https://github.com/napi-rs/napi-rs/issues/1489)) ([7281f53](https://github.com/napi-rs/napi-rs/commit/7281f533bd73d6c6255244c9f1556a0e39c47738))\n\n## [2.14.7](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.14.6...@napi-rs/cli@2.14.7) (2023-02-08)\n\n### Bug Fixes\n\n- **cli:** JS bindgen file now respects destDir ([#1481](https://github.com/napi-rs/napi-rs/issues/1481)) ([cb529d2](https://github.com/napi-rs/napi-rs/commit/cb529d21cf92dfaa279bfe10dde5ad87441b47ba))\n\n## [2.14.6](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.14.5...@napi-rs/cli@2.14.6) (2023-02-02)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n## [2.14.5](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.14.4...@napi-rs/cli@2.14.5) (2023-01-29)\n\n### Bug Fixes\n\n- **cli:** upload GitHub assets issue ([a302c9c](https://github.com/napi-rs/napi-rs/commit/a302c9cb18710d8d71045d11780f09d4eaf1ecde))\n\n## [2.14.4](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.14.3...@napi-rs/cli@2.14.4) (2023-01-20)\n\n### Bug Fixes\n\n- **napi:** build error with zig@0.10.1 ([2f52793](https://github.com/napi-rs/napi-rs/commit/2f527938b27074116a89b9248e218a2ed073be34))\n\n## [2.14.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.14.1...@napi-rs/cli@2.14.2) (2023-01-10)\n\n### Bug Fixes\n\n- **cli:** CARGO env var ([#1426](https://github.com/napi-rs/napi-rs/issues/1426)) ([cc53807](https://github.com/napi-rs/napi-rs/commit/cc53807fe263060ecf76848a0c9ff61717762f77))\n\n## [2.14.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.14.0...@napi-rs/cli@2.14.1) (2023-01-03)\n\n### Bug Fixes\n\n- **cli:** android cmake build ([895e4ca](https://github.com/napi-rs/napi-rs/commit/895e4caf952de3dbe4989435fdb566088c801c30))\n- **cli:** quote toml path ([#1410](https://github.com/napi-rs/napi-rs/issues/1410)) ([c58972e](https://github.com/napi-rs/napi-rs/commit/c58972ee0a1ebc1abfd684f125735964caea1384))\n\n# [2.14.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.13.3...@napi-rs/cli@2.14.0) (2022-12-25)\n\n### Features\n\n- **cli:** add --zig-link-only option ([#1400](https://github.com/napi-rs/napi-rs/issues/1400)) ([bc41c97](https://github.com/napi-rs/napi-rs/commit/bc41c9778f152aba9663b105f8259c3a3bb692a2))\n\n## [2.13.3](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.13.2...@napi-rs/cli@2.13.3) (2022-12-15)\n\n### Bug Fixes\n\n- **cli:** set cmake toolchain for android cross build ([#1394](https://github.com/napi-rs/napi-rs/issues/1394)) ([f2c10af](https://github.com/napi-rs/napi-rs/commit/f2c10affee0f8250e3b695d85aa3e3c8c8c791fd))\n- **cli:** template to works with nix ([#1391](https://github.com/napi-rs/napi-rs/issues/1391)) ([36a897e](https://github.com/napi-rs/napi-rs/commit/36a897e27a6093be69710f8c61dfbea29975cb9b))\n\n## [2.13.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.13.1...@napi-rs/cli@2.13.2) (2022-12-09)\n\n### Bug Fixes\n\n- **cli:** ci template upgrade ([bd1d3fe](https://github.com/napi-rs/napi-rs/commit/bd1d3fe0a6d1ce5f237f51ac81704e60c584b6f2))\n\n## [2.13.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.13.0...@napi-rs/cli@2.13.1) (2022-12-09)\n\n### Bug Fixes\n\n- **cli:** zig cross armv7 ([#1384](https://github.com/napi-rs/napi-rs/issues/1384)) ([2abc946](https://github.com/napi-rs/napi-rs/commit/2abc94681ecc1010106ae4e2a9c076a9e964094d))\n\n# [2.13.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.12.1...@napi-rs/cli@2.13.0) (2022-11-20)\n\n### Features\n\n- **cli:** auto choose the tooling for cross compiling ([#1367](https://github.com/napi-rs/napi-rs/issues/1367)) ([696c2dd](https://github.com/napi-rs/napi-rs/commit/696c2ddcd841d416f53a8917fc55cf893d3a0642))\n\n# [2.13.0-alpha.6](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.13.0-alpha.5...@napi-rs/cli@2.13.0-alpha.6) (2022-11-20)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n# [2.13.0-alpha.5](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.13.0-alpha.4...@napi-rs/cli@2.13.0-alpha.5) (2022-11-20)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n# [2.13.0-alpha.4](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.13.0-alpha.3...@napi-rs/cli@2.13.0-alpha.4) (2022-11-20)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n# [2.13.0-alpha.3](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.13.0-alpha.2...@napi-rs/cli@2.13.0-alpha.3) (2022-11-20)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n# [2.13.0-alpha.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.13.0-alpha.1...@napi-rs/cli@2.13.0-alpha.2) (2022-11-17)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n# [2.13.0-alpha.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.13.0-alpha.0...@napi-rs/cli@2.13.0-alpha.1) (2022-11-17)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n# [2.13.0-alpha.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.12.1...@napi-rs/cli@2.13.0-alpha.0) (2022-11-17)\n\n### Features\n\n- **cli:** auto choose the tooling for cross compiling ([7faf4fc](https://github.com/napi-rs/napi-rs/commit/7faf4fc4cc3b2e9dc47c892a9acf9bcf7e0571ad))\n\n## [2.12.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.12.0...@napi-rs/cli@2.12.1) (2022-11-12)\n\n### Bug Fixes\n\n- **cli:** compatible with zig 0.10.0 ([32cf02e](https://github.com/napi-rs/napi-rs/commit/32cf02e633030bc46ec963d47b0e11dd17f89cda))\n- **cli:** incorrent version without npm folder ([caeef4a](https://github.com/napi-rs/napi-rs/commit/caeef4a6757a811d23bb76bd2c441587178ec6f5))\n- **cli:** support help command ([#1355](https://github.com/napi-rs/napi-rs/issues/1355)) ([7f82c95](https://github.com/napi-rs/napi-rs/commit/7f82c95525a7619b5baadca6cfc1bd0f98213244))\n\n# [2.12.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.11.4...@napi-rs/cli@2.12.0) (2022-10-04)\n\n### Bug Fixes\n\n- **cli:** custom Cargo (build) target directories ([#1300](https://github.com/napi-rs/napi-rs/issues/1300)) ([f7c26cc](https://github.com/napi-rs/napi-rs/commit/f7c26cccbffa12879f2c2f8331b66bec8582d4de))\n\n### Features\n\n- **cli:** parse `Cargo.toml` using `cargo metadata` ([#1330](https://github.com/napi-rs/napi-rs/issues/1330)) ([4279291](https://github.com/napi-rs/napi-rs/commit/4279291f4ba9848b92f62b0fb496fe436fa5256c))\n- **napi-derive:** catch_unwind attribute ([#1280](https://github.com/napi-rs/napi-rs/issues/1280)) ([b7a3103](https://github.com/napi-rs/napi-rs/commit/b7a3103f0c80eef19d9fe653f3bc7fdd14f90df1))\n\n## [2.11.4](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.11.3...@napi-rs/cli@2.11.4) (2022-08-12)\n\n### Bug Fixes\n\n- **cli:** zig cross to \\*-apple-darwin target ([14aab06](https://github.com/napi-rs/napi-rs/commit/14aab065e7e7f3fe927d1dbb72bce8a8d419b711))\n\n## [2.11.3](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.11.2...@napi-rs/cli@2.11.3) (2022-08-12)\n\n### Bug Fixes\n\n- **cli:** ignore preinstall scripts on FreeBSD while installing yarn ([1d1ef3d](https://github.com/napi-rs/napi-rs/commit/1d1ef3d69eb5be24896e8c2c50499c8cc7a5471d))\n\n## [2.11.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.11.1...@napi-rs/cli@2.11.2) (2022-08-12)\n\n### Bug Fixes\n\n- **cli:** npm i -g flag is deprecated ([9b9cd5d](https://github.com/napi-rs/napi-rs/commit/9b9cd5d23b0f3be01b8b42bc808f96557c6e22e0))\n\n## [2.11.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.11.0...@napi-rs/cli@2.11.1) (2022-08-09)\n\n### Bug Fixes\n\n- **cli:** add .yarn and **test** folder to .npmignore ([1cf5a0d](https://github.com/napi-rs/napi-rs/commit/1cf5a0dc75c99628095cae0262fc47693fa08b63))\n\n## [2.11.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.10.3...@napi-rs/cli@2.11.0) (2022-08-07)\n\n- feat(cli): support npmClient config by @Brooooooklyn in https://github.com/napi-rs/napi-rs/pull/1253\n- feat(cli): use `CARGO_TARGET_DIR` if set by @amrbashir in https://github.com/napi-rs/napi-rs/pull/1251\n- chore(cli): improve `-.node` doesn't exist warning msg wording by @amrbashir in https://github.com/napi-rs/napi-rs/pull/1254\n- feat(cli): add an option to specify the github release name by @amrbashir in https://github.com/napi-rs/napi-rs/pull/1255\n- feat(cli): allow specifying an existing release by @amrbashir in https://github.com/napi-rs/napi-rs/pull/1256\n\n## [2.10.3](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.10.2...@napi-rs/cli@2.10.3) (2022-07-27)\n\n### Bug Fixes\n\n- **cli:** android build due to GitHub Actions environments change ([fd2060b](https://github.com/napi-rs/napi-rs/commit/fd2060baa49c1e7f815f9d95f79fdd8a496afba7))\n\n## [2.10.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.10.1...@napi-rs/cli@2.10.2) (2022-07-22)\n\n### Bug Fixes\n\n- **cli:** upgrade freebsd ci ([ed5fd40](https://github.com/napi-rs/napi-rs/commit/ed5fd4083c16832d01ce7c843f6b3c2acf2290a4))\n\n## [2.10.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.10.0...@napi-rs/cli@2.10.1) (2022-07-06)\n\n### Bug Fixes\n\n- **cli:** android CI template ([227de9e](https://github.com/napi-rs/napi-rs/commit/227de9efe0ff883af48be29996d436a185bc7ca6))\n\n# [2.10.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.9.0...@napi-rs/cli@2.10.0) (2022-06-10)\n\n### Bug Fixes\n\n- **cli:** parse host target triple from `rustc -vV` ([#1191](https://github.com/napi-rs/napi-rs/issues/1191)) ([beb7511](https://github.com/napi-rs/napi-rs/commit/beb75111fcf46f60edfc00d83f6141a67f145cb3))\n\n### Features\n\n- **cli:** upgrade new project template to yarn3 ([8f6a10c](https://github.com/napi-rs/napi-rs/commit/8f6a10c89a33cc61655ee204684d5535b51dd931))\n\n# [2.9.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.8.0...@napi-rs/cli@2.9.0) (2022-05-14)\n\n### Features\n\n- **cli:** allow specifying an alternative cargo binary via `CARGO` env var ([#1181](https://github.com/napi-rs/napi-rs/issues/1181)) ([1399288](https://github.com/napi-rs/napi-rs/commit/1399288df5b16fd615b2b0a5a24f72ac602635a4))\n\n# [2.8.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.8.0-alpha.0...@napi-rs/cli@2.8.0) (2022-05-07)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n# [2.8.0-alpha.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.7.0...@napi-rs/cli@2.8.0-alpha.0) (2022-05-06)\n\n### Features\n\n- **cli:** new command upgrade ([652aa3c](https://github.com/napi-rs/napi-rs/commit/652aa3cc57c6f4d5b72491f1ad3fc44ac8ab7780))\n\n# [2.7.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.6.2...@napi-rs/cli@2.7.0) (2022-04-27)\n\n### Bug Fixes\n\n- **cli:** generated type def on multi impl blocks ([c3a35a0](https://github.com/napi-rs/napi-rs/commit/c3a35a070440b1253c172a0e5e4be0a018206946))\n\n### Features\n\n- **cli:** add build option to not include the header in dts file ([#1140](https://github.com/napi-rs/napi-rs/issues/1140)) ([c390609](https://github.com/napi-rs/napi-rs/commit/c39060984d4cae560da7c1a7994ba6c1e33fa101))\n\n## [2.6.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.6.1...@napi-rs/cli@2.6.2) (2022-04-01)\n\n### Bug Fixes\n\n- cargo metadata with large project ([#1117](https://github.com/napi-rs/napi-rs/issues/1117)) ([6bef28a](https://github.com/napi-rs/napi-rs/commit/6bef28a59bcfe3850f8d31d6eeaffdba5c251050))\n\n## [2.6.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.6.0...@napi-rs/cli@2.6.1) (2022-04-01)\n\n### Bug Fixes\n\n- **cli:** should not throw if cargoName is provided but no package.name ([8700da1](https://github.com/napi-rs/napi-rs/commit/8700da17763ed5c9fd5ddda8f7a8af4d922ecbed))\n\n# [2.6.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.4.5...@napi-rs/cli@2.6.0) (2022-04-01)\n\n### Bug Fixes\n\n- **cli:** prevent crash if GITHUB_REPOSITORY is not specified ([ac8406c](https://github.com/napi-rs/napi-rs/commit/ac8406c8428227a1ee45c2b4606cc09eae6f44c5))\n- **cli:** respect CARGO_BUILD_TARGET env variable ([bd08787](https://github.com/napi-rs/napi-rs/commit/bd0878727036678eca984e754a1eeda9915f4042))\n- **cli:** use shell file path instead of commands for zig CC and CXX ([09ccfaa](https://github.com/napi-rs/napi-rs/commit/09ccfaad1d3c1fd00784aae4a2206366ea3123e8))\n\n### Features\n\n- **cli:** add libc filed in native package.json ([ee0279e](https://github.com/napi-rs/napi-rs/commit/ee0279e540238683a8f43cb92ef790e10a3591d9))\n- **cli:** add support for building binaries ([20b1edc](https://github.com/napi-rs/napi-rs/commit/20b1edc53b38fe3b4cf3c628351fcdfcdeff8037))\n- **cli:** upgrade ci.yml templates ([1cac0ac](https://github.com/napi-rs/napi-rs/commit/1cac0ac804d526932ccd1c24602976c7ce564a4e))\n\n# [2.5.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.4.5...@napi-rs/cli@2.5.0) (2022-03-22)\n\n### Bug Fixes\n\n- **cli:** use shell file path instead of commands for zig CC and CXX ([09ccfaa](https://github.com/napi-rs/napi-rs/commit/09ccfaad1d3c1fd00784aae4a2206366ea3123e8))\n\n### Features\n\n- **cli:** add libc filed in native package.json ([ee0279e](https://github.com/napi-rs/napi-rs/commit/ee0279e540238683a8f43cb92ef790e10a3591d9))\n- **cli:** upgrade ci.yml templates ([1cac0ac](https://github.com/napi-rs/napi-rs/commit/1cac0ac804d526932ccd1c24602976c7ce564a4e))\n\n## [2.4.5](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.4.4...@napi-rs/cli@2.4.5) (2022-03-05)\n\n### Bug Fixes\n\n- **cli:** temporary dts path may not be writable ([e69f023](https://github.com/napi-rs/napi-rs/commit/e69f0230c24cb74d55287fe191d05edf53d7830a))\n- **napi:** race issues with Node.js worker_thread ([#1081](https://github.com/napi-rs/napi-rs/issues/1081)) ([9f3fbaa](https://github.com/napi-rs/napi-rs/commit/9f3fbaa8e0b6c0bcdd740d39d16de35a4ec18aa8))\n\n## [2.4.4](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.4.3...@napi-rs/cli@2.4.4) (2022-02-11)\n\n### Bug Fixes\n\n- **cli:** generate ExternalObject type on demand ([f9c618e](https://github.com/napi-rs/napi-rs/commit/f9c618e0462c3f75593b0a980f4babcb265ffc0c))\n\n## [2.4.3](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.4.2...@napi-rs/cli@2.4.3) (2022-02-09)\n\n### Bug Fixes\n\n- **cli:** compatible for Node.js 10x ([5f359df](https://github.com/napi-rs/napi-rs/commit/5f359dfaae809a2b97a25b8ed12914152a9696d9))\n\n## [2.4.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.4.1...@napi-rs/cli@2.4.2) (2022-01-19)\n\n### Bug Fixes\n\n- **cli:** js binding template ([25f6754](https://github.com/napi-rs/napi-rs/commit/25f6754a71dfa4736c75eb91bf9f2562543f5d08))\n\n## [2.4.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.4.0...@napi-rs/cli@2.4.1) (2022-01-18)\n\n### Bug Fixes\n\n- **cli:** missing shebang in zig-cross sh file ([63a16d0](https://github.com/napi-rs/napi-rs/commit/63a16d0a27f09766a6dd557691d598758a147882))\n- **cli:** properly handle RUSTFLAGS env var ([d84cbe8](https://github.com/napi-rs/napi-rs/commit/d84cbe88bdcaadbc0b57c6b49b9d84e22020cf34))\n- **cli:** swap -lgcc_s with -lunwind ([1799aa9](https://github.com/napi-rs/napi-rs/commit/1799aa94e3132c425cfc47413b7c254d7f8f711e))\n\n# [2.4.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.3.1...@napi-rs/cli@2.4.0) (2022-01-13)\n\n### Bug Fixes\n\n- **cli:** zig abi should pass to linker ([95d49f8](https://github.com/napi-rs/napi-rs/commit/95d49f8cf4485fcf8a882291b9bd64d5667668c6))\n\n### Features\n\n- **cli:** add `--strip` option for removing symbols ([887bdb9](https://github.com/napi-rs/napi-rs/commit/887bdb9d2908576f5d3468cfdcf662538f1fbe8d))\n\n## [2.3.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.3.0...@napi-rs/cli@2.3.1) (2022-01-13)\n\n### Bug Fixes\n\n- **cli:** missing zig-abi-suffix support ([472ac10](https://github.com/napi-rs/napi-rs/commit/472ac10c67b7b239bb9bfcc3a1e897508cfc3314))\n\n# [2.3.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.2.1...@napi-rs/cli@2.3.0) (2022-01-06)\n\n### Features\n\n- **cli:** support macOS with --zig flag ([0db94cc](https://github.com/napi-rs/napi-rs/commit/0db94ccd669d095321a544a195f30fde6af71eec))\n\n## [2.2.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.2.0...@napi-rs/cli@2.2.1) (2022-01-04)\n\n### Bug Fixes\n\n- **cli:** fix crate-type hint ([894334e](https://github.com/napi-rs/napi-rs/commit/894334e8f1ba138d029cc861dfc836edc95c17d3))\n- **cli:** handle lld not found ([eb79cce](https://github.com/napi-rs/napi-rs/commit/eb79ccebbeb0f9d1a3b4f4eff5e9a7271ff6f431))\n- **cli:** shell: true instead of bash ([bc570c2](https://github.com/napi-rs/napi-rs/commit/bc570c29183f20139f8a80aa54d219cc1a590a2b))\n- **napi-derive,cli:** export type alias for original name ([556ace8](https://github.com/napi-rs/napi-rs/commit/556ace8f3302d9dd0b5aec237c3aa49caf58d7dd))\n- **napi-derive:** return instance from non-default constructor class ([e6a30ff](https://github.com/napi-rs/napi-rs/commit/e6a30ffcca38f1b6d72211931f32675a53f12dcf))\n\n# [2.2.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.1.0...@napi-rs/cli@2.2.0) (2021-12-22)\n\n### Features\n\n- **cli:** provide a way to override the native package name ([046f75d](https://github.com/napi-rs/napi-rs/commit/046f75dc29f8ea2319311006b2743749427d7ed4))\n\n# [2.1.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0...@napi-rs/cli@2.1.0) (2021-12-21)\n\n### Bug Fixes\n\n- **cli:** disable js binding generation if no --platform flag ([f577512](https://github.com/napi-rs/napi-rs/commit/f577512952b0409ab76422ce539872af16a98d77))\n- keep .d.ts and .js untouched if native doesn't change ([09c7df3](https://github.com/napi-rs/napi-rs/commit/09c7df3c5ce612736011079ddaffa5701522d811))\n\n### Features\n\n- **napi:** add ts typegen skip ([df9dc91](https://github.com/napi-rs/napi-rs/commit/df9dc91562e648b21eaa97bae9f2c9354ed1b976))\n\n# [2.0.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0-beta.5...@napi-rs/cli@2.0.0) (2021-12-17)\n\n**Note:** Version bump only for package @napi-rs/cli\n\n# [2.0.0-beta.5](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0-beta.4...@napi-rs/cli@2.0.0-beta.5) (2021-12-10)\n\n### Bug Fixes\n\n- **cli:** enum TypeScript type should be const enum ([f4b0a2e](https://github.com/napi-rs/napi-rs/commit/f4b0a2e3228eb9d6d2c8f51e31d250930799ce1d))\n- **cli:** preserve authors field while creating npm dir ([ecb6522](https://github.com/napi-rs/napi-rs/commit/ecb6522f508688e982d3649218334df4228d6edd))\n\n### Features\n\n- **cli:** provide rename command to rename everything in package-template project ([b977265](https://github.com/napi-rs/napi-rs/commit/b977265cfa06a1e33cca4b2579b561ed73f8a1b1))\n\n# [2.0.0-beta.4](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0-beta.3...@napi-rs/cli@2.0.0-beta.4) (2021-12-07)\n\n### Features\n\n- **cli:** workaround for Windows i686 ICE in dev mode ([11a5a35](https://github.com/napi-rs/napi-rs/commit/11a5a35485853c722d55dca32a6c3175ecdea8fb))\n\n### Reverts\n\n- Revert \"build(deps): bump chalk from 4.1.2 to 5.0.0\" ([8b362d8](https://github.com/napi-rs/napi-rs/commit/8b362d8eb1fcb3028e6621bf6f889890b97f28a9))\n\n# [2.0.0-beta.3](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0-beta.2...@napi-rs/cli@2.0.0-beta.3) (2021-12-03)\n\n### Features\n\n- **napi:** add -p flag which will be bypassed to cargo ([8de30a9](https://github.com/napi-rs/napi-rs/commit/8de30a9287b3586efe81edf4f2745032c07b298a))\n\n# [2.0.0-beta.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0-beta.1...@napi-rs/cli@2.0.0-beta.2) (2021-12-02)\n\n### Bug Fixes\n\n- **cli:** android armv7 CI config in new command ([d495cc1](https://github.com/napi-rs/napi-rs/commit/d495cc11f805e0c85327850f25d91e1d58c48ff2))\n\n# [2.0.0-beta.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0-beta.0...@napi-rs/cli@2.0.0-beta.1) (2021-12-02)\n\n### Bug Fixes\n\n- **cli:** missing exported enum ([d58e488](https://github.com/napi-rs/napi-rs/commit/d58e488fa210d83e8cac814ff207403d51a532ab))\n\n# [2.0.0-beta.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0-alpha.12...@napi-rs/cli@2.0.0-beta.0) (2021-12-02)\n\n### Features\n\n- **cli:** fail the pipeline if artifacts not been built ([5f22203](https://github.com/napi-rs/napi-rs/commit/5f222038d316b5e5b6ca2a1debd69e7c26843704))\n- **cli:** support android armv7 target ([68b0483](https://github.com/napi-rs/napi-rs/commit/68b0483c81c5cbddc7b0294ae36772701549cbe2))\n- **napi:** support TypedArray input and output ([d9c53d7](https://github.com/napi-rs/napi-rs/commit/d9c53d728be02b01f0e2ff19845cd652068f9303))\n\n# [2.0.0-alpha.12](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0-alpha.11...@napi-rs/cli@2.0.0-alpha.12) (2021-11-30)\n\n### Features\n\n- **napi:** output Rust doc comments in definitions as jsdoc comments ([18d2743](https://github.com/napi-rs/napi-rs/commit/18d2743862819a35261cc70556e44fbcfe8bb47d))\n\n# [2.0.0-alpha.11](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0-alpha.10...@napi-rs/cli@2.0.0-alpha.11) (2021-11-25)\n\n### Features\n\n- **napi:** support export rust mod as ts namespace ([1fe39ff](https://github.com/napi-rs/napi-rs/commit/1fe39ff66dceaacca7b99207e13ae1ab8f7bdf39))\n\n# [2.0.0-alpha.10](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0-alpha.9...@napi-rs/cli@2.0.0-alpha.10) (2021-11-21)\n\n### Features\n\n- **cli:** create pre-release if tag includes alpha/beta/rc ([7b797d3](https://github.com/napi-rs/napi-rs/commit/7b797d3caf2d7beaa8d48b73a585e5c4f4400532))\n\n# [2.0.0-alpha.9](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0-alpha.8...@napi-rs/cli@2.0.0-alpha.9) (2021-11-21)\n\n### Bug Fixes\n\n- **cli:** wrong release assets content ([458c5c9](https://github.com/napi-rs/napi-rs/commit/458c5c94574a6ee3563bc8c9953f09b74d794bdc))\n\n# [2.0.0-alpha.8](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0-alpha.7...@napi-rs/cli@2.0.0-alpha.8) (2021-11-21)\n\n### Features\n\n- **cli:** export android toolchains to PATH before build ([dca5ada](https://github.com/napi-rs/napi-rs/commit/dca5ada9959adb52db073c89f2823908d57c2a51))\n\n# [2.0.0-alpha.7](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0-alpha.6...@napi-rs/cli@2.0.0-alpha.7) (2021-11-21)\n\n### Bug Fixes\n\n- **cli:** ExternalObject type decalare ([1f64f9f](https://github.com/napi-rs/napi-rs/commit/1f64f9fbf3c9c36ea0f3a843a4754443d2d37daa))\n\n# [2.0.0-alpha.6](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0-alpha.5...@napi-rs/cli@2.0.0-alpha.6) (2021-11-21)\n\n### Features\n\n- **cli:** refactor cli build ([4c3fe26](https://github.com/napi-rs/napi-rs/commit/4c3fe2647871ca8eede3097235b8ff9acbe64d17))\n- **napi:** implement external value ([bdfb150](https://github.com/napi-rs/napi-rs/commit/bdfb1506a22d67633ef26db49a0e1b683cad9c19))\n\n# [2.0.0-alpha.5](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0-alpha.4...@napi-rs/cli@2.0.0-alpha.5) (2021-11-16)\n\n### Bug Fixes\n\n- always add a newline at the end of the file when generating js-binding.js ([753bb1e](https://github.com/napi-rs/napi-rs/commit/753bb1e31b375bb546523d372bcc0a079bae3ed5))\n\n### Features\n\n- **napi:** add pipe flag to pipe the generated files into custom command ([e37c3fd](https://github.com/napi-rs/napi-rs/commit/e37c3fd9089d13c7ee34109ad779b50c77f1b761))\n\n# [2.0.0-alpha.4](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0-alpha.3...@napi-rs/cli@2.0.0-alpha.4) (2021-11-09)\n\n### Features\n\n- **cli:** generate js binding to avoid dynamic require logic ([179f20a](https://github.com/napi-rs/napi-rs/commit/179f20a7c5d2b71bc0a0825816092390291ce23d))\n\n# [2.0.0-alpha.3](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0-alpha.2...@napi-rs/cli@2.0.0-alpha.3) (2021-10-27)\n\n### Bug Fixes\n\n- **cli:** workflow file generated by new command ([cbb71a9](https://github.com/napi-rs/napi-rs/commit/cbb71a9a516058afddb343be6a768201c2735e30))\n\n# [2.0.0-alpha.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@2.0.0-alpha.1...@napi-rs/cli@2.0.0-alpha.2) (2021-10-01)\n\n### Features\n\n- **cli:** strip android binary in CI ([1c9a307](https://github.com/napi-rs/napi-rs/commit/1c9a307dc9accd4a69aac0d1b19e77b1e3b6c086))\n\n# [2.0.0-alpha.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@1.3.3...@napi-rs/cli@2.0.0-alpha.1) (2021-10-01)\n\n### Bug Fixes\n\n- **cli:** missing main and types field in created package.json ([860a02a](https://github.com/napi-rs/napi-rs/commit/860a02a7cb575d8a33c2007ad38eda762e12ba79))\n\n### Features\n\n- **cli:** dts flag for build command ([0e8de17](https://github.com/napi-rs/napi-rs/commit/0e8de173a4519c70ab9fcf9a4e0ec01aaca64d97))\n\n# 2.0.0-alpha.0 (2021-09-22)\n\n## [1.3.3](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@1.3.2...@napi-rs/cli@1.3.3) (2021-09-19)\n\n### Bug Fixes\n\n- **cli:** version of binary optional dependencies should be pinned ([27dbca8](https://github.com/napi-rs/napi-rs/commit/27dbca814c90bacbbb54e75a66eee56cb7372324))\n\n## [1.3.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@1.3.1...@napi-rs/cli@1.3.2) (2021-09-14)\n\n### Bug Fixes\n\n- **cli:** cargo config path and ci template in new command ([c385254](https://github.com/napi-rs/napi-rs/commit/c3852543a59a945686464040dbb6e4109a51e400))\n\n## [1.3.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@1.3.0...@napi-rs/cli@1.3.1) (2021-09-02)\n\n### Bug Fixes\n\n- **cli:** ci template ([45d3e68](https://github.com/napi-rs/napi-rs/commit/45d3e68ff3307546de46650443fd8db0906a7856))\n- **cli:** missed inquirer dependency ([c303f35](https://github.com/napi-rs/napi-rs/commit/c303f358efc0cd66b0e5505749953fa8e536b7af))\n\n# [1.3.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@1.2.1...@napi-rs/cli@1.3.0) (2021-09-01)\n\n### Features\n\n- **cli:** add back new command ([2c23f44](https://github.com/napi-rs/napi-rs/commit/2c23f444b09fbecef21e36a22a35e472cecb9cd2))\n\n## [1.2.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@1.2.0...@napi-rs/cli@1.2.1) (2021-08-09)\n\n### Bug Fixes\n\n- **cli:** create dist dir if not existed while building ([e90ea93](https://github.com/napi-rs/napi-rs/commit/e90ea9304a2a3180148f7e8f9e5f63eeb374a3cf))\n\n# [1.2.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@1.1.0...@napi-rs/cli@1.2.0) (2021-08-06)\n\n### Features\n\n- **cli:** upgrade clipanion v3 ([67ad0a4](https://github.com/napi-rs/napi-rs/commit/67ad0a4d4daa0e0d14dc488bec190dcb27022634))\n\n# [1.1.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@1.0.4...@napi-rs/cli@1.1.0) (2021-06-07)\n\n### Features\n\n- **cli:** support skip gh-release in prepublish command ([253360e](https://github.com/napi-rs/napi-rs/commit/253360efb9a4675be88393d6a335ec75fbb326c8))\n- **cli:** update new project template ([9aac626](https://github.com/napi-rs/napi-rs/commit/9aac6267b72b3ef1a317d7e3a5a84827c6c37850))\n\n## [1.0.3](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@1.0.2...@napi-rs/cli@1.0.3) (2021-02-06)\n\n### Bug Fixes\n\n- **cli:** new command without npm scope ([5ef1887](https://github.com/napi-rs/napi-rs/commit/5ef1887ea96d529bf6bd4e52d6d77ffbd6baf13e))\n\n## [1.0.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@1.0.1...@napi-rs/cli@1.0.2) (2021-01-15)\n\n### Bug Fixes\n\n- **cli:** mkdir -p is not valid command in powershell ([84a6ea9](https://github.com/napi-rs/napi-rs/commit/84a6ea9223e4eabbf1feac6cf7a71211f3404ce7))\n\n## [1.0.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/cli@1.0.0-alpha.14...@napi-rs/cli@1.0.1) (2021-01-07)\n\n### Bug Fixes\n\n- **cli:** fix random node process got killed issue ([58d4634](https://github.com/napi-rs/napi-rs/commit/58d4634dacca673a83bf49cfb2dd15c7f8444865))\n\n# 1.0.0 (2020-12-29)\n"
  },
  {
    "path": "cli/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2020 LongYinan\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "cli/README.md",
    "content": "# `@napi-rs/cli`\n\n[![Download](https://img.shields.io/npm/dm/@napi-rs/cli)](https://www.npmjs.com/package/@napi-rs/cli)\n[![Install size](https://packagephobia.com/badge?p=@napi-rs/cli)](https://packagephobia.com/result?p=@napi-rs/cli)\n<a href=\"https://discord.gg/SpWzYHsKHs\">\n<img src=\"https://img.shields.io/discord/874290842444111882.svg?logo=discord&style=flat-square\"\n    alt=\"chat\" />\n</a>\n\n> Cli tools for napi-rs\n\n```sh\n# or npm, pnpm\nyarn add @napi-rs/cli -D\nyarn napi build\n```\n\n## Commands\n\n| Command         | desc                                                           | docs                                                |\n| --------------- | -------------------------------------------------------------- | --------------------------------------------------- |\n| new             | create new napi-rs project                                     | [./docs/new.md](./docs/new.md)                      |\n| build           | build napi-rs project                                          | [./docs/build.md](./docs/build.md)                  |\n| create-npm-dirs | Create npm package dirs for different platforms                | [./docs/create-npm-dirs](./docs/create-npm-dirs.md) |\n| artifacts       | Copy artifacts from Github Actions into specified dir          | [./docs/artifacts.md](./docs/artifacts.md)          |\n| rename          | Rename the napi-rs project                                     | [./docs/rename.md](./docs/rename.md)                |\n| universalize    | Combile built binaries into one universal binary               | [./docs/universalize.md](./docs/universalize.md)    |\n| version         | Update version in created npm packages by `create-npm-dirs`    | [./docs/version.md](./docs/version.md)              |\n| pre-publish     | Update package.json and copy addons into per platform packages | [./docs/pre-publish.md](./docs/pre-publish.md)      |\n\n### Debug mode\n\n```bash\nDEBUG=\"napi:*\" napi [command]\n```\n"
  },
  {
    "path": "cli/cli.mjs",
    "content": "#!/usr/bin/env node\n\nimport { execSync } from 'node:child_process'\nimport { resolve } from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nexecSync(\n  `node --import @oxc-node/core/register ${resolve(\n    fileURLToPath(import.meta.url),\n    '../src/cli.ts',\n  )} ${process.argv.slice(2).join(' ')}`,\n  {\n    stdio: 'inherit',\n  },\n)\n"
  },
  {
    "path": "cli/codegen/commands.ts",
    "content": "export interface ArgSchema {\n  name: string\n  type: 'string'\n  description: string\n  required?: boolean\n}\n\nexport interface OptionSchema {\n  name: string\n  type: string\n  description: string\n  required?: boolean\n  default?: any\n  short?: string[]\n  alias?: string[]\n  long?: string\n}\n\nexport interface CommandSchema {\n  name: string\n  alias?: string[]\n  description: string\n  args: ArgSchema[]\n  options: OptionSchema[]\n}\n\nexport type CommandDefineSchema = CommandSchema[]\n\nconst NEW_OPTIONS: CommandSchema = {\n  name: 'new',\n  description: 'Create a new project with pre-configured boilerplate',\n  args: [\n    {\n      name: 'path',\n      type: 'string',\n      description: 'The path where the NAPI-RS project will be created.',\n      required: false,\n    },\n  ],\n  options: [\n    {\n      name: 'name',\n      type: 'string',\n      description:\n        'The name of the project, default to the name of the directory if not provided',\n      short: ['n'],\n    },\n    {\n      name: 'minNodeApiVersion',\n      type: 'number',\n      description: 'The minimum Node-API version to support',\n      default: 4,\n      short: ['v'],\n      long: 'min-node-api',\n    },\n    {\n      name: 'packageManager',\n      type: 'string',\n      description: 'The package manager to use. Only support yarn 4.x for now.',\n      default: \"'yarn'\",\n    },\n    {\n      name: 'license',\n      type: 'string',\n      description: 'License for open-sourced project',\n      short: ['l'],\n      default: \"'MIT'\",\n    },\n    {\n      name: 'targets',\n      type: 'string[]',\n      description: 'All targets the crate will be compiled for.',\n      short: ['t'],\n      default: '[]',\n    },\n    {\n      name: 'enableDefaultTargets',\n      type: 'boolean',\n      description: 'Whether enable default targets',\n      default: true,\n    },\n    {\n      name: 'enableAllTargets',\n      type: 'boolean',\n      description: 'Whether enable all targets',\n      default: false,\n    },\n    {\n      name: 'enableTypeDef',\n      type: 'boolean',\n      description:\n        'Whether enable the `type-def` feature for typescript definitions auto-generation',\n      default: true,\n    },\n    {\n      name: 'enableGithubActions',\n      type: 'boolean',\n      description: 'Whether generate preconfigured GitHub Actions workflow',\n      default: true,\n    },\n    {\n      name: 'testFramework',\n      type: 'string',\n      description:\n        'The JavaScript test framework to use, only support `ava` for now',\n      default: \"'ava'\",\n    },\n    {\n      name: 'dryRun',\n      type: 'boolean',\n      description: 'Whether to run the command in dry-run mode',\n      default: false,\n    },\n  ],\n}\n\nconst BUILD_OPTIONS: CommandSchema = {\n  name: 'build',\n  description: 'Build the NAPI-RS project',\n  args: [],\n  options: [\n    {\n      name: 'target',\n      type: 'string',\n      description:\n        'Build for the target triple, bypassed to `cargo build --target`',\n      short: ['t'],\n    },\n    {\n      name: 'cwd',\n      type: 'string',\n      description:\n        'The working directory of where napi command will be executed in, all other paths options are relative to this path',\n    },\n    {\n      name: 'manifestPath',\n      type: 'string',\n      description: 'Path to `Cargo.toml`',\n    },\n    {\n      name: 'configPath',\n      type: 'string',\n      description: 'Path to `napi` config json file',\n      short: ['c'],\n    },\n    {\n      name: 'packageJsonPath',\n      type: 'string',\n      description: 'Path to `package.json`',\n    },\n    {\n      name: 'targetDir',\n      type: 'string',\n      description:\n        'Directory for all crate generated artifacts, see `cargo build --target-dir`',\n    },\n    {\n      name: 'outputDir',\n      type: 'string',\n      description:\n        'Path to where all the built files would be put. Default to the crate folder',\n      short: ['o'],\n    },\n    {\n      name: 'platform',\n      type: 'boolean',\n      description:\n        'Add platform triple to the generated nodejs binding file, eg: `[name].linux-x64-gnu.node`',\n    },\n    {\n      name: 'jsPackageName',\n      type: 'string',\n      description:\n        'Package name in generated js binding file. Only works with `--platform` flag',\n    },\n    {\n      name: 'constEnum',\n      type: 'boolean',\n      description: 'Whether generate const enum for typescript bindings',\n    },\n    {\n      name: 'jsBinding',\n      type: 'string',\n      description:\n        'Path and filename of generated JS binding file. Only works with `--platform` flag. Relative to `--output-dir`.',\n      long: 'js',\n    },\n    {\n      name: 'noJsBinding',\n      type: 'boolean',\n      description:\n        'Whether to disable the generation JS binding file. Only works with `--platform` flag.',\n      long: 'no-js',\n    },\n    {\n      name: 'dts',\n      type: 'string',\n      description:\n        'Path and filename of generated type def file. Relative to `--output-dir`',\n    },\n    {\n      name: 'dtsHeader',\n      type: 'string',\n      description:\n        'Custom file header for generated type def file. Only works when `typedef` feature enabled.',\n    },\n    {\n      name: 'noDtsHeader',\n      type: 'boolean',\n      description:\n        'Whether to disable the default file header for generated type def file. Only works when `typedef` feature enabled.',\n    },\n    {\n      name: 'dtsCache',\n      type: 'boolean',\n      description: 'Whether to enable the dts cache, default to true',\n      default: true,\n    },\n    {\n      name: 'esm',\n      type: 'boolean',\n      description:\n        'Whether to emit an ESM JS binding file instead of CJS format. Only works with `--platform` flag.',\n    },\n    {\n      name: 'strip',\n      type: 'boolean',\n      description: 'Whether strip the library to achieve the minimum file size',\n      short: ['s'],\n    },\n    {\n      name: 'release',\n      type: 'boolean',\n      description: 'Build in release mode',\n      short: ['r'],\n    },\n    {\n      name: 'verbose',\n      type: 'boolean',\n      description: 'Verbosely log build command trace',\n      short: ['v'],\n    },\n    {\n      name: 'bin',\n      type: 'string',\n      description: 'Build only the specified binary',\n    },\n    {\n      name: 'package',\n      type: 'string',\n      description: 'Build the specified library or the one at cwd',\n      short: ['p'],\n    },\n    {\n      name: 'profile',\n      type: 'string',\n      description: 'Build artifacts with the specified profile',\n    },\n    {\n      name: 'crossCompile',\n      type: 'boolean',\n      description:\n        '[experimental] cross-compile for the specified target with `cargo-xwin` on windows and `cargo-zigbuild` on other platform',\n      short: ['x'],\n    },\n    {\n      name: 'useCross',\n      type: 'boolean',\n      description:\n        '[experimental] use [cross](https://github.com/cross-rs/cross) instead of `cargo`',\n    },\n    {\n      name: 'useNapiCross',\n      type: 'boolean',\n      description:\n        '[experimental] use @napi-rs/cross-toolchain to cross-compile Linux arm/arm64/x64 gnu targets.',\n    },\n    {\n      name: 'watch',\n      type: 'boolean',\n      description:\n        'watch the crate changes and build continuously with `cargo-watch` crates',\n      short: ['w'],\n    },\n    {\n      name: 'features',\n      type: 'string[]',\n      description: 'Space-separated list of features to activate',\n      short: ['F'],\n    },\n    {\n      name: 'allFeatures',\n      type: 'boolean',\n      description: 'Activate all available features',\n    },\n    {\n      name: 'noDefaultFeatures',\n      type: 'boolean',\n      description: 'Do not activate the `default` feature',\n    },\n  ],\n}\n\nconst ARTIFACTS_OPTIONS: CommandSchema = {\n  name: 'artifacts',\n  description:\n    'Copy artifacts from Github Actions into npm packages and ready to publish',\n  args: [],\n  options: [\n    {\n      name: 'cwd',\n      type: 'string',\n      description:\n        'The working directory of where napi command will be executed in, all other paths options are relative to this path',\n      default: 'process.cwd()',\n    },\n    {\n      name: 'configPath',\n      type: 'string',\n      description: 'Path to `napi` config json file',\n      short: ['c'],\n    },\n    {\n      name: 'packageJsonPath',\n      type: 'string',\n      description: 'Path to `package.json`',\n      default: \"'package.json'\",\n    },\n    {\n      name: 'outputDir',\n      type: 'string',\n      description:\n        'Path to the folder where all built `.node` files put, same as `--output-dir` of build command',\n      short: ['o', 'd'],\n      default: \"'./artifacts'\",\n    },\n    {\n      name: 'npmDir',\n      type: 'string',\n      description: 'Path to the folder where the npm packages put',\n      default: \"'npm'\",\n    },\n    {\n      name: 'buildOutputDir',\n      type: 'string',\n      description:\n        'Path to the build output dir, only needed when targets contains `wasm32-wasi-*`',\n    },\n  ],\n}\n\nconst CREATE_NPM_DIRS_OPTIONS: CommandSchema = {\n  name: 'createNpmDirs',\n  description: 'Create npm package dirs for different platforms',\n  args: [],\n  options: [\n    {\n      name: 'cwd',\n      type: 'string',\n      description:\n        'The working directory of where napi command will be executed in, all other paths options are relative to this path',\n      default: 'process.cwd()',\n    },\n    {\n      name: 'configPath',\n      type: 'string',\n      description: 'Path to `napi` config json file',\n      short: ['c'],\n    },\n    {\n      name: 'packageJsonPath',\n      type: 'string',\n      description: 'Path to `package.json`',\n      default: \"'package.json'\",\n    },\n    {\n      name: 'npmDir',\n      type: 'string',\n      description: 'Path to the folder where the npm packages put',\n      default: \"'npm'\",\n    },\n    {\n      name: 'dryRun',\n      type: 'boolean',\n      description: 'Dry run without touching file system',\n      default: false,\n    },\n  ],\n}\n\nconst RENAME_OPTIONS: CommandSchema = {\n  name: 'rename',\n  description: 'Rename the NAPI-RS project',\n  args: [],\n  options: [\n    {\n      name: 'cwd',\n      type: 'string',\n      description:\n        'The working directory of where napi command will be executed in, all other paths options are relative to this path',\n      default: 'process.cwd()',\n    },\n    {\n      name: 'configPath',\n      type: 'string',\n      description: 'Path to `napi` config json file',\n      short: ['c'],\n    },\n    {\n      name: 'packageJsonPath',\n      type: 'string',\n      description: 'Path to `package.json`',\n      default: \"'package.json'\",\n    },\n    {\n      name: 'npmDir',\n      type: 'string',\n      description: 'Path to the folder where the npm packages put',\n      default: \"'npm'\",\n    },\n    {\n      name: 'name',\n      type: 'string',\n      description: 'The new name of the project',\n      short: ['n'],\n    },\n    {\n      name: 'binaryName',\n      type: 'string',\n      description: 'The new binary name *.node files',\n      short: ['b'],\n    },\n    {\n      name: 'packageName',\n      type: 'string',\n      description: 'The new package name of the project',\n    },\n    {\n      name: 'manifestPath',\n      type: 'string',\n      description: 'Path to `Cargo.toml`',\n      default: \"'Cargo.toml'\",\n    },\n    {\n      name: 'repository',\n      type: 'string',\n      description: 'The new repository of the project',\n    },\n    {\n      name: 'description',\n      type: 'string',\n      description: 'The new description of the project',\n    },\n  ],\n}\n\nconst UNIVERSALIZE_OPTIONS: CommandSchema = {\n  name: 'universalize',\n  description: 'Combile built binaries into one universal binary',\n  args: [],\n  options: [\n    {\n      name: 'cwd',\n      type: 'string',\n      description:\n        'The working directory of where napi command will be executed in, all other paths options are relative to this path',\n      default: 'process.cwd()',\n    },\n    {\n      name: 'configPath',\n      type: 'string',\n      description: 'Path to `napi` config json file',\n      short: ['c'],\n    },\n    {\n      name: 'packageJsonPath',\n      type: 'string',\n      description: 'Path to `package.json`',\n      default: \"'package.json'\",\n    },\n    {\n      name: 'outputDir',\n      type: 'string',\n      description:\n        'Path to the folder where all built `.node` files put, same as `--output-dir` of build command',\n      short: ['o'],\n      default: \"'./'\",\n    },\n  ],\n}\n\nconst VERSION_OPTIONS: CommandSchema = {\n  name: 'version',\n  description: 'Update version in created npm packages',\n  args: [],\n  options: [\n    {\n      name: 'cwd',\n      type: 'string',\n      description:\n        'The working directory of where napi command will be executed in, all other paths options are relative to this path',\n      default: 'process.cwd()',\n    },\n    {\n      name: 'configPath',\n      type: 'string',\n      description: 'Path to `napi` config json file',\n      short: ['c'],\n    },\n    {\n      name: 'packageJsonPath',\n      type: 'string',\n      description: 'Path to `package.json`',\n      default: \"'package.json'\",\n    },\n    {\n      name: 'npmDir',\n      type: 'string',\n      description: 'Path to the folder where the npm packages put',\n      default: \"'npm'\",\n    },\n  ],\n}\n\nconst PRE_PUBLISH_OPTIONS: CommandSchema = {\n  name: 'prePublish',\n  description: 'Update package.json and copy addons into per platform packages',\n  args: [],\n  // compatible with old command name\n  alias: ['prepublish'],\n  options: [\n    {\n      name: 'cwd',\n      type: 'string',\n      description:\n        'The working directory of where napi command will be executed in, all other paths options are relative to this path',\n      default: 'process.cwd()',\n    },\n    {\n      name: 'configPath',\n      type: 'string',\n      description: 'Path to `napi` config json file',\n      short: ['c'],\n    },\n    {\n      name: 'packageJsonPath',\n      type: 'string',\n      description: 'Path to `package.json`',\n      default: \"'package.json'\",\n    },\n    {\n      name: 'npmDir',\n      type: 'string',\n      description: 'Path to the folder where the npm packages put',\n      default: \"'npm'\",\n      short: ['p'],\n    },\n    {\n      name: 'tagStyle',\n      type: \"'npm' | 'lerna'\",\n      description: 'git tag style, `npm` or `lerna`',\n      default: \"'lerna'\",\n      alias: ['tagstyle'],\n      short: ['t'],\n    },\n    {\n      name: 'ghRelease',\n      type: 'boolean',\n      description: 'Whether create GitHub release',\n      default: true,\n    },\n    {\n      name: 'ghReleaseName',\n      type: 'string',\n      description: 'GitHub release name',\n    },\n    {\n      name: 'ghReleaseId',\n      type: 'string',\n      description: 'Existing GitHub release id',\n    },\n    {\n      name: 'skipOptionalPublish',\n      type: 'boolean',\n      description: 'Whether skip optionalDependencies packages publish',\n      default: false,\n    },\n    {\n      name: 'dryRun',\n      type: 'boolean',\n      description: 'Dry run without touching file system',\n      default: false,\n    },\n  ],\n}\n\nexport const commandDefines: CommandDefineSchema = [\n  NEW_OPTIONS,\n  BUILD_OPTIONS,\n  ARTIFACTS_OPTIONS,\n  CREATE_NPM_DIRS_OPTIONS,\n  RENAME_OPTIONS,\n  UNIVERSALIZE_OPTIONS,\n  VERSION_OPTIONS,\n  PRE_PUBLISH_OPTIONS,\n]\n"
  },
  {
    "path": "cli/codegen/index.ts",
    "content": "import { execSync } from 'node:child_process'\nimport fs from 'node:fs'\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nimport { kebabCase, startCase } from 'es-toolkit'\n\nimport { commandDefines, CommandSchema, OptionSchema } from './commands.js'\n\nconst __filename = fileURLToPath(import.meta.url)\nconst defFolder = path.join(__filename, '../../src/def')\nconst docsTargetFolder = path.join(__filename, '../../docs')\n\nfunction PascalCase(str: string) {\n  return startCase(str).replace(/\\s/g, '')\n}\n\n/**\n * convert command definition to command options interface\n */\nfunction generateOptionsDef(command: CommandSchema) {\n  const optionsName = `${PascalCase(command.name)}Options`\n\n  const optLines: string[] = []\n\n  optLines.push('/**')\n  optLines.push(` * ${command.description}`)\n  optLines.push(' */')\n  optLines.push(`export interface ${optionsName} {`)\n  command.args.forEach((arg) => {\n    optLines.push('  /**')\n    optLines.push(`   * ${arg.description}`)\n    optLines.push('   */')\n    optLines.push(`  ${arg.name}${arg.required ? '' : '?'}: ${arg.type}`)\n  })\n\n  command.options.forEach((opt) => {\n    optLines.push('  /**')\n    optLines.push(`   * ${opt.description}`)\n    if (typeof opt.default !== 'undefined') {\n      optLines.push('   *')\n      optLines.push(`   * @default ${opt.default}`)\n    }\n    optLines.push('   */')\n    optLines.push(`  ${opt.name}${opt.required ? '' : '?'}: ${opt.type}`)\n  })\n\n  optLines.push('}\\n')\n\n  if (command.options.some((opt) => typeof opt.default !== 'undefined')) {\n    optLines.push(\n      `export function applyDefault${optionsName}(options: ${optionsName}) {`,\n    )\n    optLines.push(`  return {`)\n    command.options.forEach((opt) => {\n      if (typeof opt.default !== 'undefined') {\n        optLines.push(`    ${opt.name}: ${opt.default},`)\n      }\n    })\n    optLines.push('    ...options,')\n    optLines.push('  }')\n    optLines.push('}\\n')\n  }\n\n  return optLines.join('\\n')\n}\n\nfunction getOptionDescriptor(opt: OptionSchema) {\n  let desc = `--${opt.long ?? kebabCase(opt.name)}`\n  if (opt.alias) {\n    desc += `,${opt.alias.map((alias) => `--${alias}`).join(',')}`\n  }\n  if (opt.short) {\n    desc += `,${opt.short.map((short) => `-${short}`).join(',')}`\n  }\n\n  return desc\n}\n\nfunction generateCommandDef(command: CommandSchema) {\n  const commandPath = kebabCase(command.name)\n  const avoidList = ['path', 'name']\n\n  const avoidName = (name: string) => {\n    return avoidList.includes(name) ? '$$' + name : name\n  }\n\n  const prepare: string[] = []\n  const cmdLines: string[] = []\n\n  let paths = `[['${commandPath}']]`\n\n  if (command.alias) {\n    command.alias.unshift(commandPath)\n    paths = `[${command.alias.map((alias) => `['${alias}']`).join(', ')}]`\n  }\n\n  cmdLines.push(`\nexport abstract class Base${PascalCase(command.name)}Command extends Command {\n  static paths = ${paths}\n\n  static usage = Command.Usage({\n    description: '${command.description}',\n  })\\n`)\n\n  command.args.forEach((arg) => {\n    cmdLines.push(\n      `  ${avoidName(arg.name)} = Option.String({ required: ${\n        arg.required ?? false\n      } })`,\n    )\n  })\n\n  cmdLines.push('')\n\n  command.options.forEach((opt) => {\n    const optName = avoidName(opt.name)\n    let optionType = ''\n\n    switch (opt.type) {\n      case 'number':\n        optionType = 'String'\n        prepare.push(\"import * as typanion from 'typanion'\")\n        break\n      case 'boolean':\n        optionType = 'Boolean'\n        break\n      case 'string[]':\n        optionType = 'Array'\n        break\n      case 'string':\n      default:\n        optionType = 'String'\n    }\n\n    const optionDesc = getOptionDescriptor(opt)\n\n    if (opt.required) {\n      cmdLines.push(`  ${optName} = Option.${optionType}('${optionDesc}', {`)\n      cmdLines.push('    required: true,')\n    } else if (typeof opt.default !== 'undefined') {\n      const defaultValue =\n        typeof opt.default === 'number'\n          ? `'${opt.default.toString()}'`\n          : opt.default\n      cmdLines.push(`  ${optName} = Option.${optionType}(`)\n      cmdLines.push(`    '${optionDesc}',`)\n      cmdLines.push(`    ${defaultValue},`)\n      cmdLines.push(`    {`)\n    } else {\n      cmdLines.push(\n        `  ${optName}?: ${opt.type} = Option.${optionType}('${optionDesc}', {`,\n      )\n    }\n\n    if (opt.type === 'number') {\n      cmdLines.push('    validator: typanion.isNumber(),')\n    }\n\n    cmdLines.push(`    description: '${opt.description}'`)\n    cmdLines.push('  })\\n')\n  })\n\n  cmdLines.push(`  getOptions() {`)\n  cmdLines.push(`    return {`)\n  command.args\n    .map(({ name }) => name)\n    .concat(command.options.map(({ name }) => name))\n    .forEach((name) => {\n      cmdLines.push(`      ${name}: this.${avoidName(name)},`)\n    })\n  cmdLines.push('    }')\n  cmdLines.push('  }')\n\n  cmdLines.push('}\\n')\n\n  return prepare.join('\\n') + '\\n' + cmdLines.join('\\n')\n}\n\nfunction generateDocs(command: CommandSchema, targetFolder: string): string {\n  const docsFileName = kebabCase(command.name)\n  const docsFile = path.join(targetFolder, `${docsFileName}.md`)\n\n  const options: string[] = []\n\n  command.args.forEach((arg) => {\n    options.push(\n      [\n        '',\n        arg.name,\n        `<${kebabCase(arg.name)}>`,\n        arg.required ? 'true' : 'false',\n        arg.type,\n        '',\n        arg.description,\n        '',\n      ].join('|'),\n    )\n  })\n\n  command.options.forEach((opt) => {\n    options.push(\n      [\n        '',\n        opt.name,\n        getOptionDescriptor(opt),\n        opt.type.replace(/\\|/g, '\\\\|'),\n        opt.required ? 'true' : 'false',\n        opt.default ?? '',\n        opt.description,\n        '',\n      ].join('|'),\n    )\n  })\n\n  const content = `# ${startCase(command.name)}\n\n> This file is generated by cli/codegen. Do not edit this file manually.\n\n${command.description}\n\n## Usage\n\n\\`\\`\\`sh\n# CLI\nnapi ${kebabCase(command.name)}${command.args.reduce(\n    (h, arg) => h + ` <${arg.name}>`,\n    '',\n  )} [--options]\n\\`\\`\\`\n\n\\`\\`\\`typescript\n// Programatically\nimport { NapiCli } from '@napi-rs/cli'\n\nnew NapiCli().${command.name}({\n  // options\n})\n\\`\\`\\`\n\n## Options\n\n| Options | CLI Options | type | required | default | description |\n| ------- | ----------- | ---- | -------- | ------- | ----------- |\n|         | --help,-h   |      |          |         | get help    |\n${options.join('\\n')}\n`\n\n  // make sure the target folder exists\n  fs.mkdirSync(targetFolder, { recursive: true })\n  // write file\n  fs.writeFileSync(docsFile, content)\n\n  return docsFile\n}\n\nfunction generateDef(cmd: CommandSchema, folder: string): string {\n  const defFileName = kebabCase(cmd.name)\n  const defFilePath = path.join(folder, `${defFileName}.ts`)\n\n  const def = `// This file is generated by codegen/index.ts\n// Do not edit this file manually\nimport { Command, Option } from 'clipanion'\n${generateCommandDef(cmd)}\n\n${generateOptionsDef(cmd)}\n`\n\n  // make sure the target folder exists\n  fs.mkdirSync(folder, { recursive: true })\n  // write file\n  fs.writeFileSync(defFilePath, def)\n\n  return defFilePath\n}\n\nfunction codegen() {\n  const outputs: string[] = []\n  commandDefines.forEach((command) => {\n    outputs.push(generateDef(command, defFolder))\n    outputs.push(generateDocs(command, docsTargetFolder))\n  })\n\n  outputs.forEach((output) => {\n    execSync(`yarn prettier -w ${output}`)\n  })\n}\n\ncodegen()\n"
  },
  {
    "path": "cli/docs/artifacts.md",
    "content": "# Artifacts\n\n> This file is generated by cli/codegen. Do not edit this file manually.\n\nCopy artifacts from Github Actions into npm packages and ready to publish\n\n## Usage\n\n```sh\n# CLI\nnapi artifacts [--options]\n```\n\n```typescript\n// Programatically\nimport { NapiCli } from '@napi-rs/cli'\n\nnew NapiCli().artifacts({\n  // options\n})\n```\n\n## Options\n\n| Options         | CLI Options         | type   | required | default        | description                                                                                                        |\n| --------------- | ------------------- | ------ | -------- | -------------- | ------------------------------------------------------------------------------------------------------------------ |\n|                 | --help,-h           |        |          |                | get help                                                                                                           |\n| cwd             | --cwd               | string | false    | process.cwd()  | The working directory of where napi command will be executed in, all other paths options are relative to this path |\n| configPath      | --config-path,-c    | string | false    |                | Path to `napi` config json file                                                                                    |\n| packageJsonPath | --package-json-path | string | false    | 'package.json' | Path to `package.json`                                                                                             |\n| outputDir       | --output-dir,-o,-d  | string | false    | './artifacts'  | Path to the folder where all built `.node` files put, same as `--output-dir` of build command                      |\n| npmDir          | --npm-dir           | string | false    | 'npm'          | Path to the folder where the npm packages put                                                                      |\n| buildOutputDir  | --build-output-dir  | string | false    |                | Path to the build output dir, only needed when targets contains `wasm32-wasi-*`                                    |\n"
  },
  {
    "path": "cli/docs/build.md",
    "content": "# Build\n\n> This file is generated by cli/codegen. Do not edit this file manually.\n\nBuild the NAPI-RS project\n\n## Usage\n\n```sh\n# CLI\nnapi build [--options]\n```\n\n```typescript\n// Programatically\nimport { NapiCli } from '@napi-rs/cli'\n\nnew NapiCli().build({\n  // options\n})\n```\n\n## Options\n\n| Options           | CLI Options           | type     | required | default | description                                                                                                               |\n| ----------------- | --------------------- | -------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------- |\n|                   | --help,-h             |          |          |         | get help                                                                                                                  |\n| target            | --target,-t           | string   | false    |         | Build for the target triple, bypassed to `cargo build --target`                                                           |\n| cwd               | --cwd                 | string   | false    |         | The working directory of where napi command will be executed in, all other paths options are relative to this path        |\n| manifestPath      | --manifest-path       | string   | false    |         | Path to `Cargo.toml`                                                                                                      |\n| configPath        | --config-path,-c      | string   | false    |         | Path to `napi` config json file                                                                                           |\n| packageJsonPath   | --package-json-path   | string   | false    |         | Path to `package.json`                                                                                                    |\n| targetDir         | --target-dir          | string   | false    |         | Directory for all crate generated artifacts, see `cargo build --target-dir`                                               |\n| outputDir         | --output-dir,-o       | string   | false    |         | Path to where all the built files would be put. Default to the crate folder                                               |\n| platform          | --platform            | boolean  | false    |         | Add platform triple to the generated nodejs binding file, eg: `[name].linux-x64-gnu.node`                                 |\n| jsPackageName     | --js-package-name     | string   | false    |         | Package name in generated js binding file. Only works with `--platform` flag                                              |\n| constEnum         | --const-enum          | boolean  | false    |         | Whether generate const enum for typescript bindings                                                                       |\n| jsBinding         | --js                  | string   | false    |         | Path and filename of generated JS binding file. Only works with `--platform` flag. Relative to `--output-dir`.            |\n| noJsBinding       | --no-js               | boolean  | false    |         | Whether to disable the generation JS binding file. Only works with `--platform` flag.                                     |\n| dts               | --dts                 | string   | false    |         | Path and filename of generated type def file. Relative to `--output-dir`                                                  |\n| dtsHeader         | --dts-header          | string   | false    |         | Custom file header for generated type def file. Only works when `typedef` feature enabled.                                |\n| noDtsHeader       | --no-dts-header       | boolean  | false    |         | Whether to disable the default file header for generated type def file. Only works when `typedef` feature enabled.        |\n| dtsCache          | --dts-cache           | boolean  | false    | true    | Whether to enable the dts cache, default to true                                                                          |\n| esm               | --esm                 | boolean  | false    |         | Whether to emit an ESM JS binding file instead of CJS format. Only works with `--platform` flag.                          |\n| strip             | --strip,-s            | boolean  | false    |         | Whether strip the library to achieve the minimum file size                                                                |\n| release           | --release,-r          | boolean  | false    |         | Build in release mode                                                                                                     |\n| verbose           | --verbose,-v          | boolean  | false    |         | Verbosely log build command trace                                                                                         |\n| bin               | --bin                 | string   | false    |         | Build only the specified binary                                                                                           |\n| package           | --package,-p          | string   | false    |         | Build the specified library or the one at cwd                                                                             |\n| profile           | --profile             | string   | false    |         | Build artifacts with the specified profile                                                                                |\n| crossCompile      | --cross-compile,-x    | boolean  | false    |         | [experimental] cross-compile for the specified target with `cargo-xwin` on windows and `cargo-zigbuild` on other platform |\n| useCross          | --use-cross           | boolean  | false    |         | [experimental] use [cross](https://github.com/cross-rs/cross) instead of `cargo`                                          |\n| useNapiCross      | --use-napi-cross      | boolean  | false    |         | [experimental] use @napi-rs/cross-toolchain to cross-compile Linux arm/arm64/x64 gnu targets.                             |\n| watch             | --watch,-w            | boolean  | false    |         | watch the crate changes and build continuously with `cargo-watch` crates                                                  |\n| features          | --features,-F         | string[] | false    |         | Space-separated list of features to activate                                                                              |\n| allFeatures       | --all-features        | boolean  | false    |         | Activate all available features                                                                                           |\n| noDefaultFeatures | --no-default-features | boolean  | false    |         | Do not activate the `default` feature                                                                                     |\n"
  },
  {
    "path": "cli/docs/create-npm-dirs.md",
    "content": "# Create Npm Dirs\n\n> This file is generated by cli/codegen. Do not edit this file manually.\n\nCreate npm package dirs for different platforms\n\n## Usage\n\n```sh\n# CLI\nnapi create-npm-dirs [--options]\n```\n\n```typescript\n// Programatically\nimport { NapiCli } from '@napi-rs/cli'\n\nnew NapiCli().createNpmDirs({\n  // options\n})\n```\n\n## Options\n\n| Options         | CLI Options         | type    | required | default        | description                                                                                                        |\n| --------------- | ------------------- | ------- | -------- | -------------- | ------------------------------------------------------------------------------------------------------------------ |\n|                 | --help,-h           |         |          |                | get help                                                                                                           |\n| cwd             | --cwd               | string  | false    | process.cwd()  | The working directory of where napi command will be executed in, all other paths options are relative to this path |\n| configPath      | --config-path,-c    | string  | false    |                | Path to `napi` config json file                                                                                    |\n| packageJsonPath | --package-json-path | string  | false    | 'package.json' | Path to `package.json`                                                                                             |\n| npmDir          | --npm-dir           | string  | false    | 'npm'          | Path to the folder where the npm packages put                                                                      |\n| dryRun          | --dry-run           | boolean | false    | false          | Dry run without touching file system                                                                               |\n"
  },
  {
    "path": "cli/docs/new.md",
    "content": "# New\n\n> This file is generated by cli/codegen. Do not edit this file manually.\n\nCreate a new project with pre-configured boilerplate\n\n## Usage\n\n```sh\n# CLI\nnapi new <path> [--options]\n```\n\n```typescript\n// Programatically\nimport { NapiCli } from '@napi-rs/cli'\n\nnew NapiCli().new({\n  // options\n})\n```\n\n## Options\n\n| Options              | CLI Options              | type     | required | default | description                                                                      |\n| -------------------- | ------------------------ | -------- | -------- | ------- | -------------------------------------------------------------------------------- |\n|                      | --help,-h                |          |          |         | get help                                                                         |\n| path                 | <path>                   | false    | string   |         | The path where the NAPI-RS project will be created.                              |\n| name                 | --name,-n                | string   | false    |         | The name of the project, default to the name of the directory if not provided    |\n| minNodeApiVersion    | --min-node-api,-v        | number   | false    | 4       | The minimum Node-API version to support                                          |\n| packageManager       | --package-manager        | string   | false    | 'yarn'  | The package manager to use. Only support yarn 4.x for now.                       |\n| license              | --license,-l             | string   | false    | 'MIT'   | License for open-sourced project                                                 |\n| targets              | --targets,-t             | string[] | false    | []      | All targets the crate will be compiled for.                                      |\n| enableDefaultTargets | --enable-default-targets | boolean  | false    | true    | Whether enable default targets                                                   |\n| enableAllTargets     | --enable-all-targets     | boolean  | false    | false   | Whether enable all targets                                                       |\n| enableTypeDef        | --enable-type-def        | boolean  | false    | true    | Whether enable the `type-def` feature for typescript definitions auto-generation |\n| enableGithubActions  | --enable-github-actions  | boolean  | false    | true    | Whether generate preconfigured GitHub Actions workflow                           |\n| testFramework        | --test-framework         | string   | false    | 'ava'   | The JavaScript test framework to use, only support `ava` for now                 |\n| dryRun               | --dry-run                | boolean  | false    | false   | Whether to run the command in dry-run mode                                       |\n"
  },
  {
    "path": "cli/docs/pre-publish.md",
    "content": "# Pre Publish\n\n> This file is generated by cli/codegen. Do not edit this file manually.\n\nUpdate package.json and copy addons into per platform packages\n\n## Usage\n\n```sh\n# CLI\nnapi pre-publish [--options]\n```\n\n```typescript\n// Programatically\nimport { NapiCli } from '@napi-rs/cli'\n\nnew NapiCli().prePublish({\n  // options\n})\n```\n\n## Options\n\n| Options             | CLI Options               | type             | required | default        | description                                                                                                        |\n| ------------------- | ------------------------- | ---------------- | -------- | -------------- | ------------------------------------------------------------------------------------------------------------------ |\n|                     | --help,-h                 |                  |          |                | get help                                                                                                           |\n| cwd                 | --cwd                     | string           | false    | process.cwd()  | The working directory of where napi command will be executed in, all other paths options are relative to this path |\n| configPath          | --config-path,-c          | string           | false    |                | Path to `napi` config json file                                                                                    |\n| packageJsonPath     | --package-json-path       | string           | false    | 'package.json' | Path to `package.json`                                                                                             |\n| npmDir              | --npm-dir,-p              | string           | false    | 'npm'          | Path to the folder where the npm packages put                                                                      |\n| tagStyle            | --tag-style,--tagstyle,-t | 'npm' \\| 'lerna' | false    | 'lerna'        | git tag style, `npm` or `lerna`                                                                                    |\n| ghRelease           | --gh-release              | boolean          | false    | true           | Whether create GitHub release                                                                                      |\n| ghReleaseName       | --gh-release-name         | string           | false    |                | GitHub release name                                                                                                |\n| ghReleaseId         | --gh-release-id           | string           | false    |                | Existing GitHub release id                                                                                         |\n| skipOptionalPublish | --skip-optional-publish   | boolean          | false    | false          | Whether skip optionalDependencies packages publish                                                                 |\n| dryRun              | --dry-run                 | boolean          | false    | false          | Dry run without touching file system                                                                               |\n"
  },
  {
    "path": "cli/docs/rename.md",
    "content": "# Rename\n\n> This file is generated by cli/codegen. Do not edit this file manually.\n\nRename the NAPI-RS project\n\n## Usage\n\n```sh\n# CLI\nnapi rename [--options]\n```\n\n```typescript\n// Programatically\nimport { NapiCli } from '@napi-rs/cli'\n\nnew NapiCli().rename({\n  // options\n})\n```\n\n## Options\n\n| Options         | CLI Options         | type   | required | default        | description                                                                                                        |\n| --------------- | ------------------- | ------ | -------- | -------------- | ------------------------------------------------------------------------------------------------------------------ |\n|                 | --help,-h           |        |          |                | get help                                                                                                           |\n| cwd             | --cwd               | string | false    | process.cwd()  | The working directory of where napi command will be executed in, all other paths options are relative to this path |\n| configPath      | --config-path,-c    | string | false    |                | Path to `napi` config json file                                                                                    |\n| packageJsonPath | --package-json-path | string | false    | 'package.json' | Path to `package.json`                                                                                             |\n| npmDir          | --npm-dir           | string | false    | 'npm'          | Path to the folder where the npm packages put                                                                      |\n| name            | --name,-n           | string | false    |                | The new name of the project                                                                                        |\n| binaryName      | --binary-name,-b    | string | false    |                | The new binary name \\*.node files                                                                                  |\n| packageName     | --package-name      | string | false    |                | The new package name of the project                                                                                |\n| manifestPath    | --manifest-path     | string | false    | 'Cargo.toml'   | Path to `Cargo.toml`                                                                                               |\n| repository      | --repository        | string | false    |                | The new repository of the project                                                                                  |\n| description     | --description       | string | false    |                | The new description of the project                                                                                 |\n"
  },
  {
    "path": "cli/docs/universalize.md",
    "content": "# Universalize\n\n> This file is generated by cli/codegen. Do not edit this file manually.\n\nCombile built binaries into one universal binary\n\n## Usage\n\n```sh\n# CLI\nnapi universalize [--options]\n```\n\n```typescript\n// Programatically\nimport { NapiCli } from '@napi-rs/cli'\n\nnew NapiCli().universalize({\n  // options\n})\n```\n\n## Options\n\n| Options         | CLI Options         | type   | required | default        | description                                                                                                        |\n| --------------- | ------------------- | ------ | -------- | -------------- | ------------------------------------------------------------------------------------------------------------------ |\n|                 | --help,-h           |        |          |                | get help                                                                                                           |\n| cwd             | --cwd               | string | false    | process.cwd()  | The working directory of where napi command will be executed in, all other paths options are relative to this path |\n| configPath      | --config-path,-c    | string | false    |                | Path to `napi` config json file                                                                                    |\n| packageJsonPath | --package-json-path | string | false    | 'package.json' | Path to `package.json`                                                                                             |\n| outputDir       | --output-dir,-o     | string | false    | './'           | Path to the folder where all built `.node` files put, same as `--output-dir` of build command                      |\n"
  },
  {
    "path": "cli/docs/version.md",
    "content": "# Version\n\n> This file is generated by cli/codegen. Do not edit this file manually.\n\nUpdate version in created npm packages\n\n## Usage\n\n```sh\n# CLI\nnapi version [--options]\n```\n\n```typescript\n// Programatically\nimport { NapiCli } from '@napi-rs/cli'\n\nnew NapiCli().version({\n  // options\n})\n```\n\n## Options\n\n| Options         | CLI Options         | type   | required | default        | description                                                                                                        |\n| --------------- | ------------------- | ------ | -------- | -------------- | ------------------------------------------------------------------------------------------------------------------ |\n|                 | --help,-h           |        |          |                | get help                                                                                                           |\n| cwd             | --cwd               | string | false    | process.cwd()  | The working directory of where napi command will be executed in, all other paths options are relative to this path |\n| configPath      | --config-path,-c    | string | false    |                | Path to `napi` config json file                                                                                    |\n| packageJsonPath | --package-json-path | string | false    | 'package.json' | Path to `package.json`                                                                                             |\n| npmDir          | --npm-dir           | string | false    | 'npm'          | Path to the folder where the npm packages put                                                                      |\n"
  },
  {
    "path": "cli/e2e/cli.spec.ts",
    "content": "import { exec, type ExecOptions } from 'node:child_process'\nimport { join } from 'node:path'\n// use posix path to prevent `\\` on Windows\nimport { join as posixJoin } from 'node:path/posix'\nimport { tmpdir } from 'node:os'\nimport { existsSync } from 'node:fs'\nimport { mkdir, rm, writeFile } from 'node:fs/promises'\n\nimport ava, { type TestFn } from 'ava'\n\nimport packageJson from '../package.json' with { type: 'json' }\nimport { fileURLToPath } from 'node:url'\n\nconst test = ava as TestFn<{\n  context: string\n}>\n\nconst rootDir = join(fileURLToPath(import.meta.url), '..', '..', '..')\nconst rootDirPosix = posixJoin(\n  fileURLToPath(import.meta.url, {\n    windows: false,\n  }),\n  '..',\n  '..',\n  '..',\n)\n\ntest.before(async () => {\n  await execAsync(`yarn workspace @napi-rs/cli build`, {\n    cwd: rootDir,\n  })\n  await execAsync(`npm pack`, {\n    cwd: join(rootDir, 'cli'),\n  })\n})\n\ntest.beforeEach(async (t) => {\n  const random = Math.random().toString(36).slice(2)\n  t.context.context = join(tmpdir(), 'napi-rs-cli-e2e', random)\n  await mkdir(t.context.context, { recursive: true })\n  await writePackageJson(t.context.context, {})\n  await execAsync(`npm install`, {\n    cwd: t.context.context,\n  })\n})\n\ntest.afterEach(async (t) => {\n  await rm(t.context.context, { recursive: true, force: true })\n})\n\ntest('should print help', async (t) => {\n  const bin = join(t.context.context, 'node_modules', '.bin')\n  await execAsync(`${bin}/napi --help`)\n  await execAsync(`${bin}/napi build --help`)\n  await execAsync(`${bin}/napi version --help`)\n  await execAsync(`${bin}/napi pre-publish --help`)\n  await execAsync(`${bin}/napi create-npm-dirs --help`)\n  await execAsync(`${bin}/napi new --help`)\n  await execAsync(`${bin}/napi rename --help`)\n  await execAsync(`${bin}/napi version --help`)\n  t.pass()\n})\n\ntest('should be able to build a project', async (t) => {\n  const { context } = t.context\n  await writeCargoToml(context)\n  await writePackageJson(context, {})\n  const bin = join(context, 'node_modules', '.bin')\n  await execAsync(`${bin}/napi build`, {\n    cwd: context,\n    env: {\n      ...process.env,\n      DEBUG: 'napi:*',\n    },\n  })\n  t.truthy(existsSync(join(context, 'index.node')))\n})\n\ntest('should throw error when duplicate targets are provided', async (t) => {\n  const { context } = t.context\n  await writeCargoToml(context)\n  await writePackageJson(context, {\n    napi: {\n      targets: ['aarch64-apple-darwin', 'aarch64-apple-darwin'],\n    },\n  })\n  const bin = join(context, 'node_modules', '.bin')\n  let errMsg = ''\n  const cp = exec(\n    `${bin}/napi build`,\n    {\n      encoding: 'utf8',\n      cwd: context,\n      env: {\n        ...process.env,\n        FORCE_COLOR: '0',\n      },\n    },\n    (_, stdout) => {\n      errMsg += stdout\n    },\n  )\n  await new Promise<void>((resolve) => {\n    cp.on('close', () => {\n      resolve()\n    })\n  })\n  t.truthy(\n    errMsg\n      .trim()\n      .startsWith(\n        'Internal Error: Duplicate targets are not allowed: aarch64-apple-darwin',\n      ),\n  )\n})\n\nasync function execAsync(command: string, options: ExecOptions = {}) {\n  return new Promise<void>((resolve, reject) => {\n    const cp = exec(command, options, (_, stdout, stderr) => {\n      process.stdout.write(stdout)\n      process.stderr.write(stderr)\n    })\n    cp.on('close', (code) => {\n      if (code !== 0) {\n        reject(new Error(`Command ${command} failed with code ${code}`))\n      }\n      resolve()\n    })\n  })\n}\n\nasync function writeCargoToml(projectDir: string, cargoToml: string = '') {\n  await writeFile(\n    join(projectDir, 'Cargo.toml'),\n    `[package]\nname = \"napi-rs-cli-e2e\"\nversion = \"1.0.0\"\nauthors = [\"napi-rs <dev@napi.rs>\"]\nedition = \"2021\"\n[lib]\ncrate-type = [\"cdylib\"]\n[dependencies]\nnapi = { path = \"${posixJoin(rootDirPosix, 'crates', 'napi').substring(process.platform === 'win32' ? 1 : 0)}\" }\nnapi-derive = { path = \"${posixJoin(rootDirPosix, 'crates', 'macro').substring(process.platform === 'win32' ? 1 : 0)}\" }\n[build-dependencies]\nnapi-build = { path = \"${posixJoin(rootDirPosix, 'crates', 'build').substring(process.platform === 'win32' ? 1 : 0)}\" }\n${cargoToml}\n`,\n  )\n\n  await mkdir(join(projectDir, 'src'), { recursive: true })\n  await writeFile(\n    join(projectDir, 'src', 'lib.rs'),\n    `use napi_derive::napi;\n\n#[napi]\npub fn hello() -> String {\n    \"Hello, world!\".to_string()\n}\n    `,\n  )\n  await writeFile(\n    join(projectDir, 'build.rs'),\n    `fn main() {\n  napi_build::setup();\n}`,\n  )\n}\n\nasync function writePackageJson(\n  projectDir: string,\n  extraPackageJson: Record<string, any>,\n) {\n  await writeFile(\n    join(projectDir, 'package.json'),\n    JSON.stringify(\n      {\n        name: 'napi-rs-cli-e2e',\n        version: '1.0.0',\n        private: true,\n        devDependencies: {\n          '@napi-rs/cli': `file://${posixJoin(rootDirPosix, 'cli', `napi-rs-cli-${packageJson.version}.tgz`)}`,\n        },\n        ...extraPackageJson,\n      },\n      null,\n      2,\n    ),\n  )\n}\n"
  },
  {
    "path": "cli/package.json",
    "content": "{\n  \"name\": \"@napi-rs/cli\",\n  \"version\": \"3.5.1\",\n  \"description\": \"Cli tools for napi-rs\",\n  \"author\": \"LongYinan <lynweklm@gmail.com>\",\n  \"homepage\": \"https://napi.rs/\",\n  \"license\": \"MIT\",\n  \"type\": \"module\",\n  \"engines\": {\n    \"node\": \">= 16\"\n  },\n  \"bin\": {\n    \"napi\": \"./dist/cli.js\",\n    \"napi-raw\": \"./cli.mjs\"\n  },\n  \"main\": \"./dist/index.cjs\",\n  \"module\": \"./dist/index.js\",\n  \"types\": \"./dist/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./dist/index.js\",\n      \"require\": \"./dist/index.cjs\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"files\": [\n    \"dist\",\n    \"src\",\n    \"!__tests__\"\n  ],\n  \"keywords\": [\n    \"cli\",\n    \"rust\",\n    \"napi\",\n    \"n-api\",\n    \"node-api\",\n    \"node-addon\",\n    \"neon\"\n  ],\n  \"maintainers\": [\n    {\n      \"name\": \"LongYinan\",\n      \"email\": \"lynweklm@gmail.com\",\n      \"homepage\": \"https://github.com/Brooooooklyn\"\n    },\n    {\n      \"name\": \"forehalo\",\n      \"homepage\": \"https://github.com/forehalo\"\n    }\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/napi-rs/napi-rs.git\"\n  },\n  \"publishConfig\": {\n    \"registry\": \"https://registry.npmjs.org/\",\n    \"access\": \"public\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/napi-rs/napi-rs/issues\"\n  },\n  \"dependencies\": {\n    \"@inquirer/prompts\": \"^8.0.0\",\n    \"@napi-rs/cross-toolchain\": \"^1.0.3\",\n    \"@napi-rs/wasm-tools\": \"^1.0.1\",\n    \"@octokit/rest\": \"^22.0.1\",\n    \"clipanion\": \"^4.0.0-rc.4\",\n    \"colorette\": \"^2.0.20\",\n    \"emnapi\": \"^1.7.1\",\n    \"es-toolkit\": \"^1.41.0\",\n    \"js-yaml\": \"^4.1.0\",\n    \"obug\": \"^2.0.0\",\n    \"semver\": \"^7.7.3\",\n    \"typanion\": \"^3.14.0\"\n  },\n  \"devDependencies\": {\n    \"@emnapi/runtime\": \"^1.7.1\",\n    \"@oxc-node/core\": \"^0.0.35\",\n    \"@std/toml\": \"npm:@jsr/std__toml@^1.0.11\",\n    \"@types/inquirer\": \"^9.0.9\",\n    \"@types/js-yaml\": \"^4.0.9\",\n    \"@types/node\": \"^24.10.0\",\n    \"@types/semver\": \"^7.7.1\",\n    \"ava\": \"^7.0.0\",\n    \"empathic\": \"^2.0.0\",\n    \"env-paths\": \"^4.0.0\",\n    \"prettier\": \"^3.6.2\",\n    \"tsdown\": \"^0.21.0\",\n    \"tslib\": \"^2.8.1\",\n    \"typescript\": \"^5.9.3\"\n  },\n  \"peerDependencies\": {\n    \"@emnapi/runtime\": \"^1.7.1\"\n  },\n  \"peerDependenciesMeta\": {\n    \"@emnapi/runtime\": {\n      \"optional\": true\n    }\n  },\n  \"funding\": {\n    \"type\": \"github\",\n    \"url\": \"https://github.com/sponsors/Brooooooklyn\"\n  },\n  \"scripts\": {\n    \"codegen\": \"node --import @oxc-node/core/register ./codegen/index.ts\",\n    \"build\": \"tsdown\",\n    \"test\": \"node --import @oxc-node/core/register ../node_modules/ava/entrypoints/cli.mjs\"\n  },\n  \"ava\": {\n    \"extensions\": {\n      \"ts\": \"module\"\n    },\n    \"timeout\": \"2m\",\n    \"workerThreads\": false,\n    \"files\": [\n      \"**/__tests__/**/*.spec.ts\",\n      \"e2e/**/*.spec.ts\"\n    ]\n  }\n}\n"
  },
  {
    "path": "cli/src/api/__tests__/build.spec.ts",
    "content": "import { existsSync } from 'node:fs'\nimport { exec } from 'node:child_process'\nimport {\n  copyFile,\n  mkdir,\n  readFile,\n  readdir,\n  rm,\n  stat,\n  writeFile,\n} from 'node:fs/promises'\nimport { tmpdir } from 'node:os'\nimport { join, dirname, resolve } from 'node:path'\nimport { join as posixJoin, sep as posixSep } from 'node:path/posix'\nimport { sep as win32Sep } from 'node:path/win32'\nimport { fileURLToPath } from 'node:url'\n\nimport ava, { type TestFn } from 'ava'\n\nimport { generateTypeDef, writeJsBinding } from '../build.js'\nimport { getSystemDefaultTarget } from '../../utils/index.js'\n\nconst __dirname = dirname(fileURLToPath(import.meta.url))\nconst repoRoot = resolve(__dirname, '../../../..')\n\nconst test = ava as TestFn<{\n  tmpDir: string\n  projectDir: string\n  typeDefDir: string\n}>\n\ntest.beforeEach(async (t) => {\n  const timestamp = Date.now()\n  const random = Math.random().toString(36).substring(7)\n  const tmpDir = posixJoin(\n    tmpdir(),\n    'napi-rs-test',\n    `build-spec-${timestamp}-${random}`,\n  )\n  const projectDir = posixJoin(tmpDir, 'project')\n  const typeDefDir = posixJoin(projectDir, 'target', 'type-def')\n\n  await mkdir(typeDefDir, { recursive: true })\n\n  t.context = { tmpDir, projectDir, typeDefDir }\n})\n\ntest.afterEach.always(async (t) => {\n  if (existsSync(t.context.tmpDir)) {\n    await rm(t.context.tmpDir, { recursive: true, force: true })\n  }\n})\n\ntest('build pipeline generates bindings and artifacts', async (t) => {\n  const { projectDir, typeDefDir } = t.context\n  const crateName = 'build_integration'\n  const binaryName = 'build-integration'\n  const packageName = 'build-integration'\n  const version = '0.1.0'\n  const target = getSystemDefaultTarget()\n\n  const napiPath = posixJoin(repoRoot, 'crates', 'napi').replaceAll(\n    win32Sep,\n    posixSep,\n  )\n  const napiDerivePath = posixJoin(repoRoot, 'crates', 'macro').replaceAll(\n    win32Sep,\n    posixSep,\n  )\n  const napiBuildPath = posixJoin(repoRoot, 'crates', 'build').replaceAll(\n    win32Sep,\n    posixSep,\n  )\n\n  await mkdir(join(projectDir, 'src'), { recursive: true })\n\n  const cargoToml = `[package]\nname = \"${crateName}\"\nversion = \"${version}\"\nedition = \"2021\"\n\n[lib]\ncrate-type = [\"cdylib\"]\n\n[dependencies]\nnapi = { path = \"${napiPath}\" }\nnapi-derive = { path = \"${napiDerivePath}\" }\n\n[build-dependencies]\nnapi-build = { path = \"${napiBuildPath}\" }\n`\n\n  await writeFile(join(projectDir, 'Cargo.toml'), cargoToml)\n  await writeFile(\n    join(projectDir, 'package.json'),\n    `${JSON.stringify(\n      {\n        name: packageName,\n        version,\n        napi: {\n          binaryName,\n          targets: [target.triple],\n        },\n      },\n      null,\n      2,\n    )}\\n`,\n  )\n  await writeFile(\n    join(projectDir, 'build.rs'),\n    'fn main() {\\n    napi_build::setup();\\n}\\n',\n  )\n  await writeFile(\n    join(projectDir, 'src', 'lib.rs'),\n    'use napi_derive::napi;\\n\\n#[napi]\\npub fn sum(a: i32, b: i32) -> i32 {\\n    a + b\\n}\\n',\n  )\n\n  const buildCmd = `cargo build --target ${target.triple}`\n\n  await new Promise<void>((resolve, reject) => {\n    const child = exec(buildCmd, {\n      cwd: projectDir,\n      env: { ...process.env, NAPI_TYPE_DEF_TMP_FOLDER: typeDefDir },\n    })\n    child.stderr?.on('data', (data) => {\n      console.error(data.toString())\n    })\n    child.on('exit', (code) => {\n      if (code === 0) {\n        resolve()\n      } else {\n        reject(new Error(`cargo build exited with code ${code ?? 'null'}`))\n      }\n    })\n    child.on('error', reject)\n  })\n\n  const files = await readdir(typeDefDir)\n  t.true(files.length > 0, 'type definition files should be generated')\n\n  const { exports, dts } = await generateTypeDef({\n    typeDefDir,\n    cwd: projectDir,\n  })\n\n  t.true(exports.includes('sum'), 'generateTypeDef should expose napi exports')\n\n  const jsBinding = await writeJsBinding({\n    platform: true,\n    idents: exports,\n    binaryName,\n    packageName,\n    version,\n    outputDir: projectDir,\n  })\n\n  t.truthy(jsBinding)\n  t.is(jsBinding?.path, join(projectDir, 'index.js'))\n\n  const libName = crateName.replace(/-/g, '_')\n  const srcName =\n    target.platform === 'darwin'\n      ? `lib${libName}.dylib`\n      : target.platform === 'win32'\n        ? `${libName}.dll`\n        : `lib${libName}.so`\n  const profile = 'debug'\n  const srcPath = join(projectDir, 'target', target.triple, profile, srcName)\n  t.true(existsSync(srcPath), 'compiled artifact should exist')\n\n  const destName = `${binaryName}.${target.platformArchABI}.${srcName.endsWith('.wasm') ? 'wasm' : 'node'}`\n  const destPath = join(projectDir, destName)\n  await copyFile(srcPath, destPath)\n  t.true(existsSync(destPath), 'artifact should be copied to output directory')\n\n  const nodeStat = await stat(destPath)\n  t.true(nodeStat.size > 0)\n\n  t.regex(dts, /export declare function sum\\(a: number, b: number\\): number/)\n\n  const jsPath = join(projectDir, 'index.js')\n  t.true(existsSync(jsPath))\n  const jsContent = await readFile(jsPath, 'utf-8')\n  t.regex(jsContent, /module\\.exports\\.sum = nativeBinding\\.sum/)\n})\n"
  },
  {
    "path": "cli/src/api/__tests__/create-npm-dirs.spec.ts",
    "content": "import { existsSync } from 'node:fs'\nimport { mkdir, readFile, rm, writeFile } from 'node:fs/promises'\nimport { tmpdir } from 'node:os'\nimport { join } from 'node:path'\n\nimport ava, { type TestFn } from 'ava'\n\nimport { createNpmDirs } from '../create-npm-dirs.js'\n\nconst test = ava as TestFn<{\n  tmpDir: string\n  packageJsonPath: string\n}>\n\ntest.beforeEach(async (t) => {\n  // Create a unique temp directory for tests\n  const timestamp = Date.now()\n  const random = Math.random().toString(36).substring(7)\n  const tmpDir = join(\n    tmpdir(),\n    'napi-rs-test',\n    `create-npm-dirs-${timestamp}-${random}`,\n  )\n  const packageJsonPath = join(tmpDir, 'package.json')\n\n  // Create the directory\n  await mkdir(tmpDir, { recursive: true })\n\n  t.context = { tmpDir, packageJsonPath }\n})\n\ntest.afterEach.always(async (t) => {\n  // Clean up any created directories\n  if (existsSync(t.context.tmpDir)) {\n    await rm(t.context.tmpDir, { recursive: true, force: true })\n  }\n})\n\ntest('should omit exports fields from publishConfig in scoped packages', async (t) => {\n  const { tmpDir, packageJsonPath } = t.context\n\n  // Create a package.json with publishConfig that includes exports field\n  const packageJson = {\n    name: 'test-package',\n    version: '1.0.0',\n    publishConfig: {\n      registry: 'https://custom-registry.com',\n      access: 'public',\n      exports: {\n        '.': './dist/index.js',\n        './package.json': './package.json',\n      },\n      tag: 'beta',\n    },\n    napi: {\n      binaryName: 'test-package',\n      targets: ['x86_64-unknown-linux-gnu'],\n    },\n  }\n\n  await writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2))\n\n  await createNpmDirs({\n    cwd: tmpDir,\n    packageJsonPath: 'package.json',\n  })\n\n  // Check that the scoped package directory was created\n  const scopedDir = join(tmpDir, 'npm', 'linux-x64-gnu')\n  t.true(existsSync(scopedDir))\n\n  // Read the generated package.json for the scoped package\n  const scopedPackageJsonPath = join(scopedDir, 'package.json')\n  t.true(existsSync(scopedPackageJsonPath))\n\n  const scopedPackageJson = JSON.parse(\n    await readFile(scopedPackageJsonPath, 'utf-8'),\n  )\n\n  // Verify that publishConfig only contains registry and access, not exports\n  t.truthy(scopedPackageJson.publishConfig)\n  t.is(scopedPackageJson.publishConfig.registry, 'https://custom-registry.com')\n  t.is(scopedPackageJson.publishConfig.access, 'public')\n  t.is(scopedPackageJson.publishConfig.exports, undefined)\n  t.is(scopedPackageJson.publishConfig.tag, undefined)\n})\n\ntest('should handle package without publishConfig', async (t) => {\n  const { tmpDir, packageJsonPath } = t.context\n\n  // Create a package.json without publishConfig\n  const packageJson = {\n    name: 'test-package-no-config',\n    version: '1.0.0',\n    napi: {\n      binaryName: 'test-package-no-config',\n      targets: ['x86_64-unknown-linux-gnu'],\n    },\n  }\n\n  await writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2))\n\n  await createNpmDirs({\n    cwd: tmpDir,\n    packageJsonPath: 'package.json',\n  })\n\n  // Check that the scoped package directory was created\n  const scopedDir = join(tmpDir, 'npm', 'linux-x64-gnu')\n  t.true(existsSync(scopedDir))\n\n  // Read the generated package.json for the scoped package\n  const scopedPackageJsonPath = join(scopedDir, 'package.json')\n  const scopedPackageJson = JSON.parse(\n    await readFile(scopedPackageJsonPath, 'utf-8'),\n  )\n\n  // Verify that publishConfig is not present when not in source\n  t.is(scopedPackageJson.publishConfig, undefined)\n})\n\ntest('should preserve only registry and access in publishConfig', async (t) => {\n  const { tmpDir, packageJsonPath } = t.context\n\n  // Create a package.json with minimal publishConfig\n  const packageJson = {\n    name: 'test-package-minimal',\n    version: '1.0.0',\n    publishConfig: {\n      registry: 'https://npm.company.com',\n      access: 'restricted',\n    },\n    napi: {\n      binaryName: 'test-package-minimal',\n      targets: ['aarch64-apple-darwin'],\n    },\n  }\n\n  await writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2))\n\n  await createNpmDirs({\n    cwd: tmpDir,\n    packageJsonPath: 'package.json',\n  })\n\n  // Check that the scoped package directory was created\n  const scopedDir = join(tmpDir, 'npm', 'darwin-arm64')\n  t.true(existsSync(scopedDir))\n\n  // Read the generated package.json for the scoped package\n  const scopedPackageJsonPath = join(scopedDir, 'package.json')\n  const scopedPackageJson = JSON.parse(\n    await readFile(scopedPackageJsonPath, 'utf-8'),\n  )\n\n  // Verify that publishConfig contains exactly registry and access\n  t.truthy(scopedPackageJson.publishConfig)\n  t.is(scopedPackageJson.publishConfig.registry, 'https://npm.company.com')\n  t.is(scopedPackageJson.publishConfig.access, 'restricted')\n  t.is(Object.keys(scopedPackageJson.publishConfig).length, 2)\n})\n\ntest('should handle WASM targets correctly with publishConfig', async (t) => {\n  const { tmpDir, packageJsonPath } = t.context\n\n  // Create a package.json for WASM target\n  const packageJson = {\n    name: 'test-wasm-package',\n    version: '1.0.0',\n    publishConfig: {\n      registry: 'https://wasm-registry.com',\n      access: 'public',\n      exports: './wasm.js',\n      browser: './browser.js',\n    },\n    napi: {\n      binaryName: 'test-wasm-package',\n      targets: ['wasm32-wasi-preview1-threads'],\n    },\n  }\n\n  await writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2))\n\n  await createNpmDirs({\n    cwd: tmpDir,\n    packageJsonPath: 'package.json',\n  })\n\n  // Check that the scoped package directory was created\n  const scopedDir = join(tmpDir, 'npm', 'wasm32-wasi')\n  t.true(existsSync(scopedDir))\n\n  // Read the generated package.json for the scoped package\n  const scopedPackageJsonPath = join(scopedDir, 'package.json')\n  const scopedPackageJson = JSON.parse(\n    await readFile(scopedPackageJsonPath, 'utf-8'),\n  )\n\n  // Verify that publishConfig is correctly filtered for WASM too\n  t.truthy(scopedPackageJson.publishConfig)\n  t.is(scopedPackageJson.publishConfig.registry, 'https://wasm-registry.com')\n  t.is(scopedPackageJson.publishConfig.access, 'public')\n  t.is(scopedPackageJson.publishConfig.exports, undefined)\n  t.is(scopedPackageJson.publishConfig.browser, undefined)\n\n  // Verify WASM-specific fields are set correctly\n  t.truthy(scopedPackageJson.main)\n  t.truthy(scopedPackageJson.browser)\n  t.truthy(scopedPackageJson.dependencies)\n})\n"
  },
  {
    "path": "cli/src/api/__tests__/new.spec.ts",
    "content": "import { existsSync } from 'node:fs'\nimport { readFile, rm } from 'node:fs/promises'\nimport { tmpdir } from 'node:os'\nimport { join } from 'node:path'\n\nimport ava, { type TestFn } from 'ava'\nimport { load as yamlLoad } from 'js-yaml'\n\nimport { newProject } from '../new.js'\n\nconst test = ava as TestFn<{\n  tmpDir: string\n}>\n\ntest.beforeEach(async (t) => {\n  // Create a unique temp directory for tests\n  const timestamp = Date.now()\n  const random = Math.random().toString(36).substring(7)\n  const tmpDir = join(\n    tmpdir(),\n    'napi-rs-test',\n    `new-project-${timestamp}-${random}`,\n  )\n  t.context = { tmpDir }\n})\n\ntest.afterEach.always(async (t) => {\n  // Clean up any created directories\n  if (existsSync(t.context.tmpDir)) {\n    await rm(t.context.tmpDir, { recursive: true, force: true })\n  }\n})\n\ntest('create a new project with default options', async (t) => {\n  const projectPath = join(t.context.tmpDir, 'default-project')\n\n  await newProject({\n    path: projectPath,\n    enableDefaultTargets: true,\n  })\n\n  t.true(existsSync(projectPath))\n  t.true(existsSync(join(projectPath, 'package.json')))\n  t.true(existsSync(join(projectPath, 'Cargo.toml')))\n  t.true(existsSync(join(projectPath, 'src')))\n  t.true(existsSync(join(projectPath, '.github', 'workflows', 'CI.yml')))\n\n  // Check package.json\n  const pkgJson = JSON.parse(\n    await readFile(join(projectPath, 'package.json'), 'utf-8'),\n  )\n  t.is(pkgJson.name, 'default-project')\n  t.is(pkgJson.napi.binaryName, 'default-project')\n  t.is(pkgJson.license, 'MIT')\n  t.truthy(pkgJson.engines.node)\n  t.falsy(existsSync(join(projectPath, 'default-project.wasi-browser.js')))\n  const gitAttributes = await readFile(\n    join(projectPath, '.gitattributes'),\n    'utf-8',\n  )\n  t.truthy(gitAttributes.includes('default-project.wasi-browser.js'))\n  t.truthy(gitAttributes.includes('default-project.wasi.cjs'))\n  t.truthy(gitAttributes.includes('wasi-worker-browser.mjs'))\n  t.truthy(gitAttributes.includes('wasi-worker.mjs'))\n  const ciYaml = await readFile(\n    join(projectPath, '.github', 'workflows', 'CI.yml'),\n    'utf-8',\n  )\n  const yamlObject = yamlLoad(ciYaml) as any\n  t.is(yamlObject.env.APP_NAME, 'default-project')\n  t.falsy(yamlObject.jobs.publish.needs.includes('wasm32-wasip1-threads'))\n  t.falsy(\n    yamlObject.jobs['test-linux-binding'].strategy.matrix.target.includes(\n      'aarch64-unknown-linux-musl',\n    ),\n  )\n})\n\ntest('create a new project with custom name', async (t) => {\n  const projectPath = join(t.context.tmpDir, 'custom-name-dir')\n\n  await newProject({\n    path: projectPath,\n    name: '@my-scope/custom-package',\n    enableDefaultTargets: true,\n  })\n\n  t.true(existsSync(projectPath))\n\n  const pkgJson = JSON.parse(\n    await readFile(join(projectPath, 'package.json'), 'utf-8'),\n  )\n  t.is(pkgJson.name, '@my-scope/custom-package')\n  t.is(pkgJson.napi.binaryName, 'custom-package')\n\n  const cargoToml = await readFile(join(projectPath, 'Cargo.toml'), 'utf-8')\n  // Verify that the package name was properly renamed to follow Rust naming conventions\n  t.true(cargoToml.includes('name = \"custom_package\"'))\n})\n\ntest('create a new project with custom path', async (t) => {\n  const customPath = join(t.context.tmpDir, 'nested', 'folders', 'my-project')\n\n  await newProject({\n    path: customPath,\n    enableDefaultTargets: true,\n  })\n\n  t.true(existsSync(customPath))\n  t.true(existsSync(join(customPath, 'package.json')))\n\n  const pkgJson = JSON.parse(\n    await readFile(join(customPath, 'package.json'), 'utf-8'),\n  )\n  t.is(pkgJson.name, 'my-project')\n})\n\ntest('create a new project with custom path and name', async (t) => {\n  const projectPath = join(t.context.tmpDir, 'custom-dir')\n\n  await newProject({\n    path: projectPath,\n    name: 'custom-project-name',\n    enableDefaultTargets: true,\n  })\n\n  t.true(existsSync(projectPath))\n\n  const pkgJson = JSON.parse(\n    await readFile(join(projectPath, 'package.json'), 'utf-8'),\n  )\n  t.is(pkgJson.name, 'custom-project-name')\n  t.is(pkgJson.napi.binaryName, 'custom-project-name')\n})\n\ntest('create a new project with custom path, name, and targets', async (t) => {\n  const projectPath = join(t.context.tmpDir, 'full-custom')\n  const customTargets = [\n    'x86_64-unknown-linux-gnu',\n    'x86_64-apple-darwin',\n    'aarch64-apple-darwin',\n    'wasm32-wasip1-threads',\n    'x86_64-unknown-freebsd',\n  ]\n\n  await newProject({\n    path: projectPath,\n    name: '@custom/full-project',\n    targets: customTargets,\n    enableDefaultTargets: false,\n    license: 'Apache-2.0',\n    minNodeApiVersion: 6,\n  })\n\n  t.true(existsSync(projectPath))\n\n  const pkgJson = JSON.parse(\n    await readFile(join(projectPath, 'package.json'), 'utf-8'),\n  )\n  t.is(pkgJson.name, '@custom/full-project')\n  t.is(pkgJson.napi.binaryName, 'full-project')\n  t.is(pkgJson.license, 'Apache-2.0')\n  t.true(pkgJson.engines.node.includes('>= 14.0.0'))\n\n  // Check that CI workflow only includes the specified targets\n  const ciYaml = await readFile(\n    join(projectPath, '.github', 'workflows', 'CI.yml'),\n    'utf-8',\n  )\n  const yamlObject = yamlLoad(ciYaml) as any\n  t.true(\n    yamlObject.jobs.build.strategy.matrix.settings.some(\n      (setting: any) => setting.target === 'x86_64-unknown-linux-gnu',\n    ),\n  )\n  t.true(\n    yamlObject.jobs.build.strategy.matrix.settings.some(\n      (setting: any) => setting.target === 'x86_64-apple-darwin',\n    ),\n  )\n  t.true(\n    yamlObject.jobs.build.strategy.matrix.settings.some(\n      (setting: any) => setting.target === 'aarch64-apple-darwin',\n    ),\n  )\n  t.false(\n    yamlObject.jobs.build.strategy.matrix.settings.some(\n      (setting: any) => setting.target === 'x86_64-pc-windows-msvc',\n    ),\n  )\n  t.true(\n    yamlObject.jobs.build.strategy.matrix.settings.some(\n      (setting: any) => setting.target === 'wasm32-wasip1-threads',\n    ),\n  )\n  t.truthy(yamlObject.jobs['build-freebsd'])\n  t.truthy(yamlObject.jobs['test-wasi'])\n  t.falsy(\n    yamlObject.jobs['test-macOS-windows-binding'].strategy.matrix.settings.some(\n      (setting: any) => setting.target === 'x86_64-pc-windows-msvc',\n    ),\n  )\n  t.truthy(\n    yamlObject.jobs['test-macOS-windows-binding'].strategy.matrix.settings.some(\n      (setting: any) => setting.target === 'aarch64-apple-darwin',\n    ),\n  )\n})\n\ntest('non Windows and macOS targets should remove test-macOS-windows-binding job', async (t) => {\n  const projectPath = join(t.context.tmpDir, 'no-windows-macos')\n  const targets = [\n    'x86_64-unknown-linux-gnu',\n    'aarch64-unknown-linux-gnu',\n    'wasm32-wasip1-threads',\n    'x86_64-unknown-freebsd',\n  ]\n\n  await newProject({\n    path: projectPath,\n    targets,\n    enableDefaultTargets: false,\n  })\n\n  t.true(existsSync(projectPath))\n\n  const ciYaml = await readFile(\n    join(projectPath, '.github', 'workflows', 'CI.yml'),\n    'utf-8',\n  )\n  const yamlObject = yamlLoad(ciYaml) as any\n  t.falsy(yamlObject.jobs['test-macOS-windows-binding'])\n  t.falsy(yamlObject.jobs.publish.needs.includes('test-macOS-windows-binding'))\n})\n\ntest('should remove test-linux-binding job if no Linux targets are enabled', async (t) => {\n  const projectPath = join(t.context.tmpDir, 'no-linux')\n  const targets = ['x86_64-apple-darwin', 'aarch64-apple-darwin']\n\n  await newProject({\n    path: projectPath,\n    targets,\n    enableDefaultTargets: false,\n  })\n\n  t.true(existsSync(projectPath))\n\n  const ciYaml = await readFile(\n    join(projectPath, '.github', 'workflows', 'CI.yml'),\n    'utf-8',\n  )\n  const yamlObject = yamlLoad(ciYaml) as any\n  t.falsy(yamlObject.jobs['test-linux-binding'])\n  t.falsy(yamlObject.jobs.publish.needs.includes('test-linux-binding'))\n})\n\ntest('should fail when no path is provided', async (t) => {\n  await t.throwsAsync(\n    async () => {\n      await newProject({\n        enableDefaultTargets: true,\n      })\n    },\n    { message: /Please provide the path as the argument/ },\n  )\n})\n\ntest('should fail when path already exists and is not empty', async (t) => {\n  const projectPath = join(t.context.tmpDir, 'existing-project')\n\n  // Create directory with a file\n  await rm(projectPath, { recursive: true, force: true }).catch(() => {})\n  const { mkdirSync, writeFileSync } = await import('node:fs')\n  mkdirSync(projectPath, { recursive: true })\n  writeFileSync(join(projectPath, 'existing-file.txt'), 'content')\n\n  await t.throwsAsync(\n    async () => {\n      await newProject({\n        path: projectPath,\n        enableDefaultTargets: true,\n      })\n    },\n    { message: /already exists and it's not empty/ },\n  )\n})\n\ntest('should fail when path is a file', async (t) => {\n  const filePath = join(t.context.tmpDir, 'file.txt')\n\n  // Create a file\n  const { writeFileSync } = await import('node:fs')\n  const { mkdirSync } = await import('node:fs')\n  mkdirSync(t.context.tmpDir, { recursive: true })\n  writeFileSync(filePath, 'content')\n\n  await t.throwsAsync(\n    async () => {\n      await newProject({\n        path: filePath,\n        enableDefaultTargets: true,\n      })\n    },\n    { message: /already exists and it's not a directory/ },\n  )\n})\n\ntest('dry run should not create any files', async (t) => {\n  const projectPath = join(t.context.tmpDir, 'dry-run-project')\n\n  await newProject({\n    path: projectPath,\n    name: 'dry-run-test',\n    enableDefaultTargets: true,\n    dryRun: true,\n  })\n\n  t.false(existsSync(projectPath))\n})\n\ntest('create project without GitHub Actions', async (t) => {\n  const projectPath = join(t.context.tmpDir, 'no-github-actions')\n\n  await newProject({\n    path: projectPath,\n    enableDefaultTargets: true,\n    enableGithubActions: false,\n  })\n\n  t.true(existsSync(projectPath))\n  t.true(existsSync(join(projectPath, 'package.json')))\n  t.false(existsSync(join(projectPath, '.github')))\n})\n\ntest('create a new project with pnpm package manager', async (t) => {\n  const projectPath = join(t.context.tmpDir, 'pnpm-project')\n\n  await newProject({\n    path: projectPath,\n    name: 'pnpm-test-project',\n    packageManager: 'pnpm',\n    enableDefaultTargets: true,\n  })\n\n  t.true(existsSync(projectPath))\n  t.true(existsSync(join(projectPath, 'package.json')))\n  t.true(existsSync(join(projectPath, 'Cargo.toml')))\n\n  // Check package.json\n  const pkgJson = JSON.parse(\n    await readFile(join(projectPath, 'package.json'), 'utf-8'),\n  )\n  t.is(pkgJson.name, 'pnpm-test-project')\n  t.is(pkgJson.napi.binaryName, 'pnpm-test-project')\n\n  // Verify that the Cargo.toml has the correct sanitized name\n  const cargoToml = await readFile(join(projectPath, 'Cargo.toml'), 'utf-8')\n  t.true(cargoToml.includes('name = \"pnpm_test_project\"'))\n\n  // Check for pnpm-specific files or configurations if any\n  // The template might have different structure for pnpm\n})\n\ntest('create a new project with pnpm and custom name', async (t) => {\n  const projectPath = join(t.context.tmpDir, 'pnpm-custom-name')\n\n  await newProject({\n    path: projectPath,\n    name: '@my-org/custom-pnpm-package',\n    packageManager: 'pnpm',\n    enableDefaultTargets: true,\n  })\n\n  t.true(existsSync(projectPath))\n  t.true(existsSync(join(projectPath, 'package.json')))\n\n  const pkgJson = JSON.parse(\n    await readFile(join(projectPath, 'package.json'), 'utf-8'),\n  )\n  t.is(pkgJson.name, '@my-org/custom-pnpm-package')\n  t.is(pkgJson.napi.binaryName, 'custom-pnpm-package')\n\n  const cargoToml = await readFile(join(projectPath, 'Cargo.toml'), 'utf-8')\n  t.true(cargoToml.includes('name = \"custom_pnpm_package\"'))\n})\n\ntest('create a new project with pnpm and custom path/name combination', async (t) => {\n  const projectPath = join(t.context.tmpDir, 'deep', 'nested', 'pnpm-dir')\n\n  await newProject({\n    path: projectPath,\n    name: '@scoped/pnpm-custom-name',\n    packageManager: 'pnpm',\n    enableDefaultTargets: true,\n    license: 'Apache-2.0',\n  })\n\n  t.true(existsSync(projectPath))\n  t.true(existsSync(join(projectPath, 'package.json')))\n  t.true(existsSync(join(projectPath, 'Cargo.toml')))\n\n  // Check package.json\n  const pkgJson = JSON.parse(\n    await readFile(join(projectPath, 'package.json'), 'utf-8'),\n  )\n  t.is(pkgJson.name, '@scoped/pnpm-custom-name')\n  t.is(pkgJson.napi.binaryName, 'pnpm-custom-name')\n  t.is(pkgJson.license, 'Apache-2.0')\n\n  // Check Cargo.toml has sanitized name\n  const cargoToml = await readFile(join(projectPath, 'Cargo.toml'), 'utf-8')\n  t.true(cargoToml.includes('name = \"pnpm_custom_name\"'))\n})\n\ntest('should fail when no targets are enabled', async (t) => {\n  const projectPath = join(t.context.tmpDir, 'no-targets')\n\n  await t.throwsAsync(\n    async () => {\n      await newProject({\n        path: projectPath,\n        enableDefaultTargets: false,\n        enableAllTargets: false,\n        targets: [],\n      })\n    },\n    { message: /At least one target must be enabled/ },\n  )\n})\n"
  },
  {
    "path": "cli/src/api/artifacts.ts",
    "content": "import { join, resolve, parse } from 'node:path'\n\nimport * as colors from 'colorette'\n\nimport {\n  applyDefaultArtifactsOptions,\n  type ArtifactsOptions,\n} from '../def/artifacts.js'\nimport {\n  readNapiConfig,\n  debugFactory,\n  readFileAsync,\n  writeFileAsync,\n  UniArchsByPlatform,\n  readdirAsync,\n} from '../utils/index.js'\n\nconst debug = debugFactory('artifacts')\n\nexport async function collectArtifacts(userOptions: ArtifactsOptions) {\n  const options = applyDefaultArtifactsOptions(userOptions)\n\n  const resolvePath = (...paths: string[]) => resolve(options.cwd, ...paths)\n  const packageJsonPath = resolvePath(options.packageJsonPath)\n  const { targets, binaryName, packageName } = await readNapiConfig(\n    packageJsonPath,\n    options.configPath ? resolvePath(options.configPath) : undefined,\n  )\n\n  const distDirs = targets.map((platform) =>\n    join(options.cwd, options.npmDir, platform.platformArchABI),\n  )\n\n  const universalSourceBins = new Set(\n    targets\n      .filter((platform) => platform.arch === 'universal')\n      .flatMap((p) =>\n        UniArchsByPlatform[p.platform]?.map((a) => `${p.platform}-${a}`),\n      )\n      .filter(Boolean) as string[],\n  )\n\n  await collectNodeBinaries(join(options.cwd, options.outputDir)).then(\n    (output) =>\n      Promise.all(\n        output.map(async (filePath) => {\n          debug.info(`Read [${colors.yellowBright(filePath)}]`)\n          const sourceContent = await readFileAsync(filePath)\n          const parsedName = parse(filePath)\n          const terms = parsedName.name.split('.')\n          const platformArchABI = terms.pop()!\n          const _binaryName = terms.join('.')\n\n          if (_binaryName !== binaryName) {\n            debug.warn(\n              `[${_binaryName}] is not matched with [${binaryName}], skip`,\n            )\n            return\n          }\n          const dir = distDirs.find((dir) => dir.includes(platformArchABI))\n          if (!dir && universalSourceBins.has(platformArchABI)) {\n            debug.warn(\n              `[${platformArchABI}] has no dist dir but it is source bin for universal arch, skip`,\n            )\n            return\n          }\n          if (!dir) {\n            throw new Error(`No dist dir found for ${filePath}`)\n          }\n\n          const distFilePath = join(dir, parsedName.base)\n          debug.info(\n            `Write file content to [${colors.yellowBright(distFilePath)}]`,\n          )\n          await writeFileAsync(distFilePath, sourceContent)\n          const distFilePathLocal = join(\n            parse(packageJsonPath).dir,\n            parsedName.base,\n          )\n          debug.info(\n            `Write file content to [${colors.yellowBright(distFilePathLocal)}]`,\n          )\n          await writeFileAsync(distFilePathLocal, sourceContent)\n        }),\n      ),\n  )\n\n  const wasiTarget = targets.find((t) => t.platform === 'wasi')\n  if (wasiTarget) {\n    const wasiDir = join(\n      options.cwd,\n      options.npmDir,\n      wasiTarget.platformArchABI,\n    )\n    const cjsFile = join(\n      options.buildOutputDir ?? options.cwd,\n      `${binaryName}.wasi.cjs`,\n    )\n    const workerFile = join(\n      options.buildOutputDir ?? options.cwd,\n      `wasi-worker.mjs`,\n    )\n    const browserEntry = join(\n      options.buildOutputDir ?? options.cwd,\n      `${binaryName}.wasi-browser.js`,\n    )\n    const browserWorkerFile = join(\n      options.buildOutputDir ?? options.cwd,\n      `wasi-worker-browser.mjs`,\n    )\n    debug.info(\n      `Move wasi binding file [${colors.yellowBright(\n        cjsFile,\n      )}] to [${colors.yellowBright(wasiDir)}]`,\n    )\n    await writeFileAsync(\n      join(wasiDir, `${binaryName}.wasi.cjs`),\n      await readFileAsync(cjsFile),\n    )\n    debug.info(\n      `Move wasi worker file [${colors.yellowBright(\n        workerFile,\n      )}] to [${colors.yellowBright(wasiDir)}]`,\n    )\n    await writeFileAsync(\n      join(wasiDir, `wasi-worker.mjs`),\n      await readFileAsync(workerFile),\n    )\n    debug.info(\n      `Move wasi browser entry file [${colors.yellowBright(\n        browserEntry,\n      )}] to [${colors.yellowBright(wasiDir)}]`,\n    )\n    await writeFileAsync(\n      join(wasiDir, `${binaryName}.wasi-browser.js`),\n      // https://github.com/vitejs/vite/issues/8427\n      (await readFileAsync(browserEntry, 'utf8')).replace(\n        `new URL('./wasi-worker-browser.mjs', import.meta.url)`,\n        `new URL('${packageName}-wasm32-wasi/wasi-worker-browser.mjs', import.meta.url)`,\n      ),\n    )\n    debug.info(\n      `Move wasi browser worker file [${colors.yellowBright(\n        browserWorkerFile,\n      )}] to [${colors.yellowBright(wasiDir)}]`,\n    )\n    await writeFileAsync(\n      join(wasiDir, `wasi-worker-browser.mjs`),\n      await readFileAsync(browserWorkerFile),\n    )\n  }\n}\n\nasync function collectNodeBinaries(root: string) {\n  const files = await readdirAsync(root, { withFileTypes: true })\n  const nodeBinaries = files\n    .filter(\n      (file) =>\n        file.isFile() &&\n        (file.name.endsWith('.node') || file.name.endsWith('.wasm')),\n    )\n    .map((file) => join(root, file.name))\n\n  const dirs = files.filter((file) => file.isDirectory())\n  for (const dir of dirs) {\n    if (dir.name !== 'node_modules') {\n      nodeBinaries.push(...(await collectNodeBinaries(join(root, dir.name))))\n    }\n  }\n  return nodeBinaries\n}\n"
  },
  {
    "path": "cli/src/api/build.ts",
    "content": "import { spawn } from 'node:child_process'\nimport { createHash } from 'node:crypto'\nimport { existsSync, mkdirSync, rmSync } from 'node:fs'\nimport { createRequire } from 'node:module'\nimport { homedir } from 'node:os'\nimport { parse, join, resolve } from 'node:path'\n\nimport * as colors from 'colorette'\n\nimport type { BuildOptions as RawBuildOptions } from '../def/build.js'\nimport {\n  CLI_VERSION,\n  copyFileAsync,\n  type Crate,\n  debugFactory,\n  DEFAULT_TYPE_DEF_HEADER,\n  fileExists,\n  getSystemDefaultTarget,\n  getTargetLinker,\n  mkdirAsync,\n  type NapiConfig,\n  parseMetadata,\n  parseTriple,\n  processTypeDef,\n  readFileAsync,\n  readNapiConfig,\n  type Target,\n  targetToEnvVar,\n  tryInstallCargoBinary,\n  unlinkAsync,\n  writeFileAsync,\n  dirExistsAsync,\n  readdirAsync,\n  type CargoWorkspaceMetadata,\n} from '../utils/index.js'\n\nimport { createCjsBinding, createEsmBinding } from './templates/index.js'\nimport {\n  createWasiBinding,\n  createWasiBrowserBinding,\n} from './templates/load-wasi-template.js'\nimport {\n  createWasiBrowserWorkerBinding,\n  WASI_WORKER_TEMPLATE,\n} from './templates/wasi-worker-template.js'\n\nconst debug = debugFactory('build')\nconst require = createRequire(import.meta.url)\n\ntype OutputKind = 'js' | 'dts' | 'node' | 'exe' | 'wasm'\ntype Output = { kind: OutputKind; path: string }\n\ntype BuildOptions = RawBuildOptions & { cargoOptions?: string[] }\ntype ParsedBuildOptions = Omit<BuildOptions, 'cwd'> & { cwd: string }\n\nexport async function buildProject(rawOptions: BuildOptions) {\n  debug('napi build command receive options: %O', rawOptions)\n\n  const options: ParsedBuildOptions = {\n    dtsCache: true,\n    ...rawOptions,\n    cwd: rawOptions.cwd ?? process.cwd(),\n  }\n\n  const resolvePath = (...paths: string[]) => resolve(options.cwd, ...paths)\n\n  const manifestPath = resolvePath(options.manifestPath ?? 'Cargo.toml')\n  const metadata = await parseMetadata(manifestPath)\n\n  const crate = metadata.packages.find((p) => {\n    // package with given name\n    if (options.package) {\n      return p.name === options.package\n    } else {\n      return p.manifest_path === manifestPath\n    }\n  })\n\n  if (!crate) {\n    throw new Error(\n      'Unable to find crate to build. It seems you are trying to build a crate in a workspace, try using `--package` option to specify the package to build.',\n    )\n  }\n  const config = await readNapiConfig(\n    resolvePath(options.packageJsonPath ?? 'package.json'),\n    options.configPath ? resolvePath(options.configPath) : undefined,\n  )\n\n  const builder = new Builder(metadata, crate, config, options)\n\n  return builder.build()\n}\n\nclass Builder {\n  private readonly args: string[] = []\n  private readonly envs: Record<string, string> = {}\n  private readonly outputs: Output[] = []\n\n  private readonly target: Target\n  private readonly crateDir: string\n  private readonly outputDir: string\n  private readonly targetDir: string\n  private readonly enableTypeDef: boolean = false\n\n  constructor(\n    private readonly metadata: CargoWorkspaceMetadata,\n    private readonly crate: Crate,\n    private readonly config: NapiConfig,\n    private readonly options: ParsedBuildOptions,\n  ) {\n    this.target = options.target\n      ? parseTriple(options.target)\n      : process.env.CARGO_BUILD_TARGET\n        ? parseTriple(process.env.CARGO_BUILD_TARGET)\n        : getSystemDefaultTarget()\n    this.crateDir = parse(crate.manifest_path).dir\n    this.outputDir = resolve(\n      this.options.cwd,\n      options.outputDir ?? this.crateDir,\n    )\n    this.targetDir =\n      options.targetDir ??\n      process.env.CARGO_BUILD_TARGET_DIR ??\n      metadata.target_directory\n    this.enableTypeDef = this.crate.dependencies.some(\n      (dep) =>\n        dep.name === 'napi-derive' &&\n        (dep.uses_default_features || dep.features.includes('type-def')),\n    )\n\n    if (!this.enableTypeDef) {\n      const requirementWarning =\n        '`napi-derive` crate is not used or `type-def` feature is not enabled for `napi-derive` crate'\n      debug.warn(\n        `${requirementWarning}. Will skip binding generation for \\`.node\\`, \\`.wasi\\` and \\`.d.ts\\` files.`,\n      )\n\n      if (\n        this.options.dts ||\n        this.options.dtsHeader ||\n        this.config.dtsHeader ||\n        this.config.dtsHeaderFile\n      ) {\n        debug.warn(\n          `${requirementWarning}. \\`dts\\` related options are enabled but will be ignored.`,\n        )\n      }\n    }\n  }\n\n  get cdyLibName() {\n    return this.crate.targets.find((t) => t.crate_types.includes('cdylib'))\n      ?.name\n  }\n\n  get binName() {\n    return (\n      this.options.bin ??\n      // only available if not cdylib or bin name specified\n      (this.cdyLibName\n        ? null\n        : this.crate.targets.find((t) => t.crate_types.includes('bin'))?.name)\n    )\n  }\n\n  build() {\n    if (!this.cdyLibName) {\n      const warning =\n        'Missing `crate-type = [\"cdylib\"]` in [lib] config. The build result will not be available as node addon.'\n\n      if (this.binName) {\n        debug.warn(warning)\n      } else {\n        throw new Error(warning)\n      }\n    }\n\n    return this.pickBinary()\n      .setPackage()\n      .setFeatures()\n      .setTarget()\n      .pickCrossToolchain()\n      .setEnvs()\n      .setBypassArgs()\n      .exec()\n  }\n\n  private pickCrossToolchain() {\n    if (!this.options.useNapiCross) {\n      return this\n    }\n    if (this.options.useCross) {\n      debug.warn(\n        'You are trying to use both `--cross` and `--use-napi-cross` options, `--use-cross` will be ignored.',\n      )\n    }\n\n    if (this.options.crossCompile) {\n      debug.warn(\n        'You are trying to use both `--cross-compile` and `--use-napi-cross` options, `--cross-compile` will be ignored.',\n      )\n    }\n\n    try {\n      const { version, download } = require('@napi-rs/cross-toolchain')\n\n      const alias: Record<string, string> = {\n        's390x-unknown-linux-gnu': 's390x-ibm-linux-gnu',\n      }\n\n      const toolchainPath = join(\n        homedir(),\n        '.napi-rs',\n        'cross-toolchain',\n        version,\n        this.target.triple,\n      )\n      mkdirSync(toolchainPath, { recursive: true })\n      if (existsSync(join(toolchainPath, 'package.json'))) {\n        debug(`Toolchain ${toolchainPath} exists, skip extracting`)\n      } else {\n        const tarArchive = download(process.arch, this.target.triple)\n        tarArchive.unpack(toolchainPath)\n      }\n      const upperCaseTarget = targetToEnvVar(this.target.triple)\n      const crossTargetName = alias[this.target.triple] ?? this.target.triple\n      const linkerEnv = `CARGO_TARGET_${upperCaseTarget}_LINKER`\n      this.setEnvIfNotExists(\n        linkerEnv,\n        join(toolchainPath, 'bin', `${crossTargetName}-gcc`),\n      )\n      this.setEnvIfNotExists(\n        'TARGET_SYSROOT',\n        join(toolchainPath, crossTargetName, 'sysroot'),\n      )\n      this.setEnvIfNotExists(\n        'TARGET_AR',\n        join(toolchainPath, 'bin', `${crossTargetName}-ar`),\n      )\n      this.setEnvIfNotExists(\n        'TARGET_RANLIB',\n        join(toolchainPath, 'bin', `${crossTargetName}-ranlib`),\n      )\n      this.setEnvIfNotExists(\n        'TARGET_READELF',\n        join(toolchainPath, 'bin', `${crossTargetName}-readelf`),\n      )\n      this.setEnvIfNotExists(\n        'TARGET_C_INCLUDE_PATH',\n        join(toolchainPath, crossTargetName, 'sysroot', 'usr', 'include/'),\n      )\n      this.setEnvIfNotExists(\n        'TARGET_CC',\n        join(toolchainPath, 'bin', `${crossTargetName}-gcc`),\n      )\n      this.setEnvIfNotExists(\n        'TARGET_CXX',\n        join(toolchainPath, 'bin', `${crossTargetName}-g++`),\n      )\n      this.setEnvIfNotExists(\n        'BINDGEN_EXTRA_CLANG_ARGS',\n        `--sysroot=${this.envs.TARGET_SYSROOT}}`,\n      )\n\n      if (\n        process.env.TARGET_CC?.startsWith('clang') ||\n        (process.env.CC?.startsWith('clang') && !process.env.TARGET_CC)\n      ) {\n        const TARGET_CFLAGS = process.env.TARGET_CFLAGS ?? ''\n        this.envs.TARGET_CFLAGS = `--sysroot=${this.envs.TARGET_SYSROOT} --gcc-toolchain=${toolchainPath} ${TARGET_CFLAGS}`\n      }\n      if (\n        (process.env.CXX?.startsWith('clang++') && !process.env.TARGET_CXX) ||\n        process.env.TARGET_CXX?.startsWith('clang++')\n      ) {\n        const TARGET_CXXFLAGS = process.env.TARGET_CXXFLAGS ?? ''\n        this.envs.TARGET_CXXFLAGS = `--sysroot=${this.envs.TARGET_SYSROOT} --gcc-toolchain=${toolchainPath} ${TARGET_CXXFLAGS}`\n      }\n      this.envs.PATH = this.envs.PATH\n        ? `${toolchainPath}/bin:${this.envs.PATH}:${process.env.PATH}`\n        : `${toolchainPath}/bin:${process.env.PATH}`\n    } catch (e) {\n      debug.warn('Pick cross toolchain failed', e as Error)\n      // ignore, do nothing\n    }\n    return this\n  }\n\n  private exec() {\n    debug(`Start building crate: ${this.crate.name}`)\n    debug('  %i', `cargo ${this.args.join(' ')}`)\n\n    const controller = new AbortController()\n\n    const watch = this.options.watch\n    const buildTask = new Promise<void>((resolve, reject) => {\n      if (this.options.useCross && this.options.crossCompile) {\n        throw new Error(\n          '`--use-cross` and `--cross-compile` can not be used together',\n        )\n      }\n      const command =\n        process.env.CARGO ?? (this.options.useCross ? 'cross' : 'cargo')\n      const buildProcess = spawn(command, this.args, {\n        env: { ...process.env, ...this.envs },\n        stdio: watch ? ['inherit', 'inherit', 'pipe'] : 'inherit',\n        cwd: this.options.cwd,\n        signal: controller.signal,\n      })\n\n      buildProcess.once('exit', (code) => {\n        if (code === 0) {\n          debug('%i', `Build crate ${this.crate.name} successfully!`)\n          resolve()\n        } else {\n          reject(new Error(`Build failed with exit code ${code}`))\n        }\n      })\n\n      buildProcess.once('error', (e) => {\n        reject(new Error(`Build failed with error: ${e.message}`, { cause: e }))\n      })\n\n      // watch mode only, they are piped through stderr\n      buildProcess.stderr?.on('data', (data) => {\n        const output = data.toString()\n        console.error(output)\n        if (/Finished\\s(`dev`|`release`)/.test(output)) {\n          this.postBuild().catch(() => {})\n        }\n      })\n    })\n\n    return {\n      task: buildTask.then(() => this.postBuild()),\n      abort: () => controller.abort(),\n    }\n  }\n\n  private pickBinary() {\n    let set = false\n    if (this.options.watch) {\n      if (process.env.CI) {\n        debug.warn('Watch mode is not supported in CI environment')\n      } else {\n        debug('Use %i', 'cargo-watch')\n        tryInstallCargoBinary('cargo-watch', 'watch')\n        // yarn napi watch --target x86_64-unknown-linux-gnu [--cross-compile]\n        // ===>\n        // cargo watch [...] -- build --target x86_64-unknown-linux-gnu\n        // cargo watch [...] -- zigbuild --target x86_64-unknown-linux-gnu\n        this.args.push(\n          'watch',\n          '--why',\n          '-i',\n          '*.{js,ts,node}',\n          '-w',\n          this.crateDir,\n          '--',\n          'cargo',\n          'build',\n        )\n        set = true\n      }\n    }\n\n    if (this.options.crossCompile) {\n      if (this.target.platform === 'win32') {\n        if (process.platform === 'win32') {\n          debug.warn(\n            'You are trying to cross compile to win32 platform on win32 platform which is unnecessary.',\n          )\n        } else {\n          // use cargo-xwin to cross compile to win32 platform\n          debug('Use %i', 'cargo-xwin')\n          tryInstallCargoBinary('cargo-xwin', 'xwin')\n          this.args.push('xwin', 'build')\n          if (this.target.arch === 'ia32') {\n            this.envs.XWIN_ARCH = 'x86'\n          }\n          set = true\n        }\n      } else {\n        if (\n          this.target.platform === 'linux' &&\n          process.platform === 'linux' &&\n          this.target.arch === process.arch &&\n          (function (abi: string | null) {\n            const glibcVersionRuntime =\n              // @ts-expect-error\n              process.report?.getReport()?.header?.glibcVersionRuntime\n            const libc = glibcVersionRuntime ? 'gnu' : 'musl'\n            return abi === libc\n          })(this.target.abi)\n        ) {\n          debug.warn(\n            'You are trying to cross compile to linux target on linux platform which is unnecessary.',\n          )\n        } else if (\n          this.target.platform === 'darwin' &&\n          process.platform === 'darwin'\n        ) {\n          debug.warn(\n            'You are trying to cross compile to darwin target on darwin platform which is unnecessary.',\n          )\n        } else {\n          // use cargo-zigbuild to cross compile to other platforms\n          debug('Use %i', 'cargo-zigbuild')\n          tryInstallCargoBinary('cargo-zigbuild', 'zigbuild')\n          this.args.push('zigbuild')\n          set = true\n        }\n      }\n    }\n\n    if (!set) {\n      this.args.push('build')\n    }\n    return this\n  }\n\n  private setPackage() {\n    const args = []\n\n    if (this.options.package) {\n      args.push('--package', this.options.package)\n    }\n\n    if (this.binName) {\n      args.push('--bin', this.binName)\n    }\n\n    if (args.length) {\n      debug('Set package flags: ')\n      debug('  %O', args)\n      this.args.push(...args)\n    }\n\n    return this\n  }\n\n  private setTarget() {\n    debug('Set compiling target to: ')\n    debug('  %i', this.target.triple)\n\n    this.args.push('--target', this.target.triple)\n\n    return this\n  }\n\n  private setEnvs() {\n    // TYPE DEF\n    if (this.enableTypeDef) {\n      this.envs.NAPI_TYPE_DEF_TMP_FOLDER =\n        this.generateIntermediateTypeDefFolder()\n      this.setForceBuildEnvs(this.envs.NAPI_TYPE_DEF_TMP_FOLDER)\n    }\n\n    // RUSTFLAGS\n    let rustflags =\n      process.env.RUSTFLAGS ?? process.env.CARGO_BUILD_RUSTFLAGS ?? ''\n\n    if (\n      this.target.abi?.includes('musl') &&\n      !rustflags.includes('target-feature=-crt-static')\n    ) {\n      rustflags += ' -C target-feature=-crt-static'\n    }\n\n    if (this.options.strip && !rustflags.includes('link-arg=-s')) {\n      rustflags += ' -C link-arg=-s'\n    }\n\n    if (rustflags.length) {\n      this.envs.RUSTFLAGS = rustflags\n    }\n    // END RUSTFLAGS\n\n    // LINKER\n    const linker = this.options.crossCompile\n      ? void 0\n      : getTargetLinker(this.target.triple)\n    // TODO:\n    //   directly set CARGO_TARGET_<target>_LINKER will cover .cargo/config.toml\n    //   will detect by cargo config when it becomes stable\n    //   see: https://github.com/rust-lang/cargo/issues/9301\n    const linkerEnv = `CARGO_TARGET_${targetToEnvVar(\n      this.target.triple,\n    )}_LINKER`\n    if (linker && !process.env[linkerEnv] && !this.envs[linkerEnv]) {\n      this.envs[linkerEnv] = linker\n    }\n\n    if (this.target.platform === 'android') {\n      this.setAndroidEnv()\n    }\n\n    if (this.target.platform === 'wasi') {\n      this.setWasiEnv()\n    }\n\n    if (this.target.platform === 'openharmony') {\n      this.setOpenHarmonyEnv()\n    }\n\n    debug('Set envs: ')\n    Object.entries(this.envs).forEach(([k, v]) => {\n      debug('  %i', `${k}=${v}`)\n    })\n\n    return this\n  }\n\n  private setForceBuildEnvs(typeDefTmpFolder: string) {\n    // dynamically check all napi-rs deps and set `NAPI_FORCE_BUILD_{uppercase(snake_case(name))} = timestamp`\n    this.metadata.packages.forEach((crate) => {\n      if (\n        crate.dependencies.some((d) => d.name === 'napi-derive') &&\n        !existsSync(join(typeDefTmpFolder, crate.name))\n      ) {\n        this.envs[\n          `NAPI_FORCE_BUILD_${crate.name.replace(/-/g, '_').toUpperCase()}`\n        ] = Date.now().toString()\n      }\n    })\n  }\n\n  private setAndroidEnv() {\n    const { ANDROID_NDK_LATEST_HOME } = process.env\n    if (!ANDROID_NDK_LATEST_HOME) {\n      debug.warn(\n        `${colors.red(\n          'ANDROID_NDK_LATEST_HOME',\n        )} environment variable is missing`,\n      )\n    }\n\n    // skip cross compile setup if host is android\n    if (process.platform === 'android') {\n      return\n    }\n\n    const targetArch = this.target.arch === 'arm' ? 'armv7a' : 'aarch64'\n    const targetPlatform =\n      this.target.arch === 'arm' ? 'androideabi24' : 'android24'\n    const hostPlatform =\n      process.platform === 'darwin'\n        ? 'darwin'\n        : process.platform === 'win32'\n          ? 'windows'\n          : 'linux'\n    Object.assign(this.envs, {\n      CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-android24-clang`,\n      CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-androideabi24-clang`,\n      TARGET_CC: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-${targetPlatform}-clang`,\n      TARGET_CXX: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/${targetArch}-linux-${targetPlatform}-clang++`,\n      TARGET_AR: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/llvm-ar`,\n      TARGET_RANLIB: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin/llvm-ranlib`,\n      ANDROID_NDK: ANDROID_NDK_LATEST_HOME,\n      PATH: `${ANDROID_NDK_LATEST_HOME}/toolchains/llvm/prebuilt/${hostPlatform}-x86_64/bin${process.platform === 'win32' ? ';' : ':'}${process.env.PATH}`,\n    })\n  }\n\n  private setWasiEnv() {\n    const emnapi = join(\n      require.resolve('emnapi'),\n      '..',\n      'lib',\n      'wasm32-wasi-threads',\n    )\n    this.envs.EMNAPI_LINK_DIR = emnapi\n    const { WASI_SDK_PATH } = process.env\n\n    if (WASI_SDK_PATH && existsSync(WASI_SDK_PATH)) {\n      this.envs.CARGO_TARGET_WASM32_WASI_PREVIEW1_THREADS_LINKER = join(\n        WASI_SDK_PATH,\n        'bin',\n        'wasm-ld',\n      )\n      this.envs.CARGO_TARGET_WASM32_WASIP1_LINKER = join(\n        WASI_SDK_PATH,\n        'bin',\n        'wasm-ld',\n      )\n      this.envs.CARGO_TARGET_WASM32_WASIP1_THREADS_LINKER = join(\n        WASI_SDK_PATH,\n        'bin',\n        'wasm-ld',\n      )\n      this.envs.CARGO_TARGET_WASM32_WASIP2_LINKER = join(\n        WASI_SDK_PATH,\n        'bin',\n        'wasm-ld',\n      )\n      this.setEnvIfNotExists('TARGET_CC', join(WASI_SDK_PATH, 'bin', 'clang'))\n      this.setEnvIfNotExists(\n        'TARGET_CXX',\n        join(WASI_SDK_PATH, 'bin', 'clang++'),\n      )\n      this.setEnvIfNotExists('TARGET_AR', join(WASI_SDK_PATH, 'bin', 'ar'))\n      this.setEnvIfNotExists(\n        'TARGET_RANLIB',\n        join(WASI_SDK_PATH, 'bin', 'ranlib'),\n      )\n      this.setEnvIfNotExists(\n        'TARGET_CFLAGS',\n        `--target=wasm32-wasi-threads --sysroot=${WASI_SDK_PATH}/share/wasi-sysroot -pthread -mllvm -wasm-enable-sjlj`,\n      )\n      this.setEnvIfNotExists(\n        'TARGET_CXXFLAGS',\n        `--target=wasm32-wasi-threads --sysroot=${WASI_SDK_PATH}/share/wasi-sysroot -pthread -mllvm -wasm-enable-sjlj`,\n      )\n      this.setEnvIfNotExists(\n        `TARGET_LDFLAGS`,\n        `-fuse-ld=${WASI_SDK_PATH}/bin/wasm-ld --target=wasm32-wasi-threads`,\n      )\n    }\n  }\n\n  private setOpenHarmonyEnv() {\n    const { OHOS_SDK_PATH, OHOS_SDK_NATIVE } = process.env\n    const ndkPath = OHOS_SDK_PATH ? `${OHOS_SDK_PATH}/native` : OHOS_SDK_NATIVE\n    // @ts-expect-error\n    if (!ndkPath && process.platform !== 'openharmony') {\n      debug.warn(\n        `${colors.red('OHOS_SDK_PATH')} or ${colors.red('OHOS_SDK_NATIVE')} environment variable is missing`,\n      )\n      return\n    }\n    const linkerName = `CARGO_TARGET_${this.target.triple.toUpperCase().replace(/-/g, '_')}_LINKER`\n    const ranPath = `${ndkPath}/llvm/bin/llvm-ranlib`\n    const arPath = `${ndkPath}/llvm/bin/llvm-ar`\n    const ccPath = `${ndkPath}/llvm/bin/${this.target.triple}-clang`\n    const cxxPath = `${ndkPath}/llvm/bin/${this.target.triple}-clang++`\n    const asPath = `${ndkPath}/llvm/bin/llvm-as`\n    const ldPath = `${ndkPath}/llvm/bin/ld.lld`\n    const stripPath = `${ndkPath}/llvm/bin/llvm-strip`\n    const objDumpPath = `${ndkPath}/llvm/bin/llvm-objdump`\n    const objCopyPath = `${ndkPath}/llvm/bin/llvm-objcopy`\n    const nmPath = `${ndkPath}/llvm/bin/llvm-nm`\n    const binPath = `${ndkPath}/llvm/bin`\n    const libPath = `${ndkPath}/llvm/lib`\n\n    this.setEnvIfNotExists('LIBCLANG_PATH', libPath)\n    this.setEnvIfNotExists('DEP_ATOMIC', 'clang_rt.builtins')\n    this.setEnvIfNotExists(linkerName, ccPath)\n    this.setEnvIfNotExists('TARGET_CC', ccPath)\n    this.setEnvIfNotExists('TARGET_CXX', cxxPath)\n    this.setEnvIfNotExists('TARGET_AR', arPath)\n    this.setEnvIfNotExists('TARGET_RANLIB', ranPath)\n    this.setEnvIfNotExists('TARGET_AS', asPath)\n    this.setEnvIfNotExists('TARGET_LD', ldPath)\n    this.setEnvIfNotExists('TARGET_STRIP', stripPath)\n    this.setEnvIfNotExists('TARGET_OBJDUMP', objDumpPath)\n    this.setEnvIfNotExists('TARGET_OBJCOPY', objCopyPath)\n    this.setEnvIfNotExists('TARGET_NM', nmPath)\n    this.envs.PATH = `${binPath}${process.platform === 'win32' ? ';' : ':'}${process.env.PATH}`\n  }\n\n  private setFeatures() {\n    const args = []\n    if (this.options.allFeatures && this.options.noDefaultFeatures) {\n      throw new Error(\n        'Cannot specify --all-features and --no-default-features together',\n      )\n    }\n    if (this.options.allFeatures) {\n      args.push('--all-features')\n    } else if (this.options.noDefaultFeatures) {\n      args.push('--no-default-features')\n    }\n    if (this.options.features) {\n      args.push('--features', ...this.options.features)\n    }\n\n    debug('Set features flags: ')\n    debug('  %O', args)\n    this.args.push(...args)\n\n    return this\n  }\n\n  private setBypassArgs() {\n    if (this.options.release) {\n      this.args.push('--release')\n    }\n\n    if (this.options.verbose) {\n      this.args.push('--verbose')\n    }\n\n    if (this.options.targetDir) {\n      this.args.push('--target-dir', this.options.targetDir)\n    }\n\n    if (this.options.profile) {\n      this.args.push('--profile', this.options.profile)\n    }\n\n    if (this.options.manifestPath) {\n      this.args.push('--manifest-path', this.options.manifestPath)\n    }\n\n    if (this.options.cargoOptions?.length) {\n      this.args.push(...this.options.cargoOptions)\n    }\n\n    return this\n  }\n\n  private generateIntermediateTypeDefFolder() {\n    let folder = join(\n      this.targetDir,\n      'napi-rs',\n      `${this.crate.name}-${createHash('sha256')\n        .update(this.crate.manifest_path)\n        .update(CLI_VERSION)\n        .digest('hex')\n        .substring(0, 8)}`,\n    )\n\n    if (!this.options.dtsCache) {\n      rmSync(folder, { recursive: true, force: true })\n      folder += `_${Date.now()}`\n    }\n\n    mkdirAsync(folder, { recursive: true })\n\n    return folder\n  }\n\n  private async postBuild() {\n    try {\n      debug(`Try to create output directory:`)\n      debug('  %i', this.outputDir)\n      await mkdirAsync(this.outputDir, { recursive: true })\n      debug(`Output directory created`)\n    } catch (e) {\n      throw new Error(`Failed to create output directory ${this.outputDir}`, {\n        cause: e,\n      })\n    }\n\n    const wasmBinaryName = await this.copyArtifact()\n\n    // only for cdylib\n    if (this.cdyLibName) {\n      const idents = await this.generateTypeDef()\n      const jsOutput = await this.writeJsBinding(idents)\n      const wasmBindingsOutput = await this.writeWasiBinding(\n        wasmBinaryName,\n        idents,\n      )\n      if (jsOutput) {\n        this.outputs.push(jsOutput)\n      }\n      if (wasmBindingsOutput) {\n        this.outputs.push(...wasmBindingsOutput)\n      }\n    }\n\n    return this.outputs\n  }\n\n  private async copyArtifact() {\n    const [srcName, destName, wasmBinaryName] = this.getArtifactNames()\n    if (!srcName || !destName) {\n      return\n    }\n\n    const profile =\n      this.options.profile ?? (this.options.release ? 'release' : 'debug')\n    const src = join(this.targetDir, this.target.triple, profile, srcName)\n    debug(`Copy artifact from: [${src}]`)\n    const dest = join(this.outputDir, destName)\n    const isWasm = dest.endsWith('.wasm')\n\n    try {\n      if (await fileExists(dest)) {\n        debug('Old artifact found, remove it first')\n        await unlinkAsync(dest)\n      }\n      debug('Copy artifact to:')\n      debug('  %i', dest)\n      if (isWasm) {\n        const { ModuleConfig } = await import('@napi-rs/wasm-tools')\n        debug('Generate debug wasm module')\n        try {\n          const debugWasmModule = new ModuleConfig()\n            .generateDwarf(true)\n            .generateNameSection(true)\n            .generateProducersSection(true)\n            .preserveCodeTransform(true)\n            .strictValidate(false)\n            .parse(await readFileAsync(src))\n          const debugWasmBinary = debugWasmModule.emitWasm(true)\n          await writeFileAsync(\n            dest.replace(/\\.wasm$/, '.debug.wasm'),\n            debugWasmBinary,\n          )\n          debug('Generate release wasm module')\n          const releaseWasmModule = new ModuleConfig()\n            .generateDwarf(false)\n            .generateNameSection(false)\n            .generateProducersSection(false)\n            .preserveCodeTransform(false)\n            .strictValidate(false)\n            .onlyStableFeatures(false)\n            .parse(debugWasmBinary)\n          const releaseWasmBinary = releaseWasmModule.emitWasm(false)\n          await writeFileAsync(dest, releaseWasmBinary)\n        } catch (e) {\n          debug.warn(\n            `Failed to generate debug wasm module: ${(e as any).message ?? e}`,\n          )\n          await copyFileAsync(src, dest)\n        }\n      } else {\n        await copyFileAsync(src, dest)\n      }\n      this.outputs.push({\n        kind: dest.endsWith('.node') ? 'node' : isWasm ? 'wasm' : 'exe',\n        path: dest,\n      })\n      return wasmBinaryName ? join(this.outputDir, wasmBinaryName) : null\n    } catch (e) {\n      throw new Error('Failed to copy artifact', { cause: e })\n    }\n  }\n\n  private getArtifactNames() {\n    if (this.cdyLibName) {\n      const cdyLib = this.cdyLibName.replace(/-/g, '_')\n      const wasiTarget = this.config.targets.find((t) => t.platform === 'wasi')\n\n      const srcName =\n        this.target.platform === 'darwin'\n          ? `lib${cdyLib}.dylib`\n          : this.target.platform === 'win32'\n            ? `${cdyLib}.dll`\n            : this.target.platform === 'wasi' || this.target.platform === 'wasm'\n              ? `${cdyLib}.wasm`\n              : `lib${cdyLib}.so`\n\n      let destName = this.config.binaryName\n      // add platform suffix to binary name\n      // index[.linux-x64-gnu].node\n      //       ^^^^^^^^^^^^^^\n      if (this.options.platform) {\n        destName += `.${this.target.platformArchABI}`\n      }\n      if (srcName.endsWith('.wasm')) {\n        destName += '.wasm'\n      } else {\n        destName += '.node'\n      }\n\n      return [\n        srcName,\n        destName,\n        wasiTarget\n          ? `${this.config.binaryName}.${wasiTarget.platformArchABI}.wasm`\n          : null,\n      ]\n    } else if (this.binName) {\n      const srcName =\n        this.target.platform === 'win32' ? `${this.binName}.exe` : this.binName\n\n      return [srcName, srcName]\n    }\n\n    return []\n  }\n\n  private async generateTypeDef() {\n    const typeDefDir = this.envs.NAPI_TYPE_DEF_TMP_FOLDER\n    if (!this.enableTypeDef) {\n      return []\n    }\n\n    const { exports, dts } = await generateTypeDef({\n      typeDefDir,\n      noDtsHeader: this.options.noDtsHeader,\n      dtsHeader: this.options.dtsHeader,\n      configDtsHeader: this.config.dtsHeader,\n      configDtsHeaderFile: this.config.dtsHeaderFile,\n      constEnum: this.options.constEnum ?? this.config.constEnum,\n      cwd: this.options.cwd,\n    })\n\n    const dest = join(this.outputDir, this.options.dts ?? 'index.d.ts')\n\n    try {\n      debug('Writing type def to:')\n      debug('  %i', dest)\n      await writeFileAsync(dest, dts, 'utf-8')\n    } catch (e) {\n      debug.error('Failed to write type def file')\n      debug.error(e as Error)\n    }\n\n    if (exports.length > 0) {\n      const dest = join(this.outputDir, this.options.dts ?? 'index.d.ts')\n      this.outputs.push({ kind: 'dts', path: dest })\n    }\n\n    return exports\n  }\n\n  private async writeJsBinding(idents: string[]) {\n    return writeJsBinding({\n      platform: this.options.platform,\n      noJsBinding: this.options.noJsBinding,\n      idents,\n      jsBinding: this.options.jsBinding,\n      esm: this.options.esm,\n      binaryName: this.config.binaryName,\n      packageName: this.options.jsPackageName ?? this.config.packageName,\n      version: process.env.npm_new_version ?? this.config.packageJson.version,\n      outputDir: this.outputDir,\n    })\n  }\n\n  private async writeWasiBinding(\n    distFileName: string | undefined | null,\n    idents: string[],\n  ) {\n    if (distFileName) {\n      const { name, dir } = parse(distFileName)\n      const bindingPath = join(dir, `${this.config.binaryName}.wasi.cjs`)\n      const browserBindingPath = join(\n        dir,\n        `${this.config.binaryName}.wasi-browser.js`,\n      )\n      const workerPath = join(dir, 'wasi-worker.mjs')\n      const browserWorkerPath = join(dir, 'wasi-worker-browser.mjs')\n      const browserEntryPath = join(dir, 'browser.js')\n      const exportsCode =\n        `module.exports = __napiModule.exports\\n` +\n        idents\n          .map(\n            (ident) =>\n              `module.exports.${ident} = __napiModule.exports.${ident}`,\n          )\n          .join('\\n')\n      await writeFileAsync(\n        bindingPath,\n        createWasiBinding(\n          name,\n          this.config.packageName,\n          this.config.wasm?.initialMemory,\n          this.config.wasm?.maximumMemory,\n        ) +\n          exportsCode +\n          '\\n',\n        'utf8',\n      )\n      await writeFileAsync(\n        browserBindingPath,\n        createWasiBrowserBinding(\n          name,\n          this.config.wasm?.initialMemory,\n          this.config.wasm?.maximumMemory,\n          this.config.wasm?.browser?.fs,\n          this.config.wasm?.browser?.asyncInit,\n          this.config.wasm?.browser?.buffer,\n        ) +\n          `export default __napiModule.exports\\n` +\n          idents\n            .map(\n              (ident) =>\n                `export const ${ident} = __napiModule.exports.${ident}`,\n            )\n            .join('\\n') +\n          '\\n',\n        'utf8',\n      )\n      await writeFileAsync(workerPath, WASI_WORKER_TEMPLATE, 'utf8')\n      await writeFileAsync(\n        browserWorkerPath,\n        createWasiBrowserWorkerBinding(this.config.wasm?.browser?.fs ?? false),\n        'utf8',\n      )\n      await writeFileAsync(\n        browserEntryPath,\n        `export * from '${this.config.packageName}-wasm32-wasi'\\n`,\n      )\n      return [\n        { kind: 'js', path: bindingPath },\n        { kind: 'js', path: browserBindingPath },\n        { kind: 'js', path: workerPath },\n        { kind: 'js', path: browserWorkerPath },\n        { kind: 'js', path: browserEntryPath },\n      ] satisfies Output[]\n    }\n    return []\n  }\n\n  private setEnvIfNotExists(env: string, value: string) {\n    if (!process.env[env]) {\n      this.envs[env] = value\n    }\n  }\n}\n\nexport interface WriteJsBindingOptions {\n  platform?: boolean\n  noJsBinding?: boolean\n  idents: string[]\n  jsBinding?: string\n  esm?: boolean\n  binaryName: string\n  packageName: string\n  version: string\n  outputDir: string\n}\n\nexport async function writeJsBinding(\n  options: WriteJsBindingOptions,\n): Promise<Output | undefined> {\n  if (\n    !options.platform ||\n    // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n    options.noJsBinding ||\n    options.idents.length === 0\n  ) {\n    return\n  }\n\n  const name = options.jsBinding ?? 'index.js'\n\n  const createBinding = options.esm ? createEsmBinding : createCjsBinding\n  const binding = createBinding(\n    options.binaryName,\n    options.packageName,\n    options.idents,\n    // in npm preversion hook\n    options.version,\n  )\n\n  try {\n    const dest = join(options.outputDir, name)\n    debug('Writing js binding to:')\n    debug('  %i', dest)\n    await writeFileAsync(dest, binding, 'utf-8')\n    return { kind: 'js', path: dest } satisfies Output\n  } catch (e) {\n    throw new Error('Failed to write js binding file', { cause: e })\n  }\n}\n\nexport interface GenerateTypeDefOptions {\n  typeDefDir: string\n  noDtsHeader?: boolean\n  dtsHeader?: string\n  dtsHeaderFile?: string\n  configDtsHeader?: string\n  configDtsHeaderFile?: string\n  constEnum?: boolean\n  cwd: string\n}\n\nexport async function generateTypeDef(\n  options: GenerateTypeDefOptions,\n): Promise<{ exports: string[]; dts: string }> {\n  if (!(await dirExistsAsync(options.typeDefDir))) {\n    return { exports: [], dts: '' }\n  }\n\n  let header = ''\n  let dts = ''\n  let exports: string[] = []\n\n  if (!options.noDtsHeader) {\n    const dtsHeader = options.dtsHeader ?? options.configDtsHeader\n    // `dtsHeaderFile` in config > `dtsHeader` in cli flag > `dtsHeader` in config\n    if (options.configDtsHeaderFile) {\n      try {\n        header = await readFileAsync(\n          join(options.cwd, options.configDtsHeaderFile),\n          'utf-8',\n        )\n      } catch (e) {\n        debug.warn(\n          `Failed to read dts header file ${options.configDtsHeaderFile}`,\n          e,\n        )\n      }\n    } else if (dtsHeader) {\n      header = dtsHeader\n    } else {\n      header = DEFAULT_TYPE_DEF_HEADER\n    }\n  }\n\n  const files = await readdirAsync(options.typeDefDir, { withFileTypes: true })\n\n  if (!files.length) {\n    debug('No type def files found. Skip generating dts file.')\n    return { exports: [], dts: '' }\n  }\n\n  for (const file of files) {\n    if (!file.isFile()) {\n      continue\n    }\n\n    const { dts: fileDts, exports: fileExports } = await processTypeDef(\n      join(options.typeDefDir, file.name),\n      options.constEnum ?? true,\n    )\n\n    dts += fileDts\n    exports.push(...fileExports)\n  }\n\n  if (dts.indexOf('ExternalObject<') > -1) {\n    header += `\nexport declare class ExternalObject<T> {\n  readonly '': {\n    readonly '': unique symbol\n    [K: symbol]: T\n  }\n}\n`\n  }\n\n  if (dts.indexOf('TypedArray') > -1) {\n    header += `\nexport type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array\n`\n  }\n\n  dts = header + dts\n\n  return {\n    exports,\n    dts,\n  }\n}\n"
  },
  {
    "path": "cli/src/api/create-npm-dirs.ts",
    "content": "import { join, resolve } from 'node:path'\n\nimport { parse } from 'semver'\n\nimport {\n  applyDefaultCreateNpmDirsOptions,\n  type CreateNpmDirsOptions,\n} from '../def/create-npm-dirs.js'\nimport {\n  debugFactory,\n  readNapiConfig,\n  mkdirAsync as rawMkdirAsync,\n  pick,\n  writeFileAsync as rawWriteFileAsync,\n  type Target,\n  type CommonPackageJsonFields,\n} from '../utils/index.js'\n\nconst debug = debugFactory('create-npm-dirs')\n\nexport interface PackageMeta {\n  'dist-tags': { [index: string]: string }\n}\n\nexport async function createNpmDirs(userOptions: CreateNpmDirsOptions) {\n  const options = applyDefaultCreateNpmDirsOptions(userOptions)\n\n  async function mkdirAsync(dir: string) {\n    debug('Try to create dir: %i', dir)\n    if (options.dryRun) {\n      return\n    }\n\n    await rawMkdirAsync(dir, {\n      recursive: true,\n    })\n  }\n\n  async function writeFileAsync(file: string, content: string) {\n    debug('Writing file %i', file)\n\n    if (options.dryRun) {\n      debug(content)\n      return\n    }\n\n    await rawWriteFileAsync(file, content)\n  }\n\n  const packageJsonPath = resolve(options.cwd, options.packageJsonPath)\n  const npmPath = resolve(options.cwd, options.npmDir)\n\n  debug(`Read content from [${options.configPath ?? packageJsonPath}]`)\n\n  const { targets, binaryName, packageName, packageJson } =\n    await readNapiConfig(\n      packageJsonPath,\n      options.configPath ? resolve(options.cwd, options.configPath) : undefined,\n    )\n\n  for (const target of targets) {\n    const targetDir = join(npmPath, `${target.platformArchABI}`)\n    await mkdirAsync(targetDir)\n\n    const binaryFileName =\n      target.arch === 'wasm32'\n        ? `${binaryName}.${target.platformArchABI}.wasm`\n        : `${binaryName}.${target.platformArchABI}.node`\n    const scopedPackageJson: CommonPackageJsonFields = {\n      name: `${packageName}-${target.platformArchABI}`,\n      version: packageJson.version,\n      cpu: target.arch !== 'universal' ? [target.arch] : undefined,\n      main: binaryFileName,\n      files: [binaryFileName],\n      ...pick(\n        packageJson,\n        'description',\n        'keywords',\n        'author',\n        'authors',\n        'homepage',\n        'license',\n        'engines',\n        'repository',\n        'bugs',\n      ),\n    }\n    if (packageJson.publishConfig) {\n      scopedPackageJson.publishConfig = pick(\n        packageJson.publishConfig,\n        'registry',\n        'access',\n      )\n    }\n    if (target.arch !== 'wasm32') {\n      scopedPackageJson.os = [target.platform]\n    } else {\n      const entry = `${binaryName}.wasi.cjs`\n      scopedPackageJson.main = entry\n      scopedPackageJson.browser = `${binaryName}.wasi-browser.js`\n      scopedPackageJson.files?.push(\n        entry,\n        scopedPackageJson.browser,\n        `wasi-worker.mjs`,\n        `wasi-worker-browser.mjs`,\n      )\n      let needRestrictNodeVersion = true\n      if (scopedPackageJson.engines?.node) {\n        try {\n          const { major } = parse(scopedPackageJson.engines.node) ?? {\n            major: 0,\n          }\n          if (major >= 14) {\n            needRestrictNodeVersion = false\n          }\n        } catch {\n          // ignore\n        }\n      }\n      if (needRestrictNodeVersion) {\n        scopedPackageJson.engines = {\n          node: '>=14.0.0',\n        }\n      }\n      const wasmRuntime = await fetch(\n        `https://registry.npmjs.org/@napi-rs/wasm-runtime`,\n      ).then((res) => res.json() as Promise<PackageMeta>)\n      scopedPackageJson.dependencies = {\n        '@napi-rs/wasm-runtime': `^${wasmRuntime['dist-tags'].latest}`,\n      }\n    }\n\n    if (target.abi === 'gnu') {\n      scopedPackageJson.libc = ['glibc']\n    } else if (target.abi === 'musl') {\n      scopedPackageJson.libc = ['musl']\n    }\n\n    const targetPackageJson = join(targetDir, 'package.json')\n    await writeFileAsync(\n      targetPackageJson,\n      JSON.stringify(scopedPackageJson, null, 2) + '\\n',\n    )\n    const targetReadme = join(targetDir, 'README.md')\n    await writeFileAsync(targetReadme, readme(packageName, target))\n\n    debug.info(`${packageName} -${target.platformArchABI} created`)\n  }\n}\n\nfunction readme(packageName: string, target: Target) {\n  return `# \\`${packageName}-${target.platformArchABI}\\`\n\nThis is the **${target.triple}** binary for \\`${packageName}\\`\n`\n}\n"
  },
  {
    "path": "cli/src/api/new.ts",
    "content": "import { exec, execSync } from 'node:child_process'\nimport { existsSync } from 'node:fs'\nimport { homedir } from 'node:os'\nimport path from 'node:path'\nimport { promises as fs } from 'node:fs'\n\nimport { load as yamlLoad, dump as yamlDump } from 'js-yaml'\n\nimport {\n  applyDefaultNewOptions,\n  type NewOptions as RawNewOptions,\n} from '../def/new.js'\nimport {\n  AVAILABLE_TARGETS,\n  debugFactory,\n  DEFAULT_TARGETS,\n  mkdirAsync,\n  readdirAsync,\n  statAsync,\n  type SupportedPackageManager,\n} from '../utils/index.js'\nimport { napiEngineRequirement } from '../utils/version.js'\nimport { renameProject } from './rename.js'\n\n// Template imports removed as we're now using external templates\n\nconst debug = debugFactory('new')\n\ntype NewOptions = Required<RawNewOptions>\n\nconst TEMPLATE_REPOS = {\n  yarn: 'https://github.com/napi-rs/package-template',\n  pnpm: 'https://github.com/napi-rs/package-template-pnpm',\n} as const\n\nasync function checkGitCommand(): Promise<boolean> {\n  try {\n    await new Promise((resolve) => {\n      const cp = exec('git --version')\n      cp.on('error', () => {\n        resolve(false)\n      })\n      cp.on('exit', (code) => {\n        if (code === 0) {\n          resolve(true)\n        } else {\n          resolve(false)\n        }\n      })\n    })\n    return true\n  } catch {\n    return false\n  }\n}\n\nasync function ensureCacheDir(\n  packageManager: SupportedPackageManager,\n): Promise<string> {\n  const cacheDir = path.join(homedir(), '.napi-rs', 'template', packageManager)\n  await mkdirAsync(cacheDir, { recursive: true })\n  return cacheDir\n}\n\nasync function downloadTemplate(\n  packageManager: SupportedPackageManager,\n  cacheDir: string,\n): Promise<void> {\n  const repoUrl = TEMPLATE_REPOS[packageManager]\n  const templatePath = path.join(cacheDir, 'repo')\n\n  if (existsSync(templatePath)) {\n    debug(`Template cache found at ${templatePath}, updating...`)\n    try {\n      // Fetch latest changes and reset to remote\n      await new Promise<void>((resolve, reject) => {\n        const cp = exec('git fetch origin', { cwd: templatePath })\n        cp.on('error', reject)\n        cp.on('exit', (code) => {\n          if (code === 0) {\n            resolve()\n          } else {\n            reject(\n              new Error(\n                `Failed to fetch latest changes, git process exited with code ${code}`,\n              ),\n            )\n          }\n        })\n      })\n      execSync('git reset --hard origin/main', {\n        cwd: templatePath,\n        stdio: 'ignore',\n      })\n      debug('Template updated successfully')\n    } catch (error) {\n      debug(`Failed to update template: ${error}`)\n      throw new Error(`Failed to update template from ${repoUrl}: ${error}`)\n    }\n  } else {\n    debug(`Cloning template from ${repoUrl}...`)\n    try {\n      execSync(`git clone ${repoUrl} repo`, { cwd: cacheDir, stdio: 'inherit' })\n      debug('Template cloned successfully')\n    } catch (error) {\n      throw new Error(`Failed to clone template from ${repoUrl}: ${error}`)\n    }\n  }\n}\n\nasync function copyDirectory(\n  src: string,\n  dest: string,\n  includeWasiBindings: boolean,\n): Promise<void> {\n  await mkdirAsync(dest, { recursive: true })\n  const entries = await fs.readdir(src, { withFileTypes: true })\n\n  for (const entry of entries) {\n    const srcPath = path.join(src, entry.name)\n    const destPath = path.join(dest, entry.name)\n\n    // Skip .git directory\n    if (entry.name === '.git') {\n      continue\n    }\n\n    if (entry.isDirectory()) {\n      await copyDirectory(srcPath, destPath, includeWasiBindings)\n    } else {\n      if (\n        !includeWasiBindings &&\n        (entry.name.endsWith('.wasi-browser.js') ||\n          entry.name.endsWith('.wasi.cjs') ||\n          entry.name.endsWith('wasi-worker.browser.mjs ') ||\n          entry.name.endsWith('wasi-worker.mjs') ||\n          entry.name.endsWith('browser.js'))\n      ) {\n        continue\n      }\n      await fs.copyFile(srcPath, destPath)\n    }\n  }\n}\n\nasync function filterTargetsInPackageJson(\n  filePath: string,\n  enabledTargets: string[],\n): Promise<void> {\n  const content = await fs.readFile(filePath, 'utf-8')\n  const packageJson = JSON.parse(content)\n\n  // Filter napi.targets\n  if (packageJson.napi?.targets) {\n    packageJson.napi.targets = packageJson.napi.targets.filter(\n      (target: string) => enabledTargets.includes(target),\n    )\n  }\n\n  await fs.writeFile(filePath, JSON.stringify(packageJson, null, 2) + '\\n')\n}\n\nasync function filterTargetsInGithubActions(\n  filePath: string,\n  enabledTargets: string[],\n): Promise<void> {\n  const content = await fs.readFile(filePath, 'utf-8')\n  const yaml = yamlLoad(content) as any\n\n  const macOSAndWindowsTargets = new Set([\n    'x86_64-pc-windows-msvc',\n    'x86_64-pc-windows-gnu',\n    'aarch64-pc-windows-msvc',\n    'x86_64-apple-darwin',\n  ])\n\n  const linuxTargets = new Set([\n    'x86_64-unknown-linux-gnu',\n    'x86_64-unknown-linux-musl',\n    'aarch64-unknown-linux-gnu',\n    'aarch64-unknown-linux-musl',\n    'armv7-unknown-linux-gnueabihf',\n    'armv7-unknown-linux-musleabihf',\n    'loongarch64-unknown-linux-gnu',\n    'riscv64gc-unknown-linux-gnu',\n    'powerpc64le-unknown-linux-gnu',\n    's390x-unknown-linux-gnu',\n    'aarch64-linux-android',\n    'armv7-linux-androideabi',\n  ])\n\n  // Check if any Linux targets are enabled\n  const hasLinuxTargets = enabledTargets.some((target) =>\n    linuxTargets.has(target),\n  )\n\n  // Filter the matrix configurations in the build job\n  if (yaml?.jobs?.build?.strategy?.matrix?.settings) {\n    yaml.jobs.build.strategy.matrix.settings =\n      yaml.jobs.build.strategy.matrix.settings.filter((setting: any) => {\n        if (setting.target) {\n          return enabledTargets.includes(setting.target)\n        }\n        return true\n      })\n  }\n\n  const jobsToRemove: string[] = []\n\n  if (enabledTargets.every((target) => !macOSAndWindowsTargets.has(target))) {\n    jobsToRemove.push('test-macOS-windows-binding')\n  } else {\n    // Filter the matrix configurations in the test-macOS-windows-binding job\n    if (\n      yaml?.jobs?.['test-macOS-windows-binding']?.strategy?.matrix?.settings\n    ) {\n      yaml.jobs['test-macOS-windows-binding'].strategy.matrix.settings =\n        yaml.jobs['test-macOS-windows-binding'].strategy.matrix.settings.filter(\n          (setting: any) => {\n            if (setting.target) {\n              return enabledTargets.includes(setting.target)\n            }\n            return true\n          },\n        )\n    }\n  }\n\n  // If no Linux targets are enabled, remove Linux-specific jobs\n  if (!hasLinuxTargets) {\n    // Remove test-linux-binding job\n    if (yaml?.jobs?.['test-linux-binding']) {\n      jobsToRemove.push('test-linux-binding')\n    }\n  } else {\n    // Filter the matrix configurations in the test-linux-x64-gnu-binding job\n    if (yaml?.jobs?.['test-linux-binding']?.strategy?.matrix?.target) {\n      yaml.jobs['test-linux-binding'].strategy.matrix.target = yaml.jobs[\n        'test-linux-binding'\n      ].strategy.matrix.target.filter((target: string) => {\n        if (target) {\n          return enabledTargets.includes(target)\n        }\n        return true\n      })\n    }\n  }\n\n  if (!enabledTargets.includes('wasm32-wasip1-threads')) {\n    jobsToRemove.push('test-wasi')\n  }\n\n  if (!enabledTargets.includes('x86_64-unknown-freebsd')) {\n    jobsToRemove.push('build-freebsd')\n  }\n\n  // Filter other test jobs based on target\n  for (const [jobName, jobConfig] of Object.entries(yaml.jobs || {})) {\n    if (\n      jobName.startsWith('test-') &&\n      jobName !== 'test-macOS-windows-binding' &&\n      jobName !== 'test-linux-x64-gnu-binding'\n    ) {\n      // Extract target from job name or config\n      const job = jobConfig as any\n      if (job.strategy?.matrix?.settings?.[0]?.target) {\n        const target = job.strategy.matrix.settings[0].target\n        if (!enabledTargets.includes(target)) {\n          jobsToRemove.push(jobName)\n        }\n      }\n    }\n  }\n\n  // Remove jobs for disabled targets\n  for (const jobName of jobsToRemove) {\n    delete yaml.jobs[jobName]\n  }\n\n  if (Array.isArray(yaml.jobs?.publish?.needs)) {\n    yaml.jobs.publish.needs = yaml.jobs.publish.needs.filter(\n      (need: string) => !jobsToRemove.includes(need),\n    )\n  }\n\n  // Write back the filtered YAML\n  const updatedYaml = yamlDump(yaml, {\n    lineWidth: -1,\n    noRefs: true,\n    sortKeys: false,\n  })\n  await fs.writeFile(filePath, updatedYaml)\n}\n\nfunction processOptions(options: RawNewOptions) {\n  debug('Processing options...')\n  if (!options.path) {\n    throw new Error('Please provide the path as the argument')\n  }\n  options.path = path.resolve(process.cwd(), options.path)\n  debug(`Resolved target path to: ${options.path}`)\n\n  if (!options.name) {\n    options.name = path.parse(options.path).base\n    debug(`No project name provided, fix it to dir name: ${options.name}`)\n  }\n\n  if (!options.targets?.length) {\n    if (options.enableAllTargets) {\n      options.targets = AVAILABLE_TARGETS.concat()\n      debug('Enable all targets')\n    } else if (options.enableDefaultTargets) {\n      options.targets = DEFAULT_TARGETS.concat()\n      debug('Enable default targets')\n    } else {\n      throw new Error('At least one target must be enabled')\n    }\n  }\n  if (\n    options.targets.some((target) => target === 'wasm32-wasi-preview1-threads')\n  ) {\n    const out = execSync(`rustup target list`, {\n      encoding: 'utf8',\n    })\n    if (out.includes('wasm32-wasip1-threads')) {\n      options.targets = options.targets.map((target) =>\n        target === 'wasm32-wasi-preview1-threads'\n          ? 'wasm32-wasip1-threads'\n          : target,\n      )\n    }\n  }\n\n  return applyDefaultNewOptions(options) as NewOptions\n}\n\nexport async function newProject(userOptions: RawNewOptions) {\n  debug('Will create napi-rs project with given options:')\n  debug(userOptions)\n\n  const options = processOptions(userOptions)\n\n  debug('Targets to be enabled:')\n  debug(options.targets)\n\n  // Check if git is available\n  if (!(await checkGitCommand())) {\n    throw new Error(\n      'Git is not installed or not available in PATH. Please install Git to continue.',\n    )\n  }\n\n  const packageManager = options.packageManager as SupportedPackageManager\n\n  // Ensure target directory exists and is empty\n  await ensurePath(options.path, options.dryRun)\n\n  if (!options.dryRun) {\n    try {\n      // Download or update template\n      const cacheDir = await ensureCacheDir(packageManager)\n      await downloadTemplate(packageManager, cacheDir)\n\n      // Copy template files to target directory\n      const templatePath = path.join(cacheDir, 'repo')\n      await copyDirectory(\n        templatePath,\n        options.path,\n        options.targets.includes('wasm32-wasip1-threads'),\n      )\n\n      // Rename project using the rename API\n      await renameProject({\n        cwd: options.path,\n        name: options.name,\n        binaryName: getBinaryName(options.name),\n      })\n\n      // Filter targets in package.json\n      const packageJsonPath = path.join(options.path, 'package.json')\n      if (existsSync(packageJsonPath)) {\n        await filterTargetsInPackageJson(packageJsonPath, options.targets)\n      }\n\n      // Filter targets in GitHub Actions CI\n      const ciPath = path.join(options.path, '.github', 'workflows', 'CI.yml')\n      if (existsSync(ciPath) && options.enableGithubActions) {\n        await filterTargetsInGithubActions(ciPath, options.targets)\n      } else if (\n        !options.enableGithubActions &&\n        existsSync(path.join(options.path, '.github'))\n      ) {\n        // Remove .github directory if GitHub Actions is not enabled\n        await fs.rm(path.join(options.path, '.github'), {\n          recursive: true,\n          force: true,\n        })\n      }\n\n      // Update package.json with additional configurations\n      const pkgJsonContent = await fs.readFile(packageJsonPath, 'utf-8')\n      const pkgJson = JSON.parse(pkgJsonContent)\n\n      // Update engine requirement\n      if (!pkgJson.engines) {\n        pkgJson.engines = {}\n      }\n      pkgJson.engines.node = napiEngineRequirement(options.minNodeApiVersion)\n\n      // Update license if different from template\n      if (options.license && pkgJson.license !== options.license) {\n        pkgJson.license = options.license\n      }\n\n      // Update test framework if needed\n      if (options.testFramework !== 'ava') {\n        // This would require more complex logic to update test scripts and dependencies\n        debug(\n          `Test framework ${options.testFramework} requested but not yet implemented`,\n        )\n      }\n\n      await fs.writeFile(\n        packageJsonPath,\n        JSON.stringify(pkgJson, null, 2) + '\\n',\n      )\n    } catch (error) {\n      throw new Error(`Failed to create project: ${error}`)\n    }\n  }\n\n  debug(`Project created at: ${options.path}`)\n}\n\nasync function ensurePath(path: string, dryRun = false) {\n  const stat = await statAsync(path, {}).catch(() => undefined)\n\n  // file descriptor exists\n  if (stat) {\n    if (stat.isFile()) {\n      throw new Error(\n        `Path ${path} for creating new napi-rs project already exists and it's not a directory.`,\n      )\n    } else if (stat.isDirectory()) {\n      const files = await readdirAsync(path)\n      if (files.length) {\n        throw new Error(\n          `Path ${path} for creating new napi-rs project already exists and it's not empty.`,\n        )\n      }\n    }\n  }\n\n  if (!dryRun) {\n    try {\n      debug(`Try to create target directory: ${path}`)\n      if (!dryRun) {\n        await mkdirAsync(path, { recursive: true })\n      }\n    } catch (e) {\n      throw new Error(`Failed to create target directory: ${path}`, {\n        cause: e,\n      })\n    }\n  }\n}\n\nfunction getBinaryName(name: string): string {\n  return name.split('/').pop()!\n}\n\nexport type { NewOptions }\n"
  },
  {
    "path": "cli/src/api/pre-publish.ts",
    "content": "import { execSync } from 'node:child_process'\nimport { existsSync, statSync } from 'node:fs'\nimport { join, resolve } from 'node:path'\n\nimport { Octokit } from '@octokit/rest'\n\nimport {\n  applyDefaultPrePublishOptions,\n  type PrePublishOptions,\n} from '../def/pre-publish.js'\nimport {\n  readFileAsync,\n  readNapiConfig,\n  debugFactory,\n  updatePackageJson,\n} from '../utils/index.js'\n\nimport { version } from './version.js'\n\nconst debug = debugFactory('pre-publish')\n\ninterface PackageInfo {\n  name: string\n  version: string\n  tag: string\n}\n\nexport async function prePublish(userOptions: PrePublishOptions) {\n  debug('Receive pre-publish options:')\n  debug('  %O', userOptions)\n\n  const options = applyDefaultPrePublishOptions(userOptions)\n\n  const packageJsonPath = resolve(options.cwd, options.packageJsonPath)\n\n  const { packageJson, targets, packageName, binaryName, npmClient } =\n    await readNapiConfig(\n      packageJsonPath,\n      options.configPath ? resolve(options.cwd, options.configPath) : undefined,\n    )\n\n  async function createGhRelease(packageName: string, version: string) {\n    if (!options.ghRelease) {\n      return {\n        owner: null,\n        repo: null,\n        pkgInfo: { name: null, version: null, tag: null },\n      }\n    }\n    const { repo, owner, pkgInfo, octokit } = getRepoInfo(packageName, version)\n\n    if (!repo || !owner) {\n      return {\n        owner: null,\n        repo: null,\n        pkgInfo: { name: null, version: null, tag: null },\n      }\n    }\n\n    if (!options.dryRun) {\n      try {\n        await octokit.repos.createRelease({\n          owner,\n          repo,\n          tag_name: pkgInfo.tag,\n          name: options.ghReleaseName,\n          prerelease:\n            version.includes('alpha') ||\n            version.includes('beta') ||\n            version.includes('rc'),\n        })\n      } catch (e) {\n        debug(\n          `Params: ${JSON.stringify(\n            { owner, repo, tag_name: pkgInfo.tag },\n            null,\n            2,\n          )}`,\n        )\n        console.error(e)\n      }\n    }\n    return { owner, repo, pkgInfo, octokit }\n  }\n\n  function getRepoInfo(packageName: string, version: string) {\n    const headCommit = execSync('git log -1 --pretty=%B', {\n      encoding: 'utf-8',\n    }).trim()\n\n    const { GITHUB_REPOSITORY } = process.env\n    if (!GITHUB_REPOSITORY) {\n      return {\n        owner: null,\n        repo: null,\n        pkgInfo: { name: null, version: null, tag: null },\n      }\n    }\n    debug(`Github repository: ${GITHUB_REPOSITORY}`)\n    const [owner, repo] = GITHUB_REPOSITORY.split('/')\n    const octokit = new Octokit({\n      auth: process.env.GITHUB_TOKEN,\n    })\n    let pkgInfo: PackageInfo | undefined\n    if (options.tagStyle === 'lerna') {\n      const packagesToPublish = headCommit\n        .split('\\n')\n        .map((line) => line.trim())\n        .filter((line, index) => line.length && index)\n        .map((line) => line.substring(2))\n        .map(parseTag)\n\n      pkgInfo = packagesToPublish.find(\n        (pkgInfo) => pkgInfo.name === packageName,\n      )\n\n      if (!pkgInfo) {\n        throw new TypeError(\n          `No release commit found with ${packageName}, original commit info: ${headCommit}`,\n        )\n      }\n    } else {\n      pkgInfo = {\n        tag: `v${version}`,\n        version,\n        name: packageName,\n      }\n    }\n    return { owner, repo, pkgInfo, octokit }\n  }\n\n  if (!options.dryRun) {\n    await version(userOptions)\n    await updatePackageJson(packageJsonPath, {\n      optionalDependencies: targets.reduce(\n        (deps, target) => {\n          deps[`${packageName}-${target.platformArchABI}`] = packageJson.version\n\n          return deps\n        },\n        {} as Record<string, string>,\n      ),\n    })\n  }\n\n  const { owner, repo, pkgInfo, octokit } = options.ghReleaseId\n    ? getRepoInfo(packageName, packageJson.version)\n    : await createGhRelease(packageName, packageJson.version)\n\n  for (const target of targets) {\n    const pkgDir = resolve(\n      options.cwd,\n      options.npmDir,\n      `${target.platformArchABI}`,\n    )\n    const ext =\n      target.platform === 'wasi' || target.platform === 'wasm' ? 'wasm' : 'node'\n    const filename = `${binaryName}.${target.platformArchABI}.${ext}`\n    const dstPath = join(pkgDir, filename)\n\n    if (!options.dryRun) {\n      if (!existsSync(dstPath)) {\n        debug.warn(`%s doesn't exist`, dstPath)\n        continue\n      }\n\n      if (!options.skipOptionalPublish) {\n        try {\n          const output = execSync(`${npmClient} publish`, {\n            cwd: pkgDir,\n            env: process.env,\n            stdio: 'pipe',\n          })\n          process.stdout.write(output)\n        } catch (e) {\n          if (\n            e instanceof Error &&\n            e.message.includes(\n              'You cannot publish over the previously published versions',\n            )\n          ) {\n            console.info(e.message)\n            debug.warn(`${pkgDir} has been published, skipping`)\n          } else {\n            throw e\n          }\n        }\n      }\n\n      if (options.ghRelease && repo && owner) {\n        debug.info(`Creating GitHub release ${pkgInfo.tag}`)\n        try {\n          const releaseId = options.ghReleaseId\n            ? Number(options.ghReleaseId)\n            : (\n                await octokit!.repos.getReleaseByTag({\n                  repo: repo,\n                  owner: owner,\n                  tag: pkgInfo.tag,\n                })\n              ).data.id\n          const dstFileStats = statSync(dstPath)\n          const assetInfo = await octokit!.repos.uploadReleaseAsset({\n            owner: owner,\n            repo: repo,\n            name: filename,\n            release_id: releaseId,\n            mediaType: { format: 'raw' },\n            headers: {\n              'content-length': dstFileStats.size,\n              'content-type': 'application/octet-stream',\n            },\n            // @ts-expect-error octokit types are wrong\n            data: await readFileAsync(dstPath),\n          })\n          debug.info(`GitHub release created`)\n          debug.info(`Download URL: %s`, assetInfo.data.browser_download_url)\n        } catch (e) {\n          debug.error(\n            `Param: ${JSON.stringify(\n              { owner, repo, tag: pkgInfo.tag, filename: dstPath },\n              null,\n              2,\n            )}`,\n          )\n          debug.error(e)\n        }\n      }\n    }\n  }\n}\n\nfunction parseTag(tag: string) {\n  const segments = tag.split('@')\n  const version = segments.pop()!\n  const name = segments.join('@')\n\n  return {\n    name,\n    version,\n    tag,\n  }\n}\n"
  },
  {
    "path": "cli/src/api/rename.ts",
    "content": "import { existsSync } from 'node:fs'\nimport { rename } from 'node:fs/promises'\nimport { resolve, join } from 'node:path'\n\nimport { parse as parseToml, stringify as stringifyToml } from '@std/toml'\nimport { load as yamlParse, dump as yamlStringify } from 'js-yaml'\nimport { isNil, merge, omitBy, pick } from 'es-toolkit'\nimport * as find from 'empathic/find'\n\nimport { applyDefaultRenameOptions, type RenameOptions } from '../def/rename.js'\nimport { readConfig, readFileAsync, writeFileAsync } from '../utils/index.js'\n\nexport async function renameProject(userOptions: RenameOptions) {\n  const options = applyDefaultRenameOptions(userOptions)\n  const napiConfig = await readConfig(options)\n  const oldName = napiConfig.binaryName\n\n  const packageJsonPath = resolve(options.cwd, options.packageJsonPath)\n  const cargoTomlPath = resolve(options.cwd, options.manifestPath)\n\n  const packageJsonContent = await readFileAsync(packageJsonPath, 'utf8')\n  const packageJsonData = JSON.parse(packageJsonContent)\n\n  merge(\n    merge(\n      packageJsonData,\n      omitBy(\n        // @ts-expect-error missing fields: author and license\n        pick(options, ['name', 'description', 'author', 'license']),\n        isNil,\n      ),\n    ),\n    {\n      napi: omitBy(\n        {\n          binaryName: options.binaryName,\n          packageName: options.packageName,\n        },\n        isNil,\n      ),\n    },\n  )\n\n  if (options.configPath) {\n    const configPath = resolve(options.cwd, options.configPath)\n    const configContent = await readFileAsync(configPath, 'utf8')\n    const configData = JSON.parse(configContent)\n    configData.binaryName = options.binaryName\n    configData.packageName = options.packageName\n    await writeFileAsync(configPath, JSON.stringify(configData, null, 2))\n  }\n\n  await writeFileAsync(\n    packageJsonPath,\n    JSON.stringify(packageJsonData, null, 2),\n  )\n\n  const tomlContent = await readFileAsync(cargoTomlPath, 'utf8')\n  const cargoToml = parseToml(tomlContent) as any\n\n  // Update the package name\n  if (cargoToml.package && options.binaryName) {\n    // Sanitize the binary name for Rust package naming conventions\n    const sanitizedName = options.binaryName\n      .replace('@', '')\n      .replace('/', '_')\n      .replace(/-/g, '_')\n      .toLowerCase()\n    cargoToml.package.name = sanitizedName\n  }\n\n  // Stringify the updated TOML\n  const updatedTomlContent = stringifyToml(cargoToml)\n\n  await writeFileAsync(cargoTomlPath, updatedTomlContent)\n  if (oldName !== options.binaryName) {\n    const githubActionsPath = find.dir('.github', {\n      cwd: options.cwd,\n    })\n    if (githubActionsPath) {\n      const githubActionsCIYmlPath = join(\n        githubActionsPath,\n        'workflows',\n        'CI.yml',\n      )\n      if (existsSync(githubActionsCIYmlPath)) {\n        const githubActionsContent = await readFileAsync(\n          githubActionsCIYmlPath,\n          'utf8',\n        )\n        const githubActionsData = yamlParse(githubActionsContent) as any\n        if (githubActionsData.env?.APP_NAME) {\n          githubActionsData.env.APP_NAME = options.binaryName\n          await writeFileAsync(\n            githubActionsCIYmlPath,\n            yamlStringify(githubActionsData, {\n              lineWidth: -1,\n              noRefs: true,\n              sortKeys: false,\n            }),\n          )\n        }\n      }\n    }\n    const oldWasiBrowserBindingPath = join(\n      options.cwd,\n      `${oldName}.wasi-browser.js`,\n    )\n    if (existsSync(oldWasiBrowserBindingPath)) {\n      await rename(\n        oldWasiBrowserBindingPath,\n        join(options.cwd, `${options.binaryName}.wasi-browser.js`),\n      )\n    }\n    const oldWasiBindingPath = join(options.cwd, `${oldName}.wasi.cjs`)\n    if (existsSync(oldWasiBindingPath)) {\n      await rename(\n        oldWasiBindingPath,\n        join(options.cwd, `${options.binaryName}.wasi.cjs`),\n      )\n    }\n    const gitAttributesPath = join(options.cwd, '.gitattributes')\n    if (existsSync(gitAttributesPath)) {\n      const gitAttributesContent = await readFileAsync(\n        gitAttributesPath,\n        'utf8',\n      )\n      const gitAttributesData = gitAttributesContent\n        .split('\\n')\n        .map((line) => {\n          return line\n            .replace(\n              `${oldName}.wasi-browser.js`,\n              `${options.binaryName}.wasi-browser.js`,\n            )\n            .replace(`${oldName}.wasi.cjs`, `${options.binaryName}.wasi.cjs`)\n        })\n        .join('\\n')\n      await writeFileAsync(gitAttributesPath, gitAttributesData)\n    }\n  }\n}\n"
  },
  {
    "path": "cli/src/api/templates/index.ts",
    "content": "export * from './js-binding.js'\n"
  },
  {
    "path": "cli/src/api/templates/js-binding.ts",
    "content": "export function createCjsBinding(\n  localName: string,\n  pkgName: string,\n  idents: string[],\n  packageVersion?: string,\n): string {\n  return `${bindingHeader}\n${createCommonBinding(localName, pkgName, packageVersion)}\nmodule.exports = nativeBinding\n${idents\n  .map((ident) => `module.exports.${ident} = nativeBinding.${ident}`)\n  .join('\\n')}\n`\n}\n\nexport function createEsmBinding(\n  localName: string,\n  pkgName: string,\n  idents: string[],\n  packageVersion?: string,\n): string {\n  return `${bindingHeader}\nimport { createRequire } from 'node:module'\nconst require = createRequire(import.meta.url)\nconst __dirname = new URL('.', import.meta.url).pathname\n\n${createCommonBinding(localName, pkgName, packageVersion)}\nconst { ${idents.join(', ')} } = nativeBinding\n${idents.map((ident) => `export { ${ident} }`).join('\\n')}\n`\n}\n\nconst bindingHeader = `// prettier-ignore\n/* eslint-disable */\n// @ts-nocheck\n/* auto-generated by NAPI-RS */\n`\n\nfunction createCommonBinding(\n  localName: string,\n  pkgName: string,\n  packageVersion?: string,\n): string {\n  function requireTuple(tuple: string, identSize = 8) {\n    const identLow = ' '.repeat(identSize - 2)\n    const ident = ' '.repeat(identSize)\n    const versionCheck = packageVersion\n      ? `\n${identLow}try {\n${ident}const binding = require('${pkgName}-${tuple}')\n${ident}const bindingPackageVersion = require('${pkgName}-${tuple}/package.json').version\n${ident}if (bindingPackageVersion !== '${packageVersion}' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n${ident}  throw new Error(\\`Native binding package version mismatch, expected ${packageVersion} but got \\${bindingPackageVersion}. You can reinstall dependencies to fix this issue.\\`)\n${ident}}\n${ident}return binding\n${identLow}} catch (e) {\n${ident}loadErrors.push(e)\n${identLow}}`\n      : `\n${identLow}try {\n${ident}return require('${pkgName}-${tuple}')\n${identLow}} catch (e) {\n${ident}loadErrors.push(e)\n${identLow}}`\n    return `try {\n${ident}return require('./${localName}.${tuple}.node')\n${identLow}} catch (e) {\n${ident}loadErrors.push(e)\n${identLow}}${versionCheck}`\n  }\n\n  return `const { readFileSync } = require('node:fs')\nlet nativeBinding = null\nconst loadErrors = []\n\nconst isMusl = () => {\n  let musl = false\n  if (process.platform === 'linux') {\n    musl = isMuslFromFilesystem()\n    if (musl === null) {\n      musl = isMuslFromReport()\n    }\n    if (musl === null) {\n      musl = isMuslFromChildProcess()\n    }\n  }\n  return musl\n}\n\nconst isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-')\n\nconst isMuslFromFilesystem = () => {\n  try {\n    return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl')\n  } catch {\n    return null\n  }\n}\n\nconst isMuslFromReport = () => {\n  let report = null\n  if (typeof process.report?.getReport === 'function') {\n    process.report.excludeNetwork = true\n    report = process.report.getReport()\n  }\n  if (!report) {\n    return null\n  }\n  if (report.header && report.header.glibcVersionRuntime) {\n    return false\n  }\n  if (Array.isArray(report.sharedObjects)) {\n    if (report.sharedObjects.some(isFileMusl)) {\n      return true\n    }\n  }\n  return false\n}\n\nconst isMuslFromChildProcess = () => {\n  try {\n    return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl')\n  } catch (e) {\n    // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false\n    return false\n  }\n}\n\nfunction requireNative() {\n  if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) {\n    try {\n      return require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH);\n    } catch (err) {\n      loadErrors.push(err)\n    }\n  } else if (process.platform === 'android') {\n    if (process.arch === 'arm64') {\n      ${requireTuple('android-arm64')}\n    } else if (process.arch === 'arm') {\n      ${requireTuple('android-arm-eabi')}\n    } else {\n      loadErrors.push(new Error(\\`Unsupported architecture on Android \\${process.arch}\\`))\n    }\n  } else if (process.platform === 'win32') {\n    if (process.arch === 'x64') {\n      if (process.config?.variables?.shlib_suffix === 'dll.a' || process.config?.variables?.node_target_type === 'shared_library') {\n        ${requireTuple('win32-x64-gnu')}\n      } else {\n        ${requireTuple('win32-x64-msvc')}\n      }\n    } else if (process.arch === 'ia32') {\n      ${requireTuple('win32-ia32-msvc')}\n    } else if (process.arch === 'arm64') {\n      ${requireTuple('win32-arm64-msvc')}\n    } else {\n      loadErrors.push(new Error(\\`Unsupported architecture on Windows: \\${process.arch}\\`))\n    }\n  } else if (process.platform === 'darwin') {\n    ${requireTuple('darwin-universal', 6)}\n    if (process.arch === 'x64') {\n      ${requireTuple('darwin-x64')}\n    } else if (process.arch === 'arm64') {\n      ${requireTuple('darwin-arm64')}\n    } else {\n      loadErrors.push(new Error(\\`Unsupported architecture on macOS: \\${process.arch}\\`))\n    }\n  } else if (process.platform === 'freebsd') {\n    if (process.arch === 'x64') {\n      ${requireTuple('freebsd-x64')}\n    } else if (process.arch === 'arm64') {\n      ${requireTuple('freebsd-arm64')}\n    } else {\n      loadErrors.push(new Error(\\`Unsupported architecture on FreeBSD: \\${process.arch}\\`))\n    }\n  } else if (process.platform === 'linux') {\n    if (process.arch === 'x64') {\n      if (isMusl()) {\n        ${requireTuple('linux-x64-musl', 10)}\n      } else {\n        ${requireTuple('linux-x64-gnu', 10)}\n      }\n    } else if (process.arch === 'arm64') {\n      if (isMusl()) {\n        ${requireTuple('linux-arm64-musl', 10)}\n      } else {\n        ${requireTuple('linux-arm64-gnu', 10)}\n      }\n    } else if (process.arch === 'arm') {\n      if (isMusl()) {\n        ${requireTuple('linux-arm-musleabihf', 10)}\n      } else {\n        ${requireTuple('linux-arm-gnueabihf', 10)}\n      }\n    } else if (process.arch === 'loong64') {\n      if (isMusl()) {\n        ${requireTuple('linux-loong64-musl', 10)}\n      } else {\n        ${requireTuple('linux-loong64-gnu', 10)}\n      }\n    } else if (process.arch === 'riscv64') {\n      if (isMusl()) {\n        ${requireTuple('linux-riscv64-musl', 10)}\n      } else {\n        ${requireTuple('linux-riscv64-gnu', 10)}\n      }\n    } else if (process.arch === 'ppc64') {\n      ${requireTuple('linux-ppc64-gnu')}\n    } else if (process.arch === 's390x') {\n      ${requireTuple('linux-s390x-gnu')}\n    } else {\n      loadErrors.push(new Error(\\`Unsupported architecture on Linux: \\${process.arch}\\`))\n    }\n  } else if (process.platform === 'openharmony') {\n    if (process.arch === 'arm64') {\n      ${requireTuple('openharmony-arm64')}\n    } else if (process.arch === 'x64') {\n      ${requireTuple('openharmony-x64')}\n    } else if (process.arch === 'arm') {\n      ${requireTuple('openharmony-arm')}\n    } else {\n      loadErrors.push(new Error(\\`Unsupported architecture on OpenHarmony: \\${process.arch}\\`))\n    }\n  } else {\n    loadErrors.push(new Error(\\`Unsupported OS: \\${process.platform}, architecture: \\${process.arch}\\`))\n  }\n}\n\nnativeBinding = requireNative()\n\nif (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {\n  let wasiBinding = null\n  let wasiBindingError = null\n  try {\n    wasiBinding = require('./${localName}.wasi.cjs')\n    nativeBinding = wasiBinding\n  } catch (err) {\n    if (process.env.NAPI_RS_FORCE_WASI) {\n      wasiBindingError = err\n    }\n  }\n  if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {\n    try {\n      wasiBinding = require('${pkgName}-wasm32-wasi')\n      nativeBinding = wasiBinding\n    } catch (err) {\n      if (process.env.NAPI_RS_FORCE_WASI) {\n        if (!wasiBindingError) {\n          wasiBindingError = err\n        } else {\n          wasiBindingError.cause = err\n        }\n        loadErrors.push(err)\n      }\n    }\n  }\n  if (process.env.NAPI_RS_FORCE_WASI === 'error' && !wasiBinding) {\n    const error = new Error('WASI binding not found and NAPI_RS_FORCE_WASI is set to error')\n    error.cause = wasiBindingError\n    throw error\n  }\n}\n\nif (!nativeBinding) {\n  if (loadErrors.length > 0) {\n    throw new Error(\n      \\`Cannot find native binding. \\` +\n        \\`npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). \\` +\n        'Please try \\`npm i\\` again after removing both package-lock.json and node_modules directory.',\n      {\n        cause: loadErrors.reduce((err, cur) => {\n          cur.cause = err\n          return cur\n        }),\n      },\n    )\n  }\n  throw new Error(\\`Failed to load native binding\\`)\n}\n`\n}\n"
  },
  {
    "path": "cli/src/api/templates/load-wasi-template.ts",
    "content": "export const createWasiBrowserBinding = (\n  wasiFilename: string,\n  initialMemory = 4000,\n  maximumMemory = 65536,\n  fs = false,\n  asyncInit = false,\n  buffer = false,\n) => {\n  const fsImport = fs\n    ? buffer\n      ? `import { memfs, Buffer } from '@napi-rs/wasm-runtime/fs'`\n      : `import { memfs } from '@napi-rs/wasm-runtime/fs'`\n    : ''\n  const bufferImport = buffer && !fs ? `import { Buffer } from 'buffer'` : ''\n  const wasiCreation = fs\n    ? `\nexport const { fs: __fs, vol: __volume } = memfs()\n\nconst __wasi = new __WASI({\n  version: 'preview1',\n  fs: __fs,\n  preopens: {\n    '/': '/',\n  },\n})`\n    : `\nconst __wasi = new __WASI({\n  version: 'preview1',\n})`\n\n  const workerFsHandler = fs\n    ? `    worker.addEventListener('message', __wasmCreateOnMessageForFsProxy(__fs))\\n`\n    : ''\n\n  const emnapiInjectBuffer = buffer\n    ? '__emnapiContext.feature.Buffer = Buffer'\n    : ''\n  const emnapiInstantiateImport = asyncInit\n    ? `instantiateNapiModule as __emnapiInstantiateNapiModule`\n    : `instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync`\n  const emnapiInstantiateCall = asyncInit\n    ? `await __emnapiInstantiateNapiModule`\n    : `__emnapiInstantiateNapiModuleSync`\n\n  return `import {\n  createOnMessage as __wasmCreateOnMessageForFsProxy,\n  getDefaultContext as __emnapiGetDefaultContext,\n  ${emnapiInstantiateImport},\n  WASI as __WASI,\n} from '@napi-rs/wasm-runtime'\n${fsImport}\n${bufferImport}\n${wasiCreation}\n\nconst __wasmUrl = new URL('./${wasiFilename}.wasm', import.meta.url).href\nconst __emnapiContext = __emnapiGetDefaultContext()\n${emnapiInjectBuffer}\n\nconst __sharedMemory = new WebAssembly.Memory({\n  initial: ${initialMemory},\n  maximum: ${maximumMemory},\n  shared: true,\n})\n\nconst __wasmFile = await fetch(__wasmUrl).then((res) => res.arrayBuffer())\n\nconst {\n  instance: __napiInstance,\n  module: __wasiModule,\n  napiModule: __napiModule,\n} = ${emnapiInstantiateCall}(__wasmFile, {\n  context: __emnapiContext,\n  asyncWorkPoolSize: 4,\n  wasi: __wasi,\n  onCreateWorker() {\n    const worker = new Worker(new URL('./wasi-worker-browser.mjs', import.meta.url), {\n      type: 'module',\n    })\n${workerFsHandler}\n    return worker\n  },\n  overwriteImports(importObject) {\n    importObject.env = {\n      ...importObject.env,\n      ...importObject.napi,\n      ...importObject.emnapi,\n      memory: __sharedMemory,\n    }\n    return importObject\n  },\n  beforeInit({ instance }) {\n    for (const name of Object.keys(instance.exports)) {\n      if (name.startsWith('__napi_register__')) {\n        instance.exports[name]()\n      }\n    }\n  },\n})\n`\n}\n\nexport const createWasiBinding = (\n  wasmFileName: string,\n  packageName: string,\n  initialMemory = 4000,\n  maximumMemory = 65536,\n) => `/* eslint-disable */\n/* prettier-ignore */\n\n/* auto-generated by NAPI-RS */\n\nconst __nodeFs = require('node:fs')\nconst __nodePath = require('node:path')\nconst { WASI: __nodeWASI } = require('node:wasi')\nconst { Worker } = require('node:worker_threads')\n\nconst {\n  createOnMessage: __wasmCreateOnMessageForFsProxy,\n  getDefaultContext: __emnapiGetDefaultContext,\n  instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync,\n} = require('@napi-rs/wasm-runtime')\n\nconst __rootDir = __nodePath.parse(process.cwd()).root\n\nconst __wasi = new __nodeWASI({\n  version: 'preview1',\n  env: process.env,\n  preopens: {\n    [__rootDir]: __rootDir,\n  }\n})\n\nconst __emnapiContext = __emnapiGetDefaultContext()\n\nconst __sharedMemory = new WebAssembly.Memory({\n  initial: ${initialMemory},\n  maximum: ${maximumMemory},\n  shared: true,\n})\n\nlet __wasmFilePath = __nodePath.join(__dirname, '${wasmFileName}.wasm')\nconst __wasmDebugFilePath = __nodePath.join(__dirname, '${wasmFileName}.debug.wasm')\n\nif (__nodeFs.existsSync(__wasmDebugFilePath)) {\n  __wasmFilePath = __wasmDebugFilePath\n} else if (!__nodeFs.existsSync(__wasmFilePath)) {\n  try {\n    __wasmFilePath = require.resolve('${packageName}-wasm32-wasi/${wasmFileName}.wasm')\n  } catch {\n    throw new Error('Cannot find ${wasmFileName}.wasm file, and ${packageName}-wasm32-wasi package is not installed.')\n  }\n}\n\nconst { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule } = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__wasmFilePath), {\n  context: __emnapiContext,\n  asyncWorkPoolSize: (function() {\n    const threadsSizeFromEnv = Number(process.env.NAPI_RS_ASYNC_WORK_POOL_SIZE ?? process.env.UV_THREADPOOL_SIZE)\n    // NaN > 0 is false\n    if (threadsSizeFromEnv > 0) {\n      return threadsSizeFromEnv\n    } else {\n      return 4\n    }\n  })(),\n  reuseWorker: true,\n  wasi: __wasi,\n  onCreateWorker() {\n    const worker = new Worker(__nodePath.join(__dirname, 'wasi-worker.mjs'), {\n      env: process.env,\n    })\n    worker.onmessage = ({ data }) => {\n      __wasmCreateOnMessageForFsProxy(__nodeFs)(data)\n    }\n\n    // The main thread of Node.js waits for all the active handles before exiting.\n    // But Rust threads are never waited without \\`thread::join\\`.\n    // So here we hack the code of Node.js to prevent the workers from being referenced (active).\n    // According to https://github.com/nodejs/node/blob/19e0d472728c79d418b74bddff588bea70a403d0/lib/internal/worker.js#L415,\n    // a worker is consist of two handles: kPublicPort and kHandle.\n    {\n      const kPublicPort = Object.getOwnPropertySymbols(worker).find(s =>\n        s.toString().includes(\"kPublicPort\")\n      );\n      if (kPublicPort) {\n        worker[kPublicPort].ref = () => {};\n      }\n\n      const kHandle = Object.getOwnPropertySymbols(worker).find(s =>\n        s.toString().includes(\"kHandle\")\n      );\n      if (kHandle) {\n        worker[kHandle].ref = () => {};\n      }\n\n      worker.unref();\n    }\n    return worker\n  },\n  overwriteImports(importObject) {\n    importObject.env = {\n      ...importObject.env,\n      ...importObject.napi,\n      ...importObject.emnapi,\n      memory: __sharedMemory,\n    }\n    return importObject\n  },\n  beforeInit({ instance }) {\n    for (const name of Object.keys(instance.exports)) {\n      if (name.startsWith('__napi_register__')) {\n        instance.exports[name]()\n      }\n    }\n  },\n})\n`\n"
  },
  {
    "path": "cli/src/api/templates/wasi-worker-template.ts",
    "content": "export const WASI_WORKER_TEMPLATE = `import fs from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { parse } from \"node:path\";\nimport { WASI } from \"node:wasi\";\nimport { parentPort, Worker } from \"node:worker_threads\";\n\nconst require = createRequire(import.meta.url);\n\nconst { instantiateNapiModuleSync, MessageHandler, getDefaultContext } = require(\"@napi-rs/wasm-runtime\");\n\nif (parentPort) {\n  parentPort.on(\"message\", (data) => {\n    globalThis.onmessage({ data });\n  });\n}\n\nObject.assign(globalThis, {\n  self: globalThis,\n  require,\n  Worker,\n  importScripts: function (f) {\n    ;(0, eval)(fs.readFileSync(f, \"utf8\") + \"//# sourceURL=\" + f);\n  },\n  postMessage: function (msg) {\n    if (parentPort) {\n      parentPort.postMessage(msg);\n    }\n  },\n});\n\nconst emnapiContext = getDefaultContext();\n\nconst __rootDir = parse(process.cwd()).root;\n\nconst handler = new MessageHandler({\n  onLoad({ wasmModule, wasmMemory }) {\n    const wasi = new WASI({\n      version: 'preview1',\n      env: process.env,\n      preopens: {\n        [__rootDir]: __rootDir,\n      },\n    });\n\n    return instantiateNapiModuleSync(wasmModule, {\n      childThread: true,\n      wasi,\n      context: emnapiContext,\n      overwriteImports(importObject) {\n        importObject.env = {\n          ...importObject.env,\n          ...importObject.napi,\n          ...importObject.emnapi,\n          memory: wasmMemory\n        };\n      },\n    });\n  },\n});\n\nglobalThis.onmessage = function (e) {\n  handler.handle(e);\n};\n`\n\nexport const createWasiBrowserWorkerBinding = (fs: boolean) => {\n  const fsImport = fs\n    ? `import { instantiateNapiModuleSync, MessageHandler, WASI, createFsProxy } from '@napi-rs/wasm-runtime'\nimport { memfsExported as __memfsExported } from '@napi-rs/wasm-runtime/fs'\n\nconst fs = createFsProxy(__memfsExported)`\n    : `import { instantiateNapiModuleSync, MessageHandler, WASI } from '@napi-rs/wasm-runtime'`\n  const wasiCreation = fs\n    ? `const wasi = new WASI({\n      fs,\n      preopens: {\n        '/': '/',\n      },\n      print: function () {\n        // eslint-disable-next-line no-console\n        console.log.apply(console, arguments)\n      },\n      printErr: function() {\n        // eslint-disable-next-line no-console\n        console.error.apply(console, arguments)\n      },\n    })`\n    : `const wasi = new WASI({\n      print: function () {\n        // eslint-disable-next-line no-console\n        console.log.apply(console, arguments)\n      },\n      printErr: function() {\n        // eslint-disable-next-line no-console\n        console.error.apply(console, arguments)\n      },\n    })`\n  return `${fsImport}\n\nconst handler = new MessageHandler({\n  onLoad({ wasmModule, wasmMemory }) {\n    ${wasiCreation}\n    return instantiateNapiModuleSync(wasmModule, {\n      childThread: true,\n      wasi,\n      overwriteImports(importObject) {\n        importObject.env = {\n          ...importObject.env,\n          ...importObject.napi,\n          ...importObject.emnapi,\n          memory: wasmMemory,\n        }\n      },\n    })\n  },\n})\n\nglobalThis.onmessage = function (e) {\n  handler.handle(e)\n}\n`\n}\n"
  },
  {
    "path": "cli/src/api/universalize.ts",
    "content": "import { spawnSync } from 'node:child_process'\nimport { join, resolve } from 'node:path'\n\nimport {\n  applyDefaultUniversalizeOptions,\n  type UniversalizeOptions,\n} from '../def/universalize.js'\nimport { readNapiConfig } from '../utils/config.js'\nimport { debugFactory } from '../utils/log.js'\nimport { fileExists } from '../utils/misc.js'\nimport { UniArchsByPlatform } from '../utils/target.js'\n\nconst debug = debugFactory('universalize')\n\nconst universalizers: Partial<\n  Record<NodeJS.Platform, (inputs: string[], output: string) => void>\n> = {\n  darwin: (inputs, output) => {\n    spawnSync('lipo', ['-create', '-output', output, ...inputs], {\n      stdio: 'inherit',\n    })\n  },\n}\n\nexport async function universalizeBinaries(userOptions: UniversalizeOptions) {\n  const options = applyDefaultUniversalizeOptions(userOptions)\n\n  const packageJsonPath = join(options.cwd, options.packageJsonPath)\n\n  const config = await readNapiConfig(\n    packageJsonPath,\n    options.configPath ? resolve(options.cwd, options.configPath) : undefined,\n  )\n\n  const target = config.targets.find(\n    (t) => t.platform === process.platform && t.arch === 'universal',\n  )\n\n  if (!target) {\n    throw new Error(\n      `'universal' arch for platform '${process.platform}' not found in config!`,\n    )\n  }\n\n  const srcFiles = UniArchsByPlatform[process.platform]?.map((arch) =>\n    resolve(\n      options.cwd,\n      options.outputDir,\n      `${config.binaryName}.${process.platform}-${arch}.node`,\n    ),\n  )\n\n  if (!srcFiles || !universalizers[process.platform]) {\n    throw new Error(\n      `'universal' arch for platform '${process.platform}' not supported.`,\n    )\n  }\n\n  debug(`Looking up source binaries to combine: `)\n  debug('  %O', srcFiles)\n\n  const srcFileLookup = await Promise.all(srcFiles.map((f) => fileExists(f)))\n\n  const notFoundFiles = srcFiles.filter((_, i) => !srcFileLookup[i])\n\n  if (notFoundFiles.length) {\n    throw new Error(\n      `Some binary files were not found: ${JSON.stringify(notFoundFiles)}`,\n    )\n  }\n\n  const output = resolve(\n    options.cwd,\n    options.outputDir,\n    `${config.binaryName}.${process.platform}-universal.node`,\n  )\n\n  universalizers[process.platform]?.(srcFiles, output)\n\n  debug(`Produced universal binary: ${output}`)\n}\n"
  },
  {
    "path": "cli/src/api/version.ts",
    "content": "import { join, resolve } from 'node:path'\n\nimport {\n  applyDefaultVersionOptions,\n  type VersionOptions,\n} from '../def/version.js'\nimport {\n  readNapiConfig,\n  debugFactory,\n  updatePackageJson,\n} from '../utils/index.js'\n\nconst debug = debugFactory('version')\n\nexport async function version(userOptions: VersionOptions) {\n  const options = applyDefaultVersionOptions(userOptions)\n  const packageJsonPath = resolve(options.cwd, options.packageJsonPath)\n\n  const config = await readNapiConfig(\n    packageJsonPath,\n    options.configPath ? resolve(options.cwd, options.configPath) : undefined,\n  )\n\n  for (const target of config.targets) {\n    const pkgDir = resolve(options.cwd, options.npmDir, target.platformArchABI)\n\n    debug(`Update version to %i in [%i]`, config.packageJson.version, pkgDir)\n    await updatePackageJson(join(pkgDir, 'package.json'), {\n      version: config.packageJson.version,\n    })\n  }\n}\n"
  },
  {
    "path": "cli/src/cli.ts",
    "content": "#!/usr/bin/env node\n\nimport { cli } from './index.js'\n\nvoid cli.runExit(process.argv.slice(2))\n"
  },
  {
    "path": "cli/src/commands/artifacts.ts",
    "content": "import { Command } from 'clipanion'\n\nimport { collectArtifacts } from '../api/artifacts.js'\nimport { BaseArtifactsCommand } from '../def/artifacts.js'\n\nexport class ArtifactsCommand extends BaseArtifactsCommand {\n  static usage = Command.Usage({\n    description: 'Copy artifacts from Github Actions into specified dir',\n    examples: [\n      [\n        '$0 artifacts --output-dir ./artifacts --dist ./npm',\n        `Copy [binaryName].[platform].node under current dir(.) into packages under npm dir.\ne.g: index.linux-x64-gnu.node --> ./npm/linux-x64-gnu/index.linux-x64-gnu.node`,\n      ],\n    ],\n  })\n\n  static paths = [['artifacts']]\n\n  async execute() {\n    await collectArtifacts(this.getOptions())\n  }\n}\n"
  },
  {
    "path": "cli/src/commands/build.ts",
    "content": "import { execSync } from 'node:child_process'\n\nimport { Option } from 'clipanion'\n\nimport { buildProject } from '../api/build.js'\nimport { BaseBuildCommand } from '../def/build.js'\nimport { debugFactory } from '../utils/index.js'\n\nconst debug = debugFactory('build')\n\nexport class BuildCommand extends BaseBuildCommand {\n  pipe = Option.String('--pipe', {\n    description:\n      'Pipe all outputs file to given command. e.g. `napi build --pipe \"npx prettier --write\"`',\n  })\n\n  cargoOptions = Option.Rest()\n\n  async execute() {\n    const { task } = await buildProject({\n      ...this.getOptions(),\n      cargoOptions: this.cargoOptions,\n    })\n\n    const outputs = await task\n\n    if (this.pipe) {\n      for (const output of outputs) {\n        debug('Piping output file to command: %s', this.pipe)\n        try {\n          execSync(`${this.pipe} ${output.path}`, {\n            stdio: 'inherit',\n            cwd: this.cwd,\n          })\n        } catch (e) {\n          debug.error(`Failed to pipe output file ${output.path} to command`)\n          debug.error(e)\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "cli/src/commands/cli-version.ts",
    "content": "import { Command } from 'clipanion'\n\nimport { CLI_VERSION } from '../utils/misc.js'\n\n/**\n * A command that prints the version of the CLI.\n *\n * Paths: `-v`, `--version`\n */\nexport class CliVersionCommand extends Command<any> {\n  static paths = [[`-v`], [`--version`]]\n  async execute() {\n    await this.context.stdout.write(`${CLI_VERSION}\\n`)\n  }\n}\n"
  },
  {
    "path": "cli/src/commands/create-npm-dirs.ts",
    "content": "import { createNpmDirs } from '../api/create-npm-dirs.js'\nimport { BaseCreateNpmDirsCommand } from '../def/create-npm-dirs.js'\n\nexport class CreateNpmDirsCommand extends BaseCreateNpmDirsCommand {\n  async execute() {\n    await createNpmDirs(this.getOptions())\n  }\n}\n"
  },
  {
    "path": "cli/src/commands/help.ts",
    "content": "import { Command } from 'clipanion'\n\n/**\n * A command that prints the usage of all commands.\n *\n * Paths: `-h`, `--help`\n */\nexport class HelpCommand extends Command<any> {\n  static paths = [[`-h`], [`--help`]]\n  async execute() {\n    await this.context.stdout.write(this.cli.usage())\n  }\n}\n"
  },
  {
    "path": "cli/src/commands/new.ts",
    "content": "import path from 'node:path'\n\nimport { input, select, checkbox, confirm } from '@inquirer/prompts'\nimport { Option } from 'clipanion'\n\nimport { newProject } from '../api/new.js'\nimport { BaseNewCommand } from '../def/new.js'\nimport {\n  AVAILABLE_TARGETS,\n  debugFactory,\n  DEFAULT_TARGETS,\n  type TargetTriple,\n} from '../utils/index.js'\nimport { napiEngineRequirement } from '../utils/version.js'\n\nconst debug = debugFactory('new')\n\nexport class NewCommand extends BaseNewCommand {\n  interactive = Option.Boolean('--interactive,-i', true, {\n    description:\n      'Ask project basic information interactively without just using the default.',\n  })\n\n  async execute() {\n    try {\n      const options = await this.fetchOptions()\n      await newProject(options)\n      return 0\n    } catch (e) {\n      debug('Failed to create new project')\n      debug.error(e)\n      return 1\n    }\n  }\n\n  private async fetchOptions() {\n    const cmdOptions = super.getOptions()\n\n    if (this.interactive) {\n      const targetPath: string = cmdOptions.path\n        ? cmdOptions.path\n        : await inquirerProjectPath()\n      cmdOptions.path = targetPath\n      return {\n        ...cmdOptions,\n        name: await this.fetchName(path.parse(targetPath).base),\n        minNodeApiVersion: await this.fetchNapiVersion(),\n        targets: await this.fetchTargets(),\n        license: await this.fetchLicense(),\n        enableTypeDef: await this.fetchTypeDef(),\n        enableGithubActions: await this.fetchGithubActions(),\n      }\n    }\n\n    return cmdOptions\n  }\n\n  private async fetchName(defaultName: string): Promise<string> {\n    return (\n      this.$$name ??\n      input({\n        message: 'Package name (the name field in your package.json file)',\n        default: defaultName,\n      })\n    )\n  }\n\n  private async fetchLicense(): Promise<string> {\n    return input({\n      message: 'License for open-sourced project',\n      default: this.license,\n    })\n  }\n\n  private async fetchNapiVersion(): Promise<number> {\n    return select({\n      message: 'Minimum node-api version (with node version requirement)',\n      loop: false,\n      pageSize: 10,\n      choices: Array.from({ length: 8 }, (_, i) => ({\n        name: `napi${i + 1} (${napiEngineRequirement(i + 1)})`,\n        value: i + 1,\n      })),\n      // choice index\n      default: this.minNodeApiVersion - 1,\n    })\n  }\n\n  private async fetchTargets(): Promise<TargetTriple[]> {\n    if (this.enableAllTargets) {\n      return AVAILABLE_TARGETS.concat()\n    }\n\n    const targets = await checkbox({\n      loop: false,\n      message: 'Choose target(s) your crate will be compiled to',\n      choices: AVAILABLE_TARGETS.map((target) => ({\n        name: target,\n        value: target,\n        // @ts-expect-error\n        checked: DEFAULT_TARGETS.includes(target),\n      })),\n    })\n\n    return targets\n  }\n\n  private async fetchTypeDef(): Promise<boolean> {\n    const enableTypeDef = await confirm({\n      message: 'Enable type definition auto-generation',\n      default: this.enableTypeDef,\n    })\n\n    return enableTypeDef\n  }\n\n  private async fetchGithubActions(): Promise<boolean> {\n    const enableGithubActions = await confirm({\n      message: 'Enable Github Actions CI',\n      default: this.enableGithubActions,\n    })\n\n    return enableGithubActions\n  }\n}\n\nasync function inquirerProjectPath(): Promise<string> {\n  return input({\n    message: 'Target path to create the project, relative to cwd.',\n  }).then((path) => {\n    if (!path) {\n      return inquirerProjectPath()\n    }\n    return path\n  })\n}\n"
  },
  {
    "path": "cli/src/commands/pre-publish.ts",
    "content": "import { prePublish } from '../api/pre-publish.js'\nimport { BasePrePublishCommand } from '../def/pre-publish.js'\n\nexport class PrePublishCommand extends BasePrePublishCommand {\n  async execute() {\n    // @ts-expect-error const 'npm' | 'lerna' to string\n    await prePublish(this.getOptions())\n  }\n}\n"
  },
  {
    "path": "cli/src/commands/rename.ts",
    "content": "import { input } from '@inquirer/prompts'\n\nimport { renameProject } from '../api/rename.js'\nimport { BaseRenameCommand } from '../def/rename.js'\n\nexport class RenameCommand extends BaseRenameCommand {\n  async execute() {\n    const options = this.getOptions()\n    if (!options.name) {\n      const name = await input({\n        message: `Enter the new package name in the package.json`,\n        required: true,\n      })\n      options.name = name\n    }\n    if (!options.binaryName) {\n      const binaryName = await input({\n        message: `Enter the new binary name`,\n        required: true,\n      })\n      options.binaryName = binaryName\n    }\n    await renameProject(options)\n  }\n}\n"
  },
  {
    "path": "cli/src/commands/universalize.ts",
    "content": "import { universalizeBinaries } from '../api/universalize.js'\nimport { BaseUniversalizeCommand } from '../def/universalize.js'\n\nexport class UniversalizeCommand extends BaseUniversalizeCommand {\n  async execute() {\n    await universalizeBinaries(this.getOptions())\n  }\n}\n"
  },
  {
    "path": "cli/src/commands/version.ts",
    "content": "import { version } from '../api/version.js'\nimport { BaseVersionCommand } from '../def/version.js'\n\nexport class VersionCommand extends BaseVersionCommand {\n  async execute() {\n    await version(this.getOptions())\n  }\n}\n"
  },
  {
    "path": "cli/src/def/artifacts.ts",
    "content": "// This file is generated by codegen/index.ts\n// Do not edit this file manually\nimport { Command, Option } from 'clipanion'\n\nexport abstract class BaseArtifactsCommand extends Command {\n  static paths = [['artifacts']]\n\n  static usage = Command.Usage({\n    description:\n      'Copy artifacts from Github Actions into npm packages and ready to publish',\n  })\n\n  cwd = Option.String('--cwd', process.cwd(), {\n    description:\n      'The working directory of where napi command will be executed in, all other paths options are relative to this path',\n  })\n\n  configPath?: string = Option.String('--config-path,-c', {\n    description: 'Path to `napi` config json file',\n  })\n\n  packageJsonPath = Option.String('--package-json-path', 'package.json', {\n    description: 'Path to `package.json`',\n  })\n\n  outputDir = Option.String('--output-dir,-o,-d', './artifacts', {\n    description:\n      'Path to the folder where all built `.node` files put, same as `--output-dir` of build command',\n  })\n\n  npmDir = Option.String('--npm-dir', 'npm', {\n    description: 'Path to the folder where the npm packages put',\n  })\n\n  buildOutputDir?: string = Option.String('--build-output-dir', {\n    description:\n      'Path to the build output dir, only needed when targets contains `wasm32-wasi-*`',\n  })\n\n  getOptions() {\n    return {\n      cwd: this.cwd,\n      configPath: this.configPath,\n      packageJsonPath: this.packageJsonPath,\n      outputDir: this.outputDir,\n      npmDir: this.npmDir,\n      buildOutputDir: this.buildOutputDir,\n    }\n  }\n}\n\n/**\n * Copy artifacts from Github Actions into npm packages and ready to publish\n */\nexport interface ArtifactsOptions {\n  /**\n   * The working directory of where napi command will be executed in, all other paths options are relative to this path\n   *\n   * @default process.cwd()\n   */\n  cwd?: string\n  /**\n   * Path to `napi` config json file\n   */\n  configPath?: string\n  /**\n   * Path to `package.json`\n   *\n   * @default 'package.json'\n   */\n  packageJsonPath?: string\n  /**\n   * Path to the folder where all built `.node` files put, same as `--output-dir` of build command\n   *\n   * @default './artifacts'\n   */\n  outputDir?: string\n  /**\n   * Path to the folder where the npm packages put\n   *\n   * @default 'npm'\n   */\n  npmDir?: string\n  /**\n   * Path to the build output dir, only needed when targets contains `wasm32-wasi-*`\n   */\n  buildOutputDir?: string\n}\n\nexport function applyDefaultArtifactsOptions(options: ArtifactsOptions) {\n  return {\n    cwd: process.cwd(),\n    packageJsonPath: 'package.json',\n    outputDir: './artifacts',\n    npmDir: 'npm',\n    ...options,\n  }\n}\n"
  },
  {
    "path": "cli/src/def/build.ts",
    "content": "// This file is generated by codegen/index.ts\n// Do not edit this file manually\nimport { Command, Option } from 'clipanion'\n\nexport abstract class BaseBuildCommand extends Command {\n  static paths = [['build']]\n\n  static usage = Command.Usage({\n    description: 'Build the NAPI-RS project',\n  })\n\n  target?: string = Option.String('--target,-t', {\n    description:\n      'Build for the target triple, bypassed to `cargo build --target`',\n  })\n\n  cwd?: string = Option.String('--cwd', {\n    description:\n      'The working directory of where napi command will be executed in, all other paths options are relative to this path',\n  })\n\n  manifestPath?: string = Option.String('--manifest-path', {\n    description: 'Path to `Cargo.toml`',\n  })\n\n  configPath?: string = Option.String('--config-path,-c', {\n    description: 'Path to `napi` config json file',\n  })\n\n  packageJsonPath?: string = Option.String('--package-json-path', {\n    description: 'Path to `package.json`',\n  })\n\n  targetDir?: string = Option.String('--target-dir', {\n    description:\n      'Directory for all crate generated artifacts, see `cargo build --target-dir`',\n  })\n\n  outputDir?: string = Option.String('--output-dir,-o', {\n    description:\n      'Path to where all the built files would be put. Default to the crate folder',\n  })\n\n  platform?: boolean = Option.Boolean('--platform', {\n    description:\n      'Add platform triple to the generated nodejs binding file, eg: `[name].linux-x64-gnu.node`',\n  })\n\n  jsPackageName?: string = Option.String('--js-package-name', {\n    description:\n      'Package name in generated js binding file. Only works with `--platform` flag',\n  })\n\n  constEnum?: boolean = Option.Boolean('--const-enum', {\n    description: 'Whether generate const enum for typescript bindings',\n  })\n\n  jsBinding?: string = Option.String('--js', {\n    description:\n      'Path and filename of generated JS binding file. Only works with `--platform` flag. Relative to `--output-dir`.',\n  })\n\n  noJsBinding?: boolean = Option.Boolean('--no-js', {\n    description:\n      'Whether to disable the generation JS binding file. Only works with `--platform` flag.',\n  })\n\n  dts?: string = Option.String('--dts', {\n    description:\n      'Path and filename of generated type def file. Relative to `--output-dir`',\n  })\n\n  dtsHeader?: string = Option.String('--dts-header', {\n    description:\n      'Custom file header for generated type def file. Only works when `typedef` feature enabled.',\n  })\n\n  noDtsHeader?: boolean = Option.Boolean('--no-dts-header', {\n    description:\n      'Whether to disable the default file header for generated type def file. Only works when `typedef` feature enabled.',\n  })\n\n  dtsCache = Option.Boolean('--dts-cache', true, {\n    description: 'Whether to enable the dts cache, default to true',\n  })\n\n  esm?: boolean = Option.Boolean('--esm', {\n    description:\n      'Whether to emit an ESM JS binding file instead of CJS format. Only works with `--platform` flag.',\n  })\n\n  strip?: boolean = Option.Boolean('--strip,-s', {\n    description: 'Whether strip the library to achieve the minimum file size',\n  })\n\n  release?: boolean = Option.Boolean('--release,-r', {\n    description: 'Build in release mode',\n  })\n\n  verbose?: boolean = Option.Boolean('--verbose,-v', {\n    description: 'Verbosely log build command trace',\n  })\n\n  bin?: string = Option.String('--bin', {\n    description: 'Build only the specified binary',\n  })\n\n  package?: string = Option.String('--package,-p', {\n    description: 'Build the specified library or the one at cwd',\n  })\n\n  profile?: string = Option.String('--profile', {\n    description: 'Build artifacts with the specified profile',\n  })\n\n  crossCompile?: boolean = Option.Boolean('--cross-compile,-x', {\n    description:\n      '[experimental] cross-compile for the specified target with `cargo-xwin` on windows and `cargo-zigbuild` on other platform',\n  })\n\n  useCross?: boolean = Option.Boolean('--use-cross', {\n    description:\n      '[experimental] use [cross](https://github.com/cross-rs/cross) instead of `cargo`',\n  })\n\n  useNapiCross?: boolean = Option.Boolean('--use-napi-cross', {\n    description:\n      '[experimental] use @napi-rs/cross-toolchain to cross-compile Linux arm/arm64/x64 gnu targets.',\n  })\n\n  watch?: boolean = Option.Boolean('--watch,-w', {\n    description:\n      'watch the crate changes and build continuously with `cargo-watch` crates',\n  })\n\n  features?: string[] = Option.Array('--features,-F', {\n    description: 'Space-separated list of features to activate',\n  })\n\n  allFeatures?: boolean = Option.Boolean('--all-features', {\n    description: 'Activate all available features',\n  })\n\n  noDefaultFeatures?: boolean = Option.Boolean('--no-default-features', {\n    description: 'Do not activate the `default` feature',\n  })\n\n  getOptions() {\n    return {\n      target: this.target,\n      cwd: this.cwd,\n      manifestPath: this.manifestPath,\n      configPath: this.configPath,\n      packageJsonPath: this.packageJsonPath,\n      targetDir: this.targetDir,\n      outputDir: this.outputDir,\n      platform: this.platform,\n      jsPackageName: this.jsPackageName,\n      constEnum: this.constEnum,\n      jsBinding: this.jsBinding,\n      noJsBinding: this.noJsBinding,\n      dts: this.dts,\n      dtsHeader: this.dtsHeader,\n      noDtsHeader: this.noDtsHeader,\n      dtsCache: this.dtsCache,\n      esm: this.esm,\n      strip: this.strip,\n      release: this.release,\n      verbose: this.verbose,\n      bin: this.bin,\n      package: this.package,\n      profile: this.profile,\n      crossCompile: this.crossCompile,\n      useCross: this.useCross,\n      useNapiCross: this.useNapiCross,\n      watch: this.watch,\n      features: this.features,\n      allFeatures: this.allFeatures,\n      noDefaultFeatures: this.noDefaultFeatures,\n    }\n  }\n}\n\n/**\n * Build the NAPI-RS project\n */\nexport interface BuildOptions {\n  /**\n   * Build for the target triple, bypassed to `cargo build --target`\n   */\n  target?: string\n  /**\n   * The working directory of where napi command will be executed in, all other paths options are relative to this path\n   */\n  cwd?: string\n  /**\n   * Path to `Cargo.toml`\n   */\n  manifestPath?: string\n  /**\n   * Path to `napi` config json file\n   */\n  configPath?: string\n  /**\n   * Path to `package.json`\n   */\n  packageJsonPath?: string\n  /**\n   * Directory for all crate generated artifacts, see `cargo build --target-dir`\n   */\n  targetDir?: string\n  /**\n   * Path to where all the built files would be put. Default to the crate folder\n   */\n  outputDir?: string\n  /**\n   * Add platform triple to the generated nodejs binding file, eg: `[name].linux-x64-gnu.node`\n   */\n  platform?: boolean\n  /**\n   * Package name in generated js binding file. Only works with `--platform` flag\n   */\n  jsPackageName?: string\n  /**\n   * Whether generate const enum for typescript bindings\n   */\n  constEnum?: boolean\n  /**\n   * Path and filename of generated JS binding file. Only works with `--platform` flag. Relative to `--output-dir`.\n   */\n  jsBinding?: string\n  /**\n   * Whether to disable the generation JS binding file. Only works with `--platform` flag.\n   */\n  noJsBinding?: boolean\n  /**\n   * Path and filename of generated type def file. Relative to `--output-dir`\n   */\n  dts?: string\n  /**\n   * Custom file header for generated type def file. Only works when `typedef` feature enabled.\n   */\n  dtsHeader?: string\n  /**\n   * Whether to disable the default file header for generated type def file. Only works when `typedef` feature enabled.\n   */\n  noDtsHeader?: boolean\n  /**\n   * Whether to enable the dts cache, default to true\n   *\n   * @default true\n   */\n  dtsCache?: boolean\n  /**\n   * Whether to emit an ESM JS binding file instead of CJS format. Only works with `--platform` flag.\n   */\n  esm?: boolean\n  /**\n   * Whether strip the library to achieve the minimum file size\n   */\n  strip?: boolean\n  /**\n   * Build in release mode\n   */\n  release?: boolean\n  /**\n   * Verbosely log build command trace\n   */\n  verbose?: boolean\n  /**\n   * Build only the specified binary\n   */\n  bin?: string\n  /**\n   * Build the specified library or the one at cwd\n   */\n  package?: string\n  /**\n   * Build artifacts with the specified profile\n   */\n  profile?: string\n  /**\n   * [experimental] cross-compile for the specified target with `cargo-xwin` on windows and `cargo-zigbuild` on other platform\n   */\n  crossCompile?: boolean\n  /**\n   * [experimental] use [cross](https://github.com/cross-rs/cross) instead of `cargo`\n   */\n  useCross?: boolean\n  /**\n   * [experimental] use @napi-rs/cross-toolchain to cross-compile Linux arm/arm64/x64 gnu targets.\n   */\n  useNapiCross?: boolean\n  /**\n   * watch the crate changes and build continuously with `cargo-watch` crates\n   */\n  watch?: boolean\n  /**\n   * Space-separated list of features to activate\n   */\n  features?: string[]\n  /**\n   * Activate all available features\n   */\n  allFeatures?: boolean\n  /**\n   * Do not activate the `default` feature\n   */\n  noDefaultFeatures?: boolean\n}\n\nexport function applyDefaultBuildOptions(options: BuildOptions) {\n  return {\n    dtsCache: true,\n    ...options,\n  }\n}\n"
  },
  {
    "path": "cli/src/def/create-npm-dirs.ts",
    "content": "// This file is generated by codegen/index.ts\n// Do not edit this file manually\nimport { Command, Option } from 'clipanion'\n\nexport abstract class BaseCreateNpmDirsCommand extends Command {\n  static paths = [['create-npm-dirs']]\n\n  static usage = Command.Usage({\n    description: 'Create npm package dirs for different platforms',\n  })\n\n  cwd = Option.String('--cwd', process.cwd(), {\n    description:\n      'The working directory of where napi command will be executed in, all other paths options are relative to this path',\n  })\n\n  configPath?: string = Option.String('--config-path,-c', {\n    description: 'Path to `napi` config json file',\n  })\n\n  packageJsonPath = Option.String('--package-json-path', 'package.json', {\n    description: 'Path to `package.json`',\n  })\n\n  npmDir = Option.String('--npm-dir', 'npm', {\n    description: 'Path to the folder where the npm packages put',\n  })\n\n  dryRun = Option.Boolean('--dry-run', false, {\n    description: 'Dry run without touching file system',\n  })\n\n  getOptions() {\n    return {\n      cwd: this.cwd,\n      configPath: this.configPath,\n      packageJsonPath: this.packageJsonPath,\n      npmDir: this.npmDir,\n      dryRun: this.dryRun,\n    }\n  }\n}\n\n/**\n * Create npm package dirs for different platforms\n */\nexport interface CreateNpmDirsOptions {\n  /**\n   * The working directory of where napi command will be executed in, all other paths options are relative to this path\n   *\n   * @default process.cwd()\n   */\n  cwd?: string\n  /**\n   * Path to `napi` config json file\n   */\n  configPath?: string\n  /**\n   * Path to `package.json`\n   *\n   * @default 'package.json'\n   */\n  packageJsonPath?: string\n  /**\n   * Path to the folder where the npm packages put\n   *\n   * @default 'npm'\n   */\n  npmDir?: string\n  /**\n   * Dry run without touching file system\n   *\n   * @default false\n   */\n  dryRun?: boolean\n}\n\nexport function applyDefaultCreateNpmDirsOptions(\n  options: CreateNpmDirsOptions,\n) {\n  return {\n    cwd: process.cwd(),\n    packageJsonPath: 'package.json',\n    npmDir: 'npm',\n    dryRun: false,\n    ...options,\n  }\n}\n"
  },
  {
    "path": "cli/src/def/new.ts",
    "content": "// This file is generated by codegen/index.ts\n// Do not edit this file manually\nimport { Command, Option } from 'clipanion'\nimport * as typanion from 'typanion'\n\nexport abstract class BaseNewCommand extends Command {\n  static paths = [['new']]\n\n  static usage = Command.Usage({\n    description: 'Create a new project with pre-configured boilerplate',\n  })\n\n  $$path = Option.String({ required: false })\n\n  $$name?: string = Option.String('--name,-n', {\n    description:\n      'The name of the project, default to the name of the directory if not provided',\n  })\n\n  minNodeApiVersion = Option.String('--min-node-api,-v', '4', {\n    validator: typanion.isNumber(),\n    description: 'The minimum Node-API version to support',\n  })\n\n  packageManager = Option.String('--package-manager', 'yarn', {\n    description: 'The package manager to use. Only support yarn 4.x for now.',\n  })\n\n  license = Option.String('--license,-l', 'MIT', {\n    description: 'License for open-sourced project',\n  })\n\n  targets = Option.Array('--targets,-t', [], {\n    description: 'All targets the crate will be compiled for.',\n  })\n\n  enableDefaultTargets = Option.Boolean('--enable-default-targets', true, {\n    description: 'Whether enable default targets',\n  })\n\n  enableAllTargets = Option.Boolean('--enable-all-targets', false, {\n    description: 'Whether enable all targets',\n  })\n\n  enableTypeDef = Option.Boolean('--enable-type-def', true, {\n    description:\n      'Whether enable the `type-def` feature for typescript definitions auto-generation',\n  })\n\n  enableGithubActions = Option.Boolean('--enable-github-actions', true, {\n    description: 'Whether generate preconfigured GitHub Actions workflow',\n  })\n\n  testFramework = Option.String('--test-framework', 'ava', {\n    description:\n      'The JavaScript test framework to use, only support `ava` for now',\n  })\n\n  dryRun = Option.Boolean('--dry-run', false, {\n    description: 'Whether to run the command in dry-run mode',\n  })\n\n  getOptions() {\n    return {\n      path: this.$$path,\n      name: this.$$name,\n      minNodeApiVersion: this.minNodeApiVersion,\n      packageManager: this.packageManager,\n      license: this.license,\n      targets: this.targets,\n      enableDefaultTargets: this.enableDefaultTargets,\n      enableAllTargets: this.enableAllTargets,\n      enableTypeDef: this.enableTypeDef,\n      enableGithubActions: this.enableGithubActions,\n      testFramework: this.testFramework,\n      dryRun: this.dryRun,\n    }\n  }\n}\n\n/**\n * Create a new project with pre-configured boilerplate\n */\nexport interface NewOptions {\n  /**\n   * The path where the NAPI-RS project will be created.\n   */\n  path?: string\n  /**\n   * The name of the project, default to the name of the directory if not provided\n   */\n  name?: string\n  /**\n   * The minimum Node-API version to support\n   *\n   * @default 4\n   */\n  minNodeApiVersion?: number\n  /**\n   * The package manager to use. Only support yarn 4.x for now.\n   *\n   * @default 'yarn'\n   */\n  packageManager?: string\n  /**\n   * License for open-sourced project\n   *\n   * @default 'MIT'\n   */\n  license?: string\n  /**\n   * All targets the crate will be compiled for.\n   *\n   * @default []\n   */\n  targets?: string[]\n  /**\n   * Whether enable default targets\n   *\n   * @default true\n   */\n  enableDefaultTargets?: boolean\n  /**\n   * Whether enable all targets\n   *\n   * @default false\n   */\n  enableAllTargets?: boolean\n  /**\n   * Whether enable the `type-def` feature for typescript definitions auto-generation\n   *\n   * @default true\n   */\n  enableTypeDef?: boolean\n  /**\n   * Whether generate preconfigured GitHub Actions workflow\n   *\n   * @default true\n   */\n  enableGithubActions?: boolean\n  /**\n   * The JavaScript test framework to use, only support `ava` for now\n   *\n   * @default 'ava'\n   */\n  testFramework?: string\n  /**\n   * Whether to run the command in dry-run mode\n   *\n   * @default false\n   */\n  dryRun?: boolean\n}\n\nexport function applyDefaultNewOptions(options: NewOptions) {\n  return {\n    minNodeApiVersion: 4,\n    packageManager: 'yarn',\n    license: 'MIT',\n    targets: [],\n    enableDefaultTargets: true,\n    enableAllTargets: false,\n    enableTypeDef: true,\n    enableGithubActions: true,\n    testFramework: 'ava',\n    dryRun: false,\n    ...options,\n  }\n}\n"
  },
  {
    "path": "cli/src/def/pre-publish.ts",
    "content": "// This file is generated by codegen/index.ts\n// Do not edit this file manually\nimport { Command, Option } from 'clipanion'\n\nexport abstract class BasePrePublishCommand extends Command {\n  static paths = [['pre-publish'], ['prepublish']]\n\n  static usage = Command.Usage({\n    description:\n      'Update package.json and copy addons into per platform packages',\n  })\n\n  cwd = Option.String('--cwd', process.cwd(), {\n    description:\n      'The working directory of where napi command will be executed in, all other paths options are relative to this path',\n  })\n\n  configPath?: string = Option.String('--config-path,-c', {\n    description: 'Path to `napi` config json file',\n  })\n\n  packageJsonPath = Option.String('--package-json-path', 'package.json', {\n    description: 'Path to `package.json`',\n  })\n\n  npmDir = Option.String('--npm-dir,-p', 'npm', {\n    description: 'Path to the folder where the npm packages put',\n  })\n\n  tagStyle = Option.String('--tag-style,--tagstyle,-t', 'lerna', {\n    description: 'git tag style, `npm` or `lerna`',\n  })\n\n  ghRelease = Option.Boolean('--gh-release', true, {\n    description: 'Whether create GitHub release',\n  })\n\n  ghReleaseName?: string = Option.String('--gh-release-name', {\n    description: 'GitHub release name',\n  })\n\n  ghReleaseId?: string = Option.String('--gh-release-id', {\n    description: 'Existing GitHub release id',\n  })\n\n  skipOptionalPublish = Option.Boolean('--skip-optional-publish', false, {\n    description: 'Whether skip optionalDependencies packages publish',\n  })\n\n  dryRun = Option.Boolean('--dry-run', false, {\n    description: 'Dry run without touching file system',\n  })\n\n  getOptions() {\n    return {\n      cwd: this.cwd,\n      configPath: this.configPath,\n      packageJsonPath: this.packageJsonPath,\n      npmDir: this.npmDir,\n      tagStyle: this.tagStyle,\n      ghRelease: this.ghRelease,\n      ghReleaseName: this.ghReleaseName,\n      ghReleaseId: this.ghReleaseId,\n      skipOptionalPublish: this.skipOptionalPublish,\n      dryRun: this.dryRun,\n    }\n  }\n}\n\n/**\n * Update package.json and copy addons into per platform packages\n */\nexport interface PrePublishOptions {\n  /**\n   * The working directory of where napi command will be executed in, all other paths options are relative to this path\n   *\n   * @default process.cwd()\n   */\n  cwd?: string\n  /**\n   * Path to `napi` config json file\n   */\n  configPath?: string\n  /**\n   * Path to `package.json`\n   *\n   * @default 'package.json'\n   */\n  packageJsonPath?: string\n  /**\n   * Path to the folder where the npm packages put\n   *\n   * @default 'npm'\n   */\n  npmDir?: string\n  /**\n   * git tag style, `npm` or `lerna`\n   *\n   * @default 'lerna'\n   */\n  tagStyle?: 'npm' | 'lerna'\n  /**\n   * Whether create GitHub release\n   *\n   * @default true\n   */\n  ghRelease?: boolean\n  /**\n   * GitHub release name\n   */\n  ghReleaseName?: string\n  /**\n   * Existing GitHub release id\n   */\n  ghReleaseId?: string\n  /**\n   * Whether skip optionalDependencies packages publish\n   *\n   * @default false\n   */\n  skipOptionalPublish?: boolean\n  /**\n   * Dry run without touching file system\n   *\n   * @default false\n   */\n  dryRun?: boolean\n}\n\nexport function applyDefaultPrePublishOptions(options: PrePublishOptions) {\n  return {\n    cwd: process.cwd(),\n    packageJsonPath: 'package.json',\n    npmDir: 'npm',\n    tagStyle: 'lerna',\n    ghRelease: true,\n    skipOptionalPublish: false,\n    dryRun: false,\n    ...options,\n  }\n}\n"
  },
  {
    "path": "cli/src/def/rename.ts",
    "content": "// This file is generated by codegen/index.ts\n// Do not edit this file manually\nimport { Command, Option } from 'clipanion'\n\nexport abstract class BaseRenameCommand extends Command {\n  static paths = [['rename']]\n\n  static usage = Command.Usage({\n    description: 'Rename the NAPI-RS project',\n  })\n\n  cwd = Option.String('--cwd', process.cwd(), {\n    description:\n      'The working directory of where napi command will be executed in, all other paths options are relative to this path',\n  })\n\n  configPath?: string = Option.String('--config-path,-c', {\n    description: 'Path to `napi` config json file',\n  })\n\n  packageJsonPath = Option.String('--package-json-path', 'package.json', {\n    description: 'Path to `package.json`',\n  })\n\n  npmDir = Option.String('--npm-dir', 'npm', {\n    description: 'Path to the folder where the npm packages put',\n  })\n\n  $$name?: string = Option.String('--name,-n', {\n    description: 'The new name of the project',\n  })\n\n  binaryName?: string = Option.String('--binary-name,-b', {\n    description: 'The new binary name *.node files',\n  })\n\n  packageName?: string = Option.String('--package-name', {\n    description: 'The new package name of the project',\n  })\n\n  manifestPath = Option.String('--manifest-path', 'Cargo.toml', {\n    description: 'Path to `Cargo.toml`',\n  })\n\n  repository?: string = Option.String('--repository', {\n    description: 'The new repository of the project',\n  })\n\n  description?: string = Option.String('--description', {\n    description: 'The new description of the project',\n  })\n\n  getOptions() {\n    return {\n      cwd: this.cwd,\n      configPath: this.configPath,\n      packageJsonPath: this.packageJsonPath,\n      npmDir: this.npmDir,\n      name: this.$$name,\n      binaryName: this.binaryName,\n      packageName: this.packageName,\n      manifestPath: this.manifestPath,\n      repository: this.repository,\n      description: this.description,\n    }\n  }\n}\n\n/**\n * Rename the NAPI-RS project\n */\nexport interface RenameOptions {\n  /**\n   * The working directory of where napi command will be executed in, all other paths options are relative to this path\n   *\n   * @default process.cwd()\n   */\n  cwd?: string\n  /**\n   * Path to `napi` config json file\n   */\n  configPath?: string\n  /**\n   * Path to `package.json`\n   *\n   * @default 'package.json'\n   */\n  packageJsonPath?: string\n  /**\n   * Path to the folder where the npm packages put\n   *\n   * @default 'npm'\n   */\n  npmDir?: string\n  /**\n   * The new name of the project\n   */\n  name?: string\n  /**\n   * The new binary name *.node files\n   */\n  binaryName?: string\n  /**\n   * The new package name of the project\n   */\n  packageName?: string\n  /**\n   * Path to `Cargo.toml`\n   *\n   * @default 'Cargo.toml'\n   */\n  manifestPath?: string\n  /**\n   * The new repository of the project\n   */\n  repository?: string\n  /**\n   * The new description of the project\n   */\n  description?: string\n}\n\nexport function applyDefaultRenameOptions(options: RenameOptions) {\n  return {\n    cwd: process.cwd(),\n    packageJsonPath: 'package.json',\n    npmDir: 'npm',\n    manifestPath: 'Cargo.toml',\n    ...options,\n  }\n}\n"
  },
  {
    "path": "cli/src/def/universalize.ts",
    "content": "// This file is generated by codegen/index.ts\n// Do not edit this file manually\nimport { Command, Option } from 'clipanion'\n\nexport abstract class BaseUniversalizeCommand extends Command {\n  static paths = [['universalize']]\n\n  static usage = Command.Usage({\n    description: 'Combile built binaries into one universal binary',\n  })\n\n  cwd = Option.String('--cwd', process.cwd(), {\n    description:\n      'The working directory of where napi command will be executed in, all other paths options are relative to this path',\n  })\n\n  configPath?: string = Option.String('--config-path,-c', {\n    description: 'Path to `napi` config json file',\n  })\n\n  packageJsonPath = Option.String('--package-json-path', 'package.json', {\n    description: 'Path to `package.json`',\n  })\n\n  outputDir = Option.String('--output-dir,-o', './', {\n    description:\n      'Path to the folder where all built `.node` files put, same as `--output-dir` of build command',\n  })\n\n  getOptions() {\n    return {\n      cwd: this.cwd,\n      configPath: this.configPath,\n      packageJsonPath: this.packageJsonPath,\n      outputDir: this.outputDir,\n    }\n  }\n}\n\n/**\n * Combile built binaries into one universal binary\n */\nexport interface UniversalizeOptions {\n  /**\n   * The working directory of where napi command will be executed in, all other paths options are relative to this path\n   *\n   * @default process.cwd()\n   */\n  cwd?: string\n  /**\n   * Path to `napi` config json file\n   */\n  configPath?: string\n  /**\n   * Path to `package.json`\n   *\n   * @default 'package.json'\n   */\n  packageJsonPath?: string\n  /**\n   * Path to the folder where all built `.node` files put, same as `--output-dir` of build command\n   *\n   * @default './'\n   */\n  outputDir?: string\n}\n\nexport function applyDefaultUniversalizeOptions(options: UniversalizeOptions) {\n  return {\n    cwd: process.cwd(),\n    packageJsonPath: 'package.json',\n    outputDir: './',\n    ...options,\n  }\n}\n"
  },
  {
    "path": "cli/src/def/version.ts",
    "content": "// This file is generated by codegen/index.ts\n// Do not edit this file manually\nimport { Command, Option } from 'clipanion'\n\nexport abstract class BaseVersionCommand extends Command {\n  static paths = [['version']]\n\n  static usage = Command.Usage({\n    description: 'Update version in created npm packages',\n  })\n\n  cwd = Option.String('--cwd', process.cwd(), {\n    description:\n      'The working directory of where napi command will be executed in, all other paths options are relative to this path',\n  })\n\n  configPath?: string = Option.String('--config-path,-c', {\n    description: 'Path to `napi` config json file',\n  })\n\n  packageJsonPath = Option.String('--package-json-path', 'package.json', {\n    description: 'Path to `package.json`',\n  })\n\n  npmDir = Option.String('--npm-dir', 'npm', {\n    description: 'Path to the folder where the npm packages put',\n  })\n\n  getOptions() {\n    return {\n      cwd: this.cwd,\n      configPath: this.configPath,\n      packageJsonPath: this.packageJsonPath,\n      npmDir: this.npmDir,\n    }\n  }\n}\n\n/**\n * Update version in created npm packages\n */\nexport interface VersionOptions {\n  /**\n   * The working directory of where napi command will be executed in, all other paths options are relative to this path\n   *\n   * @default process.cwd()\n   */\n  cwd?: string\n  /**\n   * Path to `napi` config json file\n   */\n  configPath?: string\n  /**\n   * Path to `package.json`\n   *\n   * @default 'package.json'\n   */\n  packageJsonPath?: string\n  /**\n   * Path to the folder where the npm packages put\n   *\n   * @default 'npm'\n   */\n  npmDir?: string\n}\n\nexport function applyDefaultVersionOptions(options: VersionOptions) {\n  return {\n    cwd: process.cwd(),\n    packageJsonPath: 'package.json',\n    npmDir: 'npm',\n    ...options,\n  }\n}\n"
  },
  {
    "path": "cli/src/index.ts",
    "content": "import { Cli } from 'clipanion'\n\nimport { collectArtifacts } from './api/artifacts.js'\nimport { buildProject } from './api/build.js'\nimport { createNpmDirs } from './api/create-npm-dirs.js'\nimport { newProject } from './api/new.js'\nimport { prePublish } from './api/pre-publish.js'\nimport { renameProject } from './api/rename.js'\nimport { universalizeBinaries } from './api/universalize.js'\nimport { version } from './api/version.js'\nimport { ArtifactsCommand } from './commands/artifacts.js'\nimport { BuildCommand } from './commands/build.js'\nimport { CliVersionCommand } from './commands/cli-version.js'\nimport { CreateNpmDirsCommand } from './commands/create-npm-dirs.js'\nimport { HelpCommand } from './commands/help.js'\nimport { NewCommand } from './commands/new.js'\nimport { PrePublishCommand } from './commands/pre-publish.js'\nimport { RenameCommand } from './commands/rename.js'\nimport { UniversalizeCommand } from './commands/universalize.js'\nimport { VersionCommand } from './commands/version.js'\nimport { CLI_VERSION } from './utils/misc.js'\n\nexport const cli = new Cli({\n  binaryName: 'napi',\n  binaryVersion: CLI_VERSION,\n})\n\ncli.register(NewCommand)\ncli.register(BuildCommand)\ncli.register(CreateNpmDirsCommand)\ncli.register(ArtifactsCommand)\ncli.register(UniversalizeCommand)\ncli.register(RenameCommand)\ncli.register(PrePublishCommand)\ncli.register(VersionCommand)\ncli.register(HelpCommand)\ncli.register(CliVersionCommand)\n\n/**\n *\n * @usage\n *\n * ```ts\n * const cli = new NapiCli()\n *\n * cli.build({\n *   cwd: '/path/to/your/project',\n * })\n * ```\n */\nexport class NapiCli {\n  artifacts = collectArtifacts\n  new = newProject\n  build = buildProject\n  createNpmDirs = createNpmDirs\n  prePublish = prePublish\n  rename = renameProject\n  universalize = universalizeBinaries\n  version = version\n}\n\nexport function createBuildCommand(args: string[]): BuildCommand {\n  return cli.process(['build', ...args]) as BuildCommand\n}\n\nexport function createArtifactsCommand(args: string[]): ArtifactsCommand {\n  return cli.process(['artifacts', ...args]) as ArtifactsCommand\n}\n\nexport function createCreateNpmDirsCommand(\n  args: string[],\n): CreateNpmDirsCommand {\n  return cli.process(['create-npm-dirs', ...args]) as CreateNpmDirsCommand\n}\n\nexport function createPrePublishCommand(args: string[]): PrePublishCommand {\n  return cli.process(['pre-publish', ...args]) as PrePublishCommand\n}\n\nexport function createRenameCommand(args: string[]): RenameCommand {\n  return cli.process(['rename', ...args]) as RenameCommand\n}\n\nexport function createUniversalizeCommand(args: string[]): UniversalizeCommand {\n  return cli.process(['universalize', ...args]) as UniversalizeCommand\n}\n\nexport function createVersionCommand(args: string[]): VersionCommand {\n  return cli.process(['version', ...args]) as VersionCommand\n}\n\nexport function createNewCommand(args: string[]): NewCommand {\n  return cli.process(['new', ...args]) as NewCommand\n}\n\nexport { parseTriple } from './utils/target.js'\nexport {\n  type GenerateTypeDefOptions,\n  type WriteJsBindingOptions,\n  writeJsBinding,\n  generateTypeDef,\n} from './api/build.js'\nexport { readNapiConfig } from './utils/config.js'\n"
  },
  {
    "path": "cli/src/utils/__tests__/__fixtures__/napi_type_def",
    "content": "{\"kind\": \"const\", \"name\": \"DEFAULT_COST\", \"js_doc\": \"/** This is a const */\\n\", \"def\": \"export const DEFAULT_COST: number\", \"original_name\": \"DEFAULT_COST\"}\n{\"kind\": \"fn\", \"name\": \"getWords\", \"js_doc\": \"\", \"def\": \"function getWords(): Array<string>\"}\n{\"kind\": \"fn\", \"name\": \"getNums\", \"js_doc\": \"/** Gets some numbers */\\n\", \"def\": \"function getNums(): Array<number>\"}\n{\"kind\": \"fn\", \"name\": \"sumNums\", \"js_doc\": \"\", \"def\": \"function sumNums(nums: Array<number>): number\"}\n{\"kind\": \"fn\", \"name\": \"toJsObj\", \"js_doc\": \"\", \"def\": \"function toJsObj(): object\"}\n{\"kind\": \"fn\", \"name\": \"getNumArr\", \"js_doc\": \"\", \"def\": \"function getNumArr(): number[]\"}\n{\"kind\": \"fn\", \"name\": \"getNestedNumArr\", \"js_doc\": \"\", \"def\": \"function getNestedNumArr(): number[][][]\"}\n{\"kind\": \"fn\", \"name\": \"readFileAsync\", \"js_doc\": \"\", \"def\": \"function readFileAsync(path: string): Promise<Buffer>\"}\n{\"kind\": \"fn\", \"name\": \"asyncMultiTwo\", \"js_doc\": \"\", \"def\": \"function asyncMultiTwo(arg: number): Promise<number>\"}\n{\"kind\": \"fn\", \"name\": \"bigintAdd\", \"js_doc\": \"\", \"def\": \"function bigintAdd(a: bigint, b: bigint): bigint\"}\n{\"kind\": \"fn\", \"name\": \"createBigInt\", \"js_doc\": \"\", \"def\": \"function createBigInt(): bigint\"}\n{\"kind\": \"fn\", \"name\": \"createBigIntI64\", \"js_doc\": \"\", \"def\": \"function createBigIntI64(): bigint\"}\n{\"kind\": \"fn\", \"name\": \"bigintGetU64AsString\", \"js_doc\": \"\", \"def\": \"function bigintGetU64AsString(bi: bigint): string\"}\n{\"kind\": \"fn\", \"name\": \"bigintFromI64\", \"js_doc\": \"\", \"def\": \"function bigintFromI64(): bigint\"}\n{\"kind\": \"fn\", \"name\": \"bigintFromI128\", \"js_doc\": \"\", \"def\": \"function bigintFromI128(): bigint\"}\n{\"kind\": \"fn\", \"name\": \"getCwd\", \"js_doc\": \"\", \"def\": \"function getCwd(callback: (arg0: string) => void): void\"}\n{\"kind\": \"fn\", \"name\": \"optionEnd\", \"js_doc\": \"\", \"def\": \"function optionEnd(callback: (arg0: string, arg1?: string | undefined | null) => void): void\"}\n{\"kind\": \"fn\", \"name\": \"optionStart\", \"js_doc\": \"\", \"def\": \"function optionStart(callback: (arg0: string | undefined | null, arg1: string) => void): void\"}\n{\"kind\": \"fn\", \"name\": \"optionStartEnd\", \"js_doc\": \"\", \"def\": \"function optionStartEnd(callback: (arg0: string | undefined | null, arg1: string, arg2?: string | undefined | null) => void): void\"}\n{\"kind\": \"fn\", \"name\": \"optionOnly\", \"js_doc\": \"\", \"def\": \"function optionOnly(callback: (arg0?: string | undefined | null) => void): void\"}\n{\"kind\": \"fn\", \"name\": \"readFile\", \"js_doc\": \"/** napi = { version = 2, features = [\\\"serde-json\\\"] } */\\n\", \"def\": \"function readFile(callback: (arg0: Error | undefined, arg1?: string | undefined | null) => void): void\"}\n{\"kind\": \"fn\", \"name\": \"returnJsFunction\", \"js_doc\": \"\", \"def\": \"function returnJsFunction(): (...args: any[]) => any\"}\n{\"kind\": \"fn\", \"name\": \"callbackReturnPromise\", \"js_doc\": \"\", \"def\": \"function callbackReturnPromise<T>(functionInput: () => T | Promise<T>, callback: (err: Error | null, result: T) => void): T | Promise<T>\"}\n{\"kind\": \"fn\", \"name\": \"captureErrorInCallback\", \"js_doc\": \"\", \"def\": \"function captureErrorInCallback(cb1: () => void, cb2: (arg0: Error) => void): void\"}\n{\"kind\": \"struct\", \"name\": \"Animal\", \"js_doc\": \"/**\\n * `constructor` option for `struct` requires all fields to be public,\\n * otherwise tag impl fn as constructor\\n * #[napi(constructor)]\\n */\\n\", \"def\": \"/** Kind of animal */\\nreadonly kind: Kind\", \"original_name\": \"Animal\"}\n{\"kind\": \"impl\", \"name\": \"Animal\", \"js_doc\": \"\", \"def\": \"/** This is the constructor */\\n constructor(kind: Kind, name: string)\\n/** This is a factory method */\\nstatic withKind(kind: Kind): Animal\\nget name(): string\\nset name(name: string)\\nget type(): Kind\\nset type(kind: Kind)\\n/**\\n * This is a\\n * multi-line comment\\n * with an emoji \\uD83D\\uDE80\\n */\\n whoami(): string\\n/** This is static... */\\nstatic getDogKind(): Kind\\n/**\\n * Here are some characters and character sequences\\n * that should be escaped correctly:\\n * \\\\[]{}/\\\\:\\\"\\\"{\\n * }\\n */\\n returnOtherClass(): Dog\\n returnOtherClassWithCustomConstructor(): Bird\\n overrideIndividualArgOnMethod(normalTy: string, overriddenTy: {n: string}): Bird\"}\n{\"kind\": \"struct\", \"name\": \"Dog\", \"js_doc\": \"\", \"def\": \"name: string\\nconstructor(name: string)\", \"original_name\": \"Dog\"}\n{\"kind\": \"struct\", \"name\": \"Bird\", \"js_doc\": \"\", \"def\": \"name: string\", \"original_name\": \"Bird\"}\n{\"kind\": \"impl\", \"name\": \"Bird\", \"js_doc\": \"\", \"def\": \" constructor(name: string)\\n getCount(): number\\n getNameAsync(): Promise<string>\"}\n{\"kind\": \"struct\", \"name\": \"Blake2BHasher\", \"js_doc\": \"/** Smoking test for type generation */\\n\", \"def\": \"\", \"original_name\": \"Blake2bHasher\"}\n{\"kind\": \"impl\", \"name\": \"Blake2BHasher\", \"js_doc\": \"\", \"def\": \"static withKey(key: Blake2bKey): Blake2BHasher\"}\n{\"kind\": \"impl\", \"name\": \"Blake2BHasher\", \"js_doc\": \"\", \"def\": \" update(data: Buffer): void\"}\n{\"kind\": \"struct\", \"name\": \"Blake2BKey\", \"js_doc\": \"\", \"def\": \"\", \"original_name\": \"Blake2bKey\"}\n{\"kind\": \"struct\", \"name\": \"Context\", \"js_doc\": \"\", \"def\": \"maybeNeed?: boolean\\nbuffer: Uint8Array\", \"original_name\": \"Context\"}\n{\"kind\": \"impl\", \"name\": \"Context\", \"js_doc\": \"\", \"def\": \" constructor()\\nstatic withData(data: string): Context\\nstatic withBuffer(buf: Uint8Array): Context\\n method(): string\"}\n{\"kind\": \"struct\", \"name\": \"AnimalWithDefaultConstructor\", \"js_doc\": \"\", \"def\": \"name: string\\nkind: number\\nconstructor(name: string, kind: number)\", \"original_name\": \"AnimalWithDefaultConstructor\"}\n{\"kind\": \"struct\", \"name\": \"NinjaTurtle\", \"js_doc\": \"\", \"def\": \"name: string\", \"original_name\": \"NinjaTurtle\"}\n{\"kind\": \"impl\", \"name\": \"NinjaTurtle\", \"js_doc\": \"\", \"def\": \"static isInstanceOf(value: unknown): boolean\\n/** Create your ninja turtle! \\uD83D\\uDC22 */\\nstatic newRaph(): NinjaTurtle\\n getMaskColor(): string\\n getName(): string\\n returnThis(this: this): this\"}\n{\"kind\": \"struct\", \"name\": \"Assets\", \"js_doc\": \"\", \"def\": \"\", \"original_name\": \"JsAssets\"}\n{\"kind\": \"impl\", \"name\": \"Assets\", \"js_doc\": \"\", \"def\": \" constructor()\\n get(id: number): JsAsset | null\"}\n{\"kind\": \"struct\", \"name\": \"Asset\", \"js_doc\": \"\", \"def\": \"\", \"original_name\": \"JsAsset\"}\n{\"kind\": \"impl\", \"name\": \"Asset\", \"js_doc\": \"\", \"def\": \" constructor()\\nget filePath(): number\"}\n{\"kind\": \"struct\", \"name\": \"Optional\", \"js_doc\": \"\", \"def\": \"\", \"original_name\": \"Optional\"}\n{\"kind\": \"impl\", \"name\": \"Optional\", \"js_doc\": \"\", \"def\": \"static optionEnd(required: string, optional?: string | undefined | null): string\\nstatic optionStart(optional: string | undefined | null, required: string): string\\nstatic optionStartEnd(optional1: string | undefined | null, required: string, optional2?: string | undefined | null): string\\nstatic optionOnly(optional?: string | undefined | null): string\"}\n{\"kind\": \"interface\", \"name\": \"ObjectFieldClassInstance\", \"js_doc\": \"\", \"def\": \"bird: Bird\", \"original_name\": \"ObjectFieldClassInstance\"}\n{\"kind\": \"fn\", \"name\": \"createObjectWithClassField\", \"js_doc\": \"\", \"def\": \"function createObjectWithClassField(): ObjectFieldClassInstance\"}\n{\"kind\": \"fn\", \"name\": \"receiveObjectWithClassField\", \"js_doc\": \"\", \"def\": \"function receiveObjectWithClassField(object: ObjectFieldClassInstance): Bird\"}\n{\"kind\": \"struct\", \"name\": \"NotWritableClass\", \"js_doc\": \"\", \"def\": \"name: string\\nconstructor(name: string)\", \"original_name\": \"NotWritableClass\"}\n{\"kind\": \"impl\", \"name\": \"NotWritableClass\", \"js_doc\": \"\", \"def\": \" setName(name: string): void\"}\n{\"kind\": \"struct\", \"name\": \"CustomFinalize\", \"js_doc\": \"\", \"def\": \"\", \"original_name\": \"CustomFinalize\"}\n{\"kind\": \"impl\", \"name\": \"CustomFinalize\", \"js_doc\": \"\", \"def\": \" constructor(width: number, height: number)\"}\n{\"kind\": \"struct\", \"name\": \"Width\", \"js_doc\": \"\", \"def\": \"value: number\\nconstructor(value: number)\", \"original_name\": \"Width\"}\n{\"kind\": \"fn\", \"name\": \"plusOne\", \"js_doc\": \"\", \"def\": \"function plusOne(this: Width): number\"}\n{\"kind\": \"struct\", \"name\": \"ClassWithFactory\", \"js_doc\": \"\", \"def\": \"name: string\", \"original_name\": \"ClassWithFactory\"}\n{\"kind\": \"impl\", \"name\": \"ClassWithFactory\", \"js_doc\": \"\", \"def\": \"static withName(name: string): ClassWithFactory\\n setName(name: string): this\"}\n{\"kind\": \"fn\", \"name\": \"dateToNumber\", \"js_doc\": \"\", \"def\": \"function dateToNumber(input: Date): number\"}\n{\"kind\": \"fn\", \"name\": \"chronoDateToMillis\", \"js_doc\": \"\", \"def\": \"function chronoDateToMillis(input: Date): number\"}\n{\"kind\": \"fn\", \"name\": \"chronoDateAdd1Minute\", \"js_doc\": \"\", \"def\": \"function chronoDateAdd1Minute(input: Date): Date\"}\n{\"kind\": \"interface\", \"name\": \"Dates\", \"js_doc\": \"\", \"def\": \"start: Date\\nend?: Date\", \"original_name\": \"Dates\"}\n{\"kind\": \"fn\", \"name\": \"eitherStringOrNumber\", \"js_doc\": \"\", \"def\": \"function eitherStringOrNumber(input: string | number): number\"}\n{\"kind\": \"fn\", \"name\": \"returnEither\", \"js_doc\": \"\", \"def\": \"function returnEither(input: number): string | number\"}\n{\"kind\": \"fn\", \"name\": \"either3\", \"js_doc\": \"\", \"def\": \"function either3(input: string | number | boolean): number\"}\n{\"kind\": \"interface\", \"name\": \"Obj\", \"js_doc\": \"\", \"def\": \"v: string | number\", \"original_name\": \"Obj\"}\n{\"kind\": \"fn\", \"name\": \"either4\", \"js_doc\": \"\", \"def\": \"function either4(input: string | number | boolean | Obj): number\"}\n{\"kind\": \"struct\", \"name\": \"JsClassForEither\", \"js_doc\": \"\", \"def\": \"\", \"original_name\": \"JsClassForEither\"}\n{\"kind\": \"impl\", \"name\": \"JsClassForEither\", \"js_doc\": \"\", \"def\": \" constructor()\"}\n{\"kind\": \"struct\", \"name\": \"AnotherClassForEither\", \"js_doc\": \"\", \"def\": \"\", \"original_name\": \"AnotherClassForEither\"}\n{\"kind\": \"impl\", \"name\": \"AnotherClassForEither\", \"js_doc\": \"\", \"def\": \" constructor()\"}\n{\"kind\": \"fn\", \"name\": \"receiveClassOrNumber\", \"js_doc\": \"\", \"def\": \"function receiveClassOrNumber(either: number | JsClassForEither): number\"}\n{\"kind\": \"fn\", \"name\": \"receiveMutClassOrNumber\", \"js_doc\": \"\", \"def\": \"function receiveMutClassOrNumber(either: number | JsClassForEither): number\"}\n{\"kind\": \"fn\", \"name\": \"receiveDifferentClass\", \"js_doc\": \"\", \"def\": \"function receiveDifferentClass(either: JsClassForEither | AnotherClassForEither): number\"}\n{\"kind\": \"fn\", \"name\": \"returnEitherClass\", \"js_doc\": \"\", \"def\": \"function returnEitherClass(input: number): number | JsClassForEither\"}\n{\"kind\": \"fn\", \"name\": \"eitherFromOption\", \"js_doc\": \"\", \"def\": \"function eitherFromOption(): JsClassForEither | undefined\"}\n{\"kind\": \"interface\", \"name\": \"A\", \"js_doc\": \"\", \"def\": \"foo: number\", \"original_name\": \"A\"}\n{\"kind\": \"interface\", \"name\": \"B\", \"js_doc\": \"\", \"def\": \"bar: number\", \"original_name\": \"B\"}\n{\"kind\": \"interface\", \"name\": \"C\", \"js_doc\": \"\", \"def\": \"baz: number\", \"original_name\": \"C\"}\n{\"kind\": \"fn\", \"name\": \"eitherFromObjects\", \"js_doc\": \"\", \"def\": \"function eitherFromObjects(input: A | B | C): string\"}\n{\"kind\": \"fn\", \"name\": \"eitherBoolOrFunction\", \"js_doc\": \"\", \"def\": \"function eitherBoolOrFunction(input: boolean | ((...args: any[]) => any)): void\"}\n{\"kind\": \"fn\", \"name\": \"promiseInEither\", \"js_doc\": \"\", \"def\": \"function promiseInEither(input: number | Promise<number>): Promise<boolean>\"}\n{\"kind\": \"enum\", \"name\": \"Kind\", \"js_doc\": \"/** default enum values are continuos i32s start from 0 */\\n\", \"def\": \"/** Barks */\\nDog = 0,\\n /** Kills birds */\\nCat = 1,\\n /** Tasty */\\nDuck = 2\", \"original_name\": \"Kind\"}\n{\"kind\": \"enum\", \"name\": \"Empty\", \"js_doc\": \"\", \"def\": \"\", \"original_name\": \"Empty\"}\n{\"kind\": \"enum\", \"name\": \"CustomNumEnum\", \"js_doc\": \"/** You could break the step and for an new continuous value. */\\n\", \"def\": \"One = 1,\\n Two = 2,\\n Three = 3,\\n Four = 4,\\n Six = 6,\\n Eight = 8,\\n Nine = 9,\\n Ten = 10\", \"original_name\": \"CustomNumEnum\"}\n{\"kind\": \"fn\", \"name\": \"enumToI32\", \"js_doc\": \"\", \"def\": \"function enumToI32(e: CustomNumEnum): number\"}\n{\"kind\": \"fn\", \"name\": \"throwError\", \"js_doc\": \"\", \"def\": \"function throwError(): void\"}\n{\"kind\": \"fn\", \"name\": \"panic\", \"js_doc\": \"\", \"def\": \"function panic(): void\"}\n{\"kind\": \"fn\", \"name\": \"receiveString\", \"js_doc\": \"\", \"def\": \"function receiveString(s: string): string\"}\n{\"kind\": \"fn\", \"name\": \"customStatusCode\", \"js_doc\": \"\", \"def\": \"function customStatusCode(): void\"}\n{\"kind\": \"fn\", \"name\": \"createExternal\", \"js_doc\": \"\", \"def\": \"function createExternal(size: number): ExternalObject<number>\"}\n{\"kind\": \"fn\", \"name\": \"createExternalString\", \"js_doc\": \"\", \"def\": \"function createExternalString(content: string): ExternalObject<string>\"}\n{\"kind\": \"fn\", \"name\": \"getExternal\", \"js_doc\": \"\", \"def\": \"function getExternal(external: ExternalObject<number>): number\"}\n{\"kind\": \"fn\", \"name\": \"mutateExternal\", \"js_doc\": \"\", \"def\": \"function mutateExternal(external: ExternalObject<number>, newVal: number): void\"}\n{\"kind\": \"fn\", \"name\": \"validateArray\", \"js_doc\": \"\", \"def\": \"function validateArray(arr: Array<number>): number\"}\n{\"kind\": \"fn\", \"name\": \"validateBuffer\", \"js_doc\": \"\", \"def\": \"function validateBuffer(b: Buffer): number\"}\n{\"kind\": \"fn\", \"name\": \"validateTypedArray\", \"js_doc\": \"\", \"def\": \"function validateTypedArray(input: Uint8Array): number\"}\n{\"kind\": \"fn\", \"name\": \"validateBigint\", \"js_doc\": \"\", \"def\": \"function validateBigint(input: bigint): bigint\"}\n{\"kind\": \"fn\", \"name\": \"validateBoolean\", \"js_doc\": \"\", \"def\": \"function validateBoolean(i: boolean): boolean\"}\n{\"kind\": \"fn\", \"name\": \"validateDate\", \"js_doc\": \"\", \"def\": \"function validateDate(d: Date): number\"}\n{\"kind\": \"fn\", \"name\": \"validateDateTime\", \"js_doc\": \"\", \"def\": \"function validateDateTime(d: Date): number\"}\n{\"kind\": \"fn\", \"name\": \"validateExternal\", \"js_doc\": \"\", \"def\": \"function validateExternal(e: ExternalObject<number>): number\"}\n{\"kind\": \"fn\", \"name\": \"validateFunction\", \"js_doc\": \"\", \"def\": \"function validateFunction(cb: () => number): number\"}\n{\"kind\": \"fn\", \"name\": \"validateHashMap\", \"js_doc\": \"\", \"def\": \"function validateHashMap(input: Record<string, number>): number\"}\n{\"kind\": \"fn\", \"name\": \"validateNull\", \"js_doc\": \"\", \"def\": \"function validateNull(i: null): boolean\"}\n{\"kind\": \"fn\", \"name\": \"validateUndefined\", \"js_doc\": \"\", \"def\": \"function validateUndefined(i: undefined): boolean\"}\n{\"kind\": \"fn\", \"name\": \"validateNumber\", \"js_doc\": \"\", \"def\": \"function validateNumber(i: number): number\"}\n{\"kind\": \"fn\", \"name\": \"validatePromise\", \"js_doc\": \"\", \"def\": \"function validatePromise(p: Promise<number>): Promise<number>\"}\n{\"kind\": \"fn\", \"name\": \"validateString\", \"js_doc\": \"\", \"def\": \"function validateString(s: string): string\"}\n{\"kind\": \"fn\", \"name\": \"validateSymbol\", \"js_doc\": \"\", \"def\": \"function validateSymbol(s: symbol): boolean\"}\n{\"kind\": \"fn\", \"name\": \"validateOptional\", \"js_doc\": \"\", \"def\": \"function validateOptional(input1?: string | undefined | null, input2?: boolean | undefined | null): boolean\"}\n{\"kind\": \"fn\", \"name\": \"returnUndefinedIfInvalid\", \"js_doc\": \"\", \"def\": \"function returnUndefinedIfInvalid(input: boolean): boolean\"}\n{\"kind\": \"fn\", \"name\": \"returnUndefinedIfInvalidPromise\", \"js_doc\": \"\", \"def\": \"function returnUndefinedIfInvalidPromise(input: Promise<boolean>): Promise<boolean>\"}\n{\"kind\": \"fn\", \"name\": \"tsRename\", \"js_doc\": \"\", \"def\": \"function tsRename(a: { foo: number }): string[]\"}\n{\"kind\": \"fn\", \"name\": \"overrideIndividualArgOnFunction\", \"js_doc\": \"\", \"def\": \"function overrideIndividualArgOnFunction(notOverridden: string, f: () => string, notOverridden2: number): string\"}\n{\"kind\": \"fn\", \"name\": \"overrideIndividualArgOnFunctionWithCbArg\", \"js_doc\": \"\", \"def\": \"function overrideIndividualArgOnFunctionWithCbArg(callback: (town: string, name?: string | undefined | null) => string, notOverridden: number): object\"}\n{\"kind\": \"struct\", \"name\": \"Fib\", \"js_doc\": \"\", \"def\": \"\", \"original_name\": \"Fib\"}\n{\"kind\": \"impl\", \"name\": \"Fib\", \"js_doc\": \"\", \"def\": \"[Symbol.iterator](): Iterator<number, void, number>\"}\n{\"kind\": \"impl\", \"name\": \"Fib\", \"js_doc\": \"\", \"def\": \" constructor()\"}\n{\"kind\": \"struct\", \"name\": \"Fib2\", \"js_doc\": \"\", \"def\": \"\", \"original_name\": \"Fib2\"}\n{\"kind\": \"impl\", \"name\": \"Fib2\", \"js_doc\": \"\", \"def\": \"[Symbol.iterator](): Iterator<number, void, number>\"}\n{\"kind\": \"impl\", \"name\": \"Fib2\", \"js_doc\": \"\", \"def\": \"static create(seed: number): Fib2\"}\n{\"kind\": \"struct\", \"name\": \"Fib3\", \"js_doc\": \"\", \"def\": \"current: number\\nnext: number\\nconstructor(current: number, next: number)\", \"original_name\": \"Fib3\"}\n{\"kind\": \"impl\", \"name\": \"Fib3\", \"js_doc\": \"\", \"def\": \"[Symbol.iterator](): Iterator<number, void, number>\"}\n{\"kind\": \"const\", \"name\": \"ALIGNMENT\", \"js_doc\": \"\", \"def\": \"export const ALIGNMENT: number\", \"original_name\": \"ALIGNMENT\", \"js_mod\": \"xxh3\"}\n{\"kind\": \"fn\", \"name\": \"xxh3_64\", \"js_doc\": \"\", \"def\": \"function xxh3_64(input: Buffer): bigint\", \"js_mod\": \"xxh3\"}\n{\"kind\": \"fn\", \"name\": \"xxh128\", \"js_doc\": \"/** xxh128 function */\\n\", \"def\": \"function xxh128(input: Buffer): bigint\", \"js_mod\": \"xxh3\"}\n{\"kind\": \"struct\", \"name\": \"Xxh3\", \"js_doc\": \"/** Xxh3 class */\\n\", \"def\": \"\", \"original_name\": \"Xxh3\", \"js_mod\": \"xxh3\"}\n{\"kind\": \"impl\", \"name\": \"Xxh3\", \"js_doc\": \"\", \"def\": \" constructor()\\n/** update */\\n update(input: Buffer): void\\n digest(): bigint\", \"js_mod\": \"xxh3\"}\n{\"kind\": \"fn\", \"name\": \"xxh2Plus\", \"js_doc\": \"\", \"def\": \"function xxh2Plus(a: number, b: number): number\", \"js_mod\": \"xxh2\"}\n{\"kind\": \"fn\", \"name\": \"xxh3Xxh64Alias\", \"js_doc\": \"\", \"def\": \"function xxh3Xxh64Alias(input: Buffer): bigint\", \"js_mod\": \"xxh2\"}\n{\"kind\": \"fn\", \"name\": \"xxh64Alias\", \"js_doc\": \"\", \"def\": \"function xxh64Alias(input: Buffer): bigint\"}\n{\"kind\": \"fn\", \"name\": \"getMapping\", \"js_doc\": \"\", \"def\": \"function getMapping(): Record<string, number>\"}\n{\"kind\": \"fn\", \"name\": \"sumMapping\", \"js_doc\": \"\", \"def\": \"function sumMapping(nums: Record<string, number>): number\"}\n{\"kind\": \"fn\", \"name\": \"mapOption\", \"js_doc\": \"\", \"def\": \"function mapOption(val?: number | undefined | null): number | null\"}\n{\"kind\": \"fn\", \"name\": \"returnNull\", \"js_doc\": \"\", \"def\": \"function returnNull(): null\"}\n{\"kind\": \"fn\", \"name\": \"returnUndefined\", \"js_doc\": \"\", \"def\": \"function returnUndefined(): void\"}\n{\"kind\": \"fn\", \"name\": \"add\", \"js_doc\": \"\", \"def\": \"function add(a: number, b: number): number\"}\n{\"kind\": \"fn\", \"name\": \"fibonacci\", \"js_doc\": \"\", \"def\": \"function fibonacci(n: number): number\"}\n{\"kind\": \"fn\", \"name\": \"listObjKeys\", \"js_doc\": \"\", \"def\": \"function listObjKeys(obj: object): Array<string>\"}\n{\"kind\": \"fn\", \"name\": \"createObj\", \"js_doc\": \"\", \"def\": \"function createObj(): object\"}\n{\"kind\": \"fn\", \"name\": \"getGlobal\", \"js_doc\": \"\", \"def\": \"function getGlobal(): typeof global\"}\n{\"kind\": \"fn\", \"name\": \"getUndefined\", \"js_doc\": \"\", \"def\": \"function getUndefined(): void\"}\n{\"kind\": \"fn\", \"name\": \"getNull\", \"js_doc\": \"\", \"def\": \"function getNull(): null\"}\n{\"kind\": \"interface\", \"name\": \"AllOptionalObject\", \"js_doc\": \"\", \"def\": \"name?: string\\nage?: number\", \"original_name\": \"AllOptionalObject\"}\n{\"kind\": \"fn\", \"name\": \"receiveAllOptionalObject\", \"js_doc\": \"\", \"def\": \"function receiveAllOptionalObject(obj?: AllOptionalObject | undefined | null): void\"}\n{\"kind\": \"enum\", \"name\": \"ALIAS\", \"js_doc\": \"\", \"def\": \"A = 0,\\n B = 1\", \"original_name\": \"AliasedEnum\"}\n{\"kind\": \"interface\", \"name\": \"AliasedStruct\", \"js_doc\": \"\", \"def\": \"a: ALIAS\\nb: number\", \"original_name\": \"StructContainsAliasedEnum\"}\n{\"kind\": \"fn\", \"name\": \"fnReceivedAliased\", \"js_doc\": \"\", \"def\": \"function fnReceivedAliased(s: AliasedStruct, e: ALIAS): void\"}\n{\"kind\": \"interface\", \"name\": \"StrictObject\", \"js_doc\": \"\", \"def\": \"name: string\", \"original_name\": \"StrictObject\"}\n{\"kind\": \"fn\", \"name\": \"receiveStrictObject\", \"js_doc\": \"\", \"def\": \"function receiveStrictObject(strictObject: StrictObject): void\"}\n{\"kind\": \"fn\", \"name\": \"getStrFromObject\", \"js_doc\": \"\", \"def\": \"function getStrFromObject(): void\"}\n{\"kind\": \"interface\", \"name\": \"TsTypeChanged\", \"js_doc\": \"\", \"def\": \"typeOverride: object\\ntypeOverrideOptional?: object\", \"original_name\": \"TsTypeChanged\"}\n{\"kind\": \"fn\", \"name\": \"createObjWithProperty\", \"js_doc\": \"\", \"def\": \"function createObjWithProperty(): { value: ArrayBuffer, get getter(): number }\"}\n{\"kind\": \"fn\", \"name\": \"getterFromObj\", \"js_doc\": \"\", \"def\": \"function getterFromObj(): number\"}\n{\"kind\": \"interface\", \"name\": \"ObjectOnlyFromJs\", \"js_doc\": \"\", \"def\": \"count: number\\ncallback: (err: Error | null, value: number) => any\", \"original_name\": \"ObjectOnlyFromJs\"}\n{\"kind\": \"fn\", \"name\": \"receiveObjectOnlyFromJs\", \"js_doc\": \"\", \"def\": \"function receiveObjectOnlyFromJs(obj: { count: number, callback: (err: Error | null, count: number) => void }): void\"}\n{\"kind\": \"fn\", \"name\": \"asyncPlus100\", \"js_doc\": \"\", \"def\": \"function asyncPlus100(p: Promise<number>): Promise<number>\"}\n{\"kind\": \"struct\", \"name\": \"JsRepo\", \"js_doc\": \"\", \"def\": \"\", \"original_name\": \"JsRepo\"}\n{\"kind\": \"impl\", \"name\": \"JsRepo\", \"js_doc\": \"\", \"def\": \" constructor(dir: string)\\n remote(): JsRemote\"}\n{\"kind\": \"struct\", \"name\": \"JsRemote\", \"js_doc\": \"\", \"def\": \"\", \"original_name\": \"JsRemote\"}\n{\"kind\": \"impl\", \"name\": \"JsRemote\", \"js_doc\": \"\", \"def\": \" name(): string\"}\n{\"kind\": \"struct\", \"name\": \"CssRuleList\", \"js_doc\": \"\", \"def\": \"\", \"original_name\": \"CSSRuleList\"}\n{\"kind\": \"impl\", \"name\": \"CssRuleList\", \"js_doc\": \"\", \"def\": \" getRules(): Array<string>\\nget parentStyleSheet(): CSSStyleSheet\\nget name(): string | null\"}\n{\"kind\": \"struct\", \"name\": \"CssStyleSheet\", \"js_doc\": \"\", \"def\": \"\", \"original_name\": \"CSSStyleSheet\"}\n{\"kind\": \"struct\", \"name\": \"AnotherCssStyleSheet\", \"js_doc\": \"\", \"def\": \"\", \"original_name\": \"AnotherCSSStyleSheet\"}\n{\"kind\": \"impl\", \"name\": \"AnotherCssStyleSheet\", \"js_doc\": \"\", \"def\": \"get rules(): CssRuleList\"}\n{\"kind\": \"impl\", \"name\": \"CssStyleSheet\", \"js_doc\": \"\", \"def\": \" constructor(name: string, rules: Array<string>)\\nget rules(): CssRuleList\\n anotherCssStyleSheet(): AnotherCssStyleSheet\"}\n{\"kind\": \"interface\", \"name\": \"PackageJson\", \"js_doc\": \"/** This is an interface for package.json */\\n\", \"def\": \"name: string\\n/** The version of the package */\\nversion: string\\ndependencies?: Record<string, any>\\ndevDependencies?: Record<string, any>\", \"original_name\": \"PackageJson\"}\n{\"kind\": \"fn\", \"name\": \"readPackageJson\", \"js_doc\": \"\", \"def\": \"function readPackageJson(): PackageJson\"}\n{\"kind\": \"fn\", \"name\": \"getPackageJsonName\", \"js_doc\": \"\", \"def\": \"function getPackageJsonName(packageJson: PackageJson): string\"}\n{\"kind\": \"fn\", \"name\": \"testSerdeRoundtrip\", \"js_doc\": \"\", \"def\": \"function testSerdeRoundtrip(data: any): any\"}\n{\"kind\": \"fn\", \"name\": \"contains\", \"js_doc\": \"\", \"def\": \"function contains(source: string, target: string): boolean\"}\n{\"kind\": \"fn\", \"name\": \"concatStr\", \"js_doc\": \"\", \"def\": \"function concatStr(s: string): string\"}\n{\"kind\": \"fn\", \"name\": \"concatUtf16\", \"js_doc\": \"\", \"def\": \"function concatUtf16(s: string): string\"}\n{\"kind\": \"fn\", \"name\": \"concatLatin1\", \"js_doc\": \"\", \"def\": \"function concatLatin1(s: string): string\"}\n{\"kind\": \"fn\", \"name\": \"roundtripStr\", \"js_doc\": \"\", \"def\": \"function roundtripStr(s: string): string\"}\n{\"kind\": \"fn\", \"name\": \"setSymbolInObj\", \"js_doc\": \"\", \"def\": \"function setSymbolInObj(symbol: symbol): object\"}\n{\"kind\": \"fn\", \"name\": \"createSymbol\", \"js_doc\": \"\", \"def\": \"function createSymbol(): symbol\"}\n{\"kind\": \"impl\", \"name\": \"DelaySum\", \"js_doc\": \"\", \"def\": \"\"}\n{\"kind\": \"fn\", \"name\": \"withoutAbortController\", \"js_doc\": \"\", \"def\": \"function withoutAbortController(a: number, b: number): Promise<number>\"}\n{\"kind\": \"fn\", \"name\": \"withAbortController\", \"js_doc\": \"\", \"def\": \"function withAbortController(a: number, b: number, signal: AbortSignal): Promise<number>\"}\n{\"kind\": \"fn\", \"name\": \"callThreadsafeFunction\", \"js_doc\": \"\", \"def\": \"function callThreadsafeFunction(callback: (...args: any[]) => any): void\"}\n{\"kind\": \"fn\", \"name\": \"threadsafeFunctionThrowError\", \"js_doc\": \"\", \"def\": \"function threadsafeFunctionThrowError(cb: (...args: any[]) => any): void\"}\n{\"kind\": \"fn\", \"name\": \"threadsafeFunctionFatalMode\", \"js_doc\": \"\", \"def\": \"function threadsafeFunctionFatalMode(cb: (...args: any[]) => any): void\"}\n{\"kind\": \"fn\", \"name\": \"threadsafeFunctionFatalModeError\", \"js_doc\": \"\", \"def\": \"function threadsafeFunctionFatalModeError(cb: (...args: any[]) => any): void\"}\n{\"kind\": \"fn\", \"name\": \"threadsafeFunctionClosureCapture\", \"js_doc\": \"\", \"def\": \"function threadsafeFunctionClosureCapture(func: (...args: any[]) => any): void\"}\n{\"kind\": \"fn\", \"name\": \"tsfnCallWithCallback\", \"js_doc\": \"\", \"def\": \"function tsfnCallWithCallback(func: (...args: any[]) => any): void\"}\n{\"kind\": \"fn\", \"name\": \"tsfnAsyncCall\", \"js_doc\": \"\", \"def\": \"function tsfnAsyncCall(func: (...args: any[]) => any): Promise<void>\"}\n{\"kind\": \"fn\", \"name\": \"acceptThreadsafeFunction\", \"js_doc\": \"\", \"def\": \"function acceptThreadsafeFunction(func: (err: Error | null, value: number) => any): void\"}\n{\"kind\": \"fn\", \"name\": \"acceptThreadsafeFunctionFatal\", \"js_doc\": \"\", \"def\": \"function acceptThreadsafeFunctionFatal(func: (value: number) => any): void\"}\n{\"kind\": \"fn\", \"name\": \"acceptThreadsafeFunctionTupleArgs\", \"js_doc\": \"\", \"def\": \"function acceptThreadsafeFunctionTupleArgs(func: (err: Error | null, arg0: number, arg1: boolean, arg2: string) => any): void\"}\n{\"kind\": \"fn\", \"name\": \"getBuffer\", \"js_doc\": \"\", \"def\": \"function getBuffer(): Buffer\"}\n{\"kind\": \"fn\", \"name\": \"appendBuffer\", \"js_doc\": \"\", \"def\": \"function appendBuffer(buf: Buffer): Buffer\"}\n{\"kind\": \"fn\", \"name\": \"getEmptyBuffer\", \"js_doc\": \"\", \"def\": \"function getEmptyBuffer(): Buffer\"}\n{\"kind\": \"fn\", \"name\": \"convertU32Array\", \"js_doc\": \"\", \"def\": \"function convertU32Array(input: Uint32Array): Array<number>\"}\n{\"kind\": \"fn\", \"name\": \"createExternalTypedArray\", \"js_doc\": \"\", \"def\": \"function createExternalTypedArray(): Uint32Array\"}\n{\"kind\": \"fn\", \"name\": \"mutateTypedArray\", \"js_doc\": \"\", \"def\": \"function mutateTypedArray(input: Float32Array): void\"}\n{\"kind\": \"fn\", \"name\": \"derefUint8Array\", \"js_doc\": \"\", \"def\": \"function derefUint8Array(a: Uint8Array, b: Uint8ClampedArray): number\"}\n{\"kind\": \"fn\", \"name\": \"bufferPassThrough\", \"js_doc\": \"\", \"def\": \"function bufferPassThrough(buf: Buffer): Promise<Buffer>\"}\n{\"kind\": \"fn\", \"name\": \"arrayBufferPassThrough\", \"js_doc\": \"\", \"def\": \"function arrayBufferPassThrough(buf: Uint8Array): Promise<Uint8Array>\"}\n{\"kind\": \"impl\", \"name\": \"AsyncBuffer\", \"js_doc\": \"\", \"def\": \"\"}\n{\"kind\": \"fn\", \"name\": \"asyncReduceBuffer\", \"js_doc\": \"\", \"def\": \"function asyncReduceBuffer(buf: Buffer): Promise<number>\"}\n{\"kind\": \"fn\", \"name\": \"runScript\", \"js_doc\": \"\", \"def\": \"function runScript(script: string): unknown\"}\n"
  },
  {
    "path": "cli/src/utils/__tests__/__snapshots__/config.spec.ts.md",
    "content": "# Snapshot report for `src/utils/__tests__/config.spec.ts`\n\nThe actual snapshot is saved in `config.spec.ts.snap`.\n\nGenerated by [AVA](https://avajs.dev).\n\n## should be able to read config from package.json\n\n> Snapshot 1\n\n    {\n      binaryName: 'testing',\n      npmClient: 'npm',\n      packageJson: {\n        name: '@napi-rs/testing',\n        napi: {\n          binaryName: 'testing',\n          packageName: '@napi-rs/testing',\n          targets: [\n            'x86_64-unknown-linux-gnu',\n            'x86_64-pc-windows-msvc',\n            'x86_64-apple-darwin',\n          ],\n        },\n        version: '0.0.0',\n      },\n      packageName: '@napi-rs/testing',\n      targets: [\n        {\n          abi: 'gnu',\n          arch: 'x64',\n          platform: 'linux',\n          platformArchABI: 'linux-x64-gnu',\n          triple: 'x86_64-unknown-linux-gnu',\n        },\n        {\n          abi: 'msvc',\n          arch: 'x64',\n          platform: 'win32',\n          platformArchABI: 'win32-x64-msvc',\n          triple: 'x86_64-pc-windows-msvc',\n        },\n        {\n          abi: null,\n          arch: 'x64',\n          platform: 'darwin',\n          platformArchABI: 'darwin-x64',\n          triple: 'x86_64-apple-darwin',\n        },\n      ],\n    }\n\n## should be able to read config from napi.json\n\n> Snapshot 1\n\n    {\n      binaryName: 'testing',\n      npmClient: 'npm',\n      packageJson: {\n        name: '@napi-rs/testing',\n        napi: {\n          binaryName: 'testing',\n          packageName: '@node-rs/testing',\n          targets: [\n            'x86_64-unknown-linux-gnu',\n            'x86_64-apple-darwin',\n            'aarch64-apple-darwin',\n          ],\n        },\n        version: '0.0.0',\n      },\n      packageName: '@node-rs/testing',\n      targets: [\n        {\n          abi: 'gnu',\n          arch: 'x64',\n          platform: 'linux',\n          platformArchABI: 'linux-x64-gnu',\n          triple: 'x86_64-unknown-linux-gnu',\n        },\n        {\n          abi: null,\n          arch: 'x64',\n          platform: 'darwin',\n          platformArchABI: 'darwin-x64',\n          triple: 'x86_64-apple-darwin',\n        },\n        {\n          abi: null,\n          arch: 'arm64',\n          platform: 'darwin',\n          platformArchABI: 'darwin-arm64',\n          triple: 'aarch64-apple-darwin',\n        },\n      ],\n    }\n"
  },
  {
    "path": "cli/src/utils/__tests__/__snapshots__/target.spec.ts.md",
    "content": "# Snapshot report for `src/utils/__tests__/target.spec.ts`\n\nThe actual snapshot is saved in `target.spec.ts.snap`.\n\nGenerated by [AVA](https://avajs.dev).\n\n## should parse triple correctly\n\n> Snapshot 1\n\n    [\n      {\n        abi: null,\n        arch: 'arm64',\n        platform: 'darwin',\n        platformArchABI: 'darwin-arm64',\n        triple: 'aarch64-apple-darwin',\n      },\n      {\n        abi: null,\n        arch: 'arm64',\n        platform: 'android',\n        platformArchABI: 'android-arm64',\n        triple: 'aarch64-linux-android',\n      },\n      {\n        abi: 'gnu',\n        arch: 'arm64',\n        platform: 'linux',\n        platformArchABI: 'linux-arm64-gnu',\n        triple: 'aarch64-unknown-linux-gnu',\n      },\n      {\n        abi: 'musl',\n        arch: 'arm64',\n        platform: 'linux',\n        platformArchABI: 'linux-arm64-musl',\n        triple: 'aarch64-unknown-linux-musl',\n      },\n      {\n        abi: null,\n        arch: 'arm64',\n        platform: 'openharmony',\n        platformArchABI: 'openharmony-arm64',\n        triple: 'aarch64-unknown-linux-ohos',\n      },\n      {\n        abi: 'msvc',\n        arch: 'arm64',\n        platform: 'win32',\n        platformArchABI: 'win32-arm64-msvc',\n        triple: 'aarch64-pc-windows-msvc',\n      },\n      {\n        abi: null,\n        arch: 'x64',\n        platform: 'darwin',\n        platformArchABI: 'darwin-x64',\n        triple: 'x86_64-apple-darwin',\n      },\n      {\n        abi: 'msvc',\n        arch: 'x64',\n        platform: 'win32',\n        platformArchABI: 'win32-x64-msvc',\n        triple: 'x86_64-pc-windows-msvc',\n      },\n      {\n        abi: 'gnu',\n        arch: 'x64',\n        platform: 'win32',\n        platformArchABI: 'win32-x64-gnu',\n        triple: 'x86_64-pc-windows-gnu',\n      },\n      {\n        abi: 'gnu',\n        arch: 'x64',\n        platform: 'linux',\n        platformArchABI: 'linux-x64-gnu',\n        triple: 'x86_64-unknown-linux-gnu',\n      },\n      {\n        abi: 'musl',\n        arch: 'x64',\n        platform: 'linux',\n        platformArchABI: 'linux-x64-musl',\n        triple: 'x86_64-unknown-linux-musl',\n      },\n      {\n        abi: null,\n        arch: 'x64',\n        platform: 'openharmony',\n        platformArchABI: 'openharmony-x64',\n        triple: 'x86_64-unknown-linux-ohos',\n      },\n      {\n        abi: null,\n        arch: 'x64',\n        platform: 'freebsd',\n        platformArchABI: 'freebsd-x64',\n        triple: 'x86_64-unknown-freebsd',\n      },\n      {\n        abi: 'msvc',\n        arch: 'ia32',\n        platform: 'win32',\n        platformArchABI: 'win32-ia32-msvc',\n        triple: 'i686-pc-windows-msvc',\n      },\n      {\n        abi: 'gnueabihf',\n        arch: 'arm',\n        platform: 'linux',\n        platformArchABI: 'linux-arm-gnueabihf',\n        triple: 'armv7-unknown-linux-gnueabihf',\n      },\n      {\n        abi: 'musleabihf',\n        arch: 'arm',\n        platform: 'linux',\n        platformArchABI: 'linux-arm-musleabihf',\n        triple: 'armv7-unknown-linux-musleabihf',\n      },\n      {\n        abi: 'eabi',\n        arch: 'arm',\n        platform: 'android',\n        platformArchABI: 'android-arm-eabi',\n        triple: 'armv7-linux-androideabi',\n      },\n      {\n        abi: null,\n        arch: 'universal',\n        platform: 'darwin',\n        platformArchABI: 'darwin-universal',\n        triple: 'universal-apple-darwin',\n      },\n      {\n        abi: 'gnu',\n        arch: 'loong64',\n        platform: 'linux',\n        platformArchABI: 'linux-loong64-gnu',\n        triple: 'loongarch64-unknown-linux-gnu',\n      },\n      {\n        abi: 'gnu',\n        arch: 'riscv64',\n        platform: 'linux',\n        platformArchABI: 'linux-riscv64-gnu',\n        triple: 'riscv64gc-unknown-linux-gnu',\n      },\n      {\n        abi: 'gnu',\n        arch: 'ppc64',\n        platform: 'linux',\n        platformArchABI: 'linux-ppc64-gnu',\n        triple: 'powerpc64le-unknown-linux-gnu',\n      },\n      {\n        abi: 'gnu',\n        arch: 's390x',\n        platform: 'linux',\n        platformArchABI: 'linux-s390x-gnu',\n        triple: 's390x-unknown-linux-gnu',\n      },\n      {\n        abi: 'wasi',\n        arch: 'wasm32',\n        platform: 'wasi',\n        platformArchABI: 'wasm32-wasi',\n        triple: 'wasm32-wasi-preview1-threads',\n      },\n      {\n        abi: 'wasi',\n        arch: 'wasm32',\n        platform: 'wasi',\n        platformArchABI: 'wasm32-wasi',\n        triple: 'wasm32-wasip1-threads',\n      },\n    ]\n"
  },
  {
    "path": "cli/src/utils/__tests__/__snapshots__/typegen.spec.ts.md",
    "content": "# Snapshot report for `src/utils/__tests__/typegen.spec.ts`\n\nThe actual snapshot is saved in `typegen.spec.ts.snap`.\n\nGenerated by [AVA](https://avajs.dev).\n\n## should ident string correctly\n\n> original ident is 0\n\n    `␊\n    /**␊\n     * should keep␊\n     * class A {␊\n     * foo = () => {}␊\n     *   bar = () => {}␊\n     * }␊\n     */␊\n    class A {␊\n      foo() {␊\n        a = b␊\n      }␊\n    ␊\n      bar = () => {␊\n    ␊\n      }␊\n      boz = 1␊\n    }␊\n    ␊\n    namespace B {␊\n      namespace C {␊\n        type D = A␊\n      }␊\n    }␊\n    `\n\n> original ident is 2\n\n    `␊\n      /**␊\n       * should keep␊\n       * class A {␊\n       * foo = () => {}␊\n       *   bar = () => {}␊\n       * }␊\n       */␊\n      class A {␊\n        foo() {␊\n          a = b␊\n        }␊\n    ␊\n        bar = () => {␊\n    ␊\n        }␊\n        boz = 1␊\n      }␊\n    ␊\n      namespace B {␊\n        namespace C {␊\n          type D = A␊\n        }␊\n      }␊\n    `\n\n## should process type def correctly\n\n> Snapshot 1\n\n    `/**␊\n     * \\`constructor\\` option for \\`struct\\` requires all fields to be public,␊\n     * otherwise tag impl fn as constructor␊\n     * #[napi(constructor)]␊\n     */␊\n    export declare class Animal {␊\n      /** Kind of animal */␊\n      readonly kind: Kind␊\n      /** This is the constructor */␊\n      constructor(kind: Kind, name: string)␊\n      /** This is a factory method */␊\n      static withKind(kind: Kind): Animal␊\n      get name(): string␊\n      set name(name: string)␊\n      get type(): Kind␊\n      set type(kind: Kind)␊\n      /**␊\n       * This is a␊\n       * multi-line comment␊\n       * with an emoji 🚀␊\n       */␊\n      whoami(): string␊\n      /** This is static... */␊\n      static getDogKind(): Kind␊\n      /**␊\n       * Here are some characters and character sequences␊\n       * that should be escaped correctly:␊\n       * \\\\[]{}/\\\\:\"\"{␊\n       * }␊\n       */␊\n      returnOtherClass(): Dog␊\n      returnOtherClassWithCustomConstructor(): Bird␊\n      overrideIndividualArgOnMethod(normalTy: string, overriddenTy: {n: string}): Bird␊\n    }␊\n    ␊\n    export declare class AnimalWithDefaultConstructor {␊\n      name: string␊\n      kind: number␊\n      constructor(name: string, kind: number)␊\n    }␊\n    ␊\n    export declare class AnotherClassForEither {␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class AnotherCssStyleSheet {␊\n      get rules(): CssRuleList␊\n    }␊\n    export type AnotherCSSStyleSheet = AnotherCssStyleSheet␊\n    ␊\n    export declare class Asset {␊\n      constructor()␊\n      get filePath(): number␊\n    }␊\n    export type JsAsset = Asset␊\n    ␊\n    export declare class Assets {␊\n      constructor()␊\n      get(id: number): JsAsset | null␊\n    }␊\n    export type JsAssets = Assets␊\n    ␊\n    export declare class Bird {␊\n      name: string␊\n      constructor(name: string)␊\n      getCount(): number␊\n      getNameAsync(): Promise<string>␊\n    }␊\n    ␊\n    /** Smoking test for type generation */␊\n    export declare class Blake2BHasher {␊\n      static withKey(key: Blake2bKey): Blake2BHasher␊\n      update(data: Buffer): void␊\n    }␊\n    export type Blake2bHasher = Blake2BHasher␊\n    ␊\n    export declare class Blake2BKey {␊\n    ␊\n    }␊\n    export type Blake2bKey = Blake2BKey␊\n    ␊\n    export declare class ClassWithFactory {␊\n      name: string␊\n      static withName(name: string): ClassWithFactory␊\n      setName(name: string): this␊\n    }␊\n    ␊\n    export declare class Context {␊\n      maybeNeed?: boolean␊\n      buffer: Uint8Array␊\n      constructor()␊\n      static withData(data: string): Context␊\n      static withBuffer(buf: Uint8Array): Context␊\n      method(): string␊\n    }␊\n    ␊\n    export declare class CssRuleList {␊\n      getRules(): Array<string>␊\n      get parentStyleSheet(): CSSStyleSheet␊\n      get name(): string | null␊\n    }␊\n    export type CSSRuleList = CssRuleList␊\n    ␊\n    export declare class CssStyleSheet {␊\n      constructor(name: string, rules: Array<string>)␊\n      get rules(): CssRuleList␊\n      anotherCssStyleSheet(): AnotherCssStyleSheet␊\n    }␊\n    export type CSSStyleSheet = CssStyleSheet␊\n    ␊\n    export declare class CustomFinalize {␊\n      constructor(width: number, height: number)␊\n    }␊\n    ␊\n    export declare class Dog {␊\n      name: string␊\n      constructor(name: string)␊\n    }␊\n    ␊\n    export declare class Fib {␊\n      [Symbol.iterator](): Iterator<number, void, number>␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class Fib2 {␊\n      [Symbol.iterator](): Iterator<number, void, number>␊\n      static create(seed: number): Fib2␊\n    }␊\n    ␊\n    export declare class Fib3 {␊\n      current: number␊\n      nextNum: number␊\n      constructor(current: number, nextNum: number)␊\n      [Symbol.iterator](): Iterator<number, void, number>␊\n    }␊\n    ␊\n    export declare class JsClassForEither {␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class JsRemote {␊\n      name(): string␊\n    }␊\n    ␊\n    export declare class JsRepo {␊\n      constructor(dir: string)␊\n      remote(): JsRemote␊\n    }␊\n    ␊\n    export declare class NinjaTurtle {␊\n      name: string␊\n      static isInstanceOf(value: unknown): boolean␊\n      /** Create your ninja turtle! 🐢 */␊\n      static newRaph(): NinjaTurtle␊\n      getMaskColor(): string␊\n      getName(): string␊\n      returnThis(this: this): this␊\n    }␊\n    ␊\n    export declare class NotWritableClass {␊\n      name: string␊\n      constructor(name: string)␊\n      setName(name: string): void␊\n    }␊\n    ␊\n    export declare class Optional {␊\n      static optionEnd(required: string, optional?: string | undefined | null): string␊\n      static optionStart(optional: string | undefined | null, required: string): string␊\n      static optionStartEnd(optional1: string | undefined | null, required: string, optional2?: string | undefined | null): string␊\n      static optionOnly(optional?: string | undefined | null): string␊\n    }␊\n    ␊\n    export declare class Width {␊\n      value: number␊\n      constructor(value: number)␊\n    }␊\n    ␊\n    export interface A {␊\n      foo: number␊\n    }␊\n    ␊\n    export declare function acceptThreadsafeFunction(func: (err: Error | null, value: number) => any): void␊\n    ␊\n    export declare function acceptThreadsafeFunctionFatal(func: (value: number) => any): void␊\n    ␊\n    export declare function acceptThreadsafeFunctionTupleArgs(func: (err: Error | null, arg0: number, arg1: boolean, arg2: string) => any): void␊\n    ␊\n    export declare function add(a: number, b: number): number␊\n    ␊\n    export declare const enum ALIAS {␊\n      A = 0,␊\n      B = 1␊\n    }␊\n    ␊\n    export interface AliasedStruct {␊\n      a: ALIAS␊\n      b: number␊\n    }␊\n    ␊\n    export interface AllOptionalObject {␊\n      name?: string␊\n      age?: number␊\n    }␊\n    ␊\n    export declare function appendBuffer(buf: Buffer): Buffer␊\n    ␊\n    export declare function arrayBufferPassThrough(buf: Uint8Array): Promise<Uint8Array>␊\n    ␊\n    export declare function asyncMultiTwo(arg: number): Promise<number>␊\n    ␊\n    export declare function asyncPlus100(p: Promise<number>): Promise<number>␊\n    ␊\n    export declare function asyncReduceBuffer(buf: Buffer): Promise<number>␊\n    ␊\n    export interface B {␊\n      bar: number␊\n    }␊\n    ␊\n    export declare function bigintAdd(a: bigint, b: bigint): bigint␊\n    ␊\n    export declare function bigintFromI128(): bigint␊\n    ␊\n    export declare function bigintFromI64(): bigint␊\n    ␊\n    export declare function bigintGetU64AsString(bi: bigint): string␊\n    ␊\n    export declare function bufferPassThrough(buf: Buffer): Promise<Buffer>␊\n    ␊\n    export interface C {␊\n      baz: number␊\n    }␊\n    ␊\n    export declare function callbackReturnPromise<T>(functionInput: () => T | Promise<T>, callback: (err: Error | null, result: T) => void): T | Promise<T>␊\n    ␊\n    export declare function callThreadsafeFunction(callback: (...args: any[]) => any): void␊\n    ␊\n    export declare function captureErrorInCallback(cb1: () => void, cb2: (arg0: Error) => void): void␊\n    ␊\n    export declare function chronoDateAdd1Minute(input: Date): Date␊\n    ␊\n    export declare function chronoDateToMillis(input: Date): number␊\n    ␊\n    export declare function concatLatin1(s: string): string␊\n    ␊\n    export declare function concatStr(s: string): string␊\n    ␊\n    export declare function concatUtf16(s: string): string␊\n    ␊\n    export declare function contains(source: string, target: string): boolean␊\n    ␊\n    export declare function convertU32Array(input: Uint32Array): Array<number>␊\n    ␊\n    export declare function createBigInt(): bigint␊\n    ␊\n    export declare function createBigIntI64(): bigint␊\n    ␊\n    export declare function createExternal(size: number): ExternalObject<number>␊\n    ␊\n    export declare function createExternalString(content: string): ExternalObject<string>␊\n    ␊\n    export declare function createExternalTypedArray(): Uint32Array␊\n    ␊\n    export declare function createObj(): object␊\n    ␊\n    export declare function createObjectWithClassField(): ObjectFieldClassInstance␊\n    ␊\n    export declare function createObjWithProperty(): { value: ArrayBuffer, get getter(): number }␊\n    ␊\n    export declare function createSymbol(): symbol␊\n    ␊\n    /** You could break the step and for an new continuous value. */␊\n    export declare const enum CustomNumEnum {␊\n      One = 1,␊\n      Two = 2,␊\n      Three = 3,␊\n      Four = 4,␊\n      Six = 6,␊\n      Eight = 8,␊\n      Nine = 9,␊\n      Ten = 10␊\n    }␊\n    ␊\n    export declare function customStatusCode(): void␊\n    ␊\n    export interface Dates {␊\n      start: Date␊\n      end?: Date␊\n    }␊\n    ␊\n    export declare function dateToNumber(input: Date): number␊\n    ␊\n    /** This is a const */␊\n    export const DEFAULT_COST: number␊\n    ␊\n    export declare function derefUint8Array(a: Uint8Array, b: Uint8ClampedArray): number␊\n    ␊\n    export declare function either3(input: string | number | boolean): number␊\n    ␊\n    export declare function either4(input: string | number | boolean | Obj): number␊\n    ␊\n    export declare function eitherBoolOrFunction(input: boolean | ((...args: any[]) => any)): void␊\n    ␊\n    export declare function eitherFromObjects(input: A | B | C): string␊\n    ␊\n    export declare function eitherFromOption(): JsClassForEither | undefined␊\n    ␊\n    export declare function eitherStringOrNumber(input: string | number): number␊\n    ␊\n    export declare const enum Empty {␊\n    ␊\n    }␊\n    ␊\n    export declare function enumToI32(e: CustomNumEnum): number␊\n    ␊\n    export declare function fibonacci(n: number): number␊\n    ␊\n    export declare function fnReceivedAliased(s: AliasedStruct, e: ALIAS): void␊\n    ␊\n    export declare function getBuffer(): Buffer␊\n    ␊\n    export declare function getCwd(callback: (arg0: string) => void): void␊\n    ␊\n    export declare function getEmptyBuffer(): Buffer␊\n    ␊\n    export declare function getExternal(external: ExternalObject<number>): number␊\n    ␊\n    export declare function getGlobal(): typeof global␊\n    ␊\n    export declare function getMapping(): Record<string, number>␊\n    ␊\n    export declare function getNestedNumArr(): number[][][]␊\n    ␊\n    export declare function getNull(): null␊\n    ␊\n    export declare function getNumArr(): number[]␊\n    ␊\n    /** Gets some numbers */␊\n    export declare function getNums(): Array<number>␊\n    ␊\n    export declare function getPackageJsonName(packageJson: PackageJson): string␊\n    ␊\n    export declare function getStrFromObject(): void␊\n    ␊\n    export declare function getterFromObj(): number␊\n    ␊\n    export declare function getUndefined(): void␊\n    ␊\n    export declare function getWords(): Array<string>␊\n    ␊\n    /** default enum values are continuos i32s start from 0 */␊\n    export declare const enum Kind {␊\n      /** Barks */␊\n      Dog = 0,␊\n      /** Kills birds */␊\n      Cat = 1,␊\n      /** Tasty */␊\n      Duck = 2␊\n    }␊\n    ␊\n    export declare function listObjKeys(obj: object): Array<string>␊\n    ␊\n    export declare function mapOption(val?: number | undefined | null): number | null␊\n    ␊\n    export declare function mutateExternal(external: ExternalObject<number>, newVal: number): void␊\n    ␊\n    export declare function mutateTypedArray(input: Float32Array): void␊\n    ␊\n    export interface Obj {␊\n      v: string | number␊\n    }␊\n    ␊\n    export interface ObjectFieldClassInstance {␊\n      bird: Bird␊\n    }␊\n    ␊\n    export interface ObjectOnlyFromJs {␊\n      count: number␊\n      callback: (err: Error | null, value: number) => any␊\n    }␊\n    ␊\n    export declare function optionEnd(callback: (arg0: string, arg1?: string | undefined | null) => void): void␊\n    ␊\n    export declare function optionOnly(callback: (arg0?: string | undefined | null) => void): void␊\n    ␊\n    export declare function optionStart(callback: (arg0: string | undefined | null, arg1: string) => void): void␊\n    ␊\n    export declare function optionStartEnd(callback: (arg0: string | undefined | null, arg1: string, arg2?: string | undefined | null) => void): void␊\n    ␊\n    export declare function overrideIndividualArgOnFunction(notOverridden: string, f: () => string, notOverridden2: number): string␊\n    ␊\n    export declare function overrideIndividualArgOnFunctionWithCbArg(callback: (town: string, name?: string | undefined | null) => string, notOverridden: number): object␊\n    ␊\n    /** This is an interface for package.json */␊\n    export interface PackageJson {␊\n      name: string␊\n      /** The version of the package */␊\n      version: string␊\n      dependencies?: Record<string, any>␊\n      devDependencies?: Record<string, any>␊\n    }␊\n    ␊\n    export declare function panic(): void␊\n    ␊\n    export declare function plusOne(this: Width): number␊\n    ␊\n    export declare function promiseInEither(input: number | Promise<number>): Promise<boolean>␊\n    ␊\n    /** napi = { version = 2, features = [\"serde-json\"] } */␊\n    export declare function readFile(callback: (arg0: Error | undefined, arg1?: string | undefined | null) => void): void␊\n    ␊\n    export declare function readFileAsync(path: string): Promise<Buffer>␊\n    ␊\n    export declare function readPackageJson(): PackageJson␊\n    ␊\n    export declare function receiveAllOptionalObject(obj?: AllOptionalObject | undefined | null): void␊\n    ␊\n    export declare function receiveClassOrNumber(either: number | JsClassForEither): number␊\n    ␊\n    export declare function receiveDifferentClass(either: JsClassForEither | AnotherClassForEither): number␊\n    ␊\n    export declare function receiveMutClassOrNumber(either: number | JsClassForEither): number␊\n    ␊\n    export declare function receiveObjectOnlyFromJs(obj: { count: number, callback: (err: Error | null, count: number) => void }): void␊\n    ␊\n    export declare function receiveObjectWithClassField(object: ObjectFieldClassInstance): Bird␊\n    ␊\n    export declare function receiveStrictObject(strictObject: StrictObject): void␊\n    ␊\n    export declare function receiveString(s: string): string␊\n    ␊\n    export declare function returnEither(input: number): string | number␊\n    ␊\n    export declare function returnEitherClass(input: number): number | JsClassForEither␊\n    ␊\n    export declare function returnJsFunction(): (...args: any[]) => any␊\n    ␊\n    export declare function returnNull(): null␊\n    ␊\n    export declare function returnUndefined(): void␊\n    ␊\n    export declare function returnUndefinedIfInvalid(input: boolean): boolean␊\n    ␊\n    export declare function returnUndefinedIfInvalidPromise(input: Promise<boolean>): Promise<boolean>␊\n    ␊\n    export declare function roundtripStr(s: string): string␊\n    ␊\n    export declare function runScript(script: string): unknown␊\n    ␊\n    export declare function setSymbolInObj(symbol: symbol): object␊\n    ␊\n    export interface StrictObject {␊\n      name: string␊\n    }␊\n    ␊\n    export declare function sumMapping(nums: Record<string, number>): number␊\n    ␊\n    export declare function sumNums(nums: Array<number>): number␊\n    ␊\n    export declare function testSerdeRoundtrip(data: any): any␊\n    ␊\n    export declare function threadsafeFunctionClosureCapture(func: (...args: any[]) => any): void␊\n    ␊\n    export declare function threadsafeFunctionFatalMode(cb: (...args: any[]) => any): void␊\n    ␊\n    export declare function threadsafeFunctionFatalModeError(cb: (...args: any[]) => any): void␊\n    ␊\n    export declare function threadsafeFunctionThrowError(cb: (...args: any[]) => any): void␊\n    ␊\n    export declare function throwError(): void␊\n    ␊\n    export declare function toJsObj(): object␊\n    ␊\n    export declare function tsfnAsyncCall(func: (...args: any[]) => any): Promise<void>␊\n    ␊\n    export declare function tsfnCallWithCallback(func: (...args: any[]) => any): void␊\n    ␊\n    export declare function tsRename(a: { foo: number }): string[]␊\n    ␊\n    export interface TsTypeChanged {␊\n      typeOverride: object␊\n      typeOverrideOptional?: object␊\n    }␊\n    ␊\n    export declare function validateArray(arr: Array<number>): number␊\n    ␊\n    export declare function validateBigint(input: bigint): bigint␊\n    ␊\n    export declare function validateBoolean(i: boolean): boolean␊\n    ␊\n    export declare function validateBuffer(b: Buffer): number␊\n    ␊\n    export declare function validateDate(d: Date): number␊\n    ␊\n    export declare function validateDateTime(d: Date): number␊\n    ␊\n    export declare function validateExternal(e: ExternalObject<number>): number␊\n    ␊\n    export declare function validateFunction(cb: () => number): number␊\n    ␊\n    export declare function validateHashMap(input: Record<string, number>): number␊\n    ␊\n    export declare function validateNull(i: null): boolean␊\n    ␊\n    export declare function validateNumber(i: number): number␊\n    ␊\n    export declare function validateOptional(input1?: string | undefined | null, input2?: boolean | undefined | null): boolean␊\n    ␊\n    export declare function validatePromise(p: Promise<number>): Promise<number>␊\n    ␊\n    export declare function validateString(s: string): string␊\n    ␊\n    export declare function validateSymbol(s: symbol): boolean␊\n    ␊\n    export declare function validateTypedArray(input: Uint8Array): number␊\n    ␊\n    export declare function validateUndefined(i: undefined): boolean␊\n    ␊\n    export declare function withAbortController(a: number, b: number, signal: AbortSignal): Promise<number>␊\n    ␊\n    export declare function withoutAbortController(a: number, b: number): Promise<number>␊\n    ␊\n    export declare function xxh64Alias(input: Buffer): bigint␊\n    ␊\n    export declare namespace xxh2 {␊\n      export function xxh2Plus(a: number, b: number): number␊\n      export function xxh3Xxh64Alias(input: Buffer): bigint␊\n    }␊\n    ␊\n    export declare namespace xxh3 {␊\n      /** Xxh3 class */␊\n      export class Xxh3 {␊\n        constructor()␊\n        /** update */␊\n        update(input: Buffer): void␊\n        digest(): bigint␊\n      }␊\n      export const ALIGNMENT: number␊\n      /** xxh128 function */␊\n      export function xxh128(input: Buffer): bigint␊\n      export function xxh3_64(input: Buffer): bigint␊\n    }␊\n    `\n\n## should process type def with noConstEnum correctly\n\n> Snapshot 1\n\n    `/**␊\n     * \\`constructor\\` option for \\`struct\\` requires all fields to be public,␊\n     * otherwise tag impl fn as constructor␊\n     * #[napi(constructor)]␊\n     */␊\n    export declare class Animal {␊\n      /** Kind of animal */␊\n      readonly kind: Kind␊\n      /** This is the constructor */␊\n      constructor(kind: Kind, name: string)␊\n      /** This is a factory method */␊\n      static withKind(kind: Kind): Animal␊\n      get name(): string␊\n      set name(name: string)␊\n      get type(): Kind␊\n      set type(kind: Kind)␊\n      /**␊\n       * This is a␊\n       * multi-line comment␊\n       * with an emoji 🚀␊\n       */␊\n      whoami(): string␊\n      /** This is static... */␊\n      static getDogKind(): Kind␊\n      /**␊\n       * Here are some characters and character sequences␊\n       * that should be escaped correctly:␊\n       * \\\\[]{}/\\\\:\"\"{␊\n       * }␊\n       */␊\n      returnOtherClass(): Dog␊\n      returnOtherClassWithCustomConstructor(): Bird␊\n      overrideIndividualArgOnMethod(normalTy: string, overriddenTy: {n: string}): Bird␊\n    }␊\n    ␊\n    export declare class AnimalWithDefaultConstructor {␊\n      name: string␊\n      kind: number␊\n      constructor(name: string, kind: number)␊\n    }␊\n    ␊\n    export declare class AnotherClassForEither {␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class AnotherCssStyleSheet {␊\n      get rules(): CssRuleList␊\n    }␊\n    export type AnotherCSSStyleSheet = AnotherCssStyleSheet␊\n    ␊\n    export declare class Asset {␊\n      constructor()␊\n      get filePath(): number␊\n    }␊\n    export type JsAsset = Asset␊\n    ␊\n    export declare class Assets {␊\n      constructor()␊\n      get(id: number): JsAsset | null␊\n    }␊\n    export type JsAssets = Assets␊\n    ␊\n    export declare class Bird {␊\n      name: string␊\n      constructor(name: string)␊\n      getCount(): number␊\n      getNameAsync(): Promise<string>␊\n    }␊\n    ␊\n    /** Smoking test for type generation */␊\n    export declare class Blake2BHasher {␊\n      static withKey(key: Blake2bKey): Blake2BHasher␊\n      update(data: Buffer): void␊\n    }␊\n    export type Blake2bHasher = Blake2BHasher␊\n    ␊\n    export declare class Blake2BKey {␊\n    ␊\n    }␊\n    export type Blake2bKey = Blake2BKey␊\n    ␊\n    export declare class ClassWithFactory {␊\n      name: string␊\n      static withName(name: string): ClassWithFactory␊\n      setName(name: string): this␊\n    }␊\n    ␊\n    export declare class Context {␊\n      maybeNeed?: boolean␊\n      buffer: Uint8Array␊\n      constructor()␊\n      static withData(data: string): Context␊\n      static withBuffer(buf: Uint8Array): Context␊\n      method(): string␊\n    }␊\n    ␊\n    export declare class CssRuleList {␊\n      getRules(): Array<string>␊\n      get parentStyleSheet(): CSSStyleSheet␊\n      get name(): string | null␊\n    }␊\n    export type CSSRuleList = CssRuleList␊\n    ␊\n    export declare class CssStyleSheet {␊\n      constructor(name: string, rules: Array<string>)␊\n      get rules(): CssRuleList␊\n      anotherCssStyleSheet(): AnotherCssStyleSheet␊\n    }␊\n    export type CSSStyleSheet = CssStyleSheet␊\n    ␊\n    export declare class CustomFinalize {␊\n      constructor(width: number, height: number)␊\n    }␊\n    ␊\n    export declare class Dog {␊\n      name: string␊\n      constructor(name: string)␊\n    }␊\n    ␊\n    export declare class Fib {␊\n      [Symbol.iterator](): Iterator<number, void, number>␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class Fib2 {␊\n      [Symbol.iterator](): Iterator<number, void, number>␊\n      static create(seed: number): Fib2␊\n    }␊\n    ␊\n    export declare class Fib3 {␊\n      current: number␊\n      next: number␊\n      constructor(current: number, next: number)␊\n      [Symbol.iterator](): Iterator<number, void, number>␊\n    }␊\n    ␊\n    export declare class JsClassForEither {␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class JsRemote {␊\n      name(): string␊\n    }␊\n    ␊\n    export declare class JsRepo {␊\n      constructor(dir: string)␊\n      remote(): JsRemote␊\n    }␊\n    ␊\n    export declare class NinjaTurtle {␊\n      name: string␊\n      static isInstanceOf(value: unknown): boolean␊\n      /** Create your ninja turtle! 🐢 */␊\n      static newRaph(): NinjaTurtle␊\n      getMaskColor(): string␊\n      getName(): string␊\n      returnThis(this: this): this␊\n    }␊\n    ␊\n    export declare class NotWritableClass {␊\n      name: string␊\n      constructor(name: string)␊\n      setName(name: string): void␊\n    }␊\n    ␊\n    export declare class Optional {␊\n      static optionEnd(required: string, optional?: string | undefined | null): string␊\n      static optionStart(optional: string | undefined | null, required: string): string␊\n      static optionStartEnd(optional1: string | undefined | null, required: string, optional2?: string | undefined | null): string␊\n      static optionOnly(optional?: string | undefined | null): string␊\n    }␊\n    ␊\n    export declare class Width {␊\n      value: number␊\n      constructor(value: number)␊\n    }␊\n    ␊\n    export interface A {␊\n      foo: number␊\n    }␊\n    ␊\n    export declare function acceptThreadsafeFunction(func: (err: Error | null, value: number) => any): void␊\n    ␊\n    export declare function acceptThreadsafeFunctionFatal(func: (value: number) => any): void␊\n    ␊\n    export declare function acceptThreadsafeFunctionTupleArgs(func: (err: Error | null, arg0: number, arg1: boolean, arg2: string) => any): void␊\n    ␊\n    export declare function add(a: number, b: number): number␊\n    ␊\n    export declare enum ALIAS {␊\n      A = 0,␊\n      B = 1␊\n    }␊\n    ␊\n    export interface AliasedStruct {␊\n      a: ALIAS␊\n      b: number␊\n    }␊\n    ␊\n    export interface AllOptionalObject {␊\n      name?: string␊\n      age?: number␊\n    }␊\n    ␊\n    export declare function appendBuffer(buf: Buffer): Buffer␊\n    ␊\n    export declare function arrayBufferPassThrough(buf: Uint8Array): Promise<Uint8Array>␊\n    ␊\n    export declare function asyncMultiTwo(arg: number): Promise<number>␊\n    ␊\n    export declare function asyncPlus100(p: Promise<number>): Promise<number>␊\n    ␊\n    export declare function asyncReduceBuffer(buf: Buffer): Promise<number>␊\n    ␊\n    export interface B {␊\n      bar: number␊\n    }␊\n    ␊\n    export declare function bigintAdd(a: bigint, b: bigint): bigint␊\n    ␊\n    export declare function bigintFromI128(): bigint␊\n    ␊\n    export declare function bigintFromI64(): bigint␊\n    ␊\n    export declare function bigintGetU64AsString(bi: bigint): string␊\n    ␊\n    export declare function bufferPassThrough(buf: Buffer): Promise<Buffer>␊\n    ␊\n    export interface C {␊\n      baz: number␊\n    }␊\n    ␊\n    export declare function callbackReturnPromise<T>(functionInput: () => T | Promise<T>, callback: (err: Error | null, result: T) => void): T | Promise<T>␊\n    ␊\n    export declare function callThreadsafeFunction(callback: (...args: any[]) => any): void␊\n    ␊\n    export declare function captureErrorInCallback(cb1: () => void, cb2: (arg0: Error) => void): void␊\n    ␊\n    export declare function chronoDateAdd1Minute(input: Date): Date␊\n    ␊\n    export declare function chronoDateToMillis(input: Date): number␊\n    ␊\n    export declare function concatLatin1(s: string): string␊\n    ␊\n    export declare function concatStr(s: string): string␊\n    ␊\n    export declare function concatUtf16(s: string): string␊\n    ␊\n    export declare function contains(source: string, target: string): boolean␊\n    ␊\n    export declare function convertU32Array(input: Uint32Array): Array<number>␊\n    ␊\n    export declare function createBigInt(): bigint␊\n    ␊\n    export declare function createBigIntI64(): bigint␊\n    ␊\n    export declare function createExternal(size: number): ExternalObject<number>␊\n    ␊\n    export declare function createExternalString(content: string): ExternalObject<string>␊\n    ␊\n    export declare function createExternalTypedArray(): Uint32Array␊\n    ␊\n    export declare function createObj(): object␊\n    ␊\n    export declare function createObjectWithClassField(): ObjectFieldClassInstance␊\n    ␊\n    export declare function createObjWithProperty(): { value: ArrayBuffer, get getter(): number }␊\n    ␊\n    export declare function createSymbol(): symbol␊\n    ␊\n    /** You could break the step and for an new continuous value. */␊\n    export declare enum CustomNumEnum {␊\n      One = 1,␊\n      Two = 2,␊\n      Three = 3,␊\n      Four = 4,␊\n      Six = 6,␊\n      Eight = 8,␊\n      Nine = 9,␊\n      Ten = 10␊\n    }␊\n    ␊\n    export declare function customStatusCode(): void␊\n    ␊\n    export interface Dates {␊\n      start: Date␊\n      end?: Date␊\n    }␊\n    ␊\n    export declare function dateToNumber(input: Date): number␊\n    ␊\n    /** This is a const */␊\n    export const DEFAULT_COST: number␊\n    ␊\n    export declare function derefUint8Array(a: Uint8Array, b: Uint8ClampedArray): number␊\n    ␊\n    export declare function either3(input: string | number | boolean): number␊\n    ␊\n    export declare function either4(input: string | number | boolean | Obj): number␊\n    ␊\n    export declare function eitherBoolOrFunction(input: boolean | ((...args: any[]) => any)): void␊\n    ␊\n    export declare function eitherFromObjects(input: A | B | C): string␊\n    ␊\n    export declare function eitherFromOption(): JsClassForEither | undefined␊\n    ␊\n    export declare function eitherStringOrNumber(input: string | number): number␊\n    ␊\n    export declare enum Empty {␊\n    ␊\n    }␊\n    ␊\n    export declare function enumToI32(e: CustomNumEnum): number␊\n    ␊\n    export declare function fibonacci(n: number): number␊\n    ␊\n    export declare function fnReceivedAliased(s: AliasedStruct, e: ALIAS): void␊\n    ␊\n    export declare function getBuffer(): Buffer␊\n    ␊\n    export declare function getCwd(callback: (arg0: string) => void): void␊\n    ␊\n    export declare function getEmptyBuffer(): Buffer␊\n    ␊\n    export declare function getExternal(external: ExternalObject<number>): number␊\n    ␊\n    export declare function getGlobal(): typeof global␊\n    ␊\n    export declare function getMapping(): Record<string, number>␊\n    ␊\n    export declare function getNestedNumArr(): number[][][]␊\n    ␊\n    export declare function getNull(): null␊\n    ␊\n    export declare function getNumArr(): number[]␊\n    ␊\n    /** Gets some numbers */␊\n    export declare function getNums(): Array<number>␊\n    ␊\n    export declare function getPackageJsonName(packageJson: PackageJson): string␊\n    ␊\n    export declare function getStrFromObject(): void␊\n    ␊\n    export declare function getterFromObj(): number␊\n    ␊\n    export declare function getUndefined(): void␊\n    ␊\n    export declare function getWords(): Array<string>␊\n    ␊\n    /** default enum values are continuos i32s start from 0 */␊\n    export declare enum Kind {␊\n      /** Barks */␊\n      Dog = 0,␊\n      /** Kills birds */␊\n      Cat = 1,␊\n      /** Tasty */␊\n      Duck = 2␊\n    }␊\n    ␊\n    export declare function listObjKeys(obj: object): Array<string>␊\n    ␊\n    export declare function mapOption(val?: number | undefined | null): number | null␊\n    ␊\n    export declare function mutateExternal(external: ExternalObject<number>, newVal: number): void␊\n    ␊\n    export declare function mutateTypedArray(input: Float32Array): void␊\n    ␊\n    export interface Obj {␊\n      v: string | number␊\n    }␊\n    ␊\n    export interface ObjectFieldClassInstance {␊\n      bird: Bird␊\n    }␊\n    ␊\n    export interface ObjectOnlyFromJs {␊\n      count: number␊\n      callback: (err: Error | null, value: number) => any␊\n    }␊\n    ␊\n    export declare function optionEnd(callback: (arg0: string, arg1?: string | undefined | null) => void): void␊\n    ␊\n    export declare function optionOnly(callback: (arg0?: string | undefined | null) => void): void␊\n    ␊\n    export declare function optionStart(callback: (arg0: string | undefined | null, arg1: string) => void): void␊\n    ␊\n    export declare function optionStartEnd(callback: (arg0: string | undefined | null, arg1: string, arg2?: string | undefined | null) => void): void␊\n    ␊\n    export declare function overrideIndividualArgOnFunction(notOverridden: string, f: () => string, notOverridden2: number): string␊\n    ␊\n    export declare function overrideIndividualArgOnFunctionWithCbArg(callback: (town: string, name?: string | undefined | null) => string, notOverridden: number): object␊\n    ␊\n    /** This is an interface for package.json */␊\n    export interface PackageJson {␊\n      name: string␊\n      /** The version of the package */␊\n      version: string␊\n      dependencies?: Record<string, any>␊\n      devDependencies?: Record<string, any>␊\n    }␊\n    ␊\n    export declare function panic(): void␊\n    ␊\n    export declare function plusOne(this: Width): number␊\n    ␊\n    export declare function promiseInEither(input: number | Promise<number>): Promise<boolean>␊\n    ␊\n    /** napi = { version = 2, features = [\"serde-json\"] } */␊\n    export declare function readFile(callback: (arg0: Error | undefined, arg1?: string | undefined | null) => void): void␊\n    ␊\n    export declare function readFileAsync(path: string): Promise<Buffer>␊\n    ␊\n    export declare function readPackageJson(): PackageJson␊\n    ␊\n    export declare function receiveAllOptionalObject(obj?: AllOptionalObject | undefined | null): void␊\n    ␊\n    export declare function receiveClassOrNumber(either: number | JsClassForEither): number␊\n    ␊\n    export declare function receiveDifferentClass(either: JsClassForEither | AnotherClassForEither): number␊\n    ␊\n    export declare function receiveMutClassOrNumber(either: number | JsClassForEither): number␊\n    ␊\n    export declare function receiveObjectOnlyFromJs(obj: { count: number, callback: (err: Error | null, count: number) => void }): void␊\n    ␊\n    export declare function receiveObjectWithClassField(object: ObjectFieldClassInstance): Bird␊\n    ␊\n    export declare function receiveStrictObject(strictObject: StrictObject): void␊\n    ␊\n    export declare function receiveString(s: string): string␊\n    ␊\n    export declare function returnEither(input: number): string | number␊\n    ␊\n    export declare function returnEitherClass(input: number): number | JsClassForEither␊\n    ␊\n    export declare function returnJsFunction(): (...args: any[]) => any␊\n    ␊\n    export declare function returnNull(): null␊\n    ␊\n    export declare function returnUndefined(): void␊\n    ␊\n    export declare function returnUndefinedIfInvalid(input: boolean): boolean␊\n    ␊\n    export declare function returnUndefinedIfInvalidPromise(input: Promise<boolean>): Promise<boolean>␊\n    ␊\n    export declare function roundtripStr(s: string): string␊\n    ␊\n    export declare function runScript(script: string): unknown␊\n    ␊\n    export declare function setSymbolInObj(symbol: symbol): object␊\n    ␊\n    export interface StrictObject {␊\n      name: string␊\n    }␊\n    ␊\n    export declare function sumMapping(nums: Record<string, number>): number␊\n    ␊\n    export declare function sumNums(nums: Array<number>): number␊\n    ␊\n    export declare function testSerdeRoundtrip(data: any): any␊\n    ␊\n    export declare function threadsafeFunctionClosureCapture(func: (...args: any[]) => any): void␊\n    ␊\n    export declare function threadsafeFunctionFatalMode(cb: (...args: any[]) => any): void␊\n    ␊\n    export declare function threadsafeFunctionFatalModeError(cb: (...args: any[]) => any): void␊\n    ␊\n    export declare function threadsafeFunctionThrowError(cb: (...args: any[]) => any): void␊\n    ␊\n    export declare function throwError(): void␊\n    ␊\n    export declare function toJsObj(): object␊\n    ␊\n    export declare function tsfnAsyncCall(func: (...args: any[]) => any): Promise<void>␊\n    ␊\n    export declare function tsfnCallWithCallback(func: (...args: any[]) => any): void␊\n    ␊\n    export declare function tsRename(a: { foo: number }): string[]␊\n    ␊\n    export interface TsTypeChanged {␊\n      typeOverride: object␊\n      typeOverrideOptional?: object␊\n    }␊\n    ␊\n    export declare function validateArray(arr: Array<number>): number␊\n    ␊\n    export declare function validateBigint(input: bigint): bigint␊\n    ␊\n    export declare function validateBoolean(i: boolean): boolean␊\n    ␊\n    export declare function validateBuffer(b: Buffer): number␊\n    ␊\n    export declare function validateDate(d: Date): number␊\n    ␊\n    export declare function validateDateTime(d: Date): number␊\n    ␊\n    export declare function validateExternal(e: ExternalObject<number>): number␊\n    ␊\n    export declare function validateFunction(cb: () => number): number␊\n    ␊\n    export declare function validateHashMap(input: Record<string, number>): number␊\n    ␊\n    export declare function validateNull(i: null): boolean␊\n    ␊\n    export declare function validateNumber(i: number): number␊\n    ␊\n    export declare function validateOptional(input1?: string | undefined | null, input2?: boolean | undefined | null): boolean␊\n    ␊\n    export declare function validatePromise(p: Promise<number>): Promise<number>␊\n    ␊\n    export declare function validateString(s: string): string␊\n    ␊\n    export declare function validateSymbol(s: symbol): boolean␊\n    ␊\n    export declare function validateTypedArray(input: Uint8Array): number␊\n    ␊\n    export declare function validateUndefined(i: undefined): boolean␊\n    ␊\n    export declare function withAbortController(a: number, b: number, signal: AbortSignal): Promise<number>␊\n    ␊\n    export declare function withoutAbortController(a: number, b: number): Promise<number>␊\n    ␊\n    export declare function xxh64Alias(input: Buffer): bigint␊\n    ␊\n    export declare namespace xxh2 {␊\n      export function xxh2Plus(a: number, b: number): number␊\n      export function xxh3Xxh64Alias(input: Buffer): bigint␊\n    }␊\n    ␊\n    export declare namespace xxh3 {␊\n      /** Xxh3 class */␊\n      export class Xxh3 {␊\n        constructor()␊\n        /** update */␊\n        update(input: Buffer): void␊\n        digest(): bigint␊\n      }␊\n      export const ALIGNMENT: number␊\n      /** xxh128 function */␊\n      export function xxh128(input: Buffer): bigint␊\n      export function xxh3_64(input: Buffer): bigint␊\n    }␊\n    `\n"
  },
  {
    "path": "cli/src/utils/__tests__/__snapshots__/version.spec.ts.md",
    "content": "# Snapshot report for `src/utils/__tests__/version.spec.ts`\n\nThe actual snapshot is saved in `version.spec.ts.snap`.\n\nGenerated by [AVA](https://avajs.dev).\n\n## should generate correct napi engine requirement\n\n> Snapshot 1\n\n    [\n      '>= 8.6.0 < 9 || >= 9.0.0 < 10 || >= 10.0.0',\n      '>= 8.10.0 < 9 || >= 9.3.0 < 10 || >= 10.0.0',\n      '>= 6.14.2 < 7 || >= 8.11.2 < 9 || >= 9.11.0 < 10 || >= 10.0.0',\n      '>= 10.16.0 < 11 || >= 11.8.0 < 12 || >= 12.0.0',\n      '>= 10.17.0 < 11 || >= 12.11.0 < 13 || >= 13.0.0',\n      '>= 10.20.0 < 11 || >= 12.17.0 < 13 || >= 14.0.0',\n      '>= 10.23.0 < 11 || >= 12.19.0 < 13 || >= 14.12.0 < 15 || >= 15.0.0',\n      '>= 12.22.0 < 13 || >= 14.17.0 < 15 || >= 15.12.0 < 16 || >= 16.0.0',\n      '>= 18.17.0 < 19 || >= 20.3.0 < 21 || >= 21.1.0',\n    ]\n"
  },
  {
    "path": "cli/src/utils/__tests__/config.spec.ts",
    "content": "import { unlink, writeFile } from 'node:fs/promises'\nimport { tmpdir } from 'node:os'\nimport { join } from 'node:path'\n\nimport ava, { type TestFn } from 'ava'\n\nimport {\n  type CommonPackageJsonFields,\n  type UserNapiConfig,\n  readNapiConfig,\n} from '../config.js'\n\nconst NON_EXISTENT_FILE = 'non-existent-file'\n\nconst test = ava as TestFn<{\n  configPath: string\n  packageJson: string\n  pkgJson: CommonPackageJsonFields\n  config: UserNapiConfig\n}>\n\ntest.before(async (t) => {\n  const tmp = tmpdir()\n  const configPath = join(tmp, 'napi.json')\n  const packageJson = join(tmp, 'package.json')\n  const pkgJson = {\n    name: '@napi-rs/testing',\n    version: '0.0.0',\n    napi: {\n      binaryName: 'testing',\n      packageName: '@napi-rs/testing',\n      targets: [\n        'x86_64-unknown-linux-gnu',\n        'x86_64-pc-windows-msvc',\n        'x86_64-apple-darwin',\n      ],\n    },\n  }\n  await writeFile(packageJson, JSON.stringify(pkgJson, null, 2))\n  const config = {\n    binaryName: 'testing',\n    packageName: '@node-rs/testing',\n    targets: [\n      'x86_64-unknown-linux-gnu',\n      'x86_64-apple-darwin',\n      'aarch64-apple-darwin',\n    ],\n  }\n  await writeFile(configPath, JSON.stringify(config, null, 2))\n  t.context = { configPath, config, packageJson, pkgJson }\n})\n\ntest.after(async (t) => {\n  await unlink(t.context.configPath)\n  await unlink(t.context.packageJson)\n})\n\ntest('should throw if package.json not found', async (t) => {\n  await t.throwsAsync(() => readNapiConfig(NON_EXISTENT_FILE), {\n    message: `package.json not found at ${NON_EXISTENT_FILE}`,\n  })\n})\n\ntest('should throw if napi.json not found', async (t) => {\n  const { packageJson } = t.context\n  await t.throwsAsync(() => readNapiConfig(packageJson, NON_EXISTENT_FILE), {\n    message: `NAPI-RS config not found at ${NON_EXISTENT_FILE}`,\n  })\n})\n\ntest('should be able to read config from package.json', async (t) => {\n  const { packageJson } = t.context\n  const config = await readNapiConfig(packageJson)\n  t.snapshot(config)\n})\n\ntest('should be able to read config from napi.json', async (t) => {\n  const { packageJson, configPath } = t.context\n  const config = await readNapiConfig(packageJson, configPath)\n  t.snapshot(config)\n})\n"
  },
  {
    "path": "cli/src/utils/__tests__/target.spec.ts",
    "content": "import os from 'os'\n\nimport test from 'ava'\n\nimport {\n  parseTriple,\n  getSystemDefaultTarget,\n  AVAILABLE_TARGETS,\n} from '../target.js'\n\ntest('should parse triple correctly', (t) => {\n  t.snapshot(AVAILABLE_TARGETS.map(parseTriple))\n})\n\ntest('should get system default target correctly', (t) => {\n  const target = getSystemDefaultTarget()\n\n  t.is(target.platform, os.platform())\n})\n"
  },
  {
    "path": "cli/src/utils/__tests__/typegen.spec.ts",
    "content": "import { join } from 'path'\nimport { fileURLToPath } from 'url'\n\nimport test from 'ava'\n\nimport { correctStringIdent, processTypeDef } from '../typegen.js'\n\ntest('should ident string correctly', (t) => {\n  const input = `\n  /**\n   * should keep\n   * class A {\n   * foo = () => {}\n   *   bar = () => {}\n   * }\n   */\n  class A {\n    foo() {\n      a = b\n    }\n\n  bar = () => {\n\n  }\n      boz = 1\n    }\n\n  namespace B {\n      namespace C {\n  type D = A\n      }\n  }\n`\n  t.snapshot(correctStringIdent(input, 0), 'original ident is 0')\n  t.snapshot(correctStringIdent(input, 2), 'original ident is 2')\n})\n\ntest('should process type def correctly', async (t) => {\n  const { dts } = await processTypeDef(\n    join(\n      fileURLToPath(import.meta.url),\n      '../',\n      '__fixtures__',\n      'napi_type_def',\n    ),\n    true,\n  )\n\n  t.snapshot(dts)\n})\n\ntest('should process type def with noConstEnum correctly', async (t) => {\n  const { dts } = await processTypeDef(\n    join(\n      fileURLToPath(import.meta.url),\n      '../',\n      '__fixtures__',\n      'napi_type_def',\n    ),\n    false,\n  )\n\n  t.snapshot(dts)\n})\n"
  },
  {
    "path": "cli/src/utils/__tests__/version.spec.ts",
    "content": "import test from 'ava'\n\nimport { napiEngineRequirement, NapiVersion } from '../version.js'\n\ntest('should generate correct napi engine requirement', (t) => {\n  t.snapshot(\n    (\n      Object.values(NapiVersion).filter(\n        (v) => typeof v === 'number',\n      ) as NapiVersion[]\n    ).map(napiEngineRequirement),\n  )\n})\n"
  },
  {
    "path": "cli/src/utils/cargo.ts",
    "content": "import { execSync } from 'node:child_process'\n\nimport { debug } from './log.js'\n\nexport function tryInstallCargoBinary(name: string, bin: string) {\n  if (detectCargoBinary(bin)) {\n    debug('Cargo binary already installed: %s', name)\n    return\n  }\n\n  try {\n    debug('Installing cargo binary: %s', name)\n    execSync(`cargo install ${name}`, {\n      stdio: 'inherit',\n    })\n  } catch (e) {\n    throw new Error(`Failed to install cargo binary: ${name}`, {\n      cause: e,\n    })\n  }\n}\n\nfunction detectCargoBinary(bin: string) {\n  debug('Detecting cargo binary: %s', bin)\n  try {\n    execSync(`cargo help ${bin}`, {\n      stdio: 'ignore',\n    })\n    debug('Cargo binary detected: %s', bin)\n    return true\n  } catch {\n    debug('Cargo binary not detected: %s', bin)\n    return false\n  }\n}\n"
  },
  {
    "path": "cli/src/utils/config.ts",
    "content": "import { underline, yellow } from 'colorette'\nimport { merge, omit } from 'es-toolkit'\n\nimport { fileExists, readFileAsync } from './misc.js'\nimport { DEFAULT_TARGETS, parseTriple, type Target } from './target.js'\n\nexport type ValueOfConstArray<T> = T[Exclude<keyof T, keyof Array<any>>]\n\nexport const SupportedPackageManagers = ['yarn', 'pnpm'] as const\nexport const SupportedTestFrameworks = ['ava'] as const\n\nexport type SupportedPackageManager = ValueOfConstArray<\n  typeof SupportedPackageManagers\n>\nexport type SupportedTestFramework = ValueOfConstArray<\n  typeof SupportedTestFrameworks\n>\n\nexport interface UserNapiConfig {\n  /**\n   * Name of the binary to be generated, default to `index`\n   */\n  binaryName?: string\n  /**\n   * Name of the npm package, default to the name of root package.json name\n   *\n   * Always given `@scope/pkg` and arch suffix will be appended like `@scope/pkg-linux-gnu-x64`\n   */\n  packageName?: string\n  /**\n   * All targets the crate will be compiled for\n   */\n  targets?: string[]\n\n  /**\n   * The npm client project uses.\n   */\n  npmClient?: string\n\n  /**\n   * Whether generate const enum for typescript bindings\n   */\n  constEnum?: boolean\n\n  /**\n   * dts header prepend to the generated dts file\n   */\n  dtsHeader?: string\n\n  /**\n   * dts header file path to be prepended to the generated dts file\n   * if both dtsHeader and dtsHeaderFile are provided, dtsHeaderFile will be used\n   */\n  dtsHeaderFile?: string\n\n  /**\n   * wasm compilation options\n   */\n  wasm?: {\n    /**\n     * https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/Memory\n     * @default 4000 pages (256MiB)\n     */\n    initialMemory?: number\n    /**\n     * @default 65536 pages (4GiB)\n     */\n    maximumMemory?: number\n\n    /**\n     * Browser wasm binding configuration\n     */\n    browser: {\n      /**\n       * Whether to use fs module in browser\n       */\n      fs?: boolean\n      /**\n       * Whether to initialize wasm asynchronously\n       */\n      asyncInit?: boolean\n      /**\n       * Whether to inject `buffer` to emnapi context\n       */\n      buffer?: boolean\n    }\n  }\n\n  /**\n   * @deprecated binaryName instead\n   */\n  name?: string\n  /**\n   * @deprecated use packageName instead\n   */\n  package?: {\n    name?: string\n  }\n  /**\n   * @deprecated use targets instead\n   */\n  triples?: {\n    /**\n     * Whether enable default targets\n     */\n    defaults: boolean\n    /**\n     * Additional targets to be compiled for\n     */\n    additional?: string[]\n  }\n}\n\nexport interface CommonPackageJsonFields {\n  name: string\n  version: string\n  description?: string\n  keywords?: string[]\n  author?: string\n  authors?: string[]\n  license?: string\n  cpu?: string[]\n  os?: string[]\n  libc?: string[]\n  files?: string[]\n  repository?: any\n  homepage?: any\n  engines?: Record<string, string>\n  publishConfig?: any\n  bugs?: any\n  // eslint-disable-next-line no-use-before-define\n  napi?: UserNapiConfig\n  type?: 'module' | 'commonjs'\n  scripts?: Record<string, string>\n\n  // modules\n  main?: string\n  module?: string\n  types?: string\n  browser?: string\n  exports?: any\n\n  dependencies?: Record<string, string>\n  devDependencies?: Record<string, string>\n\n  ava?: {\n    timeout?: string\n  }\n}\n\nexport type NapiConfig = Required<\n  Pick<UserNapiConfig, 'binaryName' | 'packageName' | 'npmClient'>\n> &\n  Pick<UserNapiConfig, 'wasm' | 'dtsHeader' | 'dtsHeaderFile' | 'constEnum'> & {\n    targets: Target[]\n    packageJson: CommonPackageJsonFields\n  }\n\nexport async function readNapiConfig(\n  path: string,\n  configPath?: string,\n): Promise<NapiConfig> {\n  if (configPath && !(await fileExists(configPath))) {\n    throw new Error(`NAPI-RS config not found at ${configPath}`)\n  }\n  if (!(await fileExists(path))) {\n    throw new Error(`package.json not found at ${path}`)\n  }\n  // May support multiple config sources later on.\n  const content = await readFileAsync(path, 'utf8')\n  let pkgJson\n  try {\n    pkgJson = JSON.parse(content) as CommonPackageJsonFields\n  } catch (e) {\n    throw new Error(`Failed to parse package.json at ${path}`, {\n      cause: e,\n    })\n  }\n\n  let separatedConfig: UserNapiConfig | undefined\n  if (configPath) {\n    const configContent = await readFileAsync(configPath, 'utf8')\n    try {\n      separatedConfig = JSON.parse(configContent) as UserNapiConfig\n    } catch (e) {\n      throw new Error(`Failed to parse NAPI-RS config at ${configPath}`, {\n        cause: e,\n      })\n    }\n  }\n\n  const userNapiConfig = pkgJson.napi ?? {}\n  if (pkgJson.napi && separatedConfig) {\n    const pkgJsonPath = underline(path)\n    const configPathUnderline = underline(configPath!)\n    console.warn(\n      yellow(\n        `Both napi field in ${pkgJsonPath} and [NAPI-RS config](${configPathUnderline}) file are found, the NAPI-RS config file will be used.`,\n      ),\n    )\n  }\n  if (separatedConfig) {\n    Object.assign(userNapiConfig, separatedConfig)\n  }\n  const napiConfig: NapiConfig = merge(\n    {\n      binaryName: 'index',\n      packageName: pkgJson.name,\n      targets: [],\n      packageJson: pkgJson,\n      npmClient: 'npm',\n    },\n    omit(userNapiConfig, ['targets']),\n  )\n\n  let targets: string[] = userNapiConfig.targets ?? []\n\n  // compatible with old config\n  if (userNapiConfig?.name) {\n    console.warn(\n      yellow(\n        `[DEPRECATED] napi.name is deprecated, use napi.binaryName instead.`,\n      ),\n    )\n    napiConfig.binaryName = userNapiConfig.name\n  }\n\n  if (!targets.length) {\n    let deprecatedWarned = false\n    const warning = yellow(\n      `[DEPRECATED] napi.triples is deprecated, use napi.targets instead.`,\n    )\n    if (userNapiConfig.triples?.defaults) {\n      deprecatedWarned = true\n      console.warn(warning)\n      targets = targets.concat(DEFAULT_TARGETS)\n    }\n\n    if (userNapiConfig.triples?.additional?.length) {\n      targets = targets.concat(userNapiConfig.triples.additional)\n      if (!deprecatedWarned) {\n        console.warn(warning)\n      }\n    }\n  }\n\n  // find duplicate targets\n  const uniqueTargets = new Set(targets)\n  if (uniqueTargets.size !== targets.length) {\n    const duplicateTarget = targets.find(\n      (target, index) => targets.indexOf(target) !== index,\n    )\n    throw new Error(`Duplicate targets are not allowed: ${duplicateTarget}`)\n  }\n\n  napiConfig.targets = targets.map(parseTriple)\n\n  return napiConfig\n}\n"
  },
  {
    "path": "cli/src/utils/index.ts",
    "content": "export * from './log.js'\nexport * from './misc.js'\nexport * from './target.js'\nexport * from './version.js'\nexport * from './metadata.js'\nexport * from './config.js'\nexport * from './cargo.js'\nexport * from './typegen.js'\nexport * from './read-config.js'\n"
  },
  {
    "path": "cli/src/utils/log.ts",
    "content": "import * as colors from 'colorette'\nimport { createDebug } from 'obug'\n\ndeclare module 'obug' {\n  interface Debugger {\n    info: typeof console.error\n    warn: typeof console.error\n    error: typeof console.error\n  }\n}\n\nexport const debugFactory = (namespace: string) => {\n  const debug = createDebug(`napi:${namespace}`, {\n    formatters: {\n      // debug('%i', 'This is an info')\n      i(v) {\n        return colors.green(v)\n      },\n    },\n  })\n\n  debug.info = (...args: any[]) =>\n    console.error(colors.black(colors.bgGreen(' INFO ')), ...args)\n  debug.warn = (...args: any[]) =>\n    console.error(colors.black(colors.bgYellow(' WARNING ')), ...args)\n  debug.error = (...args: any[]) =>\n    console.error(\n      colors.white(colors.bgRed(' ERROR ')),\n      ...args.map((arg) =>\n        arg instanceof Error ? (arg.stack ?? arg.message) : arg,\n      ),\n    )\n\n  return debug\n}\nexport const debug = debugFactory('utils')\n"
  },
  {
    "path": "cli/src/utils/metadata.ts",
    "content": "import { spawn } from 'node:child_process'\nimport fs from 'node:fs'\n\nexport type CrateTargetKind =\n  | 'bin'\n  | 'example'\n  | 'test'\n  | 'bench'\n  | 'lib'\n  | 'rlib'\n  | 'cdylib'\n  | 'custom-build'\n\nexport interface CrateTarget {\n  name: string\n  kind: CrateTargetKind[]\n  crate_types: CrateTargetKind[]\n}\n\nexport interface Crate {\n  id: string\n  name: string\n  src_path: string\n  version: string\n  edition: string\n  targets: CrateTarget[]\n  features: Record<string, string[]>\n  manifest_path: string\n  dependencies: Array<{\n    name: string\n    source: string\n    req: string\n    kind: string | null\n    rename: string | null\n    optional: boolean\n    uses_default_features: boolean\n    features: string[]\n    target: string | null\n    registry: string | null\n  }>\n}\n\nexport interface CargoWorkspaceMetadata {\n  version: number\n  packages: Crate[]\n  workspace_members: string[]\n  target_directory: string\n  workspace_root: string\n}\n\nexport async function parseMetadata(manifestPath: string) {\n  if (!fs.existsSync(manifestPath)) {\n    throw new Error(`No crate found in manifest: ${manifestPath}`)\n  }\n\n  const childProcess = spawn(\n    'cargo',\n    ['metadata', '--manifest-path', manifestPath, '--format-version', '1'],\n    { stdio: 'pipe' },\n  )\n\n  let stdout = ''\n  let stderr = ''\n  let status = 0\n  let error = null\n\n  childProcess.stdout.on('data', (data) => {\n    stdout += data\n  })\n\n  childProcess.stderr.on('data', (data) => {\n    stderr += data\n  })\n\n  await new Promise<void>((resolve) => {\n    childProcess.on('close', (code) => {\n      status = code ?? 0\n      resolve()\n    })\n  })\n\n  if (error) {\n    throw new Error('cargo metadata failed to run', { cause: error })\n  }\n  if (status !== 0) {\n    const simpleMessage = `cargo metadata exited with code ${status}`\n    throw new Error(`${simpleMessage} and error message:\\n\\n${stderr}`, {\n      cause: new Error(simpleMessage),\n    })\n  }\n\n  try {\n    return JSON.parse(stdout) as CargoWorkspaceMetadata\n  } catch (e) {\n    throw new Error('Failed to parse cargo metadata JSON', { cause: e })\n  }\n}\n"
  },
  {
    "path": "cli/src/utils/misc.ts",
    "content": "import {\n  readFile,\n  writeFile,\n  unlink,\n  copyFile,\n  mkdir,\n  stat,\n  readdir,\n  access,\n} from 'node:fs/promises'\n\nimport pkgJson from '../../package.json' with { type: 'json' }\nimport { debug } from './log.js'\n\nexport const readFileAsync = readFile\nexport const writeFileAsync = writeFile\nexport const unlinkAsync = unlink\nexport const copyFileAsync = copyFile\nexport const mkdirAsync = mkdir\nexport const statAsync = stat\nexport const readdirAsync = readdir\n\nexport function fileExists(path: string): Promise<boolean> {\n  return access(path).then(\n    () => true,\n    () => false,\n  )\n}\n\nexport async function dirExistsAsync(path: string) {\n  try {\n    const stats = await statAsync(path)\n    return stats.isDirectory()\n  } catch {\n    return false\n  }\n}\n\nexport function pick<O, K extends keyof O>(o: O, ...keys: K[]): Pick<O, K> {\n  return keys.reduce((acc, key) => {\n    acc[key] = o[key]\n    return acc\n  }, {} as O)\n}\n\nexport async function updatePackageJson(\n  path: string,\n  partial: Record<string, any>,\n) {\n  const exists = await fileExists(path)\n  if (!exists) {\n    debug(`File not exists ${path}`)\n    return\n  }\n  const old = JSON.parse(await readFileAsync(path, 'utf8'))\n  await writeFileAsync(path, JSON.stringify({ ...old, ...partial }, null, 2))\n}\n\nexport const CLI_VERSION = pkgJson.version\n"
  },
  {
    "path": "cli/src/utils/read-config.ts",
    "content": "import { resolve } from 'node:path'\n\nimport { readNapiConfig } from './config.js'\n\ninterface MinimalNapiOptions {\n  cwd: string\n  configPath?: string\n  packageJsonPath?: string\n}\n\nexport async function readConfig(options: MinimalNapiOptions) {\n  const resolvePath = (...paths: string[]) => resolve(options.cwd, ...paths)\n  const config = await readNapiConfig(\n    resolvePath(options.packageJsonPath ?? 'package.json'),\n    options.configPath ? resolvePath(options.configPath) : undefined,\n  )\n  return config\n}\n"
  },
  {
    "path": "cli/src/utils/target.ts",
    "content": "import { execSync } from 'node:child_process'\n\nexport type Platform = NodeJS.Platform | 'wasm' | 'wasi' | 'openharmony'\n\nexport const UNIVERSAL_TARGETS = {\n  'universal-apple-darwin': ['aarch64-apple-darwin', 'x86_64-apple-darwin'],\n} as const\n\nconst SUB_SYSTEMS = new Set(['android', 'ohos'])\n\nexport const AVAILABLE_TARGETS = [\n  'aarch64-apple-darwin',\n  'aarch64-linux-android',\n  'aarch64-unknown-linux-gnu',\n  'aarch64-unknown-linux-musl',\n  'aarch64-unknown-linux-ohos',\n  'aarch64-pc-windows-msvc',\n  'x86_64-apple-darwin',\n  'x86_64-pc-windows-msvc',\n  'x86_64-pc-windows-gnu',\n  'x86_64-unknown-linux-gnu',\n  'x86_64-unknown-linux-musl',\n  'x86_64-unknown-linux-ohos',\n  'x86_64-unknown-freebsd',\n  'i686-pc-windows-msvc',\n  'armv7-unknown-linux-gnueabihf',\n  'armv7-unknown-linux-musleabihf',\n  'armv7-linux-androideabi',\n  'universal-apple-darwin',\n  'loongarch64-unknown-linux-gnu',\n  'riscv64gc-unknown-linux-gnu',\n  'powerpc64le-unknown-linux-gnu',\n  's390x-unknown-linux-gnu',\n  'wasm32-wasi-preview1-threads',\n  'wasm32-wasip1-threads',\n] as const\n\nexport type TargetTriple = (typeof AVAILABLE_TARGETS)[number]\n\nexport const DEFAULT_TARGETS = [\n  'x86_64-apple-darwin',\n  'aarch64-apple-darwin',\n  'x86_64-pc-windows-msvc',\n  'x86_64-unknown-linux-gnu',\n] as const\n\nexport const TARGET_LINKER: Record<string, string> = {\n  'aarch64-unknown-linux-musl': 'aarch64-linux-musl-gcc',\n  // TODO: Switch to loongarch64-linux-gnu-gcc when available\n  'loongarch64-unknown-linux-gnu': 'loongarch64-linux-gnu-gcc-13',\n  'riscv64gc-unknown-linux-gnu': 'riscv64-linux-gnu-gcc',\n  'powerpc64le-unknown-linux-gnu': 'powerpc64le-linux-gnu-gcc',\n  's390x-unknown-linux-gnu': 's390x-linux-gnu-gcc',\n}\n\n// https://nodejs.org/api/process.html#process_process_arch\ntype NodeJSArch =\n  | 'arm'\n  | 'arm64'\n  | 'ia32'\n  | 'loong64'\n  | 'mips'\n  | 'mipsel'\n  | 'ppc'\n  | 'ppc64'\n  | 'riscv64'\n  | 's390'\n  | 's390x'\n  | 'x32'\n  | 'x64'\n  | 'universal'\n  | 'wasm32'\n\nconst CpuToNodeArch: Record<string, NodeJSArch> = {\n  x86_64: 'x64',\n  aarch64: 'arm64',\n  i686: 'ia32',\n  armv7: 'arm',\n  loongarch64: 'loong64',\n  riscv64gc: 'riscv64',\n  powerpc64le: 'ppc64',\n}\n\nexport const NodeArchToCpu: Record<string, string> = {\n  x64: 'x86_64',\n  arm64: 'aarch64',\n  ia32: 'i686',\n  arm: 'armv7',\n  loong64: 'loongarch64',\n  riscv64: 'riscv64gc',\n  ppc64: 'powerpc64le',\n}\n\nconst SysToNodePlatform: Record<string, Platform> = {\n  linux: 'linux',\n  freebsd: 'freebsd',\n  darwin: 'darwin',\n  windows: 'win32',\n  ohos: 'openharmony',\n}\n\nexport const UniArchsByPlatform: Partial<Record<Platform, NodeJSArch[]>> = {\n  darwin: ['x64', 'arm64'],\n}\n\nexport interface Target {\n  triple: string\n  platformArchABI: string\n  platform: Platform\n  arch: NodeJSArch\n  abi: string | null\n}\n\n/**\n * A triple is a specific format for specifying a target architecture.\n * Triples may be referred to as a target triple which is the architecture for the artifact produced, and the host triple which is the architecture that the compiler is running on.\n * The general format of the triple is `<arch><sub>-<vendor>-<sys>-<abi>` where:\n *   - `arch` = The base CPU architecture, for example `x86_64`, `i686`, `arm`, `thumb`, `mips`, etc.\n *   - `sub` = The CPU sub-architecture, for example `arm` has `v7`, `v7s`, `v5te`, etc.\n *   - `vendor` = The vendor, for example `unknown`, `apple`, `pc`, `nvidia`, etc.\n *   - `sys` = The system name, for example `linux`, `windows`, `darwin`, etc. none is typically used for bare-metal without an OS.\n *   - `abi` = The ABI, for example `gnu`, `android`, `eabi`, etc.\n */\nexport function parseTriple(rawTriple: string): Target {\n  if (\n    rawTriple === 'wasm32-wasi' ||\n    rawTriple === 'wasm32-wasi-preview1-threads' ||\n    rawTriple.startsWith('wasm32-wasip')\n  ) {\n    return {\n      triple: rawTriple,\n      platformArchABI: 'wasm32-wasi',\n      platform: 'wasi',\n      arch: 'wasm32',\n      abi: 'wasi',\n    }\n  }\n  const triple = rawTriple.endsWith('eabi')\n    ? `${rawTriple.slice(0, -4)}-eabi`\n    : rawTriple\n  const triples = triple.split('-')\n  let cpu: string\n  let sys: string\n  let abi: string | null = null\n  if (triples.length === 2) {\n    // aarch64-fuchsia\n    // ^ cpu   ^ sys\n    ;[cpu, sys] = triples\n  } else {\n    // aarch64-unknown-linux-musl\n    // ^ cpu   ^vendor ^ sys ^ abi\n    // aarch64-apple-darwin\n    // ^ cpu         ^ sys  (abi is None)\n    ;[cpu, , sys, abi = null] = triples\n  }\n\n  if (abi && SUB_SYSTEMS.has(abi)) {\n    sys = abi\n    abi = null\n  }\n  const platform = SysToNodePlatform[sys] ?? (sys as Platform)\n  const arch = CpuToNodeArch[cpu] ?? (cpu as NodeJSArch)\n\n  return {\n    triple: rawTriple,\n    platformArchABI: abi ? `${platform}-${arch}-${abi}` : `${platform}-${arch}`,\n    platform,\n    arch,\n    abi,\n  }\n}\n\nexport function getSystemDefaultTarget(): Target {\n  const host = execSync(`rustc -vV`, {\n    env: process.env,\n  })\n    .toString('utf8')\n    .split('\\n')\n    .find((line) => line.startsWith('host: '))\n  const triple = host?.slice('host: '.length)\n  if (!triple) {\n    throw new TypeError(`Can not parse target triple from host`)\n  }\n  return parseTriple(triple)\n}\n\nexport function getTargetLinker(target: string): string | undefined {\n  return TARGET_LINKER[target]\n}\n\nexport function targetToEnvVar(target: string): string {\n  return target.replace(/-/g, '_').toUpperCase()\n}\n"
  },
  {
    "path": "cli/src/utils/typegen.ts",
    "content": "import { sortBy } from 'es-toolkit'\n\nimport { readFileAsync } from './misc.js'\n\nconst TOP_LEVEL_NAMESPACE = '__TOP_LEVEL_MODULE__'\nexport const DEFAULT_TYPE_DEF_HEADER = `/* auto-generated by NAPI-RS */\n/* eslint-disable */\n`\n\nenum TypeDefKind {\n  Const = 'const',\n  Enum = 'enum',\n  StringEnum = 'string_enum',\n  Interface = 'interface',\n  Type = 'type',\n  Fn = 'fn',\n  Struct = 'struct',\n  Extends = 'extends',\n  Impl = 'impl',\n}\n\ninterface TypeDefLine {\n  kind: TypeDefKind\n  name: string\n  original_name?: string\n  def: string\n  extends?: string\n  js_doc?: string\n  js_mod?: string\n}\n\nfunction prettyPrint(\n  line: TypeDefLine,\n  constEnum: boolean,\n  ident: number,\n  ambient = false,\n): string {\n  let s = line.js_doc ?? ''\n  switch (line.kind) {\n    case TypeDefKind.Interface:\n      s += `export interface ${line.name} {\\n${line.def}\\n}`\n      break\n\n    case TypeDefKind.Type:\n      s += `export type ${line.name} = \\n${line.def}`\n      break\n\n    case TypeDefKind.Enum:\n      const enumName = constEnum ? 'const enum' : 'enum'\n      s += `${exportDeclare(ambient)} ${enumName} ${line.name} {\\n${line.def}\\n}`\n      break\n\n    case TypeDefKind.StringEnum:\n      if (constEnum) {\n        s += `${exportDeclare(ambient)} const enum ${line.name} {\\n${line.def}\\n}`\n      } else {\n        s += `export type ${line.name} = ${line.def.replaceAll(/.*=/g, '').replaceAll(',', '|')};`\n      }\n      break\n\n    case TypeDefKind.Struct:\n      const extendsDef = line.extends ? ` extends ${line.extends}` : ''\n      if (line.extends) {\n        // Extract generic params from extends type like Iterator<T, TResult, TNext>\n        const genericMatch = line.extends.match(/Iterator<(.+)>$/)\n        if (genericMatch) {\n          const [T, TResult, TNext] = genericMatch[1]\n            .split(',')\n            .map((p) => p.trim())\n          line.def =\n            line.def +\n            `\\nnext(value?: ${TNext}): IteratorResult<${T}, ${TResult}>`\n        }\n      }\n      s += `${exportDeclare(ambient)} class ${line.name}${extendsDef} {\\n${line.def}\\n}`\n      if (line.original_name && line.original_name !== line.name) {\n        s += `\\nexport type ${line.original_name} = ${line.name}`\n      }\n      break\n\n    case TypeDefKind.Fn:\n      s += `${exportDeclare(ambient)} ${line.def}`\n      break\n\n    default:\n      s += line.def\n  }\n\n  return correctStringIdent(s, ident)\n}\n\nfunction exportDeclare(ambient: boolean): string {\n  if (ambient) {\n    return 'export'\n  }\n\n  return 'export declare'\n}\n\nexport async function processTypeDef(\n  intermediateTypeFile: string,\n  constEnum: boolean,\n) {\n  const exports: string[] = []\n  const defs = await readIntermediateTypeFile(intermediateTypeFile)\n  const groupedDefs = preprocessTypeDef(defs)\n\n  const dts =\n    sortBy(Array.from(groupedDefs), [([namespace]) => namespace])\n      .map(([namespace, defs]) => {\n        if (namespace === TOP_LEVEL_NAMESPACE) {\n          return defs\n            .map((def) => {\n              switch (def.kind) {\n                case TypeDefKind.Const:\n                case TypeDefKind.Enum:\n                case TypeDefKind.StringEnum:\n                case TypeDefKind.Fn:\n                case TypeDefKind.Struct: {\n                  exports.push(def.name)\n                  if (def.original_name && def.original_name !== def.name) {\n                    exports.push(def.original_name)\n                  }\n                  break\n                }\n                default:\n                  break\n              }\n              return prettyPrint(def, constEnum, 0)\n            })\n            .join('\\n\\n')\n        } else {\n          exports.push(namespace)\n          let declaration = ''\n          declaration += `export declare namespace ${namespace} {\\n`\n          for (const def of defs) {\n            declaration += prettyPrint(def, constEnum, 2, true) + '\\n'\n          }\n          declaration += '}'\n          return declaration\n        }\n      })\n      .join('\\n\\n') + '\\n'\n\n  return {\n    dts,\n    exports,\n  }\n}\n\nasync function readIntermediateTypeFile(file: string) {\n  const content = await readFileAsync(file, 'utf8')\n\n  const defs = content\n    .split('\\n')\n    .filter(Boolean)\n    .map((line) => {\n      line = line.trim()\n      const parsed = JSON.parse(line) as TypeDefLine\n      // Convert escaped newlines back to actual newlines in js_doc fields\n      if (parsed.js_doc) {\n        parsed.js_doc = parsed.js_doc.replace(/\\\\n/g, '\\n')\n      }\n      // Convert escaped newlines to actual newlines in def fields for struct/class/interface/type types\n      // where \\n represents method/field separators that should be actual newlines\n      if (parsed.def) {\n        parsed.def = parsed.def.replace(/\\\\n/g, '\\n')\n      }\n      return parsed\n    })\n\n  // move all `struct` def to the very top\n  // and order the rest alphabetically.\n  return defs.sort((a, b) => {\n    if (a.kind === TypeDefKind.Struct) {\n      if (b.kind === TypeDefKind.Struct) {\n        return a.name.localeCompare(b.name)\n      }\n      return -1\n    } else if (b.kind === TypeDefKind.Struct) {\n      return 1\n    } else {\n      return a.name.localeCompare(b.name)\n    }\n  })\n}\n\nfunction preprocessTypeDef(defs: TypeDefLine[]): Map<string, TypeDefLine[]> {\n  const namespaceGrouped = new Map<string, TypeDefLine[]>()\n  const classDefs = new Map<string, TypeDefLine>()\n\n  for (const def of defs) {\n    const namespace = def.js_mod ?? TOP_LEVEL_NAMESPACE\n    if (!namespaceGrouped.has(namespace)) {\n      namespaceGrouped.set(namespace, [])\n    }\n\n    const group = namespaceGrouped.get(namespace)!\n\n    if (def.kind === TypeDefKind.Struct) {\n      group.push(def)\n      classDefs.set(def.name, def)\n    } else if (def.kind === TypeDefKind.Extends) {\n      const classDef = classDefs.get(def.name)\n      if (classDef) {\n        classDef.extends = def.def\n      }\n    } else if (def.kind === TypeDefKind.Impl) {\n      // merge `impl` into class definition\n      const classDef = classDefs.get(def.name)\n      if (classDef) {\n        if (classDef.def) {\n          classDef.def += '\\n'\n        }\n\n        classDef.def += def.def\n        // Convert any remaining \\n sequences in the merged def to actual newlines\n        if (classDef.def) {\n          classDef.def = classDef.def.replace(/\\\\n/g, '\\n')\n        }\n      }\n    } else {\n      group.push(def)\n    }\n  }\n\n  return namespaceGrouped\n}\n\nexport function correctStringIdent(src: string, ident: number): string {\n  let bracketDepth = 0\n  const result = src\n    .split('\\n')\n    .map((line) => {\n      line = line.trim()\n      if (line === '') {\n        return ''\n      }\n\n      const isInMultilineComment = line.startsWith('*')\n      const isClosingBracket = line.endsWith('}')\n      const isOpeningBracket = line.endsWith('{')\n      const isTypeDeclaration = line.endsWith('=')\n      const isTypeVariant = line.startsWith('|')\n\n      let rightIndent = ident\n      if ((isOpeningBracket || isTypeDeclaration) && !isInMultilineComment) {\n        bracketDepth += 1\n        rightIndent += (bracketDepth - 1) * 2\n      } else {\n        if (\n          isClosingBracket &&\n          bracketDepth > 0 &&\n          !isInMultilineComment &&\n          !isTypeVariant\n        ) {\n          bracketDepth -= 1\n        }\n        rightIndent += bracketDepth * 2\n      }\n\n      if (isInMultilineComment) {\n        rightIndent += 1\n      }\n\n      const s = `${' '.repeat(rightIndent)}${line}`\n\n      return s\n    })\n    .join('\\n')\n\n  return result\n}\n"
  },
  {
    "path": "cli/src/utils/version.ts",
    "content": "export enum NapiVersion {\n  Napi1 = 1,\n  Napi2,\n  Napi3,\n  Napi4,\n  Napi5,\n  Napi6,\n  Napi7,\n  Napi8,\n  Napi9,\n}\n\n/// because node support new napi version in some minor version updates, so we might meet such situation:\n/// `node v10.20.0` supports `napi5` and `napi6`, but `node v12.0.0` only support `napi4`,\n/// by which, we can not tell directly napi version supportless from node version directly.\nconst NAPI_VERSION_MATRIX = new Map<NapiVersion, string>([\n  [NapiVersion.Napi1, '8.6.0 | 9.0.0 | 10.0.0'],\n  [NapiVersion.Napi2, '8.10.0 | 9.3.0 | 10.0.0'],\n  [NapiVersion.Napi3, '6.14.2 | 8.11.2 | 9.11.0 | 10.0.0'],\n  [NapiVersion.Napi4, '10.16.0 | 11.8.0 | 12.0.0'],\n  [NapiVersion.Napi5, '10.17.0 | 12.11.0 | 13.0.0'],\n  [NapiVersion.Napi6, '10.20.0 | 12.17.0 | 14.0.0'],\n  [NapiVersion.Napi7, '10.23.0 | 12.19.0 | 14.12.0 | 15.0.0'],\n  [NapiVersion.Napi8, '12.22.0 | 14.17.0 | 15.12.0 | 16.0.0'],\n  [NapiVersion.Napi9, '18.17.0 | 20.3.0 | 21.1.0'],\n])\n\ninterface NodeVersion {\n  major: number\n  minor: number\n  patch: number\n}\n\nfunction parseNodeVersion(v: string): NodeVersion {\n  const matches = v.match(/v?([0-9]+)\\.([0-9]+)\\.([0-9]+)/i)\n\n  if (!matches) {\n    throw new Error('Unknown node version number: ' + v)\n  }\n\n  const [, major, minor, patch] = matches\n\n  return {\n    major: parseInt(major),\n    minor: parseInt(minor),\n    patch: parseInt(patch),\n  }\n}\n\nfunction requiredNodeVersions(napiVersion: NapiVersion): NodeVersion[] {\n  const requirement = NAPI_VERSION_MATRIX.get(napiVersion)\n\n  if (!requirement) {\n    return [parseNodeVersion('10.0.0')]\n  }\n\n  return requirement.split('|').map(parseNodeVersion)\n}\n\nfunction toEngineRequirement(versions: NodeVersion[]): string {\n  const requirements: string[] = []\n  versions.forEach((v, i) => {\n    let req = ''\n    if (i !== 0) {\n      const lastVersion = versions[i - 1]\n      req += `< ${lastVersion.major + 1}`\n    }\n\n    req += `${i === 0 ? '' : ' || '}>= ${v.major}.${v.minor}.${v.patch}`\n    requirements.push(req)\n  })\n\n  return requirements.join(' ')\n}\n\nexport function napiEngineRequirement(napiVersion: NapiVersion): string {\n  return toEngineRequirement(requiredNodeVersions(napiVersion))\n}\n"
  },
  {
    "path": "cli/tsconfig.json",
    "content": "{\n  \"extends\": \"../tsconfig.json\",\n  \"compilerOptions\": {\n    \"strict\": true,\n    \"target\": \"ES2022\",\n    \"module\": \"NodeNext\",\n    \"moduleResolution\": \"nodenext\",\n    \"resolveJsonModule\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"verbatimModuleSyntax\": true,\n    \"declaration\": true,\n    \"rootDir\": \"./src\",\n    \"baseUrl\": \".\",\n    \"outDir\": \"dist\",\n    \"allowJs\": false\n  },\n  \"include\": [\"./src\"],\n  \"ts-node\": {\n    \"esm\": true,\n    \"experimentalSpecifierResolution\": \"node\"\n  }\n}\n"
  },
  {
    "path": "cli/tsdown.config.ts",
    "content": "import { defineConfig } from 'tsdown'\n\nexport default defineConfig([\n  {\n    entry: './src/index.ts',\n    fixedExtension: false,\n    format: ['esm', 'cjs'],\n    target: 'node16',\n    sourcemap: 'inline',\n    inlineOnly: false,\n    inputOptions(options, format) {\n      if (format === 'cjs') {\n        options.external = ['@octokit/rest']\n      }\n      return options\n    },\n  },\n  {\n    entry: './src/cli.ts',\n    sourcemap: 'inline',\n    target: 'node16',\n    dts: false,\n    fixedExtension: false,\n    inlineOnly: false,\n  },\n])\n"
  },
  {
    "path": "crates/backend/CHANGELOG.md",
    "content": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## [Unreleased]\n\n## [5.0.2](https://github.com/napi-rs/napi-rs/compare/napi-derive-backend-v5.0.1...napi-derive-backend-v5.0.2) - 2026-02-14\n\n### Fixed\n\n- *(deps)* update rust crate convert_case to 0.11 ([#3114](https://github.com/napi-rs/napi-rs/pull/3114))\n- *(napi-derive)* escape * in comments ([#3109](https://github.com/napi-rs/napi-rs/pull/3109))\n\n## [5.0.1](https://github.com/napi-rs/napi-rs/compare/napi-derive-backend-v5.0.0...napi-derive-backend-v5.0.1) - 2026-01-08\n\n### Fixed\n\n- *(napi)* memory leak in async fn ([#3089](https://github.com/napi-rs/napi-rs/pull/3089))\n\n## [5.0.0](https://github.com/napi-rs/napi-rs/compare/napi-derive-backend-v4.0.1...napi-derive-backend-v5.0.0) - 2025-12-30\n\n### Added\n\n- *(napi-derive)* add #[napi(async_iterator)] macro attribute ([#3072](https://github.com/napi-rs/napi-rs/pull/3072))\n\n## [4.0.1](https://github.com/napi-rs/napi-rs/compare/napi-derive-backend-v4.0.0...napi-derive-backend-v4.0.1) - 2025-12-19\n\n### Fixed\n\n- *(napi-derive)* class setter param can't be optional ([#3066](https://github.com/napi-rs/napi-rs/pull/3066))\n\n## [4.0.0](https://github.com/napi-rs/napi-rs/compare/napi-derive-backend-v3.0.2...napi-derive-backend-v4.0.0) - 2025-12-02\n\n### Added\n\n- *(napi-derive)* add tracing feature for debug logging NAPI function calls ([#3041](https://github.com/napi-rs/napi-rs/pull/3041))\n- *(napi)* add node_api_create_object_with_properties support for enum creation ([#2990](https://github.com/napi-rs/napi-rs/pull/2990))\n\n### Fixed\n\n- *(napi-derive)* add paren for function types ([#3044](https://github.com/napi-rs/napi-rs/pull/3044))\n- *(deps)* update rust crate convert_case to 0.10 ([#3031](https://github.com/napi-rs/napi-rs/pull/3031))\n\n## [3.0.2](https://github.com/napi-rs/napi-rs/compare/napi-derive-backend-v3.0.1...napi-derive-backend-v3.0.2) - 2025-11-10\n\n### Fixed\n\n- *(deps)* update rust crate convert_case to 0.9 ([#3001](https://github.com/napi-rs/napi-rs/pull/3001))\n\n### Other\n\n- *(napi)* fix tsdown config ([#3010](https://github.com/napi-rs/napi-rs/pull/3010))\n\n## [3.0.1](https://github.com/napi-rs/napi-rs/compare/napi-derive-backend-v3.0.0...napi-derive-backend-v3.0.1) - 2025-11-07\n\n### Fixed\n\n- *(napi-derive)* TypedArray typegen ([#3005](https://github.com/napi-rs/napi-rs/pull/3005))\n\n## [3.0.0](https://github.com/napi-rs/napi-rs/compare/napi-derive-backend-v2.2.0...napi-derive-backend-v3.0.0) - 2025-10-24\n\n### Added\n\n- *(napi-derive)* add `discriminant_case` to allow changing case of discriminant ([#2960](https://github.com/napi-rs/napi-rs/pull/2960))\n\n### Fixed\n\n- *(napi)* stop ref error object in wasm targets ([#2975](https://github.com/napi-rs/napi-rs/pull/2975))\n\n### Other\n\n- *(napi)* bump rust-version ([#2966](https://github.com/napi-rs/napi-rs/pull/2966))\n- *(napi-derive)* make typegen easier to read ([#2956](https://github.com/napi-rs/napi-rs/pull/2956))\n\n## [2.2.0](https://github.com/napi-rs/napi-rs/compare/napi-derive-backend-v2.1.4...napi-derive-backend-v2.2.0) - 2025-09-08\n\n### Added\n\n- *(napi)* support external JsStringLatin1 and JsStringUtf16 ([#2898](https://github.com/napi-rs/napi-rs/pull/2898))\n\n## [2.1.4](https://github.com/napi-rs/napi-rs/compare/napi-derive-backend-v2.1.3...napi-derive-backend-v2.1.4) - 2025-08-16\n\n### Fixed\n\n- *(napi-derive)* codegen issue for &'env [u8] param ([#2881](https://github.com/napi-rs/napi-rs/pull/2881))\n\n### Other\n\n- *(napi)* extends the Set types interoperability ([#2875](https://github.com/napi-rs/napi-rs/pull/2875))\n\n## [2.1.3](https://github.com/napi-rs/napi-rs/compare/napi-derive-backend-v2.1.2...napi-derive-backend-v2.1.3) - 2025-08-13\n\n### Fixed\n\n- *(napi)* link issue on cargo test --features noop ([#2872](https://github.com/napi-rs/napi-rs/pull/2872))\n\n## [2.1.2](https://github.com/napi-rs/napi-rs/compare/napi-derive-backend-v2.1.1...napi-derive-backend-v2.1.2) - 2025-08-09\n\n### Fixed\n\n- *(napi-derive)* comments idents regression ([#2857](https://github.com/napi-rs/napi-rs/pull/2857))\n\n## [2.1.1](https://github.com/napi-rs/napi-rs/compare/napi-derive-backend-v2.1.0...napi-derive-backend-v2.1.1) - 2025-08-08\n\n### Fixed\n\n- *(napi)* handle the return_if_invalid for Array param ([#2846](https://github.com/napi-rs/napi-rs/pull/2846))\n\n## [2.1.0](https://github.com/napi-rs/napi-rs/compare/napi-derive-backend-v2.0.3...napi-derive-backend-v2.1.0) - 2025-08-07\n\n### Added\n\n- make generator an iterator ([#2784](https://github.com/napi-rs/napi-rs/pull/2784))\n\n## [2.0.3](https://github.com/napi-rs/napi-rs/compare/napi-derive-backend-v2.0.2...napi-derive-backend-v2.0.3) - 2025-07-30\n\n### Fixed\n\n- *(napi-derive)* generate types for threadsafe_function with WEAK=true correctly ([#2813](https://github.com/napi-rs/napi-rs/pull/2813))\n\n## [2.0.2](https://github.com/napi-rs/napi-rs/compare/napi-derive-backend-v2.0.1...napi-derive-backend-v2.0.2) - 2025-07-22\n\n### Fixed\n\n- *(napi-derive)* lifetime codegen issue ([#2794](https://github.com/napi-rs/napi-rs/pull/2794))\n\n## [2.0.1](https://github.com/napi-rs/napi-rs/compare/napi-derive-backend-v2.0.0...napi-derive-backend-v2.0.1) - 2025-07-21\n\n### Other\n\n- pin release-plz action\n"
  },
  {
    "path": "crates/backend/Cargo.toml",
    "content": "[package]\ndescription = \"Codegen backend for napi procedural macro\"\nedition = \"2021\"\nhomepage = \"https://napi.rs\"\nlicense = \"MIT\"\nname = \"napi-derive-backend\"\nreadme = \"README.md\"\nrepository = \"https://github.com/napi-rs/napi-rs\"\nrust-version.workspace = true\nversion = \"5.0.2\"\n\n[package.metadata.workspaces]\nindependent = true\n\n[features]\nnoop = []\nstrict = []\ntracing = []\ntype-def = [\"semver\"]\n\n[dependencies]\nconvert_case = \"0.11\"\nproc-macro2 = \"1\"\nquote = \"1\"\nsyn = { version = \"2\", features = [\"fold\", \"full\", \"extra-traits\"] }\n\n[dependencies.semver]\noptional = true\nversion = \"1\"\n\n[dev-dependencies]\nserde_json = \"1\"\n"
  },
  {
    "path": "crates/backend/README.md",
    "content": "# napi-derive-backend\n\nTake care the ast parsing from `napi-derive` and generate \"bridge\" runtime code for both nodejs and rust.\n"
  },
  {
    "path": "crates/backend/src/ast.rs",
    "content": "use convert_case::Case;\nuse proc_macro2::{Ident, Literal};\nuse syn::{Attribute, Expr, Type};\n\n#[derive(Debug, Clone)]\npub struct NapiFn {\n  pub name: Ident,\n  pub js_name: String,\n  pub module_exports: bool,\n  pub attrs: Vec<Attribute>,\n  pub args: Vec<NapiFnArg>,\n  pub ret: Option<syn::Type>,\n  pub is_ret_result: bool,\n  pub is_async: bool,\n  pub within_async_runtime: bool,\n  pub fn_self: Option<FnSelf>,\n  pub kind: FnKind,\n  pub vis: syn::Visibility,\n  pub parent: Option<Ident>,\n  pub parent_js_name: Option<String>,\n  pub strict: bool,\n  pub return_if_invalid: bool,\n  pub js_mod: Option<String>,\n  pub ts_generic_types: Option<String>,\n  pub ts_type: Option<String>,\n  pub ts_args_type: Option<String>,\n  pub ts_return_type: Option<String>,\n  pub skip_typescript: bool,\n  pub comments: Vec<String>,\n  pub parent_is_generator: bool,\n  pub parent_is_async_generator: bool,\n  pub writable: bool,\n  pub enumerable: bool,\n  pub configurable: bool,\n  pub catch_unwind: bool,\n  pub unsafe_: bool,\n  pub register_name: Ident,\n  pub no_export: bool,\n}\n\n#[derive(Debug, Clone)]\npub struct CallbackArg {\n  pub pat: Box<syn::Pat>,\n  pub args: Vec<syn::Type>,\n  pub ret: Option<syn::Type>,\n}\n\n#[derive(Debug, Clone)]\npub struct NapiFnArg {\n  pub kind: NapiFnArgKind,\n  pub ts_arg_type: Option<String>,\n}\n\nimpl NapiFnArg {\n  /// if type was overridden with `#[napi(ts_arg_type = \"...\")]` use that instead\n  pub fn use_overridden_type_or(&self, default: impl FnOnce() -> String) -> String {\n    self.ts_arg_type.as_ref().cloned().unwrap_or_else(default)\n  }\n}\n\n#[derive(Debug, Clone)]\npub enum NapiFnArgKind {\n  PatType(Box<syn::PatType>),\n  Callback(Box<CallbackArg>),\n}\n\n#[derive(Debug, Clone, PartialEq, Eq)]\npub enum FnKind {\n  Normal,\n  Constructor,\n  Factory,\n  Getter,\n  Setter,\n}\n\n#[derive(Debug, Clone, PartialEq, Eq)]\npub enum FnSelf {\n  Value,\n  Ref,\n  MutRef,\n}\n\n#[derive(Debug, Clone)]\npub struct NapiStruct {\n  pub name: Ident,\n  pub js_name: String,\n  pub comments: Vec<String>,\n  pub js_mod: Option<String>,\n  pub use_nullable: bool,\n  pub register_name: Ident,\n  pub kind: NapiStructKind,\n  pub has_lifetime: bool,\n  pub is_generator: bool,\n  pub is_async_generator: bool,\n}\n\n#[derive(Debug, Clone)]\npub enum NapiStructKind {\n  Transparent(NapiTransparent),\n  Class(NapiClass),\n  Object(NapiObject),\n  StructuredEnum(NapiStructuredEnum),\n  Array(NapiArray),\n}\n\n#[derive(Debug, Clone)]\npub struct NapiTransparent {\n  pub ty: Type,\n  pub object_from_js: bool,\n  pub object_to_js: bool,\n}\n\n#[derive(Debug, Clone)]\npub struct NapiClass {\n  pub fields: Vec<NapiStructField>,\n  pub ctor: bool,\n  pub implement_iterator: bool,\n  pub implement_async_iterator: bool,\n  pub is_tuple: bool,\n  pub use_custom_finalize: bool,\n}\n\n#[derive(Debug, Clone)]\npub struct NapiObject {\n  pub fields: Vec<NapiStructField>,\n  pub object_from_js: bool,\n  pub object_to_js: bool,\n  pub is_tuple: bool,\n}\n\n#[derive(Debug, Clone)]\npub struct NapiArray {\n  pub fields: Vec<NapiStructField>,\n  pub object_from_js: bool,\n  pub object_to_js: bool,\n}\n\n#[derive(Debug, Clone)]\npub struct NapiStructuredEnum {\n  pub variants: Vec<NapiStructuredEnumVariant>,\n  pub object_from_js: bool,\n  pub object_to_js: bool,\n  pub discriminant: String,\n  pub discriminant_case: Option<Case<'static>>,\n}\n\n#[derive(Debug, Clone)]\npub struct NapiStructuredEnumVariant {\n  pub name: Ident,\n  pub fields: Vec<NapiStructField>,\n  pub is_tuple: bool,\n}\n\n#[derive(Debug, Clone)]\npub struct NapiStructField {\n  pub name: syn::Member,\n  pub js_name: String,\n  pub ty: syn::Type,\n  pub getter: bool,\n  pub setter: bool,\n  pub writable: bool,\n  pub enumerable: bool,\n  pub configurable: bool,\n  pub comments: Vec<String>,\n  pub skip_typescript: bool,\n  pub ts_type: Option<String>,\n  pub has_lifetime: bool,\n}\n\n#[derive(Debug, Clone)]\npub struct NapiImpl {\n  pub name: Ident,\n  pub js_name: String,\n  pub has_lifetime: bool,\n  pub items: Vec<NapiFn>,\n  pub task_output_type: Option<Type>,\n  pub iterator_yield_type: Option<Type>,\n  pub iterator_next_type: Option<Type>,\n  pub iterator_return_type: Option<Type>,\n  pub async_iterator_yield_type: Option<Type>,\n  pub async_iterator_next_type: Option<Type>,\n  pub async_iterator_return_type: Option<Type>,\n  pub js_mod: Option<String>,\n  pub comments: Vec<String>,\n  pub register_name: Ident,\n}\n\n#[derive(Debug, Clone)]\npub struct NapiEnum {\n  pub name: Ident,\n  pub js_name: String,\n  pub variants: Vec<NapiEnumVariant>,\n  pub js_mod: Option<String>,\n  pub comments: Vec<String>,\n  pub skip_typescript: bool,\n  pub register_name: Ident,\n  pub is_string_enum: bool,\n  pub object_from_js: bool,\n  pub object_to_js: bool,\n}\n\n#[derive(Debug, Clone)]\npub enum NapiEnumValue {\n  String(String),\n  Number(i32),\n}\n\nimpl From<&NapiEnumValue> for Literal {\n  fn from(val: &NapiEnumValue) -> Self {\n    match val {\n      NapiEnumValue::String(string) => Literal::string(string),\n      NapiEnumValue::Number(number) => Literal::i32_unsuffixed(number.to_owned()),\n    }\n  }\n}\n\n#[derive(Debug, Clone)]\npub struct NapiEnumVariant {\n  pub name: Ident,\n  pub val: NapiEnumValue,\n  pub comments: Vec<String>,\n}\n\n#[derive(Debug, Clone)]\npub struct NapiConst {\n  pub name: Ident,\n  pub js_name: String,\n  pub type_name: Type,\n  pub value: Expr,\n  pub js_mod: Option<String>,\n  pub comments: Vec<String>,\n  pub skip_typescript: bool,\n  pub register_name: Ident,\n}\n\n#[derive(Debug, Clone)]\npub struct NapiMod {\n  pub name: Ident,\n  pub js_name: String,\n}\n\n#[derive(Debug, Clone)]\npub struct NapiType {\n  pub name: Ident,\n  pub js_name: String,\n  pub value: Type,\n  pub register_name: Ident,\n  pub skip_typescript: bool,\n  pub js_mod: Option<String>,\n  pub comments: Vec<String>,\n}\n"
  },
  {
    "path": "crates/backend/src/codegen/const.rs",
    "content": "use proc_macro2::{Ident, Literal, TokenStream};\nuse quote::ToTokens;\n\nuse crate::{codegen::js_mod_to_token_stream, BindgenResult, NapiConst, TryToTokens};\n\nimpl TryToTokens for NapiConst {\n  fn try_to_tokens(&self, tokens: &mut TokenStream) -> BindgenResult<()> {\n    let register = self.gen_module_register();\n    (quote! {\n      #register\n    })\n    .to_tokens(tokens);\n\n    Ok(())\n  }\n}\n\nimpl NapiConst {\n  fn gen_module_register(&self) -> TokenStream {\n    if cfg!(test) {\n      return quote! {};\n    }\n\n    let name_ident = &self.name;\n    let js_name_lit = Literal::string(&format!(\"{}\\0\", self.name));\n    let register_name = &self.register_name;\n    let type_name = &self.type_name;\n    let cb_name = Ident::new(\n      &format!(\"__register__const__{register_name}_callback__\"),\n      self.name.span(),\n    );\n    let js_mod_ident = js_mod_to_token_stream(self.js_mod.as_ref());\n\n    quote! {\n      #[allow(non_snake_case)]\n      #[allow(clippy::all)]\n      unsafe fn #cb_name(env: napi::sys::napi_env) -> napi::Result<napi::sys::napi_value> {\n        <#type_name as napi::bindgen_prelude::ToNapiValue>::to_napi_value(env, #name_ident)\n      }\n      #[allow(non_snake_case)]\n      #[allow(clippy::all)]\n      #[cfg(all(not(test), not(target_family = \"wasm\")))]\n      #[napi::ctor::ctor(crate_path=::napi::ctor)]\n      fn #register_name() {\n        napi::bindgen_prelude::register_module_export(#js_mod_ident, #js_name_lit, #cb_name);\n      }\n\n      #[allow(non_snake_case)]\n      #[allow(clippy::all)]\n      #[cfg(all(not(test), target_family = \"wasm\"))]\n      #[no_mangle]\n      unsafe extern \"C\" fn #register_name() {\n        napi::bindgen_prelude::register_module_export(#js_mod_ident, #js_name_lit, #cb_name);\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "crates/backend/src/codegen/enum.rs",
    "content": "use proc_macro2::{Ident, Literal, Span, TokenStream};\nuse quote::ToTokens;\n\nuse crate::{codegen::js_mod_to_token_stream, BindgenResult, NapiEnum, TryToTokens};\n\nimpl TryToTokens for NapiEnum {\n  fn try_to_tokens(&self, tokens: &mut TokenStream) -> BindgenResult<()> {\n    let register = self.gen_module_register();\n    let napi_value_conversion = self.gen_napi_value_map_impl();\n\n    (quote! {\n      #napi_value_conversion\n      #register\n    })\n    .to_tokens(tokens);\n\n    Ok(())\n  }\n}\n\nimpl NapiEnum {\n  fn gen_napi_value_map_impl(&self) -> TokenStream {\n    let name = &self.name;\n    let name_str = self.name.to_string();\n    let mut from_napi_branches = vec![];\n    let mut to_napi_branches = vec![];\n\n    self.variants.iter().for_each(|v| {\n      let val: Literal = (&v.val).into();\n      let v_name = &v.name;\n\n      from_napi_branches.push(quote! { #val => Ok(#name::#v_name) });\n      to_napi_branches.push(quote! { #name::#v_name => #val });\n    });\n\n    let validate_type = if self.is_string_enum {\n      quote! { napi::bindgen_prelude::ValueType::String }\n    } else {\n      quote! { napi::bindgen_prelude::ValueType::Number }\n    };\n\n    let from_napi_value = self.gen_from_napi_value(name, from_napi_branches);\n    let to_napi_value = self.gen_to_napi_value(name, to_napi_branches);\n    quote! {\n      impl napi::bindgen_prelude::TypeName for #name {\n        fn type_name() -> &'static str {\n          #name_str\n        }\n\n        fn value_type() -> napi::ValueType {\n          napi::ValueType::Object\n        }\n      }\n\n      impl napi::bindgen_prelude::ValidateNapiValue for #name {\n        unsafe fn validate(\n          env: napi::bindgen_prelude::sys::napi_env,\n          napi_val: napi::bindgen_prelude::sys::napi_value\n        ) -> napi::bindgen_prelude::Result<napi::sys::napi_value> {\n          napi::bindgen_prelude::assert_type_of!(env, napi_val, #validate_type)?;\n          Ok(std::ptr::null_mut())\n        }\n      }\n\n      #from_napi_value\n\n      #to_napi_value\n    }\n  }\n\n  fn gen_from_napi_value(&self, name: &Ident, from_napi_branches: Vec<TokenStream>) -> TokenStream {\n    if !self.object_from_js {\n      return quote! {};\n    }\n\n    let name_str = self.name.to_string();\n    if self.variants.is_empty() {\n      return quote! {\n        impl napi::bindgen_prelude::FromNapiValue for #name {\n          unsafe fn from_napi_value(\n            env: napi::bindgen_prelude::sys::napi_env,\n            napi_val: napi::bindgen_prelude::sys::napi_value\n          ) -> napi::bindgen_prelude::Result<Self> {\n            Err(napi::bindgen_prelude::error!(\n              napi::bindgen_prelude::Status::InvalidArg,\n              \"enum `{}` has no variants\",\n              #name_str\n            ))\n          }\n        }\n      };\n    }\n\n    let from_napi_value = if self.is_string_enum {\n      quote! {\n        let val: String = napi::bindgen_prelude::FromNapiValue::from_napi_value(env, napi_val)\n      }\n    } else {\n      quote! {\n        let val = napi::bindgen_prelude::FromNapiValue::from_napi_value(env, napi_val)\n      }\n    };\n    let match_val = if self.is_string_enum {\n      quote! { val.as_str() }\n    } else {\n      quote! { val }\n    };\n    quote! {\n      impl napi::bindgen_prelude::FromNapiValue for #name {\n        unsafe fn from_napi_value(\n          env: napi::bindgen_prelude::sys::napi_env,\n          napi_val: napi::bindgen_prelude::sys::napi_value\n        ) -> napi::bindgen_prelude::Result<Self> {\n          #from_napi_value.map_err(|e| {\n            napi::bindgen_prelude::error!(\n              e.status,\n              \"Failed to convert napi value into enum `{}`. {}\",\n              #name_str,\n              e,\n            )\n          })?;\n\n          match #match_val {\n            #(#from_napi_branches,)*\n            _ => {\n              Err(napi::bindgen_prelude::error!(\n                napi::bindgen_prelude::Status::InvalidArg,\n                \"value `{:?}` does not match any variant of enum `{}`\",\n                val,\n                #name_str\n              ))\n            }\n          }\n        }\n      }\n    }\n  }\n\n  fn gen_to_napi_value(&self, name: &Ident, to_napi_branches: Vec<TokenStream>) -> TokenStream {\n    if !self.object_to_js {\n      return quote! {};\n    }\n\n    if self.variants.is_empty() {\n      return quote! {\n        impl napi::bindgen_prelude::ToNapiValue for #name {\n          unsafe fn to_napi_value(\n            env: napi::bindgen_prelude::sys::napi_env,\n            val: Self\n          ) -> napi::bindgen_prelude::Result<napi::bindgen_prelude::sys::napi_value> {\n            napi::bindgen_prelude::ToNapiValue::to_napi_value(env, ())\n          }\n        }\n\n        impl napi::bindgen_prelude::ToNapiValue for &#name {\n          unsafe fn to_napi_value(\n            env: napi::bindgen_prelude::sys::napi_env,\n            val: Self\n          ) -> napi::bindgen_prelude::Result<napi::bindgen_prelude::sys::napi_value> {\n            napi::bindgen_prelude::ToNapiValue::to_napi_value(env, ())\n          }\n        }\n\n        impl napi::bindgen_prelude::ToNapiValue for &mut #name {\n          unsafe fn to_napi_value(\n            env: napi::bindgen_prelude::sys::napi_env,\n            val: Self\n          ) -> napi::bindgen_prelude::Result<napi::bindgen_prelude::sys::napi_value> {\n            napi::bindgen_prelude::ToNapiValue::to_napi_value(env, ())\n          }\n        }\n      };\n    }\n\n    quote! {\n      impl napi::bindgen_prelude::ToNapiValue for #name {\n        unsafe fn to_napi_value(\n          env: napi::bindgen_prelude::sys::napi_env,\n          val: Self\n        ) -> napi::bindgen_prelude::Result<napi::bindgen_prelude::sys::napi_value> {\n          let val = match val {\n            #(#to_napi_branches,)*\n          };\n\n          napi::bindgen_prelude::ToNapiValue::to_napi_value(env, val)\n        }\n      }\n\n      impl napi::bindgen_prelude::ToNapiValue for &#name {\n        unsafe fn to_napi_value(\n          env: napi::bindgen_prelude::sys::napi_env,\n          val: Self\n        ) -> napi::bindgen_prelude::Result<napi::bindgen_prelude::sys::napi_value> {\n          let val = match val {\n            #(#to_napi_branches,)*\n          };\n\n          napi::bindgen_prelude::ToNapiValue::to_napi_value(env, val)\n        }\n      }\n\n      impl napi::bindgen_prelude::ToNapiValue for &mut #name {\n        unsafe fn to_napi_value(\n          env: napi::bindgen_prelude::sys::napi_env,\n          val: Self\n        ) -> napi::bindgen_prelude::Result<napi::bindgen_prelude::sys::napi_value> {\n          let val = match val {\n            #(#to_napi_branches,)*\n          };\n\n          napi::bindgen_prelude::ToNapiValue::to_napi_value(env, val)\n        }\n      }\n    }\n  }\n\n  fn gen_module_register(&self) -> TokenStream {\n    if cfg!(test) {\n      return quote! {};\n    }\n\n    let name_str = self.name.to_string();\n    let js_name_lit = Literal::string(&format!(\"{}\\0\", &self.js_name));\n    let register_name = &self.register_name;\n\n    let mut value_conversions = vec![];\n    let mut property_descriptors = vec![];\n    let mut value_names = vec![];\n\n    for (idx, variant) in self.variants.iter().enumerate() {\n      let name_lit = Literal::string(&format!(\"{}\\0\", variant.name));\n      let val_lit: Literal = (&variant.val).into();\n      let value_var = Ident::new(&format!(\"__enum_value_{}\", idx), Span::call_site());\n\n      value_names.push(value_var.clone());\n\n      // Convert the value first\n      value_conversions.push(quote! {\n        let #value_var = napi::bindgen_prelude::ToNapiValue::to_napi_value(env, #val_lit)?;\n      });\n\n      // Create property descriptor using the pre-computed value\n      property_descriptors.push(quote! {\n        napi::bindgen_prelude::sys::napi_property_descriptor {\n          utf8name: std::ffi::CStr::from_bytes_with_nul_unchecked(#name_lit.as_bytes()).as_ptr(),\n          name: std::ptr::null_mut(),\n          method: None,\n          getter: None,\n          setter: None,\n          value: #value_var,\n          attributes: napi::bindgen_prelude::sys::PropertyAttributes::default,\n          data: std::ptr::null_mut(),\n        }\n      });\n    }\n\n    let callback_name = Ident::new(\n      &format!(\"__register__enum__{name_str}_callback__\"),\n      Span::call_site(),\n    );\n\n    let js_mod_ident = js_mod_to_token_stream(self.js_mod.as_ref());\n\n    let object_creation = quote! {\n      // Convert all values first, so error handling works correctly\n      #(#value_conversions)*\n\n      let properties = [\n        #(#property_descriptors),*\n      ];\n\n      let obj_ptr = napi::bindgen_prelude::create_object_with_properties(env, &properties)?;\n    };\n\n    quote! {\n      #[allow(non_snake_case)]\n      #[allow(clippy::all)]\n      unsafe fn #callback_name(env: napi::bindgen_prelude::sys::napi_env) -> napi::bindgen_prelude::Result<napi::bindgen_prelude::sys::napi_value> {\n        use std::ffi::CString;\n        use std::ptr;\n\n        #object_creation\n\n        Ok(obj_ptr)\n      }\n      #[allow(non_snake_case)]\n      #[allow(clippy::all)]\n      #[cfg(all(not(test), not(target_family = \"wasm\")))]\n      #[napi::ctor::ctor(crate_path=napi::ctor)]\n      fn #register_name() {\n        napi::bindgen_prelude::register_module_export(#js_mod_ident, #js_name_lit, #callback_name);\n      }\n      #[allow(non_snake_case)]\n      #[allow(clippy::all)]\n      #[cfg(all(not(test), target_family = \"wasm\"))]\n      #[no_mangle]\n      extern \"C\" fn #register_name() {\n        napi::bindgen_prelude::register_module_export(#js_mod_ident, #js_name_lit, #callback_name);\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "crates/backend/src/codegen/fn.rs",
    "content": "use proc_macro2::{Ident, Span, TokenStream};\nuse quote::ToTokens;\nuse syn::{spanned::Spanned, Type, TypePath, TypeReference};\n\nuse crate::{\n  codegen::{get_intermediate_ident, js_mod_to_token_stream},\n  BindgenResult, CallbackArg, Diagnostic, FnKind, FnSelf, NapiFn, NapiFnArgKind, TryToTokens,\n  TYPEDARRAY_SLICE_TYPES,\n};\n\n#[cfg(feature = \"tracing\")]\nfn gen_tracing_debug(js_name: &str, parent_js_name: Option<&String>) -> TokenStream {\n  let full_name = if let Some(parent) = parent_js_name {\n    format!(\"{}::{}\", parent, js_name)\n  } else {\n    js_name.to_string()\n  };\n  quote! {\n    napi::bindgen_prelude::tracing::debug!(target: \"napi\", \"{}\", #full_name);\n  }\n}\n\n#[cfg(not(feature = \"tracing\"))]\nfn gen_tracing_debug(_js_name: &str, _parent_js_name: Option<&String>) -> TokenStream {\n  quote! {}\n}\n\nimpl TryToTokens for NapiFn {\n  fn try_to_tokens(&self, tokens: &mut TokenStream) -> BindgenResult<()> {\n    let name_str = self.name.to_string();\n    let intermediate_ident = get_intermediate_ident(&name_str);\n    let args_len = self.args.len();\n\n    let ArgConversions {\n      arg_conversions,\n      args: arg_names,\n      refs,\n      mut_ref_spans,\n      unsafe_,\n    } = self.gen_arg_conversions()?;\n    let attrs = &self.attrs;\n    let arg_ref_count = refs.len();\n    let receiver = self.gen_fn_receiver();\n    let receiver_ret_name = Ident::new(\"_ret\", Span::call_site());\n    let ret = self.gen_fn_return(&receiver_ret_name)?;\n    let register = self.gen_fn_register();\n    let tracing_debug = gen_tracing_debug(&self.js_name, self.parent_js_name.as_ref());\n\n    if self.module_exports {\n      (quote! {\n        #(#attrs)*\n        #[doc(hidden)]\n        #[allow(non_snake_case)]\n        #[allow(clippy::all)]\n        unsafe extern \"C\" fn #intermediate_ident(\n          env: napi::bindgen_prelude::sys::napi_env,\n          _napi_module_exports_: napi::bindgen_prelude::sys::napi_value,\n        ) -> napi::Result<napi::bindgen_prelude::sys::napi_value> {\n          #tracing_debug\n          let __wrapped_env = napi::bindgen_prelude::Env::from(env);\n          #(#arg_conversions)*\n          let #receiver_ret_name = {\n            #receiver(#(#arg_names),*)\n          };\n          #ret\n        }\n\n        #register\n      })\n      .to_tokens(tokens);\n\n      return Ok(());\n    }\n\n    // The JS engine can't properly track mutability in an async context, so refuse to compile\n    // code that tries to use async and mutability together without `unsafe` mark.\n    if self.is_async && !mut_ref_spans.is_empty() && !unsafe_ {\n      return Diagnostic::from_vec(\n        mut_ref_spans\n          .into_iter()\n          .map(|s| Diagnostic::span_error(s, \"mutable reference is unsafe with async\"))\n          .collect(),\n      );\n    }\n    if Some(FnSelf::MutRef) == self.fn_self && self.is_async && !self.unsafe_ {\n      return Err(Diagnostic::span_error(\n        self.name.span(),\n        \"&mut self in async napi methods should be marked as unsafe\",\n      ));\n    }\n\n    let build_ref_container = if self.is_async {\n      quote! {\n          struct NapiRefContainer([napi::sys::napi_ref; #arg_ref_count]);\n          impl NapiRefContainer {\n            fn drop(self, env: napi::sys::napi_env) {\n              for r in self.0.into_iter() {\n                assert_eq!(\n                  unsafe { napi::sys::napi_reference_unref(env, r, &mut 0) },\n                  napi::sys::Status::napi_ok,\n                  \"failed to delete napi ref\"\n                );\n                assert_eq!(\n                  unsafe { napi::sys::napi_delete_reference(env, r) },\n                  napi::sys::Status::napi_ok,\n                  \"failed to delete napi ref\"\n                );\n              }\n            }\n          }\n          unsafe impl Send for NapiRefContainer {}\n          unsafe impl Sync for NapiRefContainer {}\n          let _make_ref = |a: ::std::ptr::NonNull<napi::bindgen_prelude::sys::napi_value__>| {\n            let mut node_ref = ::std::mem::MaybeUninit::uninit();\n            napi::bindgen_prelude::check_status!(unsafe {\n                napi::bindgen_prelude::sys::napi_create_reference(env, a.as_ptr(), 1, node_ref.as_mut_ptr())\n              },\n              \"failed to create napi ref\"\n            )?;\n            Ok::<napi::sys::napi_ref, napi::Error>(unsafe { node_ref.assume_init() })\n          };\n          let mut _args_array = [::std::ptr::null_mut::<napi::bindgen_prelude::sys::napi_ref__>(); #arg_ref_count];\n          let mut _arg_write_index = 0;\n\n          #(#refs)*\n\n          #[cfg(debug_assertions)]\n          {\n            for a in &_args_array {\n              assert!(!a.is_null(), \"failed to initialize napi ref\");\n            }\n          }\n          let _args_ref = NapiRefContainer(_args_array);\n      }\n    } else {\n      quote! {}\n    };\n    let native_call = if !self.is_async {\n      if self.within_async_runtime {\n        quote! {\n          napi::bindgen_prelude::within_runtime_if_available(move || {\n            let #receiver_ret_name = {\n              #receiver(#(#arg_names),*)\n            };\n            #ret\n          })\n        }\n      } else {\n        quote! {\n          let #receiver_ret_name = {\n            #receiver(#(#arg_names),*)\n          };\n          #ret\n        }\n      }\n    } else {\n      let call = if self.is_ret_result {\n        quote! { #receiver(#(#arg_names),*).await }\n      } else {\n        let ret_type = if let Some(t) = &self.ret {\n          quote! { #t }\n        } else {\n          quote! { () }\n        };\n        quote! { Ok::<#ret_type, napi::Error>(#receiver(#(#arg_names),*).await) }\n      };\n      quote! {\n        napi::bindgen_prelude::execute_tokio_future_with_finalize_callback(env, async move { #call }, move |env, #receiver_ret_name| {\n          #ret\n        }, Some(Box::new(move |env| {\n          _args_ref.drop(env);\n        })))\n      }\n    };\n\n    // async factory only\n    let use_after_async = if self.is_async && self.parent.is_some() && self.fn_self.is_none() {\n      quote! { true }\n    } else {\n      quote! { false }\n    };\n\n    let function_call_inner = quote! {\n      napi::bindgen_prelude::CallbackInfo::<#args_len>::new(env, cb, None, #use_after_async).and_then(|#[allow(unused_mut)] mut cb| {\n          let __wrapped_env = napi::bindgen_prelude::Env::from(env);\n          #build_ref_container\n          #(#arg_conversions)*\n          #native_call\n        })\n    };\n\n    let function_call = if args_len == 0\n      && self.fn_self.is_none()\n      && self.kind != FnKind::Constructor\n      && self.kind != FnKind::Factory\n      && !self.is_async\n    {\n      quote! { #native_call }\n    } else if self.kind == FnKind::Constructor {\n      let return_from_factory = if self.catch_unwind {\n        quote! { return Ok(std::ptr::null_mut()); }\n      } else {\n        quote! { return std::ptr::null_mut(); }\n      };\n      quote! {\n        // constructor function is called from class `factory`\n        // so we should skip the original `constructor` logic\n        if napi::__private::___CALL_FROM_FACTORY.with(|inner| inner.get()) {\n            #return_from_factory\n        }\n        #function_call_inner\n      }\n    } else {\n      function_call_inner\n    };\n\n    let function_call = if self.catch_unwind {\n      quote! {\n        {\n          std::panic::catch_unwind(|| { #function_call })\n            .map_err(|e| {\n              let message = {\n                if let Some(string) = e.downcast_ref::<String>() {\n                  string.clone()\n                } else if let Some(string) = e.downcast_ref::<&str>() {\n                  string.to_string()\n                } else {\n                  format!(\"panic from Rust code: {:?}\", e)\n                }\n              };\n              napi::Error::new(napi::Status::GenericFailure, message)\n            })\n            .and_then(|r| r)\n        }\n      }\n    } else {\n      quote! {\n        #function_call\n      }\n    };\n\n    (quote! {\n      #(#attrs)*\n      #[doc(hidden)]\n      #[allow(non_snake_case)]\n      #[allow(clippy::all)]\n      extern \"C\" fn #intermediate_ident(\n        env: napi::bindgen_prelude::sys::napi_env,\n        cb: napi::bindgen_prelude::sys::napi_callback_info\n      ) -> napi::bindgen_prelude::sys::napi_value {\n        #tracing_debug\n        unsafe {\n          #function_call.unwrap_or_else(|e| {\n            napi::bindgen_prelude::JsError::from(e).throw_into(env);\n            std::ptr::null_mut::<napi::bindgen_prelude::sys::napi_value__>()\n          })\n        }\n      }\n\n      #register\n    })\n    .to_tokens(tokens);\n\n    Ok(())\n  }\n}\n\nimpl NapiFn {\n  fn gen_arg_conversions(&self) -> BindgenResult<ArgConversions> {\n    let mut arg_conversions = vec![];\n    let mut args = vec![];\n    let mut refs = vec![];\n    let mut mut_ref_spans = vec![];\n\n    // fetch this\n    if let Some(parent) = &self.parent {\n      match self.fn_self {\n        Some(FnSelf::Ref) => {\n          refs.push(make_ref(quote! { cb.this }));\n          arg_conversions.push(quote! {\n            let this_ptr = cb.unwrap_raw::<#parent>()?;\n            let this: &#parent = Box::leak(Box::from_raw(this_ptr));\n          });\n        }\n        Some(FnSelf::MutRef) => {\n          refs.push(make_ref(quote! { cb.this }));\n          arg_conversions.push(quote! {\n            let this_ptr = cb.unwrap_raw::<#parent>()?;\n            let this: &mut #parent = Box::leak(Box::from_raw(this_ptr));\n          });\n        }\n        _ => {}\n      };\n    }\n\n    let mut skipped_arg_count = 0;\n    for (i, arg) in self.args.iter().enumerate() {\n      let i = i - skipped_arg_count;\n      let ident = Ident::new(&format!(\"arg{i}\"), Span::call_site());\n\n      match &arg.kind {\n        NapiFnArgKind::PatType(path) => {\n          if &path.ty.to_token_stream().to_string() == \"Env\" {\n            args.push(quote! { __wrapped_env });\n            skipped_arg_count += 1;\n          } else {\n            let is_in_class = self.parent.is_some();\n            // get `f64` in `foo: f64`\n            if let syn::Type::Path(path) = path.ty.as_ref() {\n              // get `Reference` in `napi::bindgen_prelude::Reference`\n              if let Some(p) = path.path.segments.last() {\n                if p.ident == \"Reference\" {\n                  if !is_in_class {\n                    bail_span!(p, \"`Reference` is only allowed in class methods\");\n                  }\n                  // get `FooStruct` in `Reference<FooStruct>`\n                  if let syn::PathArguments::AngleBracketed(syn::AngleBracketedGenericArguments {\n                    args: angle_bracketed_args,\n                    ..\n                  }) = &p.arguments\n                  {\n                    if let Some(syn::GenericArgument::Type(syn::Type::Path(path))) =\n                      angle_bracketed_args.first()\n                    {\n                      if let Some(p) = path.path.segments.first() {\n                        if p.ident == *self.parent.as_ref().unwrap() {\n                          args.push(quote! {\n                            napi::bindgen_prelude::Reference::from_value_ptr(this_ptr.cast(), env)?\n                          });\n                          skipped_arg_count += 1;\n                          continue;\n                        }\n                      }\n                    }\n                  }\n                } else if p.ident == \"This\" {\n                  // get `FooStruct` in `This<FooStruct>`\n                  if let syn::PathArguments::AngleBracketed(syn::AngleBracketedGenericArguments {\n                    args: angle_bracketed_args,\n                    ..\n                  }) = &p.arguments\n                  {\n                    if let Some(syn::GenericArgument::Type(generic_type)) =\n                      angle_bracketed_args.first()\n                    {\n                      if let syn::Type::Path(syn::TypePath {\n                        path: syn::Path { segments, .. },\n                        ..\n                      }) = generic_type\n                      {\n                        if let Some(syn::PathSegment { ident, .. }) = segments.first() {\n                          if let Some((primitive_type, _)) =\n                            crate::PRIMITIVE_TYPES.iter().find(|(p, _)| ident == *p)\n                          {\n                            bail_span!(\n                              ident,\n                              \"This type must not be {} \\nthis in JavaScript function must be `Object` type or `undefined`\",\n                              primitive_type\n                            );\n                          }\n                          args.push(\n                            quote! {\n                              {\n                                <#ident as napi::bindgen_prelude::FromNapiValue>::from_napi_value(env, cb.this)?.into()\n                              }\n                            },\n                          );\n                          skipped_arg_count += 1;\n                          continue;\n                        }\n                      } else if let syn::Type::Reference(syn::TypeReference {\n                        elem,\n                        mutability,\n                        ..\n                      }) = generic_type\n                      {\n                        if let syn::Type::Path(syn::TypePath {\n                          path: syn::Path { segments, .. },\n                          ..\n                        }) = elem.as_ref()\n                        {\n                          if let Some(syn::PathSegment { ident, .. }) = segments.first() {\n                            refs.push(make_ref(quote! { cb.this }));\n                            let token = if mutability.is_some() {\n                              mut_ref_spans.push(generic_type.span());\n                              quote! { <#ident as napi::bindgen_prelude::FromNapiMutRef>::from_napi_mut_ref(env, cb.this)?.into() }\n                            } else {\n                              quote! { <#ident as napi::bindgen_prelude::FromNapiRef>::from_napi_ref(env, cb.this)?.into() }\n                            };\n                            args.push(token);\n                            skipped_arg_count += 1;\n                            continue;\n                          }\n                        }\n                      }\n                    }\n                  }\n                  refs.push(make_ref(quote! { cb.this }));\n                  args.push(quote! { <napi::bindgen_prelude::This as napi::bindgen_prelude::FromNapiValue>::from_napi_value(env, cb.this)? });\n                  skipped_arg_count += 1;\n                  continue;\n                }\n              }\n            }\n            let (arg_conversion, arg_type) = self.gen_ty_arg_conversion(&ident, i, path)?;\n            if NapiArgType::MutRef == arg_type {\n              mut_ref_spans.push(path.ty.span());\n            }\n            if arg_type.is_ref() {\n              refs.push(make_ref(quote! { cb.get_arg(#i) }));\n            }\n            if arg_type == NapiArgType::Env {\n              args.push(quote! { &__wrapped_env });\n              skipped_arg_count += 1;\n              continue;\n            }\n            arg_conversions.push(arg_conversion);\n            args.push(quote! { #ident });\n          }\n        }\n        NapiFnArgKind::Callback(cb) => {\n          arg_conversions.push(self.gen_cb_arg_conversion(&ident, i, cb)?);\n          args.push(quote! { #ident });\n        }\n      }\n    }\n\n    Ok(ArgConversions {\n      arg_conversions,\n      args,\n      refs,\n      mut_ref_spans,\n      unsafe_: self.unsafe_,\n    })\n  }\n\n  /// Returns a type conversion, and a boolean indicating whether this value needs to have a reference created to extend the lifetime\n  /// for async functions.\n  fn gen_ty_arg_conversion(\n    &self,\n    arg_name: &Ident,\n    index: usize,\n    path: &syn::PatType,\n  ) -> BindgenResult<(TokenStream, NapiArgType)> {\n    let mut ty = *path.ty.clone();\n    let type_check = if self.return_if_invalid {\n      quote! {\n        if let Ok(maybe_promise) = <#ty as napi::bindgen_prelude::ValidateNapiValue>::validate(env, cb.get_arg(#index)) {\n          if !maybe_promise.is_null() {\n            return Ok(maybe_promise);\n          }\n        } else {\n          return Ok(std::ptr::null_mut());\n        }\n      }\n    } else if self.strict {\n      quote! {\n        let maybe_promise = <#ty as napi::bindgen_prelude::ValidateNapiValue>::validate(env, cb.get_arg(#index))?;\n        if !maybe_promise.is_null() {\n          return Ok(maybe_promise);\n        }\n      }\n    } else {\n      quote! {}\n    };\n\n    let arg_conversion = if self.module_exports {\n      quote! { _napi_module_exports_ }\n    } else {\n      quote! { cb.get_arg(#index) }\n    };\n\n    match ty {\n      syn::Type::Reference(syn::TypeReference {\n        mutability: Some(_),\n        elem,\n        ..\n      }) => {\n        let q = quote! {\n          let #arg_name = {\n            #type_check\n            <#elem as napi::bindgen_prelude::FromNapiMutRef>::from_napi_mut_ref(env, cb.get_arg(#index))?\n          };\n        };\n        Ok((q, NapiArgType::MutRef))\n      }\n      syn::Type::Reference(syn::TypeReference {\n        mutability, elem, ..\n      }) => {\n        if let syn::Type::Slice(slice) = &*elem {\n          if let syn::Type::Path(ele) = &*slice.elem {\n            if let Some(syn::PathSegment { ident, .. }) = ele.path.segments.first() {\n              if TYPEDARRAY_SLICE_TYPES.contains_key(&&*ident.to_string()) {\n                let q = quote! {\n                  let #arg_name = {\n                    #type_check\n                    <&mut #elem as napi::bindgen_prelude::FromNapiValue>::from_napi_value(env, cb.get_arg(#index))?\n                  };\n                };\n                return Ok((q, NapiArgType::Ref));\n              }\n            }\n          }\n        }\n        let q = if mutability.is_some() {\n          quote! {\n            let #arg_name = {\n              #type_check\n              <#elem as napi::bindgen_prelude::FromNapiMutRef>::from_napi_mut_ref(env, cb.get_arg(#index))?\n            }\n          }\n        } else {\n          if let syn::Type::Path(ele) = &*elem {\n            if let Some(syn::PathSegment { ident, .. }) = ele.path.segments.last() {\n              if ident == \"Env\" {\n                return Ok((quote! {}, NapiArgType::Env));\n              } else if ident == \"str\" {\n                bail_span!(\n                  elem,\n                  \"JavaScript String is primitive and cannot be passed by reference\"\n                );\n              }\n            }\n          }\n          quote! {\n            let #arg_name = {\n              #type_check\n              <#elem as napi::bindgen_prelude::FromNapiRef>::from_napi_ref(env, cb.get_arg(#index))?\n            };\n          }\n        };\n        Ok((\n          q,\n          if mutability.is_some() {\n            NapiArgType::MutRef\n          } else {\n            NapiArgType::Ref\n          },\n        ))\n      }\n      _ => {\n        hidden_ty_lifetime(&mut ty)?;\n        let mut arg_type = NapiArgType::Value;\n        let mut is_array = false;\n        if let syn::Type::Path(path) = &ty {\n          // Detect cases where the type is `Vec<&S>`.\n          // For example, in `async fn foo(v: Vec<&S>) {}`, we need to handle `v` as a reference.\n          if let Some(syn::PathSegment { ident, arguments }) = path.path.segments.first() {\n            // Check if the type is a `Vec`.\n            if ident == \"Vec\" {\n              is_array = true;\n              if let syn::PathArguments::AngleBracketed(syn::AngleBracketedGenericArguments {\n                args: angle_bracketed_args,\n                ..\n              }) = &arguments\n              {\n                // Check if the generic argument of `Vec` is a reference type (e.g., `&S`).\n                if let Some(syn::GenericArgument::Type(syn::Type::Reference(\n                  syn::TypeReference { .. },\n                ))) = angle_bracketed_args.first()\n                {\n                  // If the type is `Vec<&S>`, set the argument type to `Ref`.\n                  arg_type = NapiArgType::Ref;\n                }\n              }\n            }\n          }\n        }\n        // Array::validate only validates by the `Array.isArray`\n        // For the elements of the Array, we need to return rather than throw if they are invalid when `return_if_invalid` is true\n        let from_napi_value = if is_array && self.return_if_invalid {\n          quote! {\n            match <#ty as napi::bindgen_prelude::FromNapiValue>::from_napi_value(env, #arg_conversion) {\n              Ok(value) => value,\n              Err(err) => {\n                // InvalidArg, ObjectExpected, StringExpected ...\n                if err.status < napi::bindgen_prelude::Status::GenericFailure {\n                  return Ok(std::ptr::null_mut());\n                } else {\n                  return Err(err);\n                }\n              }\n            }\n          }\n        } else {\n          quote! {\n            <#ty as napi::bindgen_prelude::FromNapiValue>::from_napi_value(env, #arg_conversion)?\n          }\n        };\n        let q = quote! {\n          let #arg_name = {\n            #type_check\n            #from_napi_value\n          };\n        };\n        Ok((q, arg_type))\n      }\n    }\n  }\n\n  fn gen_cb_arg_conversion(\n    &self,\n    arg_name: &Ident,\n    index: usize,\n    cb: &CallbackArg,\n  ) -> BindgenResult<TokenStream> {\n    let mut inputs = vec![];\n    let mut arg_conversions = vec![];\n\n    for (i, ty) in cb.args.iter().enumerate() {\n      let cb_arg_ident = Ident::new(&format!(\"callback_arg_{i}\"), Span::call_site());\n      inputs.push(quote! { #cb_arg_ident: #ty });\n      let mut maybe_has_lifetime_ty = ty.clone();\n      hidden_ty_lifetime(&mut maybe_has_lifetime_ty)?;\n      arg_conversions.push(\n        quote! { <#maybe_has_lifetime_ty as napi::bindgen_prelude::ToNapiValue>::to_napi_value(env, #cb_arg_ident)? },\n      );\n    }\n\n    let ret = match &cb.ret {\n      Some(ty) => {\n        quote! {\n          let ret = <#ty as napi::bindgen_prelude::FromNapiValue>::from_napi_value(env, ret_ptr)?;\n\n          Ok(ret)\n        }\n      }\n      None => quote! { Ok(()) },\n    };\n\n    Ok(quote! {\n      napi::bindgen_prelude::assert_type_of!(env, cb.get_arg(#index), napi::bindgen_prelude::ValueType::Function)?;\n      let #arg_name = |#(#inputs),*| {\n        let args = vec![\n          #(#arg_conversions),*\n        ];\n\n        let mut ret_ptr = std::ptr::null_mut();\n\n        napi::bindgen_prelude::check_pending_exception!(\n          env,\n          napi::bindgen_prelude::sys::napi_call_function(\n            env,\n            cb.this(),\n            cb.get_arg(#index),\n            args.len(),\n            args.as_ptr(),\n            &mut ret_ptr\n          )\n        )?;\n\n        #ret\n      };\n    })\n  }\n\n  fn gen_fn_receiver(&self) -> TokenStream {\n    let name = &self.name;\n\n    match self.fn_self {\n      Some(FnSelf::Value) => {\n        // impossible, panic! in parser\n        unreachable!();\n      }\n      Some(FnSelf::Ref) | Some(FnSelf::MutRef) => quote! { this.#name },\n      None => match &self.parent {\n        Some(class) => quote! { #class::#name },\n        None => quote! { #name },\n      },\n    }\n  }\n\n  fn gen_fn_return(&self, ret: &Ident) -> BindgenResult<TokenStream> {\n    let js_name = &self.js_name;\n\n    if let Some(ty) = &self.ret {\n      let ty_string = ty.into_token_stream().to_string();\n      let is_return_self = ty_string == \"& Self\" || ty_string == \"&mut Self\";\n      if self.kind == FnKind::Constructor {\n        let parent = self\n          .parent\n          .as_ref()\n          .expect(\"Parent must exist for constructor\");\n        if self.is_ret_result {\n          if self.parent_is_generator {\n            Ok(quote! { cb.construct_generator::<false, _>(#js_name, #ret?) })\n          } else if self.parent_is_async_generator {\n            Ok(quote! { cb.construct_async_generator::<false, _>(#js_name, #ret?) })\n          } else {\n            Ok(quote! {\n              match #ret {\n                Ok(value) => {\n                  cb.construct::<false, _>(#js_name, value)\n                }\n                Err(err) => {\n                  napi::bindgen_prelude::JsError::from(err).throw_into(env);\n                  Ok(std::ptr::null_mut())\n                }\n              }\n            })\n          }\n        } else if self.parent_is_generator {\n          Ok(quote! { cb.construct_generator::<false, #parent>(#js_name, #ret) })\n        } else if self.parent_is_async_generator {\n          Ok(quote! { cb.construct_async_generator::<false, #parent>(#js_name, #ret) })\n        } else {\n          Ok(quote! { cb.construct::<false, #parent>(#js_name, #ret) })\n        }\n      } else if self.kind == FnKind::Factory {\n        if self.is_ret_result {\n          if self.parent_is_generator {\n            Ok(quote! { cb.generator_factory(#js_name, #ret?) })\n          } else if self.parent_is_async_generator {\n            Ok(quote! { cb.async_generator_factory(#js_name, #ret?) })\n          } else if self.is_async {\n            Ok(quote! { cb.factory(#js_name, #ret) })\n          } else {\n            Ok(quote! {\n              match #ret {\n                Ok(value) => {\n                  cb.factory(#js_name, value)\n                }\n                Err(err) => {\n                  napi::bindgen_prelude::JsError::from(err).throw_into(env);\n                  Ok(std::ptr::null_mut())\n                }\n              }\n            })\n          }\n        } else if self.parent_is_generator {\n          Ok(quote! { cb.generator_factory(#js_name, #ret) })\n        } else if self.parent_is_async_generator {\n          Ok(quote! { cb.async_generator_factory(#js_name, #ret) })\n        } else {\n          Ok(quote! { cb.factory(#js_name, #ret) })\n        }\n      } else if self.is_ret_result {\n        if self.is_async {\n          Ok(quote! {\n            <#ty as napi::bindgen_prelude::ToNapiValue>::to_napi_value(env, #ret)\n          })\n        } else if is_return_self {\n          Ok(quote! { #ret.map(|_| cb.this) })\n        } else {\n          Ok(quote! {\n            match #ret {\n              Ok(value) => napi::bindgen_prelude::ToNapiValue::to_napi_value(env, value),\n              Err(err) => {\n                napi::bindgen_prelude::JsError::from(err).throw_into(env);\n                Ok(std::ptr::null_mut())\n              },\n            }\n          })\n        }\n      } else if is_return_self {\n        Ok(quote! { Ok(cb.this) })\n      } else {\n        let mut return_ty = ty.clone();\n        hidden_ty_lifetime(&mut return_ty)?;\n        Ok(quote! {\n          <#return_ty as napi::bindgen_prelude::ToNapiValue>::to_napi_value(env, #ret)\n        })\n      }\n    } else {\n      Ok(quote! {\n        <() as napi::bindgen_prelude::ToNapiValue>::to_napi_value(env, ())\n      })\n    }\n  }\n\n  fn gen_fn_register(&self) -> TokenStream {\n    if self.parent.is_some() || cfg!(test) {\n      quote! {}\n    } else {\n      let name_str = self.name.to_string();\n      let js_name = format!(\"{}\\0\", &self.js_name);\n      let name_len = self.js_name.len();\n      let module_register_name = &self.register_name;\n      let intermediate_ident = get_intermediate_ident(&name_str);\n      let js_mod_ident = js_mod_to_token_stream(self.js_mod.as_ref());\n      let cb_name = Ident::new(\n        &format!(\"_napi_rs_internal_register_{name_str}\"),\n        Span::call_site(),\n      );\n\n      if self.module_exports {\n        return quote! {\n          #[doc(hidden)]\n          #[allow(non_snake_case)]\n          #[allow(clippy::all)]\n          unsafe fn #cb_name(env: napi::bindgen_prelude::sys::napi_env, exports: napi::bindgen_prelude::sys::napi_value) -> napi::bindgen_prelude::Result<napi::bindgen_prelude::sys::napi_value> {\n            #intermediate_ident(env, exports)?;\n            Ok(exports)\n          }\n\n          #[doc(hidden)]\n          #[allow(clippy::all)]\n          #[allow(non_snake_case)]\n          #[cfg(all(not(test), not(target_family = \"wasm\")))]\n          #[napi::ctor::ctor(crate_path=::napi::ctor)]\n          fn #module_register_name() {\n            napi::bindgen_prelude::register_module_export_hook(#cb_name);\n          }\n\n          #[allow(clippy::all)]\n          #[allow(non_snake_case)]\n          #[cfg(all(not(test), target_family = \"wasm\"))]\n          #[no_mangle]\n          extern \"C\" fn #module_register_name() {\n            napi::bindgen_prelude::register_module_export_hook(#cb_name);\n          }\n        };\n      }\n\n      let register_module_export_tokens = if self.no_export {\n        quote! {}\n      } else {\n        quote! {\n          #[doc(hidden)]\n          #[allow(clippy::all)]\n          #[allow(non_snake_case)]\n          #[cfg(all(not(test), not(target_family = \"wasm\")))]\n          #[napi::ctor::ctor(crate_path=::napi::ctor)]\n          fn #module_register_name() {\n            napi::bindgen_prelude::register_module_export(#js_mod_ident, #js_name, #cb_name);\n          }\n\n          #[doc(hidden)]\n          #[allow(clippy::all)]\n          #[allow(non_snake_case)]\n          #[cfg(all(not(test), target_family = \"wasm\"))]\n          #[no_mangle]\n          extern \"C\" fn #module_register_name() {\n            napi::bindgen_prelude::register_module_export(#js_mod_ident, #js_name, #cb_name);\n          }\n        }\n      };\n\n      quote! {\n        #[doc(hidden)]\n        #[allow(non_snake_case)]\n        #[allow(clippy::all)]\n        unsafe fn #cb_name(env: napi::bindgen_prelude::sys::napi_env) -> napi::bindgen_prelude::Result<napi::bindgen_prelude::sys::napi_value> {\n          let mut fn_ptr = std::ptr::null_mut();\n\n          napi::bindgen_prelude::check_status!(\n            napi::bindgen_prelude::sys::napi_create_function(\n              env,\n              #js_name.as_ptr().cast(),\n              #name_len as isize,\n              Some(#intermediate_ident),\n              std::ptr::null_mut(),\n              &mut fn_ptr,\n            ),\n            \"Failed to register function `{}`\",\n            #name_str,\n          )?;\n          Ok(fn_ptr)\n        }\n\n        #register_module_export_tokens\n      }\n    }\n  }\n}\n\nfn hidden_ty_lifetime(ty: &mut syn::Type) -> BindgenResult<()> {\n  match ty {\n    Type::Path(TypePath {\n      path: syn::Path { segments, .. },\n      ..\n    }) => {\n      if let Some(syn::PathSegment {\n        arguments:\n          syn::PathArguments::AngleBracketed(syn::AngleBracketedGenericArguments { args, .. }),\n        ..\n      }) = segments.last_mut()\n      {\n        let mut has_lifetime = false;\n        if let Some(syn::GenericArgument::Lifetime(lt)) = args.first_mut() {\n          *lt = syn::Lifetime::new(\"'_\", Span::call_site());\n          has_lifetime = true;\n        }\n        for arg in args.iter_mut().skip(if has_lifetime { 1 } else { 0 }) {\n          if let syn::GenericArgument::Type(ty) = arg {\n            hidden_ty_lifetime(ty)?;\n          }\n        }\n      }\n    }\n    Type::Reference(TypeReference {\n      lifetime: Some(lt), ..\n    }) => {\n      *lt = syn::Lifetime::new(\"'_\", Span::call_site());\n    }\n    _ => {}\n  }\n  Ok(())\n}\n\nfn make_ref(input: TokenStream) -> TokenStream {\n  quote! {\n    _args_array[_arg_write_index] = _make_ref(\n      ::std::ptr::NonNull::new(#input)\n        .ok_or_else(|| napi::Error::new(napi::Status::InvalidArg, \"referenced ptr is null\".to_owned()))?\n    )?;\n    _arg_write_index += 1;\n  }\n}\n\nstruct ArgConversions {\n  pub args: Vec<TokenStream>,\n  pub arg_conversions: Vec<TokenStream>,\n  pub refs: Vec<TokenStream>,\n  pub mut_ref_spans: Vec<Span>,\n  pub unsafe_: bool,\n}\n\n#[derive(Debug, PartialEq, Eq)]\nenum NapiArgType {\n  Ref,\n  MutRef,\n  Value,\n  Env,\n}\n\nimpl NapiArgType {\n  fn is_ref(&self) -> bool {\n    matches!(self, NapiArgType::Ref | NapiArgType::MutRef)\n  }\n}\n"
  },
  {
    "path": "crates/backend/src/codegen/struct.rs",
    "content": "use std::collections::HashMap;\nuse std::sync::atomic::{AtomicU32, Ordering};\n\nuse proc_macro2::{Ident, Literal, Span, TokenStream};\nuse quote::ToTokens;\n\nuse crate::util::to_case;\n\nuse crate::{\n  codegen::{get_intermediate_ident, js_mod_to_token_stream},\n  BindgenResult, FnKind, NapiImpl, NapiStruct, NapiStructKind, TryToTokens,\n};\nuse crate::{NapiArray, NapiClass, NapiObject, NapiStructuredEnum, NapiTransparent};\n\nstatic NAPI_IMPL_ID: AtomicU32 = AtomicU32::new(0);\n\nconst STRUCT_FIELD_SPECIAL_CASE: &[&str] = &[\"Option\", \"Result\"];\n\n#[cfg(feature = \"tracing\")]\nfn gen_tracing_debug(class_name: &str, method_name: &str) -> TokenStream {\n  let full_name = format!(\"{}::{}\", class_name, method_name);\n  quote! {\n    napi::bindgen_prelude::tracing::debug!(target: \"napi\", \"{}\", #full_name);\n  }\n}\n\n#[cfg(not(feature = \"tracing\"))]\nfn gen_tracing_debug(_class_name: &str, _method_name: &str) -> TokenStream {\n  quote! {}\n}\n\n// Generate trait implementations for given Struct.\nfn gen_napi_value_map_impl(\n  name: &Ident,\n  to_napi_val_impl: TokenStream,\n  has_lifetime: bool,\n) -> TokenStream {\n  let name_str = name.to_string();\n  let name = if has_lifetime {\n    quote! { #name<'_> }\n  } else {\n    quote! { #name }\n  };\n  let js_name_str = format!(\"{name_str}\\0\");\n  let validate = quote! {\n    unsafe fn validate(env: napi::sys::napi_env, napi_val: napi::sys::napi_value) -> napi::Result<napi::sys::napi_value> {\n      if let Some(ctor_ref) = napi::bindgen_prelude::get_class_constructor(#js_name_str) {\n        let mut ctor = std::ptr::null_mut();\n        napi::check_status!(\n          napi::sys::napi_get_reference_value(env, ctor_ref, &mut ctor),\n          \"Failed to get constructor reference of class `{}`\",\n          #name_str\n        )?;\n        let mut is_instance_of = false;\n        napi::check_status!(\n          napi::sys::napi_instanceof(env, napi_val, ctor, &mut is_instance_of),\n          \"Failed to get external value of class `{}`\",\n          #name_str\n        )?;\n        if is_instance_of {\n          Ok(std::ptr::null_mut())\n        } else {\n          Err(napi::Error::new(\n            napi::Status::InvalidArg,\n            format!(\"Value is not instanceof class `{}`\", #name_str)\n          ))\n        }\n      } else {\n        Err(napi::Error::new(\n          napi::Status::InvalidArg,\n          format!(\"Failed to get constructor of class `{}`\", #name_str)\n        ))\n      }\n    }\n  };\n  quote! {\n    #[automatically_derived]\n    impl napi::bindgen_prelude::TypeName for #name {\n      fn type_name() -> &'static str {\n        #name_str\n      }\n\n      fn value_type() -> napi::ValueType {\n        napi::ValueType::Function\n      }\n    }\n\n    #[automatically_derived]\n    impl napi::bindgen_prelude::TypeName for &#name {\n      fn type_name() -> &'static str {\n        #name_str\n      }\n\n      fn value_type() -> napi::ValueType {\n        napi::ValueType::Object\n      }\n    }\n\n    #[automatically_derived]\n    impl napi::bindgen_prelude::TypeName for &mut #name {\n      fn type_name() -> &'static str {\n        #name_str\n      }\n\n      fn value_type() -> napi::ValueType {\n        napi::ValueType::Object\n      }\n    }\n\n    #to_napi_val_impl\n\n    #[automatically_derived]\n    impl napi::bindgen_prelude::FromNapiRef for #name {\n      unsafe fn from_napi_ref(\n        env: napi::bindgen_prelude::sys::napi_env,\n        napi_val: napi::bindgen_prelude::sys::napi_value\n      ) -> napi::bindgen_prelude::Result<&'static Self> {\n        let mut wrapped_val: *mut std::ffi::c_void = std::ptr::null_mut();\n\n        napi::bindgen_prelude::check_status!(\n          napi::bindgen_prelude::sys::napi_unwrap(env, napi_val, &mut wrapped_val),\n          \"Failed to recover `{}` type from napi value\",\n          #name_str,\n        )?;\n\n        Ok(&*(wrapped_val as *const #name))\n      }\n    }\n\n    #[automatically_derived]\n    impl napi::bindgen_prelude::FromNapiMutRef for #name {\n      unsafe fn from_napi_mut_ref(\n        env: napi::bindgen_prelude::sys::napi_env,\n        napi_val: napi::bindgen_prelude::sys::napi_value\n      ) -> napi::bindgen_prelude::Result<&'static mut Self> {\n        let mut wrapped_val: *mut std::ffi::c_void = std::ptr::null_mut();\n\n        napi::bindgen_prelude::check_status!(\n          napi::bindgen_prelude::sys::napi_unwrap(env, napi_val, &mut wrapped_val),\n          \"Failed to recover `{}` type from napi value\",\n          #name_str,\n        )?;\n\n        Ok(&mut *(wrapped_val as *mut #name))\n      }\n    }\n\n    #[automatically_derived]\n    impl napi::bindgen_prelude::ValidateNapiValue for &#name {\n      #validate\n    }\n\n    #[automatically_derived]\n    impl napi::bindgen_prelude::ValidateNapiValue for &mut #name {\n      #validate\n    }\n  }\n}\n\nimpl TryToTokens for NapiStruct {\n  fn try_to_tokens(&self, tokens: &mut TokenStream) -> BindgenResult<()> {\n    let napi_value_map_impl = self.gen_napi_value_map_impl();\n\n    let class_helper_mod = match &self.kind {\n      NapiStructKind::Class(class) => self.gen_helper_mod(class),\n      _ => quote! {},\n    };\n\n    (quote! {\n      #napi_value_map_impl\n      #class_helper_mod\n    })\n    .to_tokens(tokens);\n\n    Ok(())\n  }\n}\n\nimpl NapiStruct {\n  fn gen_helper_mod(&self, class: &NapiClass) -> TokenStream {\n    let mod_name = Ident::new(&format!(\"__napi_helper__{}\", self.name), Span::call_site());\n\n    let ctor = if class.ctor {\n      self.gen_default_ctor(class)\n    } else {\n      quote! {}\n    };\n\n    let mut getters_setters = self.gen_default_getters_setters(class);\n    getters_setters.sort_by(|a, b| a.0.cmp(&b.0));\n    let register = self.gen_register(class);\n\n    let getters_setters_token = getters_setters.into_iter().map(|(_, token)| token);\n\n    quote! {\n      #[allow(clippy::all)]\n      #[allow(non_snake_case)]\n      mod #mod_name {\n        use std::ptr;\n        use super::*;\n\n        #ctor\n        #(#getters_setters_token)*\n        #register\n      }\n    }\n  }\n\n  fn gen_default_ctor(&self, class: &NapiClass) -> TokenStream {\n    let name = &self.name;\n    let js_name_str = &self.js_name;\n    let fields_len = class.fields.len();\n    let mut fields = vec![];\n\n    for (i, field) in class.fields.iter().enumerate() {\n      let ty = &field.ty;\n      match &field.name {\n        syn::Member::Named(ident) => fields\n          .push(quote! { #ident: <#ty as napi::bindgen_prelude::FromNapiValue>::from_napi_value(env, cb.get_arg(#i))? }),\n        syn::Member::Unnamed(_) => {\n          fields.push(quote! { <#ty as napi::bindgen_prelude::FromNapiValue>::from_napi_value(env, cb.get_arg(#i))? });\n        }\n      }\n    }\n\n    let construct = if class.is_tuple {\n      quote! { #name (#(#fields),*) }\n    } else {\n      quote! { #name {#(#fields),*} }\n    };\n\n    let is_empty_struct_hint = fields_len == 0;\n\n    let constructor = if class.implement_iterator {\n      quote! { unsafe { cb.construct_generator::<#is_empty_struct_hint, #name>(#js_name_str, #construct) } }\n    } else {\n      quote! { unsafe { cb.construct::<#is_empty_struct_hint, #name>(#js_name_str, #construct) } }\n    };\n\n    let tracing_debug = gen_tracing_debug(js_name_str, \"constructor\");\n\n    quote! {\n      extern \"C\" fn constructor(\n        env: napi::bindgen_prelude::sys::napi_env,\n        cb: napi::bindgen_prelude::sys::napi_callback_info\n      ) -> napi::bindgen_prelude::sys::napi_value {\n        #tracing_debug\n        napi::bindgen_prelude::CallbackInfo::<#fields_len>::new(env, cb, None, false)\n          .and_then(|cb| #constructor)\n          .unwrap_or_else(|e| {\n            unsafe { napi::bindgen_prelude::JsError::from(e).throw_into(env) };\n            std::ptr::null_mut::<napi::bindgen_prelude::sys::napi_value__>()\n          })\n      }\n    }\n  }\n\n  fn gen_napi_value_map_impl(&self) -> TokenStream {\n    match &self.kind {\n      NapiStructKind::Array(array) => self.gen_napi_value_array_impl(array),\n      NapiStructKind::Transparent(transparent) => self.gen_napi_value_transparent_impl(transparent),\n      NapiStructKind::Class(class) if !class.ctor => gen_napi_value_map_impl(\n        &self.name,\n        self.gen_to_napi_value_ctor_impl_for_non_default_constructor_struct(class),\n        self.has_lifetime,\n      ),\n      NapiStructKind::Class(class) => gen_napi_value_map_impl(\n        &self.name,\n        self.gen_to_napi_value_ctor_impl(class),\n        self.has_lifetime,\n      ),\n      NapiStructKind::Object(obj) => self.gen_to_napi_value_obj_impl(obj),\n      NapiStructKind::StructuredEnum(structured_enum) => {\n        self.gen_to_napi_value_structured_enum_impl(structured_enum)\n      }\n    }\n  }\n\n  fn gen_to_napi_value_ctor_impl_for_non_default_constructor_struct(\n    &self,\n    class: &NapiClass,\n  ) -> TokenStream {\n    let name = &self.name;\n    let js_name_raw = &self.js_name;\n    let js_name_str = format!(\"{js_name_raw}\\0\");\n    let iterator_implementation = self.gen_iterator_property(class, name);\n    let async_iterator_implementation = self.gen_async_iterator_property(class, name);\n    let (object_finalize_impl, to_napi_value_impl, javascript_class_ext_impl) = if self.has_lifetime\n    {\n      let name = quote! { #name<'_javascript_function_scope> };\n      (\n        quote! { impl <'_javascript_function_scope> napi::bindgen_prelude::ObjectFinalize for #name {} },\n        quote! { impl <'_javascript_function_scope> napi::bindgen_prelude::ToNapiValue for #name },\n        quote! { impl <'_javascript_function_scope> napi::bindgen_prelude::JavaScriptClassExt for #name },\n      )\n    } else {\n      (\n        quote! { impl napi::bindgen_prelude::ObjectFinalize for #name {} },\n        quote! { impl napi::bindgen_prelude::ToNapiValue for #name },\n        quote! { impl napi::bindgen_prelude::JavaScriptClassExt for #name },\n      )\n    };\n    let finalize_trait = if class.use_custom_finalize {\n      quote! {}\n    } else {\n      quote! {\n        #[automatically_derived]\n        #object_finalize_impl\n      }\n    };\n    quote! {\n      #[automatically_derived]\n      #to_napi_value_impl {\n        unsafe fn to_napi_value(\n          env: napi::sys::napi_env,\n          val: #name\n        ) -> napi::Result<napi::bindgen_prelude::sys::napi_value> {\n          if let Some(ctor_ref) = napi::__private::get_class_constructor(#js_name_str) {\n            let mut wrapped_value = Box::into_raw(Box::new(val));\n            if wrapped_value as usize == 0x1 {\n              wrapped_value = Box::into_raw(Box::new(0u8)).cast();\n            }\n            let instance_value = napi::bindgen_prelude::new_instance::<#name>(env, wrapped_value.cast(), ctor_ref)?;\n            #iterator_implementation\n            #async_iterator_implementation\n            Ok(instance_value)\n          } else {\n            Err(napi::bindgen_prelude::Error::new(\n              napi::bindgen_prelude::Status::InvalidArg, format!(\"Failed to get constructor of class `{}` in `ToNapiValue`\", #js_name_raw))\n            )\n          }\n        }\n      }\n\n      #finalize_trait\n\n      #[automatically_derived]\n      #javascript_class_ext_impl {\n        fn into_instance<'scope>(self, env: &'scope napi::Env) -> napi::Result<napi::bindgen_prelude::ClassInstance<'scope, Self>>\n         {\n          if let Some(ctor_ref) = napi::bindgen_prelude::get_class_constructor(#js_name_str) {\n            unsafe {\n              let wrapped_value = Box::into_raw(Box::new(self));\n              let instance_value = napi::bindgen_prelude::new_instance::<#name>(env.raw(), wrapped_value as *mut _ as *mut std::ffi::c_void, ctor_ref)?;\n              Ok(napi::bindgen_prelude::ClassInstance::new(instance_value, env.raw(), wrapped_value))\n            }\n          } else {\n            Err(napi::bindgen_prelude::Error::new(\n              napi::bindgen_prelude::Status::InvalidArg, format!(\"Failed to get constructor of class `{}`\", #js_name_raw))\n            )\n          }\n        }\n\n        fn into_reference(self, env: napi::Env) -> napi::Result<napi::bindgen_prelude::Reference<Self>> {\n          if let Some(ctor_ref) = napi::bindgen_prelude::get_class_constructor(#js_name_str) {\n            unsafe {\n              let mut wrapped_value = Box::into_raw(Box::new(self));\n              if wrapped_value as usize == 0x1 {\n                wrapped_value = Box::into_raw(Box::new(0u8)).cast();\n              }\n              let instance_value = napi::bindgen_prelude::new_instance::<#name>(env.raw(), wrapped_value.cast(), ctor_ref)?;\n              {\n                let env = env.raw();\n                #iterator_implementation\n                #async_iterator_implementation\n              }\n              napi::bindgen_prelude::Reference::<#name>::from_value_ptr(wrapped_value.cast(), env.raw())\n            }\n          } else {\n            Err(napi::bindgen_prelude::Error::new(\n              napi::bindgen_prelude::Status::InvalidArg, format!(\"Failed to get constructor of class `{}`\", #js_name_raw))\n            )\n          }\n        }\n\n        fn instance_of<'env, V: napi::JsValue<'env>>(env: &napi::bindgen_prelude::Env, value: &V) -> napi::bindgen_prelude::Result<bool> {\n          if let Some(ctor_ref) = napi::bindgen_prelude::get_class_constructor(#js_name_str) {\n            let mut ctor = std::ptr::null_mut();\n            napi::check_status!(\n              unsafe { napi::sys::napi_get_reference_value(env.raw(), ctor_ref, &mut ctor) },\n              \"Failed to get constructor reference of class `{}`\",\n              #js_name_str\n            )?;\n            let mut is_instance_of = false;\n            napi::check_status!(\n              unsafe { napi::sys::napi_instanceof(env.raw(), value.value().value, ctor, &mut is_instance_of) },\n              \"Failed to run instanceof for class `{}`\",\n              #js_name_str\n            )?;\n            Ok(is_instance_of)\n          } else {\n            Err(napi::Error::new(napi::Status::GenericFailure, format!(\"Failed to get constructor of class `{}`\", #js_name_str)))\n          }\n        }\n      }\n    }\n  }\n\n  fn gen_iterator_property(&self, class: &NapiClass, name: &Ident) -> TokenStream {\n    if !class.implement_iterator {\n      return quote! {};\n    }\n    quote! {\n      unsafe { napi::__private::create_iterator::<#name>(env, instance_value, wrapped_value); }\n    }\n  }\n\n  fn gen_async_iterator_property(&self, class: &NapiClass, name: &Ident) -> TokenStream {\n    if !class.implement_async_iterator {\n      return quote! {};\n    }\n    // Note: `create_async_iterator` is NOT unsafe, unlike `create_iterator`.\n    // `create_iterator` is unsafe because `ScopedGenerator<'a>` has a lifetime parameter,\n    // requiring the caller to uphold lifetime invariants. `create_async_iterator` uses\n    // `AsyncGenerator` whose Future must be `Send + 'static`, so all data is owned and\n    // no lifetime invariants need to be upheld by the caller.\n    quote! {\n      napi::__private::create_async_iterator::<#name>(env, instance_value, wrapped_value);\n    }\n  }\n\n  fn gen_to_napi_value_ctor_impl(&self, class: &NapiClass) -> TokenStream {\n    let name = &self.name;\n    let js_name_without_null = &self.js_name;\n    let js_name_str = format!(\"{}\\0\", &self.js_name);\n\n    let mut field_conversions = vec![];\n    let mut field_destructions = vec![];\n\n    for field in class.fields.iter() {\n      let ty = &field.ty;\n\n      match &field.name {\n        syn::Member::Named(ident) => {\n          // alias here prevents field name shadowing\n          let alias_ident = format_ident!(\"{}_\", ident);\n          field_destructions.push(quote! { #ident: #alias_ident });\n          field_conversions.push(\n            quote! { <#ty as napi::bindgen_prelude::ToNapiValue>::to_napi_value(env, #alias_ident)? },\n          );\n        }\n        syn::Member::Unnamed(i) => {\n          let arg_name = format_ident!(\"arg{}\", i);\n          field_destructions.push(quote! { #arg_name });\n          field_conversions.push(\n            quote! { <#ty as napi::bindgen_prelude::ToNapiValue>::to_napi_value(env, #arg_name)? },\n          );\n        }\n      }\n    }\n\n    let destructed_fields = if class.is_tuple {\n      quote! {\n        Self (#(#field_destructions),*)\n      }\n    } else {\n      quote! {\n        Self {#(#field_destructions),*}\n      }\n    };\n\n    let finalize_trait = if class.use_custom_finalize {\n      quote! {}\n    } else if self.has_lifetime {\n      quote! { impl <'_javascript_function_scope> napi::bindgen_prelude::ObjectFinalize for #name<'_javascript_function_scope> {} }\n    } else {\n      quote! { impl napi::bindgen_prelude::ObjectFinalize for #name {} }\n    };\n\n    let to_napi_value_impl = if self.has_lifetime {\n      quote! { impl <'_javascript_function_scope> napi::bindgen_prelude::ToNapiValue for #name<'_javascript_function_scope> }\n    } else {\n      quote! { impl napi::bindgen_prelude::ToNapiValue for #name }\n    };\n\n    quote! {\n      #[automatically_derived]\n      #to_napi_value_impl {\n        unsafe fn to_napi_value(\n          env: napi::bindgen_prelude::sys::napi_env,\n          val: #name,\n        ) -> napi::bindgen_prelude::Result<napi::bindgen_prelude::sys::napi_value> {\n          if let Some(ctor_ref) = napi::bindgen_prelude::get_class_constructor(#js_name_str) {\n            let mut ctor = std::ptr::null_mut();\n\n            napi::bindgen_prelude::check_status!(\n              napi::bindgen_prelude::sys::napi_get_reference_value(env, ctor_ref, &mut ctor),\n              \"Failed to get constructor reference of class `{}`\",\n              #js_name_without_null\n            )?;\n\n            let mut instance_value = std::ptr::null_mut();\n            let #destructed_fields = val;\n            let args = vec![#(#field_conversions),*];\n\n            napi::bindgen_prelude::check_status!(\n              napi::bindgen_prelude::sys::napi_new_instance(env, ctor, args.len(), args.as_ptr(), &mut instance_value),\n              \"Failed to construct class `{}`\",\n              #js_name_without_null\n            )?;\n\n            Ok(instance_value)\n          } else {\n            Err(napi::bindgen_prelude::Error::new(\n              napi::bindgen_prelude::Status::InvalidArg, format!(\"Failed to get constructor of class `{}`\", #js_name_str))\n            )\n          }\n        }\n      }\n      #finalize_trait\n    }\n  }\n\n  fn gen_to_napi_value_obj_impl(&self, obj: &NapiObject) -> TokenStream {\n    let name = &self.name;\n    let name_str = self.name.to_string();\n\n    let mut obj_field_getters = vec![];\n    let mut field_destructions = vec![];\n\n    // For optimized object creation: separate always-set fields from conditionally-set fields\n    let mut value_conversions = vec![];\n    let mut property_descriptors = vec![];\n    let mut conditional_setters = vec![];\n    let mut value_names = vec![];\n\n    for (idx, field) in obj.fields.iter().enumerate() {\n      let field_js_name = &field.js_name;\n      let field_js_name_lit = Literal::string(&format!(\"{}\\0\", field.js_name));\n      let mut ty = field.ty.clone();\n      remove_lifetime_in_type(&mut ty);\n      let is_optional_field = if let syn::Type::Path(syn::TypePath {\n        path: syn::Path { segments, .. },\n        ..\n      }) = &ty\n      {\n        if let Some(last_path) = segments.last() {\n          last_path.ident == \"Option\"\n        } else {\n          false\n        }\n      } else {\n        false\n      };\n\n      // Determine if this field is always set or conditionally set\n      let is_always_set = !is_optional_field || self.use_nullable;\n\n      match &field.name {\n        syn::Member::Named(ident) => {\n          let alias_ident = format_ident!(\"{}_\", ident);\n          field_destructions.push(quote! { #ident: #alias_ident });\n\n          if is_always_set {\n            // This field is always set - use batched approach\n            let value_var = Ident::new(&format!(\"__obj_value_{}\", idx), Span::call_site());\n            value_names.push(value_var.clone());\n\n            if is_optional_field {\n              // Optional with use_nullable=true: set to value or null\n              value_conversions.push(quote! {\n                let #value_var = if let Some(inner) = #alias_ident {\n                  napi::bindgen_prelude::ToNapiValue::to_napi_value(env, inner)?\n                } else {\n                  napi::bindgen_prelude::ToNapiValue::to_napi_value(env, napi::bindgen_prelude::Null)?\n                };\n              });\n            } else {\n              // Non-optional: always set\n              value_conversions.push(quote! {\n                let #value_var = napi::bindgen_prelude::ToNapiValue::to_napi_value(env, #alias_ident)?;\n              });\n            }\n\n            property_descriptors.push(quote! {\n              napi::bindgen_prelude::sys::napi_property_descriptor {\n                utf8name: std::ffi::CStr::from_bytes_with_nul_unchecked(#field_js_name_lit.as_bytes()).as_ptr(),\n                name: std::ptr::null_mut(),\n                method: None,\n                getter: None,\n                setter: None,\n                value: #value_var,\n                attributes: napi::bindgen_prelude::sys::PropertyAttributes::writable\n                  | napi::bindgen_prelude::sys::PropertyAttributes::enumerable\n                  | napi::bindgen_prelude::sys::PropertyAttributes::configurable,\n                data: std::ptr::null_mut(),\n              }\n            });\n          } else {\n            // Optional with use_nullable=false: conditionally set\n            conditional_setters.push(quote! {\n              if #alias_ident.is_some() {\n                obj.set(#field_js_name, #alias_ident)?;\n              }\n            });\n          }\n\n          // Getters remain the same\n          if is_optional_field && !self.use_nullable {\n            obj_field_getters.push(quote! {\n              let #alias_ident: #ty = obj.get(#field_js_name).map_err(|mut err| {\n                err.reason = format!(\"{} on {}.{}\", err.reason, #name_str, #field_js_name);\n                err\n              })?;\n            });\n          } else {\n            obj_field_getters.push(quote! {\n              let #alias_ident: #ty = obj.get(#field_js_name).map_err(|mut err| {\n                err.reason = format!(\"{} on {}.{}\", err.reason, #name_str, #field_js_name);\n                err\n              })?.ok_or_else(|| napi::bindgen_prelude::Error::new(\n                napi::bindgen_prelude::Status::InvalidArg,\n                format!(\"Missing field `{}`\", #field_js_name),\n              ))?;\n            });\n          }\n        }\n        syn::Member::Unnamed(i) => {\n          let arg_name = format_ident!(\"arg{}\", i);\n          field_destructions.push(quote! { #arg_name });\n\n          if is_always_set {\n            // This field is always set - use batched approach\n            let value_var = Ident::new(&format!(\"__obj_value_{}\", idx), Span::call_site());\n            value_names.push(value_var.clone());\n\n            if is_optional_field {\n              // Optional with use_nullable=true: set to value or null\n              value_conversions.push(quote! {\n                let #value_var = if let Some(inner) = #arg_name {\n                  napi::bindgen_prelude::ToNapiValue::to_napi_value(env, inner)?\n                } else {\n                  napi::bindgen_prelude::ToNapiValue::to_napi_value(env, napi::bindgen_prelude::Null)?\n                };\n              });\n            } else {\n              // Non-optional: always set\n              value_conversions.push(quote! {\n                let #value_var = napi::bindgen_prelude::ToNapiValue::to_napi_value(env, #arg_name)?;\n              });\n            }\n\n            property_descriptors.push(quote! {\n              napi::bindgen_prelude::sys::napi_property_descriptor {\n                utf8name: std::ffi::CStr::from_bytes_with_nul_unchecked(#field_js_name_lit.as_bytes()).as_ptr(),\n                name: std::ptr::null_mut(),\n                method: None,\n                getter: None,\n                setter: None,\n                value: #value_var,\n                attributes: napi::bindgen_prelude::sys::PropertyAttributes::writable\n                  | napi::bindgen_prelude::sys::PropertyAttributes::enumerable\n                  | napi::bindgen_prelude::sys::PropertyAttributes::configurable,\n                data: std::ptr::null_mut(),\n              }\n            });\n          } else {\n            // Optional with use_nullable=false: conditionally set\n            conditional_setters.push(quote! {\n              if #arg_name.is_some() {\n                obj.set(#field_js_name, #arg_name)?;\n              }\n            });\n          }\n\n          // Getters remain the same\n          if is_optional_field && !self.use_nullable {\n            obj_field_getters.push(quote! { let #arg_name: #ty = obj.get(#field_js_name)?; });\n          } else {\n            obj_field_getters.push(quote! {\n              let #arg_name: #ty = obj.get(#field_js_name)?.ok_or_else(|| napi::bindgen_prelude::Error::new(\n                napi::bindgen_prelude::Status::InvalidArg,\n                format!(\"Missing field `{}`\", #field_js_name),\n              ))?;\n            });\n          }\n        }\n      }\n    }\n\n    let destructed_fields = if obj.is_tuple {\n      quote! {\n        Self (#(#field_destructions),*)\n      }\n    } else {\n      quote! {\n        Self {#(#field_destructions),*}\n      }\n    };\n\n    let name_with_lifetime = if self.has_lifetime {\n      quote! { #name<'_javascript_function_scope> }\n    } else {\n      quote! { #name }\n    };\n    let (from_napi_value_impl, to_napi_value_impl, validate_napi_value_impl, type_name_impl) =\n      if self.has_lifetime {\n        (\n          quote! { impl <'_javascript_function_scope> napi::bindgen_prelude::FromNapiValue for #name<'_javascript_function_scope> },\n          quote! { impl <'_javascript_function_scope> napi::bindgen_prelude::ToNapiValue for #name<'_javascript_function_scope> },\n          quote! { impl <'_javascript_function_scope> napi::bindgen_prelude::ValidateNapiValue for #name<'_javascript_function_scope> },\n          quote! { impl <'_javascript_function_scope> napi::bindgen_prelude::TypeName for #name<'_javascript_function_scope> },\n        )\n      } else {\n        (\n          quote! { impl napi::bindgen_prelude::FromNapiValue for #name },\n          quote! { impl napi::bindgen_prelude::ToNapiValue for #name },\n          quote! { impl napi::bindgen_prelude::ValidateNapiValue for #name },\n          quote! { impl napi::bindgen_prelude::TypeName for #name },\n        )\n      };\n\n    // Generate object creation code\n    let object_creation = if conditional_setters.is_empty() {\n      // All fields are always set - use fully batched approach\n      quote! {\n        // Convert all values first, so error handling works correctly\n        #(#value_conversions)*\n\n        let properties = [\n          #(#property_descriptors),*\n        ];\n\n        let obj_ptr = napi::bindgen_prelude::create_object_with_properties(env, &properties)?;\n        Ok(obj_ptr)\n      }\n    } else {\n      // Some fields are conditionally set - use batched for always-set, then add conditionals\n      quote! {\n        // Convert all always-set values first\n        #(#value_conversions)*\n\n        let properties = [\n          #(#property_descriptors),*\n        ];\n\n        let obj_ptr = napi::bindgen_prelude::create_object_with_properties(env, &properties)?;\n\n        // Wrap in Object for conditional field setters\n        let mut obj = napi::bindgen_prelude::Object::from_raw(env, obj_ptr);\n\n        #(#conditional_setters)*\n\n        Ok(obj_ptr)\n      }\n    };\n\n    let to_napi_value = if obj.object_to_js {\n      quote! {\n        #[automatically_derived]\n        #to_napi_value_impl {\n          unsafe fn to_napi_value(env: napi::bindgen_prelude::sys::napi_env, val: #name_with_lifetime) -> napi::bindgen_prelude::Result<napi::bindgen_prelude::sys::napi_value> {\n            let #destructed_fields = val;\n            #object_creation\n          }\n        }\n      }\n    } else {\n      quote! {}\n    };\n\n    let from_napi_value = if obj.object_from_js {\n      let return_type = if self.has_lifetime {\n        quote! { #name<'_javascript_function_scope> }\n      } else {\n        quote! { #name }\n      };\n      quote! {\n        #[automatically_derived]\n        #from_napi_value_impl {\n          unsafe fn from_napi_value(\n            env: napi::bindgen_prelude::sys::napi_env,\n            napi_val: napi::bindgen_prelude::sys::napi_value\n          ) -> napi::bindgen_prelude::Result<#return_type> {\n            #[allow(unused_variables)]\n            let env_wrapper = napi::bindgen_prelude::Env::from(env);\n            #[allow(unused_mut)]\n            let mut obj = napi::bindgen_prelude::Object::from_napi_value(env, napi_val)?;\n\n            #(#obj_field_getters)*\n\n            let val = #destructed_fields;\n\n            Ok(val)\n          }\n        }\n\n        #[automatically_derived]\n        #validate_napi_value_impl {}\n      }\n    } else {\n      quote! {}\n    };\n\n    quote! {\n      #[automatically_derived]\n      #type_name_impl {\n        fn type_name() -> &'static str {\n          #name_str\n        }\n\n        fn value_type() -> napi::ValueType {\n          napi::ValueType::Object\n        }\n      }\n\n      #to_napi_value\n\n      #from_napi_value\n    }\n  }\n\n  fn gen_default_getters_setters(&self, class: &NapiClass) -> Vec<(String, TokenStream)> {\n    let mut getters_setters = vec![];\n    let struct_name = &self.name;\n    let js_name_str = &self.js_name;\n\n    for field in class.fields.iter() {\n      let field_ident = &field.name;\n      let field_name = match &field.name {\n        syn::Member::Named(ident) => ident.to_string(),\n        syn::Member::Unnamed(i) => format!(\"field{}\", i.index),\n      };\n      let ty = &field.ty;\n\n      let getter_name = Ident::new(\n        &format!(\"get_{}\", rm_raw_prefix(&field_name)),\n        Span::call_site(),\n      );\n      let setter_name = Ident::new(\n        &format!(\"set_{}\", rm_raw_prefix(&field_name)),\n        Span::call_site(),\n      );\n\n      if field.getter {\n        let default_to_napi_value_convert = quote! {\n          let val = &mut obj.#field_ident;\n          unsafe { <&mut #ty as napi::bindgen_prelude::ToNapiValue>::to_napi_value(env, val) }\n        };\n        let to_napi_value_convert = if let syn::Type::Path(syn::TypePath {\n          path: syn::Path { segments, .. },\n          ..\n        }) = ty\n        {\n          if let Some(syn::PathSegment { ident, .. }) = segments.last() {\n            if STRUCT_FIELD_SPECIAL_CASE.iter().any(|name| ident == name) {\n              quote! {\n                let val = obj.#field_ident.as_mut();\n                unsafe { napi::bindgen_prelude::ToNapiValue::to_napi_value(env, val) }\n              }\n            } else {\n              default_to_napi_value_convert\n            }\n          } else {\n            default_to_napi_value_convert\n          }\n        } else {\n          default_to_napi_value_convert\n        };\n        let tracing_debug = gen_tracing_debug(js_name_str, &field.js_name);\n        getters_setters.push((\n          field.js_name.clone(),\n          quote! {\n            extern \"C\" fn #getter_name(\n              env: napi::bindgen_prelude::sys::napi_env,\n              cb: napi::bindgen_prelude::sys::napi_callback_info\n            ) -> napi::bindgen_prelude::sys::napi_value {\n              #tracing_debug\n              napi::bindgen_prelude::CallbackInfo::<0>::new(env, cb, Some(0), false)\n                .and_then(|mut cb| cb.unwrap_borrow_mut::<#struct_name>())\n                .and_then(|obj| {\n                  #to_napi_value_convert\n                })\n                .unwrap_or_else(|e| {\n                  unsafe { napi::bindgen_prelude::JsError::from(e).throw_into(env) };\n                  std::ptr::null_mut::<napi::bindgen_prelude::sys::napi_value__>()\n                })\n            }\n          },\n        ));\n      }\n\n      if field.setter {\n        let setter_tracing_debug =\n          gen_tracing_debug(js_name_str, &format!(\"set_{}\", field.js_name));\n        getters_setters.push((\n          field.js_name.clone(),\n          quote! {\n            extern \"C\" fn #setter_name(\n              env: napi::bindgen_prelude::sys::napi_env,\n              cb: napi::bindgen_prelude::sys::napi_callback_info\n            ) -> napi::bindgen_prelude::sys::napi_value {\n              #setter_tracing_debug\n              napi::bindgen_prelude::CallbackInfo::<1>::new(env, cb, Some(1), false)\n                .and_then(|mut cb_info| unsafe {\n                  cb_info.unwrap_borrow_mut::<#struct_name>()\n                    .and_then(|obj| {\n                      <#ty as napi::bindgen_prelude::FromNapiValue>::from_napi_value(env, cb_info.get_arg(0))\n                        .and_then(move |val| {\n                          obj.#field_ident = val;\n                          <() as napi::bindgen_prelude::ToNapiValue>::to_napi_value(env, ())\n                        })\n                    })\n                })\n                .unwrap_or_else(|e| {\n                  unsafe { napi::bindgen_prelude::JsError::from(e).throw_into(env) };\n                  std::ptr::null_mut::<napi::bindgen_prelude::sys::napi_value__>()\n                })\n            }\n          },\n        ));\n      }\n    }\n\n    getters_setters\n  }\n\n  fn gen_register(&self, class: &NapiClass) -> TokenStream {\n    let name = &self.name;\n    let struct_register_name = &self.register_name;\n    let js_name = format!(\"{}\\0\", self.js_name);\n    let mut props = vec![];\n\n    if class.ctor {\n      props.push(quote! { napi::bindgen_prelude::Property::new().with_utf8_name(\"constructor\").unwrap().with_ctor(constructor) });\n    }\n\n    for field in class.fields.iter() {\n      let field_name = match &field.name {\n        syn::Member::Named(ident) => ident.to_string(),\n        syn::Member::Unnamed(i) => format!(\"field{}\", i.index),\n      };\n\n      if !field.getter {\n        continue;\n      }\n\n      let js_name = &field.js_name;\n      let mut attribute = super::PROPERTY_ATTRIBUTE_DEFAULT;\n      if field.writable {\n        attribute |= super::PROPERTY_ATTRIBUTE_WRITABLE;\n      }\n      if field.enumerable {\n        attribute |= super::PROPERTY_ATTRIBUTE_ENUMERABLE;\n      }\n      if field.configurable {\n        attribute |= super::PROPERTY_ATTRIBUTE_CONFIGURABLE;\n      }\n\n      let mut prop = quote! {\n        napi::bindgen_prelude::Property::new().with_utf8_name(#js_name)\n          .unwrap()\n          .with_property_attributes(napi::bindgen_prelude::PropertyAttributes::from_bits(#attribute).unwrap())\n      };\n\n      if field.getter {\n        let getter_name = Ident::new(\n          &format!(\"get_{}\", rm_raw_prefix(&field_name)),\n          Span::call_site(),\n        );\n        (quote! { .with_getter(#getter_name) }).to_tokens(&mut prop);\n      }\n\n      if field.writable && field.setter {\n        let setter_name = Ident::new(\n          &format!(\"set_{}\", rm_raw_prefix(&field_name)),\n          Span::call_site(),\n        );\n        (quote! { .with_setter(#setter_name) }).to_tokens(&mut prop);\n      }\n\n      props.push(prop);\n    }\n    let js_mod_ident = js_mod_to_token_stream(self.js_mod.as_ref());\n    quote! {\n      #[allow(non_snake_case)]\n      #[allow(clippy::all)]\n      #[cfg(all(not(test), not(target_family = \"wasm\")))]\n      #[napi::ctor::ctor(crate_path=napi::ctor)]\n      fn #struct_register_name() {\n        napi::__private::register_class(std::any::TypeId::of::<#name>(), #js_mod_ident, #js_name, vec![#(#props),*]);\n      }\n\n      #[allow(non_snake_case)]\n      #[allow(clippy::all)]\n      #[cfg(all(not(test), target_family = \"wasm\"))]\n      #[no_mangle]\n      extern \"C\" fn #struct_register_name() {\n        napi::__private::register_class(std::any::TypeId::of::<#name>(), #js_mod_ident, #js_name, vec![#(#props),*]);\n      }\n    }\n  }\n\n  fn gen_to_napi_value_structured_enum_impl(\n    &self,\n    structured_enum: &NapiStructuredEnum,\n  ) -> TokenStream {\n    let name = &self.name;\n    let name_str = self.name.to_string();\n    let discriminant = structured_enum.discriminant.as_str();\n    let discriminant_null_terminated = format!(\"{}\\0\", discriminant);\n\n    let mut variant_arm_setters = vec![];\n    let mut variant_arm_getters = vec![];\n\n    for variant in structured_enum.variants.iter() {\n      let variant_name = &variant.name;\n      let mut variant_name_str = variant_name.to_string();\n      if let Some(case) = structured_enum.discriminant_case {\n        variant_name_str = to_case(variant_name_str, case);\n      }\n\n      let mut obj_field_getters = vec![];\n      let mut field_destructions = vec![];\n\n      // For optimized object creation\n      let mut value_conversions = vec![];\n      let mut property_descriptors = vec![];\n      let mut conditional_setters = vec![];\n\n      // First property is always the discriminant\n      let discriminant_value_var = Ident::new(\"__discriminant_value\", Span::call_site());\n      value_conversions.push(quote! {\n        let #discriminant_value_var = napi::bindgen_prelude::ToNapiValue::to_napi_value(env, #variant_name_str)?;\n      });\n      property_descriptors.push(quote! {\n        napi::bindgen_prelude::sys::napi_property_descriptor {\n          utf8name: std::ffi::CStr::from_bytes_with_nul_unchecked(#discriminant_null_terminated.as_bytes()).as_ptr(),\n          name: std::ptr::null_mut(),\n          method: None,\n          getter: None,\n          setter: None,\n          value: #discriminant_value_var,\n          attributes: napi::bindgen_prelude::sys::PropertyAttributes::writable\n                  | napi::bindgen_prelude::sys::PropertyAttributes::enumerable\n                  | napi::bindgen_prelude::sys::PropertyAttributes::configurable,\n          data: std::ptr::null_mut(),\n        }\n      });\n\n      for (idx, field) in variant.fields.iter().enumerate() {\n        let field_js_name = &field.js_name;\n        let field_js_name_lit = Literal::string(&format!(\"{}\\0\", field.js_name));\n        let mut ty = field.ty.clone();\n        remove_lifetime_in_type(&mut ty);\n        let is_optional_field = if let syn::Type::Path(syn::TypePath {\n          path: syn::Path { segments, .. },\n          ..\n        }) = &ty\n        {\n          if let Some(last_path) = segments.last() {\n            last_path.ident == \"Option\"\n          } else {\n            false\n          }\n        } else {\n          false\n        };\n\n        // Determine if this field is always set or conditionally set\n        let is_always_set = !is_optional_field || self.use_nullable;\n\n        match &field.name {\n          syn::Member::Named(ident) => {\n            let alias_ident = format_ident!(\"{}_\", ident);\n            field_destructions.push(quote! { #ident: #alias_ident });\n\n            if is_always_set {\n              // This field is always set - use batched approach\n              let value_var = Ident::new(&format!(\"__variant_value_{}\", idx), Span::call_site());\n\n              if is_optional_field {\n                // Optional with use_nullable=true: set to value or null\n                value_conversions.push(quote! {\n                  let #value_var = if let Some(inner) = #alias_ident {\n                    napi::bindgen_prelude::ToNapiValue::to_napi_value(env, inner)?\n                  } else {\n                    napi::bindgen_prelude::ToNapiValue::to_napi_value(env, napi::bindgen_prelude::Null)?\n                  };\n                });\n              } else {\n                // Non-optional: always set\n                value_conversions.push(quote! {\n                  let #value_var = napi::bindgen_prelude::ToNapiValue::to_napi_value(env, #alias_ident)?;\n                });\n              }\n\n              property_descriptors.push(quote! {\n                napi::bindgen_prelude::sys::napi_property_descriptor {\n                  utf8name: std::ffi::CStr::from_bytes_with_nul_unchecked(#field_js_name_lit.as_bytes()).as_ptr(),\n                  name: std::ptr::null_mut(),\n                  method: None,\n                  getter: None,\n                  setter: None,\n                  value: #value_var,\n                  attributes: napi::bindgen_prelude::sys::PropertyAttributes::writable\n                  | napi::bindgen_prelude::sys::PropertyAttributes::enumerable\n                  | napi::bindgen_prelude::sys::PropertyAttributes::configurable,\n                  data: std::ptr::null_mut(),\n                }\n              });\n            } else {\n              // Optional with use_nullable=false: conditionally set\n              conditional_setters.push(quote! {\n                if #alias_ident.is_some() {\n                  obj.set(#field_js_name, #alias_ident)?;\n                }\n              });\n            }\n\n            // Getters remain the same\n            if is_optional_field && !self.use_nullable {\n              obj_field_getters.push(quote! {\n                let #alias_ident: #ty = obj.get(#field_js_name).map_err(|mut err| {\n                  err.reason = format!(\"{} on {}.{}\", err.reason, #name_str, #field_js_name);\n                  err\n                })?;\n              });\n            } else {\n              obj_field_getters.push(quote! {\n                let #alias_ident: #ty = obj.get(#field_js_name).map_err(|mut err| {\n                  err.reason = format!(\"{} on {}.{}\", err.reason, #name_str, #field_js_name);\n                  err\n                })?.ok_or_else(|| napi::bindgen_prelude::Error::new(\n                  napi::bindgen_prelude::Status::InvalidArg,\n                  format!(\"Missing field `{}`\", #field_js_name),\n                ))?;\n              });\n            }\n          }\n          syn::Member::Unnamed(i) => {\n            let arg_name = format_ident!(\"arg{}\", i);\n            field_destructions.push(quote! { #arg_name });\n\n            if is_always_set {\n              // This field is always set - use batched approach\n              let value_var = Ident::new(&format!(\"__variant_value_{}\", idx), Span::call_site());\n\n              if is_optional_field {\n                // Optional with use_nullable=true: set to value or null\n                value_conversions.push(quote! {\n                  let #value_var = if let Some(inner) = #arg_name {\n                    napi::bindgen_prelude::ToNapiValue::to_napi_value(env, inner)?\n                  } else {\n                    napi::bindgen_prelude::ToNapiValue::to_napi_value(env, napi::bindgen_prelude::Null)?\n                  };\n                });\n              } else {\n                // Non-optional: always set\n                value_conversions.push(quote! {\n                  let #value_var = napi::bindgen_prelude::ToNapiValue::to_napi_value(env, #arg_name)?;\n                });\n              }\n\n              property_descriptors.push(quote! {\n                napi::bindgen_prelude::sys::napi_property_descriptor {\n                  utf8name: std::ffi::CStr::from_bytes_with_nul_unchecked(#field_js_name_lit.as_bytes()).as_ptr(),\n                  name: std::ptr::null_mut(),\n                  method: None,\n                  getter: None,\n                  setter: None,\n                  value: #value_var,\n                  attributes: napi::bindgen_prelude::sys::PropertyAttributes::writable\n                  | napi::bindgen_prelude::sys::PropertyAttributes::enumerable\n                  | napi::bindgen_prelude::sys::PropertyAttributes::configurable,\n                  data: std::ptr::null_mut(),\n                }\n              });\n            } else {\n              // Optional with use_nullable=false: conditionally set\n              conditional_setters.push(quote! {\n                if #arg_name.is_some() {\n                  obj.set(#field_js_name, #arg_name)?;\n                }\n              });\n            }\n\n            // Getters remain the same\n            if is_optional_field && !self.use_nullable {\n              obj_field_getters.push(quote! { let #arg_name: #ty = obj.get(#field_js_name)?; });\n            } else {\n              obj_field_getters.push(quote! {\n                let #arg_name: #ty = obj.get(#field_js_name)?.ok_or_else(|| napi::bindgen_prelude::Error::new(\n                  napi::bindgen_prelude::Status::InvalidArg,\n                  format!(\"Missing field `{}`\", #field_js_name),\n                ))?;\n              });\n            }\n          }\n        }\n      }\n\n      let destructed_fields = if variant.is_tuple {\n        quote! {\n          Self::#variant_name (#(#field_destructions),*)\n        }\n      } else {\n        quote! {\n          Self::#variant_name {#(#field_destructions),*}\n        }\n      };\n\n      // Generate object creation for this variant\n      let variant_object_creation = if conditional_setters.is_empty() {\n        // All fields are always set - use fully batched approach\n        quote! {\n          #(#value_conversions)*\n\n          let properties = [\n            #(#property_descriptors),*\n          ];\n\n          napi::bindgen_prelude::create_object_with_properties(env, &properties)\n        }\n      } else {\n        // Some fields are conditionally set\n        quote! {\n          #(#value_conversions)*\n\n          let properties = [\n            #(#property_descriptors),*\n          ];\n\n          let obj_ptr = napi::bindgen_prelude::create_object_with_properties(env, &properties)?;\n          let mut obj = napi::bindgen_prelude::Object::from_raw(env, obj_ptr);\n\n          #(#conditional_setters)*\n\n          Ok(obj_ptr)\n        }\n      };\n\n      variant_arm_setters.push(quote! {\n        #destructed_fields => {\n          #variant_object_creation\n        },\n      });\n\n      variant_arm_getters.push(quote! {\n        #variant_name_str => {\n          #(#obj_field_getters)*\n          #destructed_fields\n        },\n      })\n    }\n\n    let to_napi_value = if structured_enum.object_to_js {\n      quote! {\n        impl napi::bindgen_prelude::ToNapiValue for #name {\n          unsafe fn to_napi_value(env: napi::bindgen_prelude::sys::napi_env, val: #name) -> napi::bindgen_prelude::Result<napi::bindgen_prelude::sys::napi_value> {\n            match val {\n              #(#variant_arm_setters)*\n            }\n          }\n        }\n      }\n    } else {\n      quote! {}\n    };\n\n    let from_napi_value = if structured_enum.object_from_js {\n      quote! {\n        impl napi::bindgen_prelude::FromNapiValue for #name {\n          unsafe fn from_napi_value(\n            env: napi::bindgen_prelude::sys::napi_env,\n            napi_val: napi::bindgen_prelude::sys::napi_value\n          ) -> napi::bindgen_prelude::Result<Self> {\n            #[allow(unused_variables)]\n            let env_wrapper = napi::bindgen_prelude::Env::from(env);\n            #[allow(unused_mut)]\n            let mut obj = napi::bindgen_prelude::Object::from_napi_value(env, napi_val)?;\n            let type_: String = obj.get(#discriminant).map_err(|mut err| {\n              err.reason = format!(\"{} on {}.{}\", err.reason, #name_str, #discriminant);\n              err\n            })?.ok_or_else(|| napi::bindgen_prelude::Error::new(\n              napi::bindgen_prelude::Status::InvalidArg,\n              format!(\"Missing field `{}`\", #discriminant),\n            ))?;\n            let val = match type_.as_str() {\n              #(#variant_arm_getters)*\n              _ => return Err(napi::bindgen_prelude::Error::new(\n                napi::bindgen_prelude::Status::InvalidArg,\n                format!(\"Unknown variant `{}`\", type_),\n              )),\n            };\n\n            Ok(val)\n          }\n        }\n\n        impl napi::bindgen_prelude::ValidateNapiValue for #name {}\n      }\n    } else {\n      quote! {}\n    };\n\n    quote! {\n      impl napi::bindgen_prelude::TypeName for #name {\n        fn type_name() -> &'static str {\n          #name_str\n        }\n\n        fn value_type() -> napi::ValueType {\n          napi::ValueType::Object\n        }\n      }\n\n      #to_napi_value\n\n      #from_napi_value\n    }\n  }\n\n  fn gen_napi_value_transparent_impl(&self, transparent: &NapiTransparent) -> TokenStream {\n    let name = &self.name;\n    let name = if self.has_lifetime {\n      quote! { #name<'_> }\n    } else {\n      quote! { #name }\n    };\n    let inner_type = transparent.ty.clone().into_token_stream();\n\n    let to_napi_value = if transparent.object_to_js {\n      quote! {\n        #[automatically_derived]\n        impl napi::bindgen_prelude::ToNapiValue for #name {\n          unsafe fn to_napi_value(\n            env: napi::bindgen_prelude::sys::napi_env,\n            val: Self\n          ) -> napi::bindgen_prelude::Result<napi::bindgen_prelude::sys::napi_value> {\n            <#inner_type>::to_napi_value(env, val.0)\n          }\n        }\n      }\n    } else {\n      quote! {}\n    };\n\n    let from_napi_value = if transparent.object_from_js {\n      quote! {\n        #[automatically_derived]\n        impl napi::bindgen_prelude::FromNapiValue for #name {\n          unsafe fn from_napi_value(\n            env: napi::bindgen_prelude::sys::napi_env,\n            napi_val: napi::bindgen_prelude::sys::napi_value\n          ) -> napi::bindgen_prelude::Result<Self> {\n            Ok(Self(<#inner_type>::from_napi_value(env, napi_val)?))\n          }\n        }\n      }\n    } else {\n      quote! {}\n    };\n\n    quote! {\n      #[automatically_derived]\n      impl napi::bindgen_prelude::TypeName for #name {\n        fn type_name() -> &'static str {\n          <#inner_type>::type_name()\n        }\n\n        fn value_type() -> napi::ValueType {\n          <#inner_type>::value_type()\n        }\n      }\n\n      #[automatically_derived]\n      impl napi::bindgen_prelude::ValidateNapiValue for #name {\n        unsafe fn validate(\n          env: napi::bindgen_prelude::sys::napi_env,\n          napi_val: napi::bindgen_prelude::sys::napi_value\n        ) -> napi::bindgen_prelude::Result<napi::sys::napi_value> {\n          <#inner_type>::validate(env, napi_val)\n        }\n      }\n\n      #to_napi_value\n\n      #from_napi_value\n    }\n  }\n\n  fn gen_napi_value_array_impl(&self, array: &NapiArray) -> TokenStream {\n    let name = &self.name;\n    let name_str = self.name.to_string();\n\n    let mut obj_field_setters = vec![];\n    let mut obj_field_getters = vec![];\n    let mut field_destructions = vec![];\n\n    for field in array.fields.iter() {\n      let mut ty = field.ty.clone();\n      remove_lifetime_in_type(&mut ty);\n      let is_optional_field = if let syn::Type::Path(syn::TypePath {\n        path: syn::Path { segments, .. },\n        ..\n      }) = &ty\n      {\n        if let Some(last_path) = segments.last() {\n          last_path.ident == \"Option\"\n        } else {\n          false\n        }\n      } else {\n        false\n      };\n\n      if let syn::Member::Unnamed(i) = &field.name {\n        let arg_name = format_ident!(\"arg{}\", i);\n        let field_index = i.index;\n        field_destructions.push(quote! { #arg_name });\n        if is_optional_field {\n          obj_field_setters.push(match self.use_nullable {\n            false => quote! {\n              if #arg_name.is_some() {\n                array.set(#field_index, #arg_name)?;\n              }\n            },\n            true => quote! {\n              if let Some(#arg_name) = #arg_name {\n                array.set(#field_index, #arg_name)?;\n              } else {\n                array.set(#field_index, napi::bindgen_prelude::Null)?;\n              }\n            },\n          });\n        } else {\n          obj_field_setters.push(quote! { array.set(#field_index, #arg_name)?; });\n        }\n        if is_optional_field && !self.use_nullable {\n          obj_field_getters.push(quote! { let #arg_name: #ty = array.get(#field_index)?; });\n        } else {\n          obj_field_getters.push(quote! {\n            let #arg_name: #ty = array.get(#field_index)?.ok_or_else(|| napi::bindgen_prelude::Error::new(\n              napi::bindgen_prelude::Status::InvalidArg,\n              format!(\"Failed to get element with index `{}`\", #field_index),\n            ))?;\n          });\n        }\n      }\n    }\n\n    let destructed_fields = quote! {\n      Self (#(#field_destructions),*)\n    };\n\n    let name_with_lifetime = if self.has_lifetime {\n      quote! { #name<'_javascript_function_scope> }\n    } else {\n      quote! { #name }\n    };\n    let (from_napi_value_impl, to_napi_value_impl, validate_napi_value_impl, type_name_impl) =\n      if self.has_lifetime {\n        (\n          quote! { impl <'_javascript_function_scope> napi::bindgen_prelude::FromNapiValue for #name<'_javascript_function_scope> },\n          quote! { impl <'_javascript_function_scope> napi::bindgen_prelude::ToNapiValue for #name<'_javascript_function_scope> },\n          quote! { impl <'_javascript_function_scope> napi::bindgen_prelude::ValidateNapiValue for #name<'_javascript_function_scope> },\n          quote! { impl <'_javascript_function_scope> napi::bindgen_prelude::TypeName for #name<'_javascript_function_scope> },\n        )\n      } else {\n        (\n          quote! { impl napi::bindgen_prelude::FromNapiValue for #name },\n          quote! { impl napi::bindgen_prelude::ToNapiValue for #name },\n          quote! { impl napi::bindgen_prelude::ValidateNapiValue for #name },\n          quote! { impl napi::bindgen_prelude::TypeName for #name },\n        )\n      };\n\n    let array_len = array.fields.len() as u32;\n\n    let to_napi_value = if array.object_to_js {\n      quote! {\n        #[automatically_derived]\n        #to_napi_value_impl {\n          unsafe fn to_napi_value(env: napi::bindgen_prelude::sys::napi_env, val: #name_with_lifetime) -> napi::bindgen_prelude::Result<napi::bindgen_prelude::sys::napi_value> {\n            #[allow(unused_variables)]\n            let env_wrapper = napi::bindgen_prelude::Env::from(env);\n            #[allow(unused_mut)]\n            let mut array = env_wrapper.create_array(#array_len)?;\n\n            let #destructed_fields = val;\n            #(#obj_field_setters)*\n\n            napi::bindgen_prelude::Array::to_napi_value(env, array)\n          }\n        }\n      }\n    } else {\n      quote! {}\n    };\n\n    let from_napi_value = if array.object_from_js {\n      let return_type = if self.has_lifetime {\n        quote! { #name<'_javascript_function_scope> }\n      } else {\n        quote! { #name }\n      };\n      quote! {\n        #[automatically_derived]\n        #from_napi_value_impl {\n          unsafe fn from_napi_value(\n            env: napi::bindgen_prelude::sys::napi_env,\n            napi_val: napi::bindgen_prelude::sys::napi_value\n          ) -> napi::bindgen_prelude::Result<#return_type> {\n            #[allow(unused_variables)]\n            let env_wrapper = napi::bindgen_prelude::Env::from(env);\n            #[allow(unused_mut)]\n            let mut array = napi::bindgen_prelude::Array::from_napi_value(env, napi_val)?;\n\n            #(#obj_field_getters)*\n\n            let val = #destructed_fields;\n\n            Ok(val)\n          }\n        }\n\n        #[automatically_derived]\n        #validate_napi_value_impl {}\n      }\n    } else {\n      quote! {}\n    };\n\n    quote! {\n      #[automatically_derived]\n      #type_name_impl {\n        fn type_name() -> &'static str {\n          #name_str\n        }\n\n        fn value_type() -> napi::ValueType {\n          napi::ValueType::Object\n        }\n      }\n\n      #to_napi_value\n\n      #from_napi_value\n    }\n  }\n}\n\nimpl TryToTokens for NapiImpl {\n  fn try_to_tokens(&self, tokens: &mut TokenStream) -> BindgenResult<()> {\n    self.gen_helper_mod()?.to_tokens(tokens);\n\n    Ok(())\n  }\n}\n\nimpl NapiImpl {\n  fn gen_helper_mod(&self) -> BindgenResult<TokenStream> {\n    if cfg!(test) {\n      return Ok(quote! {});\n    }\n\n    let name = &self.name;\n    let name_str = self.name.to_string();\n    let js_name = format!(\"{}\\0\", self.js_name);\n    let mod_name = Ident::new(\n      &format!(\n        \"__napi_impl_helper_{}_{}\",\n        name_str,\n        NAPI_IMPL_ID.fetch_add(1, Ordering::SeqCst)\n      ),\n      Span::call_site(),\n    );\n\n    let register_name = &self.register_name;\n\n    let mut methods = vec![];\n    let mut props = HashMap::new();\n\n    for item in self.items.iter() {\n      let js_name = Literal::string(&item.js_name);\n      let item_str = item.name.to_string();\n      let intermediate_name = get_intermediate_ident(&item_str);\n      methods.push(item.try_to_token_stream()?);\n\n      let mut attribute = super::PROPERTY_ATTRIBUTE_DEFAULT;\n      if item.writable {\n        attribute |= super::PROPERTY_ATTRIBUTE_WRITABLE;\n      }\n      if item.enumerable {\n        attribute |= super::PROPERTY_ATTRIBUTE_ENUMERABLE;\n      }\n      if item.configurable {\n        attribute |= super::PROPERTY_ATTRIBUTE_CONFIGURABLE;\n      }\n\n      let prop = props.entry(&item.js_name).or_insert_with(|| {\n        quote! {\n          napi::bindgen_prelude::Property::new().with_utf8_name(#js_name).unwrap().with_property_attributes(napi::bindgen_prelude::PropertyAttributes::from_bits(#attribute).unwrap())\n        }\n      });\n\n      let appendix = match item.kind {\n        FnKind::Constructor => quote! { .with_ctor(#intermediate_name) },\n        FnKind::Getter => quote! { .with_getter(#intermediate_name) },\n        FnKind::Setter => quote! { .with_setter(#intermediate_name) },\n        _ => {\n          if item.fn_self.is_some() {\n            quote! { .with_method(#intermediate_name) }\n          } else {\n            quote! { .with_method(#intermediate_name).with_property_attributes(napi::bindgen_prelude::PropertyAttributes::Static) }\n          }\n        }\n      };\n\n      appendix.to_tokens(prop);\n    }\n\n    let mut props: Vec<_> = props.into_iter().collect();\n    props.sort_by_key(|(_, prop)| prop.to_string());\n    let props = props.into_iter().map(|(_, prop)| prop);\n    let props_wasm = props.clone();\n    let js_mod_ident = js_mod_to_token_stream(self.js_mod.as_ref());\n    Ok(quote! {\n      #[allow(non_snake_case)]\n      #[allow(clippy::all)]\n      mod #mod_name {\n        use super::*;\n        #(#methods)*\n\n        #[cfg(all(not(test), not(target_family = \"wasm\")))]\n        #[napi::ctor::ctor(crate_path=napi::ctor)]\n        fn #register_name() {\n          napi::__private::register_class(std::any::TypeId::of::<#name>(), #js_mod_ident, #js_name, vec![#(#props),*]);\n        }\n\n        #[cfg(all(not(test), target_family = \"wasm\"))]\n        #[no_mangle]\n        extern \"C\" fn #register_name() {\n          napi::__private::register_class(std::any::TypeId::of::<#name>(), #js_mod_ident, #js_name, vec![#(#props_wasm),*]);\n        }\n      }\n    })\n  }\n}\n\npub fn rm_raw_prefix(s: &str) -> &str {\n  if let Some(stripped) = s.strip_prefix(\"r#\") {\n    stripped\n  } else {\n    s\n  }\n}\n\nfn remove_lifetime_in_type(ty: &mut syn::Type) {\n  if let syn::Type::Path(syn::TypePath { path, .. }) = ty {\n    path.segments.iter_mut().for_each(|segment| {\n      if let syn::PathArguments::AngleBracketed(ref mut args) = segment.arguments {\n        args.args.iter_mut().for_each(|arg| match arg {\n          syn::GenericArgument::Type(ref mut ty) => {\n            remove_lifetime_in_type(ty);\n          }\n          syn::GenericArgument::Lifetime(lifetime) => {\n            lifetime.ident = Ident::new(\"_\", lifetime.ident.span());\n          }\n          _ => {}\n        });\n      }\n    });\n  }\n}\n"
  },
  {
    "path": "crates/backend/src/codegen/type.rs",
    "content": "use proc_macro2::TokenStream;\nuse quote::ToTokens;\n\nuse crate::{BindgenResult, NapiType, TryToTokens};\n\nimpl TryToTokens for NapiType {\n  fn try_to_tokens(&self, tokens: &mut TokenStream) -> BindgenResult<()> {\n    (quote! {}).to_tokens(tokens);\n    Ok(())\n  }\n}\n"
  },
  {
    "path": "crates/backend/src/codegen.rs",
    "content": "use proc_macro2::{Ident, Span, TokenStream};\n\nuse crate::BindgenResult;\n\nmod r#const;\nmod r#enum;\nmod r#fn;\nmod r#struct;\nmod r#type;\n\npub use r#struct::rm_raw_prefix;\n\npub const PROPERTY_ATTRIBUTE_DEFAULT: i32 = 0;\npub const PROPERTY_ATTRIBUTE_WRITABLE: i32 = 1 << 0;\npub const PROPERTY_ATTRIBUTE_ENUMERABLE: i32 = 1 << 1;\npub const PROPERTY_ATTRIBUTE_CONFIGURABLE: i32 = 1 << 2;\n\npub trait TryToTokens {\n  fn try_to_tokens(&self, tokens: &mut TokenStream) -> BindgenResult<()>;\n\n  fn try_to_token_stream(&self) -> BindgenResult<TokenStream> {\n    let mut tokens = TokenStream::default();\n    self.try_to_tokens(&mut tokens)?;\n\n    Ok(tokens)\n  }\n}\n\nfn get_intermediate_ident(name: &str) -> Ident {\n  let new_name = format!(\"{name}_c_callback\");\n  Ident::new(&new_name, Span::call_site())\n}\n\nfn js_mod_to_token_stream(js_mod: Option<&String>) -> TokenStream {\n  js_mod\n    .map(|i| {\n      let i = format!(\"{i}\\0\");\n      quote! { Some(#i) }\n    })\n    .unwrap_or_else(|| quote! { None })\n}\n"
  },
  {
    "path": "crates/backend/src/error.rs",
    "content": "use proc_macro2::*;\nuse quote::{ToTokens, TokenStreamExt};\nuse syn::parse::Error;\n\n/// Provide a Diagnostic with the given span and message\n#[macro_export]\nmacro_rules! err_span {\n  ($span:expr, $($msg:tt)*) => (\n    $crate::Diagnostic::spanned_error(&$span, format!($($msg)*))\n  )\n}\n\n/// Immediately fail and return an Err, with the arguments passed to err_span!\n#[macro_export]\nmacro_rules! bail_span {\n  ($($t:tt)*) => (\n    return Err(err_span!($($t)*).into())\n  )\n}\n\n/// A struct representing a diagnostic to emit to the end-user as an error.\n#[derive(Debug)]\npub struct Diagnostic {\n  inner: Repr,\n}\n\npub type BindgenResult<T> = Result<T, Diagnostic>;\n\n#[derive(Debug)]\nenum Repr {\n  Single {\n    text: String,\n    span: Option<(Span, Span)>,\n  },\n  SynError(Error),\n  Multi {\n    diagnostics: Vec<Diagnostic>,\n  },\n}\n\nimpl Diagnostic {\n  /// Generate a `Diagnostic` from an informational message with no Span\n  pub fn error<T: Into<String>>(text: T) -> Diagnostic {\n    Diagnostic {\n      inner: Repr::Single {\n        text: text.into(),\n        span: None,\n      },\n    }\n  }\n\n  /// Generate a `Diagnostic` from a Span and an informational message\n  pub fn span_error<T: Into<String>>(span: Span, text: T) -> Diagnostic {\n    Diagnostic {\n      inner: Repr::Single {\n        text: text.into(),\n        span: Some((span, span)),\n      },\n    }\n  }\n\n  /// Generate a `Diagnostic` from the span of any tokenizable object and a message\n  pub fn spanned_error<T: Into<String>>(node: &dyn ToTokens, text: T) -> Diagnostic {\n    Diagnostic {\n      inner: Repr::Single {\n        text: text.into(),\n        span: extract_spans(node),\n      },\n    }\n  }\n\n  /// Attempt to generate a `Diagnostic` from a vector of other `Diagnostic` instances.\n  /// If the `Vec` is empty, returns `Ok(())`, otherwise returns the new `Diagnostic`\n  pub fn from_vec(diagnostics: Vec<Diagnostic>) -> BindgenResult<()> {\n    if diagnostics.is_empty() {\n      Ok(())\n    } else {\n      Err(Diagnostic {\n        inner: Repr::Multi { diagnostics },\n      })\n    }\n  }\n\n  /// Immediately trigger a panic from this `Diagnostic`\n  #[allow(unconditional_recursion)]\n  pub fn panic(&self) -> ! {\n    match &self.inner {\n      Repr::Single { text, .. } => panic!(\"{}\", text),\n      Repr::SynError(error) => panic!(\"{}\", error),\n      Repr::Multi { diagnostics } => diagnostics[0].panic(),\n    }\n  }\n}\n\nimpl From<Error> for Diagnostic {\n  fn from(err: Error) -> Diagnostic {\n    Diagnostic {\n      inner: Repr::SynError(err),\n    }\n  }\n}\n\nfn extract_spans(node: &dyn ToTokens) -> Option<(Span, Span)> {\n  let mut t = TokenStream::new();\n  node.to_tokens(&mut t);\n  let mut tokens = t.into_iter();\n  let start = tokens.next().map(|t| t.span());\n  let end = tokens.last().map(|t| t.span());\n  start.map(|start| (start, end.unwrap_or(start)))\n}\n\nimpl ToTokens for Diagnostic {\n  fn to_tokens(&self, dst: &mut TokenStream) {\n    match &self.inner {\n      Repr::Single { text, span } => {\n        let cs2 = (Span::call_site(), Span::call_site());\n        let (start, end) = span.unwrap_or(cs2);\n        dst.append(Ident::new(\"compile_error\", start));\n        dst.append(Punct::new('!', Spacing::Alone));\n        let mut message = TokenStream::new();\n        message.append(Literal::string(text));\n        let mut group = Group::new(Delimiter::Brace, message);\n        group.set_span(end);\n        dst.append(group);\n      }\n      Repr::Multi { diagnostics } => {\n        for diagnostic in diagnostics {\n          diagnostic.to_tokens(dst);\n        }\n      }\n      Repr::SynError(err) => {\n        err.to_compile_error().to_tokens(dst);\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "crates/backend/src/lib.rs",
    "content": "#[macro_use]\nextern crate quote;\n\nuse std::collections::HashMap;\nuse std::sync::LazyLock;\n\nuse proc_macro2::TokenStream;\n\n#[macro_use]\npub mod error;\npub mod ast;\npub mod codegen;\n#[cfg(feature = \"type-def\")]\npub mod typegen;\nmod util;\n\npub use ast::*;\npub use codegen::*;\npub use error::{BindgenResult, Diagnostic};\n#[cfg(feature = \"type-def\")]\npub use semver;\n#[cfg(feature = \"type-def\")]\npub use typegen::*;\npub use util::to_case;\n\n#[derive(Debug)]\npub struct Napi {\n  pub item: NapiItem,\n}\n\nmacro_rules! napi_ast_impl {\n  ( $( ($v:ident, $ast:ident), )* ) => {\n    #[derive(Debug)]\n    #[allow(clippy::large_enum_variant)]\n    pub enum NapiItem {\n      $($v($ast)),*\n    }\n\n    impl TryToTokens for Napi {\n      fn try_to_tokens(&self, tokens: &mut TokenStream) -> BindgenResult<()> {\n        match self.item {\n          $( NapiItem::$v(ref ast) => ast.try_to_tokens(tokens) ),*\n        }\n      }\n    }\n\n\t\t#[cfg(feature = \"type-def\")]\n\t\timpl ToTypeDef for Napi {\n\t\t\tfn to_type_def(&self) -> Option<TypeDef> {\n\t\t\t\tmatch self.item {\n          $( NapiItem::$v(ref ast) => ast.to_type_def() ),*\n        }\n\t\t\t}\n\t\t}\n\n    impl Napi {\n      pub fn register_name(&self) -> String {\n        match self.item {\n          $( NapiItem::$v(ref ast) => ast.register_name.to_string() ),*\n        }\n      }\n    }\n  };\n}\n\nnapi_ast_impl! {\n (Fn, NapiFn),\n (Struct, NapiStruct),\n (Impl, NapiImpl),\n (Enum, NapiEnum),\n (Const, NapiConst),\n (Type, NapiType),\n}\n\npub(crate) static PRIMITIVE_TYPES: &[(&str, (&str, bool, bool))] = &[\n  (\"JsUndefined\", (\"undefined\", false, false)),\n  (\"()\", (\"undefined\", false, false)),\n  (\"Undefined\", (\"undefined\", false, false)),\n  (\"JsNumber\", (\"number\", false, false)),\n  (\"i8\", (\"number\", false, false)),\n  (\"i16\", (\"number\", false, false)),\n  (\"i32\", (\"number\", false, false)),\n  (\"i64\", (\"number\", false, false)),\n  (\"f32\", (\"number\", false, false)),\n  (\"f64\", (\"number\", false, false)),\n  (\"u8\", (\"number\", false, false)),\n  (\"u16\", (\"number\", false, false)),\n  (\"u32\", (\"number\", false, false)),\n  // serde `Number`\n  (\"Number\", (\"number\", false, false)),\n  (\"u64\", (\"bigint\", false, false)),\n  (\"i64n\", (\"bigint\", false, false)),\n  (\"u128\", (\"bigint\", false, false)),\n  (\"i128\", (\"bigint\", false, false)),\n  (\"usize\", (\"bigint\", false, false)),\n  (\"isize\", (\"bigint\", false, false)),\n  (\"JsBigInt\", (\"bigint\", false, false)),\n  (\"BigInt\", (\"bigint\", false, false)),\n  (\"JsBoolean\", (\"boolean\", false, false)),\n  (\"bool\", (\"boolean\", false, false)),\n  (\"JsString\", (\"string\", false, false)),\n  (\"String\", (\"string\", false, false)),\n  (\"RawCString\", (\"string\", false, false)),\n  (\"str\", (\"string\", false, false)),\n  (\"Latin1String\", (\"string\", false, false)),\n  (\"Utf16String\", (\"string\", false, false)),\n  (\"JsStringUtf8\", (\"string\", false, false)),\n  (\"JsStringUtf16\", (\"string\", false, false)),\n  (\"JsStringLatin1\", (\"string\", false, false)),\n  (\"char\", (\"string\", false, false)),\n  (\"Null\", (\"null\", false, false)),\n  (\"JsNull\", (\"null\", false, false)),\n  (\"null\", (\"null\", false, false)),\n  (\"Symbol\", (\"symbol\", false, false)),\n  (\"JsSymbol\", (\"symbol\", false, false)),\n  (\"SymbolRef\", (\"symbol\", false, false)),\n  (\"JsFunction\", (\"(...args: any[]) => any\", true, false)),\n];\n\npub(crate) static TYPEDARRAY_SLICE_TYPES: LazyLock<HashMap<&str, &str>> = LazyLock::new(|| {\n  HashMap::from([\n    (\"u8\", \"Uint8Array\"),\n    (\"i8\", \"Int8Array\"),\n    (\"u16\", \"Uint16Array\"),\n    (\"i16\", \"Int16Array\"),\n    (\"u32\", \"Uint32Array\"),\n    (\"i32\", \"Int32Array\"),\n    (\"f32\", \"Float32Array\"),\n    (\"f64\", \"Float64Array\"),\n    (\"u64\", \"BigUint64Array\"),\n    (\"i64\", \"BigInt64Array\"),\n  ])\n});\n"
  },
  {
    "path": "crates/backend/src/typegen/const.rs",
    "content": "use super::{ToTypeDef, TypeDef};\n\nuse crate::{\n  ty_to_ts_type,\n  typegen::{add_alias, JSDoc},\n  NapiConst,\n};\n\nimpl ToTypeDef for NapiConst {\n  fn to_type_def(&self) -> Option<TypeDef> {\n    if self.skip_typescript {\n      return None;\n    }\n\n    add_alias(self.name.to_string(), self.js_name.to_string());\n\n    Some(TypeDef {\n      kind: \"const\".to_owned(),\n      name: self.js_name.to_owned(),\n      original_name: Some(self.name.to_string()),\n      def: format!(\n        \"export const {}: {}\",\n        &self.js_name,\n        ty_to_ts_type(&self.type_name, false, false, false).0\n      ),\n      js_mod: self.js_mod.to_owned(),\n      js_doc: JSDoc::new(&self.comments),\n    })\n  }\n}\n"
  },
  {
    "path": "crates/backend/src/typegen/enum.rs",
    "content": "use super::{add_alias, ToTypeDef, TypeDef};\nuse crate::{typegen::JSDoc, NapiEnum, NapiEnumValue};\n\nimpl ToTypeDef for NapiEnum {\n  fn to_type_def(&self) -> Option<TypeDef> {\n    if self.skip_typescript {\n      return None;\n    }\n\n    add_alias(self.name.to_string(), self.js_name.to_string());\n\n    Some(TypeDef {\n      kind: if self.is_string_enum {\n        \"string_enum\".to_owned()\n      } else {\n        \"enum\".to_owned()\n      },\n      name: self.js_name.to_owned(),\n      original_name: Some(self.name.to_string()),\n      def: self.gen_ts_variants(),\n      js_doc: JSDoc::new(&self.comments),\n      js_mod: self.js_mod.to_owned(),\n    })\n  }\n}\n\nimpl NapiEnum {\n  fn gen_ts_variants(&self) -> String {\n    self\n      .variants\n      .iter()\n      .map(|v| {\n        let val = match &v.val {\n          NapiEnumValue::Number(num) => format!(\"{num}\"),\n          NapiEnumValue::String(string) => format!(\"'{string}'\"),\n        };\n        format!(\"{}{} = {}\", JSDoc::new(&v.comments), v.name, val)\n      })\n      .collect::<Vec<_>>()\n      .join(\",\\n \")\n  }\n}\n"
  },
  {
    "path": "crates/backend/src/typegen/fn.rs",
    "content": "use std::fmt::{Display, Formatter};\n\nuse convert_case::Case;\nuse quote::ToTokens;\nuse syn::{Member, Pat, PathArguments, PathSegment};\n\nuse super::{r#struct::CLASS_STRUCTS, ty_to_ts_type, ToTypeDef, TypeDef};\nuse crate::{typegen::JSDoc, util::to_case, CallbackArg, FnKind, NapiFn};\n\npub(crate) struct FnArg {\n  pub(crate) arg: String,\n  pub(crate) ts_type: String,\n  pub(crate) is_optional: bool,\n}\n\npub(crate) struct FnArgList {\n  this: Option<FnArg>,\n  args: Vec<FnArg>,\n  last_required: Option<usize>,\n  is_setter: bool,\n}\n\nimpl FnArgList {\n  fn with_setter_context(mut self, is_setter: bool) -> Self {\n    self.is_setter = is_setter;\n    self\n  }\n}\n\nimpl Display for FnArgList {\n  fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {\n    if let Some(this) = &self.this {\n      write!(f, \"this: {}\", this.ts_type)?;\n    }\n    for (i, arg) in self.args.iter().enumerate() {\n      if i != 0 || self.this.is_some() {\n        write!(f, \", \")?;\n      }\n      // For setters, never mark parameter as optional (TS1051: A 'set' accessor cannot have an optional parameter)\n      let is_optional = !self.is_setter\n        && arg.is_optional\n        && self\n          .last_required\n          .is_none_or(|last_required| i > last_required);\n      if is_optional {\n        write!(f, \"{}?: {}\", arg.arg, arg.ts_type)?;\n      } else {\n        write!(f, \"{}: {}\", arg.arg, arg.ts_type)?;\n      }\n    }\n    Ok(())\n  }\n}\n\nimpl FromIterator<FnArg> for FnArgList {\n  fn from_iter<T: IntoIterator<Item = FnArg>>(iter: T) -> Self {\n    let mut args = Vec::new();\n    let mut this = None;\n    for arg in iter.into_iter() {\n      if arg.arg != \"this\" {\n        args.push(arg);\n      } else {\n        this = Some(arg);\n      }\n    }\n    let last_required = args\n      .iter()\n      .enumerate()\n      .rfind(|(_, arg)| !arg.is_optional)\n      .map(|(i, _)| i);\n    FnArgList {\n      this,\n      args,\n      last_required,\n      is_setter: false,\n    }\n  }\n}\n\nimpl ToTypeDef for NapiFn {\n  fn to_type_def(&self) -> Option<TypeDef> {\n    if self.skip_typescript || self.module_exports || self.no_export {\n      return None;\n    }\n\n    let prefix = self.gen_ts_func_prefix();\n    let def = match self.ts_type.as_ref() {\n      Some(ts_type) => format!(\"{prefix} {name}{ts_type}\", name = self.js_name),\n      None => format!(\n        r#\"{prefix} {name}{generic}({args}){ret}\"#,\n        name = &self.js_name,\n        generic = &self\n          .ts_generic_types\n          .as_ref()\n          .map(|g| format!(\"<{g}>\"))\n          .unwrap_or_default(),\n        args = self\n          .ts_args_type\n          .clone()\n          .unwrap_or_else(|| self.gen_ts_func_args()),\n        ret = self\n          .ts_return_type\n          .clone()\n          .map(|t| format!(\": {t}\"))\n          .unwrap_or_else(|| self.gen_ts_func_ret()),\n      ),\n    };\n\n    Some(TypeDef {\n      kind: \"fn\".to_owned(),\n      name: self.js_name.clone(),\n      original_name: None,\n      def,\n      js_mod: self.js_mod.to_owned(),\n      js_doc: JSDoc::new(&self.comments),\n    })\n  }\n}\n\nfn gen_callback_type(callback: &CallbackArg) -> String {\n  format!(\n    \"({args}) => {ret}\",\n    args = &callback\n      .args\n      .iter()\n      .enumerate()\n      .map(|(i, arg)| {\n        let (ts_type, is_optional) = ty_to_ts_type(arg, false, false, false);\n        FnArg {\n          arg: format!(\"arg{i}\"),\n          ts_type,\n          is_optional,\n        }\n      })\n      .collect::<FnArgList>(),\n    ret = match &callback.ret {\n      Some(ty) => ty_to_ts_type(ty, true, false, false).0,\n      None => \"void\".to_owned(),\n    }\n  )\n}\n\nfn gen_ts_func_arg(pat: &Pat) -> String {\n  match pat {\n    Pat::Struct(s) => format!(\n      \"{{ {} }}\",\n      s.fields\n        .iter()\n        .map(|field| {\n          let member_str = match &field.member {\n            Member::Named(ident) => ident.to_string(),\n            Member::Unnamed(index) => format!(\"field{}\", index.index),\n          };\n          let nested_str = gen_ts_func_arg(&field.pat);\n          if member_str == nested_str {\n            to_case(member_str, Case::Camel)\n          } else {\n            format!(\"{}: {}\", to_case(member_str, Case::Camel), nested_str)\n          }\n        })\n        .collect::<Vec<_>>()\n        .join(\", \")\n        .as_str()\n    ),\n    Pat::TupleStruct(ts) => format!(\n      \"{{ {} }}\",\n      ts.elems\n        .iter()\n        .enumerate()\n        .map(|(index, elem)| {\n          let member_str = format!(\"field{index}\");\n          let nested_str = gen_ts_func_arg(elem);\n          format!(\"{member_str}: {nested_str}\")\n        })\n        .collect::<Vec<_>>()\n        .join(\", \"),\n    ),\n    Pat::Tuple(t) => format!(\n      \"[{}]\",\n      t.elems\n        .iter()\n        .map(gen_ts_func_arg)\n        .collect::<Vec<_>>()\n        .join(\", \")\n    ),\n    Pat::Wild(_) => \"_\".to_string(),\n    _ => to_case(pat.to_token_stream().to_string(), Case::Camel),\n  }\n}\n\nimpl NapiFn {\n  fn gen_ts_func_args(&self) -> String {\n    format!(\n      \"{}\",\n      self\n        .args\n        .iter()\n        .filter_map(|arg| match &arg.kind {\n          crate::NapiFnArgKind::PatType(path) => {\n            let ty_string = path.ty.to_token_stream().to_string();\n            if ty_string == \"Env\" {\n              return None;\n            }\n            if let syn::Type::Reference(syn::TypeReference { elem, .. }) = &*path.ty {\n              if let syn::Type::Path(path) = elem.as_ref() {\n                if let Some(PathSegment { ident, .. }) = path.path.segments.last() {\n                  if ident == \"Env\" {\n                    return None;\n                  }\n                }\n              }\n            }\n            if let syn::Type::Path(path) = path.ty.as_ref() {\n              if let Some(PathSegment { ident, arguments }) = path.path.segments.last() {\n                if ident == \"Reference\" || ident == \"WeakReference\" {\n                  if let Some(parent) = &self.parent {\n                    if let PathArguments::AngleBracketed(syn::AngleBracketedGenericArguments {\n                      args: angle_bracketed_args,\n                      ..\n                    }) = arguments\n                    {\n                      if let Some(syn::GenericArgument::Type(syn::Type::Path(syn::TypePath {\n                        path,\n                        ..\n                      }))) = angle_bracketed_args.first()\n                      {\n                        if let Some(segment) = path.segments.first() {\n                          if *parent == segment.ident {\n                            // If we have a Reference<A> in an impl A block, it shouldn't be an arg\n                            return None;\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n                if ident == \"This\" || ident == \"this\" {\n                  if self.kind != FnKind::Normal {\n                    return None;\n                  }\n                  if let PathArguments::AngleBracketed(syn::AngleBracketedGenericArguments {\n                    args: angle_bracketed_args,\n                    ..\n                  }) = arguments\n                  {\n                    if let Some(syn::GenericArgument::Type(ty)) = angle_bracketed_args.first() {\n                      let (ts_type, _) = ty_to_ts_type(ty, false, false, false);\n                      return Some(FnArg {\n                        arg: \"this\".to_owned(),\n                        ts_type,\n                        is_optional: false,\n                      });\n                    }\n                  } else {\n                    return Some(FnArg {\n                      arg: \"this\".to_owned(),\n                      ts_type: \"this\".to_owned(),\n                      is_optional: false,\n                    });\n                  }\n                  return None;\n                }\n              }\n            }\n\n            let mut path = path.clone();\n            // remove mutability from PatIdent\n            if let Pat::Ident(i) = path.pat.as_mut() {\n              i.mutability = None;\n            }\n\n            let (ts_type, is_optional) = ty_to_ts_type(&path.ty, false, false, false);\n            let ts_type = arg.use_overridden_type_or(|| ts_type);\n            let arg = gen_ts_func_arg(&path.pat);\n            Some(FnArg {\n              arg,\n              ts_type,\n              is_optional,\n            })\n          }\n          crate::NapiFnArgKind::Callback(cb) => {\n            let ts_type = arg.use_overridden_type_or(|| gen_callback_type(cb));\n            let arg = to_case(cb.pat.to_token_stream().to_string(), Case::Camel);\n\n            Some(FnArg {\n              arg,\n              ts_type,\n              is_optional: false,\n            })\n          }\n        })\n        .collect::<FnArgList>()\n        .with_setter_context(matches!(self.kind, FnKind::Setter))\n    )\n  }\n\n  fn gen_ts_func_prefix(&self) -> &'static str {\n    if self.parent.is_some() {\n      match self.kind {\n        crate::FnKind::Normal => match self.fn_self {\n          Some(_) => \"\",\n          None => \"static\",\n        },\n        crate::FnKind::Factory => \"static\",\n        crate::FnKind::Constructor => \"\",\n        crate::FnKind::Getter => \"get\",\n        crate::FnKind::Setter => \"set\",\n      }\n    } else {\n      \"function\"\n    }\n  }\n\n  fn gen_ts_func_ret(&self) -> String {\n    match self.kind {\n      FnKind::Constructor | FnKind::Setter => \"\".to_owned(),\n      FnKind::Factory => self\n        .parent\n        .clone()\n        .map(|i| {\n          let origin_name = i.to_string();\n          let parent = CLASS_STRUCTS\n            .with_borrow(|c| c.get(&origin_name).cloned())\n            .unwrap_or_else(|| to_case(origin_name, Case::Pascal));\n\n          if self.is_async {\n            format!(\": Promise<{parent}>\")\n          } else {\n            format!(\": {parent}\")\n          }\n        })\n        .unwrap_or_else(|| \"\".to_owned()),\n      _ => {\n        let ret = if let Some(ret) = &self.ret {\n          let (ts_type, _) = ty_to_ts_type(ret, true, false, false);\n          if ts_type == \"undefined\" {\n            \"void\".to_owned()\n          } else if ts_type == \"Self\" {\n            \"this\".to_owned()\n          } else {\n            ts_type\n          }\n        } else {\n          \"void\".to_owned()\n        };\n        if self.is_async {\n          format!(\": Promise<{ret}>\")\n        } else {\n          format!(\": {ret}\")\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "crates/backend/src/typegen/struct.rs",
    "content": "use std::collections::HashMap;\nuse std::vec::Vec;\nuse std::{cell::RefCell, iter};\n\nuse super::{add_alias, format_js_property_name, ty_to_ts_type, ToTypeDef, TypeDef};\nuse crate::{typegen::JSDoc, util::to_case, NapiImpl, NapiStruct, NapiStructField, NapiStructKind};\n\nthread_local! {\n  pub(crate) static TASK_STRUCTS: RefCell<HashMap<String, String>> = Default::default();\n  pub(crate) static CLASS_STRUCTS: RefCell<HashMap<String, String>> = Default::default();\n}\n\nimpl ToTypeDef for NapiStruct {\n  fn to_type_def(&self) -> Option<TypeDef> {\n    CLASS_STRUCTS.with(|c| {\n      c.borrow_mut()\n        .insert(self.name.to_string(), self.js_name.clone());\n    });\n    add_alias(self.name.to_string(), self.js_name.to_string());\n\n    let mut js_doc = JSDoc::new(&self.comments);\n    if self.is_generator {\n      let generator_doc =[\n\"This type extends JavaScript's `Iterator`, and so has the iterator helper\",\n\"methods. It may extend the upcoming TypeScript `Iterator` class in the future.\",\n\"\",\n\"@see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Iterator#iterator_helper_methods\",\n\"@see https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-6.html#iterator-helper-methods\", ];\n      js_doc.add_block(generator_doc)\n    }\n    if self.is_async_generator {\n      let generator_doc = [\n        \"This type implements JavaScript's async iterable protocol.\",\n        \"It can be used with `for await...of` loops.\",\n        \"\",\n        \"@see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_async_iterator_and_async_iterable_protocols\",\n      ];\n      js_doc.add_block(generator_doc)\n    }\n\n    Some(TypeDef {\n      kind: String::from(match self.kind {\n        NapiStructKind::Transparent(_) => \"type\",\n        NapiStructKind::Class(_) => \"struct\",\n        NapiStructKind::Object(_) => \"interface\",\n        NapiStructKind::StructuredEnum(_) => \"type\",\n        NapiStructKind::Array(_) => \"type\",\n      }),\n      name: self.js_name.to_owned(),\n      original_name: Some(self.name.to_string()),\n      def: self.gen_ts_class(),\n      js_mod: self.js_mod.to_owned(),\n      js_doc,\n    })\n  }\n}\n\nimpl ToTypeDef for NapiImpl {\n  fn to_type_def(&self) -> Option<TypeDef> {\n    if let Some(output_type) = &self.task_output_type {\n      TASK_STRUCTS.with(|t| {\n        let (resolved_type, is_optional) = ty_to_ts_type(output_type, false, true, false);\n        t.borrow_mut().insert(\n          self.name.to_string(),\n          if resolved_type == \"undefined\" {\n            \"void\".to_owned()\n          } else if is_optional {\n            format!(\"{resolved_type} | null\")\n          } else {\n            resolved_type\n          },\n        );\n      });\n    }\n\n    if let Some(output_type) = &self.iterator_yield_type {\n      let next_type = if let Some(ref ty) = self.iterator_next_type {\n        ty_to_ts_type(ty, false, false, false).0\n      } else {\n        \"void\".to_owned()\n      };\n      let return_type = if let Some(ref ty) = self.iterator_return_type {\n        ty_to_ts_type(ty, false, false, false).0\n      } else {\n        \"void\".to_owned()\n      };\n      Some(TypeDef {\n        kind: \"extends\".to_owned(),\n        name: self.js_name.to_owned(),\n        original_name: None,\n        def: format!(\n          \"Iterator<{}, {}, {}>\",\n          ty_to_ts_type(output_type, false, true, false).0,\n          return_type,\n          next_type,\n        ),\n        js_mod: self.js_mod.to_owned(),\n        js_doc: JSDoc::new::<Vec<String>, String>(Vec::default()),\n      })\n    } else if let Some(output_type) = &self.async_iterator_yield_type {\n      let yield_type = ty_to_ts_type(output_type, false, true, false).0;\n      let next_type = if let Some(ref ty) = self.async_iterator_next_type {\n        let ty_str = ty_to_ts_type(ty, false, false, false).0;\n        // Make TNext accept undefined so `for await...of` works (it calls next() with no args)\n        if ty_str == \"void\" || ty_str == \"undefined\" {\n          \"undefined\".to_owned()\n        } else {\n          format!(\"{} | undefined\", ty_str)\n        }\n      } else {\n        \"undefined\".to_owned()\n      };\n      let return_type = if let Some(ref ty) = self.async_iterator_return_type {\n        ty_to_ts_type(ty, false, false, false).0\n      } else {\n        \"void\".to_owned()\n      };\n      // Use \"impl\" kind to add the [Symbol.asyncIterator]() method to the class\n      // instead of \"extends AsyncGenerator\" which is not valid TypeScript\n      Some(TypeDef {\n        kind: \"impl\".to_owned(),\n        name: self.js_name.to_owned(),\n        original_name: None,\n        def: format!(\n          \"[Symbol.asyncIterator](): AsyncGenerator<{}, {}, {}>\",\n          yield_type, return_type, next_type,\n        ),\n        js_mod: self.js_mod.to_owned(),\n        js_doc: JSDoc::new::<Vec<String>, String>(Vec::default()),\n      })\n    } else {\n      Some(TypeDef {\n        kind: \"impl\".to_owned(),\n        name: self.js_name.to_owned(),\n        original_name: None,\n        def: self\n          .items\n          .iter()\n          .filter_map(|f| {\n            if f.skip_typescript {\n              None\n            } else {\n              Some(format!(\n                \"{}{}\",\n                JSDoc::new(&f.comments),\n                f.to_type_def()\n                  .map_or(String::default(), |type_def| type_def.def)\n              ))\n            }\n          })\n          .collect::<Vec<_>>()\n          .join(\"\\\\n\"),\n        js_mod: self.js_mod.to_owned(),\n        js_doc: JSDoc::new::<Vec<String>, String>(Vec::default()),\n      })\n    }\n  }\n}\n\nimpl NapiStruct {\n  fn gen_field(&self, f: &NapiStructField) -> Option<(String, String)> {\n    if f.skip_typescript {\n      return None;\n    }\n\n    let mut field_str = String::from(\"\");\n\n    if !f.comments.is_empty() {\n      field_str.push_str(&format!(\"{}\", JSDoc::new(&f.comments)))\n    }\n\n    if !f.setter {\n      field_str.push_str(\"readonly \")\n    }\n\n    let (arg, is_optional) = ty_to_ts_type(&f.ty, false, true, false);\n    let arg = f.ts_type.as_ref().map(|ty| ty.to_string()).unwrap_or(arg);\n    let js_name = format_js_property_name(&f.js_name);\n\n    let arg = match is_optional {\n      false => format!(\"{}: {}\", &js_name, arg),\n      true => match self.use_nullable {\n        false => format!(\"{}?: {}\", &js_name, arg),\n        true => format!(\"{}: {} | null\", &js_name, arg),\n      },\n    };\n    field_str.push_str(&arg);\n    Some((field_str, arg))\n  }\n\n  fn gen_ts_class(&self) -> String {\n    match &self.kind {\n      NapiStructKind::Transparent(transparent) => {\n        ty_to_ts_type(&transparent.ty, false, false, false).0\n      }\n      NapiStructKind::Array(array) => {\n        let def = array\n          .fields\n          .iter()\n          .filter_map(|f| self.gen_field(f).map(|(field, _)| field))\n          .collect::<Vec<_>>()\n          .join(\", \");\n        format!(\"[{def}]\")\n      }\n      NapiStructKind::Class(class) => {\n        let mut ctor_args = vec![];\n        let def = class\n          .fields\n          .iter()\n          .filter(|f| f.getter)\n          .filter_map(|f| {\n            self.gen_field(f).map(|(field, arg)| {\n              ctor_args.push(arg);\n              field\n            })\n          })\n          .collect::<Vec<_>>()\n          .join(\"\\\\n\");\n        if class.ctor {\n          format!(\"{}\\\\nconstructor({})\", def, ctor_args.join(\", \"))\n        } else {\n          def\n        }\n      }\n      NapiStructKind::Object(object) => object\n        .fields\n        .iter()\n        .filter(|f| f.getter)\n        .filter_map(|f| self.gen_field(f).map(|(field, _)| field))\n        .collect::<Vec<_>>()\n        .join(\"\\\\n\"),\n      NapiStructKind::StructuredEnum(structured_enum) => structured_enum\n        .variants\n        .iter()\n        .map(|variant| {\n          let def = iter::once(format!(\n            \"{}: '{}'\",\n            structured_enum.discriminant,\n            if let Some(case) = structured_enum.discriminant_case {\n              to_case(variant.name.to_string(), case)\n            } else {\n              variant.name.to_string()\n            }\n          ))\n          .chain(\n            variant\n              .fields\n              .iter()\n              .filter(|f| f.getter)\n              .filter_map(|f| self.gen_field(f).map(|(field, _)| field)),\n          )\n          .collect::<Vec<_>>()\n          .join(\", \");\n          format!(\"  | {{ {def} }} \")\n        })\n        .collect::<Vec<_>>()\n        .join(\"\\\\n\"),\n    }\n  }\n}\n"
  },
  {
    "path": "crates/backend/src/typegen/type.rs",
    "content": "use super::{ToTypeDef, TypeDef};\n\nuse crate::{\n  ty_to_ts_type,\n  typegen::{add_alias, JSDoc},\n  NapiType,\n};\n\nimpl ToTypeDef for NapiType {\n  fn to_type_def(&self) -> Option<TypeDef> {\n    if self.skip_typescript {\n      return None;\n    }\n\n    add_alias(self.name.to_string(), self.js_name.to_string());\n\n    Some(TypeDef {\n      kind: \"type\".to_owned(),\n      name: self.js_name.to_owned(),\n      original_name: Some(self.name.to_string()),\n      def: ty_to_ts_type(&self.value, false, false, false).0,\n      js_mod: self.js_mod.to_owned(),\n      js_doc: JSDoc::new(&self.comments),\n    })\n  }\n}\n"
  },
  {
    "path": "crates/backend/src/typegen.rs",
    "content": "use std::{\n  cell::RefCell,\n  collections::HashMap,\n  fmt::{self, Display, Formatter},\n  sync::LazyLock,\n};\n\nmod r#const;\nmod r#enum;\nmod r#fn;\npub(crate) mod r#struct;\nmod r#type;\n\nuse syn::{PathSegment, Type, TypePath, TypeSlice};\n\n#[derive(Default, Debug)]\npub struct TypeDef {\n  pub kind: String,\n  pub name: String,\n  pub original_name: Option<String>,\n  pub def: String,\n  pub js_mod: Option<String>,\n  pub js_doc: JSDoc,\n}\n\n#[derive(Default, Debug)]\npub struct JSDoc {\n  blocks: Vec<Vec<String>>,\n}\n\npub trait ToTypeDef {\n  fn to_type_def(&self) -> Option<TypeDef>;\n}\n\nthread_local! {\n  static ALIAS: RefCell<HashMap<String, String>> = Default::default();\n}\n\nfn add_alias(name: String, alias: String) {\n  ALIAS.with(|aliases| {\n    aliases.borrow_mut().insert(name, alias);\n  });\n}\n\n/// Escapes a string for safe embedding in JSON\nfn escape_json(src: &str) -> String {\n  use std::fmt::Write;\n  let mut escaped = String::with_capacity(src.len());\n  let mut utf16_buf = [0u16; 2];\n\n  for c in src.chars() {\n    match c {\n      '\\x08' => escaped += \"\\\\b\",\n      '\\x0c' => escaped += \"\\\\f\",\n      '\\n' => escaped += \"\\\\n\",\n      '\\r' => escaped += \"\\\\r\",\n      '\\t' => escaped += \"\\\\t\",\n      '\"' => escaped += \"\\\\\\\"\",\n      '\\\\' => escaped += \"\\\\\\\\\",\n      ' ' => escaped += \" \",\n      c if c.is_ascii_graphic() => escaped.push(c),\n      c => {\n        let encoded = c.encode_utf16(&mut utf16_buf);\n        for utf16 in encoded {\n          write!(escaped, \"\\\\u{utf16:04X}\").unwrap();\n        }\n      }\n    }\n  }\n\n  escaped\n}\n\n/// Formats a JavaScript property name, adding quotes if it contains special characters\n/// or starts with a digit that would make it an invalid identifier.\n///\n/// This function checks for characters that are known to be invalid in JavaScript\n/// identifiers, rather than trying to enumerate all valid ones (which would need\n/// complex Unicode identifier rules). This approach allows Unicode letters and\n/// maintains backward compatibility.\npub fn format_js_property_name(js_name: &str) -> String {\n  // Check if first character is a digit\n  let starts_with_digit = js_name.chars().next().is_some_and(|c| c.is_ascii_digit());\n\n  // Check for specific characters that are known to be invalid in JS identifiers\n  // We explicitly check for invalid characters rather than trying to enumerate all\n  // valid ones, which allows Unicode letters while catching common problematic chars.\n  let has_invalid_chars = js_name.chars().any(|c| {\n    matches!(\n      c,\n      '-' | ':'\n        | ' '\n        | '.'\n        | '['\n        | ']'\n        | '@'\n        | '#'\n        | '$'  // Maintaining backward compatibility: $ was quoted in original implementation\n        | '%'\n        | '^'\n        | '&'\n        | '*'\n        | '('\n        | ')'\n        | '+'\n        | '='\n        | '{'\n        | '}'\n        | '|'\n        | '\\\\'\n        | ';'\n        | '\\''\n        | '\"'\n        | '<'\n        | '>'\n        | ','\n        | '?'\n        | '/'\n        | '~'\n        | '`'\n        | '!'\n    )\n  });\n\n  let needs_quotes = starts_with_digit || has_invalid_chars;\n\n  if needs_quotes {\n    format!(\"'{js_name}'\")\n  } else {\n    js_name.to_string()\n  }\n}\n\nimpl JSDoc {\n  pub fn new<I, S>(initial_lines: I) -> JSDoc\n  where\n    I: IntoIterator<Item = S>,\n    S: Into<String>,\n  {\n    let block = Self::cleanup_lines(initial_lines);\n    if block.is_empty() {\n      return Self { blocks: vec![] };\n    }\n\n    Self {\n      blocks: vec![block],\n    }\n  }\n\n  pub fn add_block<I, S>(&mut self, lines: I)\n  where\n    I: IntoIterator<Item = S>,\n    S: Into<String>,\n  {\n    let v: Vec<String> = Self::cleanup_lines(lines);\n\n    if !v.is_empty() {\n      self.blocks.push(v);\n    }\n  }\n\n  fn cleanup_lines<I, S>(lines: I) -> Vec<String>\n  where\n    I: IntoIterator<Item = S>,\n    S: Into<String>,\n  {\n    let raw: Vec<String> = lines.into_iter().map(Into::into).collect();\n\n    if let (Some(first_non_blank), Some(last_non_blank)) = (\n      raw.iter().position(|l| !l.trim().is_empty()),\n      raw.iter().rposition(|l| !l.trim().is_empty()),\n    ) {\n      // Find the minimum indentation level (excluding empty lines)\n      let min_indent = raw[first_non_blank..=last_non_blank]\n        .iter()\n        .filter(|l| !l.trim().is_empty())\n        .map(|l| l.len() - l.trim_start().len())\n        .min()\n        .unwrap_or(0);\n\n      raw[first_non_blank..=last_non_blank]\n        .iter()\n        .map(|l| {\n          if l.trim().is_empty() {\n            String::new()\n          } else if l.len() >= min_indent {\n            l[min_indent..].to_owned()\n          } else {\n            l.to_owned()\n          }\n        })\n        .collect()\n    } else {\n      Vec::new()\n    }\n  }\n}\n\nimpl Display for JSDoc {\n  fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {\n    if self.blocks.is_empty() {\n      return Ok(());\n    }\n\n    // Escape `*/` sequences to prevent premature comment termination\n    fn escape_comment_close(s: &str) -> String {\n      s.replace(\"*/\", \"*\\\\/\")\n    }\n\n    if self.blocks.len() == 1 && self.blocks[0].len() == 1 {\n      return writeln!(f, \"/** {} */\", escape_comment_close(&self.blocks[0][0]));\n    }\n\n    writeln!(f, \"/**\")?;\n    for (i, block) in self.blocks.iter().enumerate() {\n      for line in block {\n        writeln!(f, \" * {}\", escape_comment_close(line))?;\n      }\n      if i + 1 != self.blocks.len() {\n        writeln!(f, \" *\")?;\n      }\n    }\n    writeln!(f, \" */\")\n  }\n}\n\nimpl Display for TypeDef {\n  fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {\n    let js_mod = if let Some(js_mod) = &self.js_mod {\n      format!(\", \\\"js_mod\\\": \\\"{js_mod}\\\"\")\n    } else {\n      \"\".to_string()\n    };\n    let original_name = if let Some(original_name) = &self.original_name {\n      format!(\", \\\"original_name\\\": \\\"{original_name}\\\"\")\n    } else {\n      \"\".to_string()\n    };\n\n    write!(\n      f,\n      r#\"{{\"kind\": \"{}\", \"name\": \"{}\", \"js_doc\": \"{}\", \"def\": \"{}\"{}{}}}\"#,\n      self.kind,\n      self.name,\n      escape_json(&self.js_doc.to_string()),\n      escape_json(&self.def),\n      original_name,\n      js_mod,\n    )\n  }\n}\n\n/// Mapping from `rust_type` to (`ts_type`, `is_ts_function_type_notation`, `is_ts_union_type`)\nstatic KNOWN_TYPES: LazyLock<HashMap<&'static str, (&'static str, bool, bool)>> = LazyLock::new(\n  || {\n    let mut map = HashMap::default();\n\n    // Primitive types (imported from crate::PRIMITIVE_TYPES)\n    map.extend(crate::PRIMITIVE_TYPES.iter().cloned());\n\n    // Basic object types\n    map.extend([\n      (\"JsObject\", (\"object\", false, false)),\n      (\"Object\", (\"object\", false, false)),\n      (\"ObjectRef\", (\"object\", false, false)),\n      (\"Array\", (\"unknown[]\", false, false)),\n      (\"Value\", (\"any\", false, false)),\n      (\"ClassInstance\", (\"{}\", false, false)),\n    ]);\n\n    // Collection types\n    map.extend([\n      (\"Map\", (\"Record<string, any>\", false, false)),\n      (\"HashMap\", (\"Record<{}, {}>\", false, false)),\n      (\"BTreeMap\", (\"Record<{}, {}>\", false, false)),\n      (\"IndexMap\", (\"Record<{}, {}>\", false, false)),\n      (\"HashSet\", (\"Set<{}>\", false, false)),\n      (\"BTreeSet\", (\"Set<{}>\", false, false)),\n      (\"IndexSet\", (\"Set<{}>\", false, false)),\n      (\"Vec\", (\"Array<{}>\", false, false)),\n    ]);\n\n    // TypedArray types\n    map.extend([\n      (\"ArrayBuffer\", (\"ArrayBuffer\", false, false)),\n      (\"JsArrayBuffer\", (\"ArrayBuffer\", false, false)),\n      (\"Int8Array\", (\"Int8Array\", false, false)),\n      (\"Int8ArraySlice\", (\"Int8Array\", false, false)),\n      (\"Uint8Array\", (\"Uint8Array\", false, false)),\n      (\"Uint8ArraySlice\", (\"Uint8Array\", false, false)),\n      (\"Uint8ClampedArray\", (\"Uint8ClampedArray\", false, false)),\n      (\"Uint8ClampedSlice\", (\"Uint8ClampedArray\", false, false)),\n      (\"Int16Array\", (\"Int16Array\", false, false)),\n      (\"Int16ArraySlice\", (\"Int16Array\", false, false)),\n      (\"Uint16Array\", (\"Uint16Array\", false, false)),\n      (\"Uint16ArraySlice\", (\"Uint16Array\", false, false)),\n      (\"Int32Array\", (\"Int32Array\", false, false)),\n      (\"Int32ArraySlice\", (\"Int32Array\", false, false)),\n      (\"Uint32Array\", (\"Uint32Array\", false, false)),\n      (\"Uint32ArraySlice\", (\"Uint32Array\", false, false)),\n      (\"Float32Array\", (\"Float32Array\", false, false)),\n      (\"Float32ArraySlice\", (\"Float32Array\", false, false)),\n      (\"Float64Array\", (\"Float64Array\", false, false)),\n      (\"Float64ArraySlice\", (\"Float64Array\", false, false)),\n      (\"BigInt64Array\", (\"BigInt64Array\", false, false)),\n      (\"BigInt64ArraySlice\", (\"BigInt64Array\", false, false)),\n      (\"BigUint64Array\", (\"BigUint64Array\", false, false)),\n      (\"BigUint64ArraySlice\", (\"BigUint64Array\", false, false)),\n      (\"DataView\", (\"DataView\", false, false)),\n    ]);\n\n    // Date and time types\n    map.extend([\n      (\"DateTime\", (\"Date\", false, false)),\n      (\"NaiveDateTime\", (\"Date\", false, false)),\n      (\"Date\", (\"Date\", false, false)),\n      (\"JsDate\", (\"Date\", false, false)),\n    ]);\n\n    // Buffer types\n    map.extend([\n      (\"JsBuffer\", (\"Buffer\", false, false)),\n      (\"BufferSlice\", (\"Buffer\", false, false)),\n      (\"Buffer\", (\"Buffer\", false, false)),\n    ]);\n\n    // Error and Result types (note: Result is a union type)\n    map.extend([\n      (\"Result\", (\"Error | {}\", false, true)),\n      (\"Error\", (\"Error\", false, false)),\n      (\"JsError\", (\"Error\", false, false)),\n      (\"JsTypeError\", (\"TypeError\", false, false)),\n      (\"JsRangeError\", (\"RangeError\", false, false)),\n    ]);\n\n    // Function types (note: these use function type notation)\n    map.extend([\n      (\"Function\", (\"({}) => {}\", true, false)),\n      (\"FunctionRef\", (\"({}) => {}\", true, false)),\n    ]);\n\n    // Stream types\n    map.extend([(\"ReadableStream\", (\"ReadableStream<{}>\", false, false))]);\n\n    // Either types (union types for multiple variants)\n    map.extend([\n      (\"Either\", (\"{} | {}\", false, true)),\n      (\"Either3\", (\"{} | {} | {}\", false, true)),\n      (\"Either4\", (\"{} | {} | {} | {}\", false, true)),\n      (\"Either5\", (\"{} | {} | {} | {} | {}\", false, true)),\n      (\"Either6\", (\"{} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either7\", (\"{} | {} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either8\", (\"{} | {} | {} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either9\", (\"{} | {} | {} | {} | {} | {} | {} | {} | {}\",false, true)),\n      (\"Either10\", (\"{} | {} | {} | {} | {} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either11\", (\"{} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either12\", (\"{} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either13\", (\"{} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either14\", (\"{} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either15\", (\"{} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either16\", (\"{} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either17\", (\"{} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either18\", (\"{} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either19\", (\"{} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either20\", (\"{} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either21\", (\"{} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either22\", (\"{} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either23\", (\"{} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either24\", (\"{} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either25\", (\"{} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {}\", false, true)),\n      (\"Either26\", (\"{} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {} | {}\", false, true)),\n    ]);\n\n    // Async and Promise types\n    map.extend([\n      (\"Promise\", (\"Promise<{}>\", false, false)),\n      (\"PromiseRaw\", (\"Promise<{}>\", false, false)),\n      (\"AbortSignal\", (\"AbortSignal\", false, false)),\n    ]);\n\n    // External and unknown types\n    map.extend([\n      (\"JsGlobal\", (\"typeof global\", false, false)),\n      (\"JsExternal\", (\"object\", false, false)),\n      (\"external\", (\"object\", false, false)),\n      (\"External\", (\"ExternalObject<{}>\", false, false)),\n      (\"ExternalRef\", (\"ExternalObject<{}>\", false, false)),\n      (\"unknown\", (\"unknown\", false, false)),\n      (\"Unknown\", (\"unknown\", false, false)),\n      (\"UnknownRef\", (\"unknown\", false, false)),\n      (\"UnknownReturnValue\", (\"unknown\", false, false)),\n      (\"JsUnknown\", (\"unknown\", false, false)),\n      (\"This\", (\"this\", false, false)),\n    ]);\n\n    // Smart pointer types\n    map.extend([\n      (\"Rc\", (\"{}\", false, false)),\n      (\"Arc\", (\"{}\", false, false)),\n      (\"Mutex\", (\"{}\", false, false)),\n    ]);\n\n    map\n  },\n);\n\nstatic KNOWN_TYPES_IGNORE_ARG: LazyLock<HashMap<&'static str, Vec<usize>>> = LazyLock::new(|| {\n  [\n    (\"HashMap\", vec![2]),  // HashMap<K, V, S> is same with HashMap<K, V>\n    (\"HashSet\", vec![1]),  // HashSet<T, S> is same with HashSet<T>\n    (\"IndexMap\", vec![2]), // IndexMap<K, V, S> is same with IndexMap<K, V>\n    (\"IndexSet\", vec![1]), // IndexSet<T, S> is same with HashSet<T>\n  ]\n  .into()\n});\n\n// ============================================================================\n// Type Checking and Template Utilities\n// ============================================================================\n\n/// Fills a TypeScript type template with arguments\nfn fill_ty(template: &str, args: Vec<String>) -> String {\n  let matches = template.match_indices(\"{}\").collect::<Vec<_>>();\n  if args.len() != matches.len() {\n    return String::from(\"any\");\n  }\n\n  let mut ret = String::from(\"\");\n  let mut prev = 0;\n  matches.into_iter().zip(args).for_each(|((index, _), arg)| {\n    ret.push_str(&template[prev..index]);\n    ret.push_str(&arg);\n    prev = index + 2;\n  });\n\n  ret.push_str(&template[prev..]);\n  ret\n}\n\n/// Checks if a Rust type maps to a TypeScript union type\nfn is_ts_union_type(rust_ty: &str) -> bool {\n  KNOWN_TYPES\n    .get(rust_ty)\n    .map(|&(_, _, is_union_type)| is_union_type)\n    .unwrap_or(false)\n}\n\n// Type constants for function types\nconst TSFN_RUST_TY: &str = \"ThreadsafeFunction\";\nconst FUNCTION_TY: &str = \"Function\";\nconst FUNCTION_ARG_TY: &str = \"FnArgs\";\nconst FUNCTION_REF_TY: &str = \"FunctionRef\";\n\n/// Checks if a Rust type is a generic function type\nfn is_generic_function_type(rust_ty: &str) -> bool {\n  rust_ty == TSFN_RUST_TY\n    || rust_ty == FUNCTION_TY\n    || rust_ty == FUNCTION_ARG_TY\n    || rust_ty == FUNCTION_REF_TY\n}\n\n/// Checks if a type uses TypeScript function type notation\nfn is_ts_function_type_notation(ty: &Type) -> bool {\n  match ty {\n    Type::Path(syn::TypePath { qself: None, path }) => {\n      if let Some(syn::PathSegment { ident, .. }) = path.segments.last() {\n        let rust_ty = ident.to_string();\n        return KNOWN_TYPES\n          .get(&*rust_ty)\n          .map(|&(_, is_fn, _)| is_fn)\n          .unwrap_or(false);\n      }\n\n      false\n    }\n    _ => false,\n  }\n}\n\n/// Handles conversion of Option<T> to TypeScript\nfn handle_option_type(\n  args: &[(String, bool)],\n  is_struct_field: bool,\n  is_return_ty: bool,\n) -> Option<(String, bool)> {\n  args.first().map(|(arg, _)| {\n    if is_struct_field {\n      return (arg.to_string(), true);\n    };\n    let is_arg_callback = arg.contains(\"=>\");\n    let arg = if is_arg_callback {\n      format!(\"({arg})\")\n    } else {\n      arg.clone()\n    };\n    (\n      if is_return_ty {\n        format!(\"{arg} | null\")\n      } else {\n        format!(\"{arg} | undefined | null\")\n      },\n      true,\n    )\n  })\n}\n\n/// Handles conversion of AsyncTask<T> to Promise<T>\nfn handle_async_task_type(args: &[(String, bool)]) -> Option<(String, bool)> {\n  r#struct::TASK_STRUCTS.with(|t| {\n    let (output_type, _) = args.first()?.to_owned();\n    if let Some(o) = t.borrow().get(&output_type) {\n      Some((format!(\"Promise<{o}>\"), false))\n    } else {\n      Some((\"Promise<unknown>\".to_owned(), false))\n    }\n  })\n}\n\n/// Handles conversion of Reference<T> and WeakReference<T>\nfn handle_reference_type(args: &[(String, bool)], rust_ty: String) -> Option<(String, bool)> {\n  r#struct::TASK_STRUCTS.with(|t| {\n    // Reference<T> => T\n    if let Some(arg) = args.first() {\n      let (output_type, _) = arg.to_owned();\n      if let Some(o) = t.borrow().get(&output_type) {\n        Some((o.to_owned(), false))\n      } else {\n        Some((output_type, false))\n      }\n    } else {\n      // Not NAPI-RS `Reference`\n      Some((rust_ty, false))\n    }\n  })\n}\n\n/// Handles conversion of AsyncBlock<T> to Promise<T>\nfn handle_async_block_type(args: &[(String, bool)], rust_ty: String) -> Option<(String, bool)> {\n  if let Some(arg) = args.first() {\n    Some((format!(\"Promise<{}>\", arg.0), false))\n  } else {\n    // Not NAPI-RS `AsyncBlock`\n    Some((rust_ty, false))\n  }\n}\n\n/// Handles conversion of ThreadsafeFunction to TypeScript function type\nfn handle_threadsafe_function_type(args: &[(String, bool)]) -> Option<(String, bool)> {\n  let handled_tsfn = match args.get(4) {\n    Some((arg, _)) => arg == \"true\",\n    _ => true,\n  };\n\n  let fn_args = args\n    .get(2)\n    .or_else(|| args.first())\n    .map(|(arg, _)| {\n      // If the argument is just a type without parameter names (e.g., \"string\"),\n      // we need to add a parameter name for function signatures\n      if arg.contains(':') || arg.is_empty() {\n        // Already has parameter names or is empty\n        arg.clone()\n      } else {\n        // Single type without parameter name, add one\n        format!(\"arg: {arg}\")\n      }\n    })\n    .unwrap();\n\n  let return_ty = args\n    .get(1)\n    .map(|(ty, _)| ty.clone())\n    .unwrap_or(\"any\".to_owned());\n\n  if handled_tsfn {\n    Some((\n      format!(\"((err: Error | null, {fn_args}) => {return_ty})\"),\n      false,\n    ))\n  } else {\n    Some((format!(\"(({fn_args}) => {return_ty})\"), false))\n  }\n}\n\n/// Handles known types from the KNOWN_TYPES map\nfn handle_known_type(\n  rust_ty: &str,\n  known_ty: &str,\n  args: Vec<(String, bool)>,\n  is_return_ty: bool,\n) -> Option<(String, bool)> {\n  if rust_ty == \"()\" && is_return_ty {\n    return Some((\"void\".to_owned(), false));\n  }\n\n  if !known_ty.contains(\"{}\") {\n    return Some((known_ty.to_owned(), false));\n  }\n\n  let args = args.into_iter().map(|(arg, _)| arg);\n\n  if rust_ty.starts_with(\"Either\") {\n    let union_args = args.fold(vec![], |mut acc, cur| {\n      if !acc.contains(&cur) {\n        acc.push(cur);\n      }\n      acc\n    });\n    // EitherN has the same ts types, like Either<f64, u32> -> number\n    if union_args.len() == 1 {\n      Some((union_args[0].to_owned(), false))\n    } else {\n      Some((fill_ty(known_ty, union_args), false))\n    }\n  } else {\n    let mut filtered_args = if let Some(arg_indices) = KNOWN_TYPES_IGNORE_ARG.get(rust_ty) {\n      args\n        .enumerate()\n        .filter(|(i, _)| !arg_indices.contains(i))\n        .map(|(_, arg)| arg)\n        .collect::<Vec<_>>()\n    } else {\n      args.collect::<Vec<_>>()\n    };\n    if rust_ty.starts_with(\"Function\") && filtered_args.is_empty() {\n      filtered_args = vec![\"arg?: unknown\".to_owned(), \"unknown\".to_owned()];\n    }\n\n    Some((fill_ty(known_ty, filtered_args), false))\n  }\n}\n\n/// Handles generic type conversion and aliasing\nfn handle_generic_type(rust_ty: &str, args: &[(String, bool)]) -> Option<(String, bool)> {\n  let type_alias =\n    ALIAS.with(|aliases| aliases.borrow().get(rust_ty).map(|a| (a.to_owned(), false)));\n\n  // Generic type handling\n  if !args.is_empty() {\n    let arg_str = args\n      .iter()\n      .map(|(arg, _)| arg.clone())\n      .collect::<Vec<String>>()\n      .join(\", \");\n    let mut ty = rust_ty;\n    if let Some((alias, _)) = type_alias {\n      // If alias contains '<', take the base type as &str, then convert to String for formatting\n      ty = alias.split_once('<').map(|(t, _)| t).unwrap();\n      return Some((format!(\"{}<{}>\", ty, arg_str), false));\n    }\n    Some((format!(\"{}<{}>\", ty, arg_str), false))\n  } else {\n    type_alias.or(Some((rust_ty.to_string(), false)))\n  }\n}\n\n/// Processes generic arguments for a type path\nfn process_generic_arguments(arguments: &syn::PathArguments, rust_ty: &str) -> Vec<(String, bool)> {\n  let is_ts_union_type = is_ts_union_type(rust_ty);\n  let mut is_function_with_lifetime = false;\n\n  if let syn::PathArguments::AngleBracketed(arguments) = arguments {\n    arguments\n      .args\n      .iter()\n      .enumerate()\n      .filter_map(|(index, arg)| match arg {\n        syn::GenericArgument::Type(generic_ty) => {\n          let mut is_return_type = false;\n          if index == 1 && is_generic_function_type(rust_ty) {\n            is_return_type = true;\n          }\n          // if Type is Function, first argument is lifetime and second is params, third is return type\n          // so we need to judge is_function_with_lifetime and set is_return_type\n          // if not and just keep the origin's logic\n          if is_function_with_lifetime {\n            is_return_type = index != 1;\n          }\n          Some(ty_to_ts_type(\n            generic_ty,\n            is_return_type,\n            false,\n            // index == 2 is for ThreadsafeFunction with ErrorStrategy\n            is_generic_function_type(rust_ty),\n          ))\n          .map(|(mut ty, is_optional)| {\n            if is_ts_union_type && is_ts_function_type_notation(generic_ty) {\n              ty = format!(\"({ty})\");\n            }\n            (ty, is_optional)\n          })\n        }\n        // const Generic for `ThreadsafeFunction` generic\n        syn::GenericArgument::Const(syn::Expr::Lit(syn::ExprLit {\n          lit: syn::Lit::Bool(bo),\n          ..\n        })) => Some((bo.value.to_string(), false)),\n        syn::GenericArgument::Lifetime(_) => {\n          if index == 0 && is_generic_function_type(rust_ty) {\n            is_function_with_lifetime = true;\n          }\n          None\n        }\n        _ => None,\n      })\n      .collect::<Vec<_>>()\n  } else {\n    vec![]\n  }\n}\n\n/// Handles Type::Path conversion to TypeScript\nfn handle_type_path(\n  path: &syn::Path,\n  is_return_ty: bool,\n  is_struct_field: bool,\n  convert_tuple_to_variadic: bool,\n) -> (String, bool) {\n  let mut is_passthrough_type = false;\n\n  let ts_ty = if let Some(syn::PathSegment { ident, arguments }) = path.segments.last() {\n    let rust_ty = ident.to_string();\n    let args = process_generic_arguments(arguments, &rust_ty);\n\n    // Handle special type cases\n    if rust_ty == \"Result\" && is_return_ty {\n      Some(args.first().unwrap().to_owned())\n    } else if rust_ty == \"Option\" {\n      handle_option_type(&args, is_struct_field, is_return_ty)\n    } else if rust_ty == \"AsyncTask\" {\n      handle_async_task_type(&args)\n    } else if rust_ty == \"Reference\" || rust_ty == \"WeakReference\" {\n      handle_reference_type(&args, rust_ty)\n    } else if rust_ty == \"AsyncBlock\" {\n      handle_async_block_type(&args, rust_ty)\n    } else if rust_ty == \"FnArgs\" {\n      is_passthrough_type = true;\n      Some(args.first().unwrap().to_owned())\n    } else if let Some(&(known_ty, _, _)) = KNOWN_TYPES.get(rust_ty.as_str()) {\n      handle_known_type(&rust_ty, known_ty, args, is_return_ty)\n    } else if let Some(t) = crate::typegen::r#struct::CLASS_STRUCTS\n      .with(|c| c.borrow_mut().get(rust_ty.as_str()).cloned())\n    {\n      Some((t, false))\n    } else if rust_ty == TSFN_RUST_TY {\n      handle_threadsafe_function_type(&args)\n    } else {\n      handle_generic_type(&rust_ty, &args)\n    }\n  } else {\n    None\n  };\n\n  let (ty, is_optional) = ts_ty.unwrap_or_else(|| (\"any\".to_owned(), false));\n  (\n    if convert_tuple_to_variadic && !is_return_ty && !is_passthrough_type {\n      format!(\"arg: {ty}\")\n    } else {\n      ty\n    },\n    is_optional,\n  )\n}\n\n// return (type, is_optional)\npub fn ty_to_ts_type(\n  ty: &Type,\n  is_return_ty: bool,\n  is_struct_field: bool,\n  convert_tuple_to_variadic: bool,\n) -> (String, bool) {\n  match ty {\n    Type::Reference(r) => ty_to_ts_type(&r.elem, is_return_ty, is_struct_field, false),\n    Type::Tuple(tuple) => {\n      if tuple.elems.is_empty() {\n        if convert_tuple_to_variadic {\n          if is_return_ty {\n            (\"void\".to_owned(), false)\n          } else {\n            (\"\".to_owned(), false)\n          }\n        } else {\n          (\"undefined\".to_owned(), false)\n        }\n      } else if convert_tuple_to_variadic {\n        let variadic = &tuple\n          .elems\n          .iter()\n          .enumerate()\n          .map(|(i, arg)| {\n            let (ts_type, is_optional) = ty_to_ts_type(arg, false, false, false);\n            r#fn::FnArg {\n              arg: format!(\"arg{i}\"),\n              ts_type,\n              is_optional,\n            }\n          })\n          .collect::<r#fn::FnArgList>();\n        (format!(\"{variadic}\"), false)\n      } else {\n        (\n          format!(\n            \"[{}]\",\n            tuple\n              .elems\n              .iter()\n              .map(|elem| ty_to_ts_type(elem, false, false, false).0)\n              .collect::<Vec<_>>()\n              .join(\", \")\n          ),\n          false,\n        )\n      }\n    }\n    Type::Path(syn::TypePath { qself: None, path }) => handle_type_path(\n      path,\n      is_return_ty,\n      is_struct_field,\n      convert_tuple_to_variadic,\n    ),\n    Type::Group(g) => ty_to_ts_type(&g.elem, is_return_ty, is_struct_field, false),\n    Type::Array(a) => {\n      let (element_type, is_optional) =\n        ty_to_ts_type(&a.elem, is_return_ty, is_struct_field, false);\n      (format!(\"{element_type}[]\"), is_optional)\n    }\n    Type::Paren(p) => {\n      let (element_type, is_optional) =\n        ty_to_ts_type(&p.elem, is_return_ty, is_struct_field, false);\n      (element_type, is_optional)\n    }\n    Type::Slice(TypeSlice { elem, .. }) => {\n      if let Type::Path(TypePath { path, .. }) = &**elem {\n        if let Some(PathSegment { ident, .. }) = path.segments.last() {\n          if let Some(js_type) = crate::TYPEDARRAY_SLICE_TYPES.get(&ident.to_string().as_str()) {\n            return (js_type.to_string(), false);\n          }\n        }\n      }\n      (\"any[]\".to_owned(), false)\n    }\n    _ => (\"any\".to_owned(), false),\n  }\n}\n\n#[cfg(test)]\nmod tests {\n  use super::{escape_json, format_js_property_name};\n\n  #[test]\n  fn test_escape_json_escaped_quotes() {\n    // Test the specific case reported in issue #2502\n    let input = r#\"\\\\\"g+sx\\\\\"\"#;\n    let result = escape_json(input);\n\n    // Verify the result can be parsed as JSON\n    let json_string = format!(r#\"{{\"comment\": \"{result}\"}}\"#);\n    let parsed: serde_json::Value =\n      serde_json::from_str(&json_string).expect(\"Should parse as valid JSON\");\n\n    if let Some(comment) = parsed.get(\"comment\").and_then(|v| v.as_str()) {\n      assert_eq!(comment, r#\"\\\\\"g+sx\\\\\"\"#);\n    } else {\n      panic!(\"Failed to extract comment from parsed JSON\");\n    }\n  }\n\n  #[test]\n  fn test_escape_json_basic_escapes() {\n    assert_eq!(escape_json(r#\"test\"quote\"#), r#\"test\\\"quote\"#);\n    assert_eq!(escape_json(\"test\\nline\"), r#\"test\\nline\"#);\n    assert_eq!(escape_json(\"test\\tTab\"), r#\"test\\tTab\"#);\n    assert_eq!(escape_json(\"test\\\\backslash\"), \"test\\\\\\\\backslash\");\n  }\n\n  #[test]\n  fn test_escape_json_multiple_escapes() {\n    assert_eq!(\n      escape_json(r#\"test\\\\\"multiple\\\\\"\"#),\n      r#\"test\\\\\\\\\\\"multiple\\\\\\\\\\\"\"#\n    );\n    assert_eq!(escape_json(r#\"\\\\\\\\\"#), r#\"\\\\\\\\\\\\\\\\\"#);\n  }\n\n  #[test]\n  fn test_escape_json_trailing_backslash() {\n    assert_eq!(escape_json(r#\"test\\\"#), r#\"test\\\\\"#);\n  }\n\n  // Tests for format_js_property_name\n  #[test]\n  fn test_format_js_property_name_valid_identifiers() {\n    // Simple ASCII identifiers should not be quoted\n    assert_eq!(format_js_property_name(\"foo\"), \"foo\");\n    assert_eq!(format_js_property_name(\"myProperty\"), \"myProperty\");\n    assert_eq!(format_js_property_name(\"_private\"), \"_private\");\n    assert_eq!(format_js_property_name(\"__proto__\"), \"__proto__\");\n    assert_eq!(format_js_property_name(\"camelCase\"), \"camelCase\");\n    assert_eq!(format_js_property_name(\"PascalCase\"), \"PascalCase\");\n    assert_eq!(format_js_property_name(\"with123numbers\"), \"with123numbers\");\n  }\n\n  #[test]\n  fn test_format_js_property_name_unicode_identifiers() {\n    // Unicode letters should be allowed (not quoted)\n    assert_eq!(format_js_property_name(\"café\"), \"café\");\n    assert_eq!(format_js_property_name(\"日本語\"), \"日本語\");\n    assert_eq!(format_js_property_name(\"Ελληνικά\"), \"Ελληνικά\");\n    assert_eq!(format_js_property_name(\"мир\"), \"мир\");\n    assert_eq!(format_js_property_name(\"世界\"), \"世界\");\n  }\n\n  #[test]\n  fn test_format_js_property_name_starts_with_digit() {\n    // Identifiers starting with digits should be quoted\n    assert_eq!(format_js_property_name(\"0invalid\"), \"'0invalid'\");\n    assert_eq!(format_js_property_name(\"123\"), \"'123'\");\n    assert_eq!(format_js_property_name(\"9Lives\"), \"'9Lives'\");\n  }\n\n  #[test]\n  fn test_format_js_property_name_special_chars() {\n    // Properties with special characters should be quoted\n    assert_eq!(format_js_property_name(\"kebab-case\"), \"'kebab-case'\");\n    assert_eq!(format_js_property_name(\"with space\"), \"'with space'\");\n    assert_eq!(format_js_property_name(\"dot.notation\"), \"'dot.notation'\");\n    assert_eq!(format_js_property_name(\"array[0]\"), \"'array[0]'\");\n    assert_eq!(format_js_property_name(\"@decorator\"), \"'@decorator'\");\n    assert_eq!(format_js_property_name(\"#private\"), \"'#private'\");\n    assert_eq!(format_js_property_name(\"percent%\"), \"'percent%'\");\n    assert_eq!(format_js_property_name(\"caret^\"), \"'caret^'\");\n    assert_eq!(format_js_property_name(\"ampersand&\"), \"'ampersand&'\");\n    assert_eq!(format_js_property_name(\"star*\"), \"'star*'\");\n    assert_eq!(format_js_property_name(\"paren(\"), \"'paren('\");\n    assert_eq!(format_js_property_name(\"paren)\"), \"'paren)'\");\n    assert_eq!(format_js_property_name(\"plus+\"), \"'plus+'\");\n    assert_eq!(format_js_property_name(\"equals=\"), \"'equals='\");\n    assert_eq!(format_js_property_name(\"brace{\"), \"'brace{'\");\n    assert_eq!(format_js_property_name(\"brace}\"), \"'brace}'\");\n    assert_eq!(format_js_property_name(\"pipe|\"), \"'pipe|'\");\n    assert_eq!(format_js_property_name(\"backslash\\\\\"), \"'backslash\\\\'\");\n    assert_eq!(format_js_property_name(\"semicolon;\"), \"'semicolon;'\");\n    assert_eq!(format_js_property_name(\"quote'\"), \"'quote''\");\n    assert_eq!(format_js_property_name(\"doublequote\\\"\"), \"'doublequote\\\"'\");\n    assert_eq!(format_js_property_name(\"less<\"), \"'less<'\");\n    assert_eq!(format_js_property_name(\"greater>\"), \"'greater>'\");\n    assert_eq!(format_js_property_name(\"comma,\"), \"'comma,'\");\n    assert_eq!(format_js_property_name(\"question?\"), \"'question?'\");\n    assert_eq!(format_js_property_name(\"slash/\"), \"'slash/'\");\n    assert_eq!(format_js_property_name(\"tilde~\"), \"'tilde~'\");\n    assert_eq!(format_js_property_name(\"backtick`\"), \"'backtick`'\");\n    assert_eq!(format_js_property_name(\"exclamation!\"), \"'exclamation!'\");\n  }\n\n  #[test]\n  fn test_format_js_property_name_dollar_sign() {\n    // Dollar sign should be quoted for backward compatibility\n    assert_eq!(format_js_property_name(\"$var\"), \"'$var'\");\n    assert_eq!(format_js_property_name(\"jQuery$\"), \"'jQuery$'\");\n    assert_eq!(format_js_property_name(\"$\"), \"'$'\");\n  }\n\n  #[test]\n  fn test_format_js_property_name_colon_namespace() {\n    // Colons (common in XML/namespaced properties) should be quoted\n    assert_eq!(format_js_property_name(\"xml:lang\"), \"'xml:lang'\");\n    assert_eq!(format_js_property_name(\"xlink:href\"), \"'xlink:href'\");\n  }\n\n  #[test]\n  fn test_format_js_property_name_mixed() {\n    // Mixed cases\n    assert_eq!(format_js_property_name(\"valid_name_123\"), \"valid_name_123\");\n    assert_eq!(\n      format_js_property_name(\"invalid-name-123\"),\n      \"'invalid-name-123'\"\n    );\n    assert_eq!(format_js_property_name(\"café_bar\"), \"café_bar\");\n    assert_eq!(format_js_property_name(\"café-bar\"), \"'café-bar'\");\n  }\n}\n"
  },
  {
    "path": "crates/backend/src/util.rs",
    "content": "use convert_case::{Case, Casing};\n\npub fn to_case<T: AsRef<str>>(input: T, case: Case<'static>) -> String {\n  if input.as_ref().starts_with('_') {\n    let trimmed = input.as_ref().trim_start_matches('_');\n    trimmed.to_case(case)\n  } else {\n    input.as_ref().to_case(case)\n  }\n}\n"
  },
  {
    "path": "crates/build/CHANGELOG.md",
    "content": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## [Unreleased]\n\n## [2.3.1](https://github.com/napi-rs/napi-rs/compare/napi-build-v2.3.0...napi-build-v2.3.1) - 2025-11-10\n\n### Fixed\n\n- *(build)* add back undefined symbols lookup behavior ([#3015](https://github.com/napi-rs/napi-rs/pull/3015))\n\n## [2.3.0](https://github.com/napi-rs/napi-rs/compare/napi-build-v2.2.4...napi-build-v2.3.0) - 2025-11-06\n\n### Added\n\n- *(sys)* use libloading to load napi symbols at runtime on all platform ([#2996](https://github.com/napi-rs/napi-rs/pull/2996))\n\n## [2.2.4](https://github.com/napi-rs/napi-rs/compare/napi-build-v2.2.3...napi-build-v2.2.4) - 2025-10-24\n\n### Fixed\n\n- *(build)* export `emnapi_thread_crashed` ([#2920](https://github.com/napi-rs/napi-rs/pull/2920))\n\n### Other\n\n- *(napi)* bump rust-version ([#2966](https://github.com/napi-rs/napi-rs/pull/2966))\n\n## [2.2.3](https://github.com/napi-rs/napi-rs/compare/napi-build-v2.2.2...napi-build-v2.2.3) - 2025-07-24\n\n### Other\n\n- *(cli)* setjmp link path ([#2808](https://github.com/napi-rs/napi-rs/pull/2808))\n"
  },
  {
    "path": "crates/build/Cargo.toml",
    "content": "[package]\nauthors = [\"LongYinan <lynweklm@gmail.com>\"]\ndescription = \"N-API build support\"\nedition = \"2021\"\ninclude = [\"src/**/*\", \"Cargo.toml\", \"README.md\", \"LICENSE\"]\nkeywords = [\"NodeJS\", \"FFI\", \"NAPI\", \"n-api\"]\nlicense = \"MIT\"\nname = \"napi-build\"\nreadme = \"README.md\"\nrepository = \"https://github.com/napi-rs/napi-rs\"\nrust-version.workspace = true\nversion = \"2.3.1\"\n\n[package.metadata.workspaces]\nindependent = true\n"
  },
  {
    "path": "crates/build/README.md",
    "content": "# napi-build\n\n<a href=\"https://docs.rs/crate/napi-build\"><img src=\"https://docs.rs/napi-build/badge.svg\"></img></a>\n<a href=\"https://crates.io/crates/napi-build\"><img src=\"https://img.shields.io/crates/v/napi-build.svg\"></img></a>\n<a href=\"https://discord.gg/SpWzYHsKHs\">\n<img src=\"https://img.shields.io/discord/874290842444111882.svg?logo=discord&style=flat-square\"\n    alt=\"chat\" />\n</a>\n\n> Build support for napi-rs\n\nSetup `N-API` build in your `build.rs`:\n\n```rust\nextern crate napi_build;\n\nfn main() {\n    napi_build::setup();\n}\n```\n"
  },
  {
    "path": "crates/build/src/android.rs",
    "content": "use std::env;\nuse std::fs;\nuse std::io::{Error, Write};\nuse std::path;\n\n// Workaround from https://github.com/rust-lang/rust/pull/85806#issuecomment-1096266946\npub fn setup() -> Result<(), Error> {\n  let out_dir = env::var(\"OUT_DIR\").expect(\"OUT_DIR not set\");\n  let mut dist = path::PathBuf::from(&out_dir);\n  dist.push(\"libgcc.a\");\n  let mut libgcc = fs::File::create(&dist)?;\n  let _ = libgcc.write(b\"INPUT(-lunwind)\")?;\n  drop(libgcc);\n  println!(\"cargo:rustc-link-search={}\", &out_dir);\n  Ok(())\n}\n"
  },
  {
    "path": "crates/build/src/lib.rs",
    "content": "use std::env;\n\nmod android;\nmod wasi;\nmod windows;\n\npub fn setup() {\n  // compatible with the v2 versions, will remove in the future\n  {\n    println!(\"cargo:rerun-if-env-changed=DEBUG_GENERATED_CODE\");\n    println!(\"cargo:rerun-if-env-changed=TYPE_DEF_TMP_PATH\");\n    println!(\"cargo:rerun-if-env-changed=CARGO_CFG_NAPI_RS_CLI_VERSION\");\n  }\n\n  println!(\"cargo::rerun-if-env-changed=NAPI_DEBUG_GENERATED_CODE\");\n  println!(\"cargo::rerun-if-env-changed=NAPI_TYPE_DEF_TMP_FOLDER\");\n  println!(\n    \"cargo::rerun-if-env-changed=NAPI_FORCE_BUILD_{}\",\n    env::var(\"CARGO_PKG_NAME\")\n      .expect(\"CARGO_PKG_NAME is not set\")\n      .to_uppercase()\n      .replace(\"-\", \"_\")\n  );\n\n  let target_env = env::var(\"CARGO_CFG_TARGET_ENV\").expect(\"CARGO_CFG_TARGET_ENV is not set\");\n  let target_os = env::var(\"CARGO_CFG_TARGET_OS\").expect(\"CARGO_CFG_TARGET_OS is not set\");\n\n  match target_os.as_str() {\n    \"android\" => if android::setup().is_ok() {},\n    \"wasi\" => {\n      wasi::setup();\n    }\n    \"macos\" => {\n      // Keep the dynamic lookup behavior on macOS to avoid breaking changes.\n      println!(\"cargo:rustc-cdylib-link-arg=-Wl\");\n      println!(\"cargo:rustc-cdylib-link-arg=-undefined\");\n      println!(\"cargo:rustc-cdylib-link-arg=dynamic_lookup\");\n    }\n    \"windows\" => {\n      if let Ok(\"gnu\") = env::var(\"CARGO_CFG_TARGET_ENV\").as_deref() {\n        windows::setup_gnu();\n      }\n    }\n    _ => {}\n  }\n\n  if (target_env == \"gnu\" && target_os != \"windows\") || target_os == \"freebsd\" {\n    // https://sourceware.org/bugzilla/show_bug.cgi?id=21032\n    // https://sourceware.org/bugzilla/show_bug.cgi?id=21031\n    // https://github.com/rust-lang/rust/issues/134820\n    // pthread_key_create() destructors and segfault after a DSO unloading\n    println!(\"cargo:rustc-link-arg=-Wl,-z,nodelete\");\n  }\n}\n"
  },
  {
    "path": "crates/build/src/wasi.rs",
    "content": "use std::{env, path::Path};\n\npub fn setup() {\n  let link_dir = env::var(\"EMNAPI_LINK_DIR\").expect(\"EMNAPI_LINK_DIR must be set\");\n  println!(\"cargo:rerun-if-env-changed=EMNAPI_LINK_DIR\");\n  println!(\"cargo:rustc-link-search={link_dir}\");\n  println!(\"cargo:rustc-link-lib=static=emnapi-basic-mt\");\n  println!(\"cargo:rustc-link-arg=--export=malloc\");\n  println!(\"cargo:rustc-link-arg=--export=free\");\n  println!(\"cargo:rustc-link-arg=--export=napi_register_wasm_v1\");\n  println!(\"cargo:rustc-link-arg=--export-if-defined=node_api_module_get_api_version_v1\");\n  println!(\"cargo:rustc-link-arg=--export-table\");\n  println!(\"cargo:rustc-link-arg=--export=emnapi_async_worker_create\");\n  println!(\"cargo:rustc-link-arg=--export=emnapi_async_worker_init\");\n  println!(\"cargo:rustc-link-arg=--export=emnapi_thread_crashed\");\n  println!(\"cargo:rustc-link-arg=--import-memory\");\n  println!(\"cargo:rustc-link-arg=--import-undefined\");\n  println!(\"cargo:rustc-link-arg=--max-memory=4294967296\");\n  // lld only allocates 1MiB for the WebAssembly stack.\n  // 64000000 bytes = 64MiB\n  println!(\"cargo:rustc-link-arg=-zstack-size=64000000\");\n  println!(\"cargo:rustc-link-arg=--no-check-features\");\n  let rustc_path = env::var(\"RUSTC\").expect(\"RUSTC must be set by Cargo\");\n  let target = env::var(\"TARGET\").expect(\"TARGET must be set by Cargo\");\n  let crt_reactor_path = Path::new(&rustc_path)\n    .parent()\n    .and_then(|p| p.parent())\n    .map_or_else(\n      || Path::new(\"\").to_path_buf(),\n      |p| {\n        p.join(\"lib\")\n          .join(\"rustlib\")\n          .join(target)\n          .join(\"lib\")\n          .join(\"self-contained\")\n          .join(\"crt1-reactor.o\")\n      },\n    );\n  if crt_reactor_path.exists() {\n    println!(\"cargo:rustc-link-arg={}\", crt_reactor_path.display());\n    println!(\"cargo:rustc-link-arg=--export=_initialize\");\n  } else {\n    println!(\n      \"cargo:warning=crt1-reactor.o not found at {}, the multi-threaded runtime may not be initialized correctly\",\n      crt_reactor_path.display()\n    );\n  }\n  if let Ok(wasi_sdk_path) = env::var(\"WASI_SDK_PATH\") {\n    println!(\n      \"cargo:rustc-link-search={wasi_sdk_path}/share/wasi-sysroot/lib/wasm32-wasip1-threads\"\n    );\n    let setjmp_static_lib = Path::new(&wasi_sdk_path)\n      .join(\"share\")\n      .join(\"wasi-sysroot\")\n      .join(\"lib\")\n      .join(\"wasm32-wasip1-threads\")\n      .join(\"libsetjmp.a\");\n    if setjmp_static_lib.exists() {\n      println!(\"cargo:rustc-link-lib=static=setjmp\");\n    }\n  }\n}\n"
  },
  {
    "path": "crates/build/src/windows.rs",
    "content": "use std::env;\nuse std::path::PathBuf;\n\npub fn setup_gnu() {\n  let libnode_path = search_libnode_path();\n  if let Some(libnode_dir) = libnode_path {\n    let node_lib_path = libnode_dir.join(\"libnode.dll\");\n    if node_lib_path.exists() {\n      println!(\"cargo:rustc-link-search=native={}\", libnode_dir.display());\n      println!(\"cargo:rustc-link-lib=node\");\n    } else {\n      panic!(\"libnode.dll not found in {}\", libnode_dir.display());\n    }\n  } else {\n    panic!(\"libnode.dll not found in any search path\");\n  }\n}\n\nfn search_libnode_path() -> Option<PathBuf> {\n  if let Ok(path) = env::var(\"LIBNODE_PATH\") {\n    let libnode_dir = PathBuf::from(path);\n    if libnode_dir.exists() {\n      return Some(libnode_dir);\n    }\n  }\n\n  if let Ok(paths) = env::var(\"LIBPATH\") {\n    for path in env::split_paths(&paths) {\n      if path.join(\"libnode.dll\").exists() {\n        return Some(path);\n      }\n    }\n  }\n\n  if let Ok(paths) = env::var(\"PATH\") {\n    for path in env::split_paths(&paths) {\n      if path.join(\"libnode.dll\").exists() {\n        return Some(path);\n      }\n    }\n  }\n\n  None\n}\n"
  },
  {
    "path": "crates/macro/CHANGELOG.md",
    "content": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## [Unreleased]\n\n## [3.5.2](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.5.1...napi-derive-v3.5.2) - 2026-02-14\n\n### Fixed\n\n- *(deps)* update rust crate convert_case to 0.11 ([#3114](https://github.com/napi-rs/napi-rs/pull/3114))\n\n## [3.5.1](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.5.0...napi-derive-v3.5.1) - 2026-01-08\n\n### Other\n\n- updated the following local packages: napi-derive-backend\n\n## [3.5.0](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.4.1...napi-derive-v3.5.0) - 2025-12-30\n\n### Added\n\n- *(napi-derive)* add #[napi(async_iterator)] macro attribute ([#3072](https://github.com/napi-rs/napi-rs/pull/3072))\n\n## [3.4.1](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.4.0...napi-derive-v3.4.1) - 2025-12-19\n\n### Other\n\n- clippy fix for Rust 1.92.0 ([#3058](https://github.com/napi-rs/napi-rs/pull/3058))\n\n## [3.4.0](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.3.3...napi-derive-v3.4.0) - 2025-12-02\n\n### Added\n\n- *(napi-derive)* add tracing feature for debug logging NAPI function calls ([#3041](https://github.com/napi-rs/napi-rs/pull/3041))\n\n### Fixed\n\n- *(deps)* update rust crate convert_case to 0.10 ([#3031](https://github.com/napi-rs/napi-rs/pull/3031))\n\n## [3.3.3](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.3.2...napi-derive-v3.3.3) - 2025-11-10\n\n### Fixed\n\n- *(deps)* update rust crate convert_case to 0.9 ([#3001](https://github.com/napi-rs/napi-rs/pull/3001))\n\n### Other\n\n- *(napi)* fix tsdown config ([#3010](https://github.com/napi-rs/napi-rs/pull/3010))\n\n## [3.3.2](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.3.1...napi-derive-v3.3.2) - 2025-11-07\n\n### Other\n\n- updated the following local packages: napi-derive-backend\n\n## [3.3.1](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.3.0...napi-derive-v3.3.1) - 2025-11-07\n\n### Other\n\n- *(napi)* Promise and ThreadsafeFunction::call_async don't require tokio ([#2998](https://github.com/napi-rs/napi-rs/pull/2998))\n\n## [3.3.0](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.2.5...napi-derive-v3.3.0) - 2025-10-24\n\n### Added\n\n- *(napi-derive)* add `discriminant_case` to allow changing case of discriminant ([#2960](https://github.com/napi-rs/napi-rs/pull/2960))\n\n### Fixed\n\n- *(deps)* update rust crate ctor to v0.6.0 ([#2951](https://github.com/napi-rs/napi-rs/pull/2951))\n\n### Other\n\n- *(napi)* bump rust-version ([#2966](https://github.com/napi-rs/napi-rs/pull/2966))\n\n## [3.2.5](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.2.4...napi-derive-v3.2.5) - 2025-09-08\n\n### Other\n\n- updated the following local packages: napi-derive-backend\n\n## [3.2.4](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.2.3...napi-derive-v3.2.4) - 2025-08-16\n\n### Other\n\n- updated the following local packages: napi-derive-backend\n\n## [3.2.3](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.2.2...napi-derive-v3.2.3) - 2025-08-13\n\n### Fixed\n\n- *(napi)* link issue on cargo test --features noop ([#2872](https://github.com/napi-rs/napi-rs/pull/2872))\n- *(deps)* update rust crate ctor to v0.5.0 ([#2865](https://github.com/napi-rs/napi-rs/pull/2865))\n\n## [3.2.2](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.2.1...napi-derive-v3.2.2) - 2025-08-09\n\n### Other\n\n- updated the following local packages: napi-derive-backend\n\n## [3.2.1](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.2.0...napi-derive-v3.2.1) - 2025-08-08\n\n### Other\n\n- updated the following local packages: napi-derive-backend\n\n## [3.2.0](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.1.2...napi-derive-v3.2.0) - 2025-08-07\n\n### Added\n\n- *(napi)* add ScopeGenerator trait ([#2831](https://github.com/napi-rs/napi-rs/pull/2831))\n- make generator an iterator ([#2784](https://github.com/napi-rs/napi-rs/pull/2784))\n\n## [3.1.2](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.1.1...napi-derive-v3.1.2) - 2025-07-30\n\n### Other\n\n- updated the following local packages: napi-derive-backend\n\n## [3.1.1](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.1.0...napi-derive-v3.1.1) - 2025-07-22\n\n### Other\n\n- updated the following local packages: napi-derive-backend\n\n## [3.1.0](https://github.com/napi-rs/napi-rs/compare/napi-derive-v3.0.0...napi-derive-v3.1.0) - 2025-07-21\n\n### Added\n\n- *(napi)* provide ScopedTask to resolve JsValue with lifetime ([#2786](https://github.com/napi-rs/napi-rs/pull/2786))\n\n### Other\n\n- pin release-plz action\n"
  },
  {
    "path": "crates/macro/Cargo.toml",
    "content": "[package]\nauthors = [\"LongYinan <lynweklm@gmail.com>\", \"Forehalo <forehalo@gmail.com>\"]\ndescription = \"N-API procedural macros\"\nedition = \"2021\"\nkeywords = [\"NodeJS\", \"FFI\", \"NAPI\", \"n-api\"]\nlicense = \"MIT\"\nname = \"napi-derive\"\nreadme = \"README.md\"\nrepository = \"https://github.com/napi-rs/napi-rs\"\nrust-version.workspace = true\nversion = \"3.5.2\"\n\n[package.metadata.workspaces]\nindependent = true\n\n[features]\ncompat-mode = []\ndefault = [\"type-def\", \"strict\"]\nfull = [\"type-def\", \"strict\", \"compat-mode\"]\nnoop = [\"napi-derive-backend/noop\"]\nstrict = [\"napi-derive-backend/strict\"]\ntracing = [\"napi-derive-backend/tracing\"]\ntype-def = [\"napi-derive-backend/type-def\", \"ctor\"]\n\n[dependencies]\nconvert_case = \"0.11\"\nctor = { version = \"0.6\", optional = true }\nnapi-derive-backend = { version = \"5.0.2\", path = \"../backend\" }\nproc-macro2 = \"1\"\nquote = \"1\"\nsyn = { version = \"2\", features = [\"fold\", \"full\", \"extra-traits\"] }\n\n[lib]\nproc-macro = true\n"
  },
  {
    "path": "crates/macro/README.md",
    "content": "# napi-derive\n\n<a href=\"https://docs.rs/crate/napi-derive\"><img src=\"https://docs.rs/napi-derive/badge.svg\"></img></a>\n<a href=\"https://crates.io/crates/napi-derive\"><img src=\"https://img.shields.io/crates/v/napi-derive.svg\"></img></a>\n<a href=\"https://discord.gg/SpWzYHsKHs\">\n<img src=\"https://img.shields.io/discord/874290842444111882.svg?logo=discord&style=flat-square\"\n    alt=\"chat\" />\n</a>\n\nCheckout more examples in [examples](../../examples) folder\n\n```rust\n#[macro_use]\nextern crate napi_derive;\nuse napi::bindgen_prelude::*;\n\n#[napi]\nfn fibonacci(n: u32) -> u32 {\n  match n {\n    1 | 2 => 1,\n    _ => fibonacci_native(n - 1) + fibonacci_native(n - 2),\n  }\n}\n\n#[napi]\nfn get_cwd<T: Fn(String) -> Result<()>>(callback: T) {\n  callback(env::current_dir().unwrap().to_string_lossy().to_string()).unwrap();\n}\n```\n"
  },
  {
    "path": "crates/macro/src/compat_macro.rs",
    "content": "use proc_macro2::{Ident, Literal, TokenStream};\nuse quote::{format_ident, quote};\nuse syn::fold::{fold_fn_arg, fold_signature, Fold};\nuse syn::parse::{Parse, ParseStream, Result};\nuse syn::punctuated::Punctuated;\nuse syn::{Block, FnArg, Signature, Token, Visibility};\n\npub struct ArgLength {\n  pub length: Literal,\n}\n\nimpl Parse for ArgLength {\n  fn parse(input: ParseStream) -> Result<Self> {\n    let vars = Punctuated::<Literal, Token![,]>::parse_terminated(input)?;\n    Ok(ArgLength {\n      length: vars\n        .first()\n        .cloned()\n        .unwrap_or_else(|| Literal::usize_unsuffixed(0)),\n    })\n  }\n}\n\npub struct JsFunction {\n  pub args: Vec<FnArg>,\n  pub name: Option<Ident>,\n  pub signature: Option<Signature>,\n  pub signature_raw: Option<Signature>,\n  pub block: Vec<Block>,\n  pub visibility: Visibility,\n}\n\nimpl JsFunction {\n  pub fn new() -> Self {\n    JsFunction {\n      args: vec![],\n      name: None,\n      signature: None,\n      signature_raw: None,\n      visibility: Visibility::Inherited,\n      block: vec![],\n    }\n  }\n}\n\nimpl Fold for JsFunction {\n  fn fold_fn_arg(&mut self, arg: FnArg) -> FnArg {\n    self.args.push(arg.clone());\n    fold_fn_arg(self, arg)\n  }\n\n  fn fold_signature(&mut self, signature: Signature) -> Signature {\n    self.name = Some(format_ident!(\"{}\", signature.ident));\n    let mut new_signature = signature.clone();\n    new_signature.ident = format_ident!(\"_generated_{}_generated_\", signature.ident);\n    self.signature = Some(new_signature);\n    self.signature_raw = Some(signature.clone());\n    fold_signature(self, signature)\n  }\n\n  fn fold_visibility(&mut self, v: Visibility) -> Visibility {\n    self.visibility = v.clone();\n    v\n  }\n\n  fn fold_block(&mut self, node: Block) -> Block {\n    self.block.push(node.clone());\n    node\n  }\n}\npub enum FunctionKind {\n  Contextless,\n  JsFunction,\n}\n\npub fn get_execute_js_code(new_fn_name: Ident, function_kind: FunctionKind) -> TokenStream {\n  let return_token_stream = match function_kind {\n    FunctionKind::Contextless => {\n      quote! {\n        Ok(Some(v)) => unsafe {\n          napi::bindgen_prelude::ToNapiValue::to_napi_value(raw_env, v).unwrap_or_else(|e| {\n            napi::JsError::from(e).throw_into(raw_env);\n            ptr::null_mut()\n          })\n        },\n        Ok(None) => ptr::null_mut(),\n      }\n    }\n    FunctionKind::JsFunction => {\n      quote! {\n        Ok(v) => unsafe {\n          napi::bindgen_prelude::ToNapiValue::to_napi_value(raw_env, v).unwrap_or_else(|e| {\n            napi::JsError::from(e).throw_into(raw_env);\n            ptr::null_mut()\n          })\n        },\n      }\n    }\n  };\n  quote! {\n    match panic::catch_unwind(AssertUnwindSafe(move || #new_fn_name(ctx))).map_err(|e| {\n      let message = {\n        if let Some(string) = e.downcast_ref::<String>() {\n          string.clone()\n        } else if let Some(string) = e.downcast_ref::<&str>() {\n          string.to_string()\n        } else {\n          format!(\"panic from Rust code: {:?}\", e)\n        }\n      };\n      Error::from_reason(message)\n    }).and_then(|v| v) {\n      #return_token_stream\n      Err(e) => {\n        unsafe { napi::JsError::from(e).throw_into(raw_env) };\n        ptr::null_mut()\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "crates/macro/src/expand/napi.rs",
    "content": "use super::typedef;\nuse crate::parser::{attrs::BindgenAttrs, ParseNapi};\nuse napi_derive_backend::{BindgenResult, TryToTokens};\nuse proc_macro2::TokenStream;\nuse quote::ToTokens;\nuse std::sync::atomic::{AtomicBool, Ordering};\nuse syn::{Attribute, Item};\n\n/// a flag indicate whether or never at least one `napi` macro has been expanded.\n/// ```ignore\n/// if BUILT_FLAG\n///  .compare_exchange(false, true, Ordering::Acquire, Ordering::Relaxed)\n///  .is_ok() {\n///   // logic on first macro expansion\n/// }\n///\n/// ```\nstatic BUILT_FLAG: AtomicBool = AtomicBool::new(false);\n\npub fn expand(attr: TokenStream, input: TokenStream) -> BindgenResult<TokenStream> {\n  // logic on first macro expansion\n  if let Ok(built) = BUILT_FLAG.compare_exchange(false, true, Ordering::Acquire, Ordering::Relaxed)\n  {\n    if !built {\n      typedef::prepare_type_def_file();\n    }\n  }\n\n  let mut item = syn::parse2::<Item>(input)?;\n  let opts: BindgenAttrs = syn::parse2(attr)?;\n  let mut tokens = proc_macro2::TokenStream::new();\n  if let Item::Mod(mut js_mod) = item {\n    let js_name = opts.js_name().map_or_else(\n      || js_mod.ident.to_string(),\n      |(js_name, _)| js_name.to_owned(),\n    );\n    if let Some((_, mut items)) = js_mod.content.clone() {\n      for item in items.iter_mut() {\n        let mut empty_attrs = vec![];\n        if let Some(item_opts) = replace_napi_attr_in_mod(\n          js_name.clone(),\n          match item {\n            Item::Fn(ref mut function) => &mut function.attrs,\n            Item::Struct(ref mut struct_) => &mut struct_.attrs,\n            Item::Enum(ref mut enum_) => &mut enum_.attrs,\n            Item::Const(ref mut const_) => &mut const_.attrs,\n            Item::Impl(ref mut impl_) => &mut impl_.attrs,\n            Item::Mod(mod_) => {\n              let mod_in_mod = mod_\n                .attrs\n                .iter()\n                .enumerate()\n                .find(|(_, m)| m.path().is_ident(\"napi\"));\n              if mod_in_mod.is_some() {\n                bail_span!(\n                  mod_,\n                  \"napi module cannot be nested under another napi module\"\n                );\n              } else {\n                &mut empty_attrs\n              }\n            }\n            _ => &mut empty_attrs,\n          },\n        ) {\n          let napi = item.parse_napi(&mut tokens, &item_opts)?;\n          item_opts.check_used()?;\n          napi.try_to_tokens(&mut tokens)?;\n          typedef::output_type_def(&napi);\n        } else {\n          item.to_tokens(&mut tokens);\n        };\n      }\n      js_mod.content = None;\n    };\n\n    let js_mod_attrs: Vec<Attribute> = js_mod\n      .attrs\n      .clone()\n      .into_iter()\n      .filter(|attr| attr.path().is_ident(\"napi\"))\n      .collect();\n    let mod_name = js_mod.ident;\n    let visible = js_mod.vis;\n    let mod_tokens = quote! { #(#js_mod_attrs)* #visible mod #mod_name { #tokens } };\n    Ok(mod_tokens)\n  } else {\n    let napi = item.parse_napi(&mut tokens, &opts)?;\n    opts.check_used()?;\n    napi.try_to_tokens(&mut tokens)?;\n    typedef::output_type_def(&napi);\n    Ok(tokens)\n  }\n}\n\nfn replace_napi_attr_in_mod(\n  js_namespace: String,\n  attrs: &mut Vec<syn::Attribute>,\n) -> Option<BindgenAttrs> {\n  let napi_attr = attrs\n    .iter()\n    .enumerate()\n    .find(|(_, m)| m.path().is_ident(\"napi\"));\n\n  if let Some((index, napi_attr)) = napi_attr {\n    // adds `namespace = #js_namespace` into `#[napi]` attribute\n    let new_attr = match &napi_attr.meta {\n      syn::Meta::Path(_) => {\n        syn::parse_quote!(#[napi(namespace = #js_namespace)])\n      }\n      syn::Meta::List(list) => {\n        let existing = list.tokens.clone();\n        syn::parse_quote!(#[napi(#existing, namespace = #js_namespace)])\n      }\n      syn::Meta::NameValue(name_value) => {\n        let existing = &name_value.value;\n        syn::parse_quote!(#[napi(#existing, namespace = #js_namespace)])\n      }\n    };\n\n    let struct_opts = BindgenAttrs::try_from(&new_attr).unwrap();\n    attrs.remove(index);\n    Some(struct_opts)\n  } else {\n    None\n  }\n}\n"
  },
  {
    "path": "crates/macro/src/expand/noop.rs",
    "content": "use napi_derive_backend::BindgenResult;\nuse proc_macro2::TokenStream;\nuse quote::ToTokens;\nuse syn::Attribute;\n\npub fn expand(_attr: TokenStream, input: TokenStream) -> BindgenResult<TokenStream> {\n  let mut item = syn::parse2::<syn::Item>(input)?;\n  let mut tokens = TokenStream::new();\n\n  if let syn::Item::Struct(ref mut struct_) = item {\n    struct_\n      .fields\n      .iter_mut()\n      .for_each(|field| find_and_remove_napi_attr(&mut field.attrs))\n  }\n\n  item.to_tokens(&mut tokens);\n\n  Ok(tokens)\n}\n\nfn find_and_remove_napi_attr(attrs: &mut Vec<Attribute>) {\n  loop {\n    let napi_attr = attrs\n      .iter()\n      .enumerate()\n      .find(|&(_, m)| m.path().segments[0].ident == \"napi\");\n\n    let pos = match napi_attr {\n      Some((pos, _raw_attr)) => pos,\n      None => break,\n    };\n\n    attrs.remove(pos);\n  }\n}\n"
  },
  {
    "path": "crates/macro/src/expand/typedef/noop.rs",
    "content": "use napi_derive_backend::Napi;\n\npub fn prepare_type_def_file() {}\npub fn output_type_def(_napi: &Napi) {}\n"
  },
  {
    "path": "crates/macro/src/expand/typedef/type_def.rs",
    "content": "use std::env;\nuse std::fs;\nuse std::io::{BufWriter, Write};\nuse std::path::PathBuf;\nuse std::sync::LazyLock;\n\nuse napi_derive_backend::{Napi, ToTypeDef};\n\nstatic PKG_NAME: LazyLock<String> =\n  LazyLock::new(|| env::var(\"CARGO_PKG_NAME\").expect(\"Expected `CARGO_PKG_NAME` to be set\"));\nstatic TYPE_DEF_FOLDER: LazyLock<Option<String>> =\n  LazyLock::new(|| env::var(\"NAPI_TYPE_DEF_TMP_FOLDER\").ok());\n\nfn get_type_def_file() -> Option<PathBuf> {\n  if let Some(folder) = TYPE_DEF_FOLDER.as_ref() {\n    let file = PathBuf::from(folder).join(&*PKG_NAME);\n    Some(file)\n  } else {\n    // the environment variable set by old `@napi-rs/cli`\n    if env::var(\"TYPE_DEF_TMP_PATH\").is_ok() {\n      panic!(\n        \"[napi-rs] missing environment variables. please upgrade `@napi-rs/cli` to the latest version.\"\n      );\n    }\n    None\n  }\n}\n\npub fn prepare_type_def_file() {\n  remove_existed_def_file();\n}\n\nfn remove_existed_def_file() {\n  if let Some(file) = get_type_def_file() {\n    if file.exists() {\n      if let Err(_e) = fs::remove_file(&file) {\n        #[cfg(debug_assertions)]\n        {\n          println!(\"Failed to manipulate type def file {file:?}: {_e:?}\");\n        }\n      }\n    }\n  }\n}\n\npub fn output_type_def(napi: &Napi) {\n  if let Some(file) = get_type_def_file() {\n    if let Some(type_def) = napi.to_type_def() {\n      fs::OpenOptions::new()\n        .append(true)\n        .create(true)\n        .open(&file)\n        .and_then(|file| {\n          let mut writer = BufWriter::<fs::File>::new(file);\n          writer.write_all(type_def.to_string().as_bytes())?;\n          writer.write_all(\"\\n\".as_bytes())?;\n          writer.flush()\n        })\n        .unwrap_or_else(|e| {\n          println!(\"Failed to write type def file: {e:?}\");\n        });\n    }\n  }\n}\n"
  },
  {
    "path": "crates/macro/src/expand/typedef.rs",
    "content": "#[cfg(all(feature = \"type-def\", not(feature = \"noop\")))]\nmod type_def;\n#[cfg(all(feature = \"type-def\", not(feature = \"noop\")))]\npub use self::type_def::*;\n\n#[cfg(not(feature = \"type-def\"))]\npub mod noop;\n#[cfg(not(feature = \"type-def\"))]\npub use self::noop::*;\n"
  },
  {
    "path": "crates/macro/src/expand.rs",
    "content": "mod typedef;\n\n#[cfg(feature = \"noop\")]\nmod noop;\n#[cfg(feature = \"noop\")]\npub use self::noop::*;\n\n#[cfg(not(feature = \"noop\"))]\nmod napi;\n#[cfg(not(feature = \"noop\"))]\npub use self::napi::*;\n"
  },
  {
    "path": "crates/macro/src/lib.rs",
    "content": "#[cfg(feature = \"compat-mode\")]\nmod compat_macro;\nmod expand;\n#[cfg(not(feature = \"noop\"))]\nmod parser;\n\n#[cfg(not(feature = \"noop\"))]\n#[macro_use]\nextern crate napi_derive_backend;\n#[macro_use]\nextern crate quote;\n\nuse std::env;\n\nuse proc_macro::TokenStream;\n#[cfg(feature = \"compat-mode\")]\nuse syn::fold::Fold;\nuse syn::{parse_macro_input, ItemFn};\n\n/// ```ignore\n/// #[napi]\n/// fn test(name: String) {\n///   \"hello\" + name\n/// }\n/// ```\n#[proc_macro_attribute]\npub fn napi(attr: TokenStream, input: TokenStream) -> TokenStream {\n  match expand::expand(attr.into(), input.into()) {\n    Ok(tokens) => {\n      if env::var(\"NAPI_DEBUG_GENERATED_CODE\").is_ok() {\n        println!(\"{tokens}\");\n      }\n      tokens.into()\n    }\n    Err(diagnostic) => {\n      println!(\"`napi` macro expand failed.\");\n\n      (quote! { #diagnostic }).into()\n    }\n  }\n}\n\n#[cfg(feature = \"compat-mode\")]\n#[proc_macro_attribute]\npub fn contextless_function(_attr: TokenStream, input: TokenStream) -> TokenStream {\n  let input = parse_macro_input!(input as ItemFn);\n  let mut js_fn = compat_macro::JsFunction::new();\n  js_fn.fold_item_fn(input);\n  let fn_name = js_fn.name.unwrap();\n  let fn_block = js_fn.block;\n  let signature = js_fn.signature.unwrap();\n  let visibility = js_fn.visibility;\n  let new_fn_name = signature.ident.clone();\n  let execute_js_function =\n    compat_macro::get_execute_js_code(new_fn_name, compat_macro::FunctionKind::Contextless);\n\n  let expanded = quote! {\n    #[inline(always)]\n    #signature #(#fn_block)*\n\n    #visibility extern \"C\" fn #fn_name(\n      raw_env: napi::sys::napi_env,\n      cb_info: napi::sys::napi_callback_info,\n    ) -> napi::sys::napi_value {\n      use std::ptr;\n      use std::panic::{self, AssertUnwindSafe};\n      use std::ffi::CString;\n      use napi::{Env, NapiValue, NapiRaw, Error, Status};\n\n      let ctx = unsafe { Env::from_raw(raw_env) };\n      #execute_js_function\n    }\n  };\n  // Hand the output tokens back to the compiler\n  TokenStream::from(expanded)\n}\n\n#[cfg(feature = \"compat-mode\")]\n#[proc_macro_attribute]\npub fn js_function(attr: TokenStream, input: TokenStream) -> TokenStream {\n  let arg_len = parse_macro_input!(attr as compat_macro::ArgLength);\n  let arg_len_span = arg_len.length;\n  let input = parse_macro_input!(input as ItemFn);\n  let mut js_fn = compat_macro::JsFunction::new();\n  js_fn.fold_item_fn(input);\n  let fn_name = js_fn.name.unwrap();\n  let fn_block = js_fn.block;\n  let signature = js_fn.signature.unwrap();\n  let visibility = js_fn.visibility;\n  let new_fn_name = signature.ident.clone();\n  let execute_js_function =\n    compat_macro::get_execute_js_code(new_fn_name, compat_macro::FunctionKind::JsFunction);\n  let expanded = quote! {\n    #[inline(always)]\n    #signature #(#fn_block)*\n\n    #visibility extern \"C\" fn #fn_name(\n      raw_env: napi::sys::napi_env,\n      cb_info: napi::sys::napi_callback_info,\n    ) -> napi::sys::napi_value {\n      use std::ptr;\n      use std::panic::{self, AssertUnwindSafe};\n      use std::ffi::CString;\n      use napi::{Env, Error, Status, NapiValue, NapiRaw, CallContext};\n      let mut argc = #arg_len_span as usize;\n      #[cfg(all(target_os = \"windows\", target_arch = \"x86\"))]\n      let mut raw_args = vec![ptr::null_mut(); #arg_len_span];\n      #[cfg(not(all(target_os = \"windows\", target_arch = \"x86\")))]\n      let mut raw_args = [ptr::null_mut(); #arg_len_span];\n      let mut raw_this = ptr::null_mut();\n\n      unsafe {\n        let status = napi::sys::napi_get_cb_info(\n          raw_env,\n          cb_info,\n          &mut argc,\n          raw_args.as_mut_ptr(),\n          &mut raw_this,\n          ptr::null_mut(),\n        );\n        debug_assert!(Status::from(status) == Status::Ok, \"napi_get_cb_info failed\");\n      }\n\n      let mut env = unsafe { Env::from_raw(raw_env) };\n      #[cfg(all(target_os = \"windows\", target_arch = \"x86\"))]\n      let ctx = CallContext::new(&mut env, cb_info, raw_this, raw_args.as_slice(), argc);\n      #[cfg(not(all(target_os = \"windows\", target_arch = \"x86\")))]\n      let ctx = CallContext::new(&mut env, cb_info, raw_this, &raw_args, argc);\n      #execute_js_function\n    }\n  };\n  // Hand the output tokens back to the compiler\n  TokenStream::from(expanded)\n}\n\n#[cfg(feature = \"compat-mode\")]\n#[proc_macro_attribute]\npub fn module_exports(_attr: TokenStream, input: TokenStream) -> TokenStream {\n  let input = parse_macro_input!(input as ItemFn);\n  let mut js_fn = compat_macro::JsFunction::new();\n  js_fn.fold_item_fn(input);\n  let fn_block = js_fn.block;\n  let fn_name = js_fn.name.unwrap();\n  let signature = js_fn.signature_raw.unwrap();\n  let args_len = js_fn.args.len();\n  let call_expr = if args_len == 1 {\n    quote! { #fn_name(exports) }\n  } else if args_len == 2 {\n    quote! { #fn_name(exports, env) }\n  } else {\n    panic!(\"Arguments length of #[module_exports] function must be 1 or 2\");\n  };\n\n  let register = quote! {\n    #[cfg_attr(not(target_family = \"wasm\"), napi::ctor::ctor(crate_path=napi::ctor))]\n    fn __napi_explicit_module_register() {\n      unsafe fn register(raw_env: napi::sys::napi_env, raw_exports: napi::sys::napi_value) -> napi::Result<()> {\n        use napi::{Env, JsObject, NapiValue};\n\n        let env = Env::from_raw(raw_env);\n        let exports = JsObject::from_raw_unchecked(raw_env, raw_exports);\n\n        #call_expr\n      }\n\n      napi::bindgen_prelude::register_module_exports(register)\n    }\n  };\n\n  (quote! {\n    #[inline]\n    #signature #(#fn_block)*\n\n    #register\n  })\n  .into()\n}\n\n#[proc_macro_attribute]\npub fn module_init(_: TokenStream, input: TokenStream) -> TokenStream {\n  let input = parse_macro_input!(input as ItemFn);\n  quote! {\n    #[napi::ctor::ctor(crate_path=napi::ctor)]\n    #input\n  }\n  .into()\n}\n"
  },
  {
    "path": "crates/macro/src/parser/attrs.rs",
    "content": "use std::cell::Cell;\nuse std::collections::HashMap;\nuse std::sync::{\n  atomic::{AtomicUsize, Ordering},\n  Mutex, OnceLock,\n};\n\nuse napi_derive_backend::{bail_span, BindgenResult, Diagnostic};\nuse proc_macro2::{Delimiter, Ident, Span, TokenTree};\nuse quote::ToTokens;\nuse syn::parse::{Parse, ParseStream};\nuse syn::spanned::Spanned;\nuse syn::{parse_quote, Attribute, Token};\n\nuse crate::parser::AnyIdent;\n\nstatic ATTRS: OnceLock<AttributeParseState> = OnceLock::new();\nstatic STRUCTS: OnceLock<StructParseState> = OnceLock::new();\n\n#[derive(Default)]\nstruct StructParseState {\n  parsed: Mutex<HashMap<String, ParsedStruct>>,\n}\n\nstruct ParsedStruct {\n  js_name: String,\n  ctor_defined: bool,\n}\n\n#[derive(Default)]\nstruct AttributeParseState {\n  parsed: AtomicUsize,\n  #[allow(unused)]\n  checks: AtomicUsize,\n}\n\n#[derive(Debug)]\n/// Parsed attributes from a `#[napi(..)]`.\npub struct BindgenAttrs {\n  /// Whether `#[napi]` attribute exists\n  pub exists: bool,\n  /// List of parsed attributes\n  pub attrs: Vec<(Cell<bool>, BindgenAttr)>,\n  /// Span of original attribute\n  pub span: Span,\n}\n\n// NOTE: borrowed from wasm-bindgen\n// some of them may useless in #[napi] macro\nmacro_rules! attrgen {\n  ($mac:ident) => {\n    $mac! {\n      (catch_unwind, CatchUnwind(Span)),\n      (async_runtime, AsyncRuntime(Span)),\n      (module_exports, ModuleExports(Span)),\n      (js_name, JsName(Span, String, Span)),\n      (constructor, Constructor(Span)),\n      (factory, Factory(Span)),\n      (getter, Getter(Span, Option<Ident>)),\n      (setter, Setter(Span, Option<Ident>)),\n      (readonly, Readonly(Span)),\n      (enumerable, Enumerable(Span, Option<bool>), true),\n      (writable, Writable(Span, Option<bool>), true),\n      (configurable, Configurable(Span, Option<bool>), true),\n      (skip, Skip(Span)),\n      (strict, Strict(Span)),\n      (return_if_invalid, ReturnIfInvalid(Span)),\n      (object, Object(Span)),\n      (object_from_js, ObjectFromJs(Span, Option<bool>), true),\n      (object_to_js, ObjectToJs(Span, Option<bool>), true),\n      (custom_finalize, CustomFinalize(Span)),\n      (namespace, Namespace(Span, String, Span)),\n      (iterator, Iterator(Span)),\n      (async_iterator, AsyncIterator(Span)),\n      (ts_args_type, TsArgsType(Span, String, Span)),\n      (ts_return_type, TsReturnType(Span, String, Span)),\n      (ts_type, TsType(Span, String, Span)),\n      (ts_generic_types, TsGenericTypes(Span, String, Span)),\n      (string_enum, StringEnum(Span, Option<(String, Span)>)),\n      (use_nullable, UseNullable(Span, Option<bool>), false),\n      (discriminant, Discriminant(Span, String, Span)),\n      (discriminant_case, DiscriminantCase(Span, String, Span)),\n      (transparent, Transparent(Span)),\n      (array, Array(Span)),\n      (no_export, NoExport(Span)),\n\n      // impl later\n      // (inspectable, Inspectable(Span)),\n      // (typescript_custom_section, TypescriptCustomSection(Span)),\n      (skip_typescript, SkipTypescript(Span)),\n      // (getter_with_clone, GetterWithClone(Span)),\n\n      // For testing purposes only.\n      // (assert_no_shim, AssertNoShim(Span)),\n    }\n  };\n}\n\nmacro_rules! methods {\n  ($(($name:ident, $variant:ident($($contents:tt)*) $($extra_tokens:tt)*),)*) => {\n    $(methods!(@method $name, $variant($($contents)*) $($extra_tokens)*);)*\n\n    #[cfg(feature = \"strict\")]\n    #[allow(unused)]\n    pub fn check_used(&self) -> Result<(), Diagnostic> {\n      // Account for the fact this method was called\n      let attrs = ATTRS.get_or_init(|| AttributeParseState::default());\n      attrs.checks.fetch_add(1, Ordering::SeqCst);\n\n      let mut errors = Vec::new();\n      for (used, attr) in self.attrs.iter() {\n        if used.get() {\n            continue\n        }\n        let span = match attr {\n          $(BindgenAttr::$variant(span, ..) => span,)*\n        };\n        errors.push(Diagnostic::span_error(*span, \"unused #[napi] attribute\"));\n      }\n      Diagnostic::from_vec(errors)\n    }\n\n    #[cfg(not(feature = \"strict\"))]\n    #[allow(unused)]\n    pub fn check_used(&self) -> Result<(), Diagnostic> {\n        // Account for the fact this method was called\n      let attrs = ATTRS.get_or_init(AttributeParseState::default);\n      attrs.checks.fetch_add(1, Ordering::SeqCst);\n      Ok(())\n    }\n  };\n\n  (@method $name:ident, $variant:ident(Span, String, Span)) => {\n    #[allow(unused)]\n    pub fn $name(&self) -> Option<(&str, Span)> {\n      self.attrs\n        .iter()\n        .filter_map(|a| match &a.1 {\n          BindgenAttr::$variant(_, s, span) => {\n            a.0.set(true);\n            Some((&s[..], *span))\n          }\n          _ => None,\n        })\n        .next()\n    }\n  };\n\n  (@method $name:ident, $variant:ident(Span, Option<(String, Span)>)) => {\n    #[allow(unused)]\n    pub fn $name(&self) -> Option<Option<&(String, Span)>> {\n      self.attrs\n        .iter()\n        .filter_map(|a| match &a.1 {\n          BindgenAttr::$variant(_, s) => {\n            a.0.set(true);\n            Some(s.as_ref())\n          }\n          _ => None,\n        })\n        .next()\n    }\n  };\n\n  (@method $name:ident, $variant:ident(Span, Option<bool>), $default_value:literal) => {\n    #[allow(unused)]\n    pub fn $name(&self) -> bool {\n      self.attrs\n        .iter()\n        .filter_map(|a| match &a.1 {\n          BindgenAttr::$variant(_, s) => {\n            a.0.set(true);\n            *s\n          }\n          _ => None,\n        })\n        .next()\n        .unwrap_or($default_value)\n    }\n  };\n\n  (@method $name:ident, $variant:ident(Span, Vec<String>, Vec<Span>)) => {\n    #[allow(unused)]\n    pub fn $name(&self) -> Option<(&[String], &[Span])> {\n      self.attrs\n        .iter()\n        .filter_map(|a| match &a.1 {\n          BindgenAttr::$variant(_, ss, spans) => {\n            a.0.set(true);\n            Some((&ss[..], &spans[..]))\n          }\n          _ => None,\n        })\n        .next()\n      }\n  };\n\n  (@method $name:ident, $variant:ident(Span, $($other:tt)*)) => {\n    #[allow(unused)]\n    pub fn $name(&self) -> Option<&$($other)*> {\n      self.attrs\n        .iter()\n        .filter_map(|a| match &a.1 {\n          BindgenAttr::$variant(_, s) => {\n            a.0.set(true);\n            Some(s)\n          }\n          _ => None,\n        })\n        .next()\n      }\n  };\n\n  (@method $name:ident, $variant:ident($($other:tt)*)) => {\n    #[allow(unused)]\n    pub fn $name(&self) -> Option<&$($other)*> {\n      self.attrs\n        .iter()\n        .filter_map(|a| match &a.1 {\n          BindgenAttr::$variant(s) => {\n            a.0.set(true);\n            Some(s)\n          }\n          _ => None,\n        })\n        .next()\n    }\n  };\n}\n\nimpl BindgenAttrs {\n  /// Find and parse the napi attributes.\n  pub fn find(attrs: &mut Vec<syn::Attribute>) -> Result<BindgenAttrs, Diagnostic> {\n    for (index, attr) in attrs.iter().enumerate() {\n      let attr = BindgenAttrs::try_from(attr)?;\n      if attr.exists {\n        attrs.remove(index);\n\n        return Ok(attr);\n      }\n    }\n\n    Ok(BindgenAttrs::default())\n  }\n\n  attrgen!(methods);\n}\n\nimpl TryFrom<&Attribute> for BindgenAttrs {\n  type Error = Diagnostic;\n\n  fn try_from(attr: &Attribute) -> Result<Self, Self::Error> {\n    let mut ret = BindgenAttrs {\n      exists: false,\n      attrs: vec![],\n      span: Span::call_site(),\n    };\n\n    let is_napi =\n      attr.path().segments.last().map(|s| s.ident.to_string()) == Some(\"napi\".to_string());\n    let is_cfg_attr = attr\n      .meta\n      .path()\n      .segments\n      .first()\n      .map(|s| s.ident.to_string())\n      == Some(\"cfg_attr\".to_string());\n\n    if is_napi {\n      ret.exists = true;\n      ret.span = attr.span();\n\n      let tts = attr.meta.to_token_stream().into_iter();\n      let group = match tts.last() {\n        // #[napi(xxx)]\n        //   ^^^^^^^^^\n        Some(TokenTree::Group(d)) => d,\n        // #[napi]\n        //   ^^^^\n        Some(TokenTree::Ident(_)) => parse_quote!(()),\n        _ => bail_span!(attr, \"invalid #[napi] attribute\"),\n      };\n\n      if group.delimiter() != Delimiter::Parenthesis {\n        bail_span!(attr, \"malformed #[napi] attribute\");\n      }\n\n      let mut attrs: BindgenAttrs = syn::parse2(group.stream())?;\n      ret.attrs.append(&mut attrs.attrs);\n    }\n\n    if is_cfg_attr {\n      let cfg_attr_list = attr.meta.require_list()?;\n      // #[cfg_attr(condition, attr_to_apply)]\n      // We parse the arguments of cfg_attr.\n      let mut args_iter = cfg_attr_list\n        .parse_args_with(syn::punctuated::Punctuated::<syn::Meta, Token![,]>::parse_terminated)?\n        .into_iter();\n      if let Some(arg) = args_iter.next_back() {\n        if arg.path().segments.last().map(|s| s.ident.to_string()) == Some(\"napi\".to_string()) {\n          ret.exists = true;\n          ret.span = arg.span();\n          let tts = arg.to_token_stream().into_iter();\n          let group = match tts.last() {\n            // #[napi(xxx)]\n            //   ^^^^^^^^^\n            Some(TokenTree::Group(d)) => d,\n            // #[napi]\n            //   ^^^^\n            Some(TokenTree::Ident(_)) => parse_quote!(()),\n            _ => bail_span!(attr, \"invalid #[napi] attribute\"),\n          };\n\n          if group.delimiter() != Delimiter::Parenthesis {\n            bail_span!(attr, \"malformed #[napi] attribute\");\n          }\n\n          let mut attrs: BindgenAttrs = syn::parse2(group.stream())?;\n          ret.attrs.append(&mut attrs.attrs);\n        }\n      }\n    }\n\n    Ok(ret)\n  }\n}\n\nimpl Default for BindgenAttrs {\n  fn default() -> BindgenAttrs {\n    // Add 1 to the list of parsed attribute sets. We'll use this counter to\n    // sanity check that we call `check_used` an appropriate number of\n    // times.\n    let attrs = ATTRS.get_or_init(AttributeParseState::default);\n    attrs.parsed.fetch_add(1, Ordering::SeqCst);\n    BindgenAttrs {\n      span: Span::call_site(),\n      attrs: Vec::new(),\n      exists: false,\n    }\n  }\n}\n\nmacro_rules! gen_bindgen_attr {\n  ($( ($method:ident, $variant:ident($($associated_data:tt)*) $($extra_tokens:tt)*) ,)*) => {\n    /// The possible attributes in the `#[napi]`.\n    #[derive(Debug)]\n    #[allow(unused)]\n    pub enum BindgenAttr {\n      $($variant($($associated_data)*)),*\n    }\n  }\n}\n\nattrgen!(gen_bindgen_attr);\n\npub fn record_struct(ident: &Ident, js_name: String, opts: &BindgenAttrs) {\n  let state = STRUCTS.get_or_init(StructParseState::default);\n  let mut map = state.parsed.lock().unwrap();\n  let struct_name = ident.to_string();\n\n  map.insert(\n    struct_name,\n    ParsedStruct {\n      js_name,\n      ctor_defined: opts.constructor().is_some(),\n    },\n  );\n}\n\npub fn check_recorded_struct_for_impl(ident: &Ident, opts: &BindgenAttrs) -> BindgenResult<String> {\n  let state = STRUCTS.get_or_init(StructParseState::default);\n  let mut map = state.parsed.lock().unwrap();\n  let struct_name = ident.to_string();\n  if let Some(parsed) = map.get_mut(&struct_name) {\n    if opts.constructor().is_some() && !cfg!(debug_assertions) {\n      if parsed.ctor_defined {\n        bail_span!(\n          ident,\n          \"Constructor has already been defined for struct `{}`\",\n          &struct_name\n        );\n      } else {\n        parsed.ctor_defined = true;\n      }\n    }\n\n    Ok(parsed.js_name.clone())\n  } else {\n    bail_span!(\n      ident,\n      \"Did not find struct `{}` parsed before expand #[napi] for impl\",\n      &struct_name,\n    )\n  }\n}\n\nimpl Parse for BindgenAttrs {\n  fn parse(input: ParseStream) -> syn::Result<Self> {\n    let mut attrs = BindgenAttrs::default();\n    if input.is_empty() {\n      return Ok(attrs);\n    }\n\n    let opts = syn::punctuated::Punctuated::<_, syn::token::Comma>::parse_terminated(input)?;\n    attrs.attrs = opts.into_iter().map(|c| (Cell::new(false), c)).collect();\n    Ok(attrs)\n  }\n}\n\nimpl Parse for BindgenAttr {\n  fn parse(input: ParseStream) -> syn::Result<Self> {\n    let original = input.fork();\n    let attr: AnyIdent = input.parse()?;\n    let attr = attr.0;\n    let attr_span = attr.span();\n    let attr_string = attr.to_string();\n    let raw_attr_string = format!(\"r#{attr_string}\");\n\n    macro_rules! parsers {\n      ($(($name:ident, $($contents:tt)*),)*) => {\n        $(\n          if attr_string == stringify!($name) || raw_attr_string == stringify!($name) {\n            parsers!(\n              @parser\n              $($contents)*\n            );\n          }\n        )*\n      };\n\n      (@parser $variant:ident(Span)) => ({\n        return Ok(BindgenAttr::$variant(attr_span));\n      });\n\n      (@parser $variant:ident(Span, Ident)) => ({\n        input.parse::<Token![=]>()?;\n        let ident = input.parse::<AnyIdent>()?.0;\n        return Ok(BindgenAttr::$variant(attr_span, ident))\n      });\n\n      (@parser $variant:ident(Span, Option<Ident>)) => ({\n        if input.parse::<Token![=]>().is_ok() {\n          let ident = input.parse::<AnyIdent>()?.0;\n          return Ok(BindgenAttr::$variant(attr_span, Some(ident)))\n        } else {\n          return Ok(BindgenAttr::$variant(attr_span, None));\n        }\n      });\n\n        (@parser $variant:ident(Span, syn::Path)) => ({\n            input.parse::<Token![=]>()?;\n            return Ok(BindgenAttr::$variant(attr_span, input.parse()?));\n        });\n\n        (@parser $variant:ident(Span, syn::Expr)) => ({\n            input.parse::<Token![=]>()?;\n            return Ok(BindgenAttr::$variant(attr_span, input.parse()?));\n        });\n\n        (@parser $variant:ident(Span, String, Span)) => ({\n          input.parse::<Token![=]>()?;\n          let (val, span) = match input.parse::<syn::LitStr>() {\n            Ok(str) => (str.value(), str.span()),\n            Err(_) => {\n              let ident = input.parse::<AnyIdent>()?.0;\n              (ident.to_string(), ident.span())\n            }\n          };\n          return Ok(BindgenAttr::$variant(attr_span, val, span))\n        });\n\n        (@parser $variant:ident(Span, Option<(String, Span)>)) => ({\n          if let Ok(_) = input.parse::<Token![=]>() {\n            let val = match input.parse::<syn::LitStr>() {\n              Ok(str) => Some((str.value(), str.span())),\n              Err(_) => {\n                let ident = input.parse::<AnyIdent>()?.0;\n                Some((ident.to_string(), ident.span()))\n              }\n            };\n            return Ok(BindgenAttr::$variant(attr_span, val))\n          } else {\n            return Ok(BindgenAttr::$variant(attr_span, None))\n          }\n        });\n\n        (@parser $variant:ident(Span, Option<bool>), $default_value:literal) => ({\n          if let Ok(_) = input.parse::<Token![=]>() {\n            let (val, _) = match input.parse::<syn::LitBool>() {\n              Ok(str) => (str.value(), str.span()),\n              Err(_) => {\n                let ident = input.parse::<AnyIdent>()?.0;\n                (true, ident.span())\n              }\n            };\n            return Ok::<BindgenAttr, syn::Error>(BindgenAttr::$variant(attr_span, Some(val)))\n          } else {\n            return Ok(BindgenAttr::$variant(attr_span, Some($default_value)))\n          }\n        });\n\n        (@parser $variant:ident(Span, Vec<String>, Vec<Span>)) => ({\n          input.parse::<Token![=]>()?;\n          let (vals, spans) = match input.parse::<syn::ExprArray>() {\n            Ok(exprs) => {\n              let mut vals = vec![];\n              let mut spans = vec![];\n\n              for expr in exprs.elems.iter() {\n                if let syn::Expr::Lit(syn::ExprLit {\n                  lit: syn::Lit::Str(ref str),\n                  ..\n                }) = expr {\n                  vals.push(str.value());\n                  spans.push(str.span());\n                } else {\n                  return Err(syn::Error::new(expr.span(), \"expected string literals\"));\n                }\n              }\n\n              (vals, spans)\n            },\n            Err(_) => {\n              let ident = input.parse::<AnyIdent>()?.0;\n              (vec![ident.to_string()], vec![ident.span()])\n            }\n          };\n          return Ok(BindgenAttr::$variant(attr_span, vals, spans))\n        });\n      }\n\n    attrgen!(parsers);\n\n    Err(original.error(\"unknown attribute\"))\n  }\n}\n"
  },
  {
    "path": "crates/macro/src/parser/mod.rs",
    "content": "#[macro_use]\npub mod attrs;\n\nuse std::collections::{HashMap, HashSet};\nuse std::str::Chars;\nuse std::sync::{atomic::AtomicUsize, LazyLock, Mutex, OnceLock};\n\nuse attrs::BindgenAttrs;\n\nuse convert_case::Case;\nuse napi_derive_backend::{\n  rm_raw_prefix, to_case, BindgenResult, CallbackArg, Diagnostic, FnKind, FnSelf, Napi, NapiArray,\n  NapiClass, NapiConst, NapiEnum, NapiEnumValue, NapiEnumVariant, NapiFn, NapiFnArg, NapiFnArgKind,\n  NapiImpl, NapiItem, NapiObject, NapiStruct, NapiStructField, NapiStructKind, NapiStructuredEnum,\n  NapiStructuredEnumVariant, NapiTransparent, NapiType,\n};\nuse proc_macro2::{Ident, Span, TokenStream};\nuse quote::ToTokens;\nuse syn::ext::IdentExt;\nuse syn::parse::{Parse, ParseStream, Result as SynResult};\nuse syn::spanned::Spanned;\nuse syn::{\n  AngleBracketedGenericArguments, Attribute, ExprLit, GenericArgument, Meta, PatType, Path,\n  PathArguments, PathSegment, Signature, Token, Type, Visibility,\n};\n\nuse crate::parser::attrs::{check_recorded_struct_for_impl, record_struct};\n\n/// Stores (is_sync_generator, is_async_generator) for each struct\nstatic GENERATOR_STRUCT: OnceLock<Mutex<HashMap<String, (bool, bool)>>> = OnceLock::new();\n\nstatic REGISTER_INDEX: AtomicUsize = AtomicUsize::new(0);\n\nstatic KNOWN_JS_VALUE_TYPES_WITH_LIFETIME: LazyLock<HashSet<&str>> = LazyLock::new(|| {\n  [\n    \"Array\",\n    \"Function\",\n    \"JsDate\",\n    \"JsGlobal\",\n    \"JsNumber\",\n    \"JsString\",\n    \"JsSymbol\",\n    \"JsTimeout\",\n    \"JSON\",\n    \"Object\",\n    \"PromiseRaw\",\n    \"ReadableStream\",\n    \"This\",\n    \"Unknown\",\n    \"WriteableStream\",\n  ]\n  .into()\n});\n\nfn get_register_ident(name: &str) -> Ident {\n  let new_name = format!(\n    \"__napi_register__{}_{}\",\n    rm_raw_prefix(name),\n    REGISTER_INDEX.fetch_add(1, std::sync::atomic::Ordering::Relaxed)\n  );\n  Ident::new(&new_name, Span::call_site())\n}\n\nstruct AnyIdent(Ident);\n\nimpl Parse for AnyIdent {\n  fn parse(input: ParseStream) -> SynResult<Self> {\n    input.step(|cursor| match cursor.ident() {\n      Some((ident, remaining)) => Ok((AnyIdent(ident), remaining)),\n      None => Err(cursor.error(\"expected an identifier\")),\n    })\n  }\n}\n\npub trait ConvertToAST {\n  fn convert_to_ast(&mut self, opts: &BindgenAttrs) -> BindgenResult<Napi>;\n}\n\npub trait ParseNapi {\n  fn parse_napi(&mut self, tokens: &mut TokenStream, opts: &BindgenAttrs) -> BindgenResult<Napi>;\n}\n\n/// This function does a few things:\n/// - parses the tokens for the given argument `p` to find the `#[napi(ts_arg_type = \"MyType\")]`\n///   attribute and return the manually overridden type.\n/// - If both the `ts_args_type` override and the `ts_arg_type` override are present, bail\n///   since it should only allow one at a time.\n/// - Bails if it finds the `#[napi...]` attribute but it has the wrong data.\n/// - Removes the attribute from the output token stream so this\n///   `pub fn add(u: u32, #[napi(ts_arg_type = \"MyType\")] f: String)`\n///   `  `turns into\n///   `pub fn add(u: u32, f: String)`\n///   `  `otherwise it won't compile\nfn find_ts_arg_type_and_remove_attribute(\n  p: &mut PatType,\n  ts_args_type: Option<&(&str, Span)>,\n) -> BindgenResult<Option<String>> {\n  let mut ts_type_attr: Option<(usize, String)> = None;\n  for (idx, attr) in p.attrs.iter().enumerate() {\n    if attr.path().is_ident(\"napi\") {\n      if let Some((ts_args_type, _)) = ts_args_type {\n        bail_span!(\n          attr,\n          \"Found a 'ts_args_type'=\\\"{}\\\" override. Cannot use 'ts_arg_type' at the same time since they are mutually exclusive.\",\n          ts_args_type\n        );\n      }\n\n      match &attr.meta {\n        syn::Meta::Path(_) | syn::Meta::NameValue(_) => {\n          bail_span!(\n            attr,\n            \"Expects an assignment #[napi(ts_arg_type = \\\"MyType\\\")]\"\n          )\n        }\n        syn::Meta::List(list) => {\n          let mut found = false;\n          list\n            .parse_args_with(|tokens: &syn::parse::ParseBuffer<'_>| {\n              // tokens:\n              // #[napi(xxx, xxx=xxx)]\n              //        ^^^^^^^^^^^^\n              let list = tokens.parse_terminated(Meta::parse, Token![,])?;\n\n              for meta in list {\n                if meta.path().is_ident(\"ts_arg_type\") {\n                  match meta {\n                    Meta::Path(_) | Meta::List(_) => {\n                      return Err(syn::Error::new(\n                        meta.path().span(),\n                        \"Expects an assignment (ts_arg_type = \\\"MyType\\\")\",\n                      ));\n                    }\n                    Meta::NameValue(name_value) => match name_value.value {\n                      syn::Expr::Lit(syn::ExprLit {\n                        lit: syn::Lit::Str(str),\n                        ..\n                      }) => {\n                        let value = str.value();\n                        found = true;\n                        ts_type_attr = Some((idx, value));\n                      }\n                      _ => {\n                        return Err(syn::Error::new(\n                          name_value.value.span(),\n                          \"Expects a string literal\",\n                        ));\n                      }\n                    },\n                  }\n                }\n              }\n\n              Ok(())\n            })\n            .map_err(Diagnostic::from)?;\n\n          if !found {\n            bail_span!(attr, \"Expects a 'ts_arg_type'\");\n          }\n        }\n      }\n    }\n  }\n\n  if let Some((idx, value)) = ts_type_attr {\n    p.attrs.remove(idx);\n    Ok(Some(value))\n  } else {\n    Ok(None)\n  }\n}\n\nfn find_enum_value_and_remove_attribute(v: &mut syn::Variant) -> BindgenResult<Option<String>> {\n  let mut name_attr: Option<(usize, String)> = None;\n  for (idx, attr) in v.attrs.iter().enumerate() {\n    if attr.path().is_ident(\"napi\") {\n      match &attr.meta {\n        syn::Meta::Path(_) | syn::Meta::NameValue(_) => {\n          bail_span!(\n            attr,\n            \"Expects an assignment #[napi(value = \\\"enum-variant-value\\\")]\"\n          )\n        }\n        syn::Meta::List(list) => {\n          let mut found = false;\n          list\n            .parse_args_with(|tokens: &syn::parse::ParseBuffer<'_>| {\n              // tokens:\n              // #[napi(xxx, xxx=xxx)]\n              //        ^^^^^^^^^^^^\n              let list = tokens.parse_terminated(Meta::parse, Token![,])?;\n\n              for meta in list {\n                if meta.path().is_ident(\"value\") {\n                  match meta {\n                    Meta::Path(_) | Meta::List(_) => {\n                      return Err(syn::Error::new(\n                        meta.path().span(),\n                        \"Expects an assignment (value = \\\"enum-variant-value\\\")\",\n                      ));\n                    }\n                    Meta::NameValue(name_value) => match name_value.value {\n                      syn::Expr::Lit(syn::ExprLit {\n                        lit: syn::Lit::Str(str),\n                        ..\n                      }) => {\n                        let value = str.value();\n                        found = true;\n                        name_attr = Some((idx, value));\n                      }\n                      _ => {\n                        return Err(syn::Error::new(\n                          name_value.value.span(),\n                          \"Expects a string literal\",\n                        ));\n                      }\n                    },\n                  }\n                }\n              }\n\n              Ok(())\n            })\n            .map_err(Diagnostic::from)?;\n\n          if !found {\n            bail_span!(attr, \"Expects a 'value'\");\n          }\n        }\n      }\n    }\n  }\n\n  if let Some((idx, value)) = name_attr {\n    v.attrs.remove(idx);\n    Ok(Some(value))\n  } else {\n    Ok(None)\n  }\n}\n\nfn get_ty(mut ty: &mut syn::Type) -> &mut syn::Type {\n  while let syn::Type::Group(g) = ty {\n    ty = &mut g.elem;\n  }\n\n  ty\n}\n\nfn replace_self(mut ty: syn::Type, self_ty: Option<&Ident>) -> syn::Type {\n  let self_ty = match self_ty {\n    Some(i) => i,\n    None => return ty,\n  };\n  let path = match get_ty(&mut ty) {\n    syn::Type::Path(syn::TypePath { qself: None, path }) => path.clone(),\n    other => return other.clone(),\n  };\n  let new_path = if path.segments.len() == 1 && path.segments[0].ident == \"Self\" {\n    self_ty.clone().into()\n  } else {\n    path\n  };\n  syn::Type::Path(syn::TypePath {\n    qself: None,\n    path: new_path,\n  })\n}\n\n/// Extracts the last ident from the path\nfn extract_path_ident(path: &mut syn::Path) -> BindgenResult<(Ident, bool)> {\n  let mut has_lifetime = false;\n  for segment in path.segments.iter_mut() {\n    match &segment.arguments {\n      syn::PathArguments::None => {}\n      syn::PathArguments::AngleBracketed(generic) => {\n        if let Some(GenericArgument::Lifetime(_)) = generic.args.first() {\n          has_lifetime = true;\n        } else {\n          bail_span!(path, \"Only 1 lifetime is supported for now\");\n        }\n      }\n      _ => bail_span!(path, \"paths with type parameters are not supported yet\"),\n    }\n  }\n\n  match path.segments.last() {\n    Some(value) => Ok((value.ident.clone(), has_lifetime)),\n    None => {\n      bail_span!(path, \"empty idents are not supported\");\n    }\n  }\n}\n\nfn extract_callback_trait_types(\n  arguments: &syn::PathArguments,\n) -> BindgenResult<(Vec<syn::Type>, Option<syn::Type>)> {\n  match arguments {\n    // <T: Fn>\n    syn::PathArguments::None => Ok((vec![], None)),\n    syn::PathArguments::AngleBracketed(_) => {\n      bail_span!(arguments, \"use parentheses for napi callback trait\")\n    }\n    syn::PathArguments::Parenthesized(arguments) => {\n      let args = arguments.inputs.iter().cloned().collect::<Vec<_>>();\n\n      let ret = match &arguments.output {\n        syn::ReturnType::Type(_, ret_ty) => {\n          let ret_ty = &**ret_ty;\n          if let Some(ty_of_result) = extract_result_ty(ret_ty)? {\n            if ty_of_result.to_token_stream().to_string() == \"()\" {\n              None\n            } else {\n              Some(ty_of_result)\n            }\n          } else {\n            bail_span!(ret_ty, \"The return type of callback can only be `Result`\");\n          }\n        }\n        _ => {\n          bail_span!(\n            arguments,\n            \"The return type of callback can only be `Result`. Try with `Result<()>`\"\n          );\n        }\n      };\n\n      Ok((args, ret))\n    }\n  }\n}\n\nfn extract_result_ty(ty: &syn::Type) -> BindgenResult<Option<syn::Type>> {\n  match ty {\n    syn::Type::Path(syn::TypePath { qself: None, path }) => {\n      let segment = path.segments.last().unwrap();\n      if segment.ident != \"Result\" {\n        Ok(None)\n      } else {\n        match &segment.arguments {\n          syn::PathArguments::AngleBracketed(syn::AngleBracketedGenericArguments {\n            args, ..\n          }) => {\n            let ok_arg = args.first().unwrap();\n            match ok_arg {\n              syn::GenericArgument::Type(ty) => Ok(Some(ty.clone())),\n              _ => bail_span!(ok_arg, \"unsupported generic type\"),\n            }\n          }\n          _ => {\n            bail_span!(segment, \"unsupported generic type\")\n          }\n        }\n      }\n    }\n    _ => Ok(None),\n  }\n}\n\nfn get_expr(mut expr: &syn::Expr) -> &syn::Expr {\n  while let syn::Expr::Group(g) = expr {\n    expr = &g.expr;\n  }\n\n  expr\n}\n\n/// Extract the documentation comments from a Vec of attributes\nfn extract_doc_comments(attrs: &[syn::Attribute]) -> Vec<String> {\n  attrs\n    .iter()\n    .filter_map(|a| {\n      // if the path segments include an ident of \"doc\" we know this\n      // this is a doc comment\n      let name_value = a.meta.require_name_value();\n      if let Ok(name) = name_value {\n        if a.path().is_ident(\"doc\") {\n          Some(\n            // We want to filter out any Puncts so just grab the Literals\n            match &name.value {\n              syn::Expr::Lit(ExprLit {\n                lit: syn::Lit::Str(str),\n                ..\n              }) => {\n                let quoted = str.token().to_string();\n                Some(try_unescape(&quoted).unwrap_or(quoted))\n              }\n              _ => None,\n            },\n          )\n        } else {\n          None\n        }\n      } else {\n        None\n      }\n    })\n    //Fold up the [[String]] iter we created into Vec<String>\n    .fold(vec![], |mut acc, a| {\n      acc.extend(a);\n      acc\n    })\n}\n\n// Unescaped a quoted string. char::escape_debug() was used to escape the text.\nfn try_unescape(s: &str) -> Option<String> {\n  if s.is_empty() {\n    return Some(String::new());\n  }\n  let mut result = String::with_capacity(s.len());\n  let mut chars = s.chars();\n  for i in 0.. {\n    let c = match chars.next() {\n      Some(c) => c,\n      None => {\n        if result.ends_with('\"') {\n          result.pop();\n        }\n        return Some(result);\n      }\n    };\n    if i == 0 && c == '\"' {\n      // ignore it\n    } else if c == '\\\\' {\n      let c = chars.next()?;\n      match c {\n        't' => result.push('\\t'),\n        'r' => result.push('\\r'),\n        'n' => result.push('\\n'),\n        '\\\\' | '\\'' | '\"' => result.push(c),\n        'u' => {\n          if chars.next() != Some('{') {\n            return None;\n          }\n          let (c, next) = unescape_unicode(&mut chars)?;\n          result.push(c);\n          if next != '}' {\n            return None;\n          }\n        }\n        _ => return None,\n      }\n    } else {\n      result.push(c);\n    }\n  }\n  None\n}\n\nfn unescape_unicode(chars: &mut Chars) -> Option<(char, char)> {\n  let mut value = 0;\n  for i in 0..7 {\n    let c = chars.next()?;\n    let num = match c {\n      '0'..='9' => c as u32 - '0' as u32,\n      'a'..='f' => c as u32 - 'a' as u32,\n      'A'..='F' => c as u32 - 'A' as u32,\n      _ => {\n        if i == 0 {\n          return None;\n        }\n\n        if i == 0 {\n          return None;\n        }\n        let decoded = char::from_u32(value)?;\n        return Some((decoded, c));\n      }\n    };\n\n    if i >= 6 {\n      return None;\n    }\n    value = (value << 4) | num;\n  }\n  None\n}\n\nfn extract_fn_closure_generics(\n  generics: &syn::Generics,\n) -> BindgenResult<HashMap<String, syn::PathArguments>> {\n  let mut errors = vec![];\n\n  let mut map = HashMap::default();\n  if generics.params.is_empty() {\n    return Ok(map);\n  }\n\n  if let Some(where_clause) = &generics.where_clause {\n    for prediction in where_clause.predicates.iter() {\n      match prediction {\n        syn::WherePredicate::Type(syn::PredicateType {\n          bounded_ty, bounds, ..\n        }) => {\n          for bound in bounds {\n            match bound {\n              syn::TypeParamBound::Trait(t) => {\n                for segment in t.path.segments.iter() {\n                  match segment.ident.to_string().as_str() {\n                    \"Fn\" | \"FnOnce\" | \"FnMut\" => {\n                      map.insert(\n                        bounded_ty.to_token_stream().to_string(),\n                        segment.arguments.clone(),\n                      );\n                    }\n                    _ => {}\n                  };\n                }\n              }\n              syn::TypeParamBound::Lifetime(lifetime) => {\n                if lifetime.ident != \"static\" {\n                  errors.push(err_span!(\n                    bound,\n                    \"only 'static is supported in lifetime bound for fn arguments\"\n                  ));\n                }\n              }\n              _ => errors.push(err_span! {\n                bound,\n                \"unsupported bound in napi\"\n              }),\n            }\n          }\n        }\n        _ => errors.push(err_span! {\n          prediction,\n          \"unsupported where clause prediction in napi\"\n        }),\n      };\n    }\n  }\n\n  for param in generics.params.iter() {\n    match param {\n      syn::GenericParam::Type(syn::TypeParam { ident, bounds, .. }) => {\n        for bound in bounds {\n          match bound {\n            syn::TypeParamBound::Trait(t) => {\n              for segment in t.path.segments.iter() {\n                match segment.ident.to_string().as_str() {\n                  \"Fn\" | \"FnOnce\" | \"FnMut\" => {\n                    map.insert(ident.to_string(), segment.arguments.clone());\n                  }\n                  _ => {}\n                };\n              }\n            }\n            syn::TypeParamBound::Lifetime(lifetime) => {\n              if lifetime.ident != \"static\" {\n                errors.push(err_span!(\n                  bound,\n                  \"only 'static is supported in lifetime bound for fn arguments\"\n                ));\n              }\n            }\n            _ => errors.push(err_span! {\n              bound,\n              \"unsupported bound in napi\"\n            }),\n          }\n        }\n      }\n      syn::GenericParam::Lifetime(_) => {}\n      _ => {\n        errors.push(err_span!(param, \"unsupported napi generic param for fn\"));\n      }\n    }\n  }\n\n  Diagnostic::from_vec(errors).and(Ok(map))\n}\n\nfn napi_fn_from_decl(\n  sig: &mut Signature,\n  opts: &BindgenAttrs,\n  attrs: Vec<Attribute>,\n  vis: Visibility,\n  parent: Option<&Ident>,\n  parent_js_name: Option<String>,\n) -> BindgenResult<NapiFn> {\n  let mut errors = vec![];\n\n  let syn::Signature {\n    ident,\n    asyncness,\n    output,\n    generics,\n    ..\n  } = sig.clone();\n\n  let mut fn_self = None;\n  let callback_traits = extract_fn_closure_generics(&generics)?;\n\n  let args = sig\n    .inputs\n    .iter_mut()\n    .filter_map(|arg| match arg {\n      syn::FnArg::Typed(ref mut p) => {\n        let ts_arg_type = find_ts_arg_type_and_remove_attribute(p, opts.ts_args_type().as_ref())\n          .unwrap_or_else(|e| {\n            errors.push(e);\n            None\n          });\n\n        let ty_str = p.ty.to_token_stream().to_string();\n        if let Some(path_arguments) = callback_traits.get(&ty_str) {\n          match extract_callback_trait_types(path_arguments) {\n            Ok((fn_args, fn_ret)) => Some(NapiFnArg {\n              kind: NapiFnArgKind::Callback(Box::new(CallbackArg {\n                pat: p.pat.clone(),\n                args: fn_args,\n                ret: fn_ret,\n              })),\n              ts_arg_type,\n            }),\n            Err(e) => {\n              errors.push(e);\n              None\n            }\n          }\n        } else {\n          let ty = replace_self(p.ty.as_ref().clone(), parent);\n          *p.ty = ty;\n          Some(NapiFnArg {\n            kind: NapiFnArgKind::PatType(Box::new(p.clone())),\n            ts_arg_type,\n          })\n        }\n      }\n      syn::FnArg::Receiver(r) => {\n        if parent.is_some() {\n          assert!(fn_self.is_none());\n          if r.reference.is_none() {\n            errors.push(err_span!(\n              r,\n              \"The native methods can't move values from napi. Try `&self` or `&mut self` instead.\"\n            ));\n          } else if r.mutability.is_some() {\n            fn_self = Some(FnSelf::MutRef);\n          } else {\n            fn_self = Some(FnSelf::Ref);\n          }\n        } else {\n          errors.push(err_span!(r, \"arguments cannot be `self`\"));\n        }\n        None\n      }\n    })\n    .collect::<Vec<_>>();\n\n  let (ret, is_ret_result) = match output {\n    syn::ReturnType::Default => (None, false),\n    syn::ReturnType::Type(_, ty) => {\n      let result_ty = extract_result_ty(&ty)?;\n      if let Some(result_ty) = result_ty {\n        (Some(replace_self(result_ty, parent)), true)\n      } else {\n        (Some(replace_self(*ty, parent)), false)\n      }\n    }\n  };\n\n  Diagnostic::from_vec(errors).and_then(|_| {\n    let js_name = if let Some(prop_name) = opts.getter() {\n      opts.js_name().map_or_else(\n        || {\n          if let Some(ident) = prop_name {\n            ident.to_string()\n          } else {\n            to_case(ident.to_string().trim_start_matches(\"get_\"), Case::Camel)\n          }\n        },\n        |(js_name, _)| js_name.to_owned(),\n      )\n    } else if let Some(prop_name) = opts.setter() {\n      opts.js_name().map_or_else(\n        || {\n          if let Some(ident) = prop_name {\n            ident.to_string()\n          } else {\n            to_case(ident.to_string().trim_start_matches(\"set_\"), Case::Camel)\n          }\n        },\n        |(js_name, _)| js_name.to_owned(),\n      )\n    } else if opts.constructor().is_some() {\n      \"constructor\".to_owned()\n    } else if opts.module_exports().is_some() {\n      if opts.js_name().is_some() {\n        bail_span!(sig.ident, \"module_exports fn can't have js_name\");\n      }\n      if opts.getter().is_some() || opts.setter().is_some() {\n        bail_span!(sig.ident, \"module_exports fn can't have getter or setter\");\n      }\n      if opts.factory().is_some() || opts.constructor().is_some() {\n        bail_span!(\n          sig.ident,\n          \"module_exports fn can't have factory or constructor\"\n        );\n      }\n      if opts.strict().is_some() {\n        bail_span!(sig.ident, \"module_exports fn can't have strict\");\n      }\n      if opts.return_if_invalid().is_some() {\n        bail_span!(sig.ident, \"module_exports fn can't have return_if_invalid\");\n      }\n\n      if parent.is_some() {\n        bail_span!(sig.ident, \"module_exports fn can't inside impl block\");\n      }\n\n      if !generics.params.is_empty() {\n        bail_span!(sig.ident, \"module_exports fn can't have generic parameters\");\n      }\n\n      if opts.no_export().is_some() {\n        bail_span!(\n          sig.ident,\n          \"#[napi(no_export)] can not be used with module_exports attribute\"\n        );\n      }\n\n      for arg in args.iter() {\n        match &arg.kind {\n          NapiFnArgKind::Callback(_) => {\n            bail_span!(sig.ident, \"module_exports fn can't have callback arguments\");\n          }\n          NapiFnArgKind::PatType(pat) => {\n            if arg.ts_arg_type.is_some() {\n              bail_span!(sig.ident, \"module_exports fn can't have ts_arg_type\");\n            }\n            if let syn::Type::Path(syn::TypePath {\n              path: syn::Path { segments, .. },\n              ..\n            }) = &*pat.ty\n            {\n              if let Some(segment) = segments.last() {\n                if segment.ident != \"Env\" && segment.ident != \"Object\" {\n                  bail_span!(\n                    sig.ident,\n                    \"module_exports fn can only accept Env or Object as argument\"\n                  );\n                }\n                continue;\n              }\n            }\n            if let syn::Type::Reference(syn::TypeReference { elem, .. }) = &*pat.ty {\n              if let syn::Type::Path(syn::TypePath {\n                path: syn::Path { segments, .. },\n                ..\n              }) = &**elem\n              {\n                if let Some(segment) = segments.last() {\n                  if segment.ident != \"Env\" && segment.ident != \"Object\" {\n                    bail_span!(\n                      sig.ident,\n                      \"module_exports fn can only accept Env or Object as argument\"\n                    );\n                  }\n                  continue;\n                }\n              }\n            }\n          }\n        }\n        bail_span!(\n          sig.ident,\n          \"module_exports fn can only accept Env or Object as argument\"\n        );\n      }\n\n      if let syn::ReturnType::Type(_, ty) = &sig.output {\n        if let syn::Type::Path(syn::TypePath {\n          path: syn::Path { segments, .. },\n          ..\n        }) = &**ty\n        {\n          if let Some(segment) = segments.last() {\n            if segment.ident != \"Result\" && segment.ident != \"()\" {\n              bail_span!(\n                sig.ident,\n                \"module_exports fn can only return Result<()> or (), got {}\",\n                segment.ident\n              );\n            }\n            if segment.ident == \"Result\" {\n              if let syn::PathArguments::AngleBracketed(syn::AngleBracketedGenericArguments {\n                args,\n                ..\n              }) = &segment.arguments\n              {\n                if args.len() != 1 {\n                  bail_span!(\n                    segment.ident,\n                    \"module_exports fn can only return Result<()> or ()\"\n                  );\n                }\n                if let syn::GenericArgument::Type(syn::Type::Tuple(syn::TypeTuple {\n                  elems, ..\n                })) = &args[0]\n                {\n                  if !elems.empty_or_trailing() {\n                    bail_span!(\n                      segment.ident,\n                      \"module_exports fn can only return Result<()> or ()\"\n                    );\n                  }\n                } else {\n                  bail_span!(\n                    segment.ident,\n                    \"module_exports fn can only return Result<()> or ()\"\n                  );\n                }\n              } else {\n                bail_span!(\n                  segment.ident,\n                  \"module_exports fn can only return Result<()> or ()\"\n                );\n              }\n            }\n          }\n        }\n      }\n\n      to_case(ident.to_string(), Case::Camel)\n    } else {\n      opts.js_name().map_or_else(\n        || to_case(ident.to_string(), Case::Camel),\n        |(js_name, _)| js_name.to_owned(),\n      )\n    };\n\n    let namespace = opts.namespace().map(|(m, _)| m.to_owned());\n    let (parent_is_generator, parent_is_async_generator) = if let Some(p) = parent {\n      let generator_struct = GENERATOR_STRUCT.get_or_init(|| Mutex::new(HashMap::new()));\n      let generator_struct = generator_struct\n        .lock()\n        .expect(\"Lock generator struct failed\");\n\n      let key = namespace\n        .as_ref()\n        .map(|n| format!(\"{n}::{p}\"))\n        .unwrap_or_else(|| p.to_string());\n      *generator_struct.get(&key).unwrap_or(&(false, false))\n    } else {\n      (false, false)\n    };\n\n    let kind = fn_kind(opts);\n\n    if !matches!(kind, FnKind::Normal) && parent.is_none() {\n      bail_span!(\n        sig.ident,\n        \"Only fn in impl block can be marked as factory, constructor, getter or setter\"\n      );\n    }\n\n    if matches!(kind, FnKind::Constructor) && asyncness.is_some() {\n      bail_span!(sig.ident, \"Constructor don't support asynchronous function\");\n    }\n\n    Ok(NapiFn {\n      name: ident.clone(),\n      js_name,\n      module_exports: opts.module_exports().is_some(),\n      args,\n      ret,\n      is_ret_result,\n      is_async: asyncness.is_some(),\n      within_async_runtime: opts.async_runtime().is_some(),\n      vis,\n      kind,\n      fn_self,\n      parent: parent.cloned(),\n      parent_js_name,\n      comments: extract_doc_comments(&attrs),\n      attrs,\n      strict: opts.strict().is_some(),\n      return_if_invalid: opts.return_if_invalid().is_some(),\n      js_mod: opts.namespace().map(|(m, _)| m.to_owned()),\n      ts_type: opts.ts_type().map(|(m, _)| m.to_owned()),\n      ts_generic_types: opts.ts_generic_types().map(|(m, _)| m.to_owned()),\n      ts_args_type: opts.ts_args_type().map(|(m, _)| m.to_owned()),\n      ts_return_type: opts.ts_return_type().map(|(m, _)| m.to_owned()),\n      skip_typescript: opts.skip_typescript().is_some(),\n      parent_is_generator,\n      parent_is_async_generator,\n      writable: opts.writable(),\n      enumerable: opts.enumerable(),\n      configurable: opts.configurable(),\n      catch_unwind: opts.catch_unwind().is_some(),\n      unsafe_: sig.unsafety.is_some(),\n      register_name: get_register_ident(ident.to_string().as_str()),\n      no_export: opts.no_export().is_some(),\n    })\n  })\n}\n\nimpl ParseNapi for syn::Item {\n  fn parse_napi(&mut self, tokens: &mut TokenStream, opts: &BindgenAttrs) -> BindgenResult<Napi> {\n    match self {\n      syn::Item::Fn(f) => f.parse_napi(tokens, opts),\n      syn::Item::Struct(s) => s.parse_napi(tokens, opts),\n      syn::Item::Impl(i) => i.parse_napi(tokens, opts),\n      syn::Item::Enum(e) => e.parse_napi(tokens, opts),\n      syn::Item::Const(c) => c.parse_napi(tokens, opts),\n      syn::Item::Type(c) => c.parse_napi(tokens, opts),\n      _ => bail_span!(\n        self,\n        \"#[napi] can only be applied to a function, struct, enum, const, mod or impl.\"\n      ),\n    }\n  }\n}\n\nimpl ParseNapi for syn::ItemFn {\n  fn parse_napi(&mut self, tokens: &mut TokenStream, opts: &BindgenAttrs) -> BindgenResult<Napi> {\n    if opts.ts_type().is_some()\n      && (opts.ts_args_type().is_some() || opts.ts_return_type().is_some())\n    {\n      bail_span!(\n        self,\n        \"#[napi] with ts_type cannot be combined with ts_args_type, ts_return_type in function\"\n      );\n    }\n    if opts.return_if_invalid().is_some() && opts.strict().is_some() {\n      bail_span!(\n        self,\n        \"#[napi(return_if_invalid)] can't be used with #[napi(strict)]\"\n      );\n    }\n    let napi = self.convert_to_ast(opts);\n    self.to_tokens(tokens);\n\n    napi\n  }\n}\nimpl ParseNapi for syn::ItemStruct {\n  fn parse_napi(&mut self, tokens: &mut TokenStream, opts: &BindgenAttrs) -> BindgenResult<Napi> {\n    if opts.ts_args_type().is_some()\n      || opts.ts_return_type().is_some()\n      || opts.skip_typescript().is_some()\n      || opts.ts_type().is_some()\n    {\n      bail_span!(\n        self,\n        \"#[napi] can't be applied to a struct with #[napi(ts_args_type)], #[napi(ts_return_type)], #[napi(skip_typescript)] or #[napi(ts_type)]\"\n      );\n    }\n    if opts.return_if_invalid().is_some() {\n      bail_span!(\n        self,\n        \"#[napi(return_if_invalid)] can only be applied to a function or method.\"\n      );\n    }\n    if opts.catch_unwind().is_some() {\n      bail_span!(\n        self,\n        \"#[napi(catch_unwind)] can only be applied to a function or method.\"\n      );\n    }\n    if opts.no_export().is_some() {\n      bail_span!(\n        self,\n        \"#[napi(no_export)] can only be applied to a function.\"\n      );\n    }\n    if opts.object().is_some() && opts.custom_finalize().is_some() {\n      bail_span!(self, \"Custom finalize is not supported for #[napi(object)]\");\n    }\n    let napi = self.convert_to_ast(opts);\n    self.to_tokens(tokens);\n\n    napi\n  }\n}\n\nimpl ParseNapi for syn::ItemImpl {\n  fn parse_napi(&mut self, tokens: &mut TokenStream, opts: &BindgenAttrs) -> BindgenResult<Napi> {\n    if opts.ts_args_type().is_some()\n      || opts.ts_return_type().is_some()\n      || opts.skip_typescript().is_some()\n      || opts.ts_type().is_some()\n      || opts.custom_finalize().is_some()\n    {\n      bail_span!(\n        self,\n        \"#[napi] can't be applied to impl with #[napi(ts_args_type)], #[napi(ts_return_type)], #[napi(skip_typescript)] or #[napi(ts_type)] or #[napi(custom_finalize)]\"\n      );\n    }\n    if opts.return_if_invalid().is_some() {\n      bail_span!(\n        self,\n        \"#[napi(return_if_invalid)] can only be applied to a function or method.\"\n      );\n    }\n    if opts.catch_unwind().is_some() {\n      bail_span!(\n        self,\n        \"#[napi(catch_unwind)] can only be applied to a function or method.\"\n      );\n    }\n    if opts.no_export().is_some() {\n      bail_span!(\n        self,\n        \"#[napi(no_export)] can only be applied to a function.\"\n      );\n    }\n    // #[napi] macro will be remove from impl items after converted to ast\n    let napi = self.convert_to_ast(opts);\n    self.to_tokens(tokens);\n\n    napi\n  }\n}\n\nimpl ParseNapi for syn::ItemEnum {\n  fn parse_napi(&mut self, tokens: &mut TokenStream, opts: &BindgenAttrs) -> BindgenResult<Napi> {\n    if opts.ts_args_type().is_some()\n      || opts.ts_return_type().is_some()\n      || opts.ts_type().is_some()\n      || opts.custom_finalize().is_some()\n    {\n      bail_span!(\n        self,\n        \"#[napi] can't be applied to a enum with #[napi(ts_args_type)], #[napi(ts_return_type)] or #[napi(ts_type)] or #[napi(custom_finalize)]\"\n      );\n    }\n    if opts.return_if_invalid().is_some() {\n      bail_span!(\n        self,\n        \"#[napi(return_if_invalid)] can only be applied to a function or method.\"\n      );\n    }\n    if opts.catch_unwind().is_some() {\n      bail_span!(\n        self,\n        \"#[napi(catch_unwind)] can only be applied to a function or method.\"\n      );\n    }\n    if opts.no_export().is_some() {\n      bail_span!(\n        self,\n        \"#[napi(no_export)] can only be applied to a function.\"\n      );\n    }\n    let napi = self.convert_to_ast(opts);\n    self.to_tokens(tokens);\n\n    napi\n  }\n}\nimpl ParseNapi for syn::ItemConst {\n  fn parse_napi(&mut self, tokens: &mut TokenStream, opts: &BindgenAttrs) -> BindgenResult<Napi> {\n    if opts.ts_args_type().is_some()\n      || opts.ts_return_type().is_some()\n      || opts.ts_type().is_some()\n      || opts.custom_finalize().is_some()\n    {\n      bail_span!(\n        self,\n        \"#[napi] can't be applied to a const with #[napi(ts_args_type)], #[napi(ts_return_type)] or #[napi(ts_type)] or #[napi(custom_finalize)]\"\n      );\n    }\n    if opts.return_if_invalid().is_some() {\n      bail_span!(\n        self,\n        \"#[napi(return_if_invalid)] can only be applied to a function or method.\"\n      );\n    }\n    if opts.catch_unwind().is_some() {\n      bail_span!(\n        self,\n        \"#[napi(catch_unwind)] can only be applied to a function or method.\"\n      );\n    }\n    if opts.no_export().is_some() {\n      bail_span!(\n        self,\n        \"#[napi(no_export)] can only be applied to a function.\"\n      );\n    }\n    let napi = self.convert_to_ast(opts);\n    self.to_tokens(tokens);\n    napi\n  }\n}\n\nimpl ParseNapi for syn::ItemType {\n  fn parse_napi(&mut self, tokens: &mut TokenStream, opts: &BindgenAttrs) -> BindgenResult<Napi> {\n    if opts.ts_args_type().is_some()\n      || opts.ts_return_type().is_some()\n      || opts.custom_finalize().is_some()\n    {\n      bail_span!(\n        self,\n        \"#[napi] can't be applied to a type with #[napi(ts_args_type)], #[napi(ts_return_type)] or #[napi(custom_finalize)]\"\n      );\n    }\n    if opts.return_if_invalid().is_some() {\n      bail_span!(\n        self,\n        \"#[napi(return_if_invalid)] can only be applied to a function or method.\"\n      );\n    }\n    if opts.catch_unwind().is_some() {\n      bail_span!(\n        self,\n        \"#[napi(catch_unwind)] can only be applied to a function or method.\"\n      );\n    }\n    if opts.no_export().is_some() {\n      bail_span!(\n        self,\n        \"#[napi(no_export)] can only be applied to a function.\"\n      );\n    }\n    let napi = self.convert_to_ast(opts);\n    self.to_tokens(tokens);\n    napi\n  }\n}\n\nfn fn_kind(opts: &BindgenAttrs) -> FnKind {\n  let mut kind = FnKind::Normal;\n\n  if opts.getter().is_some() {\n    kind = FnKind::Getter;\n  }\n\n  if opts.setter().is_some() {\n    kind = FnKind::Setter;\n  }\n\n  if opts.constructor().is_some() {\n    kind = FnKind::Constructor;\n  }\n\n  if opts.factory().is_some() {\n    kind = FnKind::Factory;\n  }\n\n  kind\n}\n\nimpl ConvertToAST for syn::ItemFn {\n  fn convert_to_ast(&mut self, opts: &BindgenAttrs) -> BindgenResult<Napi> {\n    let func = napi_fn_from_decl(\n      &mut self.sig,\n      opts,\n      self.attrs.clone(),\n      self.vis.clone(),\n      None,\n      None,\n    )?;\n\n    Ok(Napi {\n      item: NapiItem::Fn(func),\n    })\n  }\n}\n\nfn convert_fields(\n  fields: &mut syn::Fields,\n  check_vis: bool,\n) -> BindgenResult<(Vec<NapiStructField>, bool)> {\n  let mut napi_fields = vec![];\n  let is_tuple = matches!(fields, syn::Fields::Unnamed(_));\n  for (i, field) in fields.iter_mut().enumerate() {\n    if check_vis && !matches!(field.vis, syn::Visibility::Public(_)) {\n      continue;\n    }\n\n    let field_opts = BindgenAttrs::find(&mut field.attrs)?;\n\n    let (js_name, name) = match &field.ident {\n      Some(ident) => (\n        field_opts.js_name().map_or_else(\n          || to_case(ident.unraw().to_string(), Case::Camel),\n          |(js_name, _)| js_name.to_owned(),\n        ),\n        syn::Member::Named(ident.clone()),\n      ),\n      None => (\n        field_opts\n          .js_name()\n          .map_or_else(|| format!(\"field{i}\"), |(js_name, _)| js_name.to_owned()),\n        syn::Member::Unnamed(i.into()),\n      ),\n    };\n\n    let ignored = field_opts.skip().is_some();\n    let readonly = field_opts.readonly().is_some();\n    let writable = field_opts.writable();\n    let enumerable = field_opts.enumerable();\n    let configurable = field_opts.configurable();\n    let skip_typescript = field_opts.skip_typescript().is_some();\n    let ts_type = field_opts.ts_type().map(|e| e.0.to_string());\n\n    let mut ty = field.ty.clone();\n\n    let has_lifetime = if let Type::Path(syn::TypePath {\n      path: Path { segments, .. },\n      ..\n    }) = &mut ty\n    {\n      if let Some(PathSegment {\n        arguments: PathArguments::AngleBracketed(AngleBracketedGenericArguments { args, .. }),\n        ..\n      }) = segments.last_mut()\n      {\n        args.iter_mut().any(|arg| {\n          if let GenericArgument::Lifetime(lifetime) = arg {\n            *lifetime = syn::Lifetime::new(\"'static\", Span::call_site());\n            true\n          } else {\n            false\n          }\n        })\n      } else {\n        false\n      }\n    } else {\n      false\n    };\n\n    napi_fields.push(NapiStructField {\n      name,\n      js_name,\n      ty,\n      getter: !ignored,\n      setter: !(ignored || readonly),\n      writable,\n      enumerable,\n      configurable,\n      comments: extract_doc_comments(&field.attrs),\n      skip_typescript,\n      ts_type,\n      has_lifetime,\n    })\n  }\n  Ok((napi_fields, is_tuple))\n}\n\nimpl ConvertToAST for syn::ItemStruct {\n  fn convert_to_ast(&mut self, opts: &BindgenAttrs) -> BindgenResult<Napi> {\n    let mut errors = vec![];\n\n    let rust_struct_ident: Ident = self.ident.clone();\n    let final_js_name_for_struct = opts.js_name().map_or_else(\n      || to_case(self.ident.to_string(), Case::Pascal),\n      |(attr_js_name, _span)| attr_js_name.to_owned(),\n    );\n\n    let use_nullable = opts.use_nullable();\n    let (fields, is_tuple) = convert_fields(&mut self.fields, true)?;\n\n    record_struct(&rust_struct_ident, final_js_name_for_struct.clone(), opts);\n    let namespace = opts.namespace().map(|(m, _)| m.to_owned());\n    let implement_iterator = opts.iterator().is_some();\n    let implement_async_iterator = opts.async_iterator().is_some();\n\n    if implement_iterator && implement_async_iterator {\n      bail_span!(\n        self,\n        \"Cannot use both #[napi(iterator)] and #[napi(async_iterator)] on the same struct. \\\n         Use #[napi(iterator)] for synchronous iteration (impl Generator) or \\\n         #[napi(async_iterator)] for async iteration (impl AsyncGenerator)\"\n      );\n    }\n\n    if (implement_iterator || implement_async_iterator)\n      && self\n        .fields\n        .iter()\n        .filter(|f| matches!(f.vis, Visibility::Public(_)))\n        .filter_map(|f| f.ident.clone())\n        .map(|ident| ident.to_string())\n        .any(|field_name| field_name == \"next\" || field_name == \"throw\" || field_name == \"return\")\n    {\n      bail_span!(\n        self,\n        \"Generator structs cannot have public fields named `next`, `throw`, or `return`.\"\n      );\n    }\n\n    let generator_struct = GENERATOR_STRUCT.get_or_init(|| Mutex::new(HashMap::new()));\n    let mut generator_struct = generator_struct\n      .lock()\n      .expect(\"Lock generator struct failed\");\n    let key = namespace\n      .as_ref()\n      .map(|n| format!(\"{n}::{rust_struct_ident}\"))\n      .unwrap_or_else(|| rust_struct_ident.to_string());\n    generator_struct.insert(key, (implement_iterator, implement_async_iterator));\n    drop(generator_struct);\n\n    let transparent = opts\n      .transparent()\n      .is_some()\n      .then(|| -> Result<_, Diagnostic> {\n        if !is_tuple || self.fields.len() != 1 {\n          bail_span!(\n            self,\n            \"#[napi(transparent)] can only be applied to a struct with a single field tuple\",\n          )\n        }\n        let first_field = self.fields.iter().next().unwrap();\n        Ok(first_field.ty.clone())\n      })\n      .transpose()?;\n\n    let struct_kind = if let Some(transparent) = transparent {\n      NapiStructKind::Transparent(NapiTransparent {\n        ty: transparent,\n        object_from_js: opts.object_from_js(),\n        object_to_js: opts.object_to_js(),\n      })\n    } else if opts.array().is_some() {\n      if !is_tuple {\n        bail_span!(self, \"#[napi(array)] can only be applied to a tuple struct\",)\n      }\n      NapiStructKind::Array(NapiArray {\n        fields,\n        object_from_js: opts.object_from_js(),\n        object_to_js: opts.object_to_js(),\n      })\n    } else if opts.object().is_some() {\n      NapiStructKind::Object(NapiObject {\n        fields,\n        object_from_js: opts.object_from_js(),\n        object_to_js: opts.object_to_js(),\n        is_tuple,\n      })\n    } else {\n      // field lifetime check, JsValue types with lifetime can't be assigned to a field of napi class struct\n      for syn::Field { ty, .. } in self.fields.iter() {\n        if let syn::Type::Path(syn::TypePath { path, .. }) = ty {\n          if let Some(PathSegment {\n            ident,\n            arguments:\n              syn::PathArguments::AngleBracketed(syn::AngleBracketedGenericArguments { args, .. }),\n            ..\n          }) = path.segments.last()\n          {\n            if let Some(GenericArgument::Lifetime(syn::Lifetime { ident: _, .. })) = args.first() {\n              // has lifetime and type name matched with known js value types\n              if KNOWN_JS_VALUE_TYPES_WITH_LIFETIME.contains(ident.to_string().as_str()) {\n                // TODO: add link for more information\n                errors.push(err_span!(\n                  ty,\n                  \"Can't assign {} to a field of napi class struct\",\n                  ident\n                ));\n              }\n            }\n          }\n        }\n      }\n      NapiStructKind::Class(NapiClass {\n        fields,\n        ctor: opts.constructor().is_some(),\n        implement_iterator,\n        implement_async_iterator,\n        is_tuple,\n        use_custom_finalize: opts.custom_finalize().is_some(),\n      })\n    };\n\n    match &struct_kind {\n      NapiStructKind::Transparent(_) => {}\n      NapiStructKind::Class(class) if !class.ctor => {}\n      _ => {\n        for field in self.fields.iter() {\n          if !matches!(field.vis, syn::Visibility::Public(_)) {\n            errors.push(err_span!(\n              field,\n              \"#[napi] requires all struct fields to be public to mark struct as constructor or object shape\\nthis field is not public.\"\n            ));\n          }\n        }\n      }\n    };\n\n    if self.generics.lifetimes().size_hint().0 > 1 {\n      errors.push(err_span!(\n        self,\n        \"struct with multiple generic parameters is not supported\"\n      ));\n    }\n\n    let lifetime = if let Some(lifetime) = self.generics.lifetimes().next() {\n      if !lifetime.bounds.is_empty() {\n        bail_span!(lifetime.bounds, \"unsupported self type in #[napi] impl\")\n      }\n      Some(lifetime.lifetime.to_string())\n    } else {\n      None\n    };\n\n    Diagnostic::from_vec(errors).map(|()| Napi {\n      item: NapiItem::Struct(NapiStruct {\n        js_name: final_js_name_for_struct,\n        name: rust_struct_ident.clone(),\n        kind: struct_kind,\n        js_mod: namespace,\n        use_nullable,\n        register_name: get_register_ident(format!(\"{rust_struct_ident}_struct\").as_str()),\n        comments: extract_doc_comments(&self.attrs),\n        has_lifetime: lifetime.is_some(),\n        is_generator: implement_iterator,\n        is_async_generator: implement_async_iterator,\n      }),\n    })\n  }\n}\n\nimpl ConvertToAST for syn::ItemImpl {\n  fn convert_to_ast(&mut self, impl_opts: &BindgenAttrs) -> BindgenResult<Napi> {\n    let struct_name = match get_ty(&mut self.self_ty) {\n      syn::Type::Path(syn::TypePath {\n        ref mut path,\n        qself: None,\n      }) => path,\n      _ => {\n        bail_span!(self.self_ty, \"unsupported self type in #[napi] impl\")\n      }\n    };\n\n    let (struct_name, has_lifetime) = extract_path_ident(struct_name)?;\n\n    // Check if this struct was recorded with a custom js_name, fallback to default if not found\n    let mut struct_js_name =\n      match check_recorded_struct_for_impl(&struct_name, &BindgenAttrs::default()) {\n        Ok(recorded_js_name) => recorded_js_name,\n        Err(_) => to_case(struct_name.to_string(), Case::UpperCamel),\n      };\n    let mut items = vec![];\n    let mut task_output_type = None;\n    let mut iterator_yield_type = None;\n    let mut iterator_next_type = None;\n    let mut iterator_return_type = None;\n    let mut async_iterator_yield_type = None;\n    let mut async_iterator_next_type = None;\n    let mut async_iterator_return_type = None;\n    for item in self.items.iter_mut() {\n      if let Some(method) = match item {\n        syn::ImplItem::Fn(m) => Some(m),\n        syn::ImplItem::Type(m) => {\n          if let Some((_, t, _)) = &self.trait_ {\n            if let Some(PathSegment { ident, .. }) = t.segments.last() {\n              if (ident == \"Task\" || ident == \"ScopedTask\") && m.ident == \"JsValue\" {\n                task_output_type = Some(m.ty.clone());\n              } else if ident == \"Generator\" || ident == \"ScopedGenerator\" {\n                if let Type::Path(_) = &m.ty {\n                  if m.ident == \"Yield\" {\n                    iterator_yield_type = Some(m.ty.clone());\n                  } else if m.ident == \"Next\" {\n                    iterator_next_type = Some(m.ty.clone());\n                  } else if m.ident == \"Return\" {\n                    iterator_return_type = Some(m.ty.clone());\n                  }\n                }\n              } else if ident == \"AsyncGenerator\" {\n                if let Type::Path(_) = &m.ty {\n                  if m.ident == \"Yield\" {\n                    async_iterator_yield_type = Some(m.ty.clone());\n                  } else if m.ident == \"Next\" {\n                    async_iterator_next_type = Some(m.ty.clone());\n                  } else if m.ident == \"Return\" {\n                    async_iterator_return_type = Some(m.ty.clone());\n                  }\n                }\n              }\n            }\n          }\n          None\n        }\n        _ => {\n          bail_span!(item, \"unsupported impl item in #[napi]\")\n        }\n      } {\n        let opts = BindgenAttrs::find(&mut method.attrs)?;\n\n        // it'd better only care methods decorated with `#[napi]` attribute\n        if !opts.exists {\n          continue;\n        }\n\n        if opts.constructor().is_some() || opts.factory().is_some() {\n          struct_js_name = check_recorded_struct_for_impl(&struct_name, &opts)?;\n        }\n\n        let vis = method.vis.clone();\n\n        match &vis {\n          Visibility::Public(_) => {}\n          _ => {\n            bail_span!(method.sig.ident, \"only pub method supported by #[napi].\",);\n          }\n        }\n\n        let func = napi_fn_from_decl(\n          &mut method.sig,\n          &opts,\n          method.attrs.clone(),\n          vis,\n          Some(&struct_name),\n          Some(struct_js_name.clone()),\n        )?;\n\n        items.push(func);\n      }\n    }\n\n    let namespace = impl_opts.namespace().map(|(m, _)| m.to_owned());\n\n    Ok(Napi {\n      item: NapiItem::Impl(NapiImpl {\n        name: struct_name.clone(),\n        js_name: struct_js_name,\n        items,\n        task_output_type,\n        iterator_yield_type,\n        iterator_next_type,\n        iterator_return_type,\n        async_iterator_yield_type,\n        async_iterator_next_type,\n        async_iterator_return_type,\n        has_lifetime,\n        js_mod: namespace,\n        comments: extract_doc_comments(&self.attrs),\n        register_name: get_register_ident(format!(\"{struct_name}_impl\").as_str()),\n      }),\n    })\n  }\n}\n\nimpl ConvertToAST for syn::ItemEnum {\n  fn convert_to_ast(&mut self, opts: &BindgenAttrs) -> BindgenResult<Napi> {\n    match self.vis {\n      Visibility::Public(_) => {}\n      _ => bail_span!(self, \"only public enum allowed\"),\n    }\n\n    let js_name = opts\n      .js_name()\n      .map_or_else(|| self.ident.to_string(), |(s, _)| s.to_string());\n    let is_string_enum = opts.string_enum().is_some();\n\n    if self\n      .variants\n      .iter()\n      .any(|v| !matches!(v.fields, syn::Fields::Unit))\n    {\n      let discriminant = opts.discriminant().map_or(\"type\", |(s, _)| s);\n      let discriminant_case = opts.discriminant_case().map(|c|\n        Ok::<Case, Diagnostic>(match c.0 {\n          \"lowercase\" => Case::Flat,\n          \"UPPERCASE\" => Case::UpperFlat,\n          \"PascalCase\" => Case::Pascal,\n          \"camelCase\" => Case::Camel,\n          \"snake_case\" => Case::Snake,\n          \"UPPER_SNAKE\" => Case::UpperSnake,\n          \"kebab-case\" => Case::Kebab,\n          \"UPPER-KEBAB-CASE\" => Case::UpperKebab,\n          _ => {\n            bail_span!(self, \"Unknown discriminant case. Possible values are \\\"lowercase\\\", \\\"UPPERCASE\\\", \\\"PascalCase\\\", \\\"camelCase\\\", \\\"snake_case\\\", \\\"UPPER_SNAKE\\\", \\\"kebab-case\\\", or \\\"UPPER-KEBAB-CASE\\\"\")\n          }\n        })\n      ).transpose()?;\n\n      let mut errors = vec![];\n      let mut variants = vec![];\n      for variant in self.variants.iter_mut() {\n        let (fields, is_tuple) = convert_fields(&mut variant.fields, false)?;\n        for field in fields.iter() {\n          if field.js_name == discriminant {\n            errors.push(err_span!(\n              field.name,\n              r#\"field's js_name(\"{}\") and discriminator(\"{}\") conflict\"#,\n              field.js_name,\n              discriminant,\n            ));\n          }\n        }\n        variants.push(NapiStructuredEnumVariant {\n          name: variant.ident.clone(),\n          fields,\n          is_tuple,\n        });\n      }\n      let rust_struct_ident = self.ident.clone();\n      return Diagnostic::from_vec(errors).map(|()| Napi {\n        item: NapiItem::Struct(NapiStruct {\n          name: rust_struct_ident.clone(),\n          js_name,\n          comments: extract_doc_comments(&self.attrs),\n          js_mod: opts.namespace().map(|(m, _)| m.to_owned()),\n          use_nullable: opts.use_nullable(),\n          register_name: get_register_ident(format!(\"{rust_struct_ident}_struct\").as_str()),\n          kind: NapiStructKind::StructuredEnum(NapiStructuredEnum {\n            variants,\n            discriminant: discriminant.to_owned(),\n            discriminant_case,\n            object_from_js: opts.object_from_js(),\n            object_to_js: opts.object_to_js(),\n          }),\n          has_lifetime: false,\n          is_generator: false,\n          is_async_generator: false,\n        }),\n      });\n    }\n\n    let variants = match opts.string_enum() {\n      Some(case) => {\n        let case = case.map(|c| Ok::<Case, Diagnostic>(match c.0.as_str() {\n          \"lowercase\" => Case::Flat,\n          \"UPPERCASE\" => Case::UpperFlat,\n          \"PascalCase\" => Case::Pascal,\n          \"camelCase\" => Case::Camel,\n          \"snake_case\" => Case::Snake,\n          \"UPPER_SNAKE\" => Case::UpperSnake,\n          \"kebab-case\" => Case::Kebab,\n          \"UPPER-KEBAB-CASE\" => Case::UpperKebab,\n          _ => {\n            bail_span!(self, \"Unknown string enum case. Possible values are \\\"lowercase\\\", \\\"UPPERCASE\\\", \\\"PascalCase\\\", \\\"camelCase\\\", \\\"snake_case\\\", \\\"UPPER_SNAKE\\\", \\\"kebab-case\\\", or \\\"UPPER-KEBAB-CASE\\\"\")\n          }\n        })).transpose()?;\n\n        self\n          .variants\n          .iter_mut()\n          .map(|v| {\n            if !matches!(v.fields, syn::Fields::Unit) {\n              bail_span!(\n                v.fields,\n                \"Structured enum is not supported with string enum in #[napi]\"\n              )\n            }\n            if matches!(&v.discriminant, Some((_, _))) {\n              bail_span!(\n                v.fields,\n                \"Literal values are not supported with string enum in #[napi]\"\n              )\n            }\n\n            let val = find_enum_value_and_remove_attribute(v)?.unwrap_or_else(|| {\n              let mut val = v.ident.to_string();\n              if let Some(case) = case {\n                val = to_case(val, case)\n              }\n              val\n            });\n\n            Ok(NapiEnumVariant {\n              name: v.ident.clone(),\n              val: NapiEnumValue::String(val),\n              comments: extract_doc_comments(&v.attrs),\n            })\n          })\n          .collect::<BindgenResult<Vec<NapiEnumVariant>>>()?\n      }\n      None => {\n        let mut last_variant_val: i32 = -1;\n\n        self\n          .variants\n          .iter()\n          .map(|v| {\n            let val = match &v.discriminant {\n              Some((_, expr)) => {\n                let mut symbol = 1;\n                let mut inner_expr = get_expr(expr);\n                if let syn::Expr::Unary(syn::ExprUnary {\n                  attrs: _,\n                  op: syn::UnOp::Neg(_),\n                  expr,\n                }) = inner_expr\n                {\n                  symbol = -1;\n                  inner_expr = expr;\n                }\n\n                match inner_expr {\n                  syn::Expr::Lit(syn::ExprLit {\n                    attrs: _,\n                    lit: syn::Lit::Int(int_lit),\n                  }) => match int_lit.base10_digits().parse::<i32>() {\n                    Ok(v) => symbol * v,\n                    Err(_) => {\n                      bail_span!(\n                        int_lit,\n                        \"enums with #[wasm_bindgen] can only support \\\n                      numbers that can be represented as i32\",\n                      );\n                    }\n                  },\n                  _ => bail_span!(\n                    expr,\n                    \"enums with #[wasm_bindgen] may only have \\\n                  number literal values\",\n                  ),\n                }\n              }\n              None => last_variant_val + 1,\n            };\n\n            last_variant_val = val;\n\n            Ok(NapiEnumVariant {\n              name: v.ident.clone(),\n              val: NapiEnumValue::Number(val),\n              comments: extract_doc_comments(&v.attrs),\n            })\n          })\n          .collect::<BindgenResult<Vec<NapiEnumVariant>>>()?\n      }\n    };\n\n    Ok(Napi {\n      item: NapiItem::Enum(NapiEnum {\n        name: self.ident.clone(),\n        js_name,\n        variants,\n        js_mod: opts.namespace().map(|(m, _)| m.to_owned()),\n        comments: extract_doc_comments(&self.attrs),\n        skip_typescript: opts.skip_typescript().is_some(),\n        register_name: get_register_ident(self.ident.to_string().as_str()),\n        is_string_enum,\n        object_from_js: opts.object_from_js(),\n        object_to_js: opts.object_to_js(),\n      }),\n    })\n  }\n}\n\nimpl ConvertToAST for syn::ItemConst {\n  fn convert_to_ast(&mut self, opts: &BindgenAttrs) -> BindgenResult<Napi> {\n    match self.vis {\n      Visibility::Public(_) => Ok(Napi {\n        item: NapiItem::Const(NapiConst {\n          name: self.ident.clone(),\n          js_name: opts\n            .js_name()\n            .map_or_else(|| self.ident.to_string(), |(s, _)| s.to_string()),\n          type_name: *self.ty.clone(),\n          value: *self.expr.clone(),\n          js_mod: opts.namespace().map(|(m, _)| m.to_owned()),\n          comments: extract_doc_comments(&self.attrs),\n          skip_typescript: opts.skip_typescript().is_some(),\n          register_name: get_register_ident(self.ident.to_string().as_str()),\n        }),\n      }),\n      _ => bail_span!(self, \"only public const allowed\"),\n    }\n  }\n}\n\nimpl ConvertToAST for syn::ItemType {\n  fn convert_to_ast(&mut self, opts: &BindgenAttrs) -> BindgenResult<Napi> {\n    let js_name = match opts.js_name() {\n      Some((name, _)) => name.to_string(),\n      _ => {\n        if !self.generics.params.is_empty() {\n          let types = self\n            .generics\n            .type_params()\n            .map(|param| param.ident.to_string())\n            .collect::<Vec<String>>()\n            .join(\", \");\n          format!(\"{}<{}>\", self.ident, types)\n        } else {\n          self.ident.to_string()\n        }\n      }\n    };\n\n    match self.vis {\n      Visibility::Public(_) => Ok(Napi {\n        item: NapiItem::Type(NapiType {\n          name: self.ident.clone(),\n          js_name,\n          value: *self.ty.clone(),\n          js_mod: opts.namespace().map(|(m, _)| m.to_owned()),\n          comments: extract_doc_comments(&self.attrs),\n          skip_typescript: opts.skip_typescript().is_some(),\n          register_name: get_register_ident(self.ident.to_string().as_str()),\n        }),\n      }),\n      _ => bail_span!(self, \"only public type allowed\"),\n    }\n  }\n}\n"
  },
  {
    "path": "crates/napi/CHANGELOG.md",
    "content": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## [Unreleased]\n\n## [3.8.3](https://github.com/napi-rs/napi-rs/compare/napi-v3.8.2...napi-v3.8.3) - 2026-02-14\n\n### Fixed\n\n- *(napi)* prevent async iterator use-after-free during GC ([#3120](https://github.com/napi-rs/napi-rs/pull/3120))\n\n### Other\n\n- replace `BufferRef` mention with `BufferSlice` ([#3112](https://github.com/napi-rs/napi-rs/pull/3112))\n\n## [3.8.2](https://github.com/napi-rs/napi-rs/compare/napi-v3.8.1...napi-v3.8.2) - 2026-01-08\n\n### Fixed\n\n- *(napi)* memory leak in async fn ([#3089](https://github.com/napi-rs/napi-rs/pull/3089))\n- *(napi)* implement TypeName for ArrayBuffer ([#3087](https://github.com/napi-rs/napi-rs/pull/3087))\n\n## [3.8.1](https://github.com/napi-rs/napi-rs/compare/napi-v3.8.0...napi-v3.8.1) - 2025-12-30\n\n### Fixed\n\n- *(napi)* wasi debug compile error ([#3081](https://github.com/napi-rs/napi-rs/pull/3081))\n\n## [3.8.0](https://github.com/napi-rs/napi-rs/compare/napi-v3.7.1...napi-v3.8.0) - 2025-12-30\n\n### Added\n\n- *(napi)* support any object types in Stream([#2854](https://github.com/napi-rs/napi-rs/pull/2854))\n- *(napi-derive)* add #[napi(async_iterator)] macro attribute ([#3072](https://github.com/napi-rs/napi-rs/pull/3072))\n\n### Fixed\n\n- *(napi)* validate status before copying data in env arraybuffer fallback ([#3077](https://github.com/napi-rs/napi-rs/pull/3077))\n- *(napi)* validate status before copying in remaining TypedArray fallback paths ([#3076](https://github.com/napi-rs/napi-rs/pull/3076))\n- *(napi)* validate status before copying in TypedArray owned ToNapiValue fallback ([#3080](https://github.com/napi-rs/napi-rs/pull/3080))\n- *(napi)* validate status before copying in ArrayBuffer ToNapiValue fallback ([#3079](https://github.com/napi-rs/napi-rs/pull/3079))\n- *(napi)* skip debug buffer tracking on wasm targets ([#3078](https://github.com/napi-rs/napi-rs/pull/3078))\n\n## [3.7.1](https://github.com/napi-rs/napi-rs/compare/napi-v3.7.0...napi-v3.7.1) - 2025-12-19\n\n### Other\n\n- clippy fix for Rust 1.92.0 ([#3058](https://github.com/napi-rs/napi-rs/pull/3058))\n\n## [3.7.0](https://github.com/napi-rs/napi-rs/compare/napi-v3.6.1...napi-v3.7.0) - 2025-12-09\n\n### Added\n\n- *(napi)* provide unsafe as_mut on ArrayBuffer ([#3055](https://github.com/napi-rs/napi-rs/pull/3055))\n- *(napi)* support Promise.resolve/reject ([#3053](https://github.com/napi-rs/napi-rs/pull/3053))\n\n## [3.6.1](https://github.com/napi-rs/napi-rs/compare/napi-v3.6.0...napi-v3.6.1) - 2025-12-02\n\n### Other\n\n- updated the following local packages: napi-sys\n\n## [3.6.0](https://github.com/napi-rs/napi-rs/compare/napi-v3.5.2...napi-v3.6.0) - 2025-12-02\n\n### Added\n\n- *(napi-derive)* add tracing feature for debug logging NAPI function calls ([#3041](https://github.com/napi-rs/napi-rs/pull/3041))\n- *(napi)* add node_api_create_object_with_properties support for enum creation ([#2990](https://github.com/napi-rs/napi-rs/pull/2990))\n\n### Fixed\n\n- *(napi)* bigInt comparison ([#3039](https://github.com/napi-rs/napi-rs/pull/3039))\n- *(napi)* shutdown runtime at env cleanup on windows ([#3026](https://github.com/napi-rs/napi-rs/pull/3026))\n\n### Other\n\n- *(napi)* add back pub NODE_VERSION_* ([#3046](https://github.com/napi-rs/napi-rs/pull/3046))\n- *(sys)* add back non dyn-symbols behavior ([#3045](https://github.com/napi-rs/napi-rs/pull/3045))\n- *(napi)* add Eq and PartialEq trait to BigInt ([#3033](https://github.com/napi-rs/napi-rs/pull/3033))\n- update MSRV in README.md ([#3023](https://github.com/napi-rs/napi-rs/pull/3023))\n\n## [3.5.2](https://github.com/napi-rs/napi-rs/compare/napi-v3.5.1...napi-v3.5.2) - 2025-11-10\n\n### Other\n\n- updated the following local packages: napi-build\n\n## [3.5.1](https://github.com/napi-rs/napi-rs/compare/napi-v3.5.0...napi-v3.5.1) - 2025-11-07\n\n### Fixed\n\n- *(napi)* TypedArraySlice creation ([#3004](https://github.com/napi-rs/napi-rs/pull/3004))\n\n### Other\n\n- *(napi)* Promise and ThreadsafeFunction::call_async don't require tokio ([#2998](https://github.com/napi-rs/napi-rs/pull/2998))\n\n## [3.5.0](https://github.com/napi-rs/napi-rs/compare/napi-v3.4.0...napi-v3.5.0) - 2025-11-06\n\n### Added\n\n- *(sys)* use libloading to load napi symbols at runtime on all platform ([#2996](https://github.com/napi-rs/napi-rs/pull/2996))\n\n### Fixed\n\n- *(napi)* memory leak in PromiseRaw cleanup callback ([#2995](https://github.com/napi-rs/napi-rs/pull/2995))\n\n### Other\n\n- *(napi)* mark tsfn data as pub and split SendableResolver to indent file ([#2992](https://github.com/napi-rs/napi-rs/pull/2992))\n- *(napi)* mark SendableResolver and PromiseRaw as pub ([#2981](https://github.com/napi-rs/napi-rs/pull/2981))\n- add sponsors\n\n## [3.4.0](https://github.com/napi-rs/napi-rs/compare/napi-v3.3.0...napi-v3.4.0) - 2025-10-24\n\n### Added\n\n- *(napi)* add on_abort for AbortSignal ([#2942](https://github.com/napi-rs/napi-rs/pull/2942))\n- *(cli)* add support for loongarch64-unknown-linux-gnu ([#2887](https://github.com/napi-rs/napi-rs/pull/2887))\n\n### Fixed\n\n- *(napi)* stop ref error object in wasm targets ([#2975](https://github.com/napi-rs/napi-rs/pull/2975))\n- *(deps)* update rust crate ctor to v0.6.0 ([#2951](https://github.com/napi-rs/napi-rs/pull/2951))\n- *(napi)* cleanup memory issues ([#2949](https://github.com/napi-rs/napi-rs/pull/2949))\n- *(napi)* node_api_create_external_string_utf16 on wasm ([#2912](https://github.com/napi-rs/napi-rs/pull/2912))\n\n### Other\n\n- *(napi)* bump rust-version ([#2966](https://github.com/napi-rs/napi-rs/pull/2966))\n\n## [3.3.0](https://github.com/napi-rs/napi-rs/compare/napi-v3.2.4...napi-v3.3.0) - 2025-09-08\n\n### Added\n\n- *(napi)* implement from_static on JsStringLatin1 and JsStringUtf16 ([#2908](https://github.com/napi-rs/napi-rs/pull/2908))\n- *(napi)* support external JsStringLatin1 and JsStringUtf16 ([#2898](https://github.com/napi-rs/napi-rs/pull/2898))\n\n### Fixed\n\n- *(napi)* JsStringUtf8 memory leak ([#2911](https://github.com/napi-rs/napi-rs/pull/2911))\n\n### Other\n\n- *(cli)* show NAPI options on new command ([#2892](https://github.com/napi-rs/napi-rs/pull/2892))\n\n## [3.2.4](https://github.com/napi-rs/napi-rs/compare/napi-v3.2.3...napi-v3.2.4) - 2025-08-16\n\n### Other\n\n- *(napi)* extends the Set types interoperability ([#2875](https://github.com/napi-rs/napi-rs/pull/2875))\n\n## [3.2.3](https://github.com/napi-rs/napi-rs/compare/napi-v3.2.2...napi-v3.2.3) - 2025-08-13\n\n### Fixed\n\n- *(napi)* link issue on cargo test --features noop ([#2872](https://github.com/napi-rs/napi-rs/pull/2872))\n- *(deps)* update rust crate ctor to v0.5.0 ([#2865](https://github.com/napi-rs/napi-rs/pull/2865))\n\n## [3.2.2](https://github.com/napi-rs/napi-rs/compare/napi-v3.2.1...napi-v3.2.2) - 2025-08-08\n\n### Fixed\n\n- *(napi)* no need to cleanup thread_local stuff ([#2851](https://github.com/napi-rs/napi-rs/pull/2851))\n\n## [3.2.1](https://github.com/napi-rs/napi-rs/compare/napi-v3.2.0...napi-v3.2.1) - 2025-08-08\n\n### Fixed\n\n- *(napi)* ensure tokio runtime is initialized for dlopen ([#2850](https://github.com/napi-rs/napi-rs/pull/2850))\n- *(napi)* handle the return_if_invalid for Array param ([#2846](https://github.com/napi-rs/napi-rs/pull/2846))\n\n## [3.2.0](https://github.com/napi-rs/napi-rs/compare/napi-v3.1.6...napi-v3.2.0) - 2025-08-07\n\n### Added\n\n- *(napi)* add ScopeGenerator trait ([#2831](https://github.com/napi-rs/napi-rs/pull/2831))\n- make generator an iterator ([#2784](https://github.com/napi-rs/napi-rs/pull/2784))\n- *(napi)* add `Error.cause` support to `napi::Error` ([#2829](https://github.com/napi-rs/napi-rs/pull/2829))\n\n### Fixed\n\n- *(napi)* user_defined_rt can only be used once ([#2841](https://github.com/napi-rs/napi-rs/pull/2841))\n\n## [3.1.6](https://github.com/napi-rs/napi-rs/compare/napi-v3.1.5...napi-v3.1.6) - 2025-08-01\n\n### Fixed\n\n- *(napi)* async task finally is not called ([#2824](https://github.com/napi-rs/napi-rs/pull/2824))\n\n## [3.1.5](https://github.com/napi-rs/napi-rs/compare/napi-v3.1.4...napi-v3.1.5) - 2025-07-31\n\n### Fixed\n\n- *(napi)* relax the lifetime restriction in PromiseRaw callbacks ([#2819](https://github.com/napi-rs/napi-rs/pull/2819))\n\n## [3.1.4](https://github.com/napi-rs/napi-rs/compare/napi-v3.1.3...napi-v3.1.4) - 2025-07-30\n\n### Fixed\n\n- *(napi)* the generic trait rectiction of Env::spawn should be ScopedTask ([#2817](https://github.com/napi-rs/napi-rs/pull/2817))\n\n## [3.1.3](https://github.com/napi-rs/napi-rs/compare/napi-v3.1.2...napi-v3.1.3) - 2025-07-24\n\n### Other\n\n- *(napi)* optimize HashMap allocation in FromNapiValue implementation for HashMap ([#2796](https://github.com/napi-rs/napi-rs/pull/2796))\n\n## [3.1.2](https://github.com/napi-rs/napi-rs/compare/napi-v3.1.1...napi-v3.1.2) - 2025-07-22\n\n### Other\n\n- *(napi)* use Vec with_capacity in FromNapiValue ([#2793](https://github.com/napi-rs/napi-rs/pull/2793))\n\n## [3.1.1](https://github.com/napi-rs/napi-rs/compare/napi-v3.1.0...napi-v3.1.1) - 2025-07-21\n\n### Other\n\n- Revert \"fix(napi): callback should be Fn rather than FnOnce\" ([#2791](https://github.com/napi-rs/napi-rs/pull/2791))\n\n## [3.1.0](https://github.com/napi-rs/napi-rs/compare/napi-v3.0.0...napi-v3.1.0) - 2025-07-21\n\n### Added\n\n- *(napi)* provide ScopedTask to resolve JsValue with lifetime ([#2786](https://github.com/napi-rs/napi-rs/pull/2786))\n\n### Other\n\n- *(napi)* add UnwindSafe and RefUnwindSafe back to AbortSignal and AsyncWorkPromise ([#2789](https://github.com/napi-rs/napi-rs/pull/2789))\n- pin release-plz action\n"
  },
  {
    "path": "crates/napi/Cargo.toml",
    "content": "[package]\nauthors = [\"Nathan Sobo <nathan@github.com>\", \"Yinan Long <lynweklm@gmail.com>\"]\ndescription = \"N-API bindings\"\nedition = \"2021\"\nkeywords = [\"NodeJS\", \"Node\", \"FFI\", \"NAPI\", \"n-api\"]\nlicense = \"MIT\"\nname = \"napi\"\nreadme = \"README.md\"\nrepository = \"https://github.com/napi-rs/napi-rs\"\nrust-version.workspace = true\nversion = \"3.8.3\"\n\n[lib]\ndoctest = false\n\n[package.metadata.docs.rs]\nall-features = true\nrustdoc-args = [\"--cfg\", \"docsrs\"]\n\n[package.metadata.workspaces]\nindependent = true\n\n[features]\nasync = [\"tokio_rt\"]\nchrono_date = [\"chrono\", \"napi5\"]\n# Enable deprecated types and traits for compatibility\ncompat-mode = []\ndefault = [\"napi4\", \"dyn-symbols\"]\ndeferred_trace = [\"napi4\"]\nerror_anyhow = [\"anyhow\"]\nexperimental = [\"napi-sys/experimental\"]\nfull = [\n  \"latin1\",\n  \"napi10\",\n  \"async\",\n  \"serde-json\",\n  \"experimental\",\n  \"chrono_date\",\n]\nobject_indexmap = [\"indexmap\"]\nlatin1 = [\"encoding_rs\"]\nnapi1 = []\nnapi2 = [\"napi1\", \"napi-sys/napi2\"]\nnapi3 = [\"napi2\", \"napi-sys/napi3\"]\nnapi4 = [\"napi3\", \"napi-sys/napi4\"]\nnapi5 = [\"napi4\", \"napi-sys/napi5\"]\nnapi6 = [\"napi5\", \"napi-sys/napi6\"]\nnapi7 = [\"napi6\", \"napi-sys/napi7\"]\nnapi8 = [\"napi7\", \"napi-sys/napi8\"]\nnapi9 = [\"napi8\", \"napi-sys/napi9\"]\nnapi10 = [\"napi9\", \"napi-sys/napi10\"]\nweb_stream = [\"futures-core\", \"tokio-stream\", \"napi4\", \"tokio_rt\"]\nnoop = []\nserde-json = [\"serde\", \"serde_json\"]\nserde-json-ordered = [\"serde-json\", \"serde_json/preserve_order\"]\ntokio_fs = [\"tokio/fs\"]\ntokio_full = [\"tokio/full\"]\ntokio_io_std = [\"tokio/io-std\"]\ntokio_io_util = [\"tokio/io-util\"]\ntokio_macros = [\"tokio/macros\"]\ntokio_net = [\"tokio/net\"]\ntokio_process = [\"tokio/process\"]\ntokio_rt = [\"tokio\", \"napi4\"]\ntokio_signal = [\"tokio/signal\"]\ntokio_sync = [\"tokio/sync\"]\ntokio_test_util = [\"tokio/test-util\"]\ntokio_time = [\"tokio/time\"]\ndyn-symbols = [\"napi-sys/dyn-symbols\"]\n# Add a runtime Node version detection\nnode_version_detect = []\ntracing = [\"dep:tracing\"]\n\n[dependencies]\nbitflags = \"2\"\nctor = \"0.6.0\"\nnohash-hasher = \"0.2.0\"\nrustc-hash = \"2.1.1\"\n\n[dependencies.anyhow]\noptional = true\nversion = \"1\"\n\n[dependencies.napi-sys]\npath = \"../sys\"\nversion = \"3.2.1\"\ndefault-features = false\n\n[dependencies.encoding_rs]\noptional = true\nversion = \"0.8\"\n\n[dependencies.chrono]\noptional = true\nversion = \"0.4\"\n\n[dependencies.tracing]\noptional = true\nversion = \"0.1\"\n\n[target.'cfg(any(all(target_family = \"wasm\", tokio_unstable), not(target_family = \"wasm\")))'.dependencies]\ntokio = { version = \"1\", features = [\n  \"rt\",\n  \"rt-multi-thread\",\n  \"sync\",\n], optional = true }\n\n[target.'cfg(all(target_family = \"wasm\", not(tokio_unstable)))'.dependencies]\ntokio = { version = \"1\", features = [\"rt\", \"sync\"], optional = true }\n\n[dependencies.serde]\noptional = true\nversion = \"1\"\n\n[dependencies.serde_json]\noptional = true\nversion = \"1\"\n\n[dependencies.indexmap]\noptional = true\nversion = \"2\"\n\n[dependencies.futures-core]\noptional = true\nversion = \"0.3\"\n\n[dependencies.tokio-stream]\noptional = true\nversion = \"0.1\"\n\n[dependencies.futures]\nversion = \"0.3\"\n\n[build-dependencies]\nnapi-build = { path = \"../build\", version = \"2.3.1\" }\n"
  },
  {
    "path": "crates/napi/README.md",
    "content": "# napi-rs\n\n> This project was initialized from [xray](https://github.com/atom/xray)\n\nA framework for building compiled `Node.js` add-ons in `Rust` via Node-API. Website: https://napi.rs\n\n<p>\n  <a href=\"https://discord.gg/SpWzYHsKHs\">\n  <img src=\"https://img.shields.io/discord/874290842444111882.svg?logo=discord&style=flat-square\"\n      alt=\"chat\" />\n  </a>\n  <a href=\"https://docs.rs/crate/napi\"><img src=\"https://docs.rs/napi/badge.svg\"></img></a>\n  <a href=\"https://crates.io/crates/napi\"><img src=\"https://img.shields.io/crates/v/napi.svg\"></img></a>\n  <a href=\"https://www.npmjs.com/package/@napi-rs/cli\"><img src=\"https://img.shields.io/npm/v/@napi-rs/cli.svg\"></img></a>\n</p>\n\n## Sponsors\n\n![](https://sponsors.napi.rs/sponsors.svg)\n\n## Platform Support\n\n[![Test & Release](https://github.com/napi-rs/napi-rs/actions/workflows/test-release.yaml/badge.svg)](https://github.com/napi-rs/napi-rs/actions/workflows/test-release.yaml)\n[![Address Sanitizer](https://github.com/napi-rs/napi-rs/actions/workflows/asan.yml/badge.svg)](https://github.com/napi-rs/napi-rs/actions/workflows/asan.yml)\n[![Memory Leak Detect](https://github.com/napi-rs/napi-rs/actions/workflows/memory-test.yml/badge.svg)](https://github.com/napi-rs/napi-rs/actions/workflows/memory-test.yml)\n\n## MSRV\n\n**Rust** `1.88.0`\n\n|                       | node12 | node14 | node16 | node18 | node20 | node22 |\n| --------------------- | ------ | ------ | ------ | ------ | ------ | ------ |\n| Windows x64           | ✓      | ✓      | ✓      | ✓      | ✓      | ✓      |\n| Windows x86           | ✓      | ✓      | ✓      | ✓      | ✓      | ✓      |\n| Windows arm64         | ✓      | ✓      | ✓      | ✓      | ✓      | ✓      |\n| macOS x64             | ✓      | ✓      | ✓      | ✓      | ✓      | ✓      |\n| macOS aarch64         | ✓      | ✓      | ✓      | ✓      | ✓      | ✓      |\n| Linux x64 gnu         | ✓      | ✓      | ✓      | ✓      | ✓      | ✓      |\n| Linux x64 musl        | ✓      | ✓      | ✓      | ✓      | ✓      | ✓      |\n| Linux aarch64 gnu     | ✓      | ✓      | ✓      | ✓      | ✓      | ✓      |\n| Linux aarch64 musl    | ✓      | ✓      | ✓      | ✓      | ✓      | ✓      |\n| Linux arm gnueabihf   | ✓      | ✓      | ✓      | ✓      | ✓      | ✓      |\n| Linux arm muslebihf   | ✓      | ✓      | ✓      | ✓      | ✓      | ✓      |\n| Linux powerpc64le gnu | ✓      | ✓      | ✓      | ✓      | ✓      | ✓      |\n| Linux s390x gnu       | ✓      | ✓      | ✓      | ✓      | ✓      | ✓      |\n| Linux loong64 gnu     | N/A    | N/A    | N/A    | ✓      | ✓      | ✓      |\n| Linux riscv64 gnu     | N/A    | N/A    | ✓      | ✓      | ✓      | ✓      |\n| Linux aarch64 android | ✓      | ✓      | ✓      | ✓      | ✓      | ✓      |\n| Linux armv7 android   | ✓      | ✓      | ✓      | ✓      | ✓      | ✓      |\n| FreeBSD x64           | ✓      | ✓      | ✓      | ✓      | ✓      | ✓      |\n\nThis library depends on Node-API and requires `Node@10.0.0` or later.\n\nWe already have some packages written by `napi-rs`: [node-rs](https://github.com/napi-rs/node-rs)\n\nOne nice feature is that this crate allows you to build add-ons purely with the `Rust/JavaScript` toolchain and without involving `node-gyp`.\n\n## Taste\n\n> You can start from [package-template](https://github.com/napi-rs/package-template) to play with `napi-rs`\n\n### Define JavaScript functions\n\n```rust\nuse napi::bindgen_prelude::*;\nuse napi_derive::napi;\n\n/// module registration is done by the runtime, no need to explicitly do it now.\n#[napi]\npub fn fibonacci(n: u32) -> u32 {\n  match n {\n    1 | 2 => 1,\n    _ => fibonacci(n - 1) + fibonacci(n - 2),\n  }\n}\n\n/// use `Fn`, `FnMut` or `FnOnce` traits to defined JavaScript callbacks\n/// the return type of callbacks can only be `Result`.\n#[napi]\npub fn get_cwd<T: Fn(String) -> Result<()>>(callback: T) {\n  callback(\n    std::env::current_dir()\n      .unwrap()\n      .to_string_lossy()\n      .to_string(),\n  )\n  .unwrap();\n}\n\n/// or, define the callback signature in where clause\n#[napi]\npub fn test_callback<T>(callback: T) -> Result<()>\nwhere\n  T: Fn(String) -> Result<()>,\n{\n  callback(std::env::current_dir()?.to_string_lossy().to_string())\n}\n\n/// async fn, require `async` feature enabled.\n/// [dependencies]\n/// napi = {version=\"2\", features=[\"async\"]}\n#[napi]\npub async fn read_file_async(path: String) -> Result<Buffer> {\n  Ok(tokio::fs::read(path).await?.into())\n}\n```\n\nmore examples at [examples](./examples/napi)\n\n## Building\n\nThis repository is a `Cargo` crate. Any napi-based add-on should contain `Cargo.toml` to make it a Cargo crate.\n\nIn your `Cargo.toml` you need to set the `crate-type` to `\"cdylib\"` so that cargo builds a C-style shared library that can be dynamically loaded by the Node executable. You'll also need to add this crate as a dependency.\n\n```toml\n[package]\nname = \"awesome\"\n\n[lib]\ncrate-type = [\"cdylib\"]\n\n[dependencies]\nnapi = \"3\"\nnapi-derive = \"3\"\n\n[build-dependencies]\nnapi-build = \"1\"\n```\n\nAnd create `build.rs` in your own project:\n\n```rust\n// build.rs\nextern crate napi_build;\n\nfn main() {\n  napi_build::setup();\n}\n```\n\nSo far, the `napi` build script has only been tested on `macOS` `Linux` `Windows x64 MSVC` and `FreeBSD`.\n\nInstall the `@napi-rs/cli` to help you build your `Rust` codes and copy `Dynamic lib` file to `.node` file in case you can `require` it in your program.\n\n```js\n{\n  \"package\": \"awesome-package\",\n  \"devDependencies\": {\n    \"@napi-rs/cli\": \"^1.0.0\"\n  },\n  \"napi\": {\n    \"name\": \"jarvis\" // <----------- Config the name of native addon, or the napi command will use the name of `Cargo.toml` for the binary file name.\n  },\n  \"scripts\": {\n    \"build\": \"napi build --release\",\n    \"build:debug\": \"napi build\"\n  }\n}\n```\n\nThen you can require your native binding:\n\n```js\nrequire('./jarvis.node')\n```\n\nThe `module_name` would be your `package` name in your `Cargo.toml`.\n\n`xxx => ./xxx.node`\n\n`xxx-yyy => ./xxx_yyy.node`\n\nYou can also copy `Dynamic lib` file to an appointed location:\n\n```bash\nnapi build [--release] ./dll\nnapi build [--release] ./artifacts\n```\n\nThere are [documents](./cli) which contains more details about the `@napi-rs/cli` usage.\n\n## Testing\n\nBecause libraries that depend on this crate must be loaded into a Node executable in order to resolve symbols, all tests are written in JavaScript in the `test_module` subdirectory.\n\nTo run tests:\n\n```sh\nyarn build:test\nyarn test\n```\n\n## Related projects\n\n- [neon](https://www.neon-bindings.com)\n- [node-bindgen](https://github.com/infinyon/node-bindgen)\n\n## Features table\n\n| Rust Type                | Node Type           | [NAPI Version](https://nodejs.org/api/n-api.html#n_api_node_api_version_matrix) | Minimal Node version | Enable by `napi` feature |\n| ------------------------ | ------------------- | ------------------------------------------------------------------------------- | -------------------- | ------------------------ |\n| u32                      | Number              | 1                                                                               | v8.0.0               |\n| i32/i64                  | Number              | 1                                                                               | v8.0.0               |\n| f64                      | Number              | 1                                                                               | v8.0.0               |\n| bool                     | Boolean             | 1                                                                               | v8.0.0               |\n| String/&'a str           | String              | 1                                                                               | v8.0.0               |\n| Latin1String             | String              | 1                                                                               | v8.0.0               | latin1                   |\n| UTF16String              | String              | 1                                                                               | v8.0.0               |\n| Object                   | Object              | 1                                                                               | v8.0.0               |\n| serde_json::Map          | Object              | 1                                                                               | v8.0.0               | serde-json               |\n| serde_json::Value        | any                 | 1                                                                               | v8.0.0               | serde-json               |\n| Array                    | Array<any>          | 1                                                                               | v8.0.0               |\n| Vec<T>                   | Array<T>            | 1                                                                               | v8.0.0               |\n| Buffer                   | Buffer              | 1                                                                               | v8.0.0               |\n| External<T>              | External<T>         | 1                                                                               | v8.0.0               |                          |\n| Null                     | null                | 1                                                                               | v8.0.0               |\n| Undefined/()             | undefined           | 1                                                                               | v8.0.0               |\n| Result<()>               | Error               | 1                                                                               | v8.0.0               |\n| T: Fn(...) -> Result<T>  | Function            | 1                                                                               | v8.0.0               |\n| Async/Future             | Promise<T>          | 4                                                                               | v10.6.0              | async                    |\n| AsyncTask                | Promise<T>          | 1                                                                               | v8.5.0               |\n| JsGlobal                 | global              | 1                                                                               | v8.0.0               |\n| JsSymbol                 | Symbol              | 1                                                                               | v8.0.0               |\n| Int8Array/Uint8Array ... | TypedArray          | 1                                                                               | v8.0.0               |\n| JsFunction               | threadsafe function | 4                                                                               | v10.6.0              | napi4                    |\n| BigInt                   | BigInt              | 6                                                                               | v10.7.0              | napi6                    |\n"
  },
  {
    "path": "crates/napi/build.rs",
    "content": "fn main() {\n  println!(\"cargo::rustc-check-cfg=cfg(tokio_unstable)\");\n  let target_os = std::env::var(\"CARGO_CFG_TARGET_OS\").unwrap();\n  let target_env = std::env::var(\"CARGO_CFG_TARGET_ENV\").unwrap();\n  if target_os == \"windows\" && target_env == \"gnu\" {\n    napi_build::setup();\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/async_cleanup_hook.rs",
    "content": "use std::mem;\n\nuse crate::{sys, Status};\n\n/// Notice\n/// The hook will be removed if `AsyncCleanupHook` was `dropped`.\n/// If you want keep the hook until node process exited, call the `AsyncCleanupHook::forget`.\n#[repr(transparent)]\npub struct AsyncCleanupHook(pub(crate) sys::napi_async_cleanup_hook_handle);\n\nimpl AsyncCleanupHook {\n  /// Safe to forget it.\n  /// Things will be cleanup before process exited.\n  pub fn forget(self) {\n    mem::forget(self);\n  }\n}\n\nimpl Drop for AsyncCleanupHook {\n  fn drop(&mut self) {\n    let status = unsafe { sys::napi_remove_async_cleanup_hook(self.0) };\n    assert!(\n      status == sys::Status::napi_ok,\n      \"Delete async cleanup hook failed: {}\",\n      Status::from(status)\n    );\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/async_work.rs",
    "content": "use std::cell::Cell;\nuse std::marker::PhantomData;\nuse std::mem;\nuse std::os::raw::c_void;\nuse std::panic::UnwindSafe;\nuse std::ptr;\nuse std::rc::Rc;\n\nuse crate::bindgen_runtime::JsObjectValue;\nuse crate::{\n  bindgen_runtime::{PromiseRaw, ToNapiValue},\n  check_status, sys, Env, Error, JsError, Result, ScopedTask, Status,\n};\n\nstruct AsyncWork<'task, T: ScopedTask<'task>> {\n  inner_task: T,\n  deferred: sys::napi_deferred,\n  value: mem::MaybeUninit<Result<T::Output>>,\n  napi_async_work: sys::napi_async_work,\n  status: Rc<Cell<u8>>,\n}\n\npub struct AsyncWorkPromise<T> {\n  pub(crate) napi_async_work: sys::napi_async_work,\n  raw_promise: sys::napi_value,\n  env: sys::napi_env,\n  /// share with AsyncWork\n  /// 0: not started\n  /// 1: completed\n  /// 2: canceled\n  pub(crate) status: Rc<Cell<u8>>,\n  _phantom: PhantomData<T>,\n}\n\nimpl<T> UnwindSafe for AsyncWorkPromise<T> {}\nimpl<T> std::panic::RefUnwindSafe for AsyncWorkPromise<T> {}\n\nimpl<T> AsyncWorkPromise<T> {\n  pub fn promise_object<'env>(&self) -> PromiseRaw<'env, T> {\n    PromiseRaw::new(self.env, self.raw_promise)\n  }\n\n  pub fn cancel(&mut self) -> Result<()> {\n    // must be happened in the main thread, relaxed is enough\n    self.status.set(2);\n    check_status!(\n      unsafe { sys::napi_cancel_async_work(self.env, self.napi_async_work) },\n      \"Cancel async work failed\"\n    )\n  }\n}\n\npub fn run<'task, T: ScopedTask<'task>>(\n  env: sys::napi_env,\n  task: T,\n  abort_status: Option<Rc<Cell<u8>>>,\n) -> Result<AsyncWorkPromise<T::JsValue>> {\n  let mut undefined = ptr::null_mut();\n  check_status!(\n    unsafe { sys::napi_get_undefined(env, &mut undefined) },\n    \"Get undefined failed in async_work::run\"\n  )?;\n  let mut raw_promise = ptr::null_mut();\n  let mut deferred = ptr::null_mut();\n  check_status!(\n    unsafe { sys::napi_create_promise(env, &mut deferred, &mut raw_promise) },\n    \"Create promise failed in async_work::run\"\n  )?;\n  let task_status = abort_status.unwrap_or_else(|| Rc::new(Cell::new(0)));\n  let result = Box::leak(Box::new(AsyncWork {\n    inner_task: task,\n    deferred,\n    value: mem::MaybeUninit::uninit(),\n    napi_async_work: ptr::null_mut(),\n    status: task_status.clone(),\n  }));\n  check_status!(\n    unsafe {\n      sys::napi_create_async_work(\n        env,\n        raw_promise,\n        undefined,\n        Some(execute::<T>),\n        Some(complete::<T>),\n        (result as *mut AsyncWork<T>).cast(),\n        &mut result.napi_async_work,\n      )\n    },\n    \"Create async work failed in async_work::run\"\n  )?;\n  check_status!(\n    unsafe { sys::napi_queue_async_work(env, result.napi_async_work) },\n    \"Queue async work failed in async_work::run\"\n  )?;\n  Ok(AsyncWorkPromise {\n    napi_async_work: result.napi_async_work,\n    raw_promise,\n    env,\n    status: task_status,\n    _phantom: PhantomData,\n  })\n}\n\nunsafe impl<'task, T: ScopedTask<'task> + Send> Send for AsyncWork<'task, T> {}\nunsafe impl<'task, T: ScopedTask<'task> + Sync> Sync for AsyncWork<'task, T> {}\n\n/// env here is the same with the one in `CallContext`.\n/// So it actually could do nothing here, because `execute` function is called in the other thread mostly.\nunsafe extern \"C\" fn execute<'task, T: ScopedTask<'task>>(_env: sys::napi_env, data: *mut c_void) {\n  let work = Box::leak(unsafe { Box::from_raw(data as *mut AsyncWork<T>) });\n  let value = work.inner_task.compute();\n  work.value.write(value);\n}\n\nunsafe extern \"C\" fn complete<'task, T: ScopedTask<'task>>(\n  env: sys::napi_env,\n  status: sys::napi_status,\n  data: *mut c_void,\n) {\n  if let Err(e) = complete_impl::<T>(env, status, data) {\n    let js_err = JsError::from(e);\n    unsafe { js_err.throw_into(env) };\n  }\n}\n\nfn complete_impl<'task, T: ScopedTask<'task>>(\n  env: sys::napi_env,\n  status: sys::napi_status,\n  data: *mut c_void,\n) -> Result<()> {\n  let mut work = unsafe { Box::from_raw(data as *mut AsyncWork<T>) };\n  let napi_async_work = mem::replace(&mut work.napi_async_work, ptr::null_mut());\n  let deferred = mem::replace(&mut work.deferred, ptr::null_mut());\n  if status == sys::Status::napi_cancelled {\n    const ABORT_ERROR_NAME: &str = \"AbortError\";\n    let wrapped_env = Env::from_raw(env);\n    let mut error =\n      wrapped_env.create_error(Error::new(Status::Cancelled, ABORT_ERROR_NAME.to_owned()))?;\n    error.set_named_property(\"name\", ABORT_ERROR_NAME)?;\n    check_status!(\n      unsafe { sys::napi_reject_deferred(env, deferred, error.0.value) },\n      \"Reject AbortError failed\"\n    )?;\n  } else {\n    let value_ptr = unsafe { work.value.assume_init() };\n    let value = match value_ptr {\n      Ok(output) => work.inner_task.resolve(\n        // SAFETY: `Env` is long lived\n        unsafe { std::mem::transmute::<&Env, &'task Env>(&Env::from_raw(env)) },\n        output,\n      ),\n      Err(e) => work.inner_task.reject(\n        // SAFETY: `Env` is long lived\n        unsafe { std::mem::transmute::<&Env, &'task Env>(&Env::from_raw(env)) },\n        e,\n      ),\n    };\n    if work.status.get() != 2 {\n      match check_status!(status)\n        .and_then(move |_| value)\n        .and_then(|v| unsafe { ToNapiValue::to_napi_value(env, v) })\n      {\n        Ok(v) => {\n          check_status!(\n            unsafe { sys::napi_resolve_deferred(env, deferred, v) },\n            \"Resolve promise failed\"\n          )?;\n        }\n        Err(e) => {\n          check_status!(\n            unsafe { sys::napi_reject_deferred(env, deferred, JsError::from(e).into_value(env)) },\n            \"Reject promise failed\"\n          )?;\n        }\n      };\n    }\n    work.status.set(1);\n  }\n  work.inner_task.finally(Env::from_raw(env))?;\n  check_status!(\n    unsafe { sys::napi_delete_async_work(env, napi_async_work) },\n    \"Delete async work failed\"\n  )?;\n  Ok(())\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/async_iterator.rs",
    "content": "use std::ffi::CStr;\nuse std::future::Future;\nuse std::ptr;\n\nuse crate::{\n  bindgen_runtime::{FromNapiValue, Object, ToNapiValue, Unknown},\n  check_status, check_status_or_throw, sys, Env, JsError, Value,\n};\n\n/// Hidden property name for storing the instance reference in async generators.\n/// This prevents premature garbage collection of the instance while the async generator is in use.\n/// See: https://github.com/napi-rs/napi-rs/issues/3119\nconst INSTANCE_REF_KEY: &CStr = c\"[[InstanceRef]]\";\n\n/// Implement a Iterator for the JavaScript Class.\n/// This feature is an experimental feature and is not yet stable.\npub trait AsyncGenerator {\n  type Yield: ToNapiValue + Send + 'static;\n  type Next: FromNapiValue;\n  type Return: FromNapiValue;\n\n  /// Handle the `AsyncGenerator.next()`\n  /// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncGenerator/next>\n  fn next(\n    &mut self,\n    value: Option<Self::Next>,\n  ) -> impl Future<Output = crate::Result<Option<Self::Yield>>> + Send + 'static;\n\n  #[allow(unused_variables)]\n  /// Implement complete to handle the `AsyncGenerator.return()`\n  /// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncGenerator/return>\n  fn complete(\n    &mut self,\n    value: Option<Self::Return>,\n  ) -> impl Future<Output = crate::Result<Option<Self::Yield>>> + Send + 'static {\n    async move { Ok(None) }\n  }\n\n  #[allow(unused_variables)]\n  /// Implement catch to handle the `AsyncGenerator.throw()`\n  /// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncGenerator/throw>\n  fn catch(\n    &mut self,\n    env: Env,\n    value: Unknown,\n  ) -> impl Future<Output = crate::Result<Option<Self::Yield>>> + Send + 'static {\n    let err = value.into();\n    async move { Err(err) }\n  }\n}\n\n#[allow(clippy::not_unsafe_ptr_arg_deref)]\npub fn create_async_iterator<T: AsyncGenerator>(\n  env: sys::napi_env,\n  instance: sys::napi_value,\n  generator_ptr: *mut T,\n) {\n  let mut global = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe { sys::napi_get_global(env, &mut global) },\n    \"Get global object failed\",\n  );\n  let mut symbol_object = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_get_named_property(env, global, c\"Symbol\".as_ptr().cast(), &mut symbol_object)\n    },\n    \"Get global object failed\",\n  );\n  let mut iterator_symbol = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_get_named_property(\n        env,\n        symbol_object,\n        c\"asyncIterator\".as_ptr().cast(),\n        &mut iterator_symbol,\n      )\n    },\n    \"Get Symbol.asyncIterator failed\",\n  );\n  let mut generator_function = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_create_function(\n        env,\n        c\"AsyncIterator\".as_ptr().cast(),\n        8,\n        Some(symbol_async_generator::<T>),\n        generator_ptr.cast(),\n        &mut generator_function,\n      )\n    },\n    \"Create asyncIterator function failed\",\n  );\n  check_status_or_throw!(\n    env,\n    unsafe { sys::napi_set_property(env, instance, iterator_symbol, generator_function) },\n    \"Failed to set Symbol.asyncIterator on class instance\",\n  );\n}\n\n#[doc(hidden)]\npub unsafe extern \"C\" fn symbol_async_generator<T: AsyncGenerator>(\n  env: sys::napi_env,\n  info: sys::napi_callback_info,\n) -> sys::napi_value {\n  let mut this = ptr::null_mut();\n  let mut argv: [sys::napi_value; 1] = [ptr::null_mut()];\n  let mut argc = 0;\n  let mut generator_ptr = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_get_cb_info(\n        env,\n        info,\n        &mut argc,\n        argv.as_mut_ptr(),\n        &mut this,\n        &mut generator_ptr,\n      )\n    },\n    \"Get callback info from generator function failed\"\n  );\n  let mut generator_object = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe { sys::napi_create_object(env, &mut generator_object) },\n    \"Create Generator object failed\"\n  );\n  let mut next_function = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_create_function(\n        env,\n        c\"next\".as_ptr().cast(),\n        4,\n        Some(generator_next::<T>),\n        generator_ptr,\n        &mut next_function,\n      )\n    },\n    \"Create next function failed\"\n  );\n  let mut return_function = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_create_function(\n        env,\n        c\"return\".as_ptr().cast(),\n        6,\n        Some(generator_return::<T>),\n        generator_ptr,\n        &mut return_function,\n      )\n    },\n    \"Create next function failed\"\n  );\n  let mut throw_function = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_create_function(\n        env,\n        c\"throw\".as_ptr().cast(),\n        5,\n        Some(generator_throw::<T>),\n        generator_ptr,\n        &mut throw_function,\n      )\n    },\n    \"Create next function failed\"\n  );\n\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_set_named_property(\n        env,\n        generator_object,\n        c\"next\".as_ptr().cast(),\n        next_function,\n      )\n    },\n    \"Set next function on Generator object failed\"\n  );\n\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_set_named_property(\n        env,\n        generator_object,\n        c\"return\".as_ptr().cast(),\n        return_function,\n      )\n    },\n    \"Set return function on Generator object failed\"\n  );\n\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_set_named_property(\n        env,\n        generator_object,\n        c\"throw\".as_ptr().cast(),\n        throw_function,\n      )\n    },\n    \"Set throw function on Generator object failed\"\n  );\n\n  let mut generator_state = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe { sys::napi_get_boolean(env, false, &mut generator_state) },\n    \"Create generator state failed\"\n  );\n\n  // The generator object needs to keep the instance alive while iteration is in progress.\n  // Without this reference, the instance can be garbage collected while the generator\n  // is still being used, leading to use-after-free when accessing generator_ptr.\n  let mut instance_ref = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe { sys::napi_create_reference(env, this, 1, &mut instance_ref) },\n    \"Failed to create reference to instance in async generator\"\n  );\n\n  // Store the reference as an external value so it can be cleaned up later\n  let mut ref_holder = ptr::null_mut();\n  unsafe extern \"C\" fn cleanup_instance_ref(\n    _env: sys::napi_env,\n    data: *mut std::ffi::c_void,\n    _hint: *mut std::ffi::c_void,\n  ) {\n    let instance_ref = data as sys::napi_ref;\n    if !instance_ref.is_null() {\n      // Delete the reference when the generator is garbage collected\n      unsafe { sys::napi_delete_reference(_env, instance_ref) };\n    }\n  }\n\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_create_external(\n        env,\n        instance_ref.cast(),\n        Some(cleanup_instance_ref),\n        ptr::null_mut(),\n        &mut ref_holder,\n      )\n    },\n    \"Failed to create external for instance reference\"\n  );\n\n  // Store as a hidden property on the generator object\n  // Use napi_define_properties with default attributes (non-enumerable, non-writable, non-configurable)\n  // to make this property truly hidden from user code\n  let properties = [sys::napi_property_descriptor {\n    utf8name: INSTANCE_REF_KEY.as_ptr().cast(),\n    name: ptr::null_mut(),\n    method: None,\n    getter: None,\n    setter: None,\n    value: ref_holder,\n    attributes: sys::PropertyAttributes::default,\n    data: ptr::null_mut(),\n  }];\n\n  check_status_or_throw!(\n    env,\n    unsafe { sys::napi_define_properties(env, generator_object, 1, properties.as_ptr()) },\n    \"Failed to define instance reference property on generator object\"\n  );\n\n  generator_object\n}\n\nextern \"C\" fn generator_next<T: AsyncGenerator>(\n  env: sys::napi_env,\n  info: sys::napi_callback_info,\n) -> sys::napi_value {\n  match generator_next_fn::<T>(env, info) {\n    Ok(value) => value,\n    Err(e) => unsafe {\n      let js_error: JsError = e.into();\n      js_error.throw_into(env);\n      ptr::null_mut()\n    },\n  }\n}\n\nfn generator_next_fn<T: AsyncGenerator>(\n  env: sys::napi_env,\n  info: sys::napi_callback_info,\n) -> crate::Result<sys::napi_value> {\n  let mut this = ptr::null_mut();\n  let mut argv: [sys::napi_value; 1] = [ptr::null_mut()];\n  let mut argc = 1;\n  let mut generator_ptr = ptr::null_mut();\n  check_status!(\n    unsafe {\n      sys::napi_get_cb_info(\n        env,\n        info,\n        &mut argc,\n        argv.as_mut_ptr(),\n        &mut this,\n        &mut generator_ptr,\n      )\n    },\n    \"Get callback info from generator function failed\"\n  )?;\n\n  let g = unsafe { Box::leak(Box::from_raw(generator_ptr as *mut T)) };\n  let item = if argc == 0 {\n    g.next(None)\n  } else {\n    g.next(match unsafe { T::Next::from_napi_value(env, argv[0]) } {\n      Ok(input) => Some(input),\n      Err(e) => {\n        unsafe {\n          sys::napi_throw_error(\n            env,\n            format!(\"{}\", e.status).as_ptr().cast(),\n            e.reason.as_ptr().cast(),\n          )\n        };\n        None\n      }\n    })\n  };\n\n  let env = Env::from_raw(env);\n  let promise = env.spawn_future_with_callback(item, |env, value| {\n    if let Some(v) = value {\n      let mut obj = Object::new(env)?;\n      obj.set(\"value\", v)?;\n      obj.set(\"done\", false)?;\n      Ok(obj)\n    } else {\n      let mut obj = Object::new(env)?;\n      obj.set(\"value\", ())?;\n      obj.set(\"done\", true)?;\n      Ok(obj)\n    }\n  })?;\n  Ok(promise.inner)\n}\n\nextern \"C\" fn generator_return<T: AsyncGenerator>(\n  env: sys::napi_env,\n  info: sys::napi_callback_info,\n) -> sys::napi_value {\n  let mut this = ptr::null_mut();\n  let mut argv: [sys::napi_value; 1] = [ptr::null_mut()];\n  let mut argc = 1;\n  let mut generator_ptr = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_get_cb_info(\n        env,\n        info,\n        &mut argc,\n        argv.as_mut_ptr(),\n        &mut this,\n        &mut generator_ptr,\n      )\n    },\n    \"Get callback info from generator function failed\"\n  );\n\n  let g = unsafe { Box::leak(Box::from_raw(generator_ptr as *mut T)) };\n  match Env::from_raw(env).spawn_future_with_callback(\n    g.complete(if argc == 0 {\n      None\n    } else {\n      Some(match unsafe { T::Return::from_napi_value(env, argv[0]) } {\n        Ok(input) => input,\n        Err(e) => {\n          unsafe {\n            sys::napi_throw_error(\n              env,\n              format!(\"{}\", e.status).as_ptr().cast(),\n              e.reason.as_ptr().cast(),\n            )\n          };\n          return ptr::null_mut();\n        }\n      })\n    }),\n    |env, value| {\n      let mut obj = Object::new(env)?;\n      // Per async iterator protocol, return() must ALWAYS set done: true\n      // The value (if any) is the final value, but iteration is complete\n      if let Some(v) = value {\n        obj.set(\"value\", v)?;\n      } else {\n        obj.set(\"value\", ())?;\n      }\n      obj.set(\"done\", true)?;\n      Ok(obj)\n    },\n  ) {\n    Ok(promise) => promise.inner,\n    Err(e) => {\n      unsafe {\n        sys::napi_throw_error(\n          env,\n          e.status.as_ref().as_ptr().cast(),\n          e.reason.as_ptr().cast(),\n        );\n      }\n      ptr::null_mut()\n    }\n  }\n}\n\nextern \"C\" fn generator_throw<T: AsyncGenerator>(\n  env: sys::napi_env,\n  info: sys::napi_callback_info,\n) -> sys::napi_value {\n  let mut this = ptr::null_mut();\n  let mut argv: [sys::napi_value; 1] = [ptr::null_mut()];\n  let mut argc = 1;\n  let mut generator_ptr = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_get_cb_info(\n        env,\n        info,\n        &mut argc,\n        argv.as_mut_ptr(),\n        &mut this,\n        &mut generator_ptr,\n      )\n    },\n    \"Get callback info from generator function failed\"\n  );\n\n  let g = unsafe { Box::leak(Box::from_raw(generator_ptr as *mut T)) };\n  let caught = if argc == 0 {\n    let mut undefined = ptr::null_mut();\n    check_status_or_throw!(\n      env,\n      unsafe { sys::napi_get_undefined(env, &mut undefined) },\n      \"Get undefined failed\"\n    );\n    g.catch(\n      Env(env),\n      Unknown(\n        Value {\n          env,\n          value: undefined,\n          value_type: crate::ValueType::Undefined,\n        },\n        std::marker::PhantomData,\n      ),\n    )\n  } else {\n    g.catch(\n      Env(env),\n      Unknown(\n        Value {\n          env,\n          value: argv[0],\n          value_type: crate::ValueType::Unknown,\n        },\n        std::marker::PhantomData,\n      ),\n    )\n  };\n  match Env::from_raw(env).spawn_future_with_callback(caught, |env, value| {\n    let mut obj = Object::new(env)?;\n    obj.set(\"value\", value)?;\n    obj.set(\"done\", false)?;\n    Ok(obj)\n  }) {\n    Ok(promise) => promise.inner,\n    Err(e) => {\n      unsafe {\n        sys::napi_throw_error(\n          env,\n          e.status.as_ref().as_ptr().cast(),\n          e.reason.as_ptr().cast(),\n        );\n      }\n      ptr::null_mut()\n    }\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/callback_info.rs",
    "content": "use std::cell::Cell;\nuse std::ffi::c_void;\nuse std::ptr;\nuse std::rc::Rc;\n\nuse crate::{bindgen_prelude::*, check_status, iterator::ScopedGenerator};\n\nthread_local! {\n  #[doc(hidden)]\n  /// Determined is `constructor` called from Class `factory`\n  pub static ___CALL_FROM_FACTORY: Cell<bool> = const { Cell::new(false) };\n}\n\n#[repr(transparent)]\nstruct EmptyStructPlaceholder(u8);\n\n#[doc(hidden)]\npub struct CallbackInfo<const N: usize> {\n  env: sys::napi_env,\n  pub this: sys::napi_value,\n  pub args: [sys::napi_value; N],\n  this_reference: sys::napi_ref,\n}\n\nimpl<const N: usize> CallbackInfo<N> {\n  #[allow(clippy::not_unsafe_ptr_arg_deref)]\n  pub fn new(\n    env: sys::napi_env,\n    callback_info: sys::napi_callback_info,\n    required_argc: Option<usize>,\n    // for async class factory, the `this` will be used after the async call\n    // so we must create reference for it and use it after async resolved\n    use_after_async: bool,\n  ) -> Result<Self> {\n    let mut this = ptr::null_mut();\n    let mut args = [ptr::null_mut(); N];\n    let mut argc = N;\n\n    unsafe {\n      check_status!(\n        sys::napi_get_cb_info(\n          env,\n          callback_info,\n          &mut argc,\n          args.as_mut_ptr(),\n          &mut this,\n          ptr::null_mut(),\n        ),\n        \"Failed to initialize napi function call.\"\n      )?;\n    };\n\n    if let Some(required_argc) = required_argc {\n      if required_argc > argc {\n        return Err(Error::new(\n          Status::InvalidArg,\n          format!(\n            \"{} arguments required by received {}.\",\n            required_argc, &argc\n          ),\n        ));\n      }\n    }\n\n    let mut this_reference = ptr::null_mut();\n\n    if use_after_async {\n      check_status!(\n        unsafe { sys::napi_create_reference(env, this, 1, &mut this_reference) },\n        \"Failed to create reference for `this` in async class factory\"\n      )?;\n    }\n\n    Ok(Self {\n      env,\n      this,\n      args,\n      this_reference,\n    })\n  }\n\n  pub fn get_arg(&self, index: usize) -> sys::napi_value {\n    self.args[index]\n  }\n\n  pub fn this(&self) -> sys::napi_value {\n    self.this\n  }\n\n  fn _construct<const IsEmptyStructHint: bool, T: ObjectFinalize + 'static>(\n    &self,\n    js_name: &str,\n    obj: T,\n  ) -> Result<(sys::napi_value, *mut T)> {\n    let obj = Box::new(obj);\n    let this = self.this();\n    let mut value_ref = Box::into_raw(obj);\n    // for empty struct like `#[napi] struct A;`, the `value_ref` will be `0x1`\n    // and it will be overwritten by the others instance of the same class\n    if IsEmptyStructHint || value_ref as usize == 0x1 {\n      value_ref = Box::into_raw(Box::new(EmptyStructPlaceholder(0))).cast();\n    }\n    let mut object_ref = ptr::null_mut();\n    let initial_finalize: Box<dyn FnOnce()> = Box::new(|| {});\n    let finalize_callbacks_ptr = Rc::into_raw(Rc::new(Cell::new(Box::into_raw(initial_finalize))));\n    unsafe {\n      check_status!(\n        sys::napi_wrap(\n          self.env,\n          this,\n          value_ref.cast(),\n          Some(raw_finalize_unchecked::<T>),\n          ptr::null_mut(),\n          &mut object_ref\n        ),\n        \"Failed to initialize class `{js_name}`\",\n      )?;\n    };\n\n    Reference::<T>::add_ref(\n      self.env,\n      value_ref.cast(),\n      (value_ref.cast(), object_ref, finalize_callbacks_ptr),\n    );\n    Ok((this, value_ref))\n  }\n\n  pub fn construct<const IsEmptyStructHint: bool, T: ObjectFinalize + 'static>(\n    &self,\n    js_name: &str,\n    obj: T,\n  ) -> Result<sys::napi_value> {\n    self\n      ._construct::<IsEmptyStructHint, T>(js_name, obj)\n      .map(|(v, _)| v)\n  }\n\n  pub fn construct_generator<\n    'a,\n    const IsEmptyStructHint: bool,\n    T: ScopedGenerator<'a> + ObjectFinalize + 'static,\n  >(\n    &self,\n    js_name: &str,\n    obj: T,\n  ) -> Result<sys::napi_value> {\n    let (instance, generator_ptr) = self._construct::<IsEmptyStructHint, T>(js_name, obj)?;\n    unsafe { crate::__private::create_iterator(self.env, instance, generator_ptr) };\n    Ok(instance)\n  }\n\n  pub fn factory<T: ObjectFinalize + 'static>(\n    &self,\n    js_name: &str,\n    obj: T,\n  ) -> Result<sys::napi_value> {\n    self._factory(js_name, obj).map(|(value, _)| value)\n  }\n\n  pub fn generator_factory<'a, T: ObjectFinalize + ScopedGenerator<'a> + 'static>(\n    &self,\n    js_name: &str,\n    obj: T,\n  ) -> Result<sys::napi_value> {\n    let (instance, generator_ptr) = self._factory(js_name, obj)?;\n    unsafe { crate::__private::create_iterator(self.env, instance, generator_ptr) };\n    Ok(instance)\n  }\n\n  #[cfg(feature = \"tokio_rt\")]\n  pub fn construct_async_generator<\n    const IsEmptyStructHint: bool,\n    T: crate::bindgen_runtime::AsyncGenerator + ObjectFinalize + 'static,\n  >(\n    &self,\n    js_name: &str,\n    obj: T,\n  ) -> Result<sys::napi_value> {\n    let (instance, generator_ptr) = self._construct::<IsEmptyStructHint, T>(js_name, obj)?;\n    crate::__private::create_async_iterator(self.env, instance, generator_ptr);\n    Ok(instance)\n  }\n\n  #[cfg(feature = \"tokio_rt\")]\n  pub fn async_generator_factory<\n    T: ObjectFinalize + crate::bindgen_runtime::AsyncGenerator + 'static,\n  >(\n    &self,\n    js_name: &str,\n    obj: T,\n  ) -> Result<sys::napi_value> {\n    let (instance, generator_ptr) = self._factory(js_name, obj)?;\n    crate::__private::create_async_iterator(self.env, instance, generator_ptr);\n    Ok(instance)\n  }\n\n  fn _factory<T: ObjectFinalize + 'static>(\n    &self,\n    js_name: &str,\n    obj: T,\n  ) -> Result<(sys::napi_value, *mut T)> {\n    let mut this = self.this();\n    let mut instance = ptr::null_mut();\n    if !self.this_reference.is_null() {\n      check_status!(\n        unsafe { sys::napi_get_reference_value(self.env, self.this_reference, &mut this) },\n        \"Failed to get reference value for `this` in async class factory\"\n      )?;\n      check_status!(\n        unsafe { sys::napi_delete_reference(self.env, self.this_reference) },\n        \"Failed to delete reference for `this` in async class factory\"\n      )?;\n    }\n    ___CALL_FROM_FACTORY.with(|s| s.set(true));\n    let status =\n      unsafe { sys::napi_new_instance(self.env, this, 0, ptr::null_mut(), &mut instance) };\n    ___CALL_FROM_FACTORY.with(|s| s.set(false));\n    // Error thrown in `constructor`\n    if status == sys::Status::napi_pending_exception {\n      let mut exception = ptr::null_mut();\n      unsafe { sys::napi_get_and_clear_last_exception(self.env, &mut exception) };\n      unsafe { sys::napi_throw(self.env, exception) };\n      return Ok((ptr::null_mut(), ptr::null_mut()));\n    }\n    check_status!(status, \"Failed to create instance of class `{}`\", js_name)?;\n    let obj = Box::new(obj);\n    let initial_finalize: Box<dyn FnOnce()> = Box::new(|| {});\n    let finalize_callbacks_ptr = Rc::into_raw(Rc::new(Cell::new(Box::into_raw(initial_finalize))));\n    let mut object_ref = ptr::null_mut();\n    let mut value_ref = Box::into_raw(obj);\n\n    // for empty struct like `#[napi] struct A;`, the `value_ref` will be `0x1`\n    // and it will be overwritten by the others instance of the same class\n    if value_ref as usize == 0x1 {\n      value_ref = Box::into_raw(Box::new(EmptyStructPlaceholder(0))).cast();\n    }\n    check_status!(\n      unsafe {\n        sys::napi_wrap(\n          self.env,\n          instance,\n          value_ref.cast(),\n          Some(raw_finalize_unchecked::<T>),\n          ptr::null_mut(),\n          &mut object_ref,\n        )\n      },\n      \"Failed to initialize class `{}`\",\n      js_name,\n    )?;\n\n    Reference::<T>::add_ref(\n      self.env,\n      value_ref.cast(),\n      (value_ref.cast(), object_ref, finalize_callbacks_ptr),\n    );\n    Ok((instance, value_ref))\n  }\n\n  pub fn unwrap_borrow_mut<T>(&mut self) -> Result<&'static mut T>\n  where\n    T: FromNapiMutRef + TypeName,\n  {\n    unsafe { self.unwrap_raw::<T>() }.map(|raw| Box::leak(unsafe { Box::from_raw(raw) }))\n  }\n\n  pub fn unwrap_borrow<T>(&mut self) -> Result<&'static T>\n  where\n    T: FromNapiRef + TypeName,\n  {\n    unsafe { self.unwrap_raw::<T>() }\n      .map(|raw| Box::leak(unsafe { Box::from_raw(raw) }) as &'static T)\n  }\n\n  #[doc(hidden)]\n  #[inline]\n  pub unsafe fn unwrap_raw<T>(&mut self) -> Result<*mut T>\n  where\n    T: TypeName,\n  {\n    let mut wrapped_val: *mut c_void = std::ptr::null_mut();\n\n    unsafe {\n      check_status!(\n        sys::napi_unwrap(self.env, self.this, &mut wrapped_val),\n        \"Failed to unwrap exclusive reference of `{}` type from napi value\",\n        T::type_name(),\n      )?;\n\n      Ok(wrapped_val.cast())\n    }\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/env.rs",
    "content": "use crate::{sys, JsGlobal, Result};\n\nuse super::Array;\n\npub use crate::Env;\n\nimpl Env {\n  pub fn create_array(&self, len: u32) -> Result<Array<'_>> {\n    Array::new(self.0, len)\n  }\n\n  pub fn get_global(&self) -> Result<JsGlobal<'static>> {\n    let mut global = std::ptr::null_mut();\n    crate::check_status!(\n      unsafe { sys::napi_get_global(self.0, &mut global) },\n      \"Get global object from Env failed\"\n    )?;\n    Ok(JsGlobal(\n      crate::Value {\n        value: global,\n        env: self.0,\n        value_type: crate::ValueType::Object,\n      },\n      std::marker::PhantomData,\n    ))\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/error.rs",
    "content": "#[doc(hidden)]\n#[macro_export]\nmacro_rules! check_status_or_throw {\n  ($env:expr, $code:expr, $($msg:tt)*) => {\n    if let Err(e) = $crate::check_status!($code, $($msg)*) {\n      #[allow(unused_unsafe)]\n      unsafe { $crate::JsError::from(e).throw_into($env) };\n    }\n  };\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/iterator.rs",
    "content": "use std::ffi::{c_void, CStr};\nuse std::ptr;\n\nuse crate::Value;\nuse crate::{bindgen_runtime::Unknown, check_status_or_throw, sys, Env};\n\nuse super::{FromNapiValue, ToNapiValue};\n\nconst GENERATOR_STATE_KEY: &CStr = c\"[[GeneratorState]]\";\n\n/// Implement a Iterator for the JavaScript Class.\n/// This feature is an experimental feature and is not yet stable.\npub trait Generator {\n  type Yield: ToNapiValue;\n  type Next: FromNapiValue;\n  type Return: FromNapiValue;\n\n  /// Handle the `Generator.next()`\n  /// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/next>\n  fn next(&mut self, value: Option<Self::Next>) -> Option<Self::Yield>;\n\n  #[allow(unused_variables)]\n  /// Implement complete to handle the `Generator.return()`\n  /// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/return>\n  fn complete(&mut self, value: Option<Self::Return>) -> Option<Self::Yield> {\n    None\n  }\n\n  #[allow(unused_variables)]\n  /// Implement catch to handle the `Generator.throw()`\n  /// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/throw>\n  fn catch<'env>(\n    &'env mut self,\n    env: Env,\n    value: Unknown<'env>,\n  ) -> Result<Option<Self::Yield>, Unknown<'env>> {\n    Err(value)\n  }\n}\n\nimpl<'env, T: Generator + 'env> ScopedGenerator<'env> for T {\n  type Yield = T::Yield;\n  type Next = T::Next;\n  type Return = T::Return;\n\n  fn next(&mut self, _: &'env Env, value: Option<Self::Next>) -> Option<Self::Yield> {\n    T::next(self, value)\n  }\n\n  fn complete(&mut self, value: Option<Self::Return>) -> Option<Self::Yield> {\n    T::complete(self, value)\n  }\n\n  fn catch(\n    &'env mut self,\n    env: &'env Env,\n    value: Unknown<'env>,\n  ) -> Result<Option<Self::Yield>, Unknown<'env>> {\n    T::catch(self, Env::from_raw(env.0), value)\n  }\n}\n\npub trait ScopedGenerator<'env> {\n  type Yield: ToNapiValue + 'env;\n  type Next: FromNapiValue;\n  type Return: FromNapiValue;\n\n  /// Handle the `Generator.next()`\n  /// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/next>\n  fn next(&mut self, env: &'env Env, value: Option<Self::Next>) -> Option<Self::Yield>;\n\n  #[allow(unused_variables)]\n  /// Implement complete to handle the `Generator.return()`\n  /// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/return>\n  fn complete(&mut self, value: Option<Self::Return>) -> Option<Self::Yield> {\n    None\n  }\n\n  #[allow(unused_variables)]\n  /// Implement catch to handle the `Generator.throw()`\n  /// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/throw>\n  fn catch(\n    &'env mut self,\n    env: &'env Env,\n    value: Unknown<'env>,\n  ) -> Result<Option<Self::Yield>, Unknown<'env>> {\n    Err(value)\n  }\n}\n\n#[doc(hidden)]\n#[allow(clippy::not_unsafe_ptr_arg_deref)]\npub unsafe fn create_iterator<'a, T: ScopedGenerator<'a> + 'a>(\n  env: sys::napi_env,\n  instance: sys::napi_value,\n  generator_ptr: *mut T,\n) {\n  let mut global = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    sys::napi_get_global(env, &mut global),\n    \"Get global object failed\",\n  );\n\n  let mut symbol_object = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    sys::napi_get_named_property(env, global, c\"Symbol\".as_ptr().cast(), &mut symbol_object),\n    \"Get global object failed\",\n  );\n\n  let mut iterator_symbol = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    sys::napi_get_named_property(\n      env,\n      symbol_object,\n      c\"iterator\".as_ptr().cast(),\n      &mut iterator_symbol,\n    ),\n    \"Get Symbol.iterator failed\",\n  );\n\n  let mut next_function = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    sys::napi_create_function(\n      env,\n      c\"next\".as_ptr().cast(),\n      4,\n      Some(generator_next::<T>),\n      generator_ptr as *mut c_void,\n      &mut next_function,\n    ),\n    \"Create next function failed\"\n  );\n\n  let mut return_function = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    sys::napi_create_function(\n      env,\n      c\"return\".as_ptr().cast(),\n      6,\n      Some(generator_return::<T>),\n      generator_ptr as *mut c_void,\n      &mut return_function,\n    ),\n    \"Create return function failed\"\n  );\n\n  let mut throw_function = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    sys::napi_create_function(\n      env,\n      c\"throw\".as_ptr().cast(),\n      5,\n      Some(generator_throw::<T>),\n      generator_ptr as *mut c_void,\n      &mut throw_function,\n    ),\n    \"Create throw function failed\"\n  );\n\n  check_status_or_throw!(\n    env,\n    sys::napi_set_named_property(env, instance, c\"next\".as_ptr().cast(), next_function,),\n    \"Set next function on Generator object failed\"\n  );\n\n  check_status_or_throw!(\n    env,\n    sys::napi_set_named_property(env, instance, c\"return\".as_ptr().cast(), return_function),\n    \"Set return function on Generator object failed\"\n  );\n\n  check_status_or_throw!(\n    env,\n    sys::napi_set_named_property(env, instance, c\"throw\".as_ptr().cast(), throw_function),\n    \"Set throw function on Generator object failed\"\n  );\n\n  let mut generator_state = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    sys::napi_get_boolean(env, false, &mut generator_state),\n    \"Create generator state failed\"\n  );\n\n  let properties = [sys::napi_property_descriptor {\n    utf8name: GENERATOR_STATE_KEY.as_ptr().cast(),\n    name: ptr::null_mut(),\n    method: None,\n    getter: None,\n    setter: None,\n    value: generator_state,\n    attributes: sys::PropertyAttributes::writable,\n    data: ptr::null_mut(),\n  }];\n\n  check_status_or_throw!(\n    env,\n    sys::napi_define_properties(env, instance, 1, properties.as_ptr()),\n    \"Define properties on Generator object failed\"\n  );\n\n  let mut generator_function = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    sys::napi_create_function(\n      env,\n      c\"Iterator\".as_ptr().cast(),\n      8,\n      Some(symbol_generator::<T>),\n      generator_ptr as *mut c_void,\n      &mut generator_function,\n    ),\n    \"Create iterator function failed\",\n  );\n\n  check_status_or_throw!(\n    env,\n    sys::napi_set_property(env, instance, iterator_symbol, generator_function),\n    \"Failed to set Symbol.iterator on class instance\",\n  );\n\n  let mut iterator_ctor = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    sys::napi_get_named_property(env, global, c\"Iterator\".as_ptr().cast(), &mut iterator_ctor,),\n    \"Get Global.Iterator failed\",\n  );\n\n  let mut iterator_ctor_type = 0;\n  check_status_or_throw!(\n    env,\n    sys::napi_typeof(env, iterator_ctor, &mut iterator_ctor_type),\n    \"Get Global.Iterator type failed\",\n  );\n\n  if iterator_ctor_type == sys::ValueType::napi_function {\n    let mut iterator_proto = ptr::null_mut();\n    check_status_or_throw!(\n      env,\n      sys::napi_get_named_property(\n        env,\n        iterator_ctor,\n        c\"prototype\".as_ptr().cast(),\n        &mut iterator_proto,\n      ),\n      \"Failed to get Iterator.prototype\",\n    );\n\n    let mut object_ctor = ptr::null_mut();\n    check_status_or_throw!(\n      env,\n      sys::napi_get_named_property(env, global, c\"Object\".as_ptr().cast(), &mut object_ctor),\n      \"Failed to get Object constructor\"\n    );\n\n    let mut set_prototype_function = ptr::null_mut();\n    check_status_or_throw!(\n      env,\n      sys::napi_get_named_property(\n        env,\n        object_ctor,\n        c\"setPrototypeOf\".as_ptr().cast(),\n        &mut set_prototype_function,\n      ),\n      \"Failed to get Object.setPrototypeOf\"\n    );\n\n    let mut argv = [instance, iterator_proto];\n    check_status_or_throw!(\n      env,\n      sys::napi_call_function(\n        env,\n        object_ctor,\n        set_prototype_function,\n        2,\n        argv.as_mut_ptr(),\n        ptr::null_mut(),\n      ),\n      \"Failed to set prototype on object\"\n    );\n  }\n}\n\n#[doc(hidden)]\npub unsafe extern \"C\" fn symbol_generator<'a, T: ScopedGenerator<'a> + 'a>(\n  env: sys::napi_env,\n  info: sys::napi_callback_info,\n) -> sys::napi_value {\n  let mut this = ptr::null_mut();\n  let mut argv: [sys::napi_value; 1] = [ptr::null_mut()];\n  let mut argc = 0;\n  let mut generator_ptr = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_get_cb_info(\n        env,\n        info,\n        &mut argc,\n        argv.as_mut_ptr(),\n        &mut this,\n        &mut generator_ptr,\n      )\n    },\n    \"Get callback info from generator function failed\"\n  );\n\n  this\n}\n\nextern \"C\" fn generator_next<'a, T: ScopedGenerator<'a> + 'a>(\n  env: sys::napi_env,\n  info: sys::napi_callback_info,\n) -> sys::napi_value {\n  let mut this = ptr::null_mut();\n  let mut argv: [sys::napi_value; 1] = [ptr::null_mut()];\n  let mut argc = 1;\n  let mut generator_ptr = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_get_cb_info(\n        env,\n        info,\n        &mut argc,\n        argv.as_mut_ptr(),\n        &mut this,\n        &mut generator_ptr,\n      )\n    },\n    \"Get callback info from generator function failed\"\n  );\n  let mut generator_state = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_get_named_property(\n        env,\n        this,\n        GENERATOR_STATE_KEY.as_ptr().cast(),\n        &mut generator_state,\n      )\n    },\n    \"Get generator state failed\"\n  );\n  let mut completed = false;\n  check_status_or_throw!(\n    env,\n    unsafe { sys::napi_get_value_bool(env, generator_state, &mut completed) },\n    \"Get generator state failed\"\n  );\n  let mut result = std::ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe { sys::napi_create_object(env, &mut result) },\n    \"Failed to create iterator result object\",\n  );\n  if !completed {\n    let g = unsafe { Box::leak(Box::from_raw(generator_ptr as *mut T)) };\n    let item = if argc == 0 {\n      g.next(\n        // SAFETY: `Env` is long lived\n        unsafe { std::mem::transmute::<&Env, &'a Env>(&Env::from_raw(env)) },\n        None,\n      )\n    } else {\n      g.next(\n        // SAFETY: `Env` is long lived\n        unsafe { std::mem::transmute::<&Env, &'a Env>(&Env::from_raw(env)) },\n        match unsafe { T::Next::from_napi_value(env, argv[0]) } {\n          Ok(input) => Some(input),\n          Err(e) => {\n            unsafe {\n              sys::napi_throw_error(\n                env,\n                format!(\"{}\", e.status).as_ptr().cast(),\n                e.reason.as_ptr().cast(),\n              )\n            };\n            None\n          }\n        },\n      )\n    };\n\n    if let Some(value) = item {\n      set_generator_value(env, result, value);\n    } else {\n      completed = true;\n    }\n  }\n  let mut completed_value = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe { sys::napi_get_boolean(env, completed, &mut completed_value) },\n    \"Failed to create completed value\"\n  );\n  check_status_or_throw!(\n    env,\n    unsafe { sys::napi_set_named_property(env, result, c\"done\".as_ptr().cast(), completed_value,) },\n    \"Failed to set iterator result done\",\n  );\n\n  result\n}\n\nextern \"C\" fn generator_return<'a, T: ScopedGenerator<'a> + 'a>(\n  env: sys::napi_env,\n  info: sys::napi_callback_info,\n) -> sys::napi_value {\n  let mut this = ptr::null_mut();\n  let mut argv: [sys::napi_value; 1] = [ptr::null_mut()];\n  let mut argc = 1;\n  let mut generator_ptr = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_get_cb_info(\n        env,\n        info,\n        &mut argc,\n        argv.as_mut_ptr(),\n        &mut this,\n        &mut generator_ptr,\n      )\n    },\n    \"Get callback info from generator function failed\"\n  );\n\n  let g = unsafe { Box::leak(Box::from_raw(generator_ptr as *mut T)) };\n  if argc == 0 {\n    g.complete(None);\n  } else {\n    g.complete(Some(\n      match unsafe { T::Return::from_napi_value(env, argv[0]) } {\n        Ok(input) => input,\n        Err(e) => {\n          unsafe {\n            sys::napi_throw_error(\n              env,\n              format!(\"{}\", e.status).as_ptr().cast(),\n              e.reason.as_ptr().cast(),\n            )\n          };\n          return ptr::null_mut();\n        }\n      },\n    ));\n  }\n  let mut generator_state = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe { sys::napi_get_boolean(env, true, &mut generator_state) },\n    \"Create generator state failed\"\n  );\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_set_named_property(\n        env,\n        this,\n        GENERATOR_STATE_KEY.as_ptr().cast(),\n        generator_state,\n      )\n    },\n    \"Get generator state failed\"\n  );\n  let mut result = std::ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe { sys::napi_create_object(env, &mut result) },\n    \"Failed to create iterator result object\",\n  );\n  if argc > 0 {\n    check_status_or_throw!(\n      env,\n      unsafe { sys::napi_set_named_property(env, result, c\"value\".as_ptr().cast(), argv[0],) },\n      \"Failed to set iterator result value\",\n    );\n  }\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_set_named_property(\n        env,\n        result,\n        c\"done\".as_ptr() as *const std::os::raw::c_char,\n        generator_state,\n      )\n    },\n    \"Failed to set iterator result done\",\n  );\n\n  result\n}\n\nextern \"C\" fn generator_throw<'a, T: ScopedGenerator<'a> + 'a>(\n  env: sys::napi_env,\n  info: sys::napi_callback_info,\n) -> sys::napi_value {\n  let mut this = ptr::null_mut();\n  let mut argv: [sys::napi_value; 1] = [ptr::null_mut()];\n  let mut argc = 1;\n  let mut generator_ptr = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_get_cb_info(\n        env,\n        info,\n        &mut argc,\n        argv.as_mut_ptr(),\n        &mut this,\n        &mut generator_ptr,\n      )\n    },\n    \"Get callback info from generator function failed\"\n  );\n\n  let g = unsafe { Box::leak(Box::from_raw(generator_ptr as *mut T)) };\n  let catch_result = if argc == 0 {\n    let mut undefined = ptr::null_mut();\n    check_status_or_throw!(\n      env,\n      unsafe { sys::napi_get_undefined(env, &mut undefined) },\n      \"Get undefined failed\"\n    );\n    g.catch(\n      // SAFETY: `Env` is long lived\n      unsafe { std::mem::transmute::<&Env, &'a Env>(&Env::from_raw(env)) },\n      Unknown(\n        Value {\n          env,\n          value: undefined,\n          value_type: crate::ValueType::Unknown,\n        },\n        std::marker::PhantomData,\n      ),\n    )\n  } else {\n    g.catch(\n      // SAFETY: `Env` is long lived\n      unsafe { std::mem::transmute::<&Env, &'a Env>(&Env::from_raw(env)) },\n      Unknown(\n        Value {\n          env,\n          value: argv[0],\n          value_type: crate::ValueType::Unknown,\n        },\n        std::marker::PhantomData,\n      ),\n    )\n  };\n  let mut result = ptr::null_mut();\n  check_status_or_throw!(\n    env,\n    unsafe { sys::napi_create_object(env, &mut result) },\n    \"Failed to create iterator result object\",\n  );\n  let mut generator_state = ptr::null_mut();\n  let mut generator_state_value = false;\n  match catch_result {\n    Err(e) => {\n      generator_state_value = true;\n      check_status_or_throw!(\n        env,\n        unsafe { sys::napi_get_boolean(env, generator_state_value, &mut generator_state) },\n        \"Create generator state failed\"\n      );\n      check_status_or_throw!(\n        env,\n        unsafe {\n          sys::napi_set_named_property(\n            env,\n            this,\n            GENERATOR_STATE_KEY.as_ptr().cast(),\n            generator_state,\n          )\n        },\n        \"Get generator state failed\"\n      );\n      let throw_status = unsafe { sys::napi_throw(env, e.0.value) };\n      debug_assert!(\n        throw_status == sys::Status::napi_ok,\n        \"Failed to throw error {}\",\n        crate::Status::from(throw_status)\n      );\n      return ptr::null_mut();\n    }\n    Ok(Some(v)) => {\n      set_generator_value(env, result, v);\n    }\n    Ok(None) => {\n      generator_state_value = true;\n    }\n  }\n  check_status_or_throw!(\n    env,\n    unsafe { sys::napi_get_boolean(env, generator_state_value, &mut generator_state) },\n    \"Create generator state failed\"\n  );\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_set_named_property(\n        env,\n        this,\n        GENERATOR_STATE_KEY.as_ptr().cast(),\n        generator_state,\n      )\n    },\n    \"Get generator state failed\"\n  );\n  check_status_or_throw!(\n    env,\n    unsafe { sys::napi_set_named_property(env, result, c\"done\".as_ptr().cast(), generator_state) },\n    \"Get generator state failed\"\n  );\n\n  result\n}\n\nfn set_generator_value<V: ToNapiValue>(env: sys::napi_env, result: sys::napi_value, value: V) {\n  match unsafe { ToNapiValue::to_napi_value(env, value) } {\n    Ok(val) => {\n      check_status_or_throw!(\n        env,\n        unsafe { sys::napi_set_named_property(env, result, c\"value\".as_ptr().cast(), val,) },\n        \"Failed to set iterator result value\",\n      );\n    }\n    Err(e) => {\n      unsafe {\n        sys::napi_throw_error(\n          env,\n          format!(\"{}\", e.status).as_ptr().cast(),\n          e.reason.as_ptr().cast(),\n        )\n      };\n    }\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/array.rs",
    "content": "use std::{marker::PhantomData, ptr};\n\nuse crate::{bindgen_prelude::*, check_status, Value};\n\n#[derive(Clone, Copy)]\npub struct Array<'env> {\n  pub(crate) env: sys::napi_env,\n  pub(crate) inner: sys::napi_value,\n  pub(crate) len: u32,\n  _marker: std::marker::PhantomData<&'env ()>,\n}\n\nimpl<'env> Array<'env> {\n  pub(crate) fn new(env: sys::napi_env, len: u32) -> Result<Self> {\n    let mut ptr = ptr::null_mut();\n    unsafe {\n      check_status!(\n        sys::napi_create_array_with_length(env, len as usize, &mut ptr),\n        \"Failed to create napi Array\"\n      )?;\n    }\n\n    Ok(Array {\n      env,\n      inner: ptr,\n      len,\n      _marker: std::marker::PhantomData,\n    })\n  }\n\n  pub fn get<T: FromNapiValue>(&self, index: u32) -> Result<Option<T>> {\n    if index >= self.len() {\n      return Ok(None);\n    }\n\n    let mut ret = ptr::null_mut();\n    unsafe {\n      check_status!(\n        sys::napi_get_element(self.env, self.inner, index, &mut ret),\n        \"Failed to get element with index `{}`\",\n        index,\n      )?;\n\n      Ok(Some(T::from_napi_value(self.env, ret)?))\n    }\n  }\n\n  pub fn get_ref<T: 'static + FromNapiRef>(&self, index: u32) -> Result<Option<&'env T>> {\n    if index >= self.len() {\n      return Ok(None);\n    }\n\n    let mut ret = ptr::null_mut();\n    unsafe {\n      check_status!(\n        sys::napi_get_element(self.env, self.inner, index, &mut ret),\n        \"Failed to get element with index `{}`\",\n        index,\n      )?;\n\n      Ok(Some(T::from_napi_ref(self.env, ret)?))\n    }\n  }\n\n  pub fn set<T: ToNapiValue>(&mut self, index: u32, val: T) -> Result<()> {\n    unsafe {\n      let napi_val = T::to_napi_value(self.env, val)?;\n\n      check_status!(\n        sys::napi_set_element(self.env, self.inner, index, napi_val),\n        \"Failed to set element with index `{}`\",\n        index,\n      )?;\n\n      if index >= self.len() {\n        self.len = index + 1;\n      }\n\n      Ok(())\n    }\n  }\n\n  pub fn insert<T: ToNapiValue>(&mut self, val: T) -> Result<()> {\n    self.set(self.len(), val)?;\n    Ok(())\n  }\n\n  #[allow(clippy::len_without_is_empty)]\n  pub fn len(&self) -> u32 {\n    self.len\n  }\n\n  pub fn coerce_to_object(self) -> Result<Object<'env>> {\n    let mut new_raw_value = ptr::null_mut();\n    check_status!(unsafe { sys::napi_coerce_to_object(self.env, self.inner, &mut new_raw_value) })?;\n    Ok(Object(\n      Value {\n        env: self.env,\n        value: new_raw_value,\n        value_type: ValueType::Object,\n      },\n      PhantomData,\n    ))\n  }\n}\n\nimpl TypeName for Array<'_> {\n  fn type_name() -> &'static str {\n    \"Array\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl<'env> JsValue<'env> for Array<'env> {\n  fn value(&self) -> Value {\n    Value {\n      env: self.env,\n      value: self.inner,\n      value_type: ValueType::Object,\n    }\n  }\n}\n\nimpl<'env> JsObjectValue<'env> for Array<'env> {}\n\nimpl FromNapiValue for Array<'_> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut is_arr = false;\n    check_status!(\n      unsafe { sys::napi_is_array(env, napi_val, &mut is_arr) },\n      \"Failed to check given napi value is array\"\n    )?;\n\n    if is_arr {\n      let mut len = 0;\n\n      check_status!(\n        unsafe { sys::napi_get_array_length(env, napi_val, &mut len) },\n        \"Failed to get Array length\",\n      )?;\n\n      Ok(Array {\n        inner: napi_val,\n        env,\n        len,\n        _marker: std::marker::PhantomData,\n      })\n    } else {\n      Err(Error::new(\n        Status::InvalidArg,\n        \"Given napi value is not an array\".to_owned(),\n      ))\n    }\n  }\n}\n\nimpl Array<'_> {\n  /// Create `Array` from `Vec<T>`\n  pub fn from_vec<T>(env: &Env, value: Vec<T>) -> Result<Self>\n  where\n    T: ToNapiValue,\n  {\n    let mut arr = Array::new(env.0, value.len() as u32)?;\n    value.into_iter().enumerate().try_for_each(|(index, val)| {\n      arr.set(index as u32, val)?;\n      Ok::<(), Error>(())\n    })?;\n    Ok(arr)\n  }\n\n  /// Create `Array` from `&Vec<String>`\n  pub fn from_ref_vec_string(env: &Env, value: &[String]) -> Result<Self> {\n    let mut arr = Array::new(env.0, value.len() as u32)?;\n    value.iter().enumerate().try_for_each(|(index, val)| {\n      arr.set(index as u32, val.as_str())?;\n      Ok::<(), Error>(())\n    })?;\n    Ok(arr)\n  }\n\n  /// Create `Array` from `&Vec<T: Copy + ToNapiValue>`\n  pub fn from_ref_vec<T>(env: &Env, value: &[T]) -> Result<Self>\n  where\n    T: ToNapiValue + Copy,\n  {\n    let mut arr = Array::new(env.0, value.len() as u32)?;\n    value.iter().enumerate().try_for_each(|(index, val)| {\n      arr.set(index as u32, *val)?;\n      Ok::<(), Error>(())\n    })?;\n    Ok(arr)\n  }\n}\n\nimpl ValidateNapiValue for Array<'_> {}\n\nimpl<T> TypeName for Vec<T> {\n  fn type_name() -> &'static str {\n    \"Array<T>\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl<T, const N: usize> ToNapiValue for [T; N]\nwhere\n  T: ToNapiValue + Copy,\n{\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let mut arr = Array::new(env, val.len() as u32)?;\n\n    for (i, v) in val.into_iter().enumerate() {\n      arr.set(i as u32, v)?;\n    }\n\n    unsafe { Array::to_napi_value(env, arr) }\n  }\n}\n\nimpl<T, const N: usize> ToNapiValue for &[T; N]\nwhere\n  for<'a> &'a T: ToNapiValue,\n{\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let mut arr = Array::new(env, val.len() as u32)?;\n\n    for (i, v) in val.iter().enumerate() {\n      arr.set(i as u32, v)?;\n    }\n\n    unsafe { Array::to_napi_value(env, arr) }\n  }\n}\n\nimpl<T> ToNapiValue for Vec<T>\nwhere\n  T: ToNapiValue,\n{\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let mut arr = Array::new(env, val.len() as u32)?;\n\n    for (i, v) in val.into_iter().enumerate() {\n      arr.set(i as u32, v)?;\n    }\n\n    unsafe { Array::to_napi_value(env, arr) }\n  }\n}\n\nimpl<T> ToNapiValue for &Vec<T>\nwhere\n  for<'a> &'a T: ToNapiValue,\n{\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let mut arr = Array::new(env, val.len() as u32)?;\n\n    for (i, v) in val.iter().enumerate() {\n      arr.set(i as u32, v)?;\n    }\n\n    unsafe { Array::to_napi_value(env, arr) }\n  }\n}\n\nimpl<T> ToNapiValue for &mut Vec<T>\nwhere\n  for<'a> &'a T: ToNapiValue,\n{\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, &*val)\n  }\n}\n\nimpl<T> FromNapiValue for Vec<T>\nwhere\n  T: FromNapiValue,\n{\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let arr = unsafe { Array::from_napi_value(env, napi_val)? };\n    let mut vec = Vec::with_capacity(arr.len() as usize);\n\n    for i in 0..arr.len() {\n      if let Some(val) = arr.get::<T>(i)? {\n        vec.push(val);\n      } else {\n        return Err(Error::new(\n          Status::InvalidArg,\n          \"Found inconsistent data type in Array<T> when converting to Rust Vec<T>\".to_owned(),\n        ));\n      }\n    }\n\n    Ok(vec)\n  }\n}\n\nimpl<T> ValidateNapiValue for Vec<T>\nwhere\n  T: FromNapiValue,\n{\n  unsafe fn validate(env: sys::napi_env, napi_val: sys::napi_value) -> Result<sys::napi_value> {\n    let mut is_array = false;\n    check_status!(\n      unsafe { sys::napi_is_array(env, napi_val, &mut is_array) },\n      \"Failed to check given napi value is array\"\n    )?;\n    if !is_array {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Expected an array\".to_owned(),\n      ));\n    }\n    Ok(ptr::null_mut())\n  }\n}\n\nmacro_rules! arr_get {\n  ($arr:expr, $n:expr, $err:expr) => {\n    if let Some(e) = $arr.get($n)? {\n      e\n    } else {\n      return $err($n);\n    }\n  };\n}\n\nmacro_rules! tuple_from_napi_value {\n  ($total:expr, $($n:expr),+,) => {\n    unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n      let arr = unsafe { Array::from_napi_value(env, napi_val)? };\n      let err = |v| Err(Error::new(\n        Status::InvalidArg,\n        format!(\n          \"Found inconsistent data type in Array[{}] when converting to Rust T\",\n          v\n        )\n        .to_owned(),\n      ));\n      if arr.len() < $total {\n        return Err(Error::new(\n            Status::InvalidArg,\n            format!(\"Array length < {}\",$total).to_owned(),\n        ));\n      }\n      Ok(($(arr_get!(arr,$n,err),)+))\n    }\n  }\n}\n\nmacro_rules! impl_tuple_validate_napi_value {\n  ($($ident:ident),+) => {\n    impl<$($ident: FromNapiValue),*> ValidateNapiValue for ($($ident,)*) {}\n    impl<$($ident: FromNapiValue),*> TypeName for ($($ident,)*) {\n      fn type_name() -> &'static str {\n        concat!(\"Tuple\", \"(\", $(stringify!($ident), \",\"),*, \")\")\n      }\n      fn value_type() -> ValueType {\n        ValueType::Object\n      }\n    }\n  };\n}\n\nmacro_rules! impl_from_tuple {\n  (\n    $($typs:ident),*;\n    $($tidents:expr),+;\n    $length:expr\n  ) => {\n    impl<$($typs),*> FromNapiValue for ($($typs,)*)\n      where $($typs: FromNapiValue,)* {\n      tuple_from_napi_value!($length, $($tidents,)*);\n    }\n  };\n}\n\nmacro_rules! impl_to_tuple {\n  (\n    $($typs:ident),*;\n    $($tidents:expr),+;\n    $length:expr\n  ) => {\n    impl<$($typs),*> ToNapiValue for ($($typs,)*)\n      where $($typs: ToNapiValue,)* {\n      unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n        let mut arr = Array::new(env, $length as u32)?;\n\n        #[allow(non_snake_case)]\n        let ($($typs,)*) = val;\n        let mut i = 0;\n\n        $(i+=1; unsafe {arr.set(i-1, <$typs as ToNapiValue>::to_napi_value(env, $typs)? )?}; )*\n\n        unsafe { Array::to_napi_value(env, arr) }\n      }\n    }\n  };\n}\n\nmacro_rules! impl_tuples {\n  (\n    ;;$length:expr,\n    $shift:expr\n  ) => {};\n  (\n    $typ:ident$(, $($typs:ident),*)?;\n    $tident:expr$(, $($tidents:expr),*)?;\n    $length:expr,\n    $shift:expr\n  ) => {\n    impl_tuples!(\n      $($($typs),*)?;\n      $($($tidents),*)?;\n      $length - 1,\n      $shift + 1\n    );\n    impl_from_tuple!(\n      $typ$(, $($typs),*)?;\n      $tident - $shift$(, $($tidents - $shift),*)?;\n      $length\n    );\n    impl_to_tuple!(\n      $typ$(, $($typs),*)?;\n      $tident - $shift$(, $($tidents - $shift),*)?;\n      $length\n    );\n    impl_tuple_validate_napi_value!($typ$(, $($typs),*)?);\n  };\n}\n\nimpl_tuples!(\n  T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15;\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15;\n  16, 0\n);\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/arraybuffer.rs",
    "content": "use std::ffi::{c_void, CString};\nuse std::marker::PhantomData;\nuse std::mem;\nuse std::ops::Deref;\nuse std::ptr::{self, NonNull};\n#[cfg(all(feature = \"napi4\", not(feature = \"noop\")))]\nuse std::sync::atomic::Ordering;\n\n#[cfg(all(feature = \"napi4\", not(feature = \"noop\")))]\nuse crate::bindgen_prelude::{CUSTOM_GC_TSFN, CUSTOM_GC_TSFN_DESTROYED, THREADS_CAN_ACCESS_ENV};\nuse crate::{\n  bindgen_prelude::{\n    FromNapiValue, JsObjectValue, JsValue, This, ToNapiValue, TypeName, ValidateNapiValue,\n  },\n  check_status, sys, Env, Error, Result, Status, Value, ValueType,\n};\n\n#[repr(i32)]\n#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]\n#[non_exhaustive]\npub enum TypedArrayType {\n  Int8 = 0,\n  Uint8,\n  Uint8Clamped,\n  Int16,\n  Uint16,\n  Int32,\n  Uint32,\n  Float32,\n  Float64,\n  #[cfg(feature = \"napi6\")]\n  BigInt64,\n  #[cfg(feature = \"napi6\")]\n  BigUint64,\n\n  /// compatible with higher versions\n  Unknown = 1024,\n}\n\nimpl AsRef<str> for TypedArrayType {\n  fn as_ref(&self) -> &str {\n    match self {\n      TypedArrayType::Int8 => \"Int8\",\n      TypedArrayType::Uint8 => \"Uint8\",\n      TypedArrayType::Uint8Clamped => \"Uint8Clamped\",\n      TypedArrayType::Int16 => \"Int16\",\n      TypedArrayType::Uint16 => \"Uint16\",\n      TypedArrayType::Int32 => \"Int32\",\n      TypedArrayType::Uint32 => \"Uint32\",\n      TypedArrayType::Float32 => \"Float32\",\n      TypedArrayType::Float64 => \"Float64\",\n      #[cfg(feature = \"napi6\")]\n      TypedArrayType::BigInt64 => \"BigInt64\",\n      #[cfg(feature = \"napi6\")]\n      TypedArrayType::BigUint64 => \"BigUint64\",\n      TypedArrayType::Unknown => \"Unknown\",\n    }\n  }\n}\n\nimpl From<sys::napi_typedarray_type> for TypedArrayType {\n  fn from(value: sys::napi_typedarray_type) -> Self {\n    match value {\n      sys::TypedarrayType::int8_array => Self::Int8,\n      sys::TypedarrayType::uint8_array => Self::Uint8,\n      sys::TypedarrayType::uint8_clamped_array => Self::Uint8Clamped,\n      sys::TypedarrayType::int16_array => Self::Int16,\n      sys::TypedarrayType::uint16_array => Self::Uint16,\n      sys::TypedarrayType::int32_array => Self::Int32,\n      sys::TypedarrayType::uint32_array => Self::Uint32,\n      sys::TypedarrayType::float32_array => Self::Float32,\n      sys::TypedarrayType::float64_array => Self::Float64,\n      #[cfg(feature = \"napi6\")]\n      sys::TypedarrayType::bigint64_array => Self::BigInt64,\n      #[cfg(feature = \"napi6\")]\n      sys::TypedarrayType::biguint64_array => Self::BigUint64,\n      _ => Self::Unknown,\n    }\n  }\n}\n\nimpl From<TypedArrayType> for sys::napi_typedarray_type {\n  fn from(value: TypedArrayType) -> sys::napi_typedarray_type {\n    value as i32\n  }\n}\n\n#[cfg(target_family = \"wasm\")]\nextern \"C\" {\n  fn emnapi_sync_memory(\n    env: crate::sys::napi_env,\n    js_to_wasm: bool,\n    arraybuffer_or_view: crate::sys::napi_value,\n    byte_offset: usize,\n    length: usize,\n  ) -> crate::sys::napi_status;\n}\n\n#[derive(Clone, Copy)]\n/// Represents a JavaScript ArrayBuffer\npub struct ArrayBuffer<'env> {\n  pub(crate) value: Value,\n  pub(crate) data: &'env [u8],\n}\n\nimpl<'env> JsValue<'env> for ArrayBuffer<'env> {\n  fn value(&self) -> Value {\n    self.value\n  }\n}\n\nimpl<'env> JsObjectValue<'env> for ArrayBuffer<'env> {}\n\nimpl TypeName for ArrayBuffer<'_> {\n  fn type_name() -> &'static str {\n    \"ArrayBuffer\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl FromNapiValue for ArrayBuffer<'_> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let value = Value {\n      env,\n      value: napi_val,\n      value_type: ValueType::Object,\n    };\n    let mut data = ptr::null_mut();\n    let mut byte_length = 0;\n    check_status!(unsafe {\n      sys::napi_get_arraybuffer_info(env, napi_val, &mut data, &mut byte_length)\n    })?;\n    Ok(ArrayBuffer {\n      value,\n      data: if data.is_null() {\n        &[]\n      } else {\n        unsafe { std::slice::from_raw_parts(data as *const u8, byte_length) }\n      },\n    })\n  }\n}\n\nimpl Deref for ArrayBuffer<'_> {\n  type Target = [u8];\n\n  fn deref(&self) -> &Self::Target {\n    self.data\n  }\n}\n\nimpl<'env> ArrayBuffer<'env> {\n  /// Create a new `ArrayBuffer` from a `Vec<u8>`.\n  pub fn from_data<D: Into<Vec<u8>>>(env: &Env, data: D) -> Result<Self> {\n    let mut buf = ptr::null_mut();\n    let mut data = data.into();\n    let mut inner_ptr = data.as_mut_ptr();\n    #[cfg(all(debug_assertions, not(windows), not(target_family = \"wasm\")))]\n    {\n      let is_existed = super::BUFFER_DATA.with(|buffer_data| {\n        let buffer = buffer_data.lock().expect(\"Unlock buffer data failed\");\n        buffer.contains(&inner_ptr)\n      });\n      if is_existed {\n        panic!(\"Share the same data between different buffers is not allowed, see: https://github.com/nodejs/node/issues/32463#issuecomment-631974747\");\n      }\n    }\n    let len = data.len();\n    let cap = data.capacity();\n    let finalize_hint = Box::into_raw(Box::new((len, cap)));\n    let mut status = unsafe {\n      sys::napi_create_external_arraybuffer(\n        env.0,\n        inner_ptr.cast(),\n        data.len(),\n        Some(finalize_slice::<u8>),\n        finalize_hint.cast(),\n        &mut buf,\n      )\n    };\n    if status == napi_sys::Status::napi_no_external_buffers_allowed {\n      unsafe {\n        let _ = Box::from_raw(finalize_hint);\n      }\n      let mut underlying_data = ptr::null_mut();\n      status =\n        unsafe { sys::napi_create_arraybuffer(env.0, data.len(), &mut underlying_data, &mut buf) };\n      check_status!(status, \"Failed to create arraybuffer\")?;\n      if len > 0 {\n        let underlying_slice: &mut [u8] =\n          unsafe { std::slice::from_raw_parts_mut(underlying_data.cast(), len) };\n        underlying_slice.copy_from_slice(data.as_slice());\n      }\n      inner_ptr = underlying_data.cast();\n    } else {\n      check_status!(status, \"Failed to create arraybuffer\")?;\n      mem::forget(data);\n    }\n    Ok(Self {\n      value: Value {\n        env: env.0,\n        value: buf,\n        value_type: ValueType::Object,\n      },\n      data: if len == 0 {\n        &[]\n      } else {\n        unsafe { std::slice::from_raw_parts(inner_ptr.cast(), len) }\n      },\n    })\n  }\n\n  /// ## Safety\n  ///\n  /// Mostly the same with `from_data`\n  ///\n  /// Provided `finalize_callback` will be called when `[u8]` got dropped.\n  ///\n  /// You can pass in `noop_finalize` if you have nothing to do in finalize phase.\n  ///\n  /// ### Notes\n  ///\n  /// JavaScript may mutate the data passed in to this buffer when writing the buffer.\n  /// However, some JavaScript runtimes do not support external buffers (notably electron!)\n  /// in which case modifications may be lost.\n  ///\n  /// If you need to support these runtimes, you should create a buffer by other means and then\n  /// later copy the data back out.\n  pub unsafe fn from_external<T: 'env, F: FnOnce(Env, T)>(\n    env: &Env,\n    data: *mut u8,\n    len: usize,\n    finalize_hint: T,\n    finalize_callback: F,\n  ) -> Result<Self> {\n    if data.is_null() || std::ptr::eq(data, crate::EMPTY_VEC.as_ptr()) {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Borrowed data should not be null\".to_owned(),\n      ));\n    }\n    #[cfg(all(debug_assertions, not(windows), not(target_family = \"wasm\")))]\n    {\n      let is_existed = super::BUFFER_DATA.with(|buffer_data| {\n        let buffer = buffer_data.lock().expect(\"Unlock buffer data failed\");\n        buffer.contains(&data)\n      });\n      if is_existed {\n        panic!(\"Share the same data between different buffers is not allowed, see: https://github.com/nodejs/node/issues/32463#issuecomment-631974747\");\n      }\n    }\n    let hint_ptr = Box::into_raw(Box::new((finalize_hint, finalize_callback)));\n    let mut arraybuffer_value = ptr::null_mut();\n    let mut status = unsafe {\n      sys::napi_create_external_arraybuffer(\n        env.0,\n        data.cast(),\n        len,\n        Some(crate::env::raw_finalize_with_custom_callback::<T, F>),\n        hint_ptr.cast(),\n        &mut arraybuffer_value,\n      )\n    };\n    if status == sys::Status::napi_no_external_buffers_allowed {\n      let (hint, finalize) = *Box::from_raw(hint_ptr);\n      let mut underlying_data = ptr::null_mut();\n      status = unsafe {\n        sys::napi_create_arraybuffer(env.0, len, &mut underlying_data, &mut arraybuffer_value)\n      };\n      // Copy data before calling finalize, since finalize may free the source data\n      if status == sys::Status::napi_ok && len > 0 {\n        unsafe { std::ptr::copy_nonoverlapping(data.cast(), underlying_data, len) };\n      }\n      // Always call finalize to clean up caller's resources, even on error\n      finalize(*env, hint);\n      check_status!(status, \"Failed to create arraybuffer from data\")?;\n    } else {\n      check_status!(status, \"Failed to create arraybuffer from data\")?;\n    }\n\n    Ok(Self {\n      value: Value {\n        env: env.0,\n        value: arraybuffer_value,\n        value_type: ValueType::Object,\n      },\n      data: if len == 0 {\n        &[]\n      } else {\n        unsafe { std::slice::from_raw_parts(data.cast(), len) }\n      },\n    })\n  }\n\n  /// Copy data from a `&[u8]` and create a `ArrayBuffer` from it.\n  pub fn copy_from<D: AsRef<[u8]>>(env: &Env, data: D) -> Result<Self> {\n    let data = data.as_ref();\n    let len = data.len();\n    let mut arraybuffer_value = ptr::null_mut();\n    let mut underlying_data = ptr::null_mut();\n\n    check_status!(\n      unsafe {\n        sys::napi_create_arraybuffer(env.0, len, &mut underlying_data, &mut arraybuffer_value)\n      },\n      \"Failed to create ArrayBuffer\"\n    )?;\n\n    Ok(Self {\n      value: Value {\n        env: env.0,\n        value: arraybuffer_value,\n        value_type: ValueType::Object,\n      },\n      data: if len == 0 {\n        &[]\n      } else {\n        unsafe { std::slice::from_raw_parts(underlying_data.cast(), len) }\n      },\n    })\n  }\n\n  #[cfg(feature = \"napi7\")]\n  /// Generally, an ArrayBuffer is non-detachable if it has been detached before.\n  ///\n  /// The engine may impose additional conditions on whether an ArrayBuffer is detachable.\n  ///\n  /// For example, V8 requires that the ArrayBuffer be external, that is, created with napi_create_external_arraybuffer\n  pub fn detach(self) -> Result<()> {\n    check_status!(unsafe { sys::napi_detach_arraybuffer(self.value.env, self.value.value) })\n  }\n\n  #[cfg(feature = \"napi7\")]\n  /// The ArrayBuffer is considered `detached` if its internal data is null.\n  ///\n  /// This API represents the invocation of the `ArrayBuffer` `IsDetachedBuffer` operation as defined in [Section 24.1.1.2](https://tc39.es/ecma262/#sec-isdetachedbuffer) of the ECMAScript Language Specification.\n  pub fn is_detached(&self) -> Result<bool> {\n    let mut is_detached = false;\n    check_status!(unsafe {\n      sys::napi_is_detached_arraybuffer(self.value.env, self.value.value, &mut is_detached)\n    })?;\n    Ok(is_detached)\n  }\n\n  /// # Safety\n  ///\n  /// This is literally undefined behavior, as the JS side may always modify the underlying buffer,\n  /// without synchronization.\n  pub unsafe fn as_mut(&mut self) -> &mut [u8] {\n    std::slice::from_raw_parts_mut(self.data.as_ptr() as *mut u8, self.data.len())\n  }\n}\n\n#[derive(Clone, Copy)]\n/// Represents a JavaScript ArrayBuffer\npub struct TypedArray<'env> {\n  pub(crate) value: Value,\n  pub typed_array_type: TypedArrayType,\n  pub arraybuffer: ArrayBuffer<'env>,\n  pub byte_offset: usize,\n}\n\nimpl TypeName for TypedArray<'_> {\n  fn type_name() -> &'static str {\n    \"TypedArray\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl ValidateNapiValue for TypedArray<'_> {\n  unsafe fn validate(env: sys::napi_env, napi_val: sys::napi_value) -> Result<sys::napi_value> {\n    let mut is_typedarray = false;\n    check_status!(\n      unsafe { sys::napi_is_typedarray(env, napi_val, &mut is_typedarray) },\n      \"Failed to validate TypedArray\"\n    )?;\n    if !is_typedarray {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Value is not a TypedArray\".to_owned(),\n      ));\n    }\n    Ok(ptr::null_mut())\n  }\n}\n\nimpl<'env> JsValue<'env> for TypedArray<'env> {\n  fn value(&self) -> Value {\n    self.value\n  }\n}\n\nimpl<'env> JsObjectValue<'env> for TypedArray<'env> {}\n\nimpl FromNapiValue for TypedArray<'_> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let value = Value {\n      env,\n      value: napi_val,\n      value_type: ValueType::Object,\n    };\n    let mut typed_array_type = 0;\n    let mut data = ptr::null_mut();\n    let mut length = 0;\n    let mut arraybuffer = ptr::null_mut();\n    let mut byte_offset = 0;\n    check_status!(\n      unsafe {\n        sys::napi_get_typedarray_info(\n          env,\n          napi_val,\n          &mut typed_array_type,\n          &mut length,\n          &mut data,\n          &mut arraybuffer,\n          &mut byte_offset,\n        )\n      },\n      \"Failed to get typedarray info\"\n    )?;\n    Ok(Self {\n      value: Value {\n        env,\n        value: napi_val,\n        value_type: ValueType::Object,\n      },\n      typed_array_type: typed_array_type.into(),\n      byte_offset,\n      arraybuffer: ArrayBuffer {\n        value,\n        data: if data.is_null() {\n          &[]\n        } else {\n          unsafe { std::slice::from_raw_parts(data as *const u8, length) }\n        },\n      },\n    })\n  }\n}\n\ntrait Finalizer {\n  type RustType;\n\n  fn finalizer_notify(&self) -> *mut dyn FnOnce(*mut Self::RustType, usize);\n}\n\nmacro_rules! impl_typed_array {\n  ($name:ident, $rust_type:ident, $typed_array_type:expr) => {\n    pub struct $name {\n      data: *mut $rust_type,\n      length: usize,\n      capacity: usize,\n      #[allow(unused)]\n      byte_offset: usize,\n      raw: Option<(crate::sys::napi_ref, crate::sys::napi_env)>,\n      finalizer_notify: *mut dyn FnOnce(*mut $rust_type, usize),\n    }\n\n    /// SAFETY: This is undefined behavior, as the JS side may always modify the underlying buffer,\n    /// without synchronization. Also see the docs for the `DerfMut` impl.\n    unsafe impl Send for $name {}\n    unsafe impl Sync for $name {}\n\n    impl Finalizer for $name {\n      type RustType = $rust_type;\n\n      fn finalizer_notify(&self) -> *mut dyn FnOnce(*mut Self::RustType, usize) {\n        self.finalizer_notify\n      }\n    }\n\n    impl Drop for $name {\n      fn drop(&mut self) {\n        if let Some((ref_, env)) = self.raw {\n          // If the ref is null, it means the TypedArray has been called `ToNapiValue::to_napi_value`, and the `ref` has been deleted\n          // If the env is null, it means the TypedArray is copied in `&mut TypedArray ToNapiValue::to_napi_value`, and the `ref` will be deleted in the raw TypedArray\n          if ref_.is_null() || env.is_null() {\n            return;\n          }\n          #[cfg(all(feature = \"napi4\", not(feature = \"noop\")))]\n          {\n            if CUSTOM_GC_TSFN_DESTROYED.load(Ordering::SeqCst) {\n              return;\n            }\n            if !THREADS_CAN_ACCESS_ENV.with(|cell| cell.get()) {\n              let status = unsafe {\n                sys::napi_call_threadsafe_function(\n                  CUSTOM_GC_TSFN.load(std::sync::atomic::Ordering::SeqCst),\n                  ref_.cast(),\n                  1,\n                )\n              };\n              assert!(\n                status == sys::Status::napi_ok || status == sys::Status::napi_closing,\n                \"Call custom GC in ArrayBuffer::drop failed {}\",\n                Status::from(status)\n              );\n              return;\n            }\n          }\n          let mut ref_count = 0;\n          crate::check_status_or_throw!(\n            env,\n            unsafe { sys::napi_reference_unref(env, ref_, &mut ref_count) },\n            \"Failed to unref ArrayBuffer reference in drop\"\n          );\n          debug_assert!(\n            ref_count == 0,\n            \"ArrayBuffer reference count in ArrayBuffer::drop is not zero\"\n          );\n          crate::check_status_or_throw!(\n            env,\n            unsafe { sys::napi_delete_reference(env, ref_) },\n            \"Failed to delete ArrayBuffer reference in drop\"\n          );\n          return;\n        }\n        // If the `finalizer_notify` is not null, it means the data is external, and we call the finalizer instead of the `Vec::from_raw_parts`\n        if !self.finalizer_notify().is_null() {\n          let finalizer = unsafe { Box::from_raw(self.finalizer_notify) };\n          (finalizer)(self.data, self.length);\n          return;\n        }\n        if !self.data.is_null() {\n          unsafe { Vec::from_raw_parts(self.data, self.length, self.capacity) };\n        }\n      }\n    }\n\n    impl $name {\n      #[cfg(target_family = \"wasm\")]\n      pub fn sync(&mut self, env: &crate::Env) {\n        if let Some((reference, _)) = self.raw {\n          let mut value = ptr::null_mut();\n          let mut array_buffer = ptr::null_mut();\n          crate::check_status_or_throw!(\n            env.raw(),\n            unsafe { crate::sys::napi_get_reference_value(env.raw(), reference, &mut value) },\n            \"Failed to get reference value from TypedArray while syncing\"\n          );\n          crate::check_status_or_throw!(\n            env.raw(),\n            unsafe {\n              crate::sys::napi_get_typedarray_info(\n                env.raw(),\n                value,\n                &mut ($typed_array_type as i32) as *mut i32,\n                &mut self.length as *mut usize,\n                ptr::null_mut(),\n                &mut array_buffer,\n                &mut self.byte_offset as *mut usize,\n              )\n            },\n            \"Failed to get ArrayBuffer under the TypedArray while syncing\"\n          );\n          crate::check_status_or_throw!(\n            env.raw(),\n            unsafe {\n              emnapi_sync_memory(\n                env.raw(),\n                false,\n                array_buffer,\n                self.byte_offset,\n                self.length,\n              )\n            },\n            \"Failed to sync memory\"\n          );\n        } else {\n          return;\n        }\n      }\n\n      pub fn new(mut data: Vec<$rust_type>) -> Self {\n        data.shrink_to_fit();\n        let ret = $name {\n          data: data.as_mut_ptr(),\n          length: data.len(),\n          capacity: data.capacity(),\n          byte_offset: 0,\n          raw: None,\n          finalizer_notify: ptr::null_mut::<fn(*mut $rust_type, usize)>(),\n        };\n        mem::forget(data);\n        ret\n      }\n\n      pub fn with_data_copied<D>(data: D) -> Self\n      where\n        D: AsRef<[$rust_type]>,\n      {\n        let mut data_copied = data.as_ref().to_vec();\n        let ret = $name {\n          data: data_copied.as_mut_ptr(),\n          length: data.as_ref().len(),\n          capacity: data_copied.capacity(),\n          finalizer_notify: ptr::null_mut::<fn(*mut $rust_type, usize)>(),\n          raw: None,\n          byte_offset: 0,\n        };\n        mem::forget(data_copied);\n        ret\n      }\n\n      /// # Safety\n      ///\n      /// The caller will be notified when the data is deallocated by vm\n      pub unsafe fn with_external_data<F>(data: *mut $rust_type, length: usize, notify: F) -> Self\n      where\n        F: 'static + FnOnce(*mut $rust_type, usize),\n      {\n        $name {\n          data,\n          length,\n          capacity: length,\n          finalizer_notify: Box::into_raw(Box::new(notify)),\n          raw: None,\n          byte_offset: 0,\n        }\n      }\n\n      #[allow(clippy::should_implement_trait)]\n      /// # Safety\n      ///\n      /// This is literally undefined behavior, as the JS side may always modify the underlying buffer,\n      /// without synchronization.\n      pub unsafe fn as_mut(&mut self) -> &mut [$rust_type] {\n        if self.data.is_null() {\n          return &mut [];\n        }\n\n        unsafe { std::slice::from_raw_parts_mut(self.data, self.length) }\n      }\n    }\n\n    impl Deref for $name {\n      type Target = [$rust_type];\n\n      fn deref(&self) -> &Self::Target {\n        self.as_ref()\n      }\n    }\n\n    impl AsRef<[$rust_type]> for $name {\n      fn as_ref(&self) -> &[$rust_type] {\n        if self.data.is_null() {\n          return &[];\n        }\n\n        unsafe { std::slice::from_raw_parts(self.data, self.length) }\n      }\n    }\n\n    impl TypeName for $name {\n      fn type_name() -> &'static str {\n        concat!(\"TypedArray<\", stringify!($rust_type), \">\")\n      }\n\n      fn value_type() -> crate::ValueType {\n        crate::ValueType::Object\n      }\n    }\n\n    impl ValidateNapiValue for $name {\n      unsafe fn validate(\n        env: sys::napi_env,\n        napi_val: sys::napi_value,\n      ) -> Result<crate::sys::napi_value> {\n        let mut is_typed_array = false;\n        check_status!(\n          unsafe { sys::napi_is_typedarray(env, napi_val, &mut is_typed_array) },\n          \"Failed to check if value is typed array\"\n        )?;\n        if !is_typed_array {\n          return Err(Error::new(\n            Status::InvalidArg,\n            \"Expected a TypedArray value\".to_owned(),\n          ));\n        }\n        Ok(ptr::null_mut())\n      }\n    }\n\n    impl FromNapiValue for $name {\n      unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n        let mut typed_array_type = 0;\n        let mut length = 0;\n        let mut data = ptr::null_mut();\n        let mut array_buffer = ptr::null_mut();\n        let mut byte_offset = 0;\n        let mut ref_ = ptr::null_mut();\n        check_status!(\n          unsafe { sys::napi_create_reference(env, napi_val, 1, &mut ref_) },\n          \"Failed to create reference from TypedArray\"\n        )?;\n        check_status!(\n          unsafe {\n            sys::napi_get_typedarray_info(\n              env,\n              napi_val,\n              &mut typed_array_type,\n              &mut length,\n              &mut data,\n              &mut array_buffer,\n              &mut byte_offset,\n            )\n          },\n          \"Get TypedArray info failed\"\n        )?;\n        if typed_array_type != $typed_array_type as i32 {\n          return Err(Error::new(\n            Status::InvalidArg,\n            format!(\n              \"Expected {}, got {}Array\",\n              stringify!($name),\n              TypedArrayType::from(typed_array_type).as_ref()\n            ),\n          ));\n        }\n        Ok($name {\n          data: data.cast(),\n          length,\n          capacity: length,\n          byte_offset,\n          raw: Some((ref_, env)),\n          finalizer_notify: ptr::null_mut::<fn(*mut $rust_type, usize)>(),\n        })\n      }\n    }\n\n    impl ToNapiValue for $name {\n      unsafe fn to_napi_value(env: sys::napi_env, mut val: Self) -> Result<sys::napi_value> {\n        if let Some((ref_, _)) = val.raw {\n          let mut napi_value = std::ptr::null_mut();\n          check_status!(\n            unsafe { sys::napi_get_reference_value(env, ref_, &mut napi_value) },\n            \"Failed to get reference from ArrayBuffer\"\n          )?;\n          check_status!(\n            unsafe { sys::napi_delete_reference(env, ref_) },\n            \"Failed to delete reference in ArrayBuffer::to_napi_value\"\n          )?;\n          val.raw = Some((ptr::null_mut(), ptr::null_mut()));\n          return Ok(napi_value);\n        }\n        let mut arraybuffer_value = ptr::null_mut();\n        let ratio = mem::size_of::<$rust_type>();\n        let val_length = val.length;\n        let length = val_length * ratio;\n        let val_data = val.data;\n        if length == 0 {\n          // Rust uses 0x1 as the data pointer for empty buffers,\n          // but NAPI/V8 only allows multiple buffers to have\n          // the same data pointer if it's 0x0.\n          check_status!(\n            unsafe {\n              sys::napi_create_arraybuffer(env, length, ptr::null_mut(), &mut arraybuffer_value)\n            },\n            \"Create external arraybuffer failed\"\n          )?;\n        } else {\n          let hint_ptr = Box::into_raw(Box::new(val));\n          let mut status = unsafe {\n            sys::napi_create_external_arraybuffer(\n              env,\n              val_data.cast(),\n              length,\n              Some(finalizer::<$rust_type, $name>),\n              hint_ptr.cast(),\n              &mut arraybuffer_value,\n            )\n          };\n          if status == napi_sys::Status::napi_no_external_buffers_allowed {\n            let hint = unsafe { Box::from_raw(hint_ptr) };\n            let mut underlying_data = ptr::null_mut();\n            status = unsafe {\n              sys::napi_create_arraybuffer(\n                env,\n                length,\n                &mut underlying_data,\n                &mut arraybuffer_value,\n              )\n            };\n            check_status!(status, \"Create external arraybuffer failed\")?;\n            if length > 0 {\n              unsafe { std::ptr::copy_nonoverlapping(hint.data.cast(), underlying_data, length) };\n            }\n          } else {\n            check_status!(status, \"Create external arraybuffer failed\")?;\n          }\n        }\n        let mut napi_val = ptr::null_mut();\n        check_status!(\n          unsafe {\n            sys::napi_create_typedarray(\n              env,\n              $typed_array_type as i32,\n              val_length,\n              arraybuffer_value,\n              0,\n              &mut napi_val,\n            )\n          },\n          \"Create TypedArray failed\"\n        )?;\n        Ok(napi_val)\n      }\n    }\n\n    impl ToNapiValue for &mut $name {\n      unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n        if let Some((ref_, _)) = val.raw {\n          let mut napi_value = std::ptr::null_mut();\n          check_status!(\n            unsafe { sys::napi_get_reference_value(env, ref_, &mut napi_value) },\n            \"Failed to get reference from ArrayBuffer\"\n          )?;\n          return Ok(napi_value);\n        }\n        let mut arraybuffer_value = ptr::null_mut();\n        let ratio = mem::size_of::<$rust_type>();\n        let val_length = val.length;\n        let length = val_length * ratio;\n        let val_data = val.data;\n        let mut copied_val = None;\n        if length == 0 {\n          // Rust uses 0x1 as the data pointer for empty buffers,\n          // but NAPI/V8 only allows multiple buffers to have\n          // the same data pointer if it's 0x0.\n          check_status!(\n            unsafe {\n              sys::napi_create_arraybuffer(env, length, ptr::null_mut(), &mut arraybuffer_value)\n            },\n            \"Create external arraybuffer failed\"\n          )?;\n        } else {\n          // manually copy the data instead of implement `Clone` & `Copy` for TypedArray\n          // the TypedArray can't be copied if raw is not None\n          let val_copy = $name {\n            data: val.data,\n            length: val.length,\n            capacity: val.capacity,\n            byte_offset: val.byte_offset,\n            raw: None,\n            finalizer_notify: val.finalizer_notify,\n          };\n          let hint_ref: &mut $name = Box::leak(Box::new(val_copy));\n          let hint_ptr = hint_ref as *mut $name;\n          copied_val = Some(hint_ref);\n          let mut status = unsafe {\n            sys::napi_create_external_arraybuffer(\n              env,\n              val_data.cast(),\n              length,\n              Some(finalizer::<$rust_type, $name>),\n              hint_ptr.cast(),\n              &mut arraybuffer_value,\n            )\n          };\n          if status == napi_sys::Status::napi_no_external_buffers_allowed {\n            let hint = unsafe { Box::from_raw(hint_ptr) };\n            // Reset copied_val since hint is being reclaimed and will be dropped\n            copied_val = None;\n            // Clear val's data fields IMMEDIATELY after reclaiming hint.\n            // hint now owns the data and will free it when dropped (including on early return).\n            // We must clear val's fields before any check_status! that could return early,\n            // otherwise val would have dangling pointers if we return with an error.\n            // Note: hint.data still has the valid pointer for the copy operation below.\n            val.data = ptr::null_mut();\n            val.length = 0;\n            val.capacity = 0;\n            val.finalizer_notify = ptr::null_mut::<fn(*mut $rust_type, usize)>();\n            let mut underlying_data = ptr::null_mut();\n            status = unsafe {\n              sys::napi_create_arraybuffer(\n                env,\n                length,\n                &mut underlying_data,\n                &mut arraybuffer_value,\n              )\n            };\n            check_status!(status, \"Create external arraybuffer failed\")?;\n            if length > 0 {\n              unsafe { std::ptr::copy_nonoverlapping(hint.data.cast(), underlying_data, length) };\n            }\n          } else {\n            check_status!(status, \"Create external arraybuffer failed\")?;\n          }\n        }\n        let mut napi_val = ptr::null_mut();\n        check_status!(\n          unsafe {\n            sys::napi_create_typedarray(\n              env,\n              $typed_array_type as i32,\n              val_length,\n              arraybuffer_value,\n              0,\n              &mut napi_val,\n            )\n          },\n          \"Create TypedArray failed\"\n        )?;\n        let mut ref_ = ptr::null_mut();\n        check_status!(\n          unsafe { sys::napi_create_reference(env, napi_val, 1, &mut ref_) },\n          \"Failed to delete reference in ArrayBuffer::to_napi_value\"\n        )?;\n        val.raw = Some((ref_, env));\n        if let Some(copied_val) = copied_val {\n          val.finalizer_notify = ptr::null_mut::<fn(*mut $rust_type, usize)>();\n          val.data = ptr::null_mut();\n          val.length = 0;\n          val.capacity = 0;\n          copied_val.raw = Some((ref_, ptr::null_mut()));\n        }\n        Ok(napi_val)\n      }\n    }\n  };\n}\n\nmacro_rules! impl_from_slice {\n  ($name:ident, $slice_type:ident, $rust_type:ident, $typed_array_type:expr) => {\n    #[derive(Clone, Copy)]\n    pub struct $slice_type<'env> {\n      pub(crate) inner: NonNull<$rust_type>,\n      pub(crate) length: usize,\n      raw_value: sys::napi_value,\n      env: sys::napi_env,\n      _marker: PhantomData<&'env ()>,\n    }\n\n    impl <'env> $slice_type<'env> {\n      #[doc = \" Create a new `\"]\n      #[doc = stringify!($slice_type)]\n      #[doc = \"` from a `Vec<\"]\n      #[doc = stringify!($rust_type)]\n      #[doc = \">`.\"]\n      pub fn from_data<D: Into<Vec<$rust_type>>>(env: &Env, data: D) -> Result<Self> {\n        let mut buf = ptr::null_mut();\n        let mut data = data.into();\n        let mut inner_ptr = data.as_mut_ptr();\n        #[cfg(all(debug_assertions, not(windows), not(target_family = \"wasm\")))]\n        {\n          let is_existed = super::BUFFER_DATA.with(|buffer_data| {\n            let buffer = buffer_data.lock().expect(\"Unlock buffer data failed\");\n            buffer.contains(&inner_ptr.cast())\n          });\n          if is_existed {\n            panic!(\"Share the same data between different buffers is not allowed, see: https://github.com/nodejs/node/issues/32463#issuecomment-631974747\");\n          }\n        }\n        let len = data.len();\n        let array_buffer_len = len * mem::size_of::<$rust_type>();\n        let cap = data.capacity();\n        let finalize_hint = Box::into_raw(Box::new((len, cap)));\n        let mut status = unsafe {\n          sys::napi_create_external_arraybuffer(\n            env.0,\n            inner_ptr.cast(),\n            array_buffer_len,\n            Some(finalize_slice::<$rust_type>),\n            finalize_hint.cast(),\n            &mut buf,\n          )\n        };\n        if status == napi_sys::Status::napi_no_external_buffers_allowed {\n          unsafe {\n            let _ = Box::from_raw(finalize_hint);\n          }\n          let mut underlying_data = ptr::null_mut();\n          status = unsafe {\n            sys::napi_create_arraybuffer(\n              env.0,\n              array_buffer_len,\n              &mut underlying_data,\n              &mut buf,\n            )\n          };\n          check_status!(status, \"Failed to create buffer slice from data\")?;\n          if array_buffer_len > 0 {\n            let underlying_slice: &mut [u8] =\n              unsafe { std::slice::from_raw_parts_mut(underlying_data.cast(), array_buffer_len) };\n            underlying_slice.copy_from_slice(unsafe { core::slice::from_raw_parts(inner_ptr.cast(), array_buffer_len) });\n          }\n          inner_ptr = underlying_data.cast();\n        } else {\n          check_status!(status, \"Failed to create buffer slice from data\")?;\n          mem::forget(data);\n        }\n\n        let mut napi_val = ptr::null_mut();\n        check_status!(\n          unsafe {\n            sys::napi_create_typedarray(\n              env.0,\n              $typed_array_type as i32,\n              len,\n              buf,\n              0,\n              &mut napi_val,\n            )\n          },\n          \"Create TypedArray failed\"\n        )?;\n\n        Ok(Self {\n          inner: if len == 0 {\n            NonNull::dangling()\n          } else {\n            unsafe { NonNull::new_unchecked(inner_ptr.cast()) }\n          },\n          length: len,\n          raw_value: napi_val,\n          env: env.0,\n          _marker: PhantomData,\n        })\n      }\n\n      #[doc = \"## Safety\"]\n      #[doc = \"\"]\n      #[doc = \"Mostly the same with `from_data`\"]\n      #[doc = \"\"]\n      #[doc = \"Provided `finalize_callback` will be called when `\"]\n      #[doc = stringify!($slice_type)]\n      #[doc = \"` got dropped.\"]\n      #[doc = \"\"]\n      #[doc = \"You can pass in `noop_finalize` if you have nothing to do in finalize phase.\"]\n      #[doc = \"\"]\n      #[doc = \"### Notes\"]\n      #[doc = \"\"]\n      #[doc = \"JavaScript may mutate the data passed in to this buffer when writing the buffer.\"]\n      #[doc = \"However, some JavaScript runtimes do not support external buffers (notably electron!)\"]\n      #[doc = \"in which case modifications may be lost.\"]\n      #[doc = \"\"]\n      #[doc = \"If you need to support these runtimes, you should create a buffer by other means and then\"]\n      #[doc = \"later copy the data back out.\"]\n      pub unsafe fn from_external<T: 'env, F: FnOnce(Env, T)>(\n        env: &Env,\n        data: *mut $rust_type,\n        data_len: usize,\n        finalize_hint: T,\n        finalize_callback: F,\n      ) -> Result<Self> {\n        if data.is_null() || data as *const u8 == crate::EMPTY_VEC.as_ptr() {\n          return Err(Error::new(\n            Status::InvalidArg,\n            \"Borrowed data should not be null\".to_owned(),\n          ));\n        }\n        #[cfg(all(debug_assertions, not(windows), not(target_family = \"wasm\")))]\n        {\n          let is_existed = super::BUFFER_DATA.with(|buffer_data| {\n            let buffer = buffer_data.lock().expect(\"Unlock buffer data failed\");\n            buffer.contains(&data.cast())\n          });\n          if is_existed {\n            panic!(\"Share the same data between different buffers is not allowed, see: https://github.com/nodejs/node/issues/32463#issuecomment-631974747\");\n          }\n        }\n        let hint_ptr = Box::into_raw(Box::new((finalize_hint, finalize_callback)));\n        let mut arraybuffer_value = ptr::null_mut();\n        let array_buffer_len = data_len * mem::size_of::<$rust_type>();\n        let mut status = unsafe {\n          sys::napi_create_external_arraybuffer(\n            env.0,\n            data.cast(),\n            array_buffer_len,\n            Some(crate::env::raw_finalize_with_custom_callback::<T, F>),\n            hint_ptr.cast(),\n            &mut arraybuffer_value,\n          )\n        };\n        if status == sys::Status::napi_no_external_buffers_allowed {\n          let (hint, finalize) = *Box::from_raw(hint_ptr);\n          let mut underlying_data = ptr::null_mut();\n          status = unsafe {\n            sys::napi_create_arraybuffer(\n              env.0,\n              array_buffer_len,\n              &mut underlying_data,\n              &mut arraybuffer_value,\n            )\n          };\n          // Copy data before calling finalize, since finalize may free the source data\n          if status == sys::Status::napi_ok && array_buffer_len > 0 {\n            let underlying_slice: &mut [u8] =\n              unsafe { std::slice::from_raw_parts_mut(underlying_data.cast(), array_buffer_len) };\n            underlying_slice.copy_from_slice(unsafe { std::slice::from_raw_parts(data.cast(), array_buffer_len) });\n          }\n          // Always call finalize to clean up caller's resources, even on error\n          finalize(*env, hint);\n          check_status!(status, \"Failed to create arraybuffer from data\")?;\n        } else {\n          check_status!(status, \"Failed to create arraybuffer from data\")?;\n        }\n\n        let mut napi_val = ptr::null_mut();\n        check_status!(\n          unsafe {\n            sys::napi_create_typedarray(\n              env.0,\n              $typed_array_type as i32,\n              data_len,\n              arraybuffer_value,\n              0,\n              &mut napi_val,\n            )\n          },\n          \"Create TypedArray failed\"\n        )?;\n\n        Ok(Self {\n          inner: if data_len == 0 {\n            NonNull::dangling()\n          } else {\n            unsafe { NonNull::new_unchecked(data.cast()) }\n          },\n          length: data_len,\n          raw_value: napi_val,\n          env: env.0,\n          _marker: PhantomData,\n        })\n      }\n\n      #[doc = \"Copy data from a `&[\"]\n      #[doc = stringify!($rust_type)]\n      #[doc = \"]` and create a `\"]\n      #[doc = stringify!($slice_type)]\n      #[doc = \"` from it.\"]\n      pub fn copy_from<D: AsRef<[$rust_type]>>(env: &Env, data: D) -> Result<Self> {\n        let data = data.as_ref();\n        let len = data.len();\n        let mut arraybuffer_value = ptr::null_mut();\n        let mut underlying_data = ptr::null_mut();\n\n        check_status!(\n          unsafe {\n            sys::napi_create_arraybuffer(\n              env.0,\n              len,\n              &mut underlying_data,\n              &mut arraybuffer_value,\n            )\n          },\n          \"Failed to create ArrayBuffer\"\n        )?;\n\n        let mut napi_val = ptr::null_mut();\n        check_status!(\n          unsafe {\n            sys::napi_create_typedarray(\n              env.0,\n              $typed_array_type as i32,\n              len,\n              arraybuffer_value,\n              0,\n              &mut napi_val,\n            )\n          },\n          \"Create TypedArray failed\"\n        )?;\n\n        Ok(Self {\n          inner: if len == 0 {\n            NonNull::dangling()\n          } else {\n            unsafe { NonNull::new_unchecked(underlying_data.cast()) }\n          },\n          length: len,\n          raw_value: napi_val,\n          env: env.0,\n          _marker: PhantomData,\n        })\n      }\n\n      /// Create from `ArrayBuffer`\n      pub fn from_arraybuffer(arraybuffer: &ArrayBuffer<'env>, byte_offset: usize, length: usize) -> Result<$slice_type<'env>> {\n        let env = arraybuffer.value.env;\n        let mut typed_array = ptr::null_mut();\n        check_status!(unsafe {\n          sys::napi_create_typedarray(env, $typed_array_type.into(), length, arraybuffer.value().value, byte_offset, &mut typed_array)\n        }, \"Failed to create TypedArray from ArrayBuffer\")?;\n\n        unsafe { FromNapiValue::from_napi_value(env, typed_array) }\n      }\n\n      /// extends the lifetime of the `TypedArray` to the lifetime of the `This`\n      pub fn assign_to_this<'a, U>(&self, this: This<'a, U>, name: &str) -> Result<$slice_type<'a>>\n      where\n        U: FromNapiValue + JsObjectValue<'a>,\n      {\n        let name = CString::new(name)?;\n        check_status!(\n          unsafe { sys::napi_set_named_property(self.env, this.object.raw(), name.as_ptr(), self.raw_value) },\n          \"Failed to assign {} to this\",\n          $slice_type::type_name()\n        )?;\n        Ok($slice_type {\n          env: self.env,\n          raw_value: self.raw_value,\n          inner: self.inner,\n          length: self.length,\n          _marker: PhantomData,\n        })\n      }\n\n      #[allow(clippy::should_implement_trait)]\n      /// # Safety\n      ///\n      /// This is literally undefined behavior, as the JS side may always modify the underlying buffer,\n      /// without synchronization.\n      pub unsafe fn as_mut(&mut self) -> &mut [$rust_type] {\n        unsafe { core::slice::from_raw_parts_mut(self.inner.as_ptr(), self.length) }\n      }\n\n      #[doc = \"Convert a `\"]\n      #[doc = stringify!($slice_type)]\n      #[doc = \"` to a `\"]\n      #[doc = stringify!($name)]\n      #[doc = \"`.\"]\n      #[doc = \"\"]\n      #[doc = \"This will perform a `napi_create_reference` internally.\"]\n      pub fn into_typed_array(self, env: &Env) -> Result<$name> {\n        unsafe { $name::from_napi_value(env.0, self.raw_value) }\n      }\n    }\n\n    impl<'env> JsValue<'env> for $slice_type<'env> {\n      fn value(&self) -> Value {\n        Value {\n          env: self.env,\n          value: self.raw_value,\n          value_type: ValueType::Object,\n        }\n      }\n    }\n\n    impl<'env> JsObjectValue<'env> for $slice_type<'env> { }\n\n    impl ToNapiValue for &$slice_type<'_> {\n      unsafe fn to_napi_value(_: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n        Ok(val.raw_value)\n      }\n    }\n\n    impl ToNapiValue for &mut $slice_type<'_> {\n      unsafe fn to_napi_value(_: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n        Ok(val.raw_value)\n      }\n    }\n\n    impl FromNapiValue for $slice_type<'_> {\n      unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n        let mut typed_array_type = 0;\n        let mut length = 0;\n        let mut data = ptr::null_mut();\n        let mut array_buffer = ptr::null_mut();\n        let mut byte_offset = 0;\n        check_status!(\n          unsafe {\n            sys::napi_get_typedarray_info(\n              env,\n              napi_val,\n              &mut typed_array_type,\n              &mut length,\n              &mut data,\n              &mut array_buffer,\n              &mut byte_offset,\n            )\n          },\n          \"Get TypedArray info failed\"\n        )?;\n        if typed_array_type != $typed_array_type as i32 {\n          return Err(Error::new(\n            Status::InvalidArg,\n            format!(\"Expected $name, got {}\", typed_array_type),\n          ));\n        }\n        // From the docs of `napi_get_typedarray_info`:\n        // > [out] data: The underlying data buffer of the node::Buffer. If length is 0, this may be\n        // > NULL or any other pointer value.\n        //\n        // In order to guarantee that `slice::from_raw_parts` is sound, the pointer must be non-null, so\n        // let's make sure it always is, even in the case of `napi_get_typedarray_info` returning a null\n        // ptr.\n        Ok(Self {\n          inner: if length == 0 {\n            ptr::NonNull::dangling()\n          } else {\n            ptr::NonNull::new_unchecked(data.cast())\n          },\n          length,\n          raw_value: napi_val,\n          env,\n          _marker: PhantomData,\n        })\n      }\n    }\n\n    impl TypeName for $slice_type<'_> {\n      fn type_name() -> &'static str {\n        concat!(\"TypedArray<\", stringify!($rust_type), \">\")\n      }\n\n      fn value_type() -> crate::ValueType {\n        crate::ValueType::Object\n      }\n    }\n\n    impl ValidateNapiValue for $slice_type<'_> {\n      unsafe fn validate(env: sys::napi_env, napi_val: sys::napi_value) -> Result<sys::napi_value> {\n        let mut is_typed_array = false;\n        check_status!(\n          unsafe { sys::napi_is_typedarray(env, napi_val, &mut is_typed_array) },\n          \"Failed to validate napi typed array\"\n        )?;\n        if !is_typed_array {\n          return Err(Error::new(\n            Status::InvalidArg,\n            \"Expected a TypedArray value\".to_owned(),\n          ));\n        }\n        Ok(ptr::null_mut())\n      }\n    }\n\n    impl AsRef<[$rust_type]> for $slice_type<'_> {\n      fn as_ref(&self) -> &[$rust_type] {\n        unsafe { core::slice::from_raw_parts(self.inner.as_ptr(), self.length) }\n      }\n    }\n\n    impl Deref for $slice_type<'_> {\n      type Target = [$rust_type];\n\n      fn deref(&self) -> &Self::Target {\n        self.as_ref()\n      }\n    }\n\n    impl FromNapiValue for &mut [$rust_type] {\n      unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n        let mut typed_array_type = 0;\n        let mut length = 0;\n        let mut data = ptr::null_mut();\n        let mut array_buffer = ptr::null_mut();\n        let mut byte_offset = 0;\n        check_status!(\n          unsafe {\n            sys::napi_get_typedarray_info(\n              env,\n              napi_val,\n              &mut typed_array_type,\n              &mut length,\n              &mut data,\n              &mut array_buffer,\n              &mut byte_offset,\n            )\n          },\n          \"Get TypedArray info failed\"\n        )?;\n        if typed_array_type != $typed_array_type as i32 {\n          return Err(Error::new(\n            Status::InvalidArg,\n            format!(\"Expected $name, got {}\", typed_array_type),\n          ));\n        }\n        Ok(if length == 0 {\n          &mut []\n        } else {\n          unsafe { core::slice::from_raw_parts_mut(data as *mut $rust_type, length) }\n        })\n      }\n    }\n\n    impl FromNapiValue for &[$rust_type] {\n      unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n        let mut typed_array_type = 0;\n        let mut length = 0;\n        let mut data = ptr::null_mut();\n        let mut array_buffer = ptr::null_mut();\n        let mut byte_offset = 0;\n        check_status!(\n          unsafe {\n            sys::napi_get_typedarray_info(\n              env,\n              napi_val,\n              &mut typed_array_type,\n              &mut length,\n              &mut data,\n              &mut array_buffer,\n              &mut byte_offset,\n            )\n          },\n          \"Get TypedArray info failed\"\n        )?;\n        if typed_array_type != $typed_array_type as i32 {\n          return Err(Error::new(\n            Status::InvalidArg,\n            format!(\"Expected $name, got {}\", typed_array_type),\n          ));\n        }\n        Ok(if length == 0 {\n          &[]\n        } else {\n          unsafe { core::slice::from_raw_parts_mut(data as *mut $rust_type, length) }\n        })\n      }\n    }\n\n    impl TypeName for &mut [$rust_type] {\n      fn type_name() -> &'static str {\n        concat!(\"TypedArray<\", stringify!($rust_type), \">\")\n      }\n\n      fn value_type() -> crate::ValueType {\n        crate::ValueType::Object\n      }\n    }\n\n    impl TypeName for &[$rust_type] {\n      fn type_name() -> &'static str {\n        concat!(\"TypedArray<\", stringify!($rust_type), \">\")\n      }\n\n      fn value_type() -> crate::ValueType {\n        crate::ValueType::Object\n      }\n    }\n\n    impl ValidateNapiValue for &[$rust_type] {\n      unsafe fn validate(env: sys::napi_env, napi_val: sys::napi_value) -> Result<sys::napi_value> {\n        let mut is_typed_array = false;\n        check_status!(\n          unsafe { sys::napi_is_typedarray(env, napi_val, &mut is_typed_array) },\n          \"Failed to validate napi typed array\"\n        )?;\n        if !is_typed_array {\n          return Err(Error::new(\n            Status::InvalidArg,\n            \"Expected a TypedArray value\".to_owned(),\n          ));\n        }\n        Ok(ptr::null_mut())\n      }\n    }\n\n    impl ValidateNapiValue for &mut [$rust_type] {\n      unsafe fn validate(env: sys::napi_env, napi_val: sys::napi_value) -> Result<sys::napi_value> {\n        let mut is_typed_array = false;\n        check_status!(\n          unsafe { sys::napi_is_typedarray(env, napi_val, &mut is_typed_array) },\n          \"Failed to validate napi typed array\"\n        )?;\n        if !is_typed_array {\n          return Err(Error::new(\n            Status::InvalidArg,\n            \"Expected a TypedArray value\".to_owned(),\n          ));\n        }\n        Ok(ptr::null_mut())\n      }\n    }\n  };\n}\n\nunsafe extern \"C\" fn finalizer<Data, T: Finalizer<RustType = Data> + AsRef<[Data]>>(\n  _env: sys::napi_env,\n  _finalize_data: *mut c_void,\n  finalize_hint: *mut c_void,\n) {\n  let data = unsafe { *Box::from_raw(finalize_hint as *mut T) };\n  drop(data);\n}\n\nunsafe extern \"C\" fn finalize_slice<Data>(\n  _env: sys::napi_env,\n  finalize_data: *mut c_void,\n  finalize_hint: *mut c_void,\n) {\n  let (length, capacity): (usize, usize) =\n    *unsafe { Box::from_raw(finalize_hint as *mut (usize, usize)) };\n  if finalize_data.is_null() {\n    return;\n  }\n  unsafe { Vec::from_raw_parts(finalize_data as *mut Data, length, capacity) };\n}\n\nimpl_typed_array!(Int8Array, i8, TypedArrayType::Int8);\nimpl_from_slice!(Int8Array, Int8ArraySlice, i8, TypedArrayType::Int8);\nimpl_typed_array!(Uint8Array, u8, TypedArrayType::Uint8);\nimpl_from_slice!(Uint8Array, Uint8ArraySlice, u8, TypedArrayType::Uint8);\nimpl_typed_array!(Uint8ClampedArray, u8, TypedArrayType::Uint8Clamped);\nimpl_typed_array!(Int16Array, i16, TypedArrayType::Int16);\nimpl_from_slice!(Int16Array, Int16ArraySlice, i16, TypedArrayType::Int16);\nimpl_typed_array!(Uint16Array, u16, TypedArrayType::Uint16);\nimpl_from_slice!(Uint16Array, Uint16ArraySlice, u16, TypedArrayType::Uint16);\nimpl_typed_array!(Int32Array, i32, TypedArrayType::Int32);\nimpl_from_slice!(Int32Array, Int32ArraySlice, i32, TypedArrayType::Int32);\nimpl_typed_array!(Uint32Array, u32, TypedArrayType::Uint32);\nimpl_from_slice!(Uint32Array, Uint32ArraySlice, u32, TypedArrayType::Uint32);\nimpl_typed_array!(Float32Array, f32, TypedArrayType::Float32);\nimpl_from_slice!(\n  Float32Array,\n  Float32ArraySlice,\n  f32,\n  TypedArrayType::Float32\n);\nimpl_typed_array!(Float64Array, f64, TypedArrayType::Float64);\nimpl_from_slice!(\n  Float64Array,\n  Float64ArraySlice,\n  f64,\n  TypedArrayType::Float64\n);\n#[cfg(feature = \"napi6\")]\nimpl_typed_array!(BigInt64Array, i64, TypedArrayType::BigInt64);\n#[cfg(feature = \"napi6\")]\nimpl_from_slice!(\n  BigInt64Array,\n  BigInt64ArraySlice,\n  i64,\n  TypedArrayType::BigInt64\n);\n#[cfg(feature = \"napi6\")]\nimpl_typed_array!(BigUint64Array, u64, TypedArrayType::BigUint64);\n#[cfg(feature = \"napi6\")]\nimpl_from_slice!(\n  BigUint64Array,\n  BigUint64ArraySlice,\n  u64,\n  TypedArrayType::BigUint64\n);\n\nimpl Uint8Array {\n  /// Create a new JavaScript `Uint8Array` from a Rust `String` without copying the underlying data.\n  pub fn from_string(mut s: String) -> Self {\n    let len = s.len();\n    let cap = s.capacity();\n    let ret = Self {\n      data: s.as_mut_ptr(),\n      length: len,\n      capacity: cap,\n      finalizer_notify: Box::into_raw(Box::new(move |data, _| {\n        drop(unsafe { String::from_raw_parts(data, len, cap) });\n      })),\n      byte_offset: 0,\n      raw: None,\n    };\n    mem::forget(s);\n    ret\n  }\n}\n\n#[derive(Clone, Copy)]\n/// Zero copy Uint8ClampedArray slice shared between Rust and Node.js.\n/// It can only be used in non-async context and the lifetime is bound to the fn closure.\n/// If you want to use Node.js `Uint8ClampedArray` in async context or want to extend the lifetime, use `Uint8ClampedArray` instead.\npub struct Uint8ClampedSlice<'scope> {\n  pub(crate) inner: NonNull<u8>,\n  pub(crate) length: usize,\n  raw_value: sys::napi_value,\n  env: sys::napi_env,\n  _marker: PhantomData<&'scope ()>,\n}\n\nimpl FromNapiValue for Uint8ClampedSlice<'_> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut typed_array_type = 0;\n    let mut length = 0;\n    let mut data = ptr::null_mut();\n    let mut array_buffer = ptr::null_mut();\n    let mut byte_offset = 0;\n    check_status!(\n      unsafe {\n        sys::napi_get_typedarray_info(\n          env,\n          napi_val,\n          &mut typed_array_type,\n          &mut length,\n          &mut data,\n          &mut array_buffer,\n          &mut byte_offset,\n        )\n      },\n      \"Get TypedArray info failed\"\n    )?;\n    if typed_array_type != TypedArrayType::Uint8Clamped as i32 {\n      return Err(Error::new(\n        Status::InvalidArg,\n        format!(\"Expected $name, got {typed_array_type}\"),\n      ));\n    }\n    Ok(Self {\n      inner: if length == 0 {\n        NonNull::dangling()\n      } else {\n        unsafe { NonNull::new_unchecked(data.cast()) }\n      },\n      length,\n      raw_value: napi_val,\n      env,\n      _marker: PhantomData,\n    })\n  }\n}\n\nimpl<'env> JsValue<'env> for Uint8ClampedSlice<'env> {\n  fn value(&self) -> Value {\n    Value {\n      env: self.env,\n      value: self.raw_value,\n      value_type: ValueType::Object,\n    }\n  }\n}\n\nimpl<'env> JsObjectValue<'env> for Uint8ClampedSlice<'env> {}\n\nimpl TypeName for Uint8ClampedSlice<'_> {\n  fn type_name() -> &'static str {\n    \"Uint8ClampedArray\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl ValidateNapiValue for Uint8ClampedSlice<'_> {\n  unsafe fn validate(env: sys::napi_env, napi_val: sys::napi_value) -> Result<sys::napi_value> {\n    let mut is_typedarray = false;\n    check_status!(\n      unsafe { sys::napi_is_typedarray(env, napi_val, &mut is_typedarray) },\n      \"Failed to validate typed buffer\"\n    )?;\n    if !is_typedarray {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Expected a TypedArray value\".to_owned(),\n      ));\n    }\n    Ok(ptr::null_mut())\n  }\n}\n\nimpl AsRef<[u8]> for Uint8ClampedSlice<'_> {\n  fn as_ref(&self) -> &[u8] {\n    unsafe { core::slice::from_raw_parts(self.inner.as_ptr(), self.length) }\n  }\n}\n\nimpl Deref for Uint8ClampedSlice<'_> {\n  type Target = [u8];\n\n  fn deref(&self) -> &Self::Target {\n    unsafe { core::slice::from_raw_parts(self.inner.as_ptr(), self.length) }\n  }\n}\n\nimpl<'env> Uint8ClampedSlice<'env> {\n  /// Create a new `Uint8ClampedSlice` from Vec<u8>\n  pub fn from_data<D: Into<Vec<u8>>>(env: &Env, data: D) -> Result<Self> {\n    let mut buf = ptr::null_mut();\n    let mut data: Vec<u8> = data.into();\n    let mut inner_ptr = data.as_mut_ptr();\n    #[cfg(all(debug_assertions, not(windows), not(target_family = \"wasm\")))]\n    {\n      let is_existed = super::BUFFER_DATA.with(|buffer_data| {\n        let buffer = buffer_data.lock().expect(\"Unlock buffer data failed\");\n        buffer.contains(&inner_ptr)\n      });\n      if is_existed {\n        panic!(\"Share the same data between different buffers is not allowed, see: https://github.com/nodejs/node/issues/32463#issuecomment-631974747\");\n      }\n    }\n    let len = data.len();\n    let cap = data.capacity();\n    let finalize_hint = Box::into_raw(Box::new((len, cap)));\n    let mut status = unsafe {\n      sys::napi_create_external_arraybuffer(\n        env.0,\n        inner_ptr.cast(),\n        data.len(),\n        Some(finalize_slice::<u8>),\n        finalize_hint.cast(),\n        &mut buf,\n      )\n    };\n    if status == napi_sys::Status::napi_no_external_buffers_allowed {\n      unsafe {\n        let _ = Box::from_raw(finalize_hint);\n      }\n      let mut underlying_data = ptr::null_mut();\n      status = unsafe { sys::napi_create_arraybuffer(env.0, len, &mut underlying_data, &mut buf) };\n      check_status!(status, \"Failed to create arraybuffer\")?;\n      if len > 0 {\n        let underlying_slice: &mut [u8] =\n          unsafe { std::slice::from_raw_parts_mut(underlying_data.cast(), len) };\n        underlying_slice.copy_from_slice(data.as_slice());\n      }\n      inner_ptr = underlying_data.cast();\n    } else {\n      check_status!(status, \"Failed to create arraybuffer\")?;\n      mem::forget(data);\n    }\n\n    let mut napi_val = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_create_typedarray(\n          env.0,\n          TypedArrayType::Uint8Clamped as i32,\n          len,\n          buf,\n          0,\n          &mut napi_val,\n        )\n      },\n      \"Create TypedArray failed\"\n    )?;\n\n    Ok(Self {\n      inner: if len == 0 {\n        NonNull::dangling()\n      } else {\n        unsafe { NonNull::new_unchecked(inner_ptr.cast()) }\n      },\n      length: len,\n      raw_value: napi_val,\n      env: env.0,\n      _marker: PhantomData,\n    })\n  }\n\n  /// ## Safety\n  ///\n  /// Mostly the same with `from_data`\n  ///\n  /// Provided `finalize_callback` will be called when `Uint8ClampedSlice` got dropped.\n  ///\n  /// You can pass in `noop_finalize` if you have nothing to do in finalize phase.\n  ///\n  /// ### Notes\n  ///\n  /// JavaScript may mutate the data passed in to this buffer when writing the buffer.\n  ///\n  /// However, some JavaScript runtimes do not support external buffers (notably electron!)\n  ///\n  /// in which case modifications may be lost.\n  ///\n  /// If you need to support these runtimes, you should create a buffer by other means and then\n  /// later copy the data back out.\n  pub unsafe fn from_external<T: 'env, F: FnOnce(Env, T)>(\n    env: &Env,\n    data: *mut u8,\n    len: usize,\n    finalize_hint: T,\n    finalize_callback: F,\n  ) -> Result<Self> {\n    if data.is_null() || std::ptr::eq(data, crate::EMPTY_VEC.as_ptr()) {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Borrowed data should not be null\".to_owned(),\n      ));\n    }\n    #[cfg(all(debug_assertions, not(windows), not(target_family = \"wasm\")))]\n    {\n      let is_existed = super::BUFFER_DATA.with(|buffer_data| {\n        let buffer = buffer_data.lock().expect(\"Unlock buffer data failed\");\n        buffer.contains(&data)\n      });\n      if is_existed {\n        panic!(\"Share the same data between different buffers is not allowed, see: https://github.com/nodejs/node/issues/32463#issuecomment-631974747\");\n      }\n    }\n    let hint_ptr = Box::into_raw(Box::new((finalize_hint, finalize_callback)));\n    let mut arraybuffer_value = ptr::null_mut();\n    let mut status = unsafe {\n      sys::napi_create_external_arraybuffer(\n        env.0,\n        data.cast(),\n        len,\n        Some(crate::env::raw_finalize_with_custom_callback::<T, F>),\n        hint_ptr.cast(),\n        &mut arraybuffer_value,\n      )\n    };\n    if status == sys::Status::napi_no_external_buffers_allowed {\n      let (hint, finalize) = *Box::from_raw(hint_ptr);\n      let mut underlying_data = ptr::null_mut();\n      status = unsafe {\n        sys::napi_create_arraybuffer(env.0, len, &mut underlying_data, &mut arraybuffer_value)\n      };\n      // Copy data before calling finalize, since finalize may free the source data\n      if status == sys::Status::napi_ok && len > 0 {\n        let underlying_slice: &mut [u8] =\n          unsafe { std::slice::from_raw_parts_mut(underlying_data.cast(), len) };\n        underlying_slice.copy_from_slice(unsafe { std::slice::from_raw_parts(data, len) });\n      }\n      // Always call finalize to clean up caller's resources, even on error\n      finalize(*env, hint);\n      check_status!(status, \"Failed to create arraybuffer from data\")?;\n    } else {\n      check_status!(status, \"Failed to create arraybuffer from data\")?;\n    }\n\n    let mut napi_val = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_create_typedarray(\n          env.0,\n          TypedArrayType::Uint8Clamped as i32,\n          len,\n          arraybuffer_value,\n          0,\n          &mut napi_val,\n        )\n      },\n      \"Create TypedArray failed\"\n    )?;\n\n    Ok(Self {\n      inner: if len == 0 {\n        NonNull::dangling()\n      } else {\n        unsafe { NonNull::new_unchecked(data.cast()) }\n      },\n      length: len,\n      raw_value: napi_val,\n      env: env.0,\n      _marker: PhantomData,\n    })\n  }\n\n  /// Copy data from a `&[u8]` and create a `Uint8ClampedSlice` from it.\n  pub fn copy_from<D: AsRef<[u8]>>(env: &Env, data: D) -> Result<Self> {\n    let data = data.as_ref();\n    let len = data.len();\n    let mut arraybuffer_value = ptr::null_mut();\n    let mut underlying_data = ptr::null_mut();\n\n    check_status!(\n      unsafe {\n        sys::napi_create_arraybuffer(env.0, len, &mut underlying_data, &mut arraybuffer_value)\n      },\n      \"Failed to create ArrayBuffer\"\n    )?;\n\n    let mut napi_val = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_create_typedarray(\n          env.0,\n          TypedArrayType::Uint8Clamped as i32,\n          len,\n          arraybuffer_value,\n          0,\n          &mut napi_val,\n        )\n      },\n      \"Create TypedArray failed\"\n    )?;\n\n    Ok(Self {\n      inner: if len == 0 {\n        NonNull::dangling()\n      } else {\n        unsafe { NonNull::new_unchecked(underlying_data.cast()) }\n      },\n      length: len,\n      raw_value: napi_val,\n      env: env.0,\n      _marker: PhantomData,\n    })\n  }\n\n  /// Create from `ArrayBuffer`\n  pub fn from_arraybuffer(\n    arraybuffer: &ArrayBuffer<'env>,\n    byte_offset: usize,\n    length: usize,\n  ) -> Result<Self> {\n    let env = arraybuffer.value.env;\n    let mut typed_array = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_create_typedarray(\n          env,\n          TypedArrayType::Uint8Clamped as i32,\n          length,\n          arraybuffer.value().value,\n          byte_offset,\n          &mut typed_array,\n        )\n      },\n      \"Failed to create TypedArray from ArrayBuffer\"\n    )?;\n\n    unsafe { FromNapiValue::from_napi_value(env, typed_array) }\n  }\n\n  /// extends the lifetime of the `TypedArray` to the lifetime of the `This`\n  pub fn assign_to_this<'a, U>(&self, this: This<'a, U>, name: &str) -> Result<Self>\n  where\n    U: FromNapiValue + JsObjectValue<'a>,\n  {\n    let name = CString::new(name)?;\n    check_status!(\n      unsafe {\n        sys::napi_set_named_property(self.env, this.object.raw(), name.as_ptr(), self.raw_value)\n      },\n      \"Failed to assign {} to this\",\n      Self::type_name()\n    )?;\n    Ok(Self {\n      env: self.env,\n      raw_value: self.raw_value,\n      inner: self.inner,\n      length: self.length,\n      _marker: PhantomData,\n    })\n  }\n\n  #[allow(clippy::should_implement_trait)]\n  /// # Safety\n  ///\n  /// This is literally undefined behavior, as the JS side may always modify the underlying buffer,\n  /// without synchronization.\n  pub unsafe fn as_mut(&mut self) -> &mut [u8] {\n    core::slice::from_raw_parts_mut(self.inner.as_ptr(), self.length)\n  }\n\n  /// Convert a `Uint8ClampedSlice` to a `Uint8ClampedArray`.\n  pub fn into_typed_array(self, env: &Env) -> Result<Self> {\n    unsafe { Self::from_napi_value(env.0, self.raw_value) }\n  }\n}\n\nimpl<T: Into<Vec<u8>>> From<T> for Uint8Array {\n  fn from(data: T) -> Self {\n    Uint8Array::new(data.into())\n  }\n}\n\nimpl<T: Into<Vec<u8>>> From<T> for Uint8ClampedArray {\n  fn from(data: T) -> Self {\n    Uint8ClampedArray::new(data.into())\n  }\n}\n\nimpl<T: Into<Vec<u16>>> From<T> for Uint16Array {\n  fn from(data: T) -> Self {\n    Uint16Array::new(data.into())\n  }\n}\n\nimpl<T: Into<Vec<u32>>> From<T> for Uint32Array {\n  fn from(data: T) -> Self {\n    Uint32Array::new(data.into())\n  }\n}\n\nimpl<T: Into<Vec<i8>>> From<T> for Int8Array {\n  fn from(data: T) -> Self {\n    Int8Array::new(data.into())\n  }\n}\n\nimpl<T: Into<Vec<i16>>> From<T> for Int16Array {\n  fn from(data: T) -> Self {\n    Int16Array::new(data.into())\n  }\n}\n\nimpl<T: Into<Vec<i32>>> From<T> for Int32Array {\n  fn from(data: T) -> Self {\n    Int32Array::new(data.into())\n  }\n}\n\nimpl<T: Into<Vec<f32>>> From<T> for Float32Array {\n  fn from(data: T) -> Self {\n    Float32Array::new(data.into())\n  }\n}\n\nimpl<T: Into<Vec<f64>>> From<T> for Float64Array {\n  fn from(data: T) -> Self {\n    Float64Array::new(data.into())\n  }\n}\n\n#[cfg(feature = \"napi6\")]\nimpl<T: Into<Vec<i64>>> From<T> for BigInt64Array {\n  fn from(data: T) -> Self {\n    BigInt64Array::new(data.into())\n  }\n}\n#[cfg(feature = \"napi6\")]\nimpl<T: Into<Vec<u64>>> From<T> for BigUint64Array {\n  fn from(data: T) -> Self {\n    BigUint64Array::new(data.into())\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/bigint.rs",
    "content": "/// We don't implement `FromNapiValue` for `i64` `u64` `i128` `u128` `isize` `usize` here\n/// Because converting directly from `JsBigInt` to these values may result in a loss of precision and thus unintended behavior\n/// ```rust\n/// use napi::{bindgen_prelude::*, JsBigint};\n///\n/// #[napi]\n/// fn bigint_add(mut a: Bigint, mut b: Bigint) -> u128 {\n///     a.get_u128().1 + b.get_u128().1 // We have opportunity to check if the `u128` has lost precision\n/// }\n/// ```\nuse std::{cmp::max, ptr};\n\nuse crate::{check_status, sys};\n\nuse super::{FromNapiValue, ToNapiValue, TypeName, ValidateNapiValue};\n\n/// i64 is converted to `Number`\n#[repr(transparent)]\n#[allow(non_camel_case_types)]\npub struct i64n(pub i64);\n\n/// <https://nodejs.org/api/n-api.html#napi_create_bigint_words>\n/// The resulting BigInt is calculated as: (–1)^sign_bit (words\\[0\\] × (2^64)^0 + words\\[1\\] × (2^64)^1 + …)\n#[derive(Debug, Clone, Eq)]\npub struct BigInt {\n  /// true for negative numbers\n  pub sign_bit: bool,\n  pub words: Vec<u64>,\n}\n\nimpl PartialEq for BigInt {\n  fn eq(&self, other: &Self) -> bool {\n    for i in 0..max(self.words.len(), other.words.len()) {\n      if self.words.get(i).unwrap_or(&0) != other.words.get(i).unwrap_or(&0) {\n        return false;\n      }\n    }\n    self.sign_bit == other.sign_bit\n  }\n}\n\nimpl TypeName for BigInt {\n  fn type_name() -> &'static str {\n    \"BigInt\"\n  }\n\n  fn value_type() -> crate::ValueType {\n    crate::ValueType::BigInt\n  }\n}\n\nimpl ValidateNapiValue for BigInt {}\n\nimpl FromNapiValue for BigInt {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> crate::Result<Self> {\n    let mut word_count = 0usize;\n    check_status!(unsafe {\n      sys::napi_get_value_bigint_words(\n        env,\n        napi_val,\n        ptr::null_mut(),\n        &mut word_count,\n        ptr::null_mut(),\n      )\n    })?;\n    let mut words: Vec<u64> = Vec::with_capacity(word_count);\n    let mut sign_bit = 0;\n\n    unsafe {\n      check_status!(sys::napi_get_value_bigint_words(\n        env,\n        napi_val,\n        &mut sign_bit,\n        &mut word_count,\n        words.as_mut_ptr(),\n      ))?;\n\n      words.set_len(word_count);\n    }\n    if word_count == 0 {\n      words = vec![0];\n    }\n    Ok(BigInt {\n      sign_bit: sign_bit == 1,\n      words,\n    })\n  }\n}\n\nimpl BigInt {\n  /// (signed, value, lossless)\n  /// get the first word of the BigInt as `u64`\n  /// return true in the last element of tuple if the value is lossless\n  /// or the value is truncated\n  pub fn get_u64(&self) -> (bool, u64, bool) {\n    (\n      self.sign_bit,\n      self.words[0],\n      !self.sign_bit && self.words.len() == 1,\n    )\n  }\n\n  /// (value, lossless)\n  /// get the first word of the BigInt as `i64` with the sign applied\n  /// return true if the value is lossless\n  /// or the value is truncated\n  pub fn get_i64(&self) -> (i64, bool) {\n    if self.sign_bit && self.words[0] == i64::MIN.unsigned_abs() {\n      return (i64::MIN, self.words.len() == 1);\n    }\n    (\n      self.words[0] as i64 * if self.sign_bit { -1 } else { 1 },\n      self.words.len() == 1 && self.words[0] as i64 >= 0,\n    )\n  }\n\n  /// (value, lossless)\n  /// get the first two words of the BigInt as `i128` with the sign applied\n  /// return true if the value is lossless\n  /// or the value is truncated\n  pub fn get_i128(&self) -> (i128, bool) {\n    let len = self.words.len();\n    if len == 1 {\n      (\n        self.words[0] as i128 * if self.sign_bit { -1 } else { 1 },\n        true,\n      )\n    } else {\n      let val = self.words[0] as u128 + ((self.words[1] as u128) << 64);\n      if self.sign_bit && val == i128::MIN.unsigned_abs() {\n        return (i128::MIN, len > 2);\n      }\n      (\n        val as i128 * if self.sign_bit { -1 } else { 1 },\n        len == 2 && self.words[1] as i64 >= 0,\n      )\n    }\n  }\n\n  /// (signed, value, lossless)\n  /// get the first two words of the BigInt as `u128`\n  /// return true if the value is lossless\n  /// or the value is truncated\n  pub fn get_u128(&self) -> (bool, u128, bool) {\n    let len = self.words.len();\n    if len == 1 {\n      (self.sign_bit, self.words[0] as u128, true)\n    } else {\n      let val = self.words[0] as u128 + ((self.words[1] as u128) << 64);\n      (self.sign_bit, val, len == 2)\n    }\n  }\n}\n\nimpl ToNapiValue for BigInt {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    let mut raw_value = ptr::null_mut();\n    let len = val.words.len();\n    check_status!(unsafe {\n      sys::napi_create_bigint_words(\n        env,\n        match val.sign_bit {\n          true => 1,\n          false => 0,\n        },\n        len,\n        val.words.as_ptr(),\n        &mut raw_value,\n      )\n    })?;\n    Ok(raw_value)\n  }\n}\n\npub(crate) unsafe fn u128_with_sign_to_napi_value(\n  env: sys::napi_env,\n  val: u128,\n  sign_bit: i32,\n) -> crate::Result<sys::napi_value> {\n  let mut raw_value = ptr::null_mut();\n  if cfg!(target_endian = \"little\") {\n    let words = &val as *const u128 as *const u64;\n    check_status!(\n      unsafe { sys::napi_create_bigint_words(env, sign_bit, 2, words, &mut raw_value) },\n      \"Failed to create BigInt from u128\"\n    )?;\n    return Ok(raw_value);\n  }\n\n  let arr: [u64; 2] = [val as _, (val >> 64) as _];\n  let words = &arr as *const u64;\n  check_status!(\n    unsafe { sys::napi_create_bigint_words(env, sign_bit, 2, words, &mut raw_value) },\n    \"Failed to create BigInt from u128\"\n  )?;\n  Ok(raw_value)\n}\n\nimpl ToNapiValue for i128 {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    let sign_bit = i32::from(val <= 0);\n    let val = val.unsigned_abs();\n    u128_with_sign_to_napi_value(env, val, sign_bit)\n  }\n}\n\nimpl ToNapiValue for &i128 {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, *val)\n  }\n}\n\nimpl ToNapiValue for &mut i128 {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, *val)\n  }\n}\n\nimpl ToNapiValue for u128 {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    u128_with_sign_to_napi_value(env, val, 0)\n  }\n}\n\nimpl ToNapiValue for &u128 {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, *val)\n  }\n}\n\nimpl ToNapiValue for &mut u128 {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, *val)\n  }\n}\n\nimpl ToNapiValue for i64n {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    let mut raw_value = ptr::null_mut();\n    check_status!(unsafe { sys::napi_create_bigint_int64(env, val.0, &mut raw_value) })?;\n    Ok(raw_value)\n  }\n}\n\nimpl ToNapiValue for &i64n {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, i64n(val.0))\n  }\n}\n\nimpl ToNapiValue for &mut i64n {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, i64n(val.0))\n  }\n}\n\nimpl ToNapiValue for u64 {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    let mut raw_value = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_create_bigint_uint64(env, val, &mut raw_value) },\n      \"Failed to create BigInt from u64\"\n    )?;\n    Ok(raw_value)\n  }\n}\n\nimpl ToNapiValue for &u64 {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, *val)\n  }\n}\n\nimpl ToNapiValue for &mut u64 {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, *val)\n  }\n}\n\nimpl ToNapiValue for usize {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    let mut raw_value = ptr::null_mut();\n    check_status!(unsafe { sys::napi_create_bigint_uint64(env, val as u64, &mut raw_value) })?;\n    Ok(raw_value)\n  }\n}\n\nimpl ToNapiValue for isize {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    let mut raw_value = ptr::null_mut();\n    check_status!(unsafe { sys::napi_create_bigint_int64(env, val as i64, &mut raw_value) })?;\n    Ok(raw_value)\n  }\n}\n\nimpl ToNapiValue for &usize {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, *val)\n  }\n}\n\nimpl ToNapiValue for &mut usize {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, *val)\n  }\n}\n\nimpl From<i64> for BigInt {\n  fn from(val: i64) -> Self {\n    BigInt {\n      sign_bit: val < 0,\n      words: vec![val.unsigned_abs()],\n    }\n  }\n}\n\nimpl From<u64> for BigInt {\n  fn from(val: u64) -> Self {\n    BigInt {\n      sign_bit: false,\n      words: vec![val],\n    }\n  }\n}\n\nimpl From<i128> for BigInt {\n  fn from(val: i128) -> Self {\n    let sign_bit = val < 0;\n    let val = val.unsigned_abs();\n    BigInt {\n      sign_bit,\n      words: vec![val as _, (val >> 64) as _],\n    }\n  }\n}\n\nimpl From<u128> for BigInt {\n  fn from(val: u128) -> Self {\n    BigInt {\n      sign_bit: false,\n      words: vec![val as _, (val >> 64) as _],\n    }\n  }\n}\n\n#[test]\nfn test_bigint_comparison() {\n  assert_eq!(BigInt::from(1_i64), BigInt::from(1_i64));\n  assert_eq!(BigInt::from(1_i64), BigInt::from(1_i128));\n  assert_eq!(BigInt::from(1_i64), BigInt::from(1_u128));\n  assert_eq!(BigInt::from(1_i64), BigInt::from(1_u64));\n\n  assert_eq!(BigInt::from(-1_i64), BigInt::from(-1_i128));\n\n  assert_ne!(BigInt::from(1_i64), BigInt::from(-1_i128));\n  assert_ne!(BigInt::from(1_i64), BigInt::from(2_i64));\n\n  assert_eq!(BigInt::from(i128::MAX), BigInt::from(i128::MAX));\n  assert_ne!(BigInt::from(i64::MAX), BigInt::from(i128::MAX));\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/boolean.rs",
    "content": "use crate::{bindgen_prelude::*, check_status, sys, ValueType};\n\nimpl TypeName for bool {\n  fn type_name() -> &'static str {\n    \"bool\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Boolean\n  }\n}\n\nimpl ValidateNapiValue for bool {}\n\nimpl ToNapiValue for bool {\n  unsafe fn to_napi_value(env: sys::napi_env, val: bool) -> Result<sys::napi_value> {\n    let mut ptr = std::ptr::null_mut();\n\n    check_status!(\n      unsafe { sys::napi_get_boolean(env, val, &mut ptr) },\n      \"Failed to convert rust type `bool` into napi value\",\n    )?;\n\n    Ok(ptr)\n  }\n}\n\nimpl ToNapiValue for &bool {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, *val)\n  }\n}\n\nimpl ToNapiValue for &mut bool {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, *val)\n  }\n}\n\nimpl FromNapiValue for bool {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut ret = false;\n\n    check_status!(\n      unsafe { sys::napi_get_value_bool(env, napi_val, &mut ret) },\n      \"Failed to convert napi value into rust type `bool`\",\n    )?;\n\n    Ok(ret)\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/buffer.rs",
    "content": "#[cfg(all(debug_assertions, not(windows), not(target_family = \"wasm\")))]\nuse std::collections::HashSet;\nuse std::ffi::c_void;\nuse std::mem;\nuse std::ops::{Deref, DerefMut};\nuse std::ptr::{self, NonNull};\nuse std::slice;\n#[cfg(all(debug_assertions, not(windows), not(target_family = \"wasm\")))]\nuse std::sync::Mutex;\n\n#[cfg(all(feature = \"napi4\", not(feature = \"noop\")))]\nuse crate::bindgen_prelude::{CUSTOM_GC_TSFN, CUSTOM_GC_TSFN_DESTROYED, THREADS_CAN_ACCESS_ENV};\nuse crate::{\n  bindgen_prelude::*, check_status, env::EMPTY_VEC, sys, JsValue, Result, Value, ValueType,\n};\n\n#[cfg(all(debug_assertions, not(windows), not(target_family = \"wasm\")))]\nthread_local! {\n  pub (crate) static BUFFER_DATA: Mutex<HashSet<*mut u8>> = Default::default();\n}\n\n/// Zero copy buffer slice shared between Rust and Node.js.\n///\n/// It can only be used in non-async context and the lifetime is bound to the fn closure.\n///\n/// If you want to use Node.js Buffer in async context or want to extend the lifetime, use `Buffer` instead.\npub struct BufferSlice<'env> {\n  pub(crate) inner: &'env mut [u8],\n  pub(crate) raw_value: sys::napi_value,\n  #[allow(dead_code)]\n  pub(crate) env: sys::napi_env,\n}\n\nimpl<'env> BufferSlice<'env> {\n  /// Create a new `BufferSlice` from a `Vec<u8>`.\n  ///\n  /// While this is still a fully-supported data structure, in most cases using a `Uint8Array` will suffice.\n  pub fn from_data<D: Into<Vec<u8>>>(env: &Env, data: D) -> Result<Self> {\n    let mut buf = ptr::null_mut();\n    let mut data = data.into();\n    let inner_ptr = data.as_mut_ptr();\n    #[cfg(all(debug_assertions, not(windows), not(target_family = \"wasm\")))]\n    {\n      let is_existed = BUFFER_DATA.with(|buffer_data| {\n        let buffer = buffer_data.lock().expect(\"Unlock buffer data failed\");\n        buffer.contains(&inner_ptr)\n      });\n      if is_existed {\n        panic!(\"Share the same data between different buffers is not allowed, see: https://github.com/nodejs/node/issues/32463#issuecomment-631974747\");\n      }\n    }\n    let len = data.len();\n    let cap = data.capacity();\n    let finalize_hint = Box::into_raw(Box::new((len, cap)));\n    let mut status = unsafe {\n      sys::napi_create_external_buffer(\n        env.0,\n        len,\n        inner_ptr.cast(),\n        Some(drop_buffer_slice),\n        finalize_hint.cast(),\n        &mut buf,\n      )\n    };\n    if status == sys::Status::napi_no_external_buffers_allowed {\n      unsafe {\n        let _ = Box::from_raw(finalize_hint);\n      }\n      status = unsafe {\n        sys::napi_create_buffer_copy(\n          env.0,\n          len,\n          data.as_mut_ptr().cast(),\n          ptr::null_mut(),\n          &mut buf,\n        )\n      };\n    } else {\n      mem::forget(data);\n    }\n    check_status!(status, \"Failed to create buffer slice from data\")?;\n\n    Ok(Self {\n      inner: if len == 0 {\n        &mut []\n      } else {\n        unsafe { slice::from_raw_parts_mut(buf.cast(), len) }\n      },\n      raw_value: buf,\n      env: env.0,\n    })\n  }\n\n  /// ## Safety\n  ///\n  /// Mostly the same with `from_data`\n  ///\n  /// Provided `finalize_callback` will be called when `BufferSlice` got dropped.\n  ///\n  /// You can pass in `noop_finalize` if you have nothing to do in finalize phase.\n  ///\n  /// ### Notes\n  ///\n  /// JavaScript may mutate the data passed in to this buffer when writing the buffer.\n  /// However, some JavaScript runtimes do not support external buffers (notably electron!)\n  /// in which case modifications may be lost.\n  ///\n  /// If you need to support these runtimes, you should create a buffer by other means and then\n  /// later copy the data back out.\n  pub unsafe fn from_external<T: 'env, F: FnOnce(Env, T)>(\n    env: &Env,\n    data: *mut u8,\n    len: usize,\n    finalize_hint: T,\n    finalize_callback: F,\n  ) -> Result<Self> {\n    let mut buf = ptr::null_mut();\n    if data.is_null() || std::ptr::eq(data, EMPTY_VEC.as_ptr()) {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Borrowed data should not be null\".to_owned(),\n      ));\n    }\n    #[cfg(all(debug_assertions, not(windows), not(target_family = \"wasm\")))]\n    {\n      let is_existed = BUFFER_DATA.with(|buffer_data| {\n        let buffer = buffer_data.lock().expect(\"Unlock buffer data failed\");\n        buffer.contains(&data)\n      });\n      if is_existed {\n        panic!(\"Share the same data between different buffers is not allowed, see: https://github.com/nodejs/node/issues/32463#issuecomment-631974747\");\n      }\n    }\n    let hint_ptr = Box::into_raw(Box::new((finalize_hint, finalize_callback)));\n    let mut status = unsafe {\n      sys::napi_create_external_buffer(\n        env.0,\n        len,\n        data.cast(),\n        Some(crate::env::raw_finalize_with_custom_callback::<T, F>),\n        hint_ptr.cast(),\n        &mut buf,\n      )\n    };\n    status = if status == sys::Status::napi_no_external_buffers_allowed {\n      let (hint, finalize) = *Box::from_raw(hint_ptr);\n      let status =\n        unsafe { sys::napi_create_buffer_copy(env.0, len, data.cast(), ptr::null_mut(), &mut buf) };\n      finalize(*env, hint);\n      status\n    } else {\n      status\n    };\n    check_status!(status, \"Failed to create buffer slice from data\")?;\n\n    Ok(Self {\n      inner: if len == 0 {\n        &mut []\n      } else {\n        unsafe { slice::from_raw_parts_mut(buf.cast(), len) }\n      },\n      raw_value: buf,\n      env: env.0,\n    })\n  }\n\n  /// Copy data from a `&[u8]` and create a `BufferSlice` from it.\n  pub fn copy_from<D: AsRef<[u8]>>(env: &Env, data: D) -> Result<Self> {\n    let data = data.as_ref();\n    let len = data.len();\n    let data_ptr = data.as_ptr();\n    let mut buf = ptr::null_mut();\n    let mut result_ptr = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_create_buffer_copy(env.0, len, data_ptr.cast(), &mut result_ptr, &mut buf)\n      },\n      \"Faild to create a buffer from copied data\"\n    )?;\n    Ok(Self {\n      inner: if len == 0 {\n        &mut []\n      } else {\n        unsafe { slice::from_raw_parts_mut(buf.cast(), len) }\n      },\n      raw_value: buf,\n      env: env.0,\n    })\n  }\n\n  /// Convert a `BufferSlice` to a `Buffer`\n  ///\n  /// This will perform a `napi_create_reference` internally.\n  pub fn into_buffer(self, env: &Env) -> Result<Buffer> {\n    unsafe { Buffer::from_napi_value(env.0, self.raw_value) }\n  }\n}\n\nimpl<'env> JsValue<'env> for BufferSlice<'env> {\n  fn value(&self) -> Value {\n    Value {\n      env: self.env,\n      value: self.raw_value,\n      value_type: ValueType::Object,\n    }\n  }\n}\n\nimpl<'env> JsObjectValue<'env> for BufferSlice<'env> {}\n\nimpl FromNapiValue for BufferSlice<'_> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut buf = ptr::null_mut();\n    let mut len = 0usize;\n    check_status!(\n      unsafe { sys::napi_get_buffer_info(env, napi_val, &mut buf, &mut len) },\n      \"Failed to get Buffer pointer and length\"\n    )?;\n    // From the docs of `napi_get_buffer_info`:\n    // > [out] data: The underlying data buffer of the node::Buffer. If length is 0, this may be\n    // > NULL or any other pointer value.\n    //\n    // In order to guarantee that `slice::from_raw_parts` is sound, the pointer must be non-null, so\n    // let's make sure it always is, even in the case of `napi_get_buffer_info` returning a null\n    // ptr.\n    Ok(Self {\n      inner: if len == 0 {\n        &mut []\n      } else {\n        unsafe { slice::from_raw_parts_mut(buf.cast(), len) }\n      },\n      raw_value: napi_val,\n      env,\n    })\n  }\n}\n\nimpl ToNapiValue for &BufferSlice<'_> {\n  #[allow(unused_variables)]\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    Ok(val.raw_value)\n  }\n}\n\nimpl TypeName for BufferSlice<'_> {\n  fn type_name() -> &'static str {\n    \"Buffer\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl ValidateNapiValue for BufferSlice<'_> {\n  unsafe fn validate(env: sys::napi_env, napi_val: sys::napi_value) -> Result<sys::napi_value> {\n    let mut is_buffer = false;\n    check_status!(\n      unsafe { sys::napi_is_buffer(env, napi_val, &mut is_buffer) },\n      \"Failed to validate napi buffer\"\n    )?;\n    if !is_buffer {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Expected a Buffer value\".to_owned(),\n      ));\n    }\n    Ok(ptr::null_mut())\n  }\n}\n\nimpl AsRef<[u8]> for BufferSlice<'_> {\n  fn as_ref(&self) -> &[u8] {\n    self.inner\n  }\n}\n\nimpl Deref for BufferSlice<'_> {\n  type Target = [u8];\n\n  fn deref(&self) -> &Self::Target {\n    self.inner\n  }\n}\n\nimpl DerefMut for BufferSlice<'_> {\n  fn deref_mut(&mut self) -> &mut Self::Target {\n    self.inner\n  }\n}\n\n/// Zero copy u8 vector shared between rust and napi.\n/// It's designed to be used in `async` context, so it contains overhead to ensure the underlying data is not dropped.\n/// For non-async context, use `BufferSlice` instead.\n///\n/// Auto reference the raw JavaScript value, and release it when dropped.\n/// So it is safe to use it in `async fn`, the `&[u8]` under the hood will not be dropped until the `drop` called.\n/// Clone will create a new `Reference` to the same underlying `JavaScript Buffer`.\npub struct Buffer {\n  pub(crate) inner: NonNull<u8>,\n  pub(crate) len: usize,\n  pub(crate) capacity: usize,\n  raw: Option<(sys::napi_ref, sys::napi_env)>,\n}\n\nimpl Drop for Buffer {\n  fn drop(&mut self) {\n    if let Some((ref_, env)) = self.raw {\n      if ref_.is_null() {\n        return;\n      }\n      // Buffer is sent to the other thread which is not the JavaScript thread\n      // This only happens with `napi4` feature enabled\n      // We send back the Buffer reference value into the `CustomGC` ThreadsafeFunction callback\n      // and destroy the reference in the thread where registered the `napi_register_module_v1`\n      #[cfg(all(feature = \"napi4\", not(feature = \"noop\")))]\n      {\n        if CUSTOM_GC_TSFN_DESTROYED.load(std::sync::atomic::Ordering::SeqCst) {\n          return;\n        }\n        // Check if the current thread is the JavaScript thread\n        if !THREADS_CAN_ACCESS_ENV.with(|cell| cell.get()) {\n          let status = unsafe {\n            sys::napi_call_threadsafe_function(\n              CUSTOM_GC_TSFN.load(std::sync::atomic::Ordering::SeqCst),\n              ref_.cast(),\n              1,\n            )\n          };\n          assert!(\n            status == sys::Status::napi_ok || status == sys::Status::napi_closing,\n            \"Call custom GC in Buffer::drop failed {}\",\n            Status::from(status)\n          );\n          return;\n        }\n      }\n      let mut ref_count = 0;\n      check_status_or_throw!(\n        env,\n        unsafe { sys::napi_reference_unref(env, ref_, &mut ref_count) },\n        \"Failed to unref Buffer reference in drop\"\n      );\n      debug_assert!(\n        ref_count == 0,\n        \"Buffer reference count in Buffer::drop is not zero\"\n      );\n      check_status_or_throw!(\n        env,\n        unsafe { sys::napi_delete_reference(env, ref_) },\n        \"Failed to delete Buffer reference in drop\"\n      );\n    } else {\n      unsafe { Vec::from_raw_parts(self.inner.as_ptr(), self.len, self.capacity) };\n    }\n  }\n}\n\n/// SAFETY: This is undefined behavior, as the JS side may always modify the underlying buffer,\n/// without synchronization. Also see the docs for the `AsMut` impl.\nunsafe impl Send for Buffer {}\nunsafe impl Sync for Buffer {}\n\nimpl Default for Buffer {\n  fn default() -> Self {\n    Self::from(Vec::default())\n  }\n}\n\nimpl From<Vec<u8>> for Buffer {\n  fn from(mut data: Vec<u8>) -> Self {\n    let inner_ptr = data.as_mut_ptr();\n    #[cfg(all(debug_assertions, not(windows), not(target_family = \"wasm\")))]\n    {\n      let is_existed = BUFFER_DATA.with(|buffer_data| {\n        let buffer = buffer_data.lock().expect(\"Unlock buffer data failed\");\n        buffer.contains(&inner_ptr)\n      });\n      if is_existed {\n        panic!(\"Share the same data between different buffers is not allowed, see: https://github.com/nodejs/node/issues/32463#issuecomment-631974747\");\n      }\n    }\n    let len = data.len();\n    let capacity = data.capacity();\n    mem::forget(data);\n    Buffer {\n      // SAFETY: `Vec`'s docs guarantee that its pointer is never null (it's a dangling ptr if not\n      // allocated):\n      // > The pointer will never be null, so this type is null-pointer-optimized.\n      inner: unsafe { NonNull::new_unchecked(inner_ptr) },\n      len,\n      capacity,\n      raw: None,\n    }\n  }\n}\n\nimpl From<Buffer> for Vec<u8> {\n  fn from(buf: Buffer) -> Self {\n    buf.as_ref().to_vec()\n  }\n}\n\nimpl From<&[u8]> for Buffer {\n  fn from(inner: &[u8]) -> Self {\n    Buffer::from(inner.to_owned())\n  }\n}\n\nimpl From<String> for Buffer {\n  fn from(inner: String) -> Self {\n    Buffer::from(inner.into_bytes())\n  }\n}\n\nimpl AsRef<[u8]> for Buffer {\n  fn as_ref(&self) -> &[u8] {\n    // SAFETY: the pointer is guaranteed to be non-null, and guaranteed to be valid if `len` is not 0.\n    unsafe { slice::from_raw_parts(self.inner.as_ptr(), self.len) }\n  }\n}\n\nimpl AsMut<[u8]> for Buffer {\n  fn as_mut(&mut self) -> &mut [u8] {\n    // SAFETY: This is literally undefined behavior. `Buffer::clone` allows you to create shared\n    // access to the underlying data, but `as_mut` and `deref_mut` allow unsynchronized mutation of\n    // that data (not to speak of the JS side having write access as well, at the same time).\n    unsafe { slice::from_raw_parts_mut(self.inner.as_ptr(), self.len) }\n  }\n}\n\nimpl Deref for Buffer {\n  type Target = [u8];\n\n  fn deref(&self) -> &Self::Target {\n    self.as_ref()\n  }\n}\n\nimpl DerefMut for Buffer {\n  fn deref_mut(&mut self) -> &mut Self::Target {\n    self.as_mut()\n  }\n}\n\nimpl TypeName for Buffer {\n  fn type_name() -> &'static str {\n    \"Vec<u8>\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl FromNapiValue for Buffer {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut buf = ptr::null_mut();\n    let mut len = 0;\n    let mut ref_ = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_create_reference(env, napi_val, 1, &mut ref_) },\n      \"Failed to create reference from Buffer\"\n    )?;\n    check_status!(\n      unsafe { sys::napi_get_buffer_info(env, napi_val, &mut buf, &mut len as *mut usize) },\n      \"Failed to get Buffer pointer and length\"\n    )?;\n\n    // From the docs of `napi_get_buffer_info`:\n    // > [out] data: The underlying data buffer of the node::Buffer. If length is 0, this may be\n    // > NULL or any other pointer value.\n    //\n    // In order to guarantee that `slice::from_raw_parts` is sound, the pointer must be non-null, so\n    // let's make sure it always is, even in the case of `napi_get_buffer_info` returning a null\n    // ptr.\n    let buf = NonNull::new(buf as *mut u8);\n    let inner = match buf {\n      Some(buf) if len != 0 => buf,\n      _ => NonNull::dangling(),\n    };\n\n    Ok(Self {\n      inner,\n      len,\n      capacity: len,\n      raw: Some((ref_, env)),\n    })\n  }\n}\n\nimpl ToNapiValue for Buffer {\n  unsafe fn to_napi_value(env: sys::napi_env, mut val: Self) -> Result<sys::napi_value> {\n    // From Node.js value, not from `Vec<u8>`\n    if let Some((ref_, _)) = val.raw {\n      let mut buf = ptr::null_mut();\n      check_status!(\n        unsafe { sys::napi_get_reference_value(env, ref_, &mut buf) },\n        \"Failed to get Buffer value from reference\"\n      )?;\n\n      check_status!(\n        unsafe { sys::napi_delete_reference(env, ref_) },\n        \"Failed to delete Buffer reference in Buffer::to_napi_value\"\n      )?;\n      val.raw = Some((ptr::null_mut(), ptr::null_mut()));\n      return Ok(buf);\n    }\n    let len = val.len;\n    let mut ret = ptr::null_mut();\n    check_status!(\n      if len == 0 {\n        // Rust uses 0x1 as the data pointer for empty buffers,\n        // but NAPI/V8 only allows multiple buffers to have\n        // the same data pointer if it's 0x0.\n        unsafe { sys::napi_create_buffer(env, len, ptr::null_mut(), &mut ret) }\n      } else {\n        let value_ptr = val.inner.as_ptr();\n        let val_box_ptr = Box::into_raw(Box::new(val));\n        let mut status = unsafe {\n          sys::napi_create_external_buffer(\n            env,\n            len,\n            value_ptr.cast(),\n            Some(drop_buffer),\n            val_box_ptr.cast(),\n            &mut ret,\n          )\n        };\n        if status == napi_sys::Status::napi_no_external_buffers_allowed {\n          let value = unsafe { Box::from_raw(val_box_ptr) };\n          status = unsafe {\n            sys::napi_create_buffer_copy(\n              env,\n              len,\n              value.inner.as_ptr() as *mut c_void,\n              ptr::null_mut(),\n              &mut ret,\n            )\n          };\n        }\n        status\n      },\n      \"Failed to create napi buffer\"\n    )?;\n\n    Ok(ret)\n  }\n}\n\nimpl ValidateNapiValue for Buffer {\n  unsafe fn validate(env: sys::napi_env, napi_val: sys::napi_value) -> Result<sys::napi_value> {\n    let mut is_buffer = false;\n    check_status!(\n      unsafe { sys::napi_is_buffer(env, napi_val, &mut is_buffer) },\n      \"Failed to validate napi buffer\"\n    )?;\n    if !is_buffer {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Expected a Buffer value\".to_owned(),\n      ));\n    }\n    Ok(ptr::null_mut())\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/class.rs",
    "content": "use std::any::type_name;\nuse std::ffi::CString;\nuse std::marker::PhantomData;\nuse std::ops::{Deref, DerefMut};\nuse std::ptr;\n\nuse crate::{\n  bindgen_runtime::{\n    raw_finalize_unchecked, FromNapiValue, JsObjectValue, Object, ObjectFinalize, Reference,\n    Result, TypeName, ValidateNapiValue,\n  },\n  check_status, sys, Env, JsValue, Property, PropertyAttributes, Value, ValueType,\n};\n\n#[derive(Clone, Copy)]\npub struct This<'env, T = Object<'env>> {\n  pub object: T,\n  _phantom: &'env PhantomData<()>,\n}\n\nimpl<T> From<T> for This<'_, T> {\n  fn from(value: T) -> Self {\n    Self {\n      object: value,\n      _phantom: &PhantomData,\n    }\n  }\n}\n\nimpl<T> Deref for This<'_, T> {\n  type Target = T;\n\n  fn deref(&self) -> &Self::Target {\n    &self.object\n  }\n}\n\nimpl<T> DerefMut for This<'_, T> {\n  fn deref_mut(&mut self) -> &mut Self::Target {\n    &mut self.object\n  }\n}\n\nimpl<'env, T: JsValue<'env>> JsValue<'env> for This<'_, T> {\n  fn value(&self) -> Value {\n    self.object.value()\n  }\n}\n\nimpl<T: FromNapiValue> FromNapiValue for This<'_, T> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Ok(Self {\n      object: T::from_napi_value(env, napi_val)?,\n      _phantom: &PhantomData,\n    })\n  }\n}\n\n#[derive(Clone, Copy)]\npub struct ClassInstance<'env, T: 'env> {\n  pub value: sys::napi_value,\n  env: sys::napi_env,\n  inner: *mut T,\n  _phantom: &'env PhantomData<()>,\n}\n\nimpl<'env, T: 'env> JsValue<'env> for ClassInstance<'env, T> {\n  fn value(&self) -> Value {\n    Value {\n      env: self.env,\n      value: self.value,\n      value_type: ValueType::Object,\n    }\n  }\n}\n\nimpl<'env, T: 'env> JsObjectValue<'env> for ClassInstance<'env, T> {}\n\nimpl<'env, T: 'env> ClassInstance<'env, T> {\n  #[doc(hidden)]\n  pub unsafe fn new(value: sys::napi_value, env: sys::napi_env, inner: *mut T) -> Self {\n    Self {\n      value,\n      env,\n      inner: unsafe { &mut *inner },\n      _phantom: &PhantomData,\n    }\n  }\n\n  pub fn as_object<'a>(&self, env: &'a Env) -> Object<'a> {\n    Object(\n      Value {\n        env: env.raw(),\n        value: self.value,\n        value_type: ValueType::Object,\n      },\n      PhantomData,\n    )\n  }\n\n  /// Assign this `ClassInstance` to another `This` object\n  ///\n  /// Extends the lifetime of `ClassInstance` to `This`.\n  pub fn assign_to_this<'a, 'this, U>(\n    &'a self,\n    name: &'a str,\n    this: &'a mut This<U>,\n  ) -> Result<ClassInstance<'this, T>>\n  where\n    'this: 'env,\n    U: FromNapiValue + JsValue<'this>,\n  {\n    let name = CString::new(name)?;\n    check_status!(\n      unsafe {\n        sys::napi_set_named_property(self.env, this.object.raw(), name.as_ptr(), self.value)\n      },\n      \"Failed to assign ClassInstance<{}> to this\",\n      std::any::type_name::<T>()\n    )?;\n    let val: ClassInstance<'this, T> = ClassInstance {\n      value: self.value,\n      env: self.env,\n      inner: self.inner,\n      _phantom: &PhantomData,\n    };\n    Ok(val)\n  }\n\n  /// Assign this `ClassInstance` to another `This` object with `PropertyAttributes`.\n  ///\n  /// Extends the lifetime of `ClassInsatnce` to `This`.\n  pub fn assign_to_this_with_attributes<'a, 'this, U>(\n    &'a self,\n    name: &'a str,\n    attributes: PropertyAttributes,\n    this: &'a mut This<U>,\n  ) -> Result<ClassInstance<'this, T>>\n  where\n    'this: 'env,\n    U: FromNapiValue + JsValue<'this>,\n  {\n    let property = Property::new()\n      .with_utf8_name(name)?\n      .with_value(self)\n      .with_property_attributes(attributes);\n\n    check_status!(\n      unsafe {\n        sys::napi_define_properties(\n          self.env,\n          this.object.value().value,\n          1,\n          [property.raw()].as_ptr(),\n        )\n      },\n      \"Failed to define properties on This in `assign_to_this_with_attributes`\"\n    )?;\n\n    let val: ClassInstance<'this, T> = ClassInstance {\n      value: self.value,\n      env: self.env,\n      inner: self.inner,\n      _phantom: &PhantomData,\n    };\n    Ok(val)\n  }\n}\n\nimpl<'env, T: 'env> TypeName for ClassInstance<'env, T>\nwhere\n  &'env T: TypeName,\n{\n  fn type_name() -> &'static str {\n    type_name::<&T>()\n  }\n\n  fn value_type() -> ValueType {\n    <&T>::value_type()\n  }\n}\n\nimpl<'env, T: 'env> ValidateNapiValue for ClassInstance<'env, T>\nwhere\n  &'env T: ValidateNapiValue,\n{\n  unsafe fn validate(\n    env: sys::napi_env,\n    napi_val: sys::napi_value,\n  ) -> crate::Result<sys::napi_value> {\n    unsafe { <&'env T>::validate(env, napi_val) }\n  }\n}\n\nimpl<'env, T: 'env> FromNapiValue for ClassInstance<'env, T> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> crate::Result<Self> {\n    let mut value = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_unwrap(env, napi_val, &mut value) },\n      \"Unwrap value [{}] from class failed\",\n      type_name::<T>(),\n    )?;\n    let value = unsafe { Box::from_raw(value as *mut T) };\n    Ok(Self {\n      value: napi_val,\n      inner: Box::leak(value),\n      env,\n      _phantom: &PhantomData,\n    })\n  }\n}\n\nimpl<'env, T: 'env> Deref for ClassInstance<'env, T> {\n  type Target = T;\n\n  fn deref(&self) -> &Self::Target {\n    unsafe { &*self.inner }\n  }\n}\n\nimpl<'env, T: 'env> DerefMut for ClassInstance<'env, T> {\n  fn deref_mut(&mut self) -> &mut Self::Target {\n    unsafe { &mut *self.inner }\n  }\n}\n\nimpl<'env, T: 'env> AsRef<T> for ClassInstance<'env, T> {\n  fn as_ref(&self) -> &T {\n    unsafe { &*self.inner }\n  }\n}\n\npub trait JavaScriptClassExt: Sized {\n  fn into_instance(self, env: &Env) -> Result<ClassInstance<'_, Self>>;\n  fn into_reference(self, env: Env) -> Result<Reference<Self>>;\n  fn instance_of<'env, V: JsValue<'env>>(env: &Env, value: &V) -> Result<bool>;\n}\n\n/// # Safety\n///\n/// create instance of class\n#[doc(hidden)]\npub unsafe fn new_instance<T: 'static + ObjectFinalize>(\n  env: sys::napi_env,\n  wrapped_value: *mut std::ffi::c_void,\n  ctor_ref: sys::napi_ref,\n) -> Result<sys::napi_value> {\n  let mut ctor = std::ptr::null_mut();\n  check_status!(\n    sys::napi_get_reference_value(env, ctor_ref, &mut ctor),\n    \"Failed to get constructor reference of class `{}`\",\n    type_name::<T>(),\n  )?;\n\n  let mut result = std::ptr::null_mut();\n  crate::__private::___CALL_FROM_FACTORY.with(|inner| inner.set(true));\n  check_status!(\n    sys::napi_new_instance(env, ctor, 0, std::ptr::null_mut(), &mut result),\n    \"Failed to construct class `{}`\",\n    type_name::<T>(),\n  )?;\n  crate::__private::___CALL_FROM_FACTORY.with(|inner| inner.set(false));\n  let mut object_ref = std::ptr::null_mut();\n  let initial_finalize: Box<dyn FnOnce()> = Box::new(|| {});\n  let finalize_callbacks_ptr = std::rc::Rc::into_raw(std::rc::Rc::new(std::cell::Cell::new(\n    Box::into_raw(initial_finalize),\n  )));\n  check_status!(\n    sys::napi_wrap(\n      env,\n      result,\n      wrapped_value,\n      Some(raw_finalize_unchecked::<T>),\n      std::ptr::null_mut(),\n      &mut object_ref,\n    ),\n    \"Failed to wrap native object of class `{}`\",\n    type_name::<T>(),\n  )?;\n  Reference::<T>::add_ref(\n    env,\n    wrapped_value,\n    (wrapped_value, object_ref, finalize_callbacks_ptr),\n  );\n  Ok(result)\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/date.rs",
    "content": "use std::{ptr, str::FromStr};\n\nuse chrono::{DateTime, Local, LocalResult, NaiveDateTime, TimeZone};\n\nuse crate::{bindgen_prelude::*, check_status, sys, ValueType};\n\nimpl<Tz: TimeZone> TypeName for DateTime<Tz> {\n  fn type_name() -> &'static str {\n    \"DateTime\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl<Tz: TimeZone> ValidateNapiValue for DateTime<Tz> {\n  unsafe fn validate(env: sys::napi_env, napi_val: sys::napi_value) -> Result<sys::napi_value> {\n    let mut is_date = false;\n    check_status!(unsafe { sys::napi_is_date(env, napi_val, &mut is_date) })?;\n    if !is_date {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Expected a Date object\".to_owned(),\n      ));\n    }\n\n    Ok(ptr::null_mut())\n  }\n}\n\nimpl ToNapiValue for NaiveDateTime {\n  unsafe fn to_napi_value(env: sys::napi_env, val: NaiveDateTime) -> Result<sys::napi_value> {\n    let mut ptr = std::ptr::null_mut();\n    let millis_since_epoch_utc = val.and_utc().timestamp_millis() as f64;\n\n    check_status!(\n      unsafe { sys::napi_create_date(env, millis_since_epoch_utc, &mut ptr) },\n      \"Failed to convert rust type `NaiveDateTime` into napi value\",\n    )?;\n\n    Ok(ptr)\n  }\n}\n\nimpl FromNapiValue for NaiveDateTime {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut to_iso_string = ptr::null_mut();\n    check_status!(\n      unsafe {\n        napi_sys::napi_create_string_utf8(\n          env,\n          c\"toISOString\".as_ptr().cast(),\n          11,\n          &mut to_iso_string,\n        )\n      },\n      \"create toISOString JavaScript string failed\"\n    )?;\n    let mut to_iso_string_method = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_property(env, napi_val, to_iso_string, &mut to_iso_string_method) },\n      \"get toISOString method failed\"\n    )?;\n    let mut iso_string_value = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_call_function(\n          env,\n          napi_val,\n          to_iso_string_method,\n          0,\n          ptr::null(),\n          &mut iso_string_value,\n        )\n      },\n      \"Call toISOString on Date Object failed\"\n    )?;\n\n    let mut iso_string_length = 0;\n    check_status!(\n      unsafe {\n        sys::napi_get_value_string_utf8(\n          env,\n          iso_string_value,\n          ptr::null_mut(),\n          0,\n          &mut iso_string_length,\n        )\n      },\n      \"Get ISOString length failed\"\n    )?;\n    let mut iso_string = String::with_capacity(iso_string_length + 1);\n    check_status!(\n      unsafe {\n        sys::napi_get_value_string_utf8(\n          env,\n          iso_string_value,\n          iso_string.as_mut_ptr().cast(),\n          iso_string_length,\n          &mut iso_string_length,\n        )\n      },\n      \"Get ISOString length failed\"\n    )?;\n\n    unsafe { iso_string.as_mut_vec().set_len(iso_string_length) };\n\n    let naive = NaiveDateTime::from_str(iso_string.as_str()).map_err(|err| {\n      Error::new(\n        Status::InvalidArg,\n        format!(\"Failed to convert napi value into rust type `NaiveDateTime` {err} {iso_string}\"),\n      )\n    })?;\n\n    Ok(naive)\n  }\n}\n\nimpl<Tz: TimeZone> ToNapiValue for DateTime<Tz> {\n  unsafe fn to_napi_value(env: sys::napi_env, val: DateTime<Tz>) -> Result<sys::napi_value> {\n    let mut ptr = std::ptr::null_mut();\n    let millis_since_epoch_utc = val.timestamp_millis() as f64;\n\n    check_status!(\n      unsafe { sys::napi_create_date(env, millis_since_epoch_utc, &mut ptr) },\n      \"Failed to convert rust type `DateTime` into napi value\",\n    )?;\n\n    Ok(ptr)\n  }\n}\n\nimpl<Tz: TimeZone> FromNapiValue for DateTime<Tz>\nwhere\n  DateTime<Tz>: From<DateTime<Local>>,\n{\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut milliseconds_since_epoch_utc = 0.0;\n\n    check_status!(\n      unsafe { sys::napi_get_date_value(env, napi_val, &mut milliseconds_since_epoch_utc) },\n      \"Failed to convert napi value into rust type `DateTime`\",\n    )?;\n\n    match Local.timestamp_millis_opt(milliseconds_since_epoch_utc as i64) {\n      LocalResult::Single(dt) => Ok(dt.into()),\n      _ => Err(Error::new(\n        Status::DateExpected,\n        \"Found invalid date\".to_owned(),\n      )),\n    }\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/either.rs",
    "content": "use super::{FromNapiValue, ToNapiValue, TypeName, ValidateNapiValue};\nuse crate::{\n  bindgen_runtime::{Null, Undefined, Unknown},\n  check_status, sys, Error, JsValue, Status, ValueType,\n};\n\nimpl<T> From<Option<T>> for Either<T, Undefined> {\n  fn from(value: Option<T>) -> Self {\n    match value {\n      Some(v) => Either::A(v),\n      None => Either::B(()),\n    }\n  }\n}\n\nimpl<T> From<Either<T, Null>> for Option<T> {\n  fn from(value: Either<T, Null>) -> Option<T> {\n    match value {\n      Either::A(v) => Some(v),\n      Either::B(_) => None,\n    }\n  }\n}\n\nmacro_rules! either_n {\n  ( $either_name:ident, $( $parameter:ident ),+ $( , )* ) => {\n    #[derive(Debug, Clone, Copy)]\n    pub enum $either_name< $( $parameter ),+ > {\n      $( $parameter ( $parameter ) ),+\n    }\n\n    impl< $( $parameter ),+ > TypeName for $either_name < $( $parameter ),+ >\n      where $( $parameter: TypeName ),+\n    {\n      fn type_name() -> &'static str {\n        stringify!( $either_name )\n      }\n\n      fn value_type() -> ValueType {\n        ValueType::Unknown\n      }\n    }\n\n    impl< $( $parameter ),+ > FromNapiValue for $either_name < $( $parameter ),+ >\n      where $( $parameter: TypeName + FromNapiValue + ValidateNapiValue ),+\n    {\n      unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> crate::Result<Self> {\n        #[allow(unused_assignments)]\n        let mut ret = Err(Error::new(Status::InvalidArg, \"Invalid value\".to_owned()));\n        $(\n          if unsafe {\n            match $parameter::validate(env, napi_val) {\n              Ok(maybe_rejected_promise) => {\n                if maybe_rejected_promise.is_null() {\n                  true\n                } else {\n                  silence_rejected_promise(env, maybe_rejected_promise)?;\n                  false\n                }\n              },\n              Err(_) => false\n            }\n          } && unsafe { { ret = $parameter ::from_napi_value(env, napi_val).map(Self:: $parameter ); ret.is_ok() } } {\n            ret\n          } else\n        )+\n        {\n          Err(crate::Error::new(\n            Status::InvalidArg,\n            format!(\n              concat!(\"Value is non of these types \", $( \"`{\", stringify!( $parameter ), \"}`, \" ),+ ),\n              $( $parameter = $parameter::type_name(), )+\n            ),\n          ))\n        }\n      }\n    }\n\n    impl< $( $parameter ),+ > ToNapiValue for $either_name < $( $parameter ),+ >\n      where $( $parameter: ToNapiValue ),+\n    {\n      unsafe fn to_napi_value(\n        env: sys::napi_env,\n        value: Self\n      ) -> crate::Result<crate::sys::napi_value> {\n        match value {\n          $( Self:: $parameter (v) => unsafe { $parameter ::to_napi_value(env, v) } ),+\n        }\n      }\n    }\n\n    impl< $( $parameter ),+ > ValidateNapiValue for $either_name < $( $parameter ),+ >\n      where $( $parameter: ValidateNapiValue ),+\n    {\n      unsafe fn validate(\n        env: sys::napi_env,\n        napi_val: sys::napi_value,\n      ) -> crate::Result<sys::napi_value> {\n        let mut ret: crate::Result<sys::napi_value>;\n        $(\n          if unsafe {\n            ret = $parameter::validate(env, napi_val);\n            if let Ok(maybe_rejected_promise) = ret.as_ref() {\n              if maybe_rejected_promise.is_null() {\n                true\n              } else {\n                silence_rejected_promise(env, *maybe_rejected_promise)?;\n                false\n              }\n            } else {\n              false\n            }\n          } {\n            ret\n          } else\n        )+\n        {\n          ret\n        }\n      }\n    }\n\n    impl<Data, $( $parameter: AsRef<Data> ),+ > AsRef<Data> for $either_name < $( $parameter ),+ >\n      where Data: ?Sized,\n    {\n      fn as_ref(&self) -> &Data {\n        match &self {\n          $( Self:: $parameter (v) => v.as_ref() ),+\n        }\n      }\n    }\n\n    impl<'env, $( $parameter ),+ > $either_name < $( $parameter ),+ >\n      where $( $parameter: JsValue<'env> ),+\n    {\n      pub fn as_unknown(&self) -> Unknown<'env> {\n        match &self {\n          $( Self:: $parameter (v) => v.to_unknown() ),+\n        }\n      }\n    }\n\n    #[cfg(feature = \"serde-json\")]\n    impl< $( $parameter: serde::Serialize ),+ > serde::Serialize for $either_name< $( $parameter ),+ > {\n      fn serialize<Ser>(&self, serializer: Ser) -> Result<Ser::Ok, Ser::Error>\n      where\n        Ser: serde::Serializer\n      {\n        match &self {\n          $( Self:: $parameter (v) => serializer.serialize_some(v) ),+\n        }\n      }\n    }\n  };\n}\n\neither_n!(Either, A, B);\neither_n!(Either3, A, B, C);\neither_n!(Either4, A, B, C, D);\neither_n!(Either5, A, B, C, D, E);\neither_n!(Either6, A, B, C, D, E, F);\neither_n!(Either7, A, B, C, D, E, F, G);\neither_n!(Either8, A, B, C, D, E, F, G, H);\neither_n!(Either9, A, B, C, D, E, F, G, H, I);\neither_n!(Either10, A, B, C, D, E, F, G, H, I, J);\neither_n!(Either11, A, B, C, D, E, F, G, H, I, J, K);\neither_n!(Either12, A, B, C, D, E, F, G, H, I, J, K, L);\neither_n!(Either13, A, B, C, D, E, F, G, H, I, J, K, L, M);\neither_n!(Either14, A, B, C, D, E, F, G, H, I, J, K, L, M, N);\neither_n!(Either15, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O);\neither_n!(Either16, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P);\neither_n!(Either17, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q);\neither_n!(Either18, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R);\neither_n!(Either19, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S);\neither_n!(Either20, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T);\neither_n!(Either21, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U);\neither_n!(Either22, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V);\neither_n!(Either23, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W);\neither_n!(Either24, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X);\neither_n!(Either25, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y);\neither_n!(Either26, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z);\n\nfn silence_rejected_promise(env: sys::napi_env, promise: sys::napi_value) -> crate::Result<()> {\n  let mut catch_method = std::ptr::null_mut();\n  check_status!(unsafe {\n    sys::napi_get_named_property(env, promise, c\"catch\".as_ptr().cast(), &mut catch_method)\n  })?;\n  let mut catch_noop_callback = std::ptr::null_mut();\n  check_status!(unsafe {\n    sys::napi_create_function(\n      env,\n      c\"catch\".as_ptr().cast(),\n      5,\n      Some(noop),\n      std::ptr::null_mut(),\n      &mut catch_noop_callback,\n    )\n  })?;\n  check_status!(unsafe {\n    sys::napi_call_function(\n      env,\n      promise,\n      catch_method,\n      1,\n      vec![catch_noop_callback].as_ptr().cast(),\n      std::ptr::null_mut(),\n    )\n  })?;\n  Ok(())\n}\n\nunsafe extern \"C\" fn noop(_env: sys::napi_env, _info: sys::napi_callback_info) -> sys::napi_value {\n  std::ptr::null_mut()\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/external.rs",
    "content": "use std::{\n  any::TypeId,\n  ffi::c_void,\n  ops::{Deref, DerefMut},\n  ptr,\n};\n\nuse crate::{\n  bindgen_runtime::{\n    sys, Env, FromNapiMutRef, FromNapiRef, FromNapiValue, Result, Status, ToNapiValue, TypeName,\n    Unknown, ValidateNapiValue,\n  },\n  check_status, check_status_or_throw, Error, JsExternal,\n};\n\n#[repr(C)]\npub struct External<T: 'static> {\n  type_id: TypeId,\n  obj: T,\n  size_hint: usize,\n  pub adjusted_size: i64,\n}\n\nimpl<T: 'static> TypeName for &External<T> {\n  fn type_name() -> &'static str {\n    \"External\"\n  }\n\n  fn value_type() -> crate::ValueType {\n    crate::ValueType::External\n  }\n}\n\nimpl<T: 'static> TypeName for &mut External<T> {\n  fn type_name() -> &'static str {\n    \"External\"\n  }\n\n  fn value_type() -> crate::ValueType {\n    crate::ValueType::External\n  }\n}\n\nimpl<T: 'static> From<T> for External<T> {\n  fn from(t: T) -> Self {\n    External::new(t)\n  }\n}\n\nimpl<T: 'static> ValidateNapiValue for &External<T> {}\n\nimpl<T: 'static> ValidateNapiValue for &mut External<T> {}\n\nimpl<T: 'static> External<T> {\n  pub fn new(value: T) -> Self {\n    Self {\n      type_id: TypeId::of::<T>(),\n      obj: value,\n      size_hint: 0,\n      adjusted_size: 0,\n    }\n  }\n\n  /// Turn a raw pointer (from napi) pointing to an External into a reference to the inner object.\n  ///\n  /// # Safety\n  /// The `unknown_tagged_object` raw pointer must point to an `External<T>` struct.\n  pub(crate) unsafe fn from_raw_impl(\n    unknown_tagged_object: *mut c_void,\n  ) -> Option<&'static mut Self> {\n    let type_id = unknown_tagged_object as *const TypeId;\n    if unsafe { *type_id } == TypeId::of::<T>() {\n      let tagged_object = unknown_tagged_object as *mut External<T>;\n      Some(Box::leak(unsafe { Box::from_raw(tagged_object) }))\n    } else {\n      None\n    }\n  }\n\n  /// Turn a raw pointer (from napi) pointing to an External into a mutable reference to the inner object.\n  ///\n  /// # Safety\n  /// The `unknown_tagged_object` raw pointer must point to an `External<T>` struct.\n  pub unsafe fn inner_from_raw_mut(unknown_tagged_object: *mut c_void) -> Option<&'static mut T> {\n    Self::from_raw_impl(unknown_tagged_object).map(|external| &mut external.obj)\n  }\n\n  /// Turn a raw pointer (from napi) pointing to an External into a reference inner object.\n  ///\n  /// # Safety\n  /// The `unknown_tagged_object` raw pointer must point to an `External<T>` struct.\n  pub unsafe fn inner_from_raw(unknown_tagged_object: *mut c_void) -> Option<&'static T> {\n    Self::from_raw_impl(unknown_tagged_object).map(|external| &external.obj)\n  }\n\n  /// `size_hint` is a value to tell Node.js GC how much memory is used by this `External` object.\n  ///\n  /// If getting the exact `size_hint` is difficult, you can provide an approximate value, it's only effect to the GC.\n  ///\n  /// If your `External` object is not effect to GC, you can use `External::new` instead.\n  pub fn new_with_size_hint(value: T, size_hint: usize) -> Self {\n    Self {\n      type_id: TypeId::of::<T>(),\n      obj: value,\n      size_hint,\n      adjusted_size: 0,\n    }\n  }\n\n  /// convert `External<T>` to `Unknown`\n  pub fn into_unknown(self, env: &Env) -> Result<Unknown<'_>> {\n    let napi_value = unsafe { ToNapiValue::to_napi_value(env.0, self)? };\n    Ok(unsafe { Unknown::from_raw_unchecked(env.0, napi_value) })\n  }\n\n  /// Convert `External<T>` to `JsExternal`\n  pub fn into_js_external(self, env: &Env) -> Result<JsExternal<'_>> {\n    let napi_value = unsafe { ToNapiValue::to_napi_value(env.0, self)? };\n    unsafe { JsExternal::from_napi_value(env.0, napi_value) }\n  }\n\n  #[allow(clippy::wrong_self_convention)]\n  unsafe fn to_napi_value_impl(\n    self,\n    env: sys::napi_env,\n  ) -> Result<(sys::napi_value, *mut External<T>)> {\n    let mut napi_value = ptr::null_mut();\n    let size_hint = self.size_hint as i64;\n    let size_hint_ptr = Box::into_raw(Box::new(size_hint));\n    let obj_ptr = Box::into_raw(Box::new(self));\n    check_status!(\n      unsafe {\n        sys::napi_create_external(\n          env,\n          obj_ptr.cast(),\n          Some(crate::raw_finalize::<External<T>>),\n          size_hint_ptr.cast(),\n          &mut napi_value,\n        )\n      },\n      \"Create external value failed\"\n    )?;\n\n    #[cfg(not(target_family = \"wasm\"))]\n    {\n      let mut adjusted_external_memory_size = std::mem::MaybeUninit::new(0);\n\n      if size_hint != 0 {\n        check_status!(\n          unsafe {\n            sys::napi_adjust_external_memory(\n              env,\n              size_hint,\n              adjusted_external_memory_size.as_mut_ptr(),\n            )\n          },\n          \"Adjust external memory failed\"\n        )?;\n      };\n\n      (Box::leak(unsafe { Box::from_raw(obj_ptr) })).adjusted_size =\n        unsafe { adjusted_external_memory_size.assume_init() };\n    }\n\n    Ok((napi_value, obj_ptr))\n  }\n}\n\nimpl<T: 'static> FromNapiMutRef for External<T> {\n  unsafe fn from_napi_mut_ref(\n    env: sys::napi_env,\n    napi_val: sys::napi_value,\n  ) -> crate::Result<&'static mut Self> {\n    let mut unknown_tagged_object = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_value_external(env, napi_val, &mut unknown_tagged_object) },\n      \"Failed to get external value\"\n    )?;\n\n    match Self::from_raw_impl(unknown_tagged_object) {\n      Some(external) => Ok(external),\n      None => Err(Error::new(\n        Status::InvalidArg,\n        format!(\n          \"<{}> on `External` is not the type of wrapped object\",\n          std::any::type_name::<T>()\n        ),\n      )),\n    }\n  }\n}\n\nimpl<T: 'static> FromNapiRef for External<T> {\n  unsafe fn from_napi_ref(\n    env: sys::napi_env,\n    napi_val: sys::napi_value,\n  ) -> crate::Result<&'static Self> {\n    unsafe { Self::from_napi_mut_ref(env, napi_val) }.map(|v| v as &Self)\n  }\n}\n\nimpl<T: 'static> AsRef<T> for External<T> {\n  fn as_ref(&self) -> &T {\n    &self.obj\n  }\n}\n\nimpl<T: 'static> AsMut<T> for External<T> {\n  fn as_mut(&mut self) -> &mut T {\n    &mut self.obj\n  }\n}\n\nimpl<T: 'static> Deref for External<T> {\n  type Target = T;\n\n  fn deref(&self) -> &Self::Target {\n    self.as_ref()\n  }\n}\n\nimpl<T: 'static> DerefMut for External<T> {\n  fn deref_mut(&mut self) -> &mut Self::Target {\n    self.as_mut()\n  }\n}\n\nimpl<T: 'static> ToNapiValue for External<T> {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    let (napi_value, _) = unsafe { val.to_napi_value_impl(env)? };\n    Ok(napi_value)\n  }\n}\n\n/// `ExternalRef` is a reference to an `External` object\npub struct ExternalRef<T: 'static> {\n  pub(crate) obj: &'static mut External<T>,\n  pub(crate) raw: sys::napi_ref,\n  pub(crate) env: sys::napi_env,\n}\n\nunsafe impl<T: Sync + 'static> Sync for ExternalRef<T> {}\n\nimpl<T: 'static> TypeName for ExternalRef<T> {\n  fn type_name() -> &'static str {\n    \"External\"\n  }\n\n  fn value_type() -> crate::ValueType {\n    crate::ValueType::External\n  }\n}\n\nimpl<T: 'static> ValidateNapiValue for ExternalRef<T> {}\n\nimpl<T: 'static> Drop for ExternalRef<T> {\n  fn drop(&mut self) {\n    check_status_or_throw!(\n      self.env,\n      unsafe { sys::napi_delete_reference(self.env, self.raw) },\n      \"Failed to delete reference on external value\"\n    );\n  }\n}\n\nimpl<T: 'static> ExternalRef<T> {\n  pub fn new(env: &Env, value: T) -> Result<Self> {\n    let external = External::new(value);\n    let mut ref_ptr = ptr::null_mut();\n    let (napi_val, external) = unsafe { external.to_napi_value_impl(env.0)? };\n    check_status!(\n      unsafe { sys::napi_create_reference(env.0, napi_val, 1, &mut ref_ptr) },\n      \"Failed to create reference on external value\"\n    )?;\n    Ok(ExternalRef {\n      obj: Box::leak(unsafe { Box::from_raw(external) }),\n      raw: ref_ptr,\n      env: env.0,\n    })\n  }\n\n  /// Get the raw JsExternal value from the reference\n  pub fn get_value(&self) -> Result<JsExternal<'_>> {\n    let mut napi_val = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_reference_value(self.env, self.raw, &mut napi_val) },\n      \"Failed to get reference value on external value\"\n    )?;\n    unsafe { JsExternal::from_napi_value(self.env, napi_val) }\n  }\n}\n\nimpl<T: 'static> FromNapiValue for ExternalRef<T> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> crate::Result<Self> {\n    let mut unknown_tagged_object = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_value_external(env, napi_val, &mut unknown_tagged_object) },\n      \"Failed to get external value\"\n    )?;\n\n    let type_id = unknown_tagged_object as *const TypeId;\n    let external = if unsafe { *type_id } == TypeId::of::<T>() {\n      let tagged_object = unknown_tagged_object as *mut External<T>;\n      Box::leak(unsafe { Box::from_raw(tagged_object) })\n    } else {\n      return Err(Error::new(\n        Status::InvalidArg,\n        format!(\n          \"<{}> on `External` is not the type of wrapped object\",\n          std::any::type_name::<T>()\n        ),\n      ));\n    };\n\n    let mut ref_ptr = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_create_reference(env, napi_val, 1, &mut ref_ptr) },\n      \"Failed to create reference on external value\"\n    )?;\n\n    Ok(ExternalRef {\n      obj: external,\n      raw: ref_ptr,\n      env,\n    })\n  }\n}\n\nimpl<T: 'static> ToNapiValue for ExternalRef<T> {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    let mut value = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_reference_value(env, val.raw, &mut value) },\n      \"Failed to get reference value on external value\"\n    )?;\n    Ok(value)\n  }\n}\n\nimpl<T: 'static> ToNapiValue for &ExternalRef<T> {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    let mut value = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_reference_value(env, val.raw, &mut value) },\n      \"Failed to get reference value on external value\"\n    )?;\n    Ok(value)\n  }\n}\n\nimpl<T: 'static> Deref for ExternalRef<T> {\n  type Target = T;\n\n  fn deref(&self) -> &Self::Target {\n    self.obj\n  }\n}\n\nimpl<T: 'static> DerefMut for ExternalRef<T> {\n  fn deref_mut(&mut self) -> &mut Self::Target {\n    self.obj\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/function.rs",
    "content": "use std::ptr;\n\nuse super::{Either, FromNapiValue, ToNapiValue, TypeName, Unknown, ValidateNapiValue};\n\n#[cfg(feature = \"napi4\")]\nuse crate::threadsafe_function::{ThreadsafeCallContext, ThreadsafeFunction};\n#[cfg(feature = \"compat-mode\")]\n#[allow(deprecated)]\npub use crate::JsFunction;\nuse crate::{\n  bindgen_runtime::JsObjectValue, check_pending_exception, check_status, sys, Env, JsValue, Result,\n  Status, ValueType,\n};\n\npub trait JsValuesTupleIntoVec {\n  fn into_vec(self, env: sys::napi_env) -> Result<Vec<sys::napi_value>>;\n}\n\nimpl<T> JsValuesTupleIntoVec for T\nwhere\n  T: ToNapiValue,\n{\n  #[allow(clippy::not_unsafe_ptr_arg_deref)]\n  fn into_vec(self, env: sys::napi_env) -> Result<Vec<sys::napi_value>> {\n    // allow call function with `()` and function's arguments should be empty array\n    if std::mem::size_of::<T>() == 0 {\n      Ok(vec![])\n    } else {\n      Ok(vec![unsafe {\n        <T as ToNapiValue>::to_napi_value(env, self)?\n      }])\n    }\n  }\n}\npub trait TupleFromSliceValues {\n  #[allow(clippy::missing_safety_doc)]\n  unsafe fn from_slice_values(env: sys::napi_env, values: &[sys::napi_value]) -> Result<Self>\n  where\n    Self: Sized;\n}\n\n#[repr(C)]\npub struct FnArgs<T> {\n  pub data: T,\n}\n\nimpl<T> From<T> for FnArgs<T> {\n  fn from(value: T) -> Self {\n    FnArgs { data: value }\n  }\n}\n\nmacro_rules! impl_tuple_conversion {\n  ($($ident:ident),*) => {\n    impl<$($ident: ToNapiValue),*> JsValuesTupleIntoVec for FnArgs<($($ident,)*)> {\n      #[allow(clippy::not_unsafe_ptr_arg_deref)]\n      fn into_vec(self, env: sys::napi_env) -> Result<Vec<sys::napi_value>> {\n        #[allow(non_snake_case)]\n        let ($($ident,)*) = self.data;\n        Ok(vec![$(unsafe { <$ident as ToNapiValue>::to_napi_value(env, $ident)? }),*])\n      }\n    }\n\n    impl<$($ident: FromNapiValue),*> TupleFromSliceValues for ($($ident,)*) {\n      unsafe fn from_slice_values(env: sys::napi_env, values: &[sys::napi_value]) -> $crate::Result<Self> {\n        #[allow(non_snake_case)]\n        let [$($ident),*] = values.try_into().map_err(|_| crate::Error::new(\n          crate::Status::InvalidArg,\n          \"Invalid number of arguments\",\n        ))?;\n        Ok(($(\n          unsafe { $ident::from_napi_value(env, $ident)?}\n        ,)*))\n      }\n    }\n  };\n}\n\nimpl_tuple_conversion!(A);\nimpl_tuple_conversion!(A, B);\nimpl_tuple_conversion!(A, B, C);\nimpl_tuple_conversion!(A, B, C, D);\nimpl_tuple_conversion!(A, B, C, D, E);\nimpl_tuple_conversion!(A, B, C, D, E, F);\nimpl_tuple_conversion!(A, B, C, D, E, F, G);\nimpl_tuple_conversion!(A, B, C, D, E, F, G, H);\nimpl_tuple_conversion!(A, B, C, D, E, F, G, H, I);\nimpl_tuple_conversion!(A, B, C, D, E, F, G, H, I, J);\nimpl_tuple_conversion!(A, B, C, D, E, F, G, H, I, J, K);\nimpl_tuple_conversion!(A, B, C, D, E, F, G, H, I, J, K, L);\nimpl_tuple_conversion!(A, B, C, D, E, F, G, H, I, J, K, L, M);\nimpl_tuple_conversion!(A, B, C, D, E, F, G, H, I, J, K, L, M, N);\nimpl_tuple_conversion!(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O);\nimpl_tuple_conversion!(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P);\nimpl_tuple_conversion!(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q);\nimpl_tuple_conversion!(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R);\nimpl_tuple_conversion!(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S);\nimpl_tuple_conversion!(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T);\nimpl_tuple_conversion!(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U);\nimpl_tuple_conversion!(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V);\nimpl_tuple_conversion!(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W);\nimpl_tuple_conversion!(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X);\nimpl_tuple_conversion!(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y);\nimpl_tuple_conversion!(\n  A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z\n);\n\n#[derive(Clone, Copy)]\n/// A JavaScript function.\n/// It can only live in the scope of a function call.\n/// If you want to use it outside the scope of a function call, you can turn it into a reference.\n/// By calling the `create_ref` method.\npub struct Function<'scope, Args: JsValuesTupleIntoVec = Unknown<'scope>, Return = Unknown<'scope>>\n{\n  pub(crate) env: sys::napi_env,\n  pub(crate) value: sys::napi_value,\n  pub(crate) _args: std::marker::PhantomData<Args>,\n  pub(crate) _return: std::marker::PhantomData<Return>,\n  pub(crate) _scope: std::marker::PhantomData<&'scope ()>,\n}\n\nimpl<Args: JsValuesTupleIntoVec, Return> TypeName for Function<'_, Args, Return> {\n  fn type_name() -> &'static str {\n    \"Function\"\n  }\n\n  fn value_type() -> crate::ValueType {\n    ValueType::Function\n  }\n}\n\nimpl<'env, Args: JsValuesTupleIntoVec, Return> JsValue<'env> for Function<'env, Args, Return> {\n  fn value(&self) -> crate::Value {\n    crate::Value {\n      value: self.value,\n      env: self.env,\n      value_type: ValueType::Function,\n    }\n  }\n}\n\nimpl<'env, Args: JsValuesTupleIntoVec, Return> JsObjectValue<'env>\n  for Function<'env, Args, Return>\n{\n}\n\nimpl<Args: JsValuesTupleIntoVec, Return> FromNapiValue for Function<'_, Args, Return> {\n  unsafe fn from_napi_value(env: sys::napi_env, value: sys::napi_value) -> Result<Self> {\n    Ok(Function {\n      env,\n      value,\n      _args: std::marker::PhantomData,\n      _return: std::marker::PhantomData,\n      _scope: std::marker::PhantomData,\n    })\n  }\n}\n\nimpl<Args: JsValuesTupleIntoVec, Return> ValidateNapiValue for Function<'_, Args, Return> {}\n\nimpl<Args: JsValuesTupleIntoVec, Return> Function<'_, Args, Return> {\n  /// Get the name of the JavaScript function.\n  pub fn name(&self) -> Result<String> {\n    let mut name = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_get_named_property(self.env, self.value, c\"name\".as_ptr().cast(), &mut name)\n      },\n      \"Get function name failed\"\n    )?;\n    unsafe { String::from_napi_value(self.env, name) }\n  }\n\n  /// Create a reference to the JavaScript function.\n  pub fn create_ref(&self) -> Result<FunctionRef<Args, Return>> {\n    let mut reference = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_create_reference(self.env, self.value, 1, &mut reference) },\n      \"Create reference failed\"\n    )?;\n    Ok(FunctionRef {\n      inner: reference,\n      env: self.env,\n      _args: std::marker::PhantomData,\n      _return: std::marker::PhantomData,\n    })\n  }\n\n  /// Create a new instance of the JavaScript Class.\n  pub fn new_instance<'a>(&self, args: Args) -> Result<Unknown<'a>> {\n    let mut raw_instance = ptr::null_mut();\n    let mut args = args.into_vec(self.env)?;\n    check_status!(\n      unsafe {\n        sys::napi_new_instance(\n          self.env,\n          self.value,\n          args.len(),\n          args.as_mut_ptr().cast(),\n          &mut raw_instance,\n        )\n      },\n      \"Create new instance failed\"\n    )?;\n    unsafe { Unknown::from_napi_value(self.env, raw_instance) }\n  }\n\n  #[cfg(feature = \"napi4\")]\n  /// Create a threadsafe function from the JavaScript function.\n  pub fn build_threadsafe_function<T: 'static>(\n    &self,\n  ) -> ThreadsafeFunctionBuilder<'_, T, Args, Return> {\n    ThreadsafeFunctionBuilder {\n      env: self.env,\n      value: self.value,\n      _args: std::marker::PhantomData,\n      _return: std::marker::PhantomData,\n    }\n  }\n}\n\nimpl<Args: JsValuesTupleIntoVec, Return: FromNapiValue> Function<'_, Args, Return> {\n  /// Call the JavaScript function.\n  /// `this` in the JavaScript function will be `undefined`.\n  /// If you want to specify `this`, you can use the `apply` method.\n  pub fn call(&self, args: Args) -> Result<Return> {\n    let mut raw_this = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_undefined(self.env, &mut raw_this) },\n      \"Get undefined value failed\"\n    )?;\n    let args_ptr = args.into_vec(self.env)?;\n    let mut raw_return = ptr::null_mut();\n    check_pending_exception!(\n      self.env,\n      unsafe {\n        sys::napi_call_function(\n          self.env,\n          raw_this,\n          self.value,\n          args_ptr.len(),\n          args_ptr.as_ptr(),\n          &mut raw_return,\n        )\n      },\n      \"Call Function failed\"\n    )?;\n    unsafe { Return::from_napi_value(self.env, raw_return) }\n  }\n\n  /// Call the JavaScript function.\n  /// `this` in the JavaScript function will be the provided `this`.\n  pub fn apply<Context: ToNapiValue>(&self, this: Context, args: Args) -> Result<Return> {\n    let raw_this = unsafe { Context::to_napi_value(self.env, this) }?;\n    let args_ptr = args.into_vec(self.env)?;\n    let mut raw_return = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_call_function(\n          self.env,\n          raw_this,\n          self.value,\n          args_ptr.len(),\n          args_ptr.as_ptr(),\n          &mut raw_return,\n        )\n      },\n      \"Call Function failed\"\n    )?;\n    unsafe { Return::from_napi_value(self.env, raw_return) }\n  }\n\n  /// Call `Function.bind`\n  pub fn bind<T: ToNapiValue>(&self, this: T) -> Result<Function<'_, Args, Return>> {\n    let raw_this = unsafe { T::to_napi_value(self.env, this) }?;\n    let mut bind_function = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_get_named_property(self.env, self.value, c\"bind\".as_ptr(), &mut bind_function)\n      },\n      \"Get bind function failed\"\n    )?;\n    let mut bound_function = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_call_function(\n          self.env,\n          self.value,\n          bind_function,\n          1,\n          [raw_this].as_ptr(),\n          &mut bound_function,\n        )\n      },\n      \"Bind function failed\"\n    )?;\n    Ok(Function {\n      env: self.env,\n      value: bound_function,\n      _args: std::marker::PhantomData,\n      _return: std::marker::PhantomData,\n      _scope: std::marker::PhantomData,\n    })\n  }\n}\n\n#[cfg(feature = \"napi4\")]\npub struct ThreadsafeFunctionBuilder<\n  'env,\n  T: 'static,\n  Args: 'static + JsValuesTupleIntoVec,\n  Return,\n  ErrorStatus: AsRef<str> + From<Status> = Status,\n  const CalleeHandled: bool = false,\n  const Weak: bool = false,\n  const MaxQueueSize: usize = 0,\n> {\n  pub(crate) env: sys::napi_env,\n  pub(crate) value: sys::napi_value,\n  _args: std::marker::PhantomData<(T, &'env Args, ErrorStatus)>,\n  _return: std::marker::PhantomData<Return>,\n}\n\n#[cfg(feature = \"napi4\")]\nimpl<\n    'env,\n    T: 'static,\n    Args: 'static + JsValuesTupleIntoVec,\n    Return: FromNapiValue,\n    ErrorStatus: AsRef<str> + From<Status>,\n    const CalleeHandled: bool,\n    const Weak: bool,\n    const MaxQueueSize: usize,\n  >\n  ThreadsafeFunctionBuilder<'env, T, Args, Return, ErrorStatus, CalleeHandled, Weak, MaxQueueSize>\n{\n  pub fn error_status<NewErrorStatus: AsRef<str> + From<Status>>(\n    self,\n  ) -> ThreadsafeFunctionBuilder<\n    'env,\n    T,\n    Args,\n    Return,\n    NewErrorStatus,\n    CalleeHandled,\n    Weak,\n    MaxQueueSize,\n  > {\n    ThreadsafeFunctionBuilder {\n      env: self.env,\n      value: self.value,\n      _args: std::marker::PhantomData,\n      _return: std::marker::PhantomData,\n    }\n  }\n\n  pub fn weak<const NewWeak: bool>(\n    self,\n  ) -> ThreadsafeFunctionBuilder<\n    'env,\n    T,\n    Args,\n    Return,\n    ErrorStatus,\n    CalleeHandled,\n    NewWeak,\n    MaxQueueSize,\n  > {\n    ThreadsafeFunctionBuilder {\n      env: self.env,\n      value: self.value,\n      _args: std::marker::PhantomData,\n      _return: std::marker::PhantomData,\n    }\n  }\n\n  pub fn callee_handled<const NewCalleeHandled: bool>(\n    self,\n  ) -> ThreadsafeFunctionBuilder<\n    'env,\n    T,\n    Args,\n    Return,\n    ErrorStatus,\n    NewCalleeHandled,\n    Weak,\n    MaxQueueSize,\n  > {\n    ThreadsafeFunctionBuilder {\n      env: self.env,\n      value: self.value,\n      _args: std::marker::PhantomData,\n      _return: std::marker::PhantomData,\n    }\n  }\n\n  pub fn max_queue_size<const NewMaxQueueSize: usize>(\n    self,\n  ) -> ThreadsafeFunctionBuilder<\n    'env,\n    T,\n    Args,\n    Return,\n    ErrorStatus,\n    CalleeHandled,\n    Weak,\n    NewMaxQueueSize,\n  > {\n    ThreadsafeFunctionBuilder {\n      env: self.env,\n      value: self.value,\n      _args: std::marker::PhantomData,\n      _return: std::marker::PhantomData,\n    }\n  }\n\n  pub fn build_callback<CallJsBackArgs, Callback>(\n    &self,\n    call_js_back: Callback,\n  ) -> Result<\n    ThreadsafeFunction<T, Return, CallJsBackArgs, ErrorStatus, CalleeHandled, Weak, MaxQueueSize>,\n  >\n  where\n    CallJsBackArgs: 'static + JsValuesTupleIntoVec,\n    Callback: 'static + FnMut(ThreadsafeCallContext<T>) -> Result<CallJsBackArgs>,\n    ErrorStatus: AsRef<str>,\n    ErrorStatus: From<Status>,\n  {\n    ThreadsafeFunction::<T, Return, Args, ErrorStatus, CalleeHandled, Weak, MaxQueueSize>::create(\n      self.env,\n      self.value,\n      call_js_back,\n    )\n  }\n}\n\n#[cfg(feature = \"napi4\")]\nimpl<\n    T: 'static + JsValuesTupleIntoVec,\n    Return: FromNapiValue,\n    ErrorStatus: AsRef<str> + From<Status>,\n    const CalleeHandled: bool,\n    const Weak: bool,\n    const MaxQueueSize: usize,\n  > ThreadsafeFunctionBuilder<'_, T, T, Return, ErrorStatus, CalleeHandled, Weak, MaxQueueSize>\n{\n  pub fn build(\n    &self,\n  ) -> Result<ThreadsafeFunction<T, Return, T, ErrorStatus, CalleeHandled, Weak, MaxQueueSize>> {\n    unsafe { ThreadsafeFunction::from_napi_value(self.env, self.value) }\n  }\n}\n\n/// A reference to a JavaScript function.\n/// It can be used to outlive the scope of the function.\npub struct FunctionRef<Args: JsValuesTupleIntoVec, Return> {\n  pub(crate) inner: sys::napi_ref,\n  pub(crate) env: sys::napi_env,\n  _args: std::marker::PhantomData<Args>,\n  _return: std::marker::PhantomData<Return>,\n}\n\nunsafe impl<Args: JsValuesTupleIntoVec, Return> Send for FunctionRef<Args, Return> {}\nunsafe impl<Args: JsValuesTupleIntoVec, Return> Sync for FunctionRef<Args, Return> {}\n\nimpl<Args: JsValuesTupleIntoVec, Return> FunctionRef<Args, Return> {\n  pub fn borrow_back<'scope>(&self, env: &'scope Env) -> Result<Function<'scope, Args, Return>> {\n    let mut value = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_reference_value(env.0, self.inner, &mut value) },\n      \"Get reference value failed\"\n    )?;\n    Ok(Function {\n      env: env.0,\n      value,\n      _args: std::marker::PhantomData,\n      _return: std::marker::PhantomData,\n      _scope: std::marker::PhantomData,\n    })\n  }\n}\n\nimpl<Args: JsValuesTupleIntoVec, Return> Drop for FunctionRef<Args, Return> {\n  fn drop(&mut self) {\n    let status = unsafe { sys::napi_delete_reference(self.env, self.inner) };\n    debug_assert_eq!(status, sys::Status::napi_ok, \"Drop FunctionRef failed\");\n  }\n}\n\nimpl<Args: JsValuesTupleIntoVec, Return> TypeName for FunctionRef<Args, Return> {\n  fn type_name() -> &'static str {\n    \"Function\"\n  }\n\n  fn value_type() -> crate::ValueType {\n    ValueType::Function\n  }\n}\n\nimpl<Args: JsValuesTupleIntoVec, Return> FromNapiValue for FunctionRef<Args, Return> {\n  unsafe fn from_napi_value(env: sys::napi_env, value: sys::napi_value) -> Result<Self> {\n    let mut reference = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_create_reference(env, value, 1, &mut reference) },\n      \"Create reference failed\"\n    )?;\n    Ok(FunctionRef {\n      inner: reference,\n      env,\n      _args: std::marker::PhantomData,\n      _return: std::marker::PhantomData,\n    })\n  }\n}\n\nimpl<Args: JsValuesTupleIntoVec, Return: FromNapiValue> ValidateNapiValue\n  for FunctionRef<Args, Return>\n{\n}\n\npub struct FunctionCallContext<'scope> {\n  pub(crate) args: &'scope [sys::napi_value],\n  pub(crate) this: sys::napi_value,\n  pub env: &'scope mut Env,\n}\n\nimpl FunctionCallContext<'_> {\n  /// Get the number of arguments from the JavaScript function call.\n  pub fn length(&self) -> usize {\n    self.args.len()\n  }\n\n  pub fn get<ArgType: FromNapiValue>(&self, index: usize) -> Result<ArgType> {\n    if index >= self.length() {\n      Err(crate::Error::new(\n        crate::Status::GenericFailure,\n        \"Arguments index out of range\".to_owned(),\n      ))\n    } else {\n      unsafe { ArgType::from_napi_value(self.env.0, self.args[index]) }\n    }\n  }\n\n  pub fn try_get<ArgType: TypeName + FromNapiValue>(\n    &self,\n    index: usize,\n  ) -> Result<Either<ArgType, ()>> {\n    let len = self.length();\n    if index >= len {\n      Err(crate::Error::new(\n        crate::Status::GenericFailure,\n        \"Arguments index out of range\".to_owned(),\n      ))\n    } else if index < len {\n      unsafe { ArgType::from_napi_value(self.env.0, self.args[index]) }.map(Either::A)\n    } else {\n      Ok(Either::B(()))\n    }\n  }\n\n  /// Get the first argument from the JavaScript function call.\n  pub fn first_arg<T: FromNapiValue>(&self) -> Result<T> {\n    if self.args.is_empty() {\n      return Err(crate::Error::new(\n        crate::Status::InvalidArg,\n        \"There is no arguments\",\n      ));\n    }\n    unsafe { T::from_napi_value(self.env.0, self.args[0]) }\n  }\n\n  /// Get the arguments from the JavaScript function call.\n  /// The arguments will be converted to a tuple.\n  /// If the number of arguments is not equal to the number of tuple elements, an error will be returned.\n  /// example:\n  /// ```rust\n  /// let (num, string) = ctx.args::<(u32, String)>()?;\n  /// ````\n  pub fn args<Args: TupleFromSliceValues>(&self) -> Result<Args> {\n    unsafe { Args::from_slice_values(self.env.0, self.args) }\n  }\n\n  /// Get the arguments Vec from the JavaScript function call.\n  pub fn arguments<T: FromNapiValue>(&self) -> Result<Vec<T>> {\n    self\n      .args\n      .iter()\n      .map(|arg| unsafe { <T as FromNapiValue>::from_napi_value(self.env.0, *arg) })\n      .collect::<Result<Vec<T>>>()\n  }\n\n  /// Get the `this` from the JavaScript function call.\n  pub fn this<This: FromNapiValue>(&self) -> Result<This> {\n    unsafe { This::from_napi_value(self.env.0, self.this) }\n  }\n}\n\n#[cfg(feature = \"compat-mode\")]\nmacro_rules! impl_call_apply {\n  ($fn_call_name:ident, $fn_apply_name:ident, $($ident:ident),*) => {\n    #[allow(non_snake_case, deprecated, clippy::too_many_arguments)]\n    pub fn $fn_call_name<$($ident: ToNapiValue),*, Return: FromNapiValue>(\n      &self,\n      $($ident: $ident),*\n    ) -> Result<Return> {\n      let raw_this = unsafe { ToNapiValue::to_napi_value(self.0.env, ()) }?;\n\n      let raw_args = vec![\n        $(\n          unsafe { $ident::to_napi_value(self.0.env, $ident) }?\n        ),*\n      ];\n\n      let mut return_value = ptr::null_mut();\n      check_pending_exception!(self.0.env, unsafe {\n        sys::napi_call_function(\n          self.0.env,\n          raw_this,\n          self.0.value,\n          raw_args.len(),\n          raw_args.as_ptr(),\n          &mut return_value,\n        )\n      })?;\n\n      unsafe { Return::from_napi_value(self.0.env, return_value) }\n    }\n\n    #[allow(non_snake_case, deprecated, clippy::too_many_arguments)]\n    pub fn $fn_apply_name<$($ident: ToNapiValue),*, Context: ToNapiValue, Return: FromNapiValue>(\n      &self,\n      this: Context,\n      $($ident: $ident),*\n    ) -> Result<Return> {\n      let raw_this = unsafe { Context::to_napi_value(self.0.env, this) }?;\n\n      let raw_args = vec![\n        $(\n          unsafe { $ident::to_napi_value(self.0.env, $ident) }?\n        ),*\n      ];\n\n      let mut return_value = ptr::null_mut();\n      check_pending_exception!(self.0.env, unsafe {\n        sys::napi_call_function(\n          self.0.env,\n          raw_this,\n          self.0.value,\n          raw_args.len(),\n          raw_args.as_ptr(),\n          &mut return_value,\n        )\n      })?;\n\n      unsafe { Return::from_napi_value(self.0.env, return_value) }\n    }\n  };\n}\n\n#[cfg(feature = \"compat-mode\")]\n#[allow(deprecated)]\nimpl JsFunction {\n  pub fn apply0<Return: FromNapiValue, Context: ToNapiValue>(\n    &self,\n    this: Context,\n  ) -> Result<Return> {\n    let raw_this = unsafe { Context::to_napi_value(self.0.env, this) }?;\n\n    let mut return_value = ptr::null_mut();\n    check_pending_exception!(self.0.env, unsafe {\n      sys::napi_call_function(\n        self.0.env,\n        raw_this,\n        self.0.value,\n        0,\n        ptr::null_mut(),\n        &mut return_value,\n      )\n    })?;\n\n    unsafe { Return::from_napi_value(self.0.env, return_value) }\n  }\n\n  pub fn call0<Return: FromNapiValue>(&self) -> Result<Return> {\n    let raw_this = unsafe { ToNapiValue::to_napi_value(self.0.env, ()) }?;\n\n    let mut return_value = ptr::null_mut();\n    check_pending_exception!(self.0.env, unsafe {\n      sys::napi_call_function(\n        self.0.env,\n        raw_this,\n        self.0.value,\n        0,\n        ptr::null_mut(),\n        &mut return_value,\n      )\n    })?;\n\n    unsafe { Return::from_napi_value(self.0.env, return_value) }\n  }\n\n  impl_call_apply!(call1, apply1, Arg1);\n  impl_call_apply!(call2, apply2, Arg1, Arg2);\n  impl_call_apply!(call3, apply3, Arg1, Arg2, Arg3);\n  impl_call_apply!(call4, apply4, Arg1, Arg2, Arg3, Arg4);\n  impl_call_apply!(call5, apply5, Arg1, Arg2, Arg3, Arg4, Arg5);\n  impl_call_apply!(call6, apply6, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6);\n  impl_call_apply!(call7, apply7, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7);\n  impl_call_apply!(call8, apply8, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8);\n  impl_call_apply!(call9, apply9, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9);\n  impl_call_apply!(call10, apply10, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10);\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/map.rs",
    "content": "use std::collections::{BTreeMap, HashMap};\nuse std::hash::{BuildHasher, Hash};\n\n#[cfg(feature = \"object_indexmap\")]\nuse indexmap::IndexMap;\n\nuse crate::bindgen_prelude::*;\n\nimpl<K, V, S> TypeName for HashMap<K, V, S> {\n  fn type_name() -> &'static str {\n    \"HashMap\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl<K: From<String> + Eq + Hash, V: FromNapiValue, S> ValidateNapiValue for HashMap<K, V, S> {}\n\nimpl<K, V, S> ToNapiValue for HashMap<K, V, S>\nwhere\n  K: AsRef<str>,\n  V: ToNapiValue,\n{\n  #[cfg(not(feature = \"noop\"))]\n  unsafe fn to_napi_value(raw_env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let env = Env::from(raw_env);\n    #[cfg_attr(feature = \"napi10\", allow(unused_mut))]\n    let mut obj = Object::new(&env)?;\n    #[cfg(all(\n      feature = \"napi10\",\n      feature = \"node_version_detect\",\n      feature = \"dyn-symbols\",\n      not(feature = \"noop\"),\n    ))]\n    let node_version = NODE_VERSION.get().unwrap();\n    for (k, v) in val.into_iter() {\n      #[cfg(all(\n        feature = \"napi10\",\n        feature = \"node_version_detect\",\n        feature = \"dyn-symbols\",\n        not(feature = \"noop\"),\n      ))]\n      {\n        if node_version.major >= 20 && node_version.minor >= 18 {\n          fast_set_property(raw_env, obj.0.value, k, v)?;\n        } else {\n          obj.set(k.as_ref(), v)?;\n        }\n      }\n      #[cfg(not(all(\n        feature = \"napi10\",\n        feature = \"node_version_detect\",\n        feature = \"dyn-symbols\"\n      )))]\n      obj.set(k.as_ref(), v)?;\n    }\n\n    unsafe { Object::to_napi_value(raw_env, obj) }\n  }\n\n  #[cfg(feature = \"noop\")]\n  unsafe fn to_napi_value(_env: sys::napi_env, _val: Self) -> Result<sys::napi_value> {\n    unimplemented!(\"HashMap is not supported in noop mode\");\n  }\n}\n\nimpl<K, V, S> FromNapiValue for HashMap<K, V, S>\nwhere\n  K: From<String> + Eq + Hash,\n  V: FromNapiValue,\n  S: Default + BuildHasher,\n{\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let obj = unsafe { Object::from_napi_value(env, napi_val)? };\n    let keys = Object::keys(&obj)?;\n    let mut map: HashMap<K, V, S> = HashMap::with_capacity_and_hasher(keys.len(), S::default());\n    for key in keys.into_iter() {\n      if let Some(val) = obj.get(&key)? {\n        map.insert(K::from(key), val);\n      }\n    }\n\n    Ok(map)\n  }\n}\n\nimpl<K, V> TypeName for BTreeMap<K, V> {\n  fn type_name() -> &'static str {\n    \"BTreeMap\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl<K: From<String> + Ord, V: FromNapiValue> ValidateNapiValue for BTreeMap<K, V> {}\n\nimpl<K, V> ToNapiValue for BTreeMap<K, V>\nwhere\n  K: AsRef<str>,\n  V: ToNapiValue,\n{\n  #[cfg(not(feature = \"noop\"))]\n  unsafe fn to_napi_value(raw_env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let env = Env::from(raw_env);\n    #[cfg_attr(feature = \"napi10\", allow(unused_mut))]\n    let mut obj = Object::new(&env)?;\n    #[cfg(all(\n      feature = \"napi10\",\n      feature = \"node_version_detect\",\n      feature = \"dyn-symbols\",\n      not(feature = \"noop\"),\n    ))]\n    let node_version = NODE_VERSION.get().unwrap();\n    for (k, v) in val.into_iter() {\n      #[cfg(all(\n        feature = \"napi10\",\n        feature = \"node_version_detect\",\n        feature = \"dyn-symbols\",\n        not(feature = \"noop\"),\n      ))]\n      {\n        if node_version.major >= 20 && node_version.minor >= 18 {\n          fast_set_property(raw_env, obj.0.value, k, v)?;\n        } else {\n          obj.set(k.as_ref(), v)?;\n        }\n      }\n      #[cfg(not(all(\n        feature = \"napi10\",\n        feature = \"node_version_detect\",\n        feature = \"dyn-symbols\"\n      )))]\n      obj.set(k.as_ref(), v)?;\n    }\n\n    unsafe { Object::to_napi_value(raw_env, obj) }\n  }\n\n  #[cfg(feature = \"noop\")]\n  unsafe fn to_napi_value(_env: sys::napi_env, _val: Self) -> Result<sys::napi_value> {\n    unimplemented!(\"BTreeMap is not supported in noop mode\");\n  }\n}\n\nimpl<K, V> FromNapiValue for BTreeMap<K, V>\nwhere\n  K: From<String> + Ord,\n  V: FromNapiValue,\n{\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let obj = unsafe { Object::from_napi_value(env, napi_val)? };\n    let mut map = BTreeMap::default();\n    for key in Object::keys(&obj)?.into_iter() {\n      if let Some(val) = obj.get(&key)? {\n        map.insert(K::from(key), val);\n      }\n    }\n\n    Ok(map)\n  }\n}\n\n#[cfg(feature = \"object_indexmap\")]\nimpl<K, V, S> TypeName for IndexMap<K, V, S> {\n  fn type_name() -> &'static str {\n    \"IndexMap\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\n#[cfg(feature = \"object_indexmap\")]\nimpl<K: From<String> + Hash + Eq, V: FromNapiValue> ValidateNapiValue for IndexMap<K, V> {}\n\n#[cfg(feature = \"object_indexmap\")]\nimpl<K, V, S> ToNapiValue for IndexMap<K, V, S>\nwhere\n  K: AsRef<str>,\n  V: ToNapiValue,\n  S: Default + BuildHasher,\n{\n  #[cfg(not(feature = \"noop\"))]\n  unsafe fn to_napi_value(raw_env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let env = Env::from(raw_env);\n    #[cfg_attr(feature = \"napi10\", allow(unused_mut))]\n    let mut obj = Object::new(&env)?;\n    #[cfg(all(\n      feature = \"napi10\",\n      feature = \"node_version_detect\",\n      feature = \"dyn-symbols\",\n      not(feature = \"noop\"),\n    ))]\n    let node_version = NODE_VERSION.get().unwrap();\n    for (k, v) in val.into_iter() {\n      #[cfg(all(\n        feature = \"napi10\",\n        feature = \"node_version_detect\",\n        feature = \"dyn-symbols\",\n        not(feature = \"noop\"),\n      ))]\n      {\n        if node_version.major >= 20 && node_version.minor >= 18 {\n          fast_set_property(raw_env, obj.0.value, k, v)?;\n        } else {\n          obj.set(k.as_ref(), v)?;\n        }\n      }\n      #[cfg(not(all(\n        feature = \"experimental\",\n        feature = \"node_version_detect\",\n        feature = \"dyn-symbols\"\n      )))]\n      obj.set(k.as_ref(), v)?;\n    }\n\n    unsafe { Object::to_napi_value(raw_env, obj) }\n  }\n\n  #[cfg(feature = \"noop\")]\n  unsafe fn to_napi_value(_env: sys::napi_env, _val: Self) -> Result<sys::napi_value> {\n    unimplemented!(\"BTreeMap is not supported in noop mode\");\n  }\n}\n\n#[cfg(feature = \"object_indexmap\")]\nimpl<K, V, S> FromNapiValue for IndexMap<K, V, S>\nwhere\n  K: From<String> + Hash + Eq,\n  V: FromNapiValue,\n  S: Default + BuildHasher,\n{\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let obj = unsafe { Object::from_napi_value(env, napi_val)? };\n    let mut map = IndexMap::default();\n    for key in Object::keys(&obj)?.into_iter() {\n      if let Some(val) = obj.get(&key)? {\n        map.insert(K::from(key), val);\n      }\n    }\n\n    Ok(map)\n  }\n}\n\n#[cfg(all(\n  feature = \"napi10\",\n  feature = \"node_version_detect\",\n  feature = \"dyn-symbols\",\n  not(feature = \"noop\"),\n))]\nfn fast_set_property<K: AsRef<str>, V: ToNapiValue>(\n  raw_env: sys::napi_env,\n  obj: sys::napi_value,\n  k: K,\n  v: V,\n) -> Result<()> {\n  let mut property_key = std::ptr::null_mut();\n  check_status!(\n    unsafe {\n      sys::node_api_create_property_key_utf8(\n        raw_env,\n        k.as_ref().as_ptr().cast(),\n        k.as_ref().len() as isize,\n        &mut property_key,\n      )\n    },\n    \"Create property key failed\"\n  )?;\n  check_status!(\n    unsafe { sys::napi_set_property(raw_env, obj, property_key, V::to_napi_value(raw_env, v)?,) },\n    \"Failed to set property\"\n  )?;\n  Ok(())\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/nil.rs",
    "content": "use std::ptr;\n\nuse crate::{bindgen_prelude::*, check_status, sys, type_of, Error, Result, Status, ValueType};\n\n#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, Ord, PartialOrd)]\npub struct Null;\npub type Undefined = ();\n\nimpl TypeName for Null {\n  fn type_name() -> &'static str {\n    \"null\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Null\n  }\n}\n\nimpl ValidateNapiValue for Null {}\n\nimpl FromNapiValue for Null {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    match type_of!(env, napi_val) {\n      Ok(ValueType::Null) => Ok(Null),\n      _ => Err(Error::new(\n        Status::InvalidArg,\n        \"Value is not null\".to_owned(),\n      )),\n    }\n  }\n}\n\nimpl ToNapiValue for Null {\n  unsafe fn to_napi_value(env: sys::napi_env, _val: Self) -> Result<sys::napi_value> {\n    let mut ret = ptr::null_mut();\n\n    check_status!(\n      unsafe { sys::napi_get_null(env, &mut ret) },\n      \"Failed to create napi null value\"\n    )?;\n\n    Ok(ret)\n  }\n}\n\nimpl ToNapiValue for &Null {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, *val)\n  }\n}\n\nimpl ToNapiValue for &mut Null {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, *val)\n  }\n}\n\nimpl TypeName for Undefined {\n  fn type_name() -> &'static str {\n    \"undefined\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Undefined\n  }\n}\n\nimpl ValidateNapiValue for Undefined {}\n\nimpl FromNapiValue for Undefined {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    match type_of!(env, napi_val) {\n      Ok(ValueType::Undefined) => Ok(()),\n      _ => Err(Error::new(\n        Status::InvalidArg,\n        \"Value is not undefined\".to_owned(),\n      )),\n    }\n  }\n}\n\nimpl ToNapiValue for Undefined {\n  unsafe fn to_napi_value(env: sys::napi_env, _val: Self) -> Result<sys::napi_value> {\n    let mut ret = ptr::null_mut();\n\n    check_status!(\n      unsafe { sys::napi_get_undefined(env, &mut ret) },\n      \"Failed to create napi undefined value\"\n    )?;\n\n    Ok(ret)\n  }\n}\n\nimpl ToNapiValue for &Undefined {\n  unsafe fn to_napi_value(env: sys::napi_env, _: Self) -> Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, ())\n  }\n}\n\nimpl ToNapiValue for &mut Undefined {\n  unsafe fn to_napi_value(env: sys::napi_env, _: Self) -> Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, ())\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/number.rs",
    "content": "use crate::{bindgen_prelude::ToNapiValue, check_status, sys, type_of, Error, Result};\n\nmacro_rules! impl_number_conversions {\n  ( $( ($name:literal, $t:ty as $st:ty, $get:ident, $create:ident) ,)* ) => {\n    $(\n      impl $crate::bindgen_prelude::TypeName for $t {\n        fn type_name() -> &'static str {\n          $name\n        }\n\n        fn value_type() -> crate::ValueType {\n          crate::ValueType::Number\n        }\n      }\n\n      impl $crate::bindgen_prelude::ValidateNapiValue for $t { }\n\n      impl ToNapiValue for $t {\n        unsafe fn to_napi_value(env: $crate::sys::napi_env, val: $t) -> Result<$crate::sys::napi_value> {\n          let mut ptr = std::ptr::null_mut();\n          let val: $st = val.into();\n\n          check_status!(\n            unsafe { sys::$create(env, val, &mut ptr) },\n            \"Failed to convert rust type `{}` into napi value\",\n            $name,\n          )?;\n\n          Ok(ptr)\n        }\n      }\n\n      impl ToNapiValue for &$t {\n        unsafe fn to_napi_value(env: $crate::sys::napi_env, val: &$t) -> Result<$crate::sys::napi_value> {\n          ToNapiValue::to_napi_value(env, *val)\n        }\n      }\n\n      impl ToNapiValue for &mut $t {\n        unsafe fn to_napi_value(env: $crate::sys::napi_env, val: &mut $t) -> Result<$crate::sys::napi_value> {\n          ToNapiValue::to_napi_value(env, *val)\n        }\n      }\n\n      impl $crate::bindgen_prelude::FromNapiValue for $t {\n        unsafe fn from_napi_value(env: $crate::sys::napi_env, napi_val: $crate::sys::napi_value) -> Result<Self> {\n          let mut ret = 0 as $st;\n\n          check_status!(\n            unsafe { sys::$get(env, napi_val, &mut ret) },\n            \"Failed to convert napi value {:?} into rust type `{}`\",\n            type_of!(env, napi_val)?,\n            $name,\n          )?;\n\n          ret.try_into().map_err(|_| Error::from_reason(concat!(\"Failed to convert \", stringify!($st), \" to \", stringify!($t))))\n        }\n      }\n    )*\n  };\n}\n\nimpl_number_conversions!(\n  (\"u8\", u8 as u32, napi_get_value_uint32, napi_create_uint32),\n  (\"i8\", i8 as i32, napi_get_value_int32, napi_create_int32),\n  (\"u16\", u16 as u32, napi_get_value_uint32, napi_create_uint32),\n  (\"i16\", i16 as i32, napi_get_value_int32, napi_create_int32),\n  (\"u32\", u32 as u32, napi_get_value_uint32, napi_create_uint32),\n  (\"i32\", i32 as i32, napi_get_value_int32, napi_create_int32),\n  (\"i64\", i64 as i64, napi_get_value_int64, napi_create_int64),\n  (\"f64\", f64 as f64, napi_get_value_double, napi_create_double),\n);\n\nimpl ToNapiValue for f32 {\n  unsafe fn to_napi_value(env: crate::sys::napi_env, val: f32) -> Result<crate::sys::napi_value> {\n    let mut ptr = std::ptr::null_mut();\n\n    check_status!(\n      unsafe { sys::napi_create_double(env, val.into(), &mut ptr) },\n      \"Failed to convert rust type `f32` into napi value\",\n    )?;\n\n    Ok(ptr)\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/object.rs",
    "content": "use std::any::{type_name, TypeId};\n#[cfg(feature = \"napi6\")]\nuse std::convert::TryFrom;\nuse std::ffi::{c_void, CStr, CString};\nuse std::marker::PhantomData;\nuse std::ptr;\n\nuse crate::{\n  bindgen_prelude::*, check_status, raw_finalize, sys, type_of, Callback, TaggedObject, Value,\n};\n#[cfg(feature = \"napi5\")]\nuse crate::{Env, PropertyClosures};\n\npub trait JsObjectValue<'env>: JsValue<'env> {\n  /// Set the property value to the `Object`\n  fn set_property<'k, 'v, K, V>(&mut self, key: K, value: V) -> Result<()>\n  where\n    K: JsValue<'k>,\n    V: JsValue<'v>,\n  {\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_set_property(env, self.value().value, key.raw(), value.raw())\n    })\n  }\n\n  /// Get the property value from the `Object`\n  ///\n  /// Return the `InvalidArg` error if the property is not `T`\n  fn get_property<'k, K, T>(&self, key: K) -> Result<T>\n  where\n    K: JsValue<'k>,\n    T: FromNapiValue + ValidateNapiValue,\n  {\n    let mut raw_value = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_get_property(env, self.value().value, key.raw(), &mut raw_value)\n    })?;\n    unsafe { T::validate(env, raw_value) }.map_err(|mut err| {\n      err.reason = format!(\n        \"Object property '{:?}' type mismatch. {}\",\n        key\n          .coerce_to_string()\n          .and_then(|s| s.into_utf8())\n          .and_then(|s| s.into_owned()),\n        err.reason\n      );\n      err\n    })?;\n    unsafe { T::from_napi_value(env, raw_value) }\n  }\n\n  /// Get the property value from the `Object` without validation\n  fn get_property_unchecked<'k, K, T>(&self, key: K) -> Result<T>\n  where\n    K: JsValue<'k>,\n    T: FromNapiValue,\n  {\n    let mut raw_value = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_get_property(env, self.value().value, key.raw(), &mut raw_value)\n    })?;\n    unsafe { T::from_napi_value(env, raw_value) }\n  }\n\n  /// Set the property value to the `Object`\n  fn set_named_property<T>(&mut self, name: &str, value: T) -> Result<()>\n  where\n    T: ToNapiValue,\n  {\n    let key = CString::new(name)?;\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_set_named_property(env, self.raw(), key.as_ptr(), T::to_napi_value(env, value)?)\n    })\n  }\n\n  /// Set the property value to the `Object`, the property name is a `CStr`\n  /// This is useful when the property name comes from a `C` library\n  fn set_c_named_property<T>(&mut self, name: &CStr, value: T) -> Result<()>\n  where\n    T: ToNapiValue,\n  {\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_set_named_property(\n        env,\n        self.raw(),\n        name.as_ptr(),\n        T::to_napi_value(env, value)?,\n      )\n    })\n  }\n\n  /// Create a named method on the `Object`\n  fn create_named_method<K>(&mut self, name: K, function: Callback) -> Result<()>\n  where\n    K: AsRef<str>,\n  {\n    let mut js_function = ptr::null_mut();\n    let len = name.as_ref().len();\n    let name = CString::new(name.as_ref())?;\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_create_function(\n        env,\n        name.as_ptr(),\n        len as isize,\n        Some(function),\n        ptr::null_mut(),\n        &mut js_function,\n      )\n    })?;\n    check_status!(\n      unsafe { sys::napi_set_named_property(env, self.value().value, name.as_ptr(), js_function) },\n      \"create_named_method error\"\n    )\n  }\n\n  /// Create a named method on the `Object`, the name is a `CStr`\n  /// This is useful when the method name comes from a `C` library\n  fn create_c_named_method(&mut self, name: &CStr, function: Callback) -> Result<()> {\n    let mut js_function = ptr::null_mut();\n    let len = name.count_bytes();\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_create_function(\n        env,\n        name.as_ptr(),\n        len as isize,\n        Some(function),\n        ptr::null_mut(),\n        &mut js_function,\n      )\n    })?;\n    check_status!(\n      unsafe { sys::napi_set_named_property(env, self.value().value, name.as_ptr(), js_function) },\n      \"create_named_method error\"\n    )\n  }\n\n  /// Get the property value from the `Object`\n  ///\n  /// Return the `InvalidArg` error if the property is not `T`\n  fn get_named_property<T>(&self, name: &str) -> Result<T>\n  where\n    T: FromNapiValue + ValidateNapiValue,\n  {\n    let key = CString::new(name)?;\n    let mut raw_value = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(\n      unsafe {\n        sys::napi_get_named_property(env, self.value().value, key.as_ptr(), &mut raw_value)\n      },\n      \"get_named_property error\"\n    )?;\n    unsafe { <T as ValidateNapiValue>::validate(env, raw_value) }.map_err(|mut err| {\n      err.reason = format!(\"Object property '{name}' type mismatch. {}\", err.reason);\n      err\n    })?;\n    unsafe { <T as FromNapiValue>::from_napi_value(env, raw_value) }\n  }\n\n  /// Get the property value from the `Object`\n  ///\n  /// Return the `InvalidArg` error if the property is not `T`\n  ///\n  /// This is useful when the property name comes from a `C` library\n  fn get_c_named_property<T>(&self, name: &CStr) -> Result<T>\n  where\n    T: FromNapiValue + ValidateNapiValue,\n  {\n    let mut raw_value = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(\n      unsafe {\n        sys::napi_get_named_property(env, self.value().value, name.as_ptr(), &mut raw_value)\n      },\n      \"get_named_property error\"\n    )?;\n    unsafe { <T as ValidateNapiValue>::validate(env, raw_value) }.map_err(|mut err| {\n      err.reason = format!(\n        \"Object property '{}' type mismatch. {}\",\n        name.to_string_lossy(),\n        err.reason\n      );\n      err\n    })?;\n    unsafe { <T as FromNapiValue>::from_napi_value(env, raw_value) }\n  }\n\n  /// Get the property value from the `Object` without validation\n  fn get_named_property_unchecked<T>(&self, name: &str) -> Result<T>\n  where\n    T: FromNapiValue,\n  {\n    let key = CString::new(name)?;\n    let mut raw_value = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(\n      unsafe {\n        sys::napi_get_named_property(env, self.value().value, key.as_ptr(), &mut raw_value)\n      },\n      \"get_named_property_unchecked error\"\n    )?;\n    unsafe { <T as FromNapiValue>::from_napi_value(env, raw_value) }\n  }\n\n  /// Get the property value from the `Object` without validation\n  ///\n  /// This is useful when the property name comes from a `C` library\n  fn get_c_named_property_unchecked<T>(&self, name: &CStr) -> Result<T>\n  where\n    T: FromNapiValue,\n  {\n    let mut raw_value = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(\n      unsafe {\n        sys::napi_get_named_property(env, self.value().value, name.as_ptr(), &mut raw_value)\n      },\n      \"get_c_named_property_unchecked error\"\n    )?;\n    unsafe { <T as FromNapiValue>::from_napi_value(env, raw_value) }\n  }\n\n  /// Check if the `Object` has the named property\n  fn has_named_property<N: AsRef<str>>(&self, name: N) -> Result<bool> {\n    let mut result = false;\n    let key = CString::new(name.as_ref())?;\n    let env = self.value().env;\n    check_status!(\n      unsafe { sys::napi_has_named_property(env, self.value().value, key.as_ptr(), &mut result) },\n      \"has_named_property error\"\n    )?;\n    Ok(result)\n  }\n\n  /// Check if the `Object` has the named property\n  ///\n  /// This is useful when the property name comes from a `C` library\n  fn has_c_named_property(&self, name: &CStr) -> Result<bool> {\n    let mut result = false;\n    let env = self.value().env;\n    check_status!(\n      unsafe { sys::napi_has_named_property(env, self.value().value, name.as_ptr(), &mut result) },\n      \"has_c_named_property error\"\n    )?;\n    Ok(result)\n  }\n\n  /// Delete the property from the `Object`, the property name can be a `JsValue`\n  fn delete_property<'s, S>(&mut self, name: S) -> Result<bool>\n  where\n    S: JsValue<'s>,\n  {\n    let mut result = false;\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_delete_property(env, self.value().value, name.raw(), &mut result)\n    })?;\n    Ok(result)\n  }\n\n  /// Delete the property from the `Object`\n  fn delete_named_property<K: AsRef<str>>(&mut self, name: K) -> Result<bool> {\n    let name = name.as_ref();\n    let mut result = false;\n    let mut js_key = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_create_string_utf8(env, name.as_ptr().cast(), name.len() as isize, &mut js_key)\n    })?;\n    check_status!(unsafe {\n      sys::napi_delete_property(env, self.value().value, js_key, &mut result)\n    })?;\n    Ok(result)\n  }\n\n  /// Delete the property from the `Object`\n  ///\n  /// This is useful when the property name comes from a `C` library\n  fn delete_c_named_property(&mut self, name: &CStr) -> Result<bool> {\n    let mut result = false;\n    let mut js_key = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_create_string_utf8(env, name.as_ptr(), name.count_bytes() as isize, &mut js_key)\n    })?;\n    check_status!(unsafe {\n      sys::napi_delete_property(env, self.value().value, js_key, &mut result)\n    })?;\n    Ok(result)\n  }\n\n  /// Check if the `Object` has the own property\n  fn has_own_property(&self, key: &str) -> Result<bool> {\n    let mut result = false;\n    let mut js_key = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_create_string_utf8(env, key.as_ptr().cast(), key.len() as isize, &mut js_key)\n    })?;\n    check_status!(unsafe {\n      sys::napi_has_own_property(env, self.value().value, js_key, &mut result)\n    })?;\n    Ok(result)\n  }\n\n  /// Check if the `Object` has the own property\n  ///\n  /// This is useful when the property name comes from a `C` library\n  fn has_c_own_property(&self, key: &CStr) -> Result<bool> {\n    let mut result = false;\n    let mut js_key = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_create_string_utf8(env, key.as_ptr(), key.count_bytes() as isize, &mut js_key)\n    })?;\n    check_status!(unsafe {\n      sys::napi_has_own_property(env, self.value().value, js_key, &mut result)\n    })?;\n    Ok(result)\n  }\n\n  /// The same as `has_own_property`, but accepts a `JsValue` as the property name.\n  fn has_own_property_js<'k, K>(&self, key: K) -> Result<bool>\n  where\n    K: JsValue<'k>,\n  {\n    let mut result = false;\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_has_own_property(env, self.value().value, key.raw(), &mut result)\n    })?;\n    Ok(result)\n  }\n\n  /// This API checks if the Object passed in has the named property.\n  fn has_property(&self, name: &str) -> Result<bool> {\n    let mut js_key = ptr::null_mut();\n    let mut result = false;\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_create_string_utf8(env, name.as_ptr().cast(), name.len() as isize, &mut js_key)\n    })?;\n    check_status!(unsafe { sys::napi_has_property(env, self.value().value, js_key, &mut result) })?;\n    Ok(result)\n  }\n\n  /// This API is the same as `has_property`, but accepts a `JsValue` as the property name.\n  /// So you can pass the `JsNumber` or `JsSymbol` as the property name.\n  fn has_property_js<'k, K>(&self, name: K) -> Result<bool>\n  where\n    K: JsValue<'k>,\n  {\n    let mut result = false;\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_has_property(env, self.value().value, name.raw(), &mut result)\n    })?;\n    Ok(result)\n  }\n\n  /// This API returns the names of the enumerable properties of object as an array of strings.\n  /// The properties of object whose key is a symbol will not be included.\n  fn get_property_names(&self) -> Result<Object<'env>> {\n    let mut raw_value = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_get_property_names(env, self.value().value, &mut raw_value)\n    })?;\n    Ok(Object::from_raw(env, raw_value))\n  }\n\n  #[cfg(feature = \"napi6\")]\n  /// <https://nodejs.org/api/n-api.html#n_api_napi_get_all_property_names>\n  /// This API returns an array containing the names of the available properties of this object.\n  fn get_all_property_names(\n    &self,\n    mode: KeyCollectionMode,\n    filter: KeyFilter,\n    conversion: KeyConversion,\n  ) -> Result<Object<'env>> {\n    let mut properties_value = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_get_all_property_names(\n        env,\n        self.value().value,\n        mode.into(),\n        filter.into(),\n        conversion.into(),\n        &mut properties_value,\n      )\n    })?;\n    Ok(Object::from_raw(env, properties_value))\n  }\n\n  /// This returns the equivalent of `Object.getPrototypeOf` (which is not the same as the function's prototype property).\n  fn get_prototype(&self) -> Result<Unknown<'env>> {\n    let mut result = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(unsafe { sys::napi_get_prototype(env, self.value().value, &mut result) })?;\n    Ok(unsafe { Unknown::from_raw_unchecked(env, result) })\n  }\n\n  /// Get the prototype of the `Object`\n  fn get_prototype_unchecked<T>(&self) -> Result<T>\n  where\n    T: FromNapiValue,\n  {\n    let mut result = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(unsafe { sys::napi_get_prototype(env, self.value().value, &mut result) })?;\n    unsafe { T::from_napi_value(env, result) }\n  }\n\n  /// Set the element at the given index\n  fn set_element<'t, T>(&mut self, index: u32, value: T) -> Result<()>\n  where\n    T: JsValue<'t>,\n  {\n    let env = self.value().env;\n    check_status!(unsafe { sys::napi_set_element(env, self.value().value, index, value.raw()) })\n  }\n\n  /// Check if the `Array` has the element at the given index\n  fn has_element(&self, index: u32) -> Result<bool> {\n    let mut result = false;\n    let env = self.value().env;\n    check_status!(unsafe { sys::napi_has_element(env, self.value().value, index, &mut result) })?;\n    Ok(result)\n  }\n\n  /// Delete the element at the given index\n  fn delete_element(&mut self, index: u32) -> Result<bool> {\n    let mut result = false;\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_delete_element(env, self.value().value, index, &mut result)\n    })?;\n    Ok(result)\n  }\n\n  /// Get the element at the given index\n  ///\n  /// If the `Object` is not an array, `ArrayExpected` error returned\n  fn get_element<T>(&self, index: u32) -> Result<T>\n  where\n    T: FromNapiValue,\n  {\n    let mut raw_value = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_get_element(env, self.value().value, index, &mut raw_value)\n    })?;\n    unsafe { T::from_napi_value(env, raw_value) }\n  }\n\n  /// This method allows the efficient definition of multiple properties on a given object.\n  fn define_properties(&mut self, properties: &[Property]) -> Result<()> {\n    let properties_iter = properties.iter().map(|property| property.raw());\n    let env = self.value().env;\n    #[cfg(feature = \"napi5\")]\n    {\n      if !properties.is_empty() {\n        let mut closures = properties_iter\n          .clone()\n          .map(|p| p.data)\n          .filter(|data| !data.is_null())\n          .collect::<Vec<*mut std::ffi::c_void>>();\n        if !closures.is_empty() {\n          let finalize_hint = Box::into_raw(Box::new((closures.len(), closures.capacity())));\n          check_status!(\n            unsafe {\n              sys::napi_add_finalizer(\n                env,\n                self.value().value,\n                closures.as_mut_ptr().cast(),\n                Some(finalize_closures),\n                finalize_hint.cast(),\n                ptr::null_mut(),\n              )\n            },\n            \"Failed to add finalizer\"\n          )?;\n          std::mem::forget(closures);\n        }\n      }\n    }\n    check_status!(unsafe {\n      sys::napi_define_properties(\n        env,\n        self.value().value,\n        properties.len(),\n        properties_iter\n          .collect::<Vec<sys::napi_property_descriptor>>()\n          .as_ptr(),\n      )\n    })\n  }\n\n  /// Perform `is_array` check before get the length\n  ///\n  /// if `Object` is not array, `ArrayExpected` error returned\n  fn get_array_length(&self) -> Result<u32> {\n    if !(self.is_array()?) {\n      return Err(Error::new(\n        Status::ArrayExpected,\n        \"Object is not array\".to_owned(),\n      ));\n    }\n    self.get_array_length_unchecked()\n  }\n\n  /// use this API if you can ensure this `Object` is `Array`\n  fn get_array_length_unchecked(&self) -> Result<u32> {\n    let mut length: u32 = 0;\n    let env = self.value().env;\n    check_status!(unsafe { sys::napi_get_array_length(env, self.value().value, &mut length) })?;\n    Ok(length)\n  }\n\n  /// Wrap the native value `T` to this `Object`\n  /// the `T` will be dropped when this `Object` is finalized\n  fn wrap<T: 'static>(&mut self, native_object: T, size_hint: Option<usize>) -> Result<()> {\n    let env = self.value().env;\n    let value = self.raw();\n    check_status!(unsafe {\n      sys::napi_wrap(\n        env,\n        value,\n        Box::into_raw(Box::new(TaggedObject::new(native_object))).cast(),\n        Some(raw_finalize::<TaggedObject<T>>),\n        Box::into_raw(Box::new(size_hint.unwrap_or(0) as i64)).cast(),\n        ptr::null_mut(),\n      )\n    })\n  }\n\n  /// Get the wrapped native value from the `Object`\n  ///\n  /// Return the `InvalidArg` error if the `Object` is not wrapped the `T`\n  #[allow(clippy::mut_from_ref)]\n  fn unwrap<T: 'static>(&self) -> Result<&mut T> {\n    let env = self.value().env;\n    let value = self.raw();\n    unsafe {\n      let mut unknown_tagged_object: *mut c_void = ptr::null_mut();\n      check_status!(\n        sys::napi_unwrap(env, value, &mut unknown_tagged_object),\n        \"Failed to unwrap value of the Object\"\n      )?;\n\n      let type_id = unknown_tagged_object as *const TypeId;\n      if *type_id == TypeId::of::<T>() {\n        let tagged_object = unknown_tagged_object as *mut TaggedObject<T>;\n        (*tagged_object).object.as_mut().ok_or_else(|| {\n          Error::new(\n            Status::InvalidArg,\n            \"Invalid argument, nothing attach to js_object\".to_owned(),\n          )\n        })\n      } else {\n        Err(Error::new(\n          Status::InvalidArg,\n          format!(\n            \"Invalid argument, {} on unwrap is not the type of wrapped object\",\n            type_name::<T>()\n          ),\n        ))\n      }\n    }\n  }\n\n  /// Remove the wrapped native value from the `Object`\n  ///\n  /// Return the `InvalidArg` error if the `Object` is not wrapped the `T`\n  fn remove_wrapped<T: 'static>(&mut self) -> Result<()> {\n    let env = self.value().env;\n    let value = self.raw();\n    unsafe {\n      let mut unknown_tagged_object = ptr::null_mut();\n      check_status!(sys::napi_remove_wrap(\n        env,\n        value,\n        &mut unknown_tagged_object,\n      ))?;\n      let type_id = unknown_tagged_object as *const TypeId;\n      if *type_id == TypeId::of::<T>() {\n        drop(Box::from_raw(unknown_tagged_object as *mut TaggedObject<T>));\n        Ok(())\n      } else {\n        Err(Error::new(\n          Status::InvalidArg,\n          format!(\n            \"Invalid argument, {} on unwrap is not the type of wrapped object\",\n            type_name::<T>()\n          ),\n        ))\n      }\n    }\n  }\n\n  #[cfg(feature = \"napi5\")]\n  /// Adds a `finalize_cb` callback which will be called when the JavaScript object in js_object has been garbage-collected.\n  ///\n  /// This API can be called multiple times on a single JavaScript object.\n  fn add_finalizer<T, Hint, F>(\n    &mut self,\n    native: T,\n    finalize_hint: Hint,\n    finalize_cb: F,\n  ) -> Result<()>\n  where\n    T: 'static,\n    Hint: 'static,\n    F: FnOnce(FinalizeContext<T, Hint>) + 'static,\n  {\n    let mut maybe_ref = ptr::null_mut();\n    let env = self.value().env;\n    let value = self.raw();\n    let wrap_context = Box::leak(Box::new((native, finalize_cb, ptr::null_mut())));\n    check_status!(unsafe {\n      sys::napi_add_finalizer(\n        env,\n        value,\n        (wrap_context as *mut (T, F, sys::napi_ref)).cast(),\n        Some(finalize_callback::<T, Hint, F>),\n        Box::into_raw(Box::new(finalize_hint)).cast(),\n        &mut maybe_ref, // Note: this does not point to the boxed one…\n      )\n    })?;\n    wrap_context.2 = maybe_ref;\n    Ok(())\n  }\n\n  #[cfg(feature = \"napi8\")]\n  /// This method freezes a given object.\n  /// This prevents new properties from being added to it, existing properties from being removed, prevents changing the enumerability, configurability, or writability of existing properties, and prevents the values of existing properties from being changed.\n  /// It also prevents the object's prototype from being changed. This is described in [Section 19.1.2.6](https://tc39.es/ecma262/#sec-object.freeze) of the ECMA-262 specification.\n  fn freeze(&mut self) -> Result<()> {\n    let env = self.value().env;\n    check_status!(unsafe { sys::napi_object_freeze(env, self.value().value) })\n  }\n\n  #[cfg(feature = \"napi8\")]\n  /// This method seals a given object. This prevents new properties from being added to it, as well as marking all existing properties as non-configurable.\n  /// This is described in [Section 19.1.2.20](https://tc39.es/ecma262/#sec-object.seal) of the ECMA-262 specification.\n  fn seal(&mut self) -> Result<()> {\n    let env = self.value().env;\n    check_status!(unsafe { sys::napi_object_seal(env, self.value().value) })\n  }\n}\n\n#[derive(Clone, Copy)]\npub struct Object<'env>(pub(crate) Value, pub(crate) PhantomData<&'env ()>);\n\nimpl<'env> JsValue<'env> for Object<'env> {\n  fn value(&self) -> Value {\n    self.0\n  }\n}\n\nimpl<'env> JsObjectValue<'env> for Object<'env> {}\n\nimpl TypeName for Object<'_> {\n  fn type_name() -> &'static str {\n    \"Object\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl ValidateNapiValue for Object<'_> {}\n\nimpl FromNapiValue for Object<'_> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Ok(Self(\n      Value {\n        env,\n        value: napi_val,\n        value_type: ValueType::Object,\n      },\n      PhantomData,\n    ))\n  }\n}\n\nimpl ToNapiValue for &Object<'_> {\n  unsafe fn to_napi_value(_env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    Ok(val.0.value)\n  }\n}\n\nimpl Object<'_> {\n  /// create a new `Object` from raw values\n  pub fn from_raw(env: sys::napi_env, value: sys::napi_value) -> Self {\n    Self(\n      Value {\n        env,\n        value,\n        value_type: ValueType::Object,\n      },\n      PhantomData,\n    )\n  }\n\n  /// create a new `Object` from a `Env`\n  pub fn new(env: &Env) -> Result<Self> {\n    let mut ptr = ptr::null_mut();\n    unsafe {\n      check_status!(\n        sys::napi_create_object(env.0, &mut ptr),\n        \"Failed to create napi Object\"\n      )?;\n    }\n\n    Ok(Self(\n      crate::Value {\n        env: env.0,\n        value: ptr,\n        value_type: ValueType::Object,\n      },\n      PhantomData,\n    ))\n  }\n\n  /// Get the property value from the `Object`, if the property is not found, `None` is returned\n  pub fn get<V: FromNapiValue>(&self, field: &str) -> Result<Option<V>> {\n    unsafe {\n      self\n        .get_inner(field)?\n        .map(|v| V::from_napi_value(self.0.env, v))\n        .transpose()\n    }\n  }\n\n  fn get_inner(&self, field: &str) -> Result<Option<sys::napi_value>> {\n    unsafe {\n      let mut property_key = std::ptr::null_mut();\n      check_status!(\n        sys::napi_create_string_utf8(\n          self.0.env,\n          field.as_ptr().cast(),\n          field.len() as isize,\n          &mut property_key,\n        ),\n        \"Failed to create property key with `{field}`\"\n      )?;\n\n      let mut ret = ptr::null_mut();\n\n      check_status!(\n        sys::napi_get_property(self.0.env, self.0.value, property_key, &mut ret),\n        \"Failed to get property with field `{field}`\",\n      )?;\n\n      let ty = type_of!(self.0.env, ret)?;\n\n      Ok(if ty == ValueType::Undefined {\n        None\n      } else {\n        Some(ret)\n      })\n    }\n  }\n\n  /// Set the property value to the `Object`\n  pub fn set<K: AsRef<str>, V: ToNapiValue>(&mut self, field: K, val: V) -> Result<()> {\n    unsafe { self.set_inner(field.as_ref(), V::to_napi_value(self.0.env, val)?) }\n  }\n\n  unsafe fn set_inner(&mut self, field: &str, napi_val: sys::napi_value) -> Result<()> {\n    let mut property_key = std::ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_create_string_utf8(\n          self.0.env,\n          field.as_ptr().cast(),\n          field.len() as isize,\n          &mut property_key,\n        )\n      },\n      \"Failed to create property key with `{field}`\"\n    )?;\n\n    check_status!(\n      unsafe { sys::napi_set_property(self.0.env, self.0.value, property_key, napi_val) },\n      \"Failed to set property with field `{field}`\"\n    )?;\n    Ok(())\n  }\n\n  /// Get the string keys of the `Object`\n  pub fn keys(obj: &Object) -> Result<Vec<String>> {\n    let mut names = ptr::null_mut();\n    unsafe {\n      check_status!(\n        sys::napi_get_property_names(obj.0.env, obj.0.value, &mut names),\n        \"Failed to get property names of given object\"\n      )?;\n    }\n\n    let names = unsafe { Array::from_napi_value(obj.0.env, names)? };\n    let mut ret = vec![];\n\n    for i in 0..names.len() {\n      ret.push(names.get_element::<String>(i)?);\n    }\n\n    Ok(ret)\n  }\n\n  /// Create a reference to the object.\n  ///\n  /// Set the `LEAK_CHECK` to `false` to disable the leak check during the `Drop`\n  pub fn create_ref<const LEAK_CHECK: bool>(&self) -> Result<ObjectRef<LEAK_CHECK>> {\n    let mut ref_ = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_create_reference(self.0.env, self.0.value, 1, &mut ref_) },\n      \"Failed to create reference\"\n    )?;\n    Ok(ObjectRef { inner: ref_ })\n  }\n}\n\n/// A reference to a JavaScript object.\n///\n/// You must call the `unref` method to release the reference, or the object under the hood will be leaked forever.\n///\n/// Set the `LEAK_CHECK` to `false` to disable the leak check during the `Drop`\npub struct ObjectRef<const LEAK_CHECK: bool = true> {\n  pub(crate) inner: sys::napi_ref,\n}\n\nunsafe impl<const LEAK_CHECK: bool> Send for ObjectRef<LEAK_CHECK> {}\n\nimpl<const LEAK_CHECK: bool> Drop for ObjectRef<LEAK_CHECK> {\n  fn drop(&mut self) {\n    if LEAK_CHECK && !self.inner.is_null() {\n      eprintln!(\"ObjectRef is not unref, it considered as a memory leak\");\n    }\n  }\n}\n\nimpl<const LEAK_CHECK: bool> ObjectRef<LEAK_CHECK> {\n  /// Get the object from the reference\n  pub fn get_value<'env>(&self, env: &'env Env) -> Result<Object<'env>> {\n    let mut result = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_reference_value(env.0, self.inner, &mut result) },\n      \"Failed to get reference value\"\n    )?;\n    Ok(Object::from_raw(env.0, result))\n  }\n\n  /// Unref the reference\n  pub fn unref(mut self, env: &Env) -> Result<()> {\n    check_status!(\n      unsafe { sys::napi_delete_reference(env.0, self.inner) },\n      \"delete Ref failed\"\n    )?;\n    self.inner = ptr::null_mut();\n    Ok(())\n  }\n}\n\nimpl<const LEAK_CHECK: bool> FromNapiValue for ObjectRef<LEAK_CHECK> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut ref_ = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_create_reference(env, napi_val, 1, &mut ref_) },\n      \"Failed to create reference\"\n    )?;\n    Ok(Self { inner: ref_ })\n  }\n}\n\nimpl<const LEAK_CHECK: bool> ToNapiValue for &ObjectRef<LEAK_CHECK> {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let mut result = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_reference_value(env, val.inner, &mut result) },\n      \"Failed to get reference value\"\n    )?;\n    Ok(result)\n  }\n}\n\nimpl<const LEAK_CHECK: bool> ToNapiValue for ObjectRef<LEAK_CHECK> {\n  unsafe fn to_napi_value(env: sys::napi_env, mut val: Self) -> Result<sys::napi_value> {\n    let mut result = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_reference_value(env, val.inner, &mut result) },\n      \"Failed to get reference value\"\n    )?;\n    check_status!(\n      unsafe { sys::napi_delete_reference(env, val.inner) },\n      \"delete Ref failed\"\n    )?;\n    val.inner = ptr::null_mut();\n    drop(val);\n    Ok(result)\n  }\n}\n\n#[cfg(feature = \"napi5\")]\npub struct FinalizeContext<T: 'static, Hint: 'static> {\n  pub env: Env,\n  pub value: T,\n  pub hint: Hint,\n}\n\n#[cfg(feature = \"napi6\")]\npub enum KeyCollectionMode {\n  IncludePrototypes,\n  OwnOnly,\n}\n\n#[cfg(feature = \"napi6\")]\nimpl TryFrom<sys::napi_key_collection_mode> for KeyCollectionMode {\n  type Error = Error;\n\n  fn try_from(value: sys::napi_key_collection_mode) -> Result<Self> {\n    match value {\n      sys::KeyCollectionMode::include_prototypes => Ok(Self::IncludePrototypes),\n      sys::KeyCollectionMode::own_only => Ok(Self::OwnOnly),\n      _ => Err(Error::new(\n        crate::Status::InvalidArg,\n        format!(\"Invalid key collection mode: {value}\"),\n      )),\n    }\n  }\n}\n\n#[cfg(feature = \"napi6\")]\nimpl From<KeyCollectionMode> for sys::napi_key_collection_mode {\n  fn from(value: KeyCollectionMode) -> Self {\n    match value {\n      KeyCollectionMode::IncludePrototypes => sys::KeyCollectionMode::include_prototypes,\n      KeyCollectionMode::OwnOnly => sys::KeyCollectionMode::own_only,\n    }\n  }\n}\n\n#[cfg(feature = \"napi6\")]\npub enum KeyFilter {\n  AllProperties,\n  Writable,\n  Enumerable,\n  Configurable,\n  SkipStrings,\n  SkipSymbols,\n}\n\n#[cfg(feature = \"napi6\")]\nimpl TryFrom<sys::napi_key_filter> for KeyFilter {\n  type Error = Error;\n\n  fn try_from(value: sys::napi_key_filter) -> Result<Self> {\n    match value {\n      sys::KeyFilter::all_properties => Ok(Self::AllProperties),\n      sys::KeyFilter::writable => Ok(Self::Writable),\n      sys::KeyFilter::enumerable => Ok(Self::Enumerable),\n      sys::KeyFilter::configurable => Ok(Self::Configurable),\n      sys::KeyFilter::skip_strings => Ok(Self::SkipStrings),\n      sys::KeyFilter::skip_symbols => Ok(Self::SkipSymbols),\n      _ => Err(Error::new(\n        crate::Status::InvalidArg,\n        format!(\"Invalid key filter [{value}]\"),\n      )),\n    }\n  }\n}\n\n#[cfg(feature = \"napi6\")]\nimpl From<KeyFilter> for sys::napi_key_filter {\n  fn from(value: KeyFilter) -> Self {\n    match value {\n      KeyFilter::AllProperties => sys::KeyFilter::all_properties,\n      KeyFilter::Writable => sys::KeyFilter::writable,\n      KeyFilter::Enumerable => sys::KeyFilter::enumerable,\n      KeyFilter::Configurable => sys::KeyFilter::configurable,\n      KeyFilter::SkipStrings => sys::KeyFilter::skip_strings,\n      KeyFilter::SkipSymbols => sys::KeyFilter::skip_symbols,\n    }\n  }\n}\n\n#[cfg(feature = \"napi6\")]\npub enum KeyConversion {\n  KeepNumbers,\n  NumbersToStrings,\n}\n\n#[cfg(feature = \"napi6\")]\nimpl TryFrom<sys::napi_key_conversion> for KeyConversion {\n  type Error = Error;\n\n  fn try_from(value: sys::napi_key_conversion) -> Result<Self> {\n    match value {\n      sys::KeyConversion::keep_numbers => Ok(Self::KeepNumbers),\n      sys::KeyConversion::numbers_to_strings => Ok(Self::NumbersToStrings),\n      _ => Err(Error::new(\n        crate::Status::InvalidArg,\n        format!(\"Invalid key conversion [{value}]\"),\n      )),\n    }\n  }\n}\n\n#[cfg(feature = \"napi6\")]\nimpl From<KeyConversion> for sys::napi_key_conversion {\n  fn from(value: KeyConversion) -> Self {\n    match value {\n      KeyConversion::KeepNumbers => sys::KeyConversion::keep_numbers,\n      KeyConversion::NumbersToStrings => sys::KeyConversion::numbers_to_strings,\n    }\n  }\n}\n\n#[cfg(feature = \"napi5\")]\nunsafe extern \"C\" fn finalize_callback<T, Hint, F>(\n  raw_env: sys::napi_env,\n  finalize_data: *mut c_void,\n  finalize_hint: *mut c_void,\n) where\n  T: 'static,\n  Hint: 'static,\n  F: FnOnce(FinalizeContext<T, Hint>),\n{\n  use crate::Env;\n\n  let (value, callback, raw_ref) =\n    unsafe { *Box::from_raw(finalize_data as *mut (T, F, sys::napi_ref)) };\n  let hint = unsafe { *Box::from_raw(finalize_hint as *mut Hint) };\n  let env = Env::from_raw(raw_env);\n  callback(FinalizeContext { env, value, hint });\n  if !raw_ref.is_null() {\n    check_status_or_throw!(\n      raw_env,\n      unsafe { sys::napi_delete_reference(raw_env, raw_ref) },\n      \"Delete reference in finalize callback failed\"\n    );\n  }\n}\n\n#[cfg(feature = \"napi5\")]\npub(crate) unsafe extern \"C\" fn finalize_closures(\n  _env: sys::napi_env,\n  data: *mut c_void,\n  len: *mut c_void,\n) {\n  let (length, capacity): (usize, usize) = *unsafe { Box::from_raw(len.cast()) };\n  let closures: Vec<*mut PropertyClosures> =\n    unsafe { Vec::from_raw_parts(data.cast(), length, capacity) };\n  for closure_ptr in closures.into_iter() {\n    if !closure_ptr.is_null() {\n      let closures = unsafe { Box::from_raw(closure_ptr) };\n      // Free the actual closure functions using the stored drop functions\n      if !closures.getter_closure.is_null() {\n        if let Some(drop_fn) = closures.getter_drop_fn {\n          unsafe { drop_fn(closures.getter_closure) };\n        }\n      }\n      if !closures.setter_closure.is_null() {\n        if let Some(drop_fn) = closures.setter_drop_fn {\n          unsafe { drop_fn(closures.setter_closure) };\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/promise.rs",
    "content": "use std::{\n  cell::Cell,\n  convert::identity,\n  future,\n  pin::Pin,\n  rc::Rc,\n  task::{Context, Poll},\n};\n\nuse futures::channel::oneshot::{channel, Receiver};\n\nuse crate::{sys, Error, Result, Status};\n\nuse super::{CallbackContext, FromNapiValue, PromiseRaw, TypeName, Unknown, ValidateNapiValue};\n\n/// The JavaScript Promise object representation\n///\n/// This `Promise<T>` can be awaited in the Rust\n/// This `Promise<T>` can also be passed from `#[napi]` fn\n///\n/// example:\n///\n/// ```no_run\n/// #[napi]\n/// pub fn await_promise_in_rust(promise: Promise<u32>) {\n///   let value = promise.await.unwrap();\n///\n///   println!(\"{value}\");\n/// }\n/// ```\n///\n/// But this `Promise<T>` can not be pass back to `JavaScript`.\n/// If you want to use raw JavaScript `Promise` API, you can use the [`PromiseRaw`](./PromiseRaw) instead.\npub struct Promise<T: 'static + FromNapiValue> {\n  value: Pin<Box<Receiver<Result<T>>>>,\n}\n\nimpl<T: FromNapiValue> TypeName for Promise<T> {\n  fn type_name() -> &'static str {\n    \"Promise\"\n  }\n\n  fn value_type() -> crate::ValueType {\n    crate::ValueType::Object\n  }\n}\n\nimpl<T: FromNapiValue> ValidateNapiValue for Promise<T> {\n  unsafe fn validate(\n    env: crate::sys::napi_env,\n    napi_val: crate::sys::napi_value,\n  ) -> Result<sys::napi_value> {\n    use super::validate_promise;\n\n    validate_promise(env, napi_val)\n  }\n}\n\nunsafe impl<T: FromNapiValue + Send> Send for Promise<T> {}\n\nimpl<T: FromNapiValue> FromNapiValue for Promise<T> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> crate::Result<Self> {\n    let (tx, rx) = channel();\n    let promise_object = unsafe { PromiseRaw::<T>::from_napi_value(env, napi_val)? };\n    let tx_box = Rc::new(Cell::new(Some(tx)));\n    let tx_in_catch = tx_box.clone();\n    promise_object\n      .then(move |ctx| {\n        if let Some(sender) = tx_box.replace(None) {\n          // no need to handle the send error here, the receiver has been dropped\n          let _ = sender.send(Ok(ctx.value));\n        }\n        Ok(())\n      })?\n      .catch(move |ctx: CallbackContext<Unknown>| {\n        if let Some(sender) = tx_in_catch.replace(None) {\n          // no need to handle the send error here, the receiver has been dropped\n          let _ = sender.send(Err(ctx.value.into()));\n        }\n        Ok(())\n      })?;\n\n    Ok(Promise {\n      value: Box::pin(rx),\n    })\n  }\n}\n\nimpl<T: FromNapiValue> future::Future for Promise<T> {\n  type Output = Result<T>;\n\n  fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {\n    match self.value.as_mut().poll(cx) {\n      Poll::Pending => Poll::Pending,\n      Poll::Ready(v) => Poll::Ready(\n        v.map_err(|e| Error::new(Status::GenericFailure, format!(\"{e}\")))\n          .and_then(identity),\n      ),\n    }\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/promise_raw.rs",
    "content": "use std::ffi::c_void;\nuse std::marker::PhantomData;\nuse std::ptr;\n\nuse crate::bindgen_runtime::Promise;\nuse crate::{\n  bindgen_prelude::{\n    FromNapiValue, JsObjectValue, Result, ToNapiValue, TypeName, ValidateNapiValue,\n  },\n  check_status, sys, Env, Error, JsValue, Value, ValueType,\n};\n\n#[derive(Clone, Copy)]\npub struct PromiseRaw<'env, T> {\n  pub(crate) inner: sys::napi_value,\n  env: sys::napi_env,\n  _phantom: &'env PhantomData<T>,\n}\n\nimpl<'env, T> JsValue<'env> for PromiseRaw<'env, T> {\n  fn value(&self) -> Value {\n    Value {\n      env: self.env,\n      value: self.inner,\n      value_type: ValueType::Object,\n    }\n  }\n}\n\nimpl<'env, T> JsObjectValue<'env> for PromiseRaw<'env, T> {}\n\nimpl<T> TypeName for PromiseRaw<'_, T> {\n  fn type_name() -> &'static str {\n    \"Promise\"\n  }\n\n  fn value_type() -> crate::ValueType {\n    crate::ValueType::Object\n  }\n}\n\nimpl<T> ValidateNapiValue for PromiseRaw<'_, T> {\n  unsafe fn validate(\n    env: napi_sys::napi_env,\n    napi_val: napi_sys::napi_value,\n  ) -> Result<napi_sys::napi_value> {\n    validate_promise(env, napi_val)\n  }\n}\n\nimpl<T> FromNapiValue for PromiseRaw<'_, T> {\n  unsafe fn from_napi_value(env: napi_sys::napi_env, value: napi_sys::napi_value) -> Result<Self> {\n    Ok(PromiseRaw::new(env, value))\n  }\n}\n\nimpl<T> PromiseRaw<'_, T> {\n  pub fn new(env: sys::napi_env, inner: sys::napi_value) -> Self {\n    Self {\n      inner,\n      env,\n      _phantom: &PhantomData,\n    }\n  }\n}\n\nimpl<'env, T: ToNapiValue> PromiseRaw<'env, T> {\n  /// Create a new promise and resolve it with the given value\n  pub fn resolve(env: &Env, value: T) -> Result<Self> {\n    let mut deferred = ptr::null_mut();\n    let mut promise = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_create_promise(env.0, &mut deferred, &mut promise) },\n      \"Failed to create promise\"\n    )?;\n    check_status!(\n      unsafe {\n        sys::napi_resolve_deferred(env.0, deferred, ToNapiValue::to_napi_value(env.0, value)?)\n      },\n      \"Failed to resolve promise\"\n    )?;\n    Ok(PromiseRaw::new(env.0, promise))\n  }\n\n  /// Create a new promise and reject it with the given error\n  pub fn reject<E: ToNapiValue>(env: &Env, error: E) -> Result<Self> {\n    let mut deferred = ptr::null_mut();\n    let mut promise = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_create_promise(env.0, &mut deferred, &mut promise) },\n      \"Failed to create promise\"\n    )?;\n    check_status!(\n      unsafe {\n        sys::napi_reject_deferred(env.0, deferred, ToNapiValue::to_napi_value(env.0, error)?)\n      },\n      \"Failed to reject promise\"\n    )?;\n    Ok(PromiseRaw::new(env.0, promise))\n  }\n}\n\nimpl<'env, T: FromNapiValue> PromiseRaw<'env, T> {\n  /// Promise.then method\n  pub fn then<'then, Callback, U>(&self, cb: Callback) -> Result<PromiseRaw<'env, U>>\n  where\n    U: ToNapiValue,\n    Callback: 'then + FnOnce(CallbackContext<T>) -> Result<U>,\n  {\n    let mut then_fn = ptr::null_mut();\n    const THEN: &[u8; 5] = b\"then\\0\";\n    check_status!(unsafe {\n      sys::napi_get_named_property(self.env, self.inner, THEN.as_ptr().cast(), &mut then_fn)\n    })?;\n    let mut then_callback = ptr::null_mut();\n    let executed = Box::into_raw(Box::new(false));\n    let rust_cb = Box::into_raw(Box::new((cb, executed)));\n    check_status!(\n      unsafe {\n        sys::napi_create_function(\n          self.env,\n          THEN.as_ptr().cast(),\n          4,\n          Some(raw_promise_then_callback::<T, U, Callback>),\n          rust_cb.cast(),\n          &mut then_callback,\n        )\n      },\n      \"Create then function for PromiseRaw failed\"\n    )?;\n    let mut new_promise = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_call_function(\n          self.env,\n          self.inner,\n          then_fn,\n          1,\n          [then_callback].as_ptr(),\n          &mut new_promise,\n        )\n      },\n      \"Call the PromiseRaw::then failed\"\n    )?;\n\n    // use `napi_wrap` to trigger the finalizer after the Promise is GCed\n    // Note: we don't use `napi_add_finalizer` here because it requires `napi5`\n    check_status!(\n      unsafe {\n        sys::napi_wrap(\n          self.env,\n          new_promise,\n          executed.cast(),\n          Some(promise_callback_finalizer::<T, U, Callback>),\n          rust_cb.cast(),\n          ptr::null_mut(),\n        )\n      },\n      \"Wrap finalizer for PromiseRaw failed\"\n    )?;\n\n    Ok(PromiseRaw::<U> {\n      env: self.env,\n      inner: new_promise,\n      _phantom: &PhantomData,\n    })\n  }\n\n  /// Promise.catch method\n  pub fn catch<'catch, E, U, Callback>(&self, cb: Callback) -> Result<PromiseRaw<'env, U>>\n  where\n    E: FromNapiValue,\n    U: ToNapiValue,\n    Callback: 'catch + FnOnce(CallbackContext<E>) -> Result<U>,\n  {\n    let mut catch_fn = ptr::null_mut();\n    const CATCH: &[u8; 6] = b\"catch\\0\";\n    check_status!(unsafe {\n      sys::napi_get_named_property(self.env, self.inner, CATCH.as_ptr().cast(), &mut catch_fn)\n    })?;\n    let mut catch_callback = ptr::null_mut();\n    let executed = Box::into_raw(Box::new(false));\n    let rust_cb = Box::into_raw(Box::new((cb, executed)));\n    check_status!(\n      unsafe {\n        sys::napi_create_function(\n          self.env,\n          CATCH.as_ptr().cast(),\n          5,\n          Some(raw_promise_catch_callback::<E, U, Callback>),\n          rust_cb.cast(),\n          &mut catch_callback,\n        )\n      },\n      \"Create catch function for PromiseRaw failed\"\n    )?;\n    let mut new_promise = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_call_function(\n          self.env,\n          self.inner,\n          catch_fn,\n          1,\n          [catch_callback].as_mut_ptr().cast(),\n          &mut new_promise,\n        )\n      },\n      \"Call the PromiseRaw::catch failed\"\n    )?;\n\n    // use `napi_wrap` to trigger the finalizer after the Promise is GCed\n    // Note: we don't use `napi_add_finalizer` here because it requires `napi5`\n    check_status!(\n      unsafe {\n        sys::napi_wrap(\n          self.env,\n          new_promise,\n          executed.cast(),\n          Some(promise_callback_finalizer::<E, U, Callback>),\n          rust_cb.cast(),\n          ptr::null_mut(),\n        )\n      },\n      \"Wrap finalizer for PromiseRaw failed\"\n    )?;\n\n    Ok(PromiseRaw::<U> {\n      env: self.env,\n      inner: new_promise,\n      _phantom: &PhantomData,\n    })\n  }\n\n  /// Promise.finally method\n  pub fn finally<'finally, U, Callback>(&mut self, cb: Callback) -> Result<PromiseRaw<'env, T>>\n  where\n    U: ToNapiValue,\n    Callback: 'finally + FnOnce(Env) -> Result<U>,\n  {\n    let mut then_fn = ptr::null_mut();\n    const FINALLY: &[u8; 8] = b\"finally\\0\";\n\n    check_status!(unsafe {\n      sys::napi_get_named_property(self.env, self.inner, FINALLY.as_ptr().cast(), &mut then_fn)\n    })?;\n    let mut then_callback = ptr::null_mut();\n    let rust_cb = Box::into_raw(Box::new(cb));\n    check_status!(\n      unsafe {\n        sys::napi_create_function(\n          self.env,\n          FINALLY.as_ptr().cast(),\n          7,\n          Some(raw_promise_finally_callback::<U, Callback>),\n          rust_cb.cast(),\n          &mut then_callback,\n        )\n      },\n      \"Create then function for PromiseRaw failed\"\n    )?;\n    let mut new_promise = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_call_function(\n          self.env,\n          self.inner,\n          then_fn,\n          1,\n          [then_callback].as_ptr(),\n          &mut new_promise,\n        )\n      },\n      \"Call then callback on PromiseRaw failed\"\n    )?;\n\n    Ok(Self {\n      env: self.env,\n      inner: new_promise,\n      _phantom: &PhantomData,\n    })\n  }\n\n  /// Convert `PromiseRaw<T>` to `Promise<T>`\n  ///\n  /// So you can await the Promise in Rust\n  pub fn into_sendable_promise(self) -> Result<Promise<T>> {\n    unsafe { Promise::from_napi_value(self.env, self.inner) }\n  }\n}\n\npub(crate) fn validate_promise(\n  env: napi_sys::napi_env,\n  napi_val: napi_sys::napi_value,\n) -> Result<sys::napi_value> {\n  let mut is_promise = false;\n  check_status!(\n    unsafe { crate::sys::napi_is_promise(env, napi_val, &mut is_promise) },\n    \"Failed to check if value is promise\"\n  )?;\n  if !is_promise {\n    let mut deferred = ptr::null_mut();\n    let mut promise = ptr::null_mut();\n    check_status!(\n      unsafe { crate::sys::napi_create_promise(env, &mut deferred, &mut promise) },\n      \"Failed to create promise\"\n    )?;\n    const INVALID_ARG: &[u8; 11] = b\"InvalidArg\\0\";\n    let mut err = ptr::null_mut();\n    let mut code = ptr::null_mut();\n    let mut message = ptr::null_mut();\n    check_status!(\n      unsafe {\n        crate::sys::napi_create_string_utf8(env, INVALID_ARG.as_ptr().cast(), 10, &mut code)\n      },\n      \"Failed to create error message\"\n    )?;\n    check_status!(\n      unsafe {\n        crate::sys::napi_create_string_utf8(\n          env,\n          c\"Expected Promise object\".as_ptr().cast(),\n          23,\n          &mut message,\n        )\n      },\n      \"Failed to create error message\"\n    )?;\n    check_status!(\n      unsafe { crate::sys::napi_create_error(env, code, message, &mut err) },\n      \"Failed to create rejected error\"\n    )?;\n    check_status!(\n      unsafe { crate::sys::napi_reject_deferred(env, deferred, err) },\n      \"Failed to reject promise in validate\"\n    )?;\n    return Ok(promise);\n  }\n  Ok(ptr::null_mut())\n}\n\nunsafe extern \"C\" fn raw_promise_then_callback<T, U, Cb>(\n  env: sys::napi_env,\n  cbinfo: sys::napi_callback_info,\n) -> sys::napi_value\nwhere\n  T: FromNapiValue,\n  U: ToNapiValue,\n  Cb: FnOnce(CallbackContext<T>) -> Result<U>,\n{\n  handle_then_callback::<T, U, Cb>(env, cbinfo)\n    .unwrap_or_else(|err| throw_error(env, err, \"Error in Promise.then\"))\n}\n\n#[inline]\nfn handle_then_callback<T, U, Cb>(\n  env: sys::napi_env,\n  cbinfo: sys::napi_callback_info,\n) -> Result<sys::napi_value>\nwhere\n  T: FromNapiValue,\n  U: ToNapiValue,\n  Cb: FnOnce(CallbackContext<T>) -> Result<U>,\n{\n  let mut callback_values = [ptr::null_mut()];\n  let mut rust_cb = ptr::null_mut();\n  check_status!(\n    unsafe {\n      sys::napi_get_cb_info(\n        env,\n        cbinfo,\n        &mut 1,\n        callback_values.as_mut_ptr(),\n        ptr::null_mut(),\n        &mut rust_cb,\n      )\n    },\n    \"Get callback info from then callback failed\"\n  )?;\n  let then_value: T = unsafe { FromNapiValue::from_napi_value(env, callback_values[0]) }?;\n  let cb: Box<(Cb, *mut bool)> = unsafe { Box::from_raw(rust_cb.cast()) };\n  let executed = unsafe { Box::leak(Box::from_raw(cb.1)) };\n  *executed = true;\n\n  unsafe {\n    U::to_napi_value(\n      env,\n      cb.0(CallbackContext {\n        env: Env(env),\n        value: then_value,\n      })?,\n    )\n  }\n}\n\nunsafe extern \"C\" fn raw_promise_catch_callback<E, U, Cb>(\n  env: sys::napi_env,\n  cbinfo: sys::napi_callback_info,\n) -> sys::napi_value\nwhere\n  E: FromNapiValue,\n  U: ToNapiValue,\n  Cb: FnOnce(CallbackContext<E>) -> Result<U>,\n{\n  handle_catch_callback::<E, U, Cb>(env, cbinfo)\n    .unwrap_or_else(|err| throw_error(env, err, \"Error in Promise.catch\"))\n}\n\n#[inline(always)]\nfn handle_catch_callback<E, U, Cb>(\n  env: sys::napi_env,\n  cbinfo: sys::napi_callback_info,\n) -> Result<sys::napi_value>\nwhere\n  E: FromNapiValue,\n  U: ToNapiValue,\n  Cb: FnOnce(CallbackContext<E>) -> Result<U>,\n{\n  let mut callback_values = [ptr::null_mut(); 1];\n  let mut rust_cb = ptr::null_mut();\n  check_status!(\n    unsafe {\n      sys::napi_get_cb_info(\n        env,\n        cbinfo,\n        &mut 1,\n        callback_values.as_mut_ptr(),\n        ptr::null_mut(),\n        &mut rust_cb,\n      )\n    },\n    \"Get callback info from catch callback failed\"\n  )?;\n  let catch_value: E = unsafe { FromNapiValue::from_napi_value(env, callback_values[0]) }?;\n  let cb: Box<(Cb, *mut bool)> = unsafe { Box::from_raw(rust_cb.cast()) };\n\n  let executed = unsafe { Box::leak(Box::from_raw(cb.1)) };\n  *executed = true;\n\n  unsafe {\n    U::to_napi_value(\n      env,\n      cb.0(CallbackContext {\n        env: Env(env),\n        value: catch_value,\n      })?,\n    )\n  }\n}\n\nunsafe extern \"C\" fn raw_promise_finally_callback<U, Cb>(\n  env: sys::napi_env,\n  cbinfo: sys::napi_callback_info,\n) -> sys::napi_value\nwhere\n  U: ToNapiValue,\n  Cb: FnOnce(Env) -> Result<U>,\n{\n  handle_finally_callback::<U, Cb>(env, cbinfo)\n    .unwrap_or_else(|err| throw_error(env, err, \"Error in Promise.finally\"))\n}\n\n#[inline(always)]\nfn handle_finally_callback<U, Cb>(\n  env: sys::napi_env,\n  cbinfo: sys::napi_callback_info,\n) -> Result<sys::napi_value>\nwhere\n  U: ToNapiValue,\n  Cb: FnOnce(Env) -> Result<U>,\n{\n  let mut rust_cb = ptr::null_mut();\n  check_status!(\n    unsafe {\n      sys::napi_get_cb_info(\n        env,\n        cbinfo,\n        &mut 0,\n        ptr::null_mut(),\n        ptr::null_mut(),\n        &mut rust_cb,\n      )\n    },\n    \"Get callback info from finally callback failed\"\n  )?;\n  let cb: Box<Cb> = unsafe { Box::from_raw(rust_cb.cast()) };\n\n  unsafe { U::to_napi_value(env, cb(Env(env))?) }\n}\n\npub struct CallbackContext<T> {\n  pub env: Env,\n  pub value: T,\n}\n\nimpl<T: ToNapiValue> ToNapiValue for CallbackContext<T> {\n  unsafe fn to_napi_value(env: napi_sys::napi_env, val: Self) -> Result<napi_sys::napi_value> {\n    T::to_napi_value(env, val.value)\n  }\n}\n\n#[inline(never)]\nfn throw_error(env: sys::napi_env, err: Error, default_msg: &str) -> sys::napi_value {\n  const GENERIC_FAILURE: &str = \"GenericFailure\\0\";\n  let code = if err.status.as_ref().is_empty() {\n    GENERIC_FAILURE\n  } else {\n    err.status.as_ref()\n  };\n  let mut code_string = ptr::null_mut();\n  let msg = if err.reason.is_empty() {\n    default_msg\n  } else {\n    err.reason.as_ref()\n  };\n  let mut msg_string = ptr::null_mut();\n  let mut err = ptr::null_mut();\n  unsafe {\n    sys::napi_create_string_latin1(\n      env,\n      code.as_ptr().cast(),\n      code.len() as isize,\n      &mut code_string,\n    );\n    sys::napi_create_string_utf8(\n      env,\n      msg.as_ptr().cast(),\n      msg.len() as isize,\n      &mut msg_string,\n    );\n    sys::napi_create_error(env, code_string, msg_string, &mut err);\n    sys::napi_throw(env, err);\n  };\n  ptr::null_mut()\n}\n\nextern \"C\" fn promise_callback_finalizer<T, U, Cb>(\n  _env: sys::napi_env,\n  finalize_data: *mut c_void,\n  finalize_hint: *mut c_void,\n) where\n  T: FromNapiValue,\n  U: ToNapiValue,\n  Cb: FnOnce(CallbackContext<T>) -> Result<U>,\n{\n  // Always clean up the executed flag allocation\n  let executed = unsafe { Box::from_raw(finalize_data.cast::<bool>()) };\n  if !*executed {\n    // Callback was never executed, clean up the rust_cb which contains (Cb, *mut bool)\n    drop(unsafe { Box::from_raw(finalize_hint.cast::<(Cb, *mut bool)>()) });\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/scope.rs",
    "content": "use std::ptr;\n\nuse crate::{bindgen_runtime::FromNapiValue, check_status, sys, Env, JsValue, Result};\n\npub struct HandleScope {\n  pub(crate) scope: sys::napi_handle_scope,\n}\n\nimpl HandleScope {\n  pub fn create(env: &Env) -> Result<Self> {\n    let mut scope = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_open_handle_scope(env.0, &mut scope) },\n      \"Failed to open handle scope\"\n    )?;\n    Ok(Self { scope })\n  }\n\n  /// # Safety\n  ///\n  /// This function is unsafe because it will invalidate the JsValue created within the HandleScope.\n  ///\n  /// For example:\n  ///\n  /// ```no_run\n  /// #[napi]\n  /// pub fn shorter_scope(env: &Env, arr: Array) -> Result<Vec<u32>> {\n  ///   let len = arr.len();\n  ///   let mut result = Vec::with_capacity(len as usize);\n  ///   for i in 0..len {\n  ///     let scope = HandleScope::create(env)?;\n  ///     let value: Unknown = arr.get_element(i)?;\n  ///         ^^^ this will be invalidated after the scope is closed\n  ///     let len = unsafe { scope.close(value, |v| match v.get_type()? {\n  ///       ValueType::String => Ok(v.utf8_len()? as u32),\n  ///       _ => Ok(0),\n  ///     })? };\n  ///   }\n  /// }\n  /// ```\n  pub unsafe fn close<A, T>(self, arg: A, f: impl FnOnce(A) -> Result<T>) -> Result<T>\n  where\n    A: JsValuesTuple,\n  {\n    let env = arg.env();\n    let ret = f(arg);\n    check_status!(\n      unsafe { sys::napi_close_handle_scope(env, self.scope) },\n      \"Failed to close handle scope\"\n    )?;\n    ret\n  }\n}\n\npub struct EscapableHandleScope<'env> {\n  pub(crate) scope: sys::napi_escapable_handle_scope,\n  pub(crate) env: sys::napi_env,\n  pub(crate) phantom: std::marker::PhantomData<&'env ()>,\n}\n\nimpl<'env, 'scope: 'env> EscapableHandleScope<'scope> {\n  pub fn with<\n    T,\n    Args: JsValuesTuple,\n    F: 'env + FnOnce(EscapableHandleScope<'env>, Args) -> Result<T>,\n  >(\n    env: &'env Env,\n    args: Args,\n    scope_fn: F,\n  ) -> Result<T> {\n    let mut scope = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_open_escapable_handle_scope(env.0, &mut scope) },\n      \"Failed to open handle scope\"\n    )?;\n    let scope: EscapableHandleScope<'env> = Self {\n      scope,\n      env: env.0,\n      phantom: std::marker::PhantomData,\n    };\n    scope_fn(scope, args)\n  }\n\n  pub fn escape<V: JsValue<'env> + FromNapiValue>(&self, value: V) -> Result<V> {\n    let mut result = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_escape_handle(self.env, self.scope, value.raw(), &mut result) },\n      \"Failed to escape handle\"\n    )?;\n    unsafe { V::from_napi_value(self.env, result) }\n  }\n}\n\nimpl Drop for EscapableHandleScope<'_> {\n  fn drop(&mut self) {\n    let status = unsafe { sys::napi_close_escapable_handle_scope(self.env, self.scope) };\n    if status != sys::Status::napi_ok {\n      panic!(\n        \"Failed to close handle scope: {}\",\n        crate::Status::from(status)\n      );\n    }\n  }\n}\n\npub trait JsValuesTuple {\n  fn env(&self) -> sys::napi_env;\n}\n\nimpl<'env, T: JsValue<'env>> JsValuesTuple for T {\n  fn env(&self) -> sys::napi_env {\n    self.value().env\n  }\n}\n\nimpl<'env, T1: JsValue<'env>, T2: JsValue<'env>> JsValuesTuple for (T1, T2) {\n  fn env(&self) -> sys::napi_env {\n    self.0.value().env\n  }\n}\n\nimpl<'env, T1: JsValue<'env>, T2: JsValue<'env>, T3: JsValue<'env>> JsValuesTuple for (T1, T2, T3) {\n  fn env(&self) -> sys::napi_env {\n    self.0.value().env\n  }\n}\n\nimpl<'env, T1: JsValue<'env>, T2: JsValue<'env>, T3: JsValue<'env>, T4: JsValue<'env>> JsValuesTuple\n  for (T1, T2, T3, T4)\n{\n  fn env(&self) -> sys::napi_env {\n    self.0.value().env\n  }\n}\n\nimpl<\n    'env,\n    T1: JsValue<'env>,\n    T2: JsValue<'env>,\n    T3: JsValue<'env>,\n    T4: JsValue<'env>,\n    T5: JsValue<'env>,\n  > JsValuesTuple for (T1, T2, T3, T4, T5)\n{\n  fn env(&self) -> sys::napi_env {\n    self.0.value().env\n  }\n}\n\nimpl<\n    'env,\n    T1: JsValue<'env>,\n    T2: JsValue<'env>,\n    T3: JsValue<'env>,\n    T4: JsValue<'env>,\n    T5: JsValue<'env>,\n    T6: JsValue<'env>,\n  > JsValuesTuple for (T1, T2, T3, T4, T5, T6)\n{\n  fn env(&self) -> sys::napi_env {\n    self.0.value().env\n  }\n}\n\nimpl<\n    'env,\n    T1: JsValue<'env>,\n    T2: JsValue<'env>,\n    T3: JsValue<'env>,\n    T4: JsValue<'env>,\n    T5: JsValue<'env>,\n    T6: JsValue<'env>,\n    T7: JsValue<'env>,\n  > JsValuesTuple for (T1, T2, T3, T4, T5, T6, T7)\n{\n  fn env(&self) -> sys::napi_env {\n    self.0.value().env\n  }\n}\n\nimpl<\n    'env,\n    T1: JsValue<'env>,\n    T2: JsValue<'env>,\n    T3: JsValue<'env>,\n    T4: JsValue<'env>,\n    T5: JsValue<'env>,\n    T6: JsValue<'env>,\n    T7: JsValue<'env>,\n    T8: JsValue<'env>,\n  > JsValuesTuple for (T1, T2, T3, T4, T5, T6, T7, T8)\n{\n  fn env(&self) -> sys::napi_env {\n    self.0.value().env\n  }\n}\n\nimpl<\n    'env,\n    T1: JsValue<'env>,\n    T2: JsValue<'env>,\n    T3: JsValue<'env>,\n    T4: JsValue<'env>,\n    T5: JsValue<'env>,\n    T6: JsValue<'env>,\n    T7: JsValue<'env>,\n    T8: JsValue<'env>,\n    T9: JsValue<'env>,\n  > JsValuesTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9)\n{\n  fn env(&self) -> sys::napi_env {\n    self.0.value().env\n  }\n}\n\nimpl<\n    'env,\n    T1: JsValue<'env>,\n    T2: JsValue<'env>,\n    T3: JsValue<'env>,\n    T4: JsValue<'env>,\n    T5: JsValue<'env>,\n    T6: JsValue<'env>,\n    T7: JsValue<'env>,\n    T8: JsValue<'env>,\n    T9: JsValue<'env>,\n    T10: JsValue<'env>,\n  > JsValuesTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)\n{\n  fn env(&self) -> sys::napi_env {\n    self.0.value().env\n  }\n}\n\nimpl<\n    'env,\n    T1: JsValue<'env>,\n    T2: JsValue<'env>,\n    T3: JsValue<'env>,\n    T4: JsValue<'env>,\n    T5: JsValue<'env>,\n    T6: JsValue<'env>,\n    T7: JsValue<'env>,\n    T8: JsValue<'env>,\n    T9: JsValue<'env>,\n    T10: JsValue<'env>,\n    T11: JsValue<'env>,\n  > JsValuesTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)\n{\n  fn env(&self) -> sys::napi_env {\n    self.0.value().env\n  }\n}\n\nimpl<\n    'env,\n    T1: JsValue<'env>,\n    T2: JsValue<'env>,\n    T3: JsValue<'env>,\n    T4: JsValue<'env>,\n    T5: JsValue<'env>,\n    T6: JsValue<'env>,\n    T7: JsValue<'env>,\n    T8: JsValue<'env>,\n    T9: JsValue<'env>,\n    T10: JsValue<'env>,\n    T11: JsValue<'env>,\n    T12: JsValue<'env>,\n  > JsValuesTuple for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)\n{\n  fn env(&self) -> sys::napi_env {\n    self.0.value().env\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/serde.rs",
    "content": "use std::marker::PhantomData;\n#[cfg(feature = \"napi6\")]\nuse std::ptr;\n\nuse serde_json::{Map, Number, Value};\n\nuse crate::{\n  bindgen_runtime::{Null, Object},\n  check_status, sys, type_of, Env, Error, Result, Status, ValueType,\n};\n\n#[cfg(feature = \"napi6\")]\nuse super::BigInt;\nuse super::{FromNapiValue, ToNapiValue};\n\nimpl ToNapiValue for &Value {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    match val {\n      Value::Null => unsafe { Null::to_napi_value(env, Null) },\n      Value::Bool(b) => unsafe { ToNapiValue::to_napi_value(env, b) },\n      Value::Number(n) => unsafe { ToNapiValue::to_napi_value(env, n) },\n      Value::String(s) => unsafe { ToNapiValue::to_napi_value(env, s) },\n      Value::Array(arr) => unsafe { ToNapiValue::to_napi_value(env, arr) },\n      Value::Object(obj) => unsafe { ToNapiValue::to_napi_value(env, obj) },\n    }\n  }\n}\n\nimpl ToNapiValue for Value {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, &val)\n  }\n}\n\nimpl FromNapiValue for Value {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let ty = type_of!(env, napi_val)?;\n    let val = match ty {\n      ValueType::Boolean => Value::Bool(unsafe { bool::from_napi_value(env, napi_val)? }),\n      ValueType::Number => Value::Number(unsafe { Number::from_napi_value(env, napi_val)? }),\n      ValueType::String => Value::String(unsafe { String::from_napi_value(env, napi_val)? }),\n      ValueType::Object => {\n        let mut is_arr = false;\n        check_status!(\n          unsafe { sys::napi_is_array(env, napi_val, &mut is_arr) },\n          \"Failed to detect whether given js is an array\"\n        )?;\n\n        if is_arr {\n          Value::Array(unsafe { Vec::<Value>::from_napi_value(env, napi_val)? })\n        } else {\n          Value::Object(unsafe { Map::<String, Value>::from_napi_value(env, napi_val)? })\n        }\n      }\n      #[cfg(feature = \"napi6\")]\n      ValueType::BigInt => {\n        let n = unsafe { BigInt::from_napi_value(env, napi_val)? };\n        // negative\n        if n.sign_bit {\n          let (v, lossless) = n.get_i64();\n          if lossless {\n            Value::Number(v.into())\n          } else {\n            Value::String(to_string(env, napi_val)?)\n          }\n        } else {\n          let (_, v, lossless) = n.get_u64();\n          if lossless {\n            Value::Number(v.into())\n          } else {\n            Value::String(to_string(env, napi_val)?)\n          }\n        }\n      }\n      ValueType::Null => Value::Null,\n      ValueType::Function => {\n        return Err(Error::new(\n          Status::InvalidArg,\n          \"JS functions cannot be represented as a serde_json::Value\".to_owned(),\n        ))\n      }\n      ValueType::Undefined => {\n        return Err(Error::new(\n          Status::InvalidArg,\n          \"undefined cannot be represented as a serde_json::Value\".to_owned(),\n        ))\n      }\n      ValueType::Symbol => {\n        return Err(Error::new(\n          Status::InvalidArg,\n          \"JS symbols cannot be represented as a serde_json::Value\".to_owned(),\n        ))\n      }\n      ValueType::External => {\n        return Err(Error::new(\n          Status::InvalidArg,\n          \"External JS objects cannot be represented as a serde_json::Value\".to_owned(),\n        ))\n      }\n      _ => {\n        return Err(Error::new(\n          Status::InvalidArg,\n          \"Unknown JS variables cannot be represented as a serde_json::Value\".to_owned(),\n        ))\n      }\n    };\n\n    Ok(val)\n  }\n}\n\n#[cfg(feature = \"napi6\")]\nfn to_string(env: sys::napi_env, napi_val: sys::napi_value) -> Result<String> {\n  let mut string = ptr::null_mut();\n  check_status!(\n    unsafe { sys::napi_coerce_to_string(env, napi_val, &mut string) },\n    \"Failed to coerce to string\"\n  )?;\n  let s = unsafe { String::from_napi_value(env, string) }?;\n  Ok(s)\n}\n\nimpl ToNapiValue for &Map<String, Value> {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let mut obj = Object::new(&Env::from(env))?;\n\n    for (k, v) in val.into_iter() {\n      obj.set(k, v)?;\n    }\n\n    unsafe { Object::to_napi_value(env, obj) }\n  }\n}\n\nimpl ToNapiValue for Map<String, Value> {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, &val)\n  }\n}\n\nimpl FromNapiValue for Map<String, Value> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let obj = Object(\n      crate::Value {\n        env,\n        value: napi_val,\n        value_type: ValueType::Object,\n      },\n      PhantomData,\n    );\n\n    let mut map = Map::new();\n    for key in Object::keys(&obj)?.into_iter() {\n      if let Some(val) = obj.get(&key)? {\n        map.insert(key, val);\n      }\n    }\n\n    Ok(map)\n  }\n}\n\nimpl ToNapiValue for &Number {\n  unsafe fn to_napi_value(env: sys::napi_env, n: Self) -> Result<sys::napi_value> {\n    #[cfg(feature = \"napi6\")]\n    const MAX_SAFE_INT: i64 = 9007199254740991i64; // 2 ^ 53 - 1\n    if n.is_i64() {\n      let n = n.as_i64().unwrap();\n      #[cfg(feature = \"napi6\")]\n      {\n        if !(-MAX_SAFE_INT..=MAX_SAFE_INT).contains(&n) {\n          return unsafe { BigInt::to_napi_value(env, BigInt::from(n)) };\n        }\n      }\n\n      unsafe { i64::to_napi_value(env, n) }\n    } else if n.is_f64() {\n      unsafe { f64::to_napi_value(env, n.as_f64().unwrap()) }\n    } else {\n      let n = n.as_u64().unwrap();\n      if n > u32::MAX as u64 {\n        #[cfg(feature = \"napi6\")]\n        {\n          unsafe { BigInt::to_napi_value(env, BigInt::from(n)) }\n        }\n\n        #[cfg(not(feature = \"napi6\"))]\n        return unsafe { String::to_napi_value(env, n.to_string()) };\n      } else {\n        unsafe { u32::to_napi_value(env, n as u32) }\n      }\n    }\n  }\n}\n\nimpl ToNapiValue for Number {\n  unsafe fn to_napi_value(env: sys::napi_env, n: Self) -> Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, &n)\n  }\n}\n\nimpl FromNapiValue for Number {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let n = unsafe { f64::from_napi_value(env, napi_val)? };\n    // Try to auto-convert to integers\n    let n = if n.trunc() == n {\n      if n >= 0.0f64 && n <= u32::MAX as f64 {\n        // This can be represented as u32\n        Some(Number::from(n as u32))\n      } else if n < 0.0f64 && n >= i32::MIN as f64 {\n        Some(Number::from(n as i32))\n      } else {\n        // must be a float\n        Number::from_f64(n)\n      }\n    } else {\n      // must be a float\n      Number::from_f64(n)\n    };\n\n    let n = n.ok_or_else(|| {\n      Error::new(\n        Status::InvalidArg,\n        \"Failed to convert js number to serde_json::Number\".to_owned(),\n      )\n    })?;\n\n    Ok(n)\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/set.rs",
    "content": "use std::collections::{BTreeSet, HashSet};\nuse std::hash::{BuildHasher, Hash};\n\n#[cfg(feature = \"object_indexmap\")]\nuse indexmap::IndexSet;\n\nuse crate::bindgen_prelude::*;\n\nimpl<V, S> TypeName for HashSet<V, S> {\n  fn type_name() -> &'static str {\n    \"HashSet\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl<V: FromNapiValue, S> ValidateNapiValue for HashSet<V, S> {}\n\nimpl<V, S> ToNapiValue for HashSet<V, S>\nwhere\n  V: ToNapiValue,\n{\n  unsafe fn to_napi_value(raw_env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let env = Env::from(raw_env);\n    let obj = env.get_global()?;\n    let set_class = obj.get_named_property_unchecked::<Function<'_, Array, ()>>(\"Set\")?;\n    let set = set_class.new_instance(Array::from_vec(&env, val.into_iter().collect())?)?;\n\n    Ok(set.0.value)\n  }\n}\n\nimpl<V, S> FromNapiValue for HashSet<V, S>\nwhere\n  V: FromNapiValue + PartialEq + Eq + Hash,\n  S: Default + BuildHasher,\n{\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let obj = Object::from_raw(env, napi_val);\n    let mut set = HashSet::default();\n    let iter_creator: Function<'_, (), Object> = obj.get_named_property(\"values\")?;\n    let iter = iter_creator.apply(obj, ())?;\n    let next: Function<'_, (), Object> = iter.get_named_property(\"next\")?;\n    while {\n      let o: Object = next.apply(iter, ())?;\n      let done: bool = o.get_named_property(\"done\")?;\n      if !done {\n        let v = o.get_named_property_unchecked::<V>(\"value\")?;\n        set.insert(v);\n      }\n      !done\n    } {}\n    Ok(set)\n  }\n}\n\nimpl<V> TypeName for BTreeSet<V> {\n  fn type_name() -> &'static str {\n    \"BTreeSet\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl<V: FromNapiValue> ValidateNapiValue for BTreeSet<V> {}\n\nimpl<V> ToNapiValue for BTreeSet<V>\nwhere\n  V: ToNapiValue,\n{\n  unsafe fn to_napi_value(raw_env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let env = Env::from(raw_env);\n    let obj = env.get_global()?;\n    let set_class = obj.get_named_property_unchecked::<Function<'_, Array, ()>>(\"Set\")?;\n    let set = set_class.new_instance(Array::from_vec(&env, val.into_iter().collect())?)?;\n\n    Ok(set.0.value)\n  }\n}\n\nimpl<V> FromNapiValue for BTreeSet<V>\nwhere\n  V: FromNapiValue + Ord,\n{\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let obj = unsafe { Object::from_napi_value(env, napi_val)? };\n    let mut set = BTreeSet::default();\n    let iter_creator: Function<'_, (), Object> = obj.get_named_property(\"values\")?;\n    let iter = iter_creator.apply(obj, ())?;\n    let next: Function<'_, (), Object> = iter.get_named_property(\"next\")?;\n    while {\n      let o: Object = next.apply(iter, ())?;\n      let done: bool = o.get_named_property(\"done\")?;\n      if !done {\n        let v = o.get_named_property_unchecked::<V>(\"value\")?;\n        set.insert(v);\n      }\n      !done\n    } {}\n    Ok(set)\n  }\n}\n\n#[cfg(feature = \"object_indexmap\")]\nimpl<V, S> TypeName for IndexSet<V, S> {\n  fn type_name() -> &'static str {\n    \"IndexSet\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n#[cfg(feature = \"object_indexmap\")]\nimpl<V: FromNapiValue, S> ValidateNapiValue for IndexSet<V, S> {}\n#[cfg(feature = \"object_indexmap\")]\nimpl<V, S> ToNapiValue for IndexSet<V, S>\nwhere\n  V: ToNapiValue,\n{\n  unsafe fn to_napi_value(raw_env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let env = Env::from(raw_env);\n    let obj = env.get_global()?;\n    let set_class = obj.get_named_property_unchecked::<Function<'_, Array, ()>>(\"Set\")?;\n    let set = set_class.new_instance(Array::from_vec(&env, val.into_iter().collect())?)?;\n\n    Ok(set.0.value)\n  }\n}\n#[cfg(feature = \"object_indexmap\")]\nimpl<V, S> FromNapiValue for IndexSet<V, S>\nwhere\n  V: FromNapiValue + PartialEq + Eq + Hash,\n  S: Default + BuildHasher,\n{\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let obj = Object::from_raw(env, napi_val);\n    let mut set = IndexSet::default();\n    let iter_creator: Function<'_, (), Object> = obj.get_named_property(\"values\")?;\n    let iter = iter_creator.apply(obj, ())?;\n    let next: Function<'_, (), Object> = iter.get_named_property(\"next\")?;\n    while {\n      let o: Object = next.apply(iter, ())?;\n      let done: bool = o.get_named_property(\"done\")?;\n      if !done {\n        let v = o.get_named_property_unchecked::<V>(\"value\")?;\n        set.insert(v);\n      }\n      !done\n    } {}\n    Ok(set)\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/stream/read.rs",
    "content": "use std::{\n  ffi::c_void,\n  marker::PhantomData,\n  mem,\n  pin::Pin,\n  ptr,\n  sync::{\n    atomic::{AtomicBool, Ordering},\n    Arc, RwLock,\n  },\n  task::{Context, Poll},\n};\n\nuse tokio::sync::Mutex;\n\nuse futures_core::Stream;\nuse tokio_stream::StreamExt;\n\nuse crate::{\n  bindgen_prelude::{\n    BufferSlice, CallbackContext, FromNapiValue, Function, JsObjectValue, Object, PromiseRaw,\n    ToNapiValue, TypeName, Unknown, ValidateNapiValue, NAPI_AUTO_LENGTH,\n  },\n  check_status, sys,\n  threadsafe_function::{ThreadsafeFunction, ThreadsafeFunctionCallMode},\n  Env, Error, JsError, JsValue, Result, Status, Value, ValueType,\n};\n\npub struct ReadableStream<'env, T> {\n  pub(crate) value: sys::napi_value,\n  pub(crate) env: sys::napi_env,\n  _marker: PhantomData<&'env T>,\n}\n\nimpl<'env, T> JsValue<'env> for ReadableStream<'env, T> {\n  fn value(&self) -> Value {\n    Value {\n      env: self.env,\n      value: self.value,\n      value_type: ValueType::Object,\n    }\n  }\n}\n\nimpl<'env, T> JsObjectValue<'env> for ReadableStream<'env, T> {}\n\nimpl<T> TypeName for ReadableStream<'_, T> {\n  fn type_name() -> &'static str {\n    \"ReadableStream\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl<T> ValidateNapiValue for ReadableStream<'_, T> {\n  unsafe fn validate(\n    env: napi_sys::napi_env,\n    napi_val: napi_sys::napi_value,\n  ) -> Result<napi_sys::napi_value> {\n    let constructor = Env::from(env)\n      .get_global()?\n      .get_named_property_unchecked::<Function>(\"ReadableStream\")?;\n    let mut is_instance = false;\n    check_status!(\n      unsafe { sys::napi_instanceof(env, napi_val, constructor.value, &mut is_instance) },\n      \"Check ReadableStream instance failed\"\n    )?;\n    if !is_instance {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Value is not a ReadableStream\",\n      ));\n    }\n    Ok(ptr::null_mut())\n  }\n}\n\nimpl<T> FromNapiValue for ReadableStream<'_, T> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Ok(Self {\n      value: napi_val,\n      env,\n      _marker: PhantomData,\n    })\n  }\n}\n\nimpl<T> ReadableStream<'_, T> {\n  /// Returns a boolean indicating whether the readable stream is locked to a reader.\n  pub fn locked(&self) -> Result<bool> {\n    let mut locked = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_get_named_property(self.env, self.value, c\"locked\".as_ptr().cast(), &mut locked)\n      },\n      \"Get locked property failed\"\n    )?;\n    unsafe { FromNapiValue::from_napi_value(self.env, locked) }\n  }\n\n  /// The `cancel()` method of the `ReadableStream` interface returns a Promise that resolves when the stream is canceled.\n  pub fn cancel(&mut self, reason: Option<String>) -> Result<PromiseRaw<'_, ()>> {\n    let mut cancel_fn = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_get_named_property(\n          self.env,\n          self.value,\n          c\"abort\".as_ptr().cast(),\n          &mut cancel_fn,\n        )\n      },\n      \"Get abort property failed\"\n    )?;\n    let reason_value = unsafe { ToNapiValue::to_napi_value(self.env, reason)? };\n    let mut promise = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_call_function(\n          self.env,\n          self.value,\n          cancel_fn,\n          1,\n          [reason_value].as_ptr(),\n          &mut promise,\n        )\n      },\n      \"Call abort function failed\"\n    )?;\n    Ok(PromiseRaw::new(self.env, promise))\n  }\n}\n\nimpl<T: FromNapiValue> ReadableStream<'_, T> {\n  pub fn read(&self) -> Result<Reader<T>> {\n    let mut reader_function = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_get_named_property(\n          self.env,\n          self.value,\n          c\"getReader\".as_ptr().cast(),\n          &mut reader_function,\n        )\n      },\n      \"Get getReader on ReadableStream failed\"\n    )?;\n    let mut reader = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_call_function(\n          self.env,\n          self.value,\n          reader_function,\n          0,\n          ptr::null_mut(),\n          &mut reader,\n        )\n      },\n      \"Call getReader on ReadableStreamReader failed\"\n    )?;\n    let mut read_function = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_get_named_property(\n          self.env,\n          reader,\n          c\"read\".as_ptr().cast(),\n          &mut read_function,\n        )\n      },\n      \"Get read from ReadableStreamDefaultReader failed\"\n    )?;\n    let mut bind_function = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_get_named_property(\n          self.env,\n          read_function,\n          c\"bind\".as_ptr().cast(),\n          &mut bind_function,\n        )\n      },\n      \"Get bind from ReadableStreamDefaultReader::read failed\"\n    )?;\n    let mut bind_read = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_call_function(\n          self.env,\n          read_function,\n          bind_function,\n          1,\n          [reader].as_ptr(),\n          &mut bind_read,\n        )\n      },\n      \"Call bind from ReadableStreamDefaultReader::read failed\"\n    )?;\n    let read_function = unsafe {\n      Function::<(), PromiseRaw<IteratorValue<T>>>::from_napi_value(self.env, bind_read)?\n    }\n    .build_threadsafe_function()\n    .callee_handled::<true>()\n    .weak::<true>()\n    .build()?;\n    Ok(Reader {\n      inner: read_function,\n      state: Arc::new((RwLock::new(Ok(None)), AtomicBool::new(false))),\n    })\n  }\n}\n\nimpl<T: ToNapiValue + Send + 'static> ReadableStream<'_, T> {\n  pub fn new<S: Stream<Item = Result<T>> + Unpin + Send + 'static>(\n    env: &Env,\n    inner: S,\n  ) -> Result<Self> {\n    let global = env.get_global()?;\n    let constructor = global.get_named_property_unchecked::<Unknown>(\"ReadableStream\")?;\n    if constructor.get_type()? == ValueType::Undefined {\n      return Err(Error::new(\n        Status::GenericFailure,\n        \"ReadableStream is not supported in this Node.js version\",\n      ));\n    }\n\n    // Create shared state for the stream\n    let state = StreamState::new(inner);\n    let state_ptr = Arc::into_raw(state) as *mut c_void;\n\n    let mut underlying_source = Object::new(env)?;\n\n    // Create pull callback\n    let mut pull_fn = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_create_function(\n          env.raw(),\n          c\"pull\".as_ptr().cast(),\n          NAPI_AUTO_LENGTH,\n          Some(pull_callback::<T, S>),\n          state_ptr,\n          &mut pull_fn,\n        )\n      },\n      \"Failed to create pull function\"\n    )?;\n    underlying_source.set_named_property(\"pull\", pull_fn)?;\n\n    // Create cancel callback for cleanup\n    let mut cancel_fn = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_create_function(\n          env.raw(),\n          c\"cancel\".as_ptr().cast(),\n          NAPI_AUTO_LENGTH,\n          Some(cancel_callback::<S>),\n          state_ptr,\n          &mut cancel_fn,\n        )\n      },\n      \"Failed to create cancel function\"\n    )?;\n    underlying_source.set_named_property(\"cancel\", cancel_fn)?;\n\n    // Register invoke to free the Arc when underlying_source is GC'd\n    register_invoke::<S>(env.raw(), underlying_source.0.value, state_ptr)?;\n\n    let mut stream = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_new_instance(\n          env.0,\n          constructor.0.value,\n          1,\n          [underlying_source.0.value].as_ptr(),\n          &mut stream,\n        )\n      },\n      \"Create ReadableStream instance failed\"\n    )?;\n    Ok(Self {\n      value: stream,\n      env: env.0,\n      _marker: PhantomData,\n    })\n  }\n\n  /// Creates a new `ReadableStream` with the given `stream` and `ReadableStream` class.\n  ///\n  /// This is useful if the runtime only supports Node-API 4 but doesn't support the WebStream API.\n  ///\n  /// Node-API 4 was initially introduced in `v10.16.0` and WebStream was introduced in `v16.5.0`.\n  pub fn with_readable_stream_class<S: Stream<Item = Result<T>> + Unpin + Send + 'static>(\n    env: &Env,\n    readable_stream_class: &Unknown,\n    inner: S,\n  ) -> Result<Self> {\n    if readable_stream_class.get_type()? == ValueType::Undefined {\n      return Err(Error::new(\n        Status::GenericFailure,\n        \"ReadableStream is not supported in this Node.js version\",\n      ));\n    }\n\n    // Create shared state for the stream\n    let state = StreamState::new(inner);\n    let state_ptr = Arc::into_raw(state) as *mut c_void;\n\n    let mut underlying_source = Object::new(env)?;\n\n    // Create pull callback\n    let mut pull_fn = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_create_function(\n          env.raw(),\n          c\"pull\".as_ptr().cast(),\n          NAPI_AUTO_LENGTH,\n          Some(pull_callback::<T, S>),\n          state_ptr,\n          &mut pull_fn,\n        )\n      },\n      \"Failed to create pull function\"\n    )?;\n    underlying_source.set_named_property(\"pull\", pull_fn)?;\n\n    // Create cancel callback for cleanup\n    let mut cancel_fn = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_create_function(\n          env.raw(),\n          c\"cancel\".as_ptr().cast(),\n          NAPI_AUTO_LENGTH,\n          Some(cancel_callback::<S>),\n          state_ptr,\n          &mut cancel_fn,\n        )\n      },\n      \"Failed to create cancel function\"\n    )?;\n    underlying_source.set_named_property(\"cancel\", cancel_fn)?;\n\n    // Register invoke to free the Arc when underlying_source is GC'd\n    register_invoke::<S>(env.raw(), underlying_source.0.value, state_ptr)?;\n\n    let mut stream = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_new_instance(\n          env.0,\n          readable_stream_class.0.value,\n          1,\n          [underlying_source.0.value].as_ptr(),\n          &mut stream,\n        )\n      },\n      \"Create ReadableStream instance failed\"\n    )?;\n    Ok(Self {\n      value: stream,\n      env: env.0,\n      _marker: PhantomData,\n    })\n  }\n}\n\nimpl<'env> ReadableStream<'env, BufferSlice<'env>> {\n  /// Creates a new `ReadableStream` with the given `stream` that emits bytes.\n  pub fn create_with_stream_bytes<\n    B: Into<Vec<u8>>,\n    S: Stream<Item = Result<B>> + Unpin + Send + 'static,\n  >(\n    env: &Env,\n    inner: S,\n  ) -> Result<Self> {\n    let global = env.get_global()?;\n    let constructor = global.get_named_property_unchecked::<Function>(\"ReadableStream\")?;\n\n    // Create shared state for the stream\n    let state = StreamState::new(inner);\n    let state_ptr = Arc::into_raw(state) as *mut c_void;\n\n    let mut underlying_source = Object::new(env)?;\n\n    // Create pull callback\n    let mut pull_fn = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_create_function(\n          env.raw(),\n          c\"pull\".as_ptr().cast(),\n          NAPI_AUTO_LENGTH,\n          Some(pull_callback_bytes::<B, S>),\n          state_ptr,\n          &mut pull_fn,\n        )\n      },\n      \"Failed to create pull function\"\n    )?;\n    underlying_source.set_named_property(\"pull\", pull_fn)?;\n\n    // Create cancel callback for cleanup\n    let mut cancel_fn = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_create_function(\n          env.raw(),\n          c\"cancel\".as_ptr().cast(),\n          NAPI_AUTO_LENGTH,\n          Some(cancel_callback::<S>),\n          state_ptr,\n          &mut cancel_fn,\n        )\n      },\n      \"Failed to create cancel function\"\n    )?;\n    underlying_source.set_named_property(\"cancel\", cancel_fn)?;\n\n    // Register invoke to free the Arc when underlying_source is GC'd\n    register_invoke::<S>(env.raw(), underlying_source.0.value, state_ptr)?;\n\n    underlying_source.set(\"type\", \"bytes\")?;\n    let mut stream = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_new_instance(\n          env.0,\n          constructor.value,\n          1,\n          [underlying_source.0.value].as_ptr(),\n          &mut stream,\n        )\n      },\n      \"Create ReadableStream instance failed\"\n    )?;\n    Ok(Self {\n      value: stream,\n      env: env.0,\n      _marker: PhantomData,\n    })\n  }\n\n  /// create a new `ReadableStream` with the given `stream` that emits bytes and `ReadableStream` class.\n  pub fn with_stream_bytes_and_readable_stream_class<\n    B: Into<Vec<u8>>,\n    S: Stream<Item = Result<B>> + Unpin + Send + 'static,\n  >(\n    env: &Env,\n    readable_stream_class: &Unknown,\n    inner: S,\n  ) -> Result<Self> {\n    if readable_stream_class.get_type()? == ValueType::Undefined {\n      return Err(Error::new(\n        Status::GenericFailure,\n        \"ReadableStream is not supported in this Node.js version\",\n      ));\n    }\n\n    // Create shared state for the stream\n    let state = StreamState::new(inner);\n    let state_ptr = Arc::into_raw(state) as *mut c_void;\n\n    let mut underlying_source = Object::new(env)?;\n\n    // Create pull callback\n    let mut pull_fn = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_create_function(\n          env.raw(),\n          c\"pull\".as_ptr().cast(),\n          NAPI_AUTO_LENGTH,\n          Some(pull_callback_bytes::<B, S>),\n          state_ptr,\n          &mut pull_fn,\n        )\n      },\n      \"Failed to create pull function\"\n    )?;\n    underlying_source.set_named_property(\"pull\", pull_fn)?;\n\n    // Create cancel callback for cleanup\n    let mut cancel_fn = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_create_function(\n          env.raw(),\n          c\"cancel\".as_ptr().cast(),\n          NAPI_AUTO_LENGTH,\n          Some(cancel_callback::<S>),\n          state_ptr,\n          &mut cancel_fn,\n        )\n      },\n      \"Failed to create cancel function\"\n    )?;\n    underlying_source.set_named_property(\"cancel\", cancel_fn)?;\n\n    // Register invoke to free the Arc when underlying_source is GC'd\n    register_invoke::<S>(env.raw(), underlying_source.0.value, state_ptr)?;\n\n    underlying_source.set(\"type\", \"bytes\")?;\n    let mut stream = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_new_instance(\n          env.0,\n          readable_stream_class.0.value,\n          1,\n          [underlying_source.0.value].as_ptr(),\n          &mut stream,\n        )\n      },\n      \"Create ReadableStream instance failed\"\n    )?;\n    Ok(Self {\n      value: stream,\n      env: env.0,\n      _marker: PhantomData,\n    })\n  }\n}\n\npub struct IteratorValue<'env, T: FromNapiValue> {\n  _marker: PhantomData<&'env ()>,\n  value: Option<T>,\n  done: bool,\n}\n\nimpl<T: FromNapiValue> FromNapiValue for IteratorValue<'_, T> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut done = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_named_property(env, napi_val, c\"done\".as_ptr().cast(), &mut done) },\n      \"Get done property failed\"\n    )?;\n    let done = unsafe { FromNapiValue::from_napi_value(env, done)? };\n    let mut value = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_named_property(env, napi_val, c\"value\".as_ptr().cast(), &mut value) },\n      \"Get value property failed\"\n    )?;\n    let value = unsafe { FromNapiValue::from_napi_value(env, value)? };\n    Ok(Self {\n      value,\n      done,\n      _marker: PhantomData,\n    })\n  }\n}\n\npub struct Reader<T: FromNapiValue + 'static> {\n  inner:\n    ThreadsafeFunction<(), PromiseRaw<'static, IteratorValue<'static, T>>, (), Status, true, true>,\n  state: Arc<(RwLock<Result<Option<T>>>, AtomicBool)>,\n}\n\nimpl<T: FromNapiValue + 'static> futures_core::Stream for Reader<T> {\n  type Item = Result<T>;\n\n  fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {\n    if self.state.1.load(Ordering::Relaxed) {\n      let mut chunk = self\n        .state\n        .0\n        .write()\n        .map_err(|_| Error::new(Status::InvalidArg, \"Poisoned lock in Reader::poll_next\"))?;\n      let chunk = mem::replace(&mut *chunk, Ok(None))?;\n      match chunk {\n        Some(chunk) => return Poll::Ready(Some(Ok(chunk))),\n        None => return Poll::Ready(None),\n      }\n    }\n    let waker = cx.waker().clone();\n    let state = self.state.clone();\n    let state_in_catch = state.clone();\n    self.inner.call_with_return_value(\n      Ok(()),\n      ThreadsafeFunctionCallMode::NonBlocking,\n      move |iterator, _| {\n        let iterator = iterator?;\n        iterator\n          .then(move |cx| {\n            if cx.value.done {\n              state.1.store(true, Ordering::Relaxed);\n            }\n            if let Some(val) = cx.value.value {\n              let mut chunk = state.0.write().map_err(|_| {\n                Error::new(Status::InvalidArg, \"Poisoned lock in Reader::poll_next\")\n              })?;\n              *chunk = Ok(Some(val));\n            };\n            Ok(())\n          })?\n          .catch(move |cx: CallbackContext<Unknown>| {\n            let mut chunk = state_in_catch\n              .0\n              .write()\n              .map_err(|_| Error::new(Status::InvalidArg, \"Poisoned lock in Reader::poll_next\"))?;\n            let mut error_ref = ptr::null_mut();\n            check_status!(\n              unsafe { sys::napi_create_reference(cx.env.0, cx.value.0.value, 0, &mut error_ref) },\n              \"Create error reference failed\"\n            )?;\n            *chunk = Err(Error {\n              status: Status::GenericFailure,\n              reason: \"\".to_string(),\n              cause: None,\n              maybe_raw: error_ref,\n              maybe_env: cx.env.0,\n            });\n            Ok(())\n          })?\n          .finally(move |_| {\n            waker.wake();\n            Ok(())\n          })?;\n        Ok(())\n      },\n    );\n    let mut chunk = self\n      .state\n      .0\n      .write()\n      .map_err(|_| Error::new(Status::InvalidArg, \"Poisoned lock in Reader::poll_next\"))?;\n    let chunk = mem::replace(&mut *chunk, Ok(None))?;\n    match chunk {\n      Some(chunk) => Poll::Ready(Some(Ok(chunk))),\n      None => Poll::Pending,\n    }\n  }\n}\n\n/// Shared state for ReadableStream that coordinates between pull and cancel callbacks.\n/// Uses Arc to share ownership between callbacks, Mutex to protect the stream,\n/// and AtomicBool for lock-free cancellation checks.\n///\n/// Memory management: The Arc is freed by a invoke when the underlying_source\n/// object is garbage collected. Callbacks only \"borrow\" the Arc using the\n/// increment+from_raw pattern, never freeing it directly. This prevents\n/// use-after-free if cancel_callback is invoked after pull_callback has\n/// already closed the stream.\nstruct StreamState<S> {\n  stream: Mutex<Option<Pin<Box<S>>>>,\n  cancelled: AtomicBool,\n}\n\nimpl<S> StreamState<S> {\n  fn new(stream: S) -> Arc<Self> {\n    Arc::new(Self {\n      stream: Mutex::new(Some(Box::pin(stream))),\n      cancelled: AtomicBool::new(false),\n    })\n  }\n}\n\n/// invoke callback that frees the Arc<StreamState> when the underlying_source\n/// object is garbage collected. This is the only place where the Arc is freed,\n/// ensuring that callbacks can safely borrow without risk of use-after-free.\nextern \"C\" fn invoke<S>(\n  _env: sys::napi_env,\n  finalize_data: *mut c_void,\n  _finalize_hint: *mut c_void,\n) {\n  if !finalize_data.is_null() {\n    // Consume the Arc, dropping it and freeing memory\n    drop(unsafe { Arc::from_raw(finalize_data.cast::<StreamState<S>>()) });\n  }\n}\n\n/// Registers a invoke on the underlying_source object that will free the Arc<StreamState>\n/// when the object is garbage collected.\nfn register_invoke<S>(\n  env: sys::napi_env,\n  underlying_source: sys::napi_value,\n  state_ptr: *mut c_void,\n) -> Result<()> {\n  check_status!(\n    unsafe {\n      sys::napi_add_finalizer(\n        env,\n        underlying_source,\n        state_ptr,\n        Some(invoke::<S>),\n        ptr::null_mut(),\n        ptr::null_mut(),\n      )\n    },\n    \"Failed to add invoke to underlying source\"\n  )\n}\n\n/// Helper struct to extract and bind controller methods from callback info.\nstruct PullController<T: ToNapiValue> {\n  enqueue: crate::bindgen_prelude::FunctionRef<T, ()>,\n  close: crate::bindgen_prelude::FunctionRef<(), ()>,\n}\n\nimpl<T: ToNapiValue> PullController<T> {\n  fn from_callback_info(\n    env: sys::napi_env,\n    info: sys::napi_callback_info,\n  ) -> Result<(Self, *mut c_void)> {\n    let mut data = ptr::null_mut();\n    let mut argc = 1;\n    let mut args = [ptr::null_mut(); 1];\n    check_status!(\n      unsafe {\n        sys::napi_get_cb_info(\n          env,\n          info,\n          &mut argc,\n          args.as_mut_ptr(),\n          ptr::null_mut(),\n          &mut data,\n        )\n      },\n      \"Get ReadableStream.pull callback info failed\"\n    )?;\n\n    let controller = unsafe { Object::from_napi_value(env, args[0])? };\n    let enqueue = controller\n      .get_named_property_unchecked::<Function<T, ()>>(\"enqueue\")?\n      .bind(controller)?\n      .create_ref()?;\n    let close = controller\n      .get_named_property_unchecked::<Function<(), ()>>(\"close\")?\n      .bind(controller)?\n      .create_ref()?;\n\n    Ok((Self { enqueue, close }, data))\n  }\n}\n\nextern \"C\" fn cancel_callback<S>(\n  env: sys::napi_env,\n  info: sys::napi_callback_info,\n) -> sys::napi_value {\n  let mut data = ptr::null_mut();\n  unsafe {\n    sys::napi_get_cb_info(\n      env,\n      info,\n      ptr::null_mut(),\n      ptr::null_mut(),\n      ptr::null_mut(),\n      &mut data,\n    );\n  }\n  if !data.is_null() {\n    // Borrow the Arc using increment+from_raw pattern.\n    // The invoke registered on underlying_source will free the Arc when GC'd.\n    // This prevents use-after-free if cancel is called after stream has closed.\n    let state = unsafe {\n      Arc::increment_strong_count(data.cast::<StreamState<S>>());\n      Arc::from_raw(data.cast::<StreamState<S>>())\n    };\n\n    // Mark as cancelled so pull callback knows to stop\n    state.cancelled.store(true, Ordering::SeqCst);\n\n    // Try to take the stream - use try_lock to avoid blocking the event loop.\n    // If we can't get the lock (pull is in progress), that's fine - pull will\n    // see the cancelled flag and handle cleanup.\n    if let Ok(mut guard) = state.stream.try_lock() {\n      let _ = guard.take();\n    };\n    // Borrowed Arc drops here, decrementing ref count (but not freeing - invoke handles that)\n  }\n  ptr::null_mut()\n}\n\nextern \"C\" fn pull_callback<\n  T: ToNapiValue + Send + 'static,\n  S: Stream<Item = Result<T>> + Unpin + Send + 'static,\n>(\n  env: sys::napi_env,\n  info: sys::napi_callback_info,\n) -> sys::napi_value {\n  match pull_callback_impl::<T, S>(env, info) {\n    Ok(val) => val,\n    Err(err) => unsafe {\n      let js_error: JsError = err.into();\n      js_error.throw_into(env);\n      ptr::null_mut()\n    },\n  }\n}\n\nfn pull_callback_impl<\n  T: ToNapiValue + Send + 'static,\n  S: Stream<Item = Result<T>> + Unpin + Send + 'static,\n>(\n  env: sys::napi_env,\n  info: sys::napi_callback_info,\n) -> Result<sys::napi_value> {\n  let (controller, data) = PullController::<T>::from_callback_info(env, info)?;\n\n  // Borrow the Arc<StreamState> using the increment+from_raw pattern.\n  // The invoke registered on underlying_source will free the Arc when GC'd.\n  // This prevents use-after-free if cancel is called after stream has closed.\n  let state = unsafe {\n    Arc::increment_strong_count(data.cast::<StreamState<S>>());\n    Arc::from_raw(data.cast::<StreamState<S>>())\n  };\n\n  // Check if stream was cancelled\n  if state.cancelled.load(Ordering::SeqCst) {\n    return Ok(ptr::null_mut());\n  }\n\n  let env_wrapper = Env::from_raw(env);\n  let state_for_async = state.clone();\n\n  let promise = env_wrapper.spawn_future_with_callback(\n    async move {\n      let mut guard = state_for_async.stream.lock().await;\n      if let Some(ref mut stream) = *guard {\n        stream.next().await.transpose()\n      } else {\n        Ok(None)\n      }\n    },\n    move |env, val| {\n      // Use inner closure to ensure FunctionRef cleanup on all paths (including errors)\n      let result = {\n        // Re-check cancelled flag after async work completes to prevent\n        // enqueueing if cancel was called while waiting for the next item\n        if state.cancelled.load(Ordering::SeqCst) {\n          // Stream was cancelled while waiting - skip enqueue and close\n        } else if let Some(val) = val {\n          let enqueue_fn = controller.enqueue.borrow_back(env)?;\n          enqueue_fn.call(val)?;\n        } else {\n          let close_fn = controller.close.borrow_back(env)?;\n          close_fn.call(())?;\n          // Stream ended - take the inner stream to free resources early\n          // (the Arc itself is freed by the invoke when underlying_source is GC'd)\n          if let Ok(mut guard) = state.stream.try_lock() {\n            let _ = guard.take();\n          }\n        }\n        Ok::<(), Error>(())\n      };\n      // Always clean up FunctionRefs regardless of success/failure\n      drop(controller.enqueue);\n      drop(controller.close);\n      result\n    },\n  )?;\n  Ok(promise.inner)\n}\n\nextern \"C\" fn pull_callback_bytes<\n  B: Into<Vec<u8>>,\n  S: Stream<Item = Result<B>> + Unpin + Send + 'static,\n>(\n  env: sys::napi_env,\n  info: sys::napi_callback_info,\n) -> sys::napi_value {\n  match pull_callback_impl_bytes::<B, S>(env, info) {\n    Ok(val) => val,\n    Err(err) => unsafe {\n      let js_error: JsError = err.into();\n      js_error.throw_into(env);\n      ptr::null_mut()\n    },\n  }\n}\n\nfn pull_callback_impl_bytes<\n  B: Into<Vec<u8>>,\n  S: Stream<Item = Result<B>> + Unpin + Send + 'static,\n>(\n  env: sys::napi_env,\n  info: sys::napi_callback_info,\n) -> Result<sys::napi_value> {\n  let (controller, data) = PullController::<BufferSlice>::from_callback_info(env, info)?;\n\n  // Borrow the Arc<StreamState> using the increment+from_raw pattern.\n  // The invoke registered on underlying_source will free the Arc when GC'd.\n  // This prevents use-after-free if cancel is called after stream has closed.\n  let state = unsafe {\n    Arc::increment_strong_count(data.cast::<StreamState<S>>());\n    Arc::from_raw(data.cast::<StreamState<S>>())\n  };\n\n  // Check if stream was cancelled\n  if state.cancelled.load(Ordering::SeqCst) {\n    return Ok(ptr::null_mut());\n  }\n\n  let env_wrapper = Env::from_raw(env);\n  let state_for_async = state.clone();\n\n  let promise = env_wrapper.spawn_future_with_callback(\n    async move {\n      let mut guard = state_for_async.stream.lock().await;\n      if let Some(ref mut stream) = *guard {\n        stream\n          .next()\n          .await\n          .transpose()\n          .map(|v| v.map(|v| Into::<Vec<u8>>::into(v)))\n      } else {\n        Ok(None)\n      }\n    },\n    move |env, val| {\n      // Use inner closure to ensure FunctionRef cleanup on all paths (including errors)\n      let result = {\n        // Re-check cancelled flag after async work completes to prevent\n        // enqueueing if cancel was called while waiting for the next item\n        if state.cancelled.load(Ordering::SeqCst) {\n          // Stream was cancelled while waiting - skip enqueue and close\n        } else if let Some(val) = val {\n          let enqueue_fn = controller.enqueue.borrow_back(env)?;\n          enqueue_fn.call(BufferSlice::from_data(env, val)?)?;\n        } else {\n          let close_fn = controller.close.borrow_back(env)?;\n          close_fn.call(())?;\n          // Stream ended - take the inner stream to free resources early\n          // (the Arc itself is freed by the invoke when underlying_source is GC'd)\n          if let Ok(mut guard) = state.stream.try_lock() {\n            let _ = guard.take();\n          }\n        }\n        Ok::<(), Error>(())\n      };\n      // Always clean up FunctionRefs regardless of success/failure\n      drop(controller.enqueue);\n      drop(controller.close);\n      result\n    },\n  )?;\n  Ok(promise.inner)\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/stream/write.rs",
    "content": "use std::{marker::PhantomData, ptr};\n\nuse crate::{\n  bindgen_prelude::{\n    FromNapiValue, Function, JsObjectValue, PromiseRaw, ToNapiValue, TypeName, ValidateNapiValue,\n  },\n  check_status, sys, Env, Error, JsValue, Result, Status, Value, ValueType,\n};\n\npub struct WriteableStream<'env> {\n  pub(crate) value: sys::napi_value,\n  pub(crate) env: sys::napi_env,\n  pub(crate) _scope: &'env PhantomData<()>,\n}\n\nimpl<'env> JsValue<'env> for WriteableStream<'env> {\n  fn value(&self) -> Value {\n    Value {\n      env: self.env,\n      value: self.value,\n      value_type: ValueType::Object,\n    }\n  }\n}\n\nimpl<'env> JsObjectValue<'env> for WriteableStream<'env> {}\n\nimpl TypeName for WriteableStream<'_> {\n  fn type_name() -> &'static str {\n    \"WriteableStream\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl ValidateNapiValue for WriteableStream<'_> {\n  unsafe fn validate(\n    env: napi_sys::napi_env,\n    napi_val: napi_sys::napi_value,\n  ) -> Result<napi_sys::napi_value> {\n    let constructor = Env::from(env)\n      .get_global()?\n      .get_named_property_unchecked::<Function>(\"WritableStream\")?;\n    let mut is_instance = false;\n    check_status!(\n      unsafe { sys::napi_instanceof(env, napi_val, constructor.value, &mut is_instance) },\n      \"Check WritableStream instance failed\"\n    )?;\n    if !is_instance {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Value is not a WritableStream\",\n      ));\n    }\n    Ok(ptr::null_mut())\n  }\n}\n\nimpl FromNapiValue for WriteableStream<'_> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Ok(Self {\n      value: napi_val,\n      env,\n      _scope: &PhantomData,\n    })\n  }\n}\n\nimpl WriteableStream<'_> {\n  pub fn ready(&self) -> Result<PromiseRaw<'_, ()>> {\n    let mut promise = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_get_named_property(self.env, self.value, c\"ready\".as_ptr().cast(), &mut promise)\n      },\n      \"Get ready property failed\"\n    )?;\n    Ok(PromiseRaw::new(self.env, promise))\n  }\n\n  /// The `abort()` method of the `WritableStream` interface aborts the stream,\n  /// signaling that the producer can no longer successfully write to the stream and it is to be immediately moved to an error state,\n  /// with any queued writes discarded.\n  pub fn abort(&mut self, reason: String) -> Result<PromiseRaw<'_, ()>> {\n    let mut abort_fn = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_get_named_property(\n          self.env,\n          self.value,\n          c\"abort\".as_ptr().cast(),\n          &mut abort_fn,\n        )\n      },\n      \"Get abort property failed\"\n    )?;\n    let reason_value = unsafe { ToNapiValue::to_napi_value(self.env, reason)? };\n    let mut promise = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_call_function(\n          self.env,\n          self.value,\n          abort_fn,\n          1,\n          [reason_value].as_ptr(),\n          &mut promise,\n        )\n      },\n      \"Call abort function failed\"\n    )?;\n    Ok(PromiseRaw::new(self.env, promise))\n  }\n\n  /// The `close()` method of the `WritableStream` interface closes the associated stream.\n  ///\n  /// All chunks written before this method is called are sent before the returned promise is fulfilled.\n  pub fn close(&mut self) -> Result<PromiseRaw<'_, ()>> {\n    let mut close_fn = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_get_named_property(\n          self.env,\n          self.value,\n          c\"close\".as_ptr().cast(),\n          &mut close_fn,\n        )\n      },\n      \"Get close property failed\"\n    )?;\n    let mut promise = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_call_function(\n          self.env,\n          self.value,\n          close_fn,\n          0,\n          ptr::null_mut(),\n          &mut promise,\n        )\n      },\n      \"Call close function failed\"\n    )?;\n    Ok(PromiseRaw::new(self.env, promise))\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/stream.rs",
    "content": "pub use read::*;\npub use write::*;\n\nmod read;\nmod write;\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/string.rs",
    "content": "use std::ffi::c_char;\nuse std::fmt::Display;\nuse std::ops::Deref;\nuse std::ptr;\n\nuse crate::{bindgen_prelude::*, check_status, check_status_and_type, sys};\n\nimpl TypeName for String {\n  fn type_name() -> &'static str {\n    \"String\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::String\n  }\n}\n\nimpl ValidateNapiValue for String {}\n\nimpl ToNapiValue for &String {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let mut ptr = ptr::null_mut();\n\n    check_status!(\n      unsafe {\n        sys::napi_create_string_utf8(env, val.as_ptr().cast(), val.len() as isize, &mut ptr)\n      },\n      \"Failed to convert rust `String` into napi `string`\"\n    )?;\n\n    Ok(ptr)\n  }\n}\n\nimpl ToNapiValue for &mut String {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, &*val)\n  }\n}\n\nimpl ToNapiValue for String {\n  #[inline]\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    #[allow(clippy::needless_borrows_for_generic_args)]\n    unsafe {\n      ToNapiValue::to_napi_value(env, &val)\n    }\n  }\n}\n\nimpl FromNapiValue for String {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut len = 0;\n\n    check_status_and_type!(\n      unsafe { sys::napi_get_value_string_utf8(env, napi_val, ptr::null_mut(), 0, &mut len) },\n      env,\n      napi_val,\n      \"Failed to convert JavaScript value `{}` into rust type `String`\"\n    )?;\n\n    // end char len in C\n    len += 1;\n    let mut ret: Vec<u8> = vec![0; len];\n\n    let mut written_char_count = 0;\n\n    check_status_and_type!(\n      unsafe {\n        sys::napi_get_value_string_utf8(\n          env,\n          napi_val,\n          ret.as_mut_ptr().cast(),\n          len,\n          &mut written_char_count,\n        )\n      },\n      env,\n      napi_val,\n      \"Failed to convert napi `{}` into rust type `String`\"\n    )?;\n\n    ret.truncate(written_char_count);\n\n    Ok(unsafe { String::from_utf8_unchecked(ret) })\n  }\n}\n\nimpl ToNapiValue for &str {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let mut ptr = ptr::null_mut();\n\n    check_status!(\n      unsafe {\n        sys::napi_create_string_utf8(env, val.as_ptr().cast(), val.len() as isize, &mut ptr)\n      },\n      \"Failed to convert rust `&str` into napi `string`\"\n    )?;\n\n    Ok(ptr)\n  }\n}\n\n#[derive(Debug)]\npub struct Utf16String(Vec<u16>);\n\nimpl ValidateNapiValue for Utf16String {}\n\nimpl From<String> for Utf16String {\n  fn from(s: String) -> Self {\n    Utf16String(s.encode_utf16().collect())\n  }\n}\n\nimpl Display for Utf16String {\n  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n    write!(f, \"{}\", String::from_utf16_lossy(self))\n  }\n}\n\nimpl Deref for Utf16String {\n  type Target = [u16];\n\n  fn deref(&self) -> &Self::Target {\n    self.0.as_ref()\n  }\n}\n\nimpl TypeName for Utf16String {\n  fn type_name() -> &'static str {\n    \"String(utf16)\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::String\n  }\n}\n\nimpl FromNapiValue for Utf16String {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut len = 0;\n\n    check_status!(\n      unsafe { sys::napi_get_value_string_utf16(env, napi_val, ptr::null_mut(), 0, &mut len) },\n      \"Failed to convert napi `utf16 string` into rust type `String`\",\n    )?;\n\n    // end char len in C\n    len += 1;\n    let mut ret = vec![0; len];\n    let mut written_char_count = 0;\n\n    check_status!(\n      unsafe {\n        sys::napi_get_value_string_utf16(\n          env,\n          napi_val,\n          ret.as_mut_ptr(),\n          len,\n          &mut written_char_count,\n        )\n      },\n      \"Failed to convert napi `utf16 string` into rust type `String`\",\n    )?;\n\n    ret.truncate(written_char_count);\n\n    Ok(Utf16String(ret))\n  }\n}\n\nimpl ToNapiValue for Utf16String {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Utf16String) -> Result<sys::napi_value> {\n    let mut ptr = ptr::null_mut();\n\n    check_status!(\n      unsafe {\n        sys::napi_create_string_utf16(env, val.0.as_ptr().cast(), val.len() as isize, &mut ptr)\n      },\n      \"Failed to convert napi `string` into rust type `String`\"\n    )?;\n\n    Ok(ptr)\n  }\n}\n\n#[derive(Debug)]\npub struct Latin1String(Vec<u8>);\n\nimpl ValidateNapiValue for Latin1String {}\n\nimpl From<String> for Latin1String {\n  fn from(s: String) -> Self {\n    Latin1String(s.into_bytes())\n  }\n}\n\n#[cfg(feature = \"latin1\")]\nimpl Display for Latin1String {\n  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n    let mut dst_slice = vec![0; self.0.len() * 2];\n    let written =\n      encoding_rs::mem::convert_latin1_to_utf8(self.0.as_slice(), dst_slice.as_mut_slice());\n    dst_slice.truncate(written);\n    write!(f, \"{}\", unsafe { String::from_utf8_unchecked(dst_slice) })\n  }\n}\n\nimpl Deref for Latin1String {\n  type Target = [u8];\n\n  fn deref(&self) -> &Self::Target {\n    self.0.as_slice()\n  }\n}\n\nimpl TypeName for Latin1String {\n  fn type_name() -> &'static str {\n    \"String(latin1)\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::String\n  }\n}\n\nimpl FromNapiValue for Latin1String {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut len = 0;\n\n    check_status!(\n      unsafe { sys::napi_get_value_string_latin1(env, napi_val, ptr::null_mut(), 0, &mut len) },\n      \"Failed to convert napi `latin1 string` into rust type `String`\",\n    )?;\n\n    // end char len in C\n    len += 1;\n    let mut buf: Vec<u8> = vec![0; len];\n\n    let mut written_char_count = 0;\n\n    check_status!(\n      unsafe {\n        sys::napi_get_value_string_latin1(\n          env,\n          napi_val,\n          buf.as_mut_ptr().cast(),\n          len,\n          &mut written_char_count,\n        )\n      },\n      \"Failed to convert napi `latin1 string` into rust type `String`\"\n    )?;\n    buf.truncate(written_char_count);\n    Ok(Latin1String(buf))\n  }\n}\n\nimpl ToNapiValue for Latin1String {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let mut ptr = ptr::null_mut();\n\n    check_status!(\n      unsafe {\n        sys::napi_create_string_latin1(env, val.0.as_ptr().cast(), val.len() as isize, &mut ptr)\n      },\n      \"Failed to convert rust type `String` into napi `latin1 string`\"\n    )?;\n\n    Ok(ptr)\n  }\n}\n\npub const NAPI_AUTO_LENGTH: isize = -1;\n\n#[derive(Debug)]\n/// A wrapper around the raw c_char pointer to a C string.\n///\n/// This is useful when you want to return a C string to JavaScript directly via NAPI-RS function without converting it to Rust string or performing any memory allocation.\n///\n/// The `RawCString` doesn't implement `FromNapiValue`, so you can't convert a JavaScript String to it.\npub struct RawCString {\n  length: isize,\n  inner: *const c_char,\n}\n\nimpl RawCString {\n  /// Create a new `RawCString` from a raw pointer and length.\n  ///\n  /// If the inner string is null-terminated, you can pass `` as the length.\n  pub fn new(inner: *const c_char, length: isize) -> Self {\n    Self { inner, length }\n  }\n}\n\nimpl ToNapiValue for RawCString {\n  unsafe fn to_napi_value(env: napi_sys::napi_env, val: Self) -> Result<napi_sys::napi_value> {\n    let mut ptr = ptr::null_mut();\n\n    check_status!(\n      napi_sys::napi_create_string_utf8(env, val.inner, val.length, &mut ptr),\n      \"Failed to convert rust `&str` into napi `string`\"\n    )?;\n\n    Ok(ptr)\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/symbol.rs",
    "content": "use std::ptr;\n\nuse crate::{\n  bindgen_runtime::{Env, FromNapiValue, Result, ToNapiValue, TypeName, ValidateNapiValue},\n  check_status, sys, JsSymbol,\n};\n\npub struct Symbol {\n  desc: Option<String>,\n  #[cfg(feature = \"napi9\")]\n  for_desc: Option<String>,\n}\n\nimpl TypeName for Symbol {\n  fn type_name() -> &'static str {\n    \"Symbol\"\n  }\n\n  fn value_type() -> crate::ValueType {\n    crate::ValueType::Symbol\n  }\n}\n\nimpl ValidateNapiValue for Symbol {}\n\nimpl Symbol {\n  pub fn new<S: ToString>(desc: S) -> Self {\n    Self {\n      desc: Some(desc.to_string()),\n      #[cfg(feature = \"napi9\")]\n      for_desc: None,\n    }\n  }\n\n  pub fn identity() -> Self {\n    Self {\n      desc: None,\n      #[cfg(feature = \"napi9\")]\n      for_desc: None,\n    }\n  }\n\n  #[cfg(feature = \"napi9\")]\n  pub fn for_desc<S: AsRef<str>>(desc: S) -> Self {\n    Self {\n      desc: None,\n      for_desc: Some(desc.as_ref().to_owned()),\n    }\n  }\n\n  /// Convert `Symbol` to `JsSymbol`\n  pub fn into_js_symbol<'env>(self, env: &'env Env) -> Result<JsSymbol<'env>> {\n    let napi_value = unsafe { ToNapiValue::to_napi_value(env.0, self)? };\n    unsafe { JsSymbol::from_napi_value(env.0, napi_value) }\n  }\n}\n\nimpl ToNapiValue for Symbol {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    let mut symbol_value = ptr::null_mut();\n    #[cfg(feature = \"napi9\")]\n    if let Some(desc) = val.for_desc {\n      check_status!(\n        unsafe {\n          sys::node_api_symbol_for(\n            env,\n            desc.as_ptr().cast(),\n            desc.len() as isize,\n            &mut symbol_value,\n          )\n        },\n        \"Failed to call node_api_symbol_for\"\n      )?;\n      return Ok(symbol_value);\n    }\n    check_status!(unsafe {\n      sys::napi_create_symbol(\n        env,\n        match val.desc {\n          Some(desc) => {\n            let mut desc_string = ptr::null_mut();\n            let desc_len = desc.len();\n            check_status!(sys::napi_create_string_utf8(\n              env,\n              desc.as_ptr().cast(),\n              desc_len as isize,\n              &mut desc_string\n            ))?;\n            desc_string\n          }\n          None => ptr::null_mut(),\n        },\n        &mut symbol_value,\n      )\n    })?;\n    Ok(symbol_value)\n  }\n}\n\nimpl FromNapiValue for Symbol {\n  unsafe fn from_napi_value(\n    _env: sys::napi_env,\n    _napi_val: sys::napi_value,\n  ) -> crate::Result<Self> {\n    Ok(Self {\n      desc: None,\n      #[cfg(feature = \"napi9\")]\n      for_desc: None,\n    })\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/task.rs",
    "content": "use std::cell::RefCell;\nuse std::ffi::c_void;\nuse std::marker::PhantomData;\nuse std::ptr;\nuse std::rc::Rc;\nuse std::{cell::Cell, panic::UnwindSafe};\n\nuse crate::{\n  async_work,\n  bindgen_prelude::{FromNapiValue, JsObjectValue, ToNapiValue, TypeName, Unknown},\n  check_status, sys, Env, Error, JsError, ScopedTask, Value, ValueType,\n};\n\nuse super::Object;\n\npub struct AsyncTask<T: for<'task> ScopedTask<'task>> {\n  inner: T,\n  abort_signal: Option<AbortSignal>,\n}\n\nimpl<T: for<'task> ScopedTask<'task>> TypeName for T {\n  fn type_name() -> &'static str {\n    \"AsyncTask\"\n  }\n\n  fn value_type() -> crate::ValueType {\n    crate::ValueType::Object\n  }\n}\n\nimpl<T: for<'task> ScopedTask<'task>> AsyncTask<T> {\n  pub fn new(task: T) -> Self {\n    Self {\n      inner: task,\n      abort_signal: None,\n    }\n  }\n\n  pub fn with_signal(task: T, signal: AbortSignal) -> Self {\n    Self {\n      inner: task,\n      abort_signal: Some(signal),\n    }\n  }\n\n  pub fn with_optional_signal(task: T, signal: Option<AbortSignal>) -> Self {\n    Self {\n      inner: task,\n      abort_signal: signal,\n    }\n  }\n}\n\ntype AbortCallback = Rc<RefCell<Vec<Box<dyn Fn()>>>>;\n\n/// <https://developer.mozilla.org/zh-CN/docs/Web/API/AbortController>\npub struct AbortSignal {\n  raw_work: Rc<Cell<sys::napi_async_work>>,\n  status: Rc<Cell<u8>>,\n  abort: AbortCallback,\n}\n\nimpl AbortSignal {\n  pub fn on_abort<F: Fn() + 'static>(&self, cb: F) {\n    self.abort.borrow_mut().push(Box::new(cb));\n  }\n}\n\nimpl UnwindSafe for AbortSignal {}\nimpl std::panic::RefUnwindSafe for AbortSignal {}\n\n#[repr(transparent)]\nstruct AbortSignalStack(Vec<AbortSignal>);\n\nimpl FromNapiValue for AbortSignal {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> crate::Result<Self> {\n    let mut signal = Object(\n      Value {\n        env,\n        value: napi_val,\n        value_type: ValueType::Object,\n      },\n      PhantomData,\n    );\n    let async_work_inner: Rc<Cell<sys::napi_async_work>> = Rc::new(Cell::new(ptr::null_mut()));\n    let task_status = Rc::new(Cell::new(0));\n    let abort_cbs = Rc::new(RefCell::new(vec![]));\n    let abort_signal = AbortSignal {\n      raw_work: async_work_inner.clone(),\n      status: task_status.clone(),\n      abort: abort_cbs.clone(),\n    };\n    let js_env = Env::from_raw(env);\n\n    let mut stack;\n    let mut maybe_stack = ptr::null_mut();\n    let unwrap_status = unsafe { sys::napi_remove_wrap(env, signal.0.value, &mut maybe_stack) };\n    if unwrap_status == sys::Status::napi_ok {\n      stack = unsafe { Box::from_raw(maybe_stack as *mut AbortSignalStack) };\n      stack.0.push(abort_signal);\n    } else {\n      stack = Box::new(AbortSignalStack(vec![abort_signal]));\n    }\n    let mut signal_ref = ptr::null_mut();\n    check_status!(\n      unsafe {\n        sys::napi_wrap(\n          env,\n          signal.0.value,\n          Box::into_raw(stack).cast(),\n          Some(async_task_abort_controller_finalize),\n          ptr::null_mut(),\n          &mut signal_ref,\n        )\n      },\n      \"Wrap AbortSignal failed\"\n    )?;\n    signal.set_named_property(\n      \"onabort\",\n      js_env.create_function::<(), Unknown>(\"onabort\", on_abort)?,\n    )?;\n\n    Ok(AbortSignal {\n      raw_work: async_work_inner,\n      status: task_status,\n      abort: abort_cbs,\n    })\n  }\n}\n\nextern \"C\" fn on_abort(\n  env: sys::napi_env,\n  callback_info: sys::napi_callback_info,\n) -> sys::napi_value {\n  match on_abort_impl(env, callback_info) {\n    Err(err) => {\n      let js_err = JsError::from(err);\n      unsafe { js_err.throw_into(env) };\n      ptr::null_mut()\n    }\n    Ok(undefined) => undefined,\n  }\n}\n\nfn on_abort_impl(\n  env: sys::napi_env,\n  callback_info: sys::napi_callback_info,\n) -> Result<sys::napi_value, Error> {\n  let mut this = ptr::null_mut();\n  unsafe {\n    check_status!(\n      sys::napi_get_cb_info(\n        env,\n        callback_info,\n        &mut 0,\n        ptr::null_mut(),\n        &mut this,\n        ptr::null_mut(),\n      ),\n      \"Get callback info in AbortController abort callback failed\"\n    )?;\n    let mut async_task = ptr::null_mut();\n    check_status!(\n      sys::napi_unwrap(env, this, &mut async_task),\n      \"Unwrap async_task from AbortSignal failed\"\n    )?;\n    let abort_controller_stack = Box::leak(Box::from_raw(async_task as *mut AbortSignalStack));\n    for abort_controller in abort_controller_stack.0.iter() {\n      // call abort callback\n      for cb in abort_controller.abort.borrow().iter() {\n        cb();\n      }\n\n      // Task Completed, return now\n      if abort_controller.status.get() == 1 {\n        return Ok(ptr::null_mut());\n      }\n      let raw_async_work = abort_controller.raw_work.get();\n      let status = sys::napi_cancel_async_work(env, raw_async_work);\n      // async work is already started, so we can't cancel it\n      if status != sys::Status::napi_ok {\n        abort_controller.status.set(0);\n      } else {\n        // abort function must be called from JavaScript main thread, so Relaxed Ordering is ok.\n        abort_controller.status.set(2);\n      }\n    }\n    let mut undefined = ptr::null_mut();\n    check_status!(\n      sys::napi_get_undefined(env, &mut undefined),\n      \"Get undefined in AbortSignal::on_abort callback failed\"\n    )?;\n    Ok(undefined)\n  }\n}\n\nimpl<T: for<'task> ScopedTask<'task>> ToNapiValue for AsyncTask<T> {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> crate::Result<sys::napi_value> {\n    if let Some(abort_signal) = val.abort_signal {\n      let async_promise = async_work::run(env, val.inner, Some(abort_signal.status.clone()))?;\n      abort_signal.raw_work.set(async_promise.napi_async_work);\n      Ok(async_promise.promise_object().inner)\n    } else {\n      let async_promise = async_work::run(env, val.inner, None)?;\n      Ok(async_promise.promise_object().inner)\n    }\n  }\n}\n\nunsafe extern \"C\" fn async_task_abort_controller_finalize(\n  _env: sys::napi_env,\n  finalize_data: *mut c_void,\n  _finalize_hint: *mut c_void,\n) {\n  drop(unsafe { Box::from_raw(finalize_data as *mut AbortSignalStack) });\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values/value_ref.rs",
    "content": "use std::cell::{Cell, LazyCell};\nuse std::ffi::c_void;\nuse std::hash::BuildHasherDefault;\nuse std::ops::{Deref, DerefMut};\nuse std::ptr;\nuse std::sync::{Arc, Weak};\n\nuse nohash_hasher::NoHashHasher;\n\nuse crate::{\n  bindgen_runtime::{FromNapiValue, PersistedPerInstanceHashMap, ToNapiValue},\n  check_status, Env, Error, Result, Status,\n};\n\ntype RefInformation = (\n  /* wrapped_value */ *mut c_void,\n  /* napi_ref */ crate::sys::napi_ref,\n  /* finalize_callback */ *const Cell<*mut dyn FnOnce()>,\n);\n\nthread_local! {\n  pub(crate) static REFERENCE_MAP: LazyCell<\n    PersistedPerInstanceHashMap<*mut c_void, RefInformation, BuildHasherDefault<NoHashHasher<usize>>>,\n  > = LazyCell::new(Default::default);\n}\n\n/// Create a [`napi_ref`](https://nodejs.org/api/n-api.html#napi_ref) from `Class` instance.\n///\n/// Unref the [`napi_ref`](https://nodejs.org/api/n-api.html#napi_ref) when the `Reference` is dropped.\n///\n/// The `Reference` is `Sync` when the `T` is `Sync`.\n/// It's not `Send` because of the `drop` of the `Reference` must be called in the same thread as the `Reference` is created.\npub struct Reference<T: 'static> {\n  raw: *mut T,\n  napi_ref: crate::sys::napi_ref,\n  env: *mut c_void,\n  // the finalize callbacks can only be written with the `Env` passed in\n  // So we can use `Cell` rather than `AtomicPtr` here\n  finalize_callbacks: Arc<Cell<*mut dyn FnOnce()>>,\n}\n\nunsafe impl<T: Sync> Sync for Reference<T> {}\n\nimpl<T> Drop for Reference<T> {\n  fn drop(&mut self) {\n    let rc_strong_count = Arc::strong_count(&self.finalize_callbacks);\n    let mut ref_count = 0;\n    // If Rc strong count == 1, then the referenced object is dropped on GC\n    // It would happen when the process is exiting\n    // In general, the `drop` of the `Reference` would happen first\n    if rc_strong_count > 1 {\n      let status = unsafe {\n        crate::sys::napi_reference_unref(\n          self.env as crate::sys::napi_env,\n          self.napi_ref,\n          &mut ref_count,\n        )\n      };\n      debug_assert!(\n        status == crate::sys::Status::napi_ok,\n        \"Reference unref failed, status code: {}\",\n        crate::Status::from(status)\n      );\n    };\n  }\n}\n\nimpl<T: 'static> Reference<T> {\n  #[doc(hidden)]\n  #[allow(clippy::not_unsafe_ptr_arg_deref)]\n  pub fn add_ref(env: crate::sys::napi_env, t: *mut c_void, value: RefInformation) {\n    REFERENCE_MAP.with(|cell| {\n      cell.borrow_mut(|map| {\n        if let Some((_, previous_ref, previous_rc)) = map.insert(t, value) {\n          unsafe { Arc::from_raw(previous_rc) };\n          unsafe { crate::sys::napi_delete_reference(env, previous_ref) };\n        }\n      })\n    });\n  }\n\n  #[doc(hidden)]\n  pub unsafe fn from_value_ptr(t: *mut c_void, env: crate::sys::napi_env) -> Result<Self> {\n    if let Some((wrapped_value, napi_ref, finalize_callbacks_ptr)) =\n      REFERENCE_MAP.with(|cell| cell.borrow_mut(|map| map.get(&t).cloned()))\n    {\n      let mut ref_count = 0;\n      check_status!(\n        unsafe { crate::sys::napi_reference_ref(env, napi_ref, &mut ref_count) },\n        \"Failed to ref napi reference\"\n      )?;\n      let finalize_callbacks_raw = unsafe { Arc::from_raw(finalize_callbacks_ptr) };\n      let finalize_callbacks = finalize_callbacks_raw.clone();\n      // Leak the raw finalize callbacks\n      let _ = Arc::into_raw(finalize_callbacks_raw);\n      Ok(Self {\n        raw: wrapped_value.cast(),\n        napi_ref,\n        env: env.cast(),\n        finalize_callbacks,\n      })\n    } else {\n      Err(Error::new(\n        Status::InvalidArg,\n        format!(\"Class for Type {t:?} not found\"),\n      ))\n    }\n  }\n}\n\nimpl<T: 'static> ToNapiValue for Reference<T> {\n  unsafe fn to_napi_value(env: crate::sys::napi_env, val: Self) -> Result<crate::sys::napi_value> {\n    let mut result = ptr::null_mut();\n    check_status!(\n      unsafe { crate::sys::napi_get_reference_value(env, val.napi_ref, &mut result) },\n      \"Failed to get reference value\"\n    )?;\n    Ok(result)\n  }\n}\n\nimpl<T: 'static> FromNapiValue for Reference<T> {\n  unsafe fn from_napi_value(\n    env: crate::sys::napi_env,\n    napi_val: crate::sys::napi_value,\n  ) -> Result<Self> {\n    let mut value = ptr::null_mut();\n    check_status!(\n      unsafe { crate::sys::napi_unwrap(env, napi_val, &mut value) },\n      \"Unwrap value [{}] from class Reference failed\",\n      std::any::type_name::<T>(),\n    )?;\n    unsafe { Reference::from_value_ptr(value.cast(), env) }\n  }\n}\n\nimpl<T: 'static> Reference<T> {\n  pub fn clone(&self, env: Env) -> Result<Self> {\n    let mut ref_count = 0;\n    check_status!(\n      unsafe { crate::sys::napi_reference_ref(env.0, self.napi_ref, &mut ref_count) },\n      \"Failed to ref napi reference\"\n    )?;\n    Ok(Self {\n      raw: self.raw,\n      napi_ref: self.napi_ref,\n      env: env.0.cast(),\n      finalize_callbacks: self.finalize_callbacks.clone(),\n    })\n  }\n\n  pub fn downgrade(&self) -> WeakReference<T> {\n    WeakReference {\n      raw: self.raw,\n      napi_ref: self.napi_ref,\n      finalize_callbacks: Arc::downgrade(&self.finalize_callbacks),\n    }\n  }\n\n  /// Safety to share because caller can provide `Env`\n  pub fn share_with<S: 'static, F: FnOnce(&'static mut T) -> Result<S>>(\n    self,\n    #[allow(unused_variables)] env: Env,\n    f: F,\n  ) -> Result<SharedReference<T, S>> {\n    let s = f(Box::leak(unsafe { Box::from_raw(self.raw) }))?;\n    let s_ptr = Box::into_raw(Box::new(s));\n    let prev_drop_fn = unsafe { Box::from_raw(self.finalize_callbacks.get()) };\n    let drop_fn = Box::new(move || {\n      drop(unsafe { Box::from_raw(s_ptr) });\n      prev_drop_fn();\n    });\n    self.finalize_callbacks.set(Box::into_raw(drop_fn));\n    Ok(SharedReference {\n      raw: s_ptr,\n      owner: self,\n    })\n  }\n}\n\nimpl<T: 'static> Deref for Reference<T> {\n  type Target = T;\n\n  fn deref(&self) -> &Self::Target {\n    unsafe { Box::leak(Box::from_raw(self.raw)) }\n  }\n}\n\nimpl<T: 'static> DerefMut for Reference<T> {\n  fn deref_mut(&mut self) -> &mut Self::Target {\n    unsafe { Box::leak(Box::from_raw(self.raw)) }\n  }\n}\n\npub struct WeakReference<T: 'static> {\n  raw: *mut T,\n  napi_ref: crate::sys::napi_ref,\n  finalize_callbacks: Weak<Cell<*mut dyn FnOnce()>>,\n}\n\nimpl<T> Clone for WeakReference<T> {\n  fn clone(&self) -> Self {\n    Self {\n      raw: self.raw,\n      napi_ref: self.napi_ref,\n      finalize_callbacks: self.finalize_callbacks.clone(),\n    }\n  }\n}\n\nimpl<T: 'static> ToNapiValue for WeakReference<T> {\n  unsafe fn to_napi_value(env: crate::sys::napi_env, val: Self) -> Result<crate::sys::napi_value> {\n    if Weak::strong_count(&val.finalize_callbacks) == 0 {\n      return Err(Error::new(\n        Status::GenericFailure,\n        format!(\n          \"The original reference that WeakReference<{}> is pointing to is dropped\",\n          std::any::type_name::<T>()\n        ),\n      ));\n    };\n    let mut result = ptr::null_mut();\n    check_status!(\n      unsafe { crate::sys::napi_get_reference_value(env, val.napi_ref, &mut result) },\n      \"Failed to get reference value\"\n    )?;\n    Ok(result)\n  }\n}\n\nimpl<T: 'static> WeakReference<T> {\n  pub fn upgrade(&self, env: Env) -> Result<Option<Reference<T>>> {\n    if let Some(finalize_callbacks) = self.finalize_callbacks.upgrade() {\n      let mut ref_count = 0;\n      check_status!(\n        unsafe { crate::sys::napi_reference_ref(env.0, self.napi_ref, &mut ref_count) },\n        \"Failed to ref napi reference\"\n      )?;\n      Ok(Some(Reference {\n        raw: self.raw,\n        napi_ref: self.napi_ref,\n        env: env.0 as *mut c_void,\n        finalize_callbacks,\n      }))\n    } else {\n      Ok(None)\n    }\n  }\n\n  pub fn get(&self) -> Option<&T> {\n    if Weak::strong_count(&self.finalize_callbacks) == 0 {\n      None\n    } else {\n      Some(unsafe { Box::leak(Box::from_raw(self.raw)) })\n    }\n  }\n\n  pub fn get_mut(&mut self) -> Option<&mut T> {\n    if Weak::strong_count(&self.finalize_callbacks) == 0 {\n      None\n    } else {\n      Some(unsafe { Box::leak(Box::from_raw(self.raw)) })\n    }\n  }\n}\n\n/// ### Experimental feature\n///\n/// Create a `SharedReference` from an existed `Reference`.\npub struct SharedReference<T: 'static, S: 'static> {\n  raw: *mut S,\n  owner: Reference<T>,\n}\n\nunsafe impl<T, S: Sync> Sync for SharedReference<T, S> {}\n\nimpl<T: 'static, S: 'static> SharedReference<T, S> {\n  pub fn clone(&self, env: Env) -> Result<Self> {\n    Ok(SharedReference {\n      raw: self.raw,\n      owner: self.owner.clone(env)?,\n    })\n  }\n\n  pub fn clone_owner(&self, env: Env) -> Result<Reference<T>> {\n    self.owner.clone(env)\n  }\n\n  /// Safety to share because caller can provide `Env`\n  pub fn share_with<U: 'static, F: FnOnce(&'static mut S) -> Result<U>>(\n    self,\n    #[allow(unused_variables)] env: Env,\n    f: F,\n  ) -> Result<SharedReference<T, U>> {\n    let s = f(Box::leak(unsafe { Box::from_raw(self.raw) }))?;\n    let raw = Box::into_raw(Box::new(s));\n    let prev_drop_fn = unsafe { Box::from_raw(self.owner.finalize_callbacks.get()) };\n    let drop_fn = Box::new(move || {\n      drop(unsafe { Box::from_raw(raw) });\n      prev_drop_fn();\n    });\n    self.owner.finalize_callbacks.set(Box::into_raw(drop_fn));\n    Ok(SharedReference {\n      raw,\n      owner: self.owner,\n    })\n  }\n}\n\nimpl<T: 'static, S: 'static> ToNapiValue for SharedReference<T, S> {\n  unsafe fn to_napi_value(env: crate::sys::napi_env, val: Self) -> Result<crate::sys::napi_value> {\n    let mut result = ptr::null_mut();\n    check_status!(\n      unsafe { crate::sys::napi_get_reference_value(env, val.owner.napi_ref, &mut result) },\n      \"Failed to get reference value\"\n    )?;\n    Ok(result)\n  }\n}\n\nimpl<T: 'static, S: 'static> Deref for SharedReference<T, S> {\n  type Target = S;\n\n  fn deref(&self) -> &Self::Target {\n    unsafe { Box::leak(Box::from_raw(self.raw)) }\n  }\n}\n\nimpl<T: 'static, S: 'static> DerefMut for SharedReference<T, S> {\n  fn deref_mut(&mut self) -> &mut Self::Target {\n    unsafe { Box::leak(Box::from_raw(self.raw)) }\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/js_values.rs",
    "content": "use std::{\n  ptr,\n  rc::Rc,\n  sync::{Arc, Mutex},\n};\n\nuse crate::{check_status, sys, Env, Error, JsValue, Result, Status, Value, ValueType};\n\nmod array;\nmod arraybuffer;\n#[cfg(feature = \"napi6\")]\nmod bigint;\nmod boolean;\nmod buffer;\nmod class;\n#[cfg(all(feature = \"chrono_date\", feature = \"napi5\"))]\nmod date;\nmod either;\nmod external;\nmod function;\nmod map;\nmod nil;\nmod number;\nmod object;\nmod promise;\nmod promise_raw;\nmod scope;\n#[cfg(feature = \"serde-json\")]\nmod serde;\nmod set;\n#[cfg(feature = \"web_stream\")]\nmod stream;\nmod string;\nmod symbol;\nmod task;\nmod value_ref;\n\npub use crate::js_values::Unknown;\n#[cfg(feature = \"napi5\")]\npub use crate::JsDate as Date;\npub use array::*;\npub use arraybuffer::*;\n#[cfg(feature = \"napi6\")]\npub use bigint::*;\npub use buffer::*;\npub use class::*;\npub use either::*;\npub use external::*;\npub use function::*;\npub use nil::*;\npub use object::*;\npub use promise::*;\npub use promise_raw::*;\npub use scope::*;\n#[cfg(feature = \"web_stream\")]\npub use stream::*;\npub use string::*;\npub use symbol::*;\npub use task::*;\npub use value_ref::*;\n\npub trait TypeName {\n  fn type_name() -> &'static str;\n\n  fn value_type() -> ValueType;\n}\n\npub trait ToNapiValue: Sized {\n  /// # Safety\n  ///\n  /// this function called to convert rust values to napi values\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value>;\n\n  fn into_unknown(self, env: &Env) -> Result<Unknown<'_>> {\n    let napi_val = unsafe { Self::to_napi_value(env.0, self)? };\n    Ok(Unknown(\n      Value {\n        env: env.0,\n        value: napi_val,\n        value_type: ValueType::Unknown,\n      },\n      std::marker::PhantomData,\n    ))\n  }\n}\n\nimpl ToNapiValue for sys::napi_value {\n  unsafe fn to_napi_value(_env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    Ok(val)\n  }\n}\n\nimpl<'env, T: JsValue<'env>> ToNapiValue for T {\n  unsafe fn to_napi_value(_env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    Ok(val.raw())\n  }\n}\n\npub trait FromNapiValue: Sized {\n  /// # Safety\n  ///\n  /// this function called to convert napi values to native rust values\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self>;\n\n  fn from_unknown(value: Unknown) -> Result<Self> {\n    unsafe { Self::from_napi_value(value.0.env, value.0.value) }\n  }\n}\n\npub trait FromNapiRef {\n  /// # Safety\n  ///\n  /// this function called to convert napi values to native rust values\n  unsafe fn from_napi_ref(env: sys::napi_env, napi_val: sys::napi_value) -> Result<&'static Self>;\n}\n\npub trait FromNapiMutRef {\n  /// # Safety\n  ///\n  /// this function called to convert napi values to native rust values\n  unsafe fn from_napi_mut_ref(\n    env: sys::napi_env,\n    napi_val: sys::napi_value,\n  ) -> Result<&'static mut Self>;\n}\n\nimpl<T: FromNapiRef + 'static> FromNapiValue for &T {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    unsafe { T::from_napi_ref(env, napi_val) }\n  }\n}\n\nimpl<T: FromNapiMutRef + 'static> FromNapiValue for &mut T {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    unsafe { T::from_napi_mut_ref(env, napi_val) }\n  }\n}\n\npub trait ValidateNapiValue: TypeName {\n  /// # Safety\n  ///\n  /// this function called to validate whether napi value passed to rust is valid type\n  /// The reason why this function return `napi_value` is that if a `Promise<T>` passed in\n  /// we need to return `Promise.reject(T)`, not the `T`.\n  /// So we need to create `Promise.reject(T)` in this function.\n  unsafe fn validate(env: sys::napi_env, napi_val: sys::napi_value) -> Result<sys::napi_value> {\n    let value_type = Self::value_type();\n\n    let mut result = -1;\n    check_status!(\n      unsafe { sys::napi_typeof(env, napi_val, &mut result) },\n      \"Failed to detect napi value type\",\n    )?;\n\n    let received_type = ValueType::from(result);\n    if value_type == received_type {\n      Ok(ptr::null_mut())\n    } else {\n      Err(Error::new(\n        Status::InvalidArg,\n        format!(\"Expect value to be {value_type}, but received {received_type}\"),\n      ))\n    }\n  }\n}\n\nimpl<T: TypeName> TypeName for Option<T> {\n  fn type_name() -> &'static str {\n    T::type_name()\n  }\n\n  fn value_type() -> ValueType {\n    T::value_type()\n  }\n}\n\nimpl<T: ValidateNapiValue> ValidateNapiValue for Option<T> {\n  unsafe fn validate(env: sys::napi_env, napi_val: sys::napi_value) -> Result<sys::napi_value> {\n    let mut result = -1;\n    check_status!(\n      unsafe { sys::napi_typeof(env, napi_val, &mut result) },\n      \"Failed to detect napi value type\",\n    )?;\n\n    let received_type = ValueType::from(result);\n    if received_type == ValueType::Null || received_type == ValueType::Undefined {\n      Ok(ptr::null_mut())\n    } else if let Ok(validate_ret) = unsafe { T::validate(env, napi_val) } {\n      Ok(validate_ret)\n    } else {\n      Err(Error::new(\n        Status::InvalidArg,\n        format!(\n          \"Expect value to be Option<{}>, but received {}\",\n          T::value_type(),\n          received_type\n        ),\n      ))\n    }\n  }\n}\n\nimpl<T> FromNapiValue for Option<T>\nwhere\n  T: FromNapiValue,\n{\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut val_type = 0;\n\n    check_status!(\n      unsafe { sys::napi_typeof(env, napi_val, &mut val_type) },\n      \"Failed to convert napi value into rust type `Option<T>`\",\n    )?;\n\n    match val_type {\n      sys::ValueType::napi_undefined | sys::ValueType::napi_null => Ok(None),\n      _ => Ok(Some(unsafe { T::from_napi_value(env, napi_val)? })),\n    }\n  }\n}\n\nimpl<T> ToNapiValue for Option<T>\nwhere\n  T: ToNapiValue,\n{\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    match val {\n      Some(val) => unsafe { T::to_napi_value(env, val) },\n      None => {\n        let mut ptr = ptr::null_mut();\n        check_status!(\n          unsafe { sys::napi_get_null(env, &mut ptr) },\n          \"Failed to convert rust type `Option<T>` into napi value\",\n        )?;\n        Ok(ptr)\n      }\n    }\n  }\n}\n\nimpl<T> ToNapiValue for Result<T>\nwhere\n  T: ToNapiValue,\n{\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    match val {\n      Ok(v) => unsafe { T::to_napi_value(env, v) },\n      Err(e) => {\n        let error_code = unsafe { String::to_napi_value(env, format!(\"{:?}\", e.status))? };\n        let reason = unsafe { String::to_napi_value(env, e.reason.clone())? };\n        let mut error = ptr::null_mut();\n        check_status!(\n          unsafe { sys::napi_create_error(env, error_code, reason, &mut error) },\n          \"Failed to create napi error\"\n        )?;\n\n        Ok(error)\n      }\n    }\n  }\n}\n\nimpl<T: TypeName> TypeName for Rc<T> {\n  fn type_name() -> &'static str {\n    T::type_name()\n  }\n\n  fn value_type() -> ValueType {\n    T::value_type()\n  }\n}\n\nimpl<T: ValidateNapiValue> ValidateNapiValue for Rc<T> {\n  unsafe fn validate(env: sys::napi_env, napi_val: sys::napi_value) -> Result<sys::napi_value> {\n    let mut result = -1;\n    check_status!(\n      unsafe { sys::napi_typeof(env, napi_val, &mut result) },\n      \"Failed to detect napi value type\",\n    )?;\n\n    let received_type = ValueType::from(result);\n    if let Ok(validate_ret) = unsafe { T::validate(env, napi_val) } {\n      Ok(validate_ret)\n    } else {\n      Err(Error::new(\n        Status::InvalidArg,\n        format!(\n          \"Expect value to be Rc<{}>, but received {}\",\n          T::value_type(),\n          received_type\n        ),\n      ))\n    }\n  }\n}\n\nimpl<T> FromNapiValue for Rc<T>\nwhere\n  T: FromNapiValue,\n{\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut val_type = 0;\n\n    check_status!(\n      unsafe { sys::napi_typeof(env, napi_val, &mut val_type) },\n      \"Failed to convert napi value into rust type `Rc<T>`\",\n    )?;\n\n    Ok(Rc::new(unsafe { T::from_napi_value(env, napi_val)? }))\n  }\n}\n\nimpl<T> ToNapiValue for Rc<T>\nwhere\n  T: ToNapiValue + Clone,\n{\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    unsafe { T::to_napi_value(env, (*val).clone()) }\n  }\n}\n\nimpl<T> ToNapiValue for &Rc<T>\nwhere\n  T: ToNapiValue + Clone,\n{\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    unsafe { T::to_napi_value(env, (**val).clone()) }\n  }\n}\n\nimpl<T> ToNapiValue for &mut Rc<T>\nwhere\n  T: ToNapiValue + Clone,\n{\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    unsafe { T::to_napi_value(env, (**val).clone()) }\n  }\n}\n\nimpl<T: TypeName> TypeName for Arc<T> {\n  fn type_name() -> &'static str {\n    T::type_name()\n  }\n\n  fn value_type() -> ValueType {\n    T::value_type()\n  }\n}\n\nimpl<T: ValidateNapiValue> ValidateNapiValue for Arc<T> {\n  unsafe fn validate(env: sys::napi_env, napi_val: sys::napi_value) -> Result<sys::napi_value> {\n    let mut result = -1;\n    check_status!(\n      unsafe { sys::napi_typeof(env, napi_val, &mut result) },\n      \"Failed to detect napi value type\",\n    )?;\n\n    let received_type = ValueType::from(result);\n    if let Ok(validate_ret) = unsafe { T::validate(env, napi_val) } {\n      Ok(validate_ret)\n    } else {\n      Err(Error::new(\n        Status::InvalidArg,\n        format!(\n          \"Expect value to be Arc<{}>, but received {}\",\n          T::value_type(),\n          received_type\n        ),\n      ))\n    }\n  }\n}\n\nimpl<T> FromNapiValue for Arc<T>\nwhere\n  T: FromNapiValue,\n{\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut val_type = 0;\n\n    check_status!(\n      unsafe { sys::napi_typeof(env, napi_val, &mut val_type) },\n      \"Failed to convert napi value into rust type `Arc<T>`\",\n    )?;\n\n    Ok(Arc::new(unsafe { T::from_napi_value(env, napi_val)? }))\n  }\n}\n\nimpl<T> ToNapiValue for Arc<T>\nwhere\n  T: ToNapiValue + Clone,\n{\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    unsafe { T::to_napi_value(env, (*val).clone()) }\n  }\n}\n\nimpl<T> ToNapiValue for &Arc<T>\nwhere\n  T: ToNapiValue + Clone,\n{\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    unsafe { T::to_napi_value(env, (**val).clone()) }\n  }\n}\n\nimpl<T> ToNapiValue for &mut Arc<T>\nwhere\n  T: ToNapiValue + Clone,\n{\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    unsafe { T::to_napi_value(env, (**val).clone()) }\n  }\n}\n\nimpl<T: TypeName> TypeName for Mutex<T> {\n  fn type_name() -> &'static str {\n    T::type_name()\n  }\n\n  fn value_type() -> ValueType {\n    T::value_type()\n  }\n}\n\nimpl<T: ValidateNapiValue> ValidateNapiValue for Mutex<T> {\n  unsafe fn validate(env: sys::napi_env, napi_val: sys::napi_value) -> Result<sys::napi_value> {\n    let mut result = -1;\n    check_status!(\n      unsafe { sys::napi_typeof(env, napi_val, &mut result) },\n      \"Failed to detect napi value type\",\n    )?;\n\n    let received_type = ValueType::from(result);\n    if let Ok(validate_ret) = unsafe { T::validate(env, napi_val) } {\n      Ok(validate_ret)\n    } else {\n      Err(Error::new(\n        Status::InvalidArg,\n        format!(\n          \"Expect value to be Mutex<{}>, but received {}\",\n          T::value_type(),\n          received_type\n        ),\n      ))\n    }\n  }\n}\n\nimpl<T> FromNapiValue for Mutex<T>\nwhere\n  T: FromNapiValue,\n{\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut val_type = 0;\n\n    check_status!(\n      unsafe { sys::napi_typeof(env, napi_val, &mut val_type) },\n      \"Failed to convert napi value into rust type `Mutex<T>`\",\n    )?;\n\n    Ok(Mutex::new(unsafe { T::from_napi_value(env, napi_val)? }))\n  }\n}\n\nimpl<T> ToNapiValue for Mutex<T>\nwhere\n  T: ToNapiValue + Clone,\n{\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    unsafe {\n      match val.lock() {\n        Ok(inner) => T::to_napi_value(env, inner.clone()),\n        Err(_) => Err(Error::new(\n          Status::GenericFailure,\n          \"Failed to acquire a lock\",\n        )),\n      }\n    }\n  }\n}\n\nimpl<T> ToNapiValue for &Mutex<T>\nwhere\n  T: ToNapiValue + Clone,\n{\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    unsafe {\n      match val.lock() {\n        Ok(inner) => T::to_napi_value(env, inner.clone()),\n        Err(_) => Err(Error::new(\n          Status::GenericFailure,\n          \"Failed to acquire a lock\",\n        )),\n      }\n    }\n  }\n}\n\nimpl<T> ToNapiValue for &mut Mutex<T>\nwhere\n  T: ToNapiValue + Clone,\n{\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    ToNapiValue::to_napi_value(env, &*val)\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/mod.rs",
    "content": "use std::ffi::c_void;\nuse std::rc::Rc;\n\npub use callback_info::*;\npub use ctor::ctor;\npub use env::*;\npub use iterator::Generator;\npub use js_values::*;\npub use module_register::*;\n\nuse super::sys;\nuse crate::{JsError, Result, Status};\n\n#[cfg(feature = \"tokio_rt\")]\npub mod async_iterator;\n#[cfg(feature = \"tokio_rt\")]\npub use async_iterator::AsyncGenerator;\nmod callback_info;\nmod env;\nmod error;\npub mod iterator;\nmod js_values;\nmod module_register;\n\npub trait ObjectFinalize: Sized {\n  #[allow(unused)]\n  fn finalize(self, env: Env) -> Result<()> {\n    Ok(())\n  }\n}\n\n/// # Safety\n///\n/// called when node wrapper objects destroyed\n#[doc(hidden)]\npub(crate) unsafe extern \"C\" fn raw_finalize_unchecked<T: ObjectFinalize>(\n  env: sys::napi_env,\n  finalize_data: *mut c_void,\n  _finalize_hint: *mut c_void,\n) {\n  let data: Box<T> = unsafe { Box::from_raw(finalize_data.cast()) };\n  if let Err(err) = data.finalize(Env::from_raw(env)) {\n    let e: JsError = err.into();\n    unsafe { e.throw_into(env) };\n    return;\n  }\n  if let Some((_, ref_val, finalize_callbacks_ptr)) =\n    REFERENCE_MAP.with(|cell| cell.borrow_mut(|reference_map| reference_map.remove(&finalize_data)))\n  {\n    let finalize_callbacks_rc = unsafe { Rc::from_raw(finalize_callbacks_ptr) };\n\n    #[cfg(all(debug_assertions, not(target_family = \"wasm\")))]\n    {\n      let rc_strong_count = Rc::strong_count(&finalize_callbacks_rc);\n      // If `Rc` strong count is 2, it means the finalize of referenced `Object` is called before the `fn drop` of the `Reference`\n      // It always happened on exiting process\n      // In general, the `fn drop` would happen first\n      if rc_strong_count != 1 && rc_strong_count != 2 {\n        eprintln!(\"Rc strong count is: {rc_strong_count}, it should be 1 or 2\");\n      }\n    }\n    let finalize = unsafe { Box::from_raw(finalize_callbacks_rc.get()) };\n    finalize();\n    let delete_reference_status = unsafe { sys::napi_delete_reference(env, ref_val) };\n    debug_assert!(\n      delete_reference_status == sys::Status::napi_ok,\n      \"Delete reference in finalize callback failed {}\",\n      Status::from(delete_reference_status)\n    );\n  }\n}\n\n/// # Safety\n///\n/// called when node buffer is ready for gc\n#[doc(hidden)]\npub unsafe extern \"C\" fn drop_buffer(\n  _env: sys::napi_env,\n  #[allow(unused)] finalize_data: *mut c_void,\n  finalize_hint: *mut c_void,\n) {\n  #[cfg(all(debug_assertions, not(windows), not(target_family = \"wasm\")))]\n  {\n    js_values::BUFFER_DATA.with(|buffer_data| {\n      let mut buffer = buffer_data.lock().expect(\"Unlock Buffer data failed\");\n      buffer.remove(&(finalize_data as *mut u8));\n    });\n  }\n  unsafe {\n    drop(Box::from_raw(finalize_hint as *mut Buffer));\n  }\n}\n\n/// # Safety\n///\n/// called when node buffer slice is ready for gc\n#[doc(hidden)]\npub unsafe extern \"C\" fn drop_buffer_slice(\n  _env: sys::napi_env,\n  finalize_data: *mut c_void,\n  finalize_hint: *mut c_void,\n) {\n  let (len, cap): (usize, usize) = *unsafe { Box::from_raw(finalize_hint.cast()) };\n  #[cfg(all(debug_assertions, not(windows), not(target_family = \"wasm\")))]\n  {\n    js_values::BUFFER_DATA.with(|buffer_data| {\n      let mut buffer = buffer_data.lock().expect(\"Unlock Buffer data failed\");\n      buffer.remove(&(finalize_data as *mut u8));\n    });\n  }\n  if finalize_data.is_null() {\n    return;\n  }\n  unsafe {\n    drop(Vec::from_raw_parts(finalize_data, len, cap));\n  }\n}\n\n/// Create an object with properties\n///\n/// When the `experimental` feature is enabled, uses `napi_create_object_with_properties`\n/// which creates the object with all properties in a single optimized call.\n/// Otherwise falls back to `napi_create_object` + `napi_define_properties`.\n#[doc(hidden)]\n#[cfg(not(feature = \"noop\"))]\n#[inline]\npub unsafe fn create_object_with_properties(\n  env: sys::napi_env,\n  properties: &[sys::napi_property_descriptor],\n) -> Result<sys::napi_value> {\n  use crate::check_status;\n\n  let mut obj_ptr = std::ptr::null_mut();\n\n  #[cfg(all(\n    feature = \"experimental\",\n    feature = \"node_version_detect\",\n    not(target_family = \"wasm\")\n  ))]\n  {\n    let node_version = NODE_VERSION.get().unwrap();\n    if !properties.is_empty()\n      && ((node_version.major == 25 && node_version.minor >= 2) || node_version.major > 25)\n    {\n      // Convert property names from C strings to napi_value\n      let mut names: Vec<sys::napi_value> = Vec::with_capacity(properties.len());\n      let mut values: Vec<sys::napi_value> = Vec::with_capacity(properties.len());\n\n      for prop in properties {\n        let mut name_value = std::ptr::null_mut();\n        // utf8name is a null-terminated C string, use -1 to auto-detect length\n        check_status!(\n          sys::napi_create_string_utf8(env, prop.utf8name, -1, &mut name_value),\n          \"Failed to create property name string\",\n        )?;\n        names.push(name_value);\n        values.push(prop.value);\n      }\n\n      let mut result_obj = std::ptr::null_mut();\n      check_status!(\n        sys::napi_create_object_with_properties(\n          env,\n          std::ptr::null_mut(), // prototype_or_null\n          names.as_ptr(),\n          values.as_ptr(),\n          properties.len(),\n          &mut result_obj,\n        ),\n        \"Failed to create object with properties\",\n      )?;\n      return Ok(result_obj);\n    }\n  }\n\n  // Fallback: create object then define properties\n  check_status!(\n    sys::napi_create_object(env, &mut obj_ptr),\n    \"Failed to create object\",\n  )?;\n\n  if !properties.is_empty() {\n    check_status!(\n      sys::napi_define_properties(env, obj_ptr, properties.len(), properties.as_ptr()),\n      \"Failed to define properties\",\n    )?;\n  }\n\n  Ok(obj_ptr)\n}\n\n#[doc(hidden)]\n#[cfg(feature = \"noop\")]\npub unsafe fn create_object_with_properties(\n  _env: sys::napi_env,\n  _properties: &[sys::napi_property_descriptor],\n) -> Result<sys::napi_value> {\n  Ok(std::ptr::null_mut())\n}\n"
  },
  {
    "path": "crates/napi/src/bindgen_runtime/module_register.rs",
    "content": "#[cfg(not(feature = \"noop\"))]\nuse std::cell::Cell;\nuse std::cell::{LazyCell, RefCell};\n#[cfg(not(feature = \"noop\"))]\nuse std::collections::HashSet;\n#[cfg(not(feature = \"noop\"))]\nuse std::ffi::CStr;\n#[cfg(all(not(feature = \"noop\"), feature = \"node_version_detect\"))]\nuse std::mem::MaybeUninit;\n#[cfg(not(feature = \"noop\"))]\nuse std::ptr;\n#[cfg(all(not(feature = \"noop\"), feature = \"node_version_detect\"))]\nuse std::sync::OnceLock;\n#[cfg(not(feature = \"noop\"))]\nuse std::sync::{\n  atomic::{AtomicBool, AtomicUsize, Ordering},\n  LazyLock, RwLock,\n};\nuse std::{any::TypeId, collections::HashMap};\n\nuse rustc_hash::FxBuildHasher;\n\n#[cfg(all(not(feature = \"noop\"), feature = \"node_version_detect\"))]\nuse crate::NodeVersion;\n#[cfg(not(feature = \"noop\"))]\nuse crate::{check_status, check_status_or_throw, JsError};\nuse crate::{sys, Property, Result};\n\n// #[napi] fn\npub type ExportRegisterCallback = unsafe fn(sys::napi_env) -> Result<sys::napi_value>;\n// #[napi(module_exports)] fn\npub type ExportRegisterHookCallback =\n  unsafe fn(sys::napi_env, sys::napi_value) -> Result<sys::napi_value>;\npub type ModuleExportsCallback =\n  unsafe fn(env: sys::napi_env, exports: sys::napi_value) -> Result<()>;\n\n#[cfg(all(not(feature = \"noop\"), feature = \"node_version_detect\"))]\npub static NODE_VERSION: OnceLock<NodeVersion> = OnceLock::new();\n\n#[cfg(feature = \"node_version_detect\")]\npub static mut NODE_VERSION_MAJOR: u32 = 0;\n#[cfg(feature = \"node_version_detect\")]\npub static mut NODE_VERSION_MINOR: u32 = 0;\n#[cfg(feature = \"node_version_detect\")]\npub static mut NODE_VERSION_PATCH: u32 = 0;\n\n#[repr(transparent)]\npub(crate) struct PersistedPerInstanceHashMap<K, V, S>(RefCell<HashMap<K, V, S>>);\n\nimpl<K, V, S> PersistedPerInstanceHashMap<K, V, S> {\n  #[allow(clippy::mut_from_ref)]\n  pub(crate) fn borrow_mut<F, R>(&self, f: F) -> R\n  where\n    F: FnOnce(&mut HashMap<K, V, S>) -> R,\n  {\n    f(&mut *self.0.borrow_mut())\n  }\n}\n\nimpl<K, V, S: Default> Default for PersistedPerInstanceHashMap<K, V, S> {\n  fn default() -> Self {\n    Self(RefCell::new(HashMap::<K, V, S>::default()))\n  }\n}\n\n#[cfg(not(feature = \"noop\"))]\ntype ModuleRegisterCallback =\n  RwLock<Vec<(Option<&'static str>, (&'static str, ExportRegisterCallback))>>;\n\n#[cfg(not(feature = \"noop\"))]\ntype ClassPropertyRegistry = HashMap<\n  TypeId,\n  HashMap<Option<&'static str>, (&'static str, Vec<Property>), FxBuildHasher>,\n  FxBuildHasher,\n>;\n\n// Stores class metadata registered by napi macros.\n// Since class properties do not contain any napi_value, ModuleClassProperty is thread-safe.\n// This structure is shared between the main JS thread and worker threads.\n#[cfg(not(feature = \"noop\"))]\n#[derive(Default)]\nstruct ModuleClassProperty(RwLock<ClassPropertyRegistry>);\n\n#[cfg(not(feature = \"noop\"))]\nunsafe impl Send for ModuleClassProperty {}\n#[cfg(not(feature = \"noop\"))]\nunsafe impl Sync for ModuleClassProperty {}\n\n#[cfg(not(feature = \"noop\"))]\nimpl ModuleClassProperty {\n  pub(crate) fn borrow_mut<F, R>(&self, f: F) -> R\n  where\n    F: FnOnce(&mut ClassPropertyRegistry) -> R,\n  {\n    let mut write_lock = self.0.write().unwrap();\n    f(&mut write_lock)\n  }\n\n  pub(crate) fn borrow<F, R>(&self, f: F) -> R\n  where\n    F: FnOnce(&ClassPropertyRegistry) -> R,\n  {\n    let write_lock = self.0.read().unwrap();\n    f(&write_lock)\n  }\n}\n\n#[cfg(not(feature = \"noop\"))]\nstatic MODULE_REGISTER_CALLBACK: LazyLock<ModuleRegisterCallback> = LazyLock::new(Default::default);\n#[cfg(not(feature = \"noop\"))]\nstatic MODULE_REGISTER_HOOK_CALLBACK: LazyLock<RwLock<Option<ExportRegisterHookCallback>>> =\n  LazyLock::new(Default::default);\n#[cfg(not(feature = \"noop\"))]\nstatic MODULE_CLASS_PROPERTIES: LazyLock<ModuleClassProperty> = LazyLock::new(Default::default);\n#[cfg(not(feature = \"noop\"))]\nstatic MODULE_COUNT: AtomicUsize = AtomicUsize::new(0);\n#[cfg(not(feature = \"noop\"))]\nstatic FIRST_MODULE_REGISTERED: AtomicBool = AtomicBool::new(false);\n#[cfg(all(\n  feature = \"tokio_rt\",\n  not(target_family = \"wasm\"),\n  not(feature = \"noop\")\n))]\nstatic ENV_CLEANUP_HOOK_ADDED: RwLock<bool> = RwLock::new(false);\nthread_local! {\n  static REGISTERED_CLASSES: LazyCell<RegisteredClasses> = LazyCell::new(Default::default);\n}\n#[cfg(all(feature = \"napi4\", not(feature = \"noop\")))]\npub(crate) static CUSTOM_GC_TSFN: std::sync::atomic::AtomicPtr<sys::napi_threadsafe_function__> =\n  std::sync::atomic::AtomicPtr::new(ptr::null_mut());\n#[cfg(all(feature = \"napi4\", not(feature = \"noop\")))]\npub(crate) static CUSTOM_GC_TSFN_DESTROYED: AtomicBool = AtomicBool::new(false);\nthread_local! {\n  #[cfg(all(feature = \"napi4\", not(feature = \"noop\")))]\n  // Store thread id of the thread that created the CustomGC ThreadsafeFunction.\n  pub(crate) static THREADS_CAN_ACCESS_ENV: Cell<bool> = const { Cell::new(false) };\n}\n\ntype RegisteredClasses = PersistedPerInstanceHashMap<\n  /* export name */ String,\n  /* constructor */ sys::napi_ref,\n  FxBuildHasher,\n>;\n\n#[cfg(all(feature = \"compat-mode\", not(feature = \"noop\")))]\n// compatibility for #[module_exports]\nstatic MODULE_EXPORTS: LazyLock<RwLock<Vec<ModuleExportsCallback>>> =\n  LazyLock::new(Default::default);\n\n#[cfg(not(feature = \"noop\"))]\n#[inline]\nfn wait_first_thread_registered() {\n  while !FIRST_MODULE_REGISTERED.load(Ordering::SeqCst) {\n    std::hint::spin_loop();\n  }\n}\n\n#[doc(hidden)]\n#[cfg(all(feature = \"compat-mode\", not(feature = \"noop\")))]\n// compatibility for #[module_exports]\npub fn register_module_exports(callback: ModuleExportsCallback) {\n  MODULE_EXPORTS\n    .write()\n    .expect(\"Register module exports failed\")\n    .push(callback);\n}\n\n#[cfg(feature = \"noop\")]\n#[doc(hidden)]\npub fn register_module_exports(_: ModuleExportsCallback) {}\n\n#[cfg(not(feature = \"noop\"))]\n#[doc(hidden)]\npub fn register_module_export(\n  js_mod: Option<&'static str>,\n  name: &'static str,\n  cb: ExportRegisterCallback,\n) {\n  MODULE_REGISTER_CALLBACK\n    .write()\n    .expect(\"Register module export failed\")\n    .push((js_mod, (name, cb)));\n}\n\n#[cfg(feature = \"noop\")]\n#[doc(hidden)]\npub fn register_module_export(\n  _js_mod: Option<&'static str>,\n  _name: &'static str,\n  _cb: ExportRegisterCallback,\n) {\n}\n\n#[cfg(not(feature = \"noop\"))]\n#[doc(hidden)]\npub fn register_module_export_hook(cb: ExportRegisterHookCallback) {\n  let mut inner = MODULE_REGISTER_HOOK_CALLBACK\n    .write()\n    .expect(\"Write MODULE_REGISTER_HOOK_CALLBACK failed\");\n  *inner = Some(cb);\n}\n\n#[cfg(feature = \"noop\")]\n#[doc(hidden)]\npub fn register_module_export_hook(_cb: ExportRegisterHookCallback) {}\n\n#[doc(hidden)]\npub fn get_class_constructor(js_name: &'static str) -> Option<sys::napi_ref> {\n  REGISTERED_CLASSES.with(|cell| cell.borrow_mut(|map| map.get(js_name).copied()))\n}\n\n#[cfg(not(feature = \"noop\"))]\n#[doc(hidden)]\npub fn register_class(\n  rust_type_id: TypeId,\n  js_mod: Option<&'static str>,\n  js_name: &'static str,\n  props: Vec<Property>,\n) {\n  MODULE_CLASS_PROPERTIES.borrow_mut(|inner| {\n    let val = inner.entry(rust_type_id).or_default();\n    let val = val.entry(js_mod).or_default();\n    val.0 = js_name;\n    val.1.extend(props);\n  });\n}\n\n#[cfg(feature = \"noop\")]\n#[doc(hidden)]\n#[allow(unused_variables)]\npub fn register_class(\n  rust_type_id: TypeId,\n  js_mod: Option<&'static str>,\n  js_name: &'static str,\n  props: Vec<Property>,\n) {\n}\n\n#[cfg(all(target_family = \"wasm\", not(feature = \"noop\")))]\n#[no_mangle]\nunsafe extern \"C\" fn napi_register_wasm_v1(\n  env: sys::napi_env,\n  exports: sys::napi_value,\n) -> sys::napi_value {\n  unsafe { napi_register_module_v1(env, exports) }\n}\n\n#[cfg(not(feature = \"noop\"))]\n#[no_mangle]\n/// Register the n-api module exports.\n///\n/// # Safety\n/// This method is meant to be called by Node.js while importing the n-api module.\n/// Only call this method if the current module is **not** imported by a node-like runtime.\n///\n/// Arguments `env` and `exports` must **not** be null.\npub unsafe extern \"C\" fn napi_register_module_v1(\n  env: sys::napi_env,\n  exports: sys::napi_value,\n) -> sys::napi_value {\n  #[cfg(any(\n    target_env = \"msvc\",\n    all(not(target_family = \"wasm\"), feature = \"dyn-symbols\")\n  ))]\n  unsafe {\n    sys::setup();\n  }\n  #[cfg(feature = \"node_version_detect\")]\n  {\n    NODE_VERSION.get_or_init(|| {\n      let mut node_version = MaybeUninit::uninit();\n      check_status_or_throw!(\n        env,\n        unsafe { sys::napi_get_node_version(env, node_version.as_mut_ptr()) },\n        \"Failed to get node version\"\n      );\n      let node_version = *node_version.assume_init();\n      unsafe {\n        NODE_VERSION_MAJOR = node_version.major;\n        NODE_VERSION_MINOR = node_version.minor;\n        NODE_VERSION_PATCH = node_version.patch;\n      }\n      NodeVersion {\n        major: node_version.major,\n        minor: node_version.minor,\n        patch: node_version.patch,\n        release: unsafe { CStr::from_ptr(node_version.release).to_str().unwrap() },\n      }\n    });\n  }\n\n  if MODULE_COUNT.fetch_add(1, Ordering::SeqCst) != 0 {\n    wait_first_thread_registered();\n  }\n\n  let mut exports_objects: HashSet<String> = HashSet::default();\n\n  {\n    let mut register_callback = MODULE_REGISTER_CALLBACK\n      .write()\n      .expect(\"Write MODULE_REGISTER_CALLBACK in napi_register_module_v1 failed\");\n    register_callback\n      .iter_mut()\n      .fold(\n        HashMap::<Option<&'static str>, Vec<(&'static str, ExportRegisterCallback)>>::new(),\n        |mut acc, (js_mod, item)| {\n          if let Some(k) = acc.get_mut(js_mod) {\n            k.push(*item);\n          } else {\n            acc.insert(*js_mod, vec![*item]);\n          }\n          acc\n        },\n      )\n      .iter()\n      .for_each(|(js_mod, items)| {\n        let mut exports_js_mod = ptr::null_mut();\n        if let Some(js_mod_str) = js_mod {\n          let mod_name_c_str =\n            unsafe { CStr::from_bytes_with_nul_unchecked(js_mod_str.as_bytes()) };\n          if exports_objects.contains(*js_mod_str) {\n            check_status_or_throw!(\n              env,\n              unsafe {\n                sys::napi_get_named_property(\n                  env,\n                  exports,\n                  mod_name_c_str.as_ptr(),\n                  &mut exports_js_mod,\n                )\n              },\n              \"Get mod {} from exports failed\",\n              js_mod_str,\n            );\n          } else {\n            check_status_or_throw!(\n              env,\n              unsafe { sys::napi_create_object(env, &mut exports_js_mod) },\n              \"Create export JavaScript Object [{}] failed\",\n              js_mod_str\n            );\n            check_status_or_throw!(\n              env,\n              unsafe {\n                sys::napi_set_named_property(env, exports, mod_name_c_str.as_ptr(), exports_js_mod)\n              },\n              \"Set exports Object [{}] into exports object failed\",\n              js_mod_str\n            );\n            exports_objects.insert(js_mod_str.to_string());\n          }\n        }\n        for (name, callback) in items {\n          unsafe {\n            let js_name = CStr::from_bytes_with_nul_unchecked(name.as_bytes());\n            if let Err(e) = callback(env).and_then(|v| {\n              let exported_object = if exports_js_mod.is_null() {\n                exports\n              } else {\n                exports_js_mod\n              };\n              check_status!(\n                sys::napi_set_named_property(env, exported_object, js_name.as_ptr(), v),\n                \"Failed to register export `{}`\",\n                name,\n              )\n            }) {\n              JsError::from(e).throw_into(env)\n            }\n          }\n        }\n      });\n  }\n\n  let mut registered_classes = HashMap::default();\n\n  MODULE_CLASS_PROPERTIES.borrow(|inner| {\n    inner.iter().for_each(|(_, js_mods)| {\n      for (js_mod, (js_name, props)) in js_mods {\n        let mut exports_js_mod = ptr::null_mut();\n        unsafe {\n          if let Some(js_mod_str) = js_mod {\n            let mod_name_c_str = CStr::from_bytes_with_nul_unchecked(js_mod_str.as_bytes());\n            if exports_objects.contains(*js_mod_str) {\n              check_status_or_throw!(\n                env,\n                sys::napi_get_named_property(\n                  env,\n                  exports,\n                  mod_name_c_str.as_ptr(),\n                  &mut exports_js_mod,\n                ),\n                \"Get mod {} from exports failed\",\n                js_mod_str,\n              );\n            } else {\n              check_status_or_throw!(\n                env,\n                sys::napi_create_object(env, &mut exports_js_mod),\n                \"Create export JavaScript Object [{}] failed\",\n                js_mod_str\n              );\n              check_status_or_throw!(\n                env,\n                sys::napi_set_named_property(env, exports, mod_name_c_str.as_ptr(), exports_js_mod),\n                \"Set exports Object [{}] into exports object failed\",\n                js_mod_str\n              );\n              exports_objects.insert(js_mod_str.to_string());\n            }\n          }\n          let (ctor, props): (Vec<_>, Vec<_>) = props.iter().partition(|prop| prop.is_ctor);\n\n          let ctor = ctor\n            .first()\n            .map(|c| c.raw().method.unwrap())\n            .unwrap_or(noop);\n          let raw_props: Vec<_> = props.iter().map(|prop| prop.raw()).collect();\n\n          let js_class_name = CStr::from_bytes_with_nul_unchecked(js_name.as_bytes());\n          let mut class_ptr = ptr::null_mut();\n\n          check_status_or_throw!(\n            env,\n            sys::napi_define_class(\n              env,\n              js_class_name.as_ptr(),\n              js_name.len() as isize - 1,\n              Some(ctor),\n              ptr::null_mut(),\n              raw_props.len(),\n              raw_props.as_ptr(),\n              &mut class_ptr,\n            ),\n            \"Failed to register class `{}`\",\n            &js_name,\n          );\n\n          let mut ctor_ref = ptr::null_mut();\n          sys::napi_create_reference(env, class_ptr, 1, &mut ctor_ref);\n\n          registered_classes.insert(js_name.to_string(), ctor_ref);\n\n          check_status_or_throw!(\n            env,\n            sys::napi_set_named_property(\n              env,\n              if exports_js_mod.is_null() {\n                exports\n              } else {\n                exports_js_mod\n              },\n              js_class_name.as_ptr(),\n              class_ptr\n            ),\n            \"Failed to register class `{}`\",\n            &js_name,\n          );\n        }\n      }\n    });\n  });\n\n  REGISTERED_CLASSES.with(|cell| {\n    cell.borrow_mut(|map| {\n      *map = registered_classes;\n    })\n  });\n\n  let module_register_hook_callback = MODULE_REGISTER_HOOK_CALLBACK\n    .read()\n    .expect(\"Read MODULE_REGISTER_HOOK_CALLBACK failed\");\n  if let Some(cb) = module_register_hook_callback.as_ref() {\n    if let Err(e) = cb(env, exports) {\n      JsError::from(e).throw_into(env);\n    }\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  {\n    let module_exports = MODULE_EXPORTS.read().expect(\"Read MODULE_EXPORTS failed\");\n    module_exports.iter().for_each(|callback| unsafe {\n      if let Err(e) = callback(env, exports) {\n        JsError::from(e).throw_into(env);\n      }\n    })\n  }\n\n  #[cfg(feature = \"napi4\")]\n  {\n    create_custom_gc(env);\n    #[cfg(feature = \"tokio_rt\")]\n    {\n      crate::tokio_runtime::start_async_runtime();\n      #[cfg(not(target_family = \"wasm\"))]\n      {\n        let mut env_cleanup_hook_added = ENV_CLEANUP_HOOK_ADDED.write().unwrap();\n        if !*env_cleanup_hook_added {\n          check_status_or_throw!(\n            env,\n            unsafe { sys::napi_add_env_cleanup_hook(env, Some(thread_cleanup), ptr::null_mut()) },\n            \"Failed to add env cleanup hook\"\n          );\n          *env_cleanup_hook_added = true;\n          drop(env_cleanup_hook_added);\n        }\n      }\n    }\n  }\n\n  #[cfg(all(feature = \"tokio_rt\", feature = \"napi4\", target_family = \"wasm\"))]\n  check_status_or_throw!(\n    env,\n    unsafe {\n      sys::napi_wrap(\n        env,\n        exports,\n        std::ptr::null_mut(),\n        Some(thread_cleanup),\n        std::ptr::null_mut(),\n        std::ptr::null_mut(),\n      )\n    },\n    \"Failed to add remove thread id cleanup hook\"\n  );\n\n  FIRST_MODULE_REGISTERED.store(true, Ordering::SeqCst);\n  exports\n}\n\n#[cfg(not(feature = \"noop\"))]\npub(crate) unsafe extern \"C\" fn noop(\n  env: sys::napi_env,\n  _info: sys::napi_callback_info,\n) -> sys::napi_value {\n  if !crate::bindgen_runtime::___CALL_FROM_FACTORY.with(|s| s.get()) {\n    unsafe {\n      sys::napi_throw_error(\n        env,\n        ptr::null_mut(),\n        c\"Class contains no `constructor`, can not new it!\".as_ptr(),\n      );\n    }\n  }\n  ptr::null_mut()\n}\n\n#[cfg(all(feature = \"napi4\", not(feature = \"noop\")))]\nfn create_custom_gc(env: sys::napi_env) {\n  if !FIRST_MODULE_REGISTERED.load(Ordering::SeqCst) {\n    let mut custom_gc_fn = ptr::null_mut();\n    check_status_or_throw!(\n      env,\n      unsafe {\n        sys::napi_create_function(\n          env,\n          c\"custom_gc\".as_ptr(),\n          9,\n          Some(empty),\n          ptr::null_mut(),\n          &mut custom_gc_fn,\n        )\n      },\n      \"Create Custom GC Function in napi_register_module_v1 failed\"\n    );\n    let mut async_resource_name = ptr::null_mut();\n    check_status_or_throw!(\n      env,\n      unsafe {\n        sys::napi_create_string_utf8(env, c\"CustomGC\".as_ptr(), 8, &mut async_resource_name)\n      },\n      \"Create async resource string in napi_register_module_v1\"\n    );\n    let mut custom_gc_tsfn = ptr::null_mut();\n    check_status_or_throw!(\n      env,\n      unsafe {\n        sys::napi_create_threadsafe_function(\n          env,\n          custom_gc_fn,\n          ptr::null_mut(),\n          async_resource_name,\n          0,\n          1,\n          ptr::null_mut(),\n          Some(custom_gc_finalize),\n          ptr::null_mut(),\n          Some(custom_gc),\n          &mut custom_gc_tsfn,\n        )\n      },\n      \"Create Custom GC ThreadsafeFunction in napi_register_module_v1 failed\"\n    );\n    check_status_or_throw!(\n      env,\n      unsafe { sys::napi_unref_threadsafe_function(env, custom_gc_tsfn) },\n      \"Unref Custom GC ThreadsafeFunction in napi_register_module_v1 failed\"\n    );\n    CUSTOM_GC_TSFN.store(custom_gc_tsfn, Ordering::Relaxed);\n  }\n\n  THREADS_CAN_ACCESS_ENV.with(|cell| cell.set(true));\n}\n\n#[cfg(all(\n  not(feature = \"noop\"),\n  all(feature = \"tokio_rt\", feature = \"napi4\"),\n  not(target_family = \"wasm\")\n))]\nunsafe extern \"C\" fn thread_cleanup(_data: *mut std::ffi::c_void) {\n  if MODULE_COUNT.fetch_sub(1, Ordering::Relaxed) == 1 {\n    crate::tokio_runtime::shutdown_async_runtime();\n  }\n}\n\n#[cfg(all(\n  not(feature = \"noop\"),\n  all(feature = \"tokio_rt\", feature = \"napi4\"),\n  target_family = \"wasm\"\n))]\nunsafe extern \"C\" fn thread_cleanup(\n  _env: sys::napi_env,\n  _id: *mut std::ffi::c_void,\n  _data: *mut std::ffi::c_void,\n) {\n  if MODULE_COUNT.fetch_sub(1, Ordering::Relaxed) == 1 {\n    crate::tokio_runtime::shutdown_async_runtime();\n  }\n}\n\n#[cfg(all(feature = \"napi4\", not(feature = \"noop\")))]\n#[allow(unused)]\nunsafe extern \"C\" fn empty(env: sys::napi_env, info: sys::napi_callback_info) -> sys::napi_value {\n  ptr::null_mut()\n}\n\n#[cfg(all(feature = \"napi4\", not(feature = \"noop\")))]\n#[allow(unused_variables)]\nunsafe extern \"C\" fn custom_gc_finalize(\n  env: sys::napi_env,\n  finalize_data: *mut std::ffi::c_void,\n  finalize_hint: *mut std::ffi::c_void,\n) {\n  CUSTOM_GC_TSFN_DESTROYED.store(true, Ordering::SeqCst);\n}\n\n#[cfg(all(feature = \"napi4\", not(feature = \"noop\")))]\n// recycle the ArrayBuffer/Buffer Reference if the ArrayBuffer/Buffer is not dropped on the main thread\nextern \"C\" fn custom_gc(\n  env: sys::napi_env,\n  _js_callback: sys::napi_value,\n  _context: *mut std::ffi::c_void,\n  data: *mut std::ffi::c_void,\n) {\n  // current thread was destroyed\n  if THREADS_CAN_ACCESS_ENV.with(|cell| !cell.get()) || data.is_null() {\n    return;\n  }\n  let mut ref_count = 0;\n  check_status_or_throw!(\n    env,\n    unsafe { sys::napi_reference_unref(env, data.cast(), &mut ref_count) },\n    \"Failed to unref Buffer reference in Custom GC\"\n  );\n  debug_assert!(\n    ref_count == 0,\n    \"Buffer reference count in Custom GC is not 0\"\n  );\n  check_status_or_throw!(\n    env,\n    unsafe { sys::napi_delete_reference(env, data.cast()) },\n    \"Failed to delete Buffer reference in Custom GC\"\n  );\n}\n"
  },
  {
    "path": "crates/napi/src/call_context.rs",
    "content": "use std::ptr;\n\nuse crate::bindgen_runtime::{FromNapiValue, TypeName};\nuse crate::check_status;\nuse crate::{sys, Either, Env, Error, NapiValue, Result, Status};\n\n/// Function call context\npub struct CallContext<'env> {\n  pub env: &'env mut Env,\n  raw_this: sys::napi_value,\n  callback_info: sys::napi_callback_info,\n  args: &'env [sys::napi_value],\n  /// arguments.length\n  pub length: usize,\n}\n\nimpl<'env> CallContext<'env> {\n  /// The number of N-api obtained values. In practice this is the numeric\n  /// parameter provided to the `#[js_function(arg_len)]` macro.\n  ///\n  /// As a comparison, the (arguments) `.length` represents the actual number\n  /// of arguments given at a specific function call.\n  ///\n  /// If `.length < .arg_len`, then the elements in the `length .. arg_len`\n  /// range are just `JsUndefined`s.\n  ///\n  /// If `.length > .arg_len`, then truncation has happened and some args have\n  /// been lost.\n  fn arg_len(&self) -> usize {\n    self.args.len()\n  }\n\n  pub fn new(\n    env: &'env mut Env,\n    callback_info: sys::napi_callback_info,\n    raw_this: sys::napi_value,\n    args: &'env [sys::napi_value],\n    length: usize,\n  ) -> Self {\n    Self {\n      env,\n      raw_this,\n      callback_info,\n      args,\n      length,\n    }\n  }\n\n  pub fn get<ArgType: FromNapiValue>(&self, index: usize) -> Result<ArgType> {\n    if index >= self.arg_len() {\n      Err(Error::new(\n        Status::GenericFailure,\n        \"Arguments index out of range\".to_owned(),\n      ))\n    } else {\n      unsafe { ArgType::from_napi_value(self.env.0, self.args[index]) }\n    }\n  }\n\n  pub fn try_get<ArgType: FromNapiValue + TypeName + FromNapiValue>(\n    &self,\n    index: usize,\n  ) -> Result<Either<ArgType, ()>> {\n    if index >= self.arg_len() {\n      Err(Error::new(\n        Status::GenericFailure,\n        \"Arguments index out of range\".to_owned(),\n      ))\n    } else if index < self.length {\n      unsafe { ArgType::from_napi_value(self.env.0, self.args[index]) }.map(Either::A)\n    } else {\n      Ok(Either::B(()))\n    }\n  }\n\n  pub fn get_all(&self) -> Vec<crate::Unknown<'_>> {\n    /* (0 .. self.arg_len()).map(|i| self.get(i).unwrap()).collect() */\n    self\n      .args\n      .iter()\n      .map(|&raw| unsafe { crate::Unknown::from_raw_unchecked(self.env.0, raw) })\n      .collect()\n  }\n\n  pub fn get_new_target<V>(&self) -> Result<V>\n  where\n    V: NapiValue,\n  {\n    let mut value = ptr::null_mut();\n    check_status!(unsafe { sys::napi_get_new_target(self.env.0, self.callback_info, &mut value) })?;\n    unsafe { V::from_raw(self.env.0, value) }\n  }\n\n  pub fn this<T: NapiValue>(&self) -> Result<T> {\n    unsafe { T::from_raw(self.env.0, self.raw_this) }\n  }\n\n  pub fn this_unchecked<T: NapiValue>(&self) -> T {\n    unsafe { T::from_raw_unchecked(self.env.0, self.raw_this) }\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/cleanup_env.rs",
    "content": "pub(crate) struct CleanupEnvHookData<T: 'static> {\n  pub(crate) data: T,\n  pub(crate) hook: Box<dyn FnOnce(T)>,\n}\n\n/// Created by `Env::add_env_cleanup_hook`\n/// And used by `Env::remove_env_cleanup_hook`\n#[derive(Clone, Copy)]\npub struct CleanupEnvHook<T: 'static>(pub(crate) *mut CleanupEnvHookData<T>);\n"
  },
  {
    "path": "crates/napi/src/env.rs",
    "content": "#![allow(deprecated)]\n\n#[cfg(any(feature = \"compat-mode\", feature = \"napi6\"))]\nuse std::any::{type_name, TypeId};\nuse std::convert::TryInto;\nuse std::ffi::CString;\n#[cfg(all(feature = \"tokio_rt\", feature = \"napi4\"))]\nuse std::future::Future;\n#[cfg(feature = \"compat-mode\")]\nuse std::mem;\nuse std::os::raw::{c_char, c_void};\nuse std::ptr;\n\n#[cfg(feature = \"serde-json\")]\nuse serde::de::DeserializeOwned;\n#[cfg(feature = \"serde-json\")]\nuse serde::Serialize;\n\n#[cfg(feature = \"napi8\")]\nuse crate::async_cleanup_hook::AsyncCleanupHook;\n#[cfg(all(feature = \"napi6\", feature = \"compat-mode\"))]\nuse crate::bindgen_runtime::u128_with_sign_to_napi_value;\n#[cfg(feature = \"napi6\")]\nuse crate::bindgen_runtime::FinalizeContext;\n#[cfg(feature = \"napi5\")]\nuse crate::bindgen_runtime::FunctionCallContext;\n#[cfg(all(feature = \"tokio_rt\", feature = \"napi4\"))]\nuse crate::bindgen_runtime::PromiseRaw;\nuse crate::bindgen_runtime::{\n  FromNapiValue, Function, JsValuesTupleIntoVec, Object, ToNapiValue, Unknown,\n};\n#[cfg(feature = \"napi3\")]\nuse crate::cleanup_env::{CleanupEnvHook, CleanupEnvHookData};\n#[cfg(feature = \"serde-json\")]\nuse crate::js_values::{De, Ser};\n#[cfg(all(feature = \"napi4\", feature = \"compat-mode\"))]\nuse crate::threadsafe_function::{ThreadsafeCallContext, ThreadsafeFunction};\n#[cfg(feature = \"napi3\")]\nuse crate::JsError;\nuse crate::{\n  async_work::{self, AsyncWorkPromise},\n  bindgen_runtime::JsObjectValue,\n  check_status,\n  js_values::*,\n  sys, Error, ExtendedErrorInfo, NodeVersion, Result, ScopedTask, Status, ValueType,\n};\n\npub type Callback = unsafe extern \"C\" fn(sys::napi_env, sys::napi_callback_info) -> sys::napi_value;\n\npub(crate) static EMPTY_VEC: Vec<u8> = vec![];\n\n#[derive(Clone, Copy)]\n/// `Env` is used to represent a context that the underlying N-API implementation can use to persist VM-specific state.\n///\n/// Specifically, the same `Env` that was passed in when the initial native function was called must be passed to any subsequent nested N-API calls.\n///\n/// Caching the `Env` for the purpose of general reuse, and passing the `Env` between instances of the same addon running on different Worker threads is not allowed.\n///\n/// The `Env` becomes invalid when an instance of a native addon is unloaded.\n///\n/// Notification of this event is delivered through the callbacks given to `Env::add_env_cleanup_hook` and `Env::set_instance_data`.\npub struct Env(pub(crate) sys::napi_env);\n\nimpl From<sys::napi_env> for Env {\n  fn from(env: sys::napi_env) -> Self {\n    Env(env)\n  }\n}\n\nimpl Env {\n  #[allow(clippy::missing_safety_doc)]\n  pub fn from_raw(env: sys::napi_env) -> Self {\n    Env(env)\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(since = \"3.0.0\", note = \"Use `bool` instead\")]\n  pub fn get_boolean(&self, value: bool) -> Result<JsBoolean> {\n    let mut raw_value = ptr::null_mut();\n    check_status!(unsafe { sys::napi_get_boolean(self.0, value, &mut raw_value) })?;\n    Ok(unsafe { JsBoolean::from_raw_unchecked(self.0, raw_value) })\n  }\n\n  /// Create a new JavaScript number from a Rust `i32`\n  pub fn create_int32(&self, int: i32) -> Result<JsNumber<'_>> {\n    let mut raw_value = ptr::null_mut();\n    check_status!(unsafe {\n      sys::napi_create_int32(self.0, int, (&mut raw_value) as *mut sys::napi_value)\n    })?;\n    unsafe { JsNumber::from_napi_value(self.0, raw_value) }\n  }\n\n  /// Create a new JavaScript number from a Rust `i64`\n  pub fn create_int64(&self, int: i64) -> Result<JsNumber<'_>> {\n    let mut raw_value = ptr::null_mut();\n    check_status!(unsafe {\n      sys::napi_create_int64(self.0, int, (&mut raw_value) as *mut sys::napi_value)\n    })?;\n    unsafe { JsNumber::from_napi_value(self.0, raw_value) }\n  }\n\n  /// Create a new JavaScript number from a Rust `u32`\n  pub fn create_uint32(&self, number: u32) -> Result<JsNumber<'_>> {\n    let mut raw_value = ptr::null_mut();\n    check_status!(unsafe { sys::napi_create_uint32(self.0, number, &mut raw_value) })?;\n    unsafe { JsNumber::from_napi_value(self.0, raw_value) }\n  }\n\n  /// Create a new JavaScript number from a Rust `f64`\n  pub fn create_double(&self, double: f64) -> Result<JsNumber<'_>> {\n    let mut raw_value = ptr::null_mut();\n    check_status!(unsafe {\n      sys::napi_create_double(self.0, double, (&mut raw_value) as *mut sys::napi_value)\n    })?;\n    unsafe { JsNumber::from_napi_value(self.0, raw_value) }\n  }\n\n  /// [n_api_napi_create_bigint_int64](https://nodejs.org/api/n-api.html#n_api_napi_create_bigint_int64)\n  #[cfg(all(feature = \"napi6\", feature = \"compat-mode\"))]\n  #[deprecated(since = \"3.0.0\", note = \"Use `BigInt` instead\")]\n  pub fn create_bigint_from_i64(&self, value: i64) -> Result<JsBigInt> {\n    let mut raw_value = ptr::null_mut();\n    check_status!(unsafe { sys::napi_create_bigint_int64(self.0, value, &mut raw_value) })?;\n    Ok(JsBigInt::from_raw_unchecked(self.0, raw_value, 1))\n  }\n\n  #[cfg(all(feature = \"napi6\", feature = \"compat-mode\"))]\n  #[deprecated(since = \"3.0.0\", note = \"Use `BigInt` instead\")]\n  pub fn create_bigint_from_u64(&self, value: u64) -> Result<JsBigInt> {\n    let mut raw_value = ptr::null_mut();\n    check_status!(unsafe { sys::napi_create_bigint_uint64(self.0, value, &mut raw_value) })?;\n    Ok(JsBigInt::from_raw_unchecked(self.0, raw_value, 1))\n  }\n\n  #[cfg(all(feature = \"napi6\", feature = \"compat-mode\"))]\n  #[deprecated(since = \"3.0.0\", note = \"Use `BigInt` instead\")]\n  pub fn create_bigint_from_i128(&self, value: i128) -> Result<JsBigInt> {\n    unsafe {\n      let raw_value =\n        u128_with_sign_to_napi_value(self.0, value.unsigned_abs(), i32::from(value <= 0))?;\n      Ok(JsBigInt::from_raw_unchecked(self.0, raw_value, 2))\n    }\n  }\n\n  #[cfg(all(feature = \"napi6\", feature = \"compat-mode\"))]\n  #[deprecated(since = \"3.0.0\", note = \"Use `BigInt` instead\")]\n  pub fn create_bigint_from_u128(&self, value: u128) -> Result<JsBigInt> {\n    unsafe {\n      let raw_value = u128_with_sign_to_napi_value(self.0, value, 0)?;\n      Ok(JsBigInt::from_raw_unchecked(self.0, raw_value, 2))\n    }\n  }\n\n  /// [n_api_napi_create_bigint_words](https://nodejs.org/api/n-api.html#n_api_napi_create_bigint_words)\n  ///\n  /// The resulting BigInt will be negative when sign_bit is true.\n  #[cfg(all(feature = \"napi6\", feature = \"compat-mode\"))]\n  #[deprecated(since = \"3.0.0\", note = \"Use `BigInt` instead\")]\n  pub fn create_bigint_from_words(&self, sign_bit: bool, words: Vec<u64>) -> Result<JsBigInt> {\n    let mut raw_value = ptr::null_mut();\n    let len = words.len();\n    check_status!(unsafe {\n      sys::napi_create_bigint_words(\n        self.0,\n        match sign_bit {\n          true => 1,\n          false => 0,\n        },\n        len,\n        words.as_ptr(),\n        &mut raw_value,\n      )\n    })?;\n    Ok(JsBigInt::from_raw_unchecked(self.0, raw_value, len))\n  }\n\n  /// This API creates a new JavaScript string from a Rust type that can be converted to a `&str`\n  pub fn create_string<S: AsRef<str>>(&self, s: S) -> Result<JsString<'_>> {\n    let s = s.as_ref();\n    unsafe { self.create_string_from_c_char(s.as_ptr().cast(), s.len() as isize) }\n  }\n\n  /// This API creates a new JavaScript string from a Rust `String`\n  pub fn create_string_from_std<'env>(&self, s: String) -> Result<JsString<'env>> {\n    unsafe { self.create_string_from_c_char(s.as_ptr().cast(), s.len() as isize) }\n  }\n\n  /// This API is used for C ffi scenario.\n  /// Convert raw *const c_char into JsString\n  ///\n  /// # Safety\n  ///\n  /// Create JsString from known valid utf-8 string\n  pub unsafe fn create_string_from_c_char<'env>(\n    &self,\n    data_ptr: *const c_char,\n    len: isize,\n  ) -> Result<JsString<'env>> {\n    let mut raw_value = ptr::null_mut();\n    check_status!(unsafe { sys::napi_create_string_utf8(self.0, data_ptr, len, &mut raw_value) })?;\n    unsafe { JsString::from_napi_value(self.0, raw_value) }\n  }\n\n  /// This API creates a new JavaScript string from a Rust type that can be converted to a `&[u16]`\n  pub fn create_string_utf16<C: AsRef<[u16]>>(&self, chars: C) -> Result<JsString<'_>> {\n    let mut raw_value = ptr::null_mut();\n    let chars = chars.as_ref();\n    check_status!(unsafe {\n      sys::napi_create_string_utf16(self.0, chars.as_ptr(), chars.len() as isize, &mut raw_value)\n    })?;\n    unsafe { JsString::from_napi_value(self.0, raw_value) }\n  }\n\n  /// This API creates a new JavaScript string from a Rust type that can be converted to a `&[u8]`\n  pub fn create_string_latin1<C: AsRef<[u8]>>(&self, chars: C) -> Result<JsString<'_>> {\n    let mut raw_value = ptr::null_mut();\n    let chars = chars.as_ref();\n    check_status!(unsafe {\n      sys::napi_create_string_latin1(\n        self.0,\n        chars.as_ptr().cast(),\n        chars.len() as isize,\n        &mut raw_value,\n      )\n    })?;\n    unsafe { JsString::from_napi_value(self.0, raw_value) }\n  }\n\n  /// This API creates a new JavaScript symbol from a optional description\n  pub fn create_symbol(&self, description: Option<&str>) -> Result<JsSymbol<'_>> {\n    let mut result = ptr::null_mut();\n    check_status!(unsafe {\n      sys::napi_create_symbol(\n        self.0,\n        description\n          .and_then(|desc| self.create_string(desc).ok())\n          .map(|string| string.0.value)\n          .unwrap_or(ptr::null_mut()),\n        &mut result,\n      )\n    })?;\n    Ok(JsSymbol(\n      Value {\n        env: self.0,\n        value: result,\n        value_type: ValueType::Symbol,\n      },\n      std::marker::PhantomData,\n    ))\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(since = \"3.0.0\", note = \"Use `Object::new` instead\")]\n  pub fn create_object(&self) -> Result<JsObject> {\n    let mut raw_value = ptr::null_mut();\n    check_status!(unsafe { sys::napi_create_object(self.0, &mut raw_value) })?;\n    Ok(unsafe { JsObject::from_raw_unchecked(self.0, raw_value) })\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(since = \"3.0.0\", note = \"Use `Array` instead\")]\n  pub fn create_empty_array(&self) -> Result<JsObject> {\n    let mut raw_value = ptr::null_mut();\n    check_status!(unsafe { sys::napi_create_array(self.0, &mut raw_value) })?;\n    Ok(unsafe { JsObject::from_raw_unchecked(self.0, raw_value) })\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(since = \"3.0.0\", note = \"Use `Array` instead\")]\n  pub fn create_array_with_length(&self, length: usize) -> Result<JsObject> {\n    let mut raw_value = ptr::null_mut();\n    check_status!(unsafe { sys::napi_create_array_with_length(self.0, length, &mut raw_value) })?;\n    Ok(unsafe { JsObject::from_raw_unchecked(self.0, raw_value) })\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(since = \"3.0.0\", note = \"Use `Buffer` instead\")]\n  /// This API allocates a node::Buffer object. While this is still a fully-supported data structure, in most cases using a TypedArray will suffice.\n  pub fn create_buffer(&self, length: usize) -> Result<JsBufferValue> {\n    let mut raw_value = ptr::null_mut();\n    let mut data_ptr = ptr::null_mut();\n    check_status!(unsafe {\n      sys::napi_create_buffer(self.0, length, &mut data_ptr, &mut raw_value)\n    })?;\n\n    Ok(JsBufferValue::new(\n      JsBuffer(Value {\n        env: self.0,\n        value: raw_value,\n        value_type: ValueType::Object,\n      }),\n      mem::ManuallyDrop::new(if length == 0 {\n        Vec::new()\n      } else {\n        unsafe { Vec::from_raw_parts(data_ptr as *mut _, length, length) }\n      }),\n    ))\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(since = \"3.0.0\", note = \"Use `BufferSlice::from_data` instead\")]\n  /// This API allocates a node::Buffer object and initializes it with data backed by the passed in buffer.\n  ///\n  /// While this is still a fully-supported data structure, in most cases using a TypedArray will suffice.\n  pub fn create_buffer_with_data(&self, mut data: Vec<u8>) -> Result<JsBufferValue> {\n    let length = data.len();\n    let mut raw_value = ptr::null_mut();\n    let data_ptr = data.as_mut_ptr();\n    check_status!(unsafe {\n      if length == 0 {\n        // Rust uses 0x1 as the data pointer for empty buffers,\n        // but NAPI/V8 only allows multiple buffers to have\n        // the same data pointer if it's 0x0.\n        sys::napi_create_buffer(self.0, length, ptr::null_mut(), &mut raw_value)\n      } else {\n        let hint_ptr = Box::into_raw(Box::new((length, data.capacity())));\n        let status = sys::napi_create_external_buffer(\n          self.0,\n          length,\n          data_ptr.cast(),\n          Some(drop_buffer),\n          hint_ptr.cast(),\n          &mut raw_value,\n        );\n        // electron doesn't support external buffers\n        if status == sys::Status::napi_no_external_buffers_allowed {\n          drop(Box::from_raw(hint_ptr));\n          let mut dest_data_ptr = ptr::null_mut();\n          let status = sys::napi_create_buffer_copy(\n            self.0,\n            length,\n            data.as_ptr().cast(),\n            &mut dest_data_ptr,\n            &mut raw_value,\n          );\n          data = Vec::from_raw_parts(dest_data_ptr.cast(), length, length);\n          status\n        } else {\n          status\n        }\n      }\n    })?;\n    Ok(JsBufferValue::new(\n      JsBuffer(Value {\n        env: self.0,\n        value: raw_value,\n        value_type: ValueType::Object,\n      }),\n      mem::ManuallyDrop::new(data),\n    ))\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(since = \"3.0.0\", note = \"Use `BufferSlice::from_external` instead\")]\n  /// # Safety\n  /// Mostly the same with `create_buffer_with_data`\n  ///\n  /// Provided `finalize_callback` will be called when `Buffer` got dropped.\n  ///\n  /// You can pass in `noop_finalize` if you have nothing to do in finalize phase.\n  ///\n  /// # Notes\n  ///\n  /// JavaScript may mutate the data passed in to this buffer when writing the buffer.\n  /// However, some JavaScript runtimes do not support external buffers (notably electron!)\n  /// in which case modifications may be lost.\n  ///\n  /// If you need to support these runtimes, you should create a buffer by other means and then\n  /// later copy the data back out.\n  pub unsafe fn create_buffer_with_borrowed_data<Hint, Finalize>(\n    &self,\n    mut data: *mut u8,\n    length: usize,\n    hint: Hint,\n    finalize_callback: Finalize,\n  ) -> Result<JsBufferValue>\n  where\n    Finalize: FnOnce(Env, Hint),\n  {\n    let mut raw_value = ptr::null_mut();\n    if data.is_null() || std::ptr::eq(data, EMPTY_VEC.as_ptr()) {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Borrowed data should not be null\".to_owned(),\n      ));\n    }\n    let hint_ptr = Box::into_raw(Box::new((hint, finalize_callback)));\n    unsafe {\n      let status = sys::napi_create_external_buffer(\n        self.0,\n        length,\n        data.cast(),\n        Some(raw_finalize_with_custom_callback::<Hint, Finalize>),\n        hint_ptr.cast(),\n        &mut raw_value,\n      );\n      if status == sys::Status::napi_no_external_buffers_allowed {\n        let (hint, finalize) = *Box::from_raw(hint_ptr);\n        let mut result_data = ptr::null_mut();\n        let status = sys::napi_create_buffer_copy(\n          self.0,\n          length,\n          data.cast(),\n          &mut result_data,\n          &mut raw_value,\n        );\n        data = result_data.cast();\n        finalize(*self, hint);\n        check_status!(status)?;\n      } else {\n        check_status!(status)?;\n      }\n    };\n    Ok(JsBufferValue::new(\n      JsBuffer(Value {\n        env: self.0,\n        value: raw_value,\n        value_type: ValueType::Object,\n      }),\n      mem::ManuallyDrop::new(unsafe { Vec::from_raw_parts(data, length, length) }),\n    ))\n  }\n\n  #[cfg(not(target_family = \"wasm\"))]\n  /// This function gives V8 an indication of the amount of externally allocated memory that is kept alive by JavaScript objects (i.e. a JavaScript object that points to its own memory allocated by a native module).\n  ///\n  /// Registering externally allocated memory will trigger global garbage collections more often than it would otherwise.\n  ///\n  /// ***ATTENTION ⚠️***, do not use this with `create_buffer_with_data/create_arraybuffer_with_data`, since these two functions already called the `adjust_external_memory` internal.\n  pub fn adjust_external_memory(&self, size: i64) -> Result<i64> {\n    let mut changed = 0i64;\n    check_status!(unsafe { sys::napi_adjust_external_memory(self.0, size, &mut changed) })?;\n    Ok(changed)\n  }\n\n  #[cfg(target_family = \"wasm\")]\n  #[allow(unused_variables)]\n  pub fn adjust_external_memory(&self, size: i64) -> Result<i64> {\n    Ok(0)\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(since = \"3.0.0\", note = \"Use `BufferSlice::copy_from` instead\")]\n  /// This API allocates a node::Buffer object and initializes it with data copied from the passed-in buffer.\n  ///\n  /// While this is still a fully-supported data structure, in most cases using a TypedArray will suffice.\n  pub fn create_buffer_copy<D>(&self, data_to_copy: D) -> Result<JsBufferValue>\n  where\n    D: AsRef<[u8]>,\n  {\n    let length = data_to_copy.as_ref().len();\n    let data_ptr = data_to_copy.as_ref().as_ptr();\n    let mut copy_data = ptr::null_mut();\n    let mut raw_value = ptr::null_mut();\n    check_status!(unsafe {\n      sys::napi_create_buffer_copy(\n        self.0,\n        length,\n        data_ptr as *mut c_void,\n        &mut copy_data,\n        &mut raw_value,\n      )\n    })?;\n    Ok(JsBufferValue::new(\n      JsBuffer(Value {\n        env: self.0,\n        value: raw_value,\n        value_type: ValueType::Object,\n      }),\n      mem::ManuallyDrop::new(if length == 0 {\n        Vec::new()\n      } else {\n        unsafe { Vec::from_raw_parts(copy_data as *mut u8, length, length) }\n      }),\n    ))\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(since = \"3.0.0\", note = \"Use `ArrayBuffer::from_data` instead\")]\n  pub fn create_arraybuffer(&self, length: usize) -> Result<JsArrayBufferValue> {\n    let mut raw_value = ptr::null_mut();\n    let mut data_ptr = ptr::null_mut();\n    check_status!(unsafe {\n      sys::napi_create_arraybuffer(self.0, length, &mut data_ptr, &mut raw_value)\n    })?;\n\n    Ok(JsArrayBufferValue::new(\n      unsafe { JsArrayBuffer::from_raw_unchecked(self.0, raw_value) },\n      data_ptr as *mut c_void,\n      length,\n    ))\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(since = \"3.0.0\", note = \"Use `ArrayBuffer::from_data` instead\")]\n  pub fn create_arraybuffer_with_data(&self, mut data: Vec<u8>) -> Result<JsArrayBufferValue> {\n    let length = data.len();\n    let mut raw_value = ptr::null_mut();\n    let data_ptr = data.as_mut_ptr();\n    if length == 0 {\n      // Rust uses 0x1 as the data pointer for empty buffers,\n      // but NAPI/V8 only allows multiple buffers to have\n      // the same data pointer if it's 0x0.\n      check_status!(\n        unsafe { sys::napi_create_arraybuffer(self.0, length, ptr::null_mut(), &mut raw_value) },\n        \"Failed to create arraybuffer\"\n      )?;\n    } else {\n      let hint_ptr = Box::into_raw(Box::new((length, data.capacity())));\n      let mut status = unsafe {\n        sys::napi_create_external_arraybuffer(\n          self.0,\n          data_ptr.cast(),\n          length,\n          Some(drop_buffer),\n          hint_ptr.cast(),\n          &mut raw_value,\n        )\n      };\n      if status == sys::Status::napi_no_external_buffers_allowed {\n        unsafe { drop(Box::from_raw(hint_ptr)) };\n        let mut underlying_data = ptr::null_mut();\n        status = unsafe {\n          sys::napi_create_arraybuffer(self.0, length, &mut underlying_data, &mut raw_value)\n        };\n        check_status!(status, \"Failed to create arraybuffer\")?;\n        if length > 0 {\n          unsafe { ptr::copy_nonoverlapping(data_ptr, underlying_data.cast(), length) };\n        }\n      } else {\n        check_status!(status, \"Failed to create arraybuffer\")?;\n      }\n    }\n\n    mem::forget(data);\n    Ok(JsArrayBufferValue::new(\n      JsArrayBuffer(Value {\n        env: self.0,\n        value: raw_value,\n        value_type: ValueType::Object,\n      }),\n      data_ptr.cast(),\n      length,\n    ))\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(since = \"3.0.0\", note = \"Use `ArrayBuffer::from_external` instead\")]\n  /// # Safety\n  /// Mostly the same with `create_arraybuffer_with_data`\n  ///\n  /// Provided `finalize_callback` will be called when `Buffer` got dropped.\n  ///\n  /// You can pass in `noop_finalize` if you have nothing to do in finalize phase.\n  ///\n  /// # Notes\n  ///\n  /// JavaScript may mutate the data passed in to this buffer when writing the buffer.\n  /// However, some JavaScript runtimes do not support external buffers (notably electron!)\n  /// in which case modifications may be lost.\n  ///\n  /// If you need to support these runtimes, you should create a buffer by other means and then\n  /// later copy the data back out.\n  pub unsafe fn create_arraybuffer_with_borrowed_data<Hint, Finalize>(\n    &self,\n    data: *mut u8,\n    length: usize,\n    hint: Hint,\n    finalize_callback: Finalize,\n  ) -> Result<JsArrayBufferValue>\n  where\n    Finalize: FnOnce(Env, Hint),\n  {\n    let mut raw_value = ptr::null_mut();\n    let hint_ptr = Box::into_raw(Box::new((hint, finalize_callback)));\n    unsafe {\n      let status = sys::napi_create_external_arraybuffer(\n        self.0,\n        if length == 0 {\n          // Rust uses 0x1 as the data pointer for empty buffers,\n          // but NAPI/V8 only allows multiple buffers to have\n          // the same data pointer if it's 0x0.\n          ptr::null_mut()\n        } else {\n          data as *mut c_void\n        },\n        length,\n        Some(\n          raw_finalize_with_custom_callback::<Hint, Finalize>\n            as unsafe extern \"C\" fn(\n              env: sys::napi_env,\n              finalize_data: *mut c_void,\n              finalize_hint: *mut c_void,\n            ),\n        ),\n        hint_ptr.cast(),\n        &mut raw_value,\n      );\n      if status == sys::Status::napi_no_external_buffers_allowed {\n        let (hint, finalize) = *Box::from_raw(hint_ptr);\n        let mut underlying_data = ptr::null_mut();\n        let status =\n          sys::napi_create_arraybuffer(self.0, length, &mut underlying_data, &mut raw_value);\n        // Copy data before calling finalize, since finalize may free the source data\n        if status == sys::Status::napi_ok && length > 0 {\n          ptr::copy_nonoverlapping(data, underlying_data.cast(), length);\n        }\n        // Always call finalize to clean up caller's resources, even on error\n        finalize(*self, hint);\n        check_status!(status, \"Failed to create arraybuffer\")?;\n      } else {\n        check_status!(status)?;\n      }\n    };\n    Ok(JsArrayBufferValue::new(\n      JsArrayBuffer(Value {\n        env: self.0,\n        value: raw_value,\n        value_type: ValueType::Object,\n      }),\n      data as *mut c_void,\n      length,\n    ))\n  }\n\n  /// This API allows an add-on author to create a function object in native code.\n  ///\n  /// This is the primary mechanism to allow calling into the add-on's native code from JavaScript.\n  ///\n  /// The newly created function is not automatically visible from script after this call.\n  ///\n  /// Instead, a property must be explicitly set on any object that is visible to JavaScript, in order for the function to be accessible from script.\n  pub fn create_function<Args: JsValuesTupleIntoVec, Return>(\n    &self,\n    name: &str,\n    callback: Callback,\n  ) -> Result<Function<'_, Args, Return>> {\n    let mut raw_result = ptr::null_mut();\n    let len = name.len();\n    check_status!(unsafe {\n      sys::napi_create_function(\n        self.0,\n        name.as_ptr().cast(),\n        len as isize,\n        Some(callback),\n        ptr::null_mut(),\n        &mut raw_result,\n      )\n    })?;\n\n    unsafe { Function::<Args, Return>::from_napi_value(self.0, raw_result) }\n  }\n\n  #[cfg(feature = \"napi5\")]\n  pub fn create_function_from_closure<Args: JsValuesTupleIntoVec, Return, F>(\n    &self,\n    name: &str,\n    callback: F,\n  ) -> Result<Function<'_, Args, Return>>\n  where\n    Return: ToNapiValue,\n    F: 'static + Fn(FunctionCallContext) -> Result<Return>,\n  {\n    let closure_data_ptr = Box::into_raw(Box::new(callback));\n\n    let mut raw_result = ptr::null_mut();\n    let len = name.len();\n    check_status!(unsafe {\n      sys::napi_create_function(\n        self.0,\n        name.as_ptr().cast(),\n        len as isize,\n        Some(trampoline::<Return, F>),\n        closure_data_ptr.cast(), // We let it borrow the data here\n        &mut raw_result,\n      )\n    })?;\n\n    // Note: based on N-API docs, at this point, we have created an effective\n    // `&'static dyn Fn…` in Rust parlance, in that thanks to `Box::into_raw()`\n    // we are sure the context won't be freed, and thus the callback may use\n    // it to call the actual method thanks to the trampoline…\n    // But we thus have a data leak: there is nothing yet responsible for\n    // running the `drop(Box::from_raw(…))` cleanup code.\n    //\n    // To solve that, according to the docs, we need to attach a finalizer:\n    check_status!(unsafe {\n      sys::napi_add_finalizer(\n        self.0,\n        raw_result,\n        closure_data_ptr.cast(),\n        Some(finalize_box_trampoline::<F>),\n        ptr::null_mut(),\n        ptr::null_mut(),\n      )\n    })?;\n\n    unsafe { Function::from_napi_value(self.0, raw_result) }\n  }\n\n  /// This API retrieves a napi_extended_error_info structure with information about the last error that occurred.\n  ///\n  /// The content of the napi_extended_error_info returned is only valid up until an n-api function is called on the same env.\n  ///\n  /// Do not rely on the content or format of any of the extended information as it is not subject to SemVer and may change at any time. It is intended only for logging purposes.\n  ///\n  /// This API can be called even if there is a pending JavaScript exception.\n  pub fn get_last_error_info(&self) -> Result<ExtendedErrorInfo> {\n    let mut raw_extended_error = ptr::null();\n    check_status!(unsafe { sys::napi_get_last_error_info(self.0, &mut raw_extended_error) })?;\n    unsafe { ptr::read(raw_extended_error) }.try_into()\n  }\n\n  /// Throw any JavaScript value\n  pub fn throw<T: ToNapiValue>(&self, value: T) -> Result<()> {\n    check_status!(unsafe { sys::napi_throw(self.0, ToNapiValue::to_napi_value(self.0, value)?,) })\n  }\n\n  /// This API throws a JavaScript Error with the text provided.\n  pub fn throw_error(&self, msg: &str, code: Option<&str>) -> Result<()> {\n    let code = code.and_then(|s| CString::new(s).ok());\n    let msg = CString::new(msg)?;\n    check_status!(unsafe {\n      sys::napi_throw_error(\n        self.0,\n        code.as_ref().map(|s| s.as_ptr()).unwrap_or(ptr::null_mut()),\n        msg.as_ptr(),\n      )\n    })\n  }\n\n  /// This API throws a JavaScript RangeError with the text provided.\n  pub fn throw_range_error(&self, msg: &str, code: Option<&str>) -> Result<()> {\n    let code = code.and_then(|s| CString::new(s).ok());\n    let msg = CString::new(msg)?;\n    check_status!(unsafe {\n      sys::napi_throw_range_error(\n        self.0,\n        code.as_ref().map(|s| s.as_ptr()).unwrap_or(ptr::null_mut()),\n        msg.as_ptr(),\n      )\n    })\n  }\n\n  /// This API throws a JavaScript TypeError with the text provided.\n  pub fn throw_type_error(&self, msg: &str, code: Option<&str>) -> Result<()> {\n    let code = code.and_then(|s| CString::new(s).ok());\n    let msg = CString::new(msg)?;\n    check_status!(unsafe {\n      sys::napi_throw_type_error(\n        self.0,\n        code.as_ref().map(|s| s.as_ptr()).unwrap_or(ptr::null_mut()),\n        msg.as_ptr(),\n      )\n    })\n  }\n\n  /// This API throws a JavaScript SyntaxError with the text provided.\n  #[cfg(feature = \"napi9\")]\n  pub fn throw_syntax_error<S: AsRef<str>, C: AsRef<str>>(&self, msg: S, code: Option<C>) {\n    use crate::check_status_or_throw;\n\n    let code = code.as_ref().map(|c| c.as_ref()).unwrap_or(\"\");\n    let c_code = CString::new(code).expect(\"code must be a valid utf-8 string\");\n    let code_ptr = c_code.as_ptr();\n    let msg: CString = CString::new(msg.as_ref()).expect(\"msg must be a valid utf-8 string\");\n    let msg_ptr = msg.as_ptr();\n    check_status_or_throw!(\n      self.0,\n      unsafe { sys::node_api_throw_syntax_error(self.0, code_ptr, msg_ptr,) },\n      \"Throw syntax error failed\"\n    );\n  }\n\n  #[allow(clippy::expect_fun_call)]\n  /// In the event of an unrecoverable error in a native module\n  ///\n  /// A fatal error can be thrown to immediately terminate the process.\n  pub fn fatal_error(self, location: &str, message: &str) {\n    let location_len = location.len();\n    let message_len = message.len();\n\n    unsafe {\n      sys::napi_fatal_error(\n        location.as_ptr().cast(),\n        location_len as isize,\n        message.as_ptr().cast(),\n        message_len as isize,\n      )\n    }\n  }\n\n  #[cfg(feature = \"napi3\")]\n  /// Trigger an 'uncaughtException' in JavaScript.\n  ///\n  /// Useful if an async callback throws an exception with no way to recover.\n  pub fn fatal_exception(&self, err: Error) {\n    unsafe {\n      let js_error = JsError::from(err).into_value(self.0);\n      debug_assert!(sys::napi_fatal_exception(self.0, js_error) == sys::Status::napi_ok);\n    };\n  }\n\n  /// Create JavaScript class\n  pub fn define_class<Args: JsValuesTupleIntoVec>(\n    &self,\n    name: &str,\n    constructor_cb: Callback,\n    properties: &[Property],\n  ) -> Result<Function<'_, Args, Unknown<'_>>> {\n    let mut raw_result = ptr::null_mut();\n    let raw_properties = properties\n      .iter()\n      .map(|prop| prop.raw())\n      .collect::<Vec<sys::napi_property_descriptor>>();\n    check_status!(unsafe {\n      sys::napi_define_class(\n        self.0,\n        name.as_ptr().cast(),\n        name.len() as isize,\n        Some(constructor_cb),\n        ptr::null_mut(),\n        raw_properties.len(),\n        raw_properties.as_ptr(),\n        &mut raw_result,\n      )\n    })?;\n\n    unsafe { Function::from_napi_value(self.0, raw_result) }\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(since = \"3.0.0\", note = \"Please use `JsObjectValue::wrap` instead\")]\n  #[allow(clippy::needless_pass_by_ref_mut)]\n  pub fn wrap<T: 'static>(\n    &self,\n    js_object: &mut JsObject,\n    native_object: T,\n    size_hint: Option<usize>,\n  ) -> Result<()> {\n    check_status!(unsafe {\n      sys::napi_wrap(\n        self.0,\n        js_object.0.value,\n        Box::into_raw(Box::new(TaggedObject::new(native_object))).cast(),\n        Some(raw_finalize::<TaggedObject<T>>),\n        Box::into_raw(Box::new(size_hint.unwrap_or(0) as i64)).cast(),\n        ptr::null_mut(),\n      )\n    })\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(since = \"3.0.0\", note = \"Please use `JsObjectValue::unwrap` instead\")]\n  #[allow(clippy::mut_from_ref)]\n  pub fn unwrap<T: 'static>(&self, js_object: &JsObject) -> Result<&mut T> {\n    unsafe {\n      let mut unknown_tagged_object: *mut c_void = ptr::null_mut();\n      check_status!(sys::napi_unwrap(\n        self.0,\n        js_object.0.value,\n        &mut unknown_tagged_object,\n      ))?;\n\n      let type_id = unknown_tagged_object as *const TypeId;\n      if *type_id == TypeId::of::<T>() {\n        let tagged_object = unknown_tagged_object as *mut TaggedObject<T>;\n        (*tagged_object).object.as_mut().ok_or_else(|| {\n          Error::new(\n            Status::InvalidArg,\n            \"Invalid argument, nothing attach to js_object\".to_owned(),\n          )\n        })\n      } else {\n        Err(Error::new(\n          Status::InvalidArg,\n          format!(\n            \"Invalid argument, {} on unwrap is not the type of wrapped object\",\n            type_name::<T>()\n          ),\n        ))\n      }\n    }\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(\n    since = \"3.0.0\",\n    note = \"Please use `JsObjectValue::drop_wrapped` instead\"\n  )]\n  pub fn drop_wrapped<T: 'static>(&self, js_object: &JsObject) -> Result<()> {\n    unsafe {\n      let mut unknown_tagged_object = ptr::null_mut();\n      check_status!(sys::napi_remove_wrap(\n        self.0,\n        js_object.0.value,\n        &mut unknown_tagged_object,\n      ))?;\n      let type_id = unknown_tagged_object as *const TypeId;\n      if *type_id == TypeId::of::<T>() {\n        drop(Box::from_raw(unknown_tagged_object as *mut TaggedObject<T>));\n        Ok(())\n      } else {\n        Err(Error::new(\n          Status::InvalidArg,\n          format!(\n            \"Invalid argument, {} on unwrap is not the type of wrapped object\",\n            type_name::<T>()\n          ),\n        ))\n      }\n    }\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(since = \"3.0.0\", note = \"Please use `Ref::new` instead\")]\n  /// This API create a new reference with the initial 1 ref count to the Object passed in.\n  pub fn create_reference<'env, T>(&self, value: &T) -> Result<Ref<T>>\n  where\n    T: JsValue<'env>,\n  {\n    Ref::new(self, value)\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(since = \"3.0.0\", note = \"Please use `Ref::get_value` instead\")]\n  /// Get reference value from `Ref` with type check\n  pub fn get_reference_value<T>(&self, reference: &Ref<T>) -> Result<T>\n  where\n    T: FromNapiValue,\n  {\n    let mut js_value = ptr::null_mut();\n    check_status!(unsafe {\n      sys::napi_get_reference_value(self.0, reference.raw_ref, &mut js_value)\n    })?;\n    unsafe { T::from_napi_value(self.0, js_value) }\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(since = \"3.0.0\", note = \"Please use `ObjectRef::get_value` instead\")]\n  /// Get reference value from `Ref` without type check\n  ///\n  /// Using this API if you are sure the type of `T` is matched with provided `Ref<()>`.\n  ///\n  /// If type mismatched, calling `T::method` would return `Err`.\n  pub fn get_reference_value_unchecked<T>(&self, reference: &Ref<T>) -> Result<T>\n  where\n    T: FromNapiValue,\n  {\n    let mut js_value = ptr::null_mut();\n    check_status!(unsafe {\n      sys::napi_get_reference_value(self.0, reference.raw_ref, &mut js_value)\n    })?;\n    unsafe { T::from_napi_value(self.0, js_value) }\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(since = \"3.0.0\", note = \"Please use `External::new` instead\")]\n  /// If `size_hint` provided, `Env::adjust_external_memory` will be called under the hood.\n  ///\n  /// If no `size_hint` provided, global garbage collections will be triggered less times than expected.\n  ///\n  /// If getting the exact `native_object` size is difficult, you can provide an approximate value, it's only effect to the GC.\n  pub fn create_external<'env, T: 'static>(\n    &'env self,\n    native_object: T,\n    size_hint: Option<i64>,\n  ) -> Result<JsExternal<'env>> {\n    let mut object_value = ptr::null_mut();\n    check_status!(unsafe {\n      sys::napi_create_external(\n        self.0,\n        Box::into_raw(Box::new(TaggedObject::new(native_object))).cast(),\n        Some(raw_finalize::<TaggedObject<T>>),\n        Box::into_raw(Box::new(size_hint.unwrap_or(0))).cast(),\n        &mut object_value,\n      )\n    })?;\n    if let Some(changed) = size_hint {\n      if changed != 0 {\n        let mut adjusted_value = 0i64;\n        check_status!(unsafe {\n          sys::napi_adjust_external_memory(self.0, changed, &mut adjusted_value)\n        })?;\n      }\n    };\n    unsafe { JsExternal::from_napi_value(self.0, object_value) }\n  }\n\n  #[cfg(feature = \"compat-mode\")]\n  #[deprecated(since = \"3.0.0\", note = \"Please use `&External` instead\")]\n  #[allow(clippy::mut_from_ref)]\n  pub fn get_value_external<T: 'static>(&self, js_external: &JsExternal) -> Result<&mut T> {\n    unsafe {\n      let mut unknown_tagged_object = ptr::null_mut();\n      check_status!(sys::napi_get_value_external(\n        self.0,\n        js_external.0.value,\n        &mut unknown_tagged_object,\n      ))?;\n\n      let type_id = unknown_tagged_object as *const TypeId;\n      if *type_id == TypeId::of::<T>() {\n        let tagged_object = unknown_tagged_object as *mut TaggedObject<T>;\n        (*tagged_object).object.as_mut().ok_or_else(|| {\n          Error::new(\n            Status::InvalidArg,\n            \"nothing attach to js_external\".to_owned(),\n          )\n        })\n      } else {\n        Err(Error::new(\n          Status::InvalidArg,\n          \"T on get_value_external is not the type of wrapped object\".to_owned(),\n        ))\n      }\n    }\n  }\n\n  /// Create a JavaScript error object from `Error`\n  pub fn create_error(&self, e: Error) -> Result<Object<'_>> {\n    if !e.maybe_raw.is_null() {\n      let mut result = ptr::null_mut();\n      check_status!(\n        unsafe { sys::napi_get_reference_value(self.0, e.maybe_raw, &mut result) },\n        \"Get reference value in create_error failed\"\n      )?;\n      return Ok(Object::from_raw(self.0, result));\n    }\n    let reason = &e.reason;\n    let reason_string = self.create_string(reason.as_str())?;\n    let status = self.create_string(e.status.as_ref())?;\n    let mut result = ptr::null_mut();\n    check_status!(unsafe {\n      sys::napi_create_error(self.0, status.0.value, reason_string.0.value, &mut result)\n    })?;\n    Ok(Object::from_raw(self.0, result))\n  }\n\n  /// Run [Task](./trait.Task.html) in libuv thread pool, return [AsyncWorkPromise](./struct.AsyncWorkPromise.html)\n  pub fn spawn<'env, T: 'env + ScopedTask<'env>>(\n    &self,\n    task: T,\n  ) -> Result<AsyncWorkPromise<T::JsValue>> {\n    async_work::run(self.0, task, None)\n  }\n\n  pub fn run_in_scope<T, F>(&self, executor: F) -> Result<T>\n  where\n    F: FnOnce() -> Result<T>,\n  {\n    let mut handle_scope = ptr::null_mut();\n    check_status!(unsafe { sys::napi_open_handle_scope(self.0, &mut handle_scope) })?;\n\n    let result = executor();\n\n    check_status!(unsafe { sys::napi_close_handle_scope(self.0, handle_scope) })?;\n    result\n  }\n\n  /// Node-API provides an API for executing a string containing JavaScript using the underlying JavaScript engine.\n  /// This function executes a string of JavaScript code and returns its result with the following caveats:\n  /// - Unlike `eval`, this function does not allow the script to access the current lexical scope, and therefore also does not allow to access the [module scope](https://nodejs.org/api/modules.html#the-module-scope), meaning that pseudo-globals such as require will not be available.\n  /// - The script can access the [global scope](https://nodejs.org/api/globals.html). Function and `var` declarations in the script will be added to the [global](https://nodejs.org/api/globals.html#global) object. Variable declarations made using `let` and `const` will be visible globally, but will not be added to the global object.\n  /// - The value of this is [global](https://nodejs.org/api/globals.html) within the script.\n  pub fn run_script<S: AsRef<str>, V: FromNapiValue>(&self, script: S) -> Result<V> {\n    let s = self.create_string(script.as_ref())?;\n    let mut raw_value = ptr::null_mut();\n    check_status!(unsafe { sys::napi_run_script(self.0, s.raw(), &mut raw_value) })?;\n    unsafe { V::from_napi_value(self.0, raw_value) }\n  }\n\n  /// `process.versions.napi`\n  pub fn get_napi_version(&self) -> Result<u32> {\n    let global = self.get_global()?;\n    let process: Object = global.get_named_property(\"process\")?;\n    let versions: Object = process.get_named_property(\"versions\")?;\n    let napi_version: String = versions.get_named_property(\"napi\")?;\n    napi_version\n      .parse()\n      .map_err(|e| Error::new(Status::InvalidArg, format!(\"{e}\")))\n  }\n\n  #[cfg(all(feature = \"napi2\", not(target_family = \"wasm\")))]\n  pub fn get_uv_event_loop(&self) -> Result<*mut sys::uv_loop_s> {\n    let mut uv_loop: *mut sys::uv_loop_s = ptr::null_mut();\n    check_status!(unsafe { sys::napi_get_uv_event_loop(self.0, &mut uv_loop) })?;\n    Ok(uv_loop)\n  }\n\n  #[cfg(feature = \"napi3\")]\n  pub fn add_env_cleanup_hook<T, F>(\n    &self,\n    cleanup_data: T,\n    cleanup_fn: F,\n  ) -> Result<CleanupEnvHook<T>>\n  where\n    T: 'static,\n    F: 'static + FnOnce(T),\n  {\n    let hook = CleanupEnvHookData {\n      data: cleanup_data,\n      hook: Box::new(cleanup_fn),\n    };\n    let hook_ref = Box::leak(Box::new(hook));\n    #[cfg(not(target_family = \"wasm\"))]\n    {\n      check_status!(unsafe {\n        sys::napi_add_env_cleanup_hook(\n          self.0,\n          Some(cleanup_env::<T>),\n          (hook_ref as *mut CleanupEnvHookData<T>).cast(),\n        )\n      })?;\n    }\n\n    #[cfg(all(target_family = \"wasm\", not(feature = \"noop\")))]\n    {\n      check_status!(unsafe {\n        crate::napi_add_env_cleanup_hook(\n          self.0,\n          Some(cleanup_env::<T>),\n          (hook_ref as *mut CleanupEnvHookData<T>).cast(),\n        )\n      })?;\n    }\n    Ok(CleanupEnvHook(hook_ref))\n  }\n\n  #[cfg(feature = \"napi3\")]\n  pub fn remove_env_cleanup_hook<T>(&self, hook: CleanupEnvHook<T>) -> Result<()>\n  where\n    T: 'static,\n  {\n    check_status!(unsafe {\n      sys::napi_remove_env_cleanup_hook(self.0, Some(cleanup_env::<T>), hook.0 as *mut _)\n    })\n  }\n\n  #[cfg(all(feature = \"napi4\", feature = \"compat-mode\"))]\n  #[deprecated(\n    since = \"2.17.0\",\n    note = \"Please use `Function::build_threadsafe_function` instead\"\n  )]\n  #[allow(deprecated)]\n  pub fn create_threadsafe_function<\n    T: 'static + Send,\n    V: 'static + JsValuesTupleIntoVec,\n    R: 'static + Send + FnMut(ThreadsafeCallContext<T>) -> Result<V>,\n  >(\n    &self,\n    func: &JsFunction,\n    _max_queue_size: usize,\n    callback: R,\n  ) -> Result<ThreadsafeFunction<T, Unknown<'_>, V>> {\n    ThreadsafeFunction::<T, Unknown, V>::create(self.0, func.0.value, callback)\n  }\n\n  #[cfg(all(feature = \"tokio_rt\", feature = \"napi4\", feature = \"compat-mode\"))]\n  #[deprecated(since = \"3.0.0\", note = \"Please use `Env::spawn_future` instead\")]\n  pub fn execute_tokio_future<\n    T: 'static + Send,\n    V: 'static + ToNapiValue,\n    F: 'static + Send + Future<Output = Result<T>>,\n    R: 'static + FnOnce(&mut Env, T) -> Result<V>,\n  >(\n    &self,\n    fut: F,\n    resolver: R,\n  ) -> Result<JsObject> {\n    use crate::tokio_runtime;\n\n    let promise = tokio_runtime::execute_tokio_future(self.0, fut, |env, val| unsafe {\n      resolver(&mut Env::from_raw(env), val).and_then(|v| ToNapiValue::to_napi_value(env, v))\n    })?;\n\n    Ok(unsafe { JsObject::from_raw_unchecked(self.0, promise) })\n  }\n\n  #[cfg(all(feature = \"tokio_rt\", feature = \"napi4\"))]\n  /// Spawn a future, return a JavaScript Promise which takes the result of the future\n  pub fn spawn_future<\n    T: 'static + Send + ToNapiValue,\n    F: 'static + Send + Future<Output = Result<T>>,\n  >(\n    &self,\n    fut: F,\n  ) -> Result<PromiseRaw<'_, T>> {\n    use crate::tokio_runtime;\n\n    let promise = tokio_runtime::execute_tokio_future(self.0, fut, |env, val| unsafe {\n      ToNapiValue::to_napi_value(env, val)\n    })?;\n\n    Ok(PromiseRaw::new(self.0, promise))\n  }\n\n  #[cfg(all(feature = \"tokio_rt\", feature = \"napi4\"))]\n  /// Spawn a future with a callback\n  /// So you can access the `Env` and resolved value after the future completed\n  pub fn spawn_future_with_callback<\n    'env,\n    T: 'static + Send,\n    V: ToNapiValue,\n    F: 'static + Send + Future<Output = Result<T>>,\n    R: 'static + FnOnce(&'env Env, T) -> Result<V>,\n  >(\n    &'env self,\n    fut: F,\n    callback: R,\n  ) -> Result<PromiseRaw<'env, V>> {\n    use crate::tokio_runtime;\n\n    let promise = tokio_runtime::execute_tokio_future(self.0, fut, move |env, val| unsafe {\n      let env = Env::from_raw(env);\n      let static_env = core::mem::transmute::<&Env, &'env Env>(&env);\n      let val = callback(static_env, val)?;\n      ToNapiValue::to_napi_value(env.0, val)\n    })?;\n\n    Ok(PromiseRaw::new(self.0, promise))\n  }\n\n  /// Creates a deferred promise, which can be resolved or rejected from a background thread.\n  #[cfg(feature = \"napi4\")]\n  pub fn create_deferred<Data: ToNapiValue, Resolver: FnOnce(Env) -> Result<Data>>(\n    &self,\n  ) -> Result<(JsDeferred<Data, Resolver>, Object<'_>)> {\n    JsDeferred::new(self)\n  }\n\n  /// This API does not observe leap seconds; they are ignored, as ECMAScript aligns with POSIX time specification.\n  ///\n  /// This API allocates a JavaScript Date object.\n  ///\n  /// JavaScript Date objects are described in [Section 20.3](https://tc39.github.io/ecma262/#sec-date-objects) of the ECMAScript Language Specification.\n  #[cfg(feature = \"napi5\")]\n  pub fn create_date(&self, time: f64) -> Result<JsDate<'_>> {\n    let mut js_value = ptr::null_mut();\n    check_status!(unsafe { sys::napi_create_date(self.0, time, &mut js_value) })?;\n    Ok(JsDate::from_raw(self.0, js_value))\n  }\n\n  #[cfg(feature = \"napi6\")]\n  /// This API associates data with the currently running Agent. data can later be retrieved using `Env::get_instance_data()`.\n  ///\n  /// Any existing data associated with the currently running Agent which was set by means of a previous call to `Env::set_instance_data()` will be overwritten.\n  ///\n  /// If a `finalize_cb` was provided by the previous call, it will not be called.\n  pub fn set_instance_data<T, Hint, F>(&self, native: T, hint: Hint, finalize_cb: F) -> Result<()>\n  where\n    T: 'static,\n    Hint: 'static,\n    F: FnOnce(FinalizeContext<T, Hint>),\n  {\n    check_status!(unsafe {\n      sys::napi_set_instance_data(\n        self.0,\n        Box::into_raw(Box::new((TaggedObject::new(native), finalize_cb))).cast(),\n        Some(\n          set_instance_finalize_callback::<T, Hint, F>\n            as unsafe extern \"C\" fn(\n              env: sys::napi_env,\n              finalize_data: *mut c_void,\n              finalize_hint: *mut c_void,\n            ),\n        ),\n        Box::into_raw(Box::new(hint)).cast(),\n      )\n    })\n  }\n\n  /// This API retrieves data that was previously associated with the currently running Agent via `Env::set_instance_data()`.\n  ///\n  /// If no data is set, the call will succeed and data will be set to NULL.\n  #[cfg(feature = \"napi6\")]\n  pub fn get_instance_data<T>(&self) -> Result<Option<&'static mut T>>\n  where\n    T: 'static,\n  {\n    let mut unknown_tagged_object: *mut c_void = ptr::null_mut();\n    unsafe {\n      check_status!(sys::napi_get_instance_data(\n        self.0,\n        &mut unknown_tagged_object\n      ))?;\n      let type_id = unknown_tagged_object as *const TypeId;\n      if unknown_tagged_object.is_null() {\n        return Ok(None);\n      }\n      if *type_id == TypeId::of::<T>() {\n        let tagged_object = unknown_tagged_object as *mut TaggedObject<T>;\n        (*tagged_object).object.as_mut().map(Some).ok_or_else(|| {\n          Error::new(\n            Status::InvalidArg,\n            \"Invalid argument, nothing attach to js_object\".to_owned(),\n          )\n        })\n      } else {\n        Err(Error::new(\n          Status::InvalidArg,\n          format!(\n            \"Invalid argument, {} on unwrap is not the type of wrapped object\",\n            type_name::<T>()\n          ),\n        ))\n      }\n    }\n  }\n\n  /// Registers hook, which is a function of type `FnOnce(Arg)`, as a function to be run with the `arg` parameter once the current Node.js environment exits.\n  ///\n  /// Unlike [`add_env_cleanup_hook`](https://docs.rs/napi/latest/napi/struct.Env.html#method.add_env_cleanup_hook), the hook is allowed to be asynchronous.\n  ///\n  /// Otherwise, behavior generally matches that of [`add_env_cleanup_hook`](https://docs.rs/napi/latest/napi/struct.Env.html#method.add_env_cleanup_hook).\n  #[cfg(feature = \"napi8\")]\n  pub fn add_removable_async_cleanup_hook<Arg, F>(\n    &self,\n    arg: Arg,\n    cleanup_fn: F,\n  ) -> Result<AsyncCleanupHook>\n  where\n    F: FnOnce(Arg),\n    Arg: 'static,\n  {\n    let mut handle = ptr::null_mut();\n    check_status!(unsafe {\n      sys::napi_add_async_cleanup_hook(\n        self.0,\n        Some(\n          async_finalize::<Arg, F>\n            as unsafe extern \"C\" fn(handle: sys::napi_async_cleanup_hook_handle, data: *mut c_void),\n        ),\n        Box::leak(Box::new((arg, cleanup_fn))) as *mut (Arg, F) as *mut c_void,\n        &mut handle,\n      )\n    })?;\n    Ok(AsyncCleanupHook(handle))\n  }\n\n  /// This API is very similar to [`add_removable_async_cleanup_hook`](https://docs.rs/napi/latest/napi/struct.Env.html#method.add_removable_async_cleanup_hook)\n  ///\n  /// Use this one if you don't want remove the cleanup hook anymore.\n  #[cfg(feature = \"napi8\")]\n  pub fn add_async_cleanup_hook<Arg, F>(&self, arg: Arg, cleanup_fn: F) -> Result<()>\n  where\n    F: FnOnce(Arg),\n    Arg: 'static,\n  {\n    check_status!(unsafe {\n      sys::napi_add_async_cleanup_hook(\n        self.0,\n        Some(\n          async_finalize::<Arg, F>\n            as unsafe extern \"C\" fn(handle: sys::napi_async_cleanup_hook_handle, data: *mut c_void),\n        ),\n        Box::leak(Box::new((arg, cleanup_fn))) as *mut (Arg, F) as *mut c_void,\n        ptr::null_mut(),\n      )\n    })\n  }\n\n  #[cfg(feature = \"napi9\")]\n  pub fn symbol_for(&self, description: &str) -> Result<JsSymbol<'_>> {\n    let mut result = ptr::null_mut();\n    check_status!(unsafe {\n      sys::node_api_symbol_for(\n        self.0,\n        description.as_ptr().cast(),\n        description.len() as isize,\n        &mut result,\n      )\n    })?;\n\n    Ok(JsSymbol(\n      Value {\n        env: self.0,\n        value: result,\n        value_type: ValueType::Symbol,\n      },\n      std::marker::PhantomData,\n    ))\n  }\n\n  #[cfg(feature = \"napi9\")]\n  /// This API retrieves the file path of the currently running JS module as a URL. For a file on\n  /// the local file system it will start with `file://`.\n  ///\n  /// # Errors\n  ///\n  /// The retrieved string may be empty if the add-on loading process fails to establish the\n  /// add-on's file name.\n  pub fn get_module_file_name(&self) -> Result<String> {\n    let mut char_ptr = ptr::null();\n    check_status!(\n      unsafe { sys::node_api_get_module_file_name(self.0, &mut char_ptr) },\n      \"call node_api_get_module_file_name failed\"\n    )?;\n    // SAFETY: This is safe because `char_ptr` is guaranteed to not be `null`, and point to\n    // null-terminated string data.\n    let module_filename = unsafe { std::ffi::CStr::from_ptr(char_ptr) };\n\n    Ok(module_filename.to_string_lossy().into_owned())\n  }\n\n  /// ### Serialize `Rust Struct` into `JavaScript Value`\n  ///\n  /// ```\n  /// #[derive(Serialize, Debug, Deserialize)]\n  /// struct AnObject {\n  ///     a: u32,\n  ///     b: Vec<f64>,\n  ///     c: String,\n  /// }\n  ///\n  /// #[js_function]\n  /// fn serialize(ctx: CallContext) -> Result<JsUnknown> {\n  ///     let value = AnyObject { a: 1, b: vec![0.1, 2.22], c: \"hello\" };\n  ///     ctx.env.to_js_value(&value)\n  /// }\n  /// ```\n  #[cfg(feature = \"serde-json\")]\n  #[allow(clippy::wrong_self_convention)]\n  pub fn to_js_value<'env, T>(&self, node: &T) -> Result<Unknown<'env>>\n  where\n    T: Serialize,\n  {\n    let s = Ser(self);\n    node\n      .serialize(s)\n      .map(|v| Unknown(v, std::marker::PhantomData))\n  }\n\n  /// ### Deserialize data from `JsValue`\n  /// ```\n  /// #[derive(Serialize, Debug, Deserialize)]\n  /// struct AnObject {\n  ///     a: u32,\n  ///     b: Vec<f64>,\n  ///     c: String,\n  /// }\n  ///\n  /// #[js_function(1)]\n  /// fn deserialize_from_js(ctx: CallContext) -> Result<JsUndefined> {\n  ///     let arg0 = ctx.get::<JsUnknown>(0)?;\n  ///     let de_serialized: AnObject = ctx.env.from_js_value(arg0)?;\n  ///     ...\n  /// }\n  ///\n  #[cfg(feature = \"serde-json\")]\n  pub fn from_js_value<'v, T, V>(&self, value: V) -> Result<T>\n  where\n    T: DeserializeOwned,\n    V: JsValue<'v>,\n  {\n    let value = Value {\n      env: self.0,\n      value: value.raw(),\n      value_type: ValueType::Unknown,\n    };\n    let mut de = De(&value);\n    T::deserialize(&mut de)\n  }\n\n  /// This API represents the invocation of the Strict Equality algorithm as defined in [Section 7.2.14](https://tc39.es/ecma262/#sec-strict-equality-comparison) of the ECMAScript Language Specification.\n  pub fn strict_equals<'env, A: JsValue<'env>, B: JsValue<'env>>(\n    &self,\n    a: A,\n    b: B,\n  ) -> Result<bool> {\n    let mut result = false;\n    check_status!(unsafe { sys::napi_strict_equals(self.0, a.raw(), b.raw(), &mut result) })?;\n    Ok(result)\n  }\n\n  pub fn get_node_version(&self) -> Result<NodeVersion> {\n    let mut result = ptr::null();\n    check_status!(unsafe { sys::napi_get_node_version(self.0, &mut result) })?;\n    let version = unsafe { *result };\n    version.try_into()\n  }\n\n  /// get raw env ptr\n  pub fn raw(&self) -> sys::napi_env {\n    self.0\n  }\n}\n\n/// This function could be used for `BufferSlice::from_external` and want do noting when Buffer finalized.\npub fn noop_finalize<Hint>(_env: Env, _hint: Hint) {}\n\n#[cfg(feature = \"compat-mode\")]\nunsafe extern \"C\" fn drop_buffer(\n  _env: sys::napi_env,\n  finalize_data: *mut c_void,\n  hint: *mut c_void,\n) {\n  let length_ptr = hint as *mut (usize, usize);\n  let (length, cap) = unsafe { *Box::from_raw(length_ptr) };\n  if length == 0 || finalize_data.is_null() {\n    return;\n  }\n  mem::drop(unsafe { Vec::from_raw_parts(finalize_data as *mut u8, length, cap) });\n}\n\n#[cfg_attr(target_family = \"wasm\", allow(unused_variables))]\npub(crate) unsafe extern \"C\" fn raw_finalize<T>(\n  env: sys::napi_env,\n  finalize_data: *mut c_void,\n  finalize_hint: *mut c_void,\n) {\n  let tagged_object = finalize_data as *mut T;\n  drop(unsafe { Box::from_raw(tagged_object) });\n  #[cfg(not(target_family = \"wasm\"))]\n  if !finalize_hint.is_null() {\n    let size_hint = unsafe { *Box::from_raw(finalize_hint as *mut i64) };\n    if size_hint != 0 {\n      let mut adjusted = 0i64;\n      let status = unsafe { sys::napi_adjust_external_memory(env, -size_hint, &mut adjusted) };\n      debug_assert!(\n        status == sys::Status::napi_ok,\n        \"Calling napi_adjust_external_memory failed\"\n      );\n    }\n  };\n}\n\n#[cfg(feature = \"napi6\")]\nunsafe extern \"C\" fn set_instance_finalize_callback<T, Hint, F>(\n  raw_env: sys::napi_env,\n  finalize_data: *mut c_void,\n  finalize_hint: *mut c_void,\n) where\n  T: 'static,\n  Hint: 'static,\n  F: FnOnce(FinalizeContext<T, Hint>),\n{\n  let (value, callback) = unsafe { *Box::from_raw(finalize_data as *mut (TaggedObject<T>, F)) };\n  let hint = unsafe { *Box::from_raw(finalize_hint as *mut Hint) };\n  let env = Env::from_raw(raw_env);\n  callback(FinalizeContext {\n    value: value.object.unwrap(),\n    hint,\n    env,\n  });\n}\n\n#[cfg(feature = \"napi3\")]\nunsafe extern \"C\" fn cleanup_env<T: 'static>(hook_data: *mut c_void) {\n  let cleanup_env_hook = unsafe { Box::from_raw(hook_data as *mut CleanupEnvHookData<T>) };\n  (cleanup_env_hook.hook)(cleanup_env_hook.data);\n}\n\npub(crate) unsafe extern \"C\" fn raw_finalize_with_custom_callback<Hint, Finalize>(\n  env: sys::napi_env,\n  _finalize_data: *mut c_void,\n  finalize_hint: *mut c_void,\n) where\n  Finalize: FnOnce(Env, Hint),\n{\n  let (hint, callback) = unsafe { *Box::from_raw(finalize_hint as *mut (Hint, Finalize)) };\n  callback(Env::from_raw(env), hint);\n}\n\n#[cfg(feature = \"napi8\")]\nunsafe extern \"C\" fn async_finalize<Arg, F>(\n  handle: sys::napi_async_cleanup_hook_handle,\n  data: *mut c_void,\n) where\n  Arg: 'static,\n  F: FnOnce(Arg),\n{\n  let (arg, callback) = unsafe { *Box::from_raw(data as *mut (Arg, F)) };\n  callback(arg);\n  if !handle.is_null() {\n    let status = unsafe { sys::napi_remove_async_cleanup_hook(handle) };\n    assert!(\n      status == sys::Status::napi_ok,\n      \"Remove async cleanup hook failed after async cleanup callback\"\n    );\n  }\n}\n\n#[cfg(feature = \"napi5\")]\npub(crate) unsafe extern \"C\" fn trampoline<\n  Return: ToNapiValue,\n  F: Fn(FunctionCallContext) -> Result<Return>,\n>(\n  raw_env: sys::napi_env,\n  cb_info: sys::napi_callback_info,\n) -> sys::napi_value {\n  // Fast path for 4 arguments or less.\n  let mut argc = 4;\n  let mut raw_args = Vec::with_capacity(4);\n  let mut raw_this = ptr::null_mut();\n  let mut closure_data_ptr = ptr::null_mut();\n\n  check_status!(\n    unsafe {\n      sys::napi_get_cb_info(\n        raw_env,\n        cb_info,\n        &mut argc,\n        raw_args.as_mut_ptr(),\n        &mut raw_this,\n        &mut closure_data_ptr,\n      )\n    },\n    \"napi_get_cb_info failed\"\n  )\n  .and_then(|_| {\n    // Arguments length greater than 4, resize the vector.\n    if argc > 4 {\n      raw_args = vec![ptr::null_mut(); argc];\n      check_status!(\n        unsafe {\n          sys::napi_get_cb_info(\n            raw_env,\n            cb_info,\n            &mut argc,\n            raw_args.as_mut_ptr(),\n            &mut raw_this,\n            &mut closure_data_ptr,\n          )\n        },\n        \"napi_get_cb_info failed\"\n      )?;\n    } else {\n      unsafe { raw_args.set_len(argc) };\n    }\n    Ok((raw_this, raw_args, closure_data_ptr, argc))\n  })\n  .and_then(|(raw_this, raw_args, closure_data_ptr, _argc)| {\n    let closure: &F = Box::leak(unsafe { Box::from_raw(closure_data_ptr.cast()) });\n    let mut env = Env::from_raw(raw_env);\n    closure(FunctionCallContext {\n      env: &mut env,\n      this: raw_this,\n      args: raw_args.as_slice(),\n    })\n  })\n  .and_then(|ret| unsafe { <Return as ToNapiValue>::to_napi_value(raw_env, ret) })\n  .unwrap_or_else(|e| {\n    unsafe { JsError::from(e).throw_into(raw_env) };\n    ptr::null_mut()\n  })\n}\n\n#[cfg(feature = \"napi5\")]\npub(crate) unsafe extern \"C\" fn trampoline_setter<\n  V: FromNapiValue,\n  F: Fn(Env, crate::bindgen_runtime::This, V) -> Result<()>,\n>(\n  raw_env: sys::napi_env,\n  cb_info: sys::napi_callback_info,\n) -> sys::napi_value {\n  use crate::bindgen_runtime::This;\n\n  let (raw_args, raw_this, closure_data_ptr) = {\n    let mut argc = 1;\n    let mut raw_args = vec![ptr::null_mut(); 1];\n    let mut raw_this = ptr::null_mut();\n    let mut data_ptr = ptr::null_mut();\n\n    let status = unsafe {\n      sys::napi_get_cb_info(\n        raw_env,\n        cb_info,\n        &mut argc,\n        raw_args.as_mut_ptr(),\n        &mut raw_this,\n        &mut data_ptr,\n      )\n    };\n    unsafe { raw_args.set_len(argc) };\n    debug_assert!(\n      Status::from(status) == Status::Ok,\n      \"napi_get_cb_info failed\"\n    );\n\n    let closure_data_ptr = unsafe { *(data_ptr as *mut PropertyClosures) }.setter_closure;\n    (raw_args, raw_this, closure_data_ptr)\n  };\n\n  let closure: &F = Box::leak(unsafe { Box::from_raw(closure_data_ptr.cast()) });\n  let env = Env::from_raw(raw_env);\n  raw_args\n    .first()\n    .ok_or_else(|| Error::new(Status::InvalidArg, \"Missing argument in property setter\"))\n    .and_then(|value| unsafe { V::from_napi_value(raw_env, *value) })\n    .and_then(|value| {\n      closure(\n        env,\n        unsafe { This::from_napi_value(raw_env, raw_this)? },\n        value,\n      )\n    })\n    .map(|_| std::ptr::null_mut())\n    .unwrap_or_else(|e| {\n      unsafe { JsError::from(e).throw_into(raw_env) };\n      ptr::null_mut()\n    })\n}\n\n#[cfg(feature = \"napi5\")]\npub(crate) unsafe extern \"C\" fn trampoline_getter<\n  R: ToNapiValue,\n  F: Fn(Env, crate::bindgen_runtime::This) -> Result<R>,\n>(\n  raw_env: sys::napi_env,\n  cb_info: sys::napi_callback_info,\n) -> sys::napi_value {\n  let (raw_this, closure_data_ptr) = {\n    let mut raw_this = ptr::null_mut();\n    let mut data_ptr = ptr::null_mut();\n\n    let status = unsafe {\n      sys::napi_get_cb_info(\n        raw_env,\n        cb_info,\n        &mut 0,\n        ptr::null_mut(),\n        &mut raw_this,\n        &mut data_ptr,\n      )\n    };\n    debug_assert!(\n      Status::from(status) == Status::Ok,\n      \"napi_get_cb_info failed\"\n    );\n\n    let closure_data_ptr = unsafe { *(data_ptr as *mut PropertyClosures) }.getter_closure;\n    (raw_this, closure_data_ptr)\n  };\n\n  let closure: &F = Box::leak(unsafe { Box::from_raw(closure_data_ptr.cast()) });\n  let env = Env::from_raw(raw_env);\n  unsafe { crate::bindgen_runtime::This::from_napi_value(raw_env, raw_this) }\n    .and_then(|this| closure(env, this))\n    .and_then(|ret: R| unsafe { <R as ToNapiValue>::to_napi_value(env.0, ret) })\n    .unwrap_or_else(|e| {\n      unsafe { JsError::from(e).throw_into(raw_env) };\n      ptr::null_mut()\n    })\n}\n\n#[cfg(feature = \"napi5\")]\npub(crate) unsafe extern \"C\" fn finalize_box_trampoline<F>(\n  _raw_env: sys::napi_env,\n  closure_data_ptr: *mut c_void,\n  _finalize_hint: *mut c_void,\n) {\n  drop(unsafe { Box::<F>::from_raw(closure_data_ptr.cast()) })\n}\n"
  },
  {
    "path": "crates/napi/src/error.rs",
    "content": "use std::convert::{From, TryFrom};\nuse std::error;\nuse std::ffi::CStr;\nuse std::fmt;\n#[cfg(feature = \"serde-json\")]\nuse std::fmt::Display;\nuse std::os::raw::c_void;\nuse std::ptr;\n\n#[cfg(feature = \"serde-json\")]\nuse serde::{de, ser};\n#[cfg(feature = \"serde-json\")]\nuse serde_json::Error as SerdeJSONError;\n\n#[cfg(target_family = \"wasm\")]\nuse crate::bindgen_runtime::JsObjectValue;\nuse crate::ValueType;\nuse crate::{bindgen_runtime::ToNapiValue, check_status, sys, Env, JsValue, Status, Unknown};\n\npub type Result<T, S = Status> = std::result::Result<T, Error<S>>;\n\n/// Represent `JsError`.\n/// Return this Error in `js_function`, **napi-rs** will throw it as `JsError` for you.\n/// If you want throw it as `TypeError` or `RangeError`, you can use `JsTypeError/JsRangeError::from(Error).throw_into(env)`\npub struct Error<S: AsRef<str> = Status> {\n  pub status: S,\n  pub reason: String,\n  pub cause: Option<Box<Error>>,\n  // Convert raw `JsError` into Error\n  pub(crate) maybe_raw: sys::napi_ref,\n  pub(crate) maybe_env: sys::napi_env,\n}\n\n#[cfg(not(feature = \"noop\"))]\nimpl<S: AsRef<str>> Drop for Error<S> {\n  fn drop(&mut self) {\n    // @TODO: deal with Error created with reference and leave it to drop in `async fn`\n    if !self.maybe_raw.is_null() {\n      let mut ref_count = 0;\n      let status =\n        unsafe { sys::napi_reference_unref(self.maybe_env, self.maybe_raw, &mut ref_count) };\n      if status != sys::Status::napi_ok {\n        eprintln!(\"unref error reference failed: {}\", Status::from(status));\n      }\n      if ref_count == 0 {\n        let status = unsafe { sys::napi_delete_reference(self.maybe_env, self.maybe_raw) };\n        if status != sys::Status::napi_ok {\n          eprintln!(\"delete error reference failed: {}\", Status::from(status));\n        }\n      }\n    }\n  }\n}\n\nimpl<S: AsRef<str>> Error<S> {\n  pub fn set_cause(&mut self, cause: Error) {\n    self.cause = Some(Box::new(cause));\n  }\n}\n\nimpl<S: AsRef<str>> std::fmt::Debug for Error<S> {\n  fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n    write!(\n      f,\n      \"Error {{ status: {:?}, reason: {:?} }}\",\n      self.status.as_ref(),\n      self.reason\n    )\n  }\n}\n\nimpl<S: AsRef<str>> ToNapiValue for Error<S> {\n  unsafe fn to_napi_value(env: sys::napi_env, mut val: Self) -> Result<sys::napi_value> {\n    if val.maybe_raw.is_null() {\n      let err = unsafe { JsError::from(val).into_value(env) };\n      Ok(err)\n    } else {\n      let mut value = std::ptr::null_mut();\n      check_status!(\n        unsafe { sys::napi_get_reference_value(env, val.maybe_raw, &mut value) },\n        \"Get error reference in `to_napi_value` failed\"\n      )?;\n      let mut ref_count = 0;\n      check_status!(\n        unsafe { sys::napi_reference_unref(env, val.maybe_raw, &mut ref_count) },\n        \"Unref error reference in `to_napi_value` failed\"\n      )?;\n      if ref_count == 0 {\n        check_status!(\n          unsafe { sys::napi_delete_reference(env, val.maybe_raw) },\n          \"Delete error reference in `to_napi_value` failed\"\n        )?;\n      }\n      // already unref, skip the logic in `Drop`\n      val.maybe_raw = ptr::null_mut();\n      val.maybe_env = ptr::null_mut();\n      Ok(value)\n    }\n  }\n}\n\nunsafe impl<S> Send for Error<S> where S: Send + AsRef<str> {}\nunsafe impl<S> Sync for Error<S> where S: Sync + AsRef<str> {}\n\nimpl<S: AsRef<str> + std::fmt::Debug> error::Error for Error<S> {}\n\nimpl<S: AsRef<str>> From<std::convert::Infallible> for Error<S> {\n  fn from(_: std::convert::Infallible) -> Self {\n    unreachable!()\n  }\n}\n\n#[cfg(feature = \"serde-json\")]\nimpl ser::Error for Error {\n  fn custom<T: Display>(msg: T) -> Self {\n    Error::new(Status::InvalidArg, msg.to_string())\n  }\n}\n\n#[cfg(feature = \"serde-json\")]\nimpl de::Error for Error {\n  fn custom<T: Display>(msg: T) -> Self {\n    Error::new(Status::InvalidArg, msg.to_string())\n  }\n}\n\n#[cfg(feature = \"serde-json\")]\nimpl From<SerdeJSONError> for Error {\n  fn from(value: SerdeJSONError) -> Self {\n    Error::new(Status::InvalidArg, format!(\"{value}\"))\n  }\n}\n\n#[cfg(not(target_family = \"wasm\"))]\nimpl From<Unknown<'_>> for Error {\n  fn from(value: Unknown) -> Self {\n    let mut result = std::ptr::null_mut();\n    let status = unsafe { sys::napi_create_reference(value.0.env, value.0.value, 1, &mut result) };\n    if status != sys::Status::napi_ok {\n      return Error::new(\n        Status::from(status),\n        \"Create Error reference failed\".to_owned(),\n      );\n    }\n    let maybe_env = value.0.env;\n    let maybe_error_message = value\n      .coerce_to_string()\n      .and_then(|a| a.into_utf8().and_then(|a| a.into_owned()));\n    let maybe_cause = extract_error_cause(value).unwrap_or(None);\n\n    if let Ok(error_message) = maybe_error_message {\n      return Self {\n        status: Status::GenericFailure,\n        reason: error_message,\n        cause: maybe_cause,\n        maybe_raw: result,\n        maybe_env,\n      };\n    }\n\n    Self {\n      status: Status::GenericFailure,\n      reason: \"\".to_string(),\n      cause: maybe_cause,\n      maybe_raw: result,\n      maybe_env,\n    }\n  }\n}\n\n#[cfg(target_family = \"wasm\")]\nimpl From<Unknown<'_>> for Error {\n  fn from(value: Unknown) -> Self {\n    let value_type = value.get_type();\n\n    let maybe_error_message;\n\n    if let Ok(vt) = value_type {\n      if vt == ValueType::Object {\n        maybe_error_message = value\n          .coerce_to_object()\n          .and_then(|obj| obj.get_named_property::<Unknown>(\"message\"))\n          .and_then(|message| {\n            message\n              .coerce_to_string()\n              .and_then(|message| message.into_utf8().and_then(|message| message.into_owned()))\n          });\n      } else {\n        maybe_error_message = value\n          .coerce_to_string()\n          .and_then(|a| a.into_utf8().and_then(|a| a.into_owned()));\n      }\n    } else {\n      maybe_error_message = value\n        .coerce_to_string()\n        .and_then(|a| a.into_utf8().and_then(|a| a.into_owned()));\n    };\n\n    let maybe_cause = extract_error_cause(value).unwrap_or(None);\n\n    if let Ok(error_message) = maybe_error_message {\n      return Self {\n        status: Status::GenericFailure,\n        reason: error_message,\n        cause: maybe_cause,\n        maybe_raw: ptr::null_mut(),\n        maybe_env: ptr::null_mut(),\n      };\n    }\n\n    Self {\n      status: Status::GenericFailure,\n      reason: \"\".to_string(),\n      cause: maybe_cause,\n      maybe_raw: ptr::null_mut(),\n      maybe_env: ptr::null_mut(),\n    }\n  }\n}\n\n#[cfg(feature = \"anyhow\")]\nimpl From<anyhow::Error> for Error {\n  fn from(value: anyhow::Error) -> Self {\n    Error::new(Status::GenericFailure, format!(\"{:?}\", value))\n  }\n}\n\nimpl<S: AsRef<str> + std::fmt::Debug> fmt::Display for Error<S> {\n  fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n    if !self.reason.is_empty() {\n      write!(f, \"{:?}, {}\", self.status, self.reason)\n    } else {\n      write!(f, \"{:?}\", self.status)\n    }\n  }\n}\n\nimpl<S: AsRef<str>> Error<S> {\n  pub fn new<R: ToString>(status: S, reason: R) -> Self {\n    Error {\n      status,\n      reason: reason.to_string(),\n      cause: None,\n      maybe_raw: ptr::null_mut(),\n      maybe_env: ptr::null_mut(),\n    }\n  }\n\n  pub fn from_status(status: S) -> Self {\n    Error {\n      status,\n      reason: \"\".to_owned(),\n      cause: None,\n      maybe_raw: ptr::null_mut(),\n      maybe_env: ptr::null_mut(),\n    }\n  }\n}\n\nimpl<S: AsRef<str> + Clone> Error<S> {\n  pub fn try_clone(&self) -> Result<Self> {\n    if !self.maybe_raw.is_null() {\n      check_status!(\n        unsafe { sys::napi_reference_ref(self.maybe_env, self.maybe_raw, &mut 0) },\n        \"Failed to increase error reference count\"\n      )?;\n    }\n    Ok(Self {\n      status: self.status.clone(),\n      reason: self.reason.to_string(),\n      cause: None,\n      maybe_raw: self.maybe_raw,\n      maybe_env: self.maybe_env,\n    })\n  }\n}\n\nimpl Error {\n  pub fn from_reason<T: Into<String>>(reason: T) -> Self {\n    Error {\n      status: Status::GenericFailure,\n      reason: reason.into(),\n      cause: None,\n      maybe_raw: ptr::null_mut(),\n      maybe_env: ptr::null_mut(),\n    }\n  }\n}\n\nimpl From<std::ffi::NulError> for Error {\n  fn from(error: std::ffi::NulError) -> Self {\n    Error {\n      status: Status::GenericFailure,\n      reason: format!(\"{error}\"),\n      cause: None,\n      maybe_raw: ptr::null_mut(),\n      maybe_env: ptr::null_mut(),\n    }\n  }\n}\n\nimpl From<std::io::Error> for Error {\n  fn from(error: std::io::Error) -> Self {\n    Error {\n      status: Status::GenericFailure,\n      reason: format!(\"{error}\"),\n      cause: None,\n      maybe_raw: ptr::null_mut(),\n      maybe_env: ptr::null_mut(),\n    }\n  }\n}\n\n#[derive(Clone, Debug)]\npub struct ExtendedErrorInfo {\n  pub message: String,\n  pub engine_reserved: *mut c_void,\n  pub engine_error_code: u32,\n  pub error_code: Status,\n}\n\nimpl TryFrom<sys::napi_extended_error_info> for ExtendedErrorInfo {\n  type Error = Error;\n\n  fn try_from(value: sys::napi_extended_error_info) -> Result<Self> {\n    Ok(Self {\n      message: unsafe {\n        CStr::from_ptr(value.error_message.cast())\n          .to_str()\n          .map_err(|e| Error::new(Status::GenericFailure, format!(\"{e}\")))?\n          .to_owned()\n      },\n      engine_error_code: value.engine_error_code,\n      engine_reserved: value.engine_reserved,\n      error_code: Status::from(value.error_code),\n    })\n  }\n}\n\npub struct JsError<S: AsRef<str> = Status>(Error<S>);\n\n#[cfg(feature = \"anyhow\")]\nimpl From<anyhow::Error> for JsError {\n  fn from(value: anyhow::Error) -> Self {\n    JsError(Error::new(Status::GenericFailure, value.to_string()))\n  }\n}\n\npub struct JsTypeError<S: AsRef<str> = Status>(Error<S>);\n\npub struct JsRangeError<S: AsRef<str> = Status>(Error<S>);\n\n#[cfg(feature = \"napi9\")]\npub struct JsSyntaxError<S: AsRef<str> = Status>(Error<S>);\n\npub(crate) fn get_error_message_and_stack_trace(\n  env: sys::napi_env,\n  err: sys::napi_value,\n) -> Result<String> {\n  use crate::bindgen_runtime::FromNapiValue;\n\n  let mut error_string = ptr::null_mut();\n  check_status!(\n    unsafe { sys::napi_coerce_to_string(env, err, &mut error_string) },\n    \"Get error message failed\"\n  )?;\n  let mut result = unsafe { String::from_napi_value(env, error_string) }?;\n\n  let mut stack_trace = ptr::null_mut();\n  check_status!(\n    unsafe { sys::napi_get_named_property(env, err, c\"stack\".as_ptr().cast(), &mut stack_trace) },\n    \"Get stack trace failed\"\n  )?;\n  let mut stack_type = -1;\n  check_status!(\n    unsafe { sys::napi_typeof(env, stack_trace, &mut stack_type) },\n    \"Get stack trace type failed\"\n  )?;\n  if stack_type == sys::ValueType::napi_string {\n    let stack_trace = unsafe { String::from_napi_value(env, stack_trace) }?;\n    result.push('\\n');\n    result.push_str(&stack_trace);\n  }\n\n  Ok(result)\n}\n\nmacro_rules! impl_object_methods {\n  ($js_value:ident, $kind:expr) => {\n    impl<S: AsRef<str>> $js_value<S> {\n      /// # Safety\n      ///\n      /// This function is safety if env is not null ptr.\n      pub unsafe fn into_value(mut self, env: sys::napi_env) -> sys::napi_value {\n        if !self.0.maybe_raw.is_null() {\n          let mut err = ptr::null_mut();\n          let get_err_status =\n            unsafe { sys::napi_get_reference_value(env, self.0.maybe_raw, &mut err) };\n          debug_assert!(\n            get_err_status == sys::Status::napi_ok,\n            \"Get Error from Reference failed\"\n          );\n          let mut ref_count = 0;\n          let unref_status =\n            unsafe { sys::napi_reference_unref(env, self.0.maybe_raw, &mut ref_count) };\n          debug_assert!(\n            unref_status == sys::Status::napi_ok,\n            \"Unref Error Reference failed\"\n          );\n          if ref_count == 0 {\n            let delete_err_status = unsafe { sys::napi_delete_reference(env, self.0.maybe_raw) };\n            debug_assert!(\n              delete_err_status == sys::Status::napi_ok,\n              \"Delete Error Reference failed\"\n            );\n          }\n          // already unref, skip the logic in `Drop`\n          self.0.maybe_raw = ptr::null_mut();\n          self.0.maybe_env = ptr::null_mut();\n          let mut is_error = false;\n          let is_error_status = unsafe { sys::napi_is_error(env, err, &mut is_error) };\n          debug_assert!(\n            is_error_status == sys::Status::napi_ok,\n            \"Check Error failed\"\n          );\n          // make sure ref_value is a valid error at first and avoid throw error failed.\n          if is_error {\n            return err;\n          }\n        }\n\n        let error_status = self.0.status.as_ref();\n        let status_len = error_status.len();\n        let reason_len = self.0.reason.len();\n        let mut error_code = ptr::null_mut();\n        let mut reason_string = ptr::null_mut();\n        let mut js_error = ptr::null_mut();\n        let create_code_status = unsafe {\n          sys::napi_create_string_utf8(\n            env,\n            error_status.as_ptr().cast(),\n            status_len as isize,\n            &mut error_code,\n          )\n        };\n        debug_assert!(create_code_status == sys::Status::napi_ok);\n        let create_reason_status = unsafe {\n          sys::napi_create_string_utf8(\n            env,\n            self.0.reason.as_ptr().cast(),\n            reason_len as isize,\n            &mut reason_string,\n          )\n        };\n        debug_assert!(create_reason_status == sys::Status::napi_ok);\n        let create_error_status = unsafe { $kind(env, error_code, reason_string, &mut js_error) };\n        debug_assert!(create_error_status == sys::Status::napi_ok);\n        if let Some(cause_error) = self.0.cause.take() {\n          let cause = ToNapiValue::to_napi_value(env, *cause_error)\n            .expect(\"Convert cause Error to napi_value should never error\");\n          let set_cause_status =\n            unsafe { sys::napi_set_named_property(env, js_error, c\"cause\".as_ptr().cast(), cause) };\n          debug_assert!(\n            set_cause_status == sys::Status::napi_ok,\n            \"Set cause property failed\"\n          );\n        }\n        js_error\n      }\n\n      pub fn into_unknown<'env>(self, env: Env) -> Unknown<'env> {\n        let value = unsafe { self.into_value(env.raw()) };\n        unsafe { Unknown::from_raw_unchecked(env.raw(), value) }\n      }\n\n      /// # Safety\n      ///\n      /// This function is safety if env is not null ptr.\n      pub unsafe fn throw_into(self, env: sys::napi_env) {\n        #[cfg(debug_assertions)]\n        let reason = self.0.reason.clone();\n        let status = self.0.status.as_ref().to_string();\n        // just sure current error is pending_exception\n        if status == Status::PendingException.as_ref() {\n          return;\n        }\n        // make sure current env is not exception_pending status\n        let mut is_pending_exception = false;\n        assert_eq!(\n          unsafe { $crate::sys::napi_is_exception_pending(env, &mut is_pending_exception) },\n          $crate::sys::Status::napi_ok,\n          \"Check exception status failed\"\n        );\n        let js_error = match is_pending_exception {\n          true => {\n            let mut error_result = std::ptr::null_mut();\n            assert_eq!(\n              unsafe { $crate::sys::napi_get_and_clear_last_exception(env, &mut error_result) },\n              $crate::sys::Status::napi_ok,\n              \"Get and clear last exception failed\"\n            );\n            error_result\n          }\n          false => unsafe { self.into_value(env) },\n        };\n        #[cfg(debug_assertions)]\n        let throw_status = unsafe { sys::napi_throw(env, js_error) };\n        unsafe { sys::napi_throw(env, js_error) };\n        #[cfg(debug_assertions)]\n        assert!(\n          throw_status == sys::Status::napi_ok,\n          \"Throw error failed, status: [{}], raw message: \\\"{}\\\", raw status: [{}]\",\n          Status::from(throw_status),\n          reason,\n          status\n        );\n      }\n    }\n\n    impl<S: AsRef<str>> From<Error<S>> for $js_value<S> {\n      fn from(err: Error<S>) -> Self {\n        Self(err)\n      }\n    }\n\n    impl crate::bindgen_prelude::ToNapiValue for $js_value {\n      unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n        unsafe { ToNapiValue::to_napi_value(env, val.0) }\n      }\n    }\n  };\n}\n\nimpl_object_methods!(JsError, sys::napi_create_error);\nimpl_object_methods!(JsTypeError, sys::napi_create_type_error);\nimpl_object_methods!(JsRangeError, sys::napi_create_range_error);\n#[cfg(feature = \"napi9\")]\nimpl_object_methods!(JsSyntaxError, sys::node_api_create_syntax_error);\n\n#[doc(hidden)]\n#[macro_export]\nmacro_rules! error {\n  ($status:expr, $($msg:tt)*) => {\n    $crate::Error::new($status, format!($($msg)*))\n  };\n}\n\n#[doc(hidden)]\n#[macro_export]\nmacro_rules! check_status {\n  ($code:expr) => {{\n    let c = $code;\n    match c {\n      $crate::sys::Status::napi_ok => Ok(()),\n      _ => Err($crate::Error::new($crate::Status::from(c), \"\".to_owned())),\n    }\n  }};\n\n  ($code:expr, $($msg:tt)*) => {{\n    let c = $code;\n    match c {\n      $crate::sys::Status::napi_ok => Ok(()),\n      _ => Err($crate::Error::new($crate::Status::from(c), format!($($msg)*))),\n    }\n  }};\n\n  ($code:expr, $msg:expr, $env:expr, $val:expr) => {{\n    let c = $code;\n    match c {\n      $crate::sys::Status::napi_ok => Ok(()),\n      _ => Err($crate::Error::new($crate::Status::from(c), format!($msg, $crate::type_of!($env, $val)?))),\n    }\n  }};\n}\n\n#[doc(hidden)]\n#[macro_export]\nmacro_rules! check_status_and_type {\n  ($code:expr, $env:ident, $val:ident, $msg:expr) => {{\n    let c = $code;\n    match c {\n      $crate::sys::Status::napi_ok => Ok(()),\n      _ => {\n        use $crate::js_values::JsValue;\n        let value_type = $crate::type_of!($env, $val)?;\n        let error_msg = match value_type {\n          ValueType::Function => {\n            let function_name = unsafe {\n              $crate::bindgen_prelude::Function::<\n                $crate::bindgen_prelude::Unknown,\n                $crate::bindgen_prelude::Unknown,\n              >::from_napi_value($env, $val)?\n              .name()?\n            };\n            format!(\n              $msg,\n              format!(\n                \"function {}(..) \",\n                if function_name.len() == 0 {\n                  \"anonymous\".to_owned()\n                } else {\n                  function_name\n                }\n              )\n            )\n          }\n          ValueType::Object => {\n            let env_ = $crate::Env::from($env);\n            let json: $crate::JSON = env_.get_global()?.get_named_property_unchecked(\"JSON\")?;\n            let object = json.stringify($crate::bindgen_prelude::Object::from_raw($env, $val))?;\n            format!($msg, format!(\"Object {}\", object))\n          }\n          ValueType::Boolean | ValueType::Number => {\n            let val = $crate::Unknown::from_raw_unchecked($env, $val);\n            let value = val.coerce_to_string()?.into_utf8()?;\n            format!($msg, format!(\"{} {} \", value_type, value.as_str()?))\n          }\n          #[cfg(feature = \"napi6\")]\n          ValueType::BigInt => {\n            let val = $crate::Unknown::from_raw_unchecked($env, $val);\n            let value = val.coerce_to_string()?.into_utf8()?;\n            format!($msg, format!(\"{} {} \", value_type, value.as_str()?))\n          }\n          _ => format!($msg, value_type),\n        };\n        Err($crate::Error::new($crate::Status::from(c), error_msg))\n      }\n    }\n  }};\n}\n\n#[doc(hidden)]\n#[macro_export]\nmacro_rules! check_pending_exception {\n  ($env:expr, $code:expr) => {{\n    let c = $code;\n    match c {\n      $crate::sys::Status::napi_ok => Ok(()),\n      $crate::sys::Status::napi_pending_exception => {\n        let mut error_result = std::ptr::null_mut();\n        assert_eq!(\n          unsafe { $crate::sys::napi_get_and_clear_last_exception($env, &mut error_result) },\n          $crate::sys::Status::napi_ok\n        );\n        return Err($crate::Error::from(unsafe {\n          $crate::bindgen_prelude::Unknown::from_raw_unchecked($env, error_result)\n        }));\n      }\n      _ => Err($crate::Error::new($crate::Status::from(c), \"\".to_owned())),\n    }\n  }};\n\n  ($env:expr, $code:expr, $($msg:tt)*) => {{\n    let c = $code;\n    match c {\n      $crate::sys::Status::napi_ok => Ok(()),\n      $crate::sys::Status::napi_pending_exception => {\n        let mut error_result = std::ptr::null_mut();\n        assert_eq!(\n          unsafe { $crate::sys::napi_get_and_clear_last_exception($env, &mut error_result) },\n          $crate::sys::Status::napi_ok\n        );\n        return Err($crate::Error::from(unsafe {\n          $crate::bindgen_prelude::Unknown::from_raw_unchecked($env, error_result)\n        }));\n      }\n      _ => Err($crate::Error::new($crate::Status::from(c), format!($($msg)*))),\n    }\n  }};\n}\n\nfn extract_error_cause(value: Unknown<'_>) -> Result<Option<Box<Error>>> {\n  if value.get_type()? != ValueType::Object {\n    return Ok(None);\n  }\n\n  let env = value.0.env;\n  let key = c\"cause\";\n  let mut raw_cause = ptr::null_mut();\n  check_pending_exception!(\n    env,\n    unsafe { sys::napi_get_named_property(env, value.0.value, key.as_ptr(), &mut raw_cause) },\n    \"get_named_property error\"\n  )?;\n\n  let cause = unsafe { Unknown::from_raw_unchecked(env, raw_cause) };\n  match cause.get_type()? {\n    ValueType::Undefined | ValueType::Null => Ok(None),\n    _ => Ok(Some(Box::new(cause.into()))),\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/arraybuffer.rs",
    "content": "use std::ops::{Deref, DerefMut};\nuse std::os::raw::c_void;\nuse std::ptr;\nuse std::slice;\n\nuse crate::{\n  bindgen_runtime::{FromNapiValue, TypeName, TypedArrayType, ValidateNapiValue},\n  check_status, sys, Env, Error, NapiValue, Ref, Result, Status, Unknown, Value, ValueType,\n};\n\nuse super::JsValue;\n\n#[deprecated(\n  since = \"3.0.0\",\n  note = \"Use `napi::bindgen_prelude::ArrayBuffer` instead\"\n)]\npub struct JsArrayBuffer(pub(crate) Value);\n\nimpl TypeName for JsArrayBuffer {\n  fn type_name() -> &'static str {\n    \"ArrayBuffer\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl ValidateNapiValue for JsArrayBuffer {\n  unsafe fn validate(env: sys::napi_env, napi_val: sys::napi_value) -> Result<sys::napi_value> {\n    let mut is_array_buffer = false;\n    check_status!(unsafe { sys::napi_is_arraybuffer(env, napi_val, &mut is_array_buffer) })?;\n    if !is_array_buffer {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Value is not an array buffer\".to_owned(),\n      ));\n    }\n    Ok(ptr::null_mut())\n  }\n}\n\nimpl FromNapiValue for JsArrayBuffer {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Ok(Self(Value {\n      env,\n      value: napi_val,\n      value_type: ValueType::Object,\n    }))\n  }\n}\n\nimpl JsValue<'_> for JsArrayBuffer {\n  fn value(&self) -> Value {\n    self.0\n  }\n}\n\n#[deprecated(\n  since = \"3.0.0\",\n  note = \"Use `napi::bindgen_prelude::ArrayBuffer` instead\"\n)]\npub struct JsArrayBufferValue {\n  pub value: JsArrayBuffer,\n  pub(crate) len: usize,\n  pub(crate) data: *mut c_void,\n}\n\n#[deprecated(\n  since = \"3.0.0\",\n  note = \"Use `napi::bindgen_prelude::Uint8Array/Int8Array...` instead\"\n)]\npub struct JsTypedArray(pub(crate) Value);\n\nimpl TypeName for JsTypedArray {\n  fn type_name() -> &'static str {\n    \"TypedArray\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl FromNapiValue for JsTypedArray {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Ok(Self(Value {\n      env,\n      value: napi_val,\n      value_type: ValueType::Object,\n    }))\n  }\n}\n\nimpl JsValue<'_> for JsTypedArray {\n  fn value(&self) -> Value {\n    self.0\n  }\n}\n\n#[deprecated(\n  since = \"3.0.0\",\n  note = \"Use `napi::bindgen_prelude::Uint8Array/Int8Array...` instead\"\n)]\npub struct JsTypedArrayValue {\n  pub arraybuffer: JsArrayBuffer,\n  data: *mut c_void,\n  pub byte_offset: usize,\n  pub length: usize,\n  pub typedarray_type: TypedArrayType,\n}\n\npub struct JsDataView(pub(crate) Value);\n\nimpl TypeName for JsDataView {\n  fn type_name() -> &'static str {\n    \"DataView\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\npub struct JsDataViewValue {\n  pub arraybuffer: JsArrayBuffer,\n  _data: *mut c_void,\n  pub byte_offset: u64,\n  pub length: u64,\n}\n\nimpl JsArrayBuffer {\n  #[cfg(feature = \"napi7\")]\n  pub fn detach(self) -> Result<()> {\n    check_status!(unsafe { sys::napi_detach_arraybuffer(self.0.env, self.0.value) })\n  }\n\n  #[cfg(feature = \"napi7\")]\n  pub fn is_detached(&self) -> Result<bool> {\n    let mut is_detached = false;\n    check_status!(unsafe {\n      sys::napi_is_detached_arraybuffer(self.0.env, self.0.value, &mut is_detached)\n    })?;\n    Ok(is_detached)\n  }\n\n  pub fn into_value(self) -> Result<JsArrayBufferValue> {\n    let mut data = ptr::null_mut();\n    let mut len: usize = 0;\n    check_status!(unsafe {\n      sys::napi_get_arraybuffer_info(self.0.env, self.0.value, &mut data, &mut len)\n    })?;\n    Ok(JsArrayBufferValue {\n      data,\n      value: self,\n      len,\n    })\n  }\n\n  pub fn into_typedarray(\n    self,\n    typedarray_type: TypedArrayType,\n    length: usize,\n    byte_offset: usize,\n  ) -> Result<JsTypedArray> {\n    let mut typedarray_value = ptr::null_mut();\n    check_status!(unsafe {\n      sys::napi_create_typedarray(\n        self.0.env,\n        typedarray_type.into(),\n        length,\n        self.0.value,\n        byte_offset,\n        &mut typedarray_value,\n      )\n    })?;\n    Ok(JsTypedArray(Value {\n      env: self.0.env,\n      value: typedarray_value,\n      value_type: ValueType::Object,\n    }))\n  }\n\n  pub fn into_dataview(self, length: usize, byte_offset: usize) -> Result<JsDataView> {\n    let mut dataview_value = ptr::null_mut();\n    check_status!(unsafe {\n      sys::napi_create_dataview(\n        self.0.env,\n        length,\n        self.0.value,\n        byte_offset,\n        &mut dataview_value,\n      )\n    })?;\n    Ok(JsDataView(Value {\n      env: self.0.env,\n      value: dataview_value,\n      value_type: ValueType::Object,\n    }))\n  }\n\n  pub fn into_ref(self) -> Result<Ref<JsArrayBuffer>> {\n    Ref::new(&Env::from(self.0.env), &self)\n  }\n}\n\nimpl JsArrayBufferValue {\n  pub fn new(value: JsArrayBuffer, data: *mut c_void, len: usize) -> Self {\n    JsArrayBufferValue { value, len, data }\n  }\n\n  pub fn into_raw(self) -> JsArrayBuffer {\n    self.value\n  }\n\n  pub fn into_unknown<'env>(self) -> Unknown<'env> {\n    unsafe { Unknown::from_raw_unchecked(self.value.0.env, self.value.0.value) }\n  }\n}\n\nimpl AsRef<[u8]> for JsArrayBufferValue {\n  fn as_ref(&self) -> &[u8] {\n    if self.data.is_null() {\n      return &[];\n    }\n    unsafe { slice::from_raw_parts(self.data as *const u8, self.len) }\n  }\n}\n\nimpl AsMut<[u8]> for JsArrayBufferValue {\n  fn as_mut(&mut self) -> &mut [u8] {\n    if self.data.is_null() {\n      return &mut [];\n    }\n    unsafe { slice::from_raw_parts_mut(self.data as *mut u8, self.len) }\n  }\n}\n\nimpl Deref for JsArrayBufferValue {\n  type Target = [u8];\n\n  fn deref(&self) -> &Self::Target {\n    self.as_ref()\n  }\n}\n\nimpl DerefMut for JsArrayBufferValue {\n  fn deref_mut(&mut self) -> &mut Self::Target {\n    self.as_mut()\n  }\n}\n\nimpl JsTypedArray {\n  /// get TypeArray info\n  /// <https://nodejs.org/api/n-api.html#n_api_napi_get_typedarray_info>\n  ///\n  /// ***Warning***: Use caution while using this API since the underlying data buffer is managed by the VM.\n  pub fn into_value(self) -> Result<JsTypedArrayValue> {\n    let mut typedarray_type = 0;\n    let mut len = 0;\n    let mut data = ptr::null_mut();\n    let mut arraybuffer_value = ptr::null_mut();\n    let mut byte_offset = 0;\n    check_status!(unsafe {\n      sys::napi_get_typedarray_info(\n        self.0.env,\n        self.0.value,\n        &mut typedarray_type,\n        &mut len,\n        &mut data,\n        &mut arraybuffer_value,\n        &mut byte_offset,\n      )\n    })?;\n\n    Ok(JsTypedArrayValue {\n      data,\n      length: len,\n      byte_offset,\n      typedarray_type: typedarray_type.into(),\n      arraybuffer: unsafe { JsArrayBuffer::from_raw_unchecked(self.0.env, arraybuffer_value) },\n    })\n  }\n}\n\nimpl JsTypedArrayValue {\n  #[inline]\n  fn is_valid_as_ref(&self, dest_type: TypedArrayType) {\n    // deref `Uint8ClampedArray` as `&[u8]` is valid\n    if self.typedarray_type == TypedArrayType::Uint8Clamped && dest_type == TypedArrayType::Uint8 {\n      return;\n    }\n    if self.typedarray_type != dest_type {\n      panic!(\n        \"invalid typedarray type: expected {:?}, got {:?}\",\n        dest_type, self.typedarray_type\n      );\n    }\n  }\n}\n\nmacro_rules! impl_as_ref {\n  ($ref_type:ident, $expect_type:expr) => {\n    impl AsRef<[$ref_type]> for JsTypedArrayValue {\n      fn as_ref(&self) -> &[$ref_type] {\n        self.is_valid_as_ref($expect_type);\n        if self.data.is_null() {\n          return &[];\n        }\n        unsafe { slice::from_raw_parts(self.data as *const $ref_type, self.length) }\n      }\n    }\n\n    impl AsMut<[$ref_type]> for JsTypedArrayValue {\n      fn as_mut(&mut self) -> &mut [$ref_type] {\n        self.is_valid_as_ref($expect_type);\n        if self.data.is_null() {\n          return &mut [];\n        }\n        unsafe { slice::from_raw_parts_mut(self.data as *mut $ref_type, self.length) }\n      }\n    }\n  };\n}\n\nimpl_as_ref!(u8, TypedArrayType::Uint8);\nimpl_as_ref!(i8, TypedArrayType::Int8);\nimpl_as_ref!(u16, TypedArrayType::Uint16);\nimpl_as_ref!(i16, TypedArrayType::Int16);\nimpl_as_ref!(u32, TypedArrayType::Uint32);\nimpl_as_ref!(i32, TypedArrayType::Int32);\nimpl_as_ref!(f32, TypedArrayType::Float32);\nimpl_as_ref!(f64, TypedArrayType::Float64);\n#[cfg(feature = \"napi6\")]\nimpl_as_ref!(i64, TypedArrayType::BigInt64);\n#[cfg(feature = \"napi6\")]\nimpl_as_ref!(u64, TypedArrayType::BigUint64);\n\nimpl JsDataView {\n  pub fn into_value(self) -> Result<JsDataViewValue> {\n    let mut length = 0u64;\n    let mut byte_offset = 0u64;\n    let mut arraybuffer_value = ptr::null_mut();\n    let mut data = ptr::null_mut();\n\n    check_status!(unsafe {\n      sys::napi_get_dataview_info(\n        self.0.env,\n        self.0.value,\n        &mut length as *mut u64 as *mut _,\n        &mut data,\n        &mut arraybuffer_value,\n        &mut byte_offset as *mut u64 as *mut _,\n      )\n    })?;\n    Ok(JsDataViewValue {\n      arraybuffer: unsafe { JsArrayBuffer::from_raw_unchecked(self.0.env, arraybuffer_value) },\n      byte_offset,\n      length,\n      _data: data,\n    })\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/bigint.rs",
    "content": "use std::convert::TryFrom;\nuse std::ptr;\n\nuse super::*;\nuse crate::{\n  bindgen_runtime::{FromNapiValue, TypeName},\n  check_status, sys, Result,\n};\n\n#[deprecated(since = \"3.0.0\", note = \"Use `napi::bindgen_prelude::BigInt` instead\")]\n#[derive(Clone, Copy)]\npub struct JsBigInt {\n  pub(crate) raw: Value,\n  pub word_count: usize,\n}\n\nimpl TypeName for JsBigInt {\n  fn type_name() -> &'static str {\n    \"BigInt\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::BigInt\n  }\n}\n\nimpl ValidateNapiValue for JsBigInt {}\n\nimpl JsValue<'_> for JsBigInt {\n  fn value(&self) -> Value {\n    self.raw\n  }\n}\n\nimpl FromNapiValue for JsBigInt {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut word_count = 0usize;\n    check_status!(unsafe {\n      sys::napi_get_value_bigint_words(\n        env,\n        napi_val,\n        ptr::null_mut(),\n        &mut word_count,\n        ptr::null_mut(),\n      )\n    })?;\n    Ok(JsBigInt {\n      raw: Value {\n        env,\n        value: napi_val,\n        value_type: ValueType::BigInt,\n      },\n      word_count,\n    })\n  }\n}\n\nimpl JsBigInt {\n  pub(crate) fn from_raw_unchecked(\n    env: sys::napi_env,\n    value: sys::napi_value,\n    word_count: usize,\n  ) -> Self {\n    Self {\n      raw: Value {\n        env,\n        value,\n        value_type: ValueType::Object,\n      },\n      word_count,\n    }\n  }\n}\n\nimpl NapiRaw for JsBigInt {\n  unsafe fn raw(&self) -> sys::napi_value {\n    self.raw.value\n  }\n}\n\nimpl NapiRaw for &JsBigInt {\n  unsafe fn raw(&self) -> sys::napi_value {\n    self.raw.value\n  }\n}\n\nimpl NapiValue for JsBigInt {\n  unsafe fn from_raw(env: sys::napi_env, value: sys::napi_value) -> Result<Self> {\n    let mut word_count = 0usize;\n    check_status!(unsafe {\n      sys::napi_get_value_bigint_words(\n        env,\n        value,\n        ptr::null_mut(),\n        &mut word_count,\n        ptr::null_mut(),\n      )\n    })?;\n    Ok(JsBigInt {\n      raw: Value {\n        env,\n        value,\n        value_type: ValueType::BigInt,\n      },\n      word_count,\n    })\n  }\n\n  unsafe fn from_raw_unchecked(env: sys::napi_env, value: sys::napi_value) -> Self {\n    let mut word_count = 0usize;\n    let status = unsafe {\n      sys::napi_get_value_bigint_words(\n        env,\n        value,\n        ptr::null_mut(),\n        &mut word_count,\n        ptr::null_mut(),\n      )\n    };\n    debug_assert!(\n      Status::from(status) == Status::Ok,\n      \"napi_get_value_bigint_words failed\"\n    );\n    JsBigInt {\n      raw: Value {\n        env,\n        value,\n        value_type: ValueType::BigInt,\n      },\n      word_count,\n    }\n  }\n}\n\n/// The BigInt will be converted losslessly when the value is over what an int64 could hold.\nimpl TryFrom<JsBigInt> for i64 {\n  type Error = Error;\n\n  fn try_from(value: JsBigInt) -> Result<i64> {\n    value.get_i64().map(|(v, _)| v)\n  }\n}\n\n/// The BigInt will be converted losslessly when the value is over what an uint64 could hold.\nimpl TryFrom<JsBigInt> for u64 {\n  type Error = Error;\n\n  fn try_from(value: JsBigInt) -> Result<u64> {\n    value.get_u64().map(|(v, _)| v)\n  }\n}\n\nimpl JsBigInt {\n  /// <https://nodejs.org/api/n-api.html#n_api_napi_get_value_bigint_words>\n  pub fn get_words(&mut self) -> Result<(bool, Vec<u64>)> {\n    let mut words: Vec<u64> = Vec::with_capacity(self.word_count);\n    let word_count = &mut self.word_count;\n    let mut sign_bit = 0;\n    check_status!(unsafe {\n      sys::napi_get_value_bigint_words(\n        self.raw.env,\n        self.raw.value,\n        &mut sign_bit,\n        word_count,\n        words.as_mut_ptr(),\n      )\n    })?;\n\n    unsafe {\n      words.set_len(self.word_count);\n    };\n\n    Ok((sign_bit == 1, words))\n  }\n\n  pub fn get_u64(&self) -> Result<(u64, bool)> {\n    let mut val: u64 = 0;\n    let mut lossless = false;\n    check_status!(unsafe {\n      sys::napi_get_value_bigint_uint64(self.raw.env, self.raw.value, &mut val, &mut lossless)\n    })?;\n\n    Ok((val, lossless))\n  }\n\n  pub fn get_i64(&self) -> Result<(i64, bool)> {\n    let mut val: i64 = 0;\n    let mut lossless: bool = false;\n    check_status!(unsafe {\n      sys::napi_get_value_bigint_int64(self.raw.env, self.raw.value, &mut val, &mut lossless)\n    })?;\n    Ok((val, lossless))\n  }\n\n  pub fn get_i128(&mut self) -> Result<(i128, bool)> {\n    let (signed, words) = self.get_words()?;\n\n    let low_part = words.first().copied().unwrap_or(0).to_ne_bytes();\n    let high_part = words.get(1).copied().unwrap_or(0).to_ne_bytes();\n\n    let mut val = [0_u8; std::mem::size_of::<i128>()];\n    let high_val: &mut [u8];\n    let low_val: &mut [u8];\n    if cfg!(target_endian = \"little\") {\n      (low_val, high_val) = val.split_at_mut(low_part.len());\n    } else {\n      (high_val, low_val) = val.split_at_mut(low_part.len());\n    }\n\n    high_val.copy_from_slice(&high_part);\n    low_val.copy_from_slice(&low_part);\n\n    let mut val = i128::from_ne_bytes(val);\n\n    let mut loss = words.len() > 2;\n    let mut overflow = false;\n\n    if signed {\n      let result = val.overflowing_neg();\n      val = result.0;\n      overflow = result.1;\n    }\n\n    loss = overflow || loss;\n\n    Ok((val, loss))\n  }\n\n  pub fn get_u128(&mut self) -> Result<(bool, u128, bool)> {\n    let (signed, words) = self.get_words()?;\n\n    let low_part = words.first().copied().unwrap_or(0).to_ne_bytes();\n    let high_part = words.get(1).copied().unwrap_or(0).to_ne_bytes();\n\n    let mut val = [0_u8; std::mem::size_of::<i128>()];\n    let high_val: &mut [u8];\n    let low_val: &mut [u8];\n    if cfg!(target_endian = \"little\") {\n      (low_val, high_val) = val.split_at_mut(low_part.len());\n    } else {\n      (high_val, low_val) = val.split_at_mut(low_part.len());\n    }\n\n    high_val.copy_from_slice(&high_part);\n    low_val.copy_from_slice(&low_part);\n\n    let val = u128::from_ne_bytes(val);\n\n    let len = words.len();\n\n    Ok((signed, val, len > 2))\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/boolean.rs",
    "content": "use std::convert::TryFrom;\n\nuse super::Value;\nuse crate::bindgen_runtime::{ToNapiValue, TypeName, ValidateNapiValue};\nuse crate::{check_status, ValueType};\nuse crate::{sys, Error, Result};\n\n#[deprecated(since = \"3.0.0\", note = \"use `bool` instead\")]\n#[derive(Clone, Copy)]\npub struct JsBoolean(pub(crate) Value);\n\nimpl TypeName for JsBoolean {\n  fn type_name() -> &'static str {\n    \"bool\"\n  }\n\n  fn value_type() -> crate::ValueType {\n    ValueType::Boolean\n  }\n}\n\nimpl ValidateNapiValue for JsBoolean {}\n\nimpl ToNapiValue for JsBoolean {\n  unsafe fn to_napi_value(_: sys::napi_env, value: Self) -> Result<sys::napi_value> {\n    Ok(value.0.value)\n  }\n}\n\nimpl JsBoolean {\n  pub fn get_value(&self) -> Result<bool> {\n    let mut result = false;\n    check_status!(unsafe { sys::napi_get_value_bool(self.0.env, self.0.value, &mut result) })?;\n    Ok(result)\n  }\n}\n\nimpl TryFrom<JsBoolean> for bool {\n  type Error = Error;\n\n  fn try_from(value: JsBoolean) -> Result<bool> {\n    value.get_value()\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/buffer.rs",
    "content": "use std::mem;\nuse std::ops::{Deref, DerefMut};\nuse std::ptr;\n\nuse crate::{\n  bindgen_runtime::{FromNapiValue, TypeName, ValidateNapiValue},\n  check_status, sys, Env, Error, JsValue, Ref, Result, Status, Unknown, Value, ValueType,\n};\n\n#[deprecated(since = \"3.0.0\", note = \"Please use Buffer or &[u8] instead\")]\npub struct JsBuffer(pub(crate) Value);\n\nimpl TypeName for JsBuffer {\n  fn type_name() -> &'static str {\n    \"Buffer\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl ValidateNapiValue for JsBuffer {\n  unsafe fn validate(env: sys::napi_env, napi_val: sys::napi_value) -> Result<sys::napi_value> {\n    let mut is_buffer = false;\n    check_status!(unsafe { sys::napi_is_buffer(env, napi_val, &mut is_buffer) })?;\n    if !is_buffer {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Value is not a buffer\".to_owned(),\n      ));\n    }\n    Ok(ptr::null_mut())\n  }\n}\n\nimpl FromNapiValue for JsBuffer {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Ok(JsBuffer(Value {\n      env,\n      value: napi_val,\n      value_type: ValueType::Object,\n    }))\n  }\n}\n\nimpl JsValue<'_> for JsBuffer {\n  fn value(&self) -> Value {\n    self.0\n  }\n}\n\n#[deprecated(since = \"3.0.0\", note = \"Please use Buffer or &[u8] instead\")]\npub struct JsBufferValue {\n  pub(crate) value: JsBuffer,\n  len: usize,\n  data_ptr: *mut u8,\n  owned: Option<mem::ManuallyDrop<Vec<u8>>>,\n}\n\nimpl JsBuffer {\n  pub fn into_value(self) -> Result<JsBufferValue> {\n    let mut data = ptr::null_mut();\n    let mut len: usize = 0;\n    check_status!(unsafe {\n      sys::napi_get_buffer_info(self.0.env, self.0.value, &mut data, &mut len)\n    })?;\n    Ok(JsBufferValue {\n      value: self,\n      len,\n      data_ptr: data as *mut u8,\n      owned: None,\n    })\n  }\n\n  pub fn into_ref(self) -> Result<Ref<JsBuffer>> {\n    Ref::new(&Env::from(self.0.env), &self)\n  }\n}\n\nimpl JsBufferValue {\n  pub fn new(value: JsBuffer, data: mem::ManuallyDrop<Vec<u8>>) -> Self {\n    let len = data.len();\n    let data_ptr = if len == 0 {\n      std::ptr::null_mut()\n    } else {\n      data.as_ptr() as *mut u8\n    };\n    JsBufferValue {\n      value,\n      len,\n      data_ptr,\n      owned: Some(data),\n    }\n  }\n\n  pub fn into_raw(self) -> JsBuffer {\n    self.value\n  }\n\n  pub fn into_unknown<'env>(self) -> Unknown<'env> {\n    unsafe { Unknown::from_raw_unchecked(self.value.0.env, self.value.0.value) }\n  }\n}\n\nimpl AsRef<[u8]> for JsBufferValue {\n  fn as_ref(&self) -> &[u8] {\n    if let Some(ref data) = self.owned {\n      data.as_slice()\n    } else if self.len == 0 {\n      &[]\n    } else {\n      unsafe { std::slice::from_raw_parts(self.data_ptr as *const u8, self.len) }\n    }\n  }\n}\n\nimpl AsMut<[u8]> for JsBufferValue {\n  fn as_mut(&mut self) -> &mut [u8] {\n    if let Some(ref mut data) = self.owned {\n      data.as_mut_slice()\n    } else if self.len == 0 {\n      &mut []\n    } else {\n      unsafe { std::slice::from_raw_parts_mut(self.data_ptr, self.len) }\n    }\n  }\n}\n\nimpl Deref for JsBufferValue {\n  type Target = [u8];\n\n  fn deref(&self) -> &Self::Target {\n    self.as_ref()\n  }\n}\n\nimpl DerefMut for JsBufferValue {\n  fn deref_mut(&mut self) -> &mut Self::Target {\n    self.as_mut()\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/date.rs",
    "content": "use std::marker::PhantomData;\nuse std::ptr;\n\nuse crate::{\n  bindgen_runtime::{FromNapiValue, JsObjectValue, TypeName, ValidateNapiValue},\n  check_status, sys, Error, JsValue, Result, Status, Value, ValueType,\n};\n\n#[derive(Clone, Copy)]\npub struct JsDate<'env>(pub(crate) Value, pub(crate) PhantomData<&'env ()>);\n\nimpl TypeName for JsDate<'_> {\n  fn type_name() -> &'static str {\n    \"Date\"\n  }\n\n  fn value_type() -> crate::ValueType {\n    ValueType::Object\n  }\n}\n\nimpl ValidateNapiValue for JsDate<'_> {\n  unsafe fn validate(env: sys::napi_env, napi_val: sys::napi_value) -> Result<sys::napi_value> {\n    let mut is_date = false;\n    check_status!(unsafe { sys::napi_is_date(env, napi_val, &mut is_date) })?;\n    if !is_date {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Expected a Date object\".to_owned(),\n      ));\n    }\n\n    Ok(ptr::null_mut())\n  }\n}\n\nimpl FromNapiValue for JsDate<'_> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Ok(Self(\n      Value {\n        env,\n        value: napi_val,\n        value_type: ValueType::Object,\n      },\n      PhantomData,\n    ))\n  }\n}\n\nimpl<'env> JsValue<'env> for JsDate<'env> {\n  fn value(&self) -> Value {\n    self.0\n  }\n}\n\nimpl<'env> JsObjectValue<'env> for JsDate<'env> {}\n\nimpl JsDate<'_> {\n  pub(crate) fn from_raw(env: sys::napi_env, value: sys::napi_value) -> Self {\n    Self(\n      Value {\n        env,\n        value,\n        value_type: ValueType::Object,\n      },\n      PhantomData,\n    )\n  }\n\n  pub fn value_of(&self) -> Result<f64> {\n    let mut timestamp: f64 = 0.0;\n    check_status!(unsafe { sys::napi_get_date_value(self.0.env, self.0.value, &mut timestamp) })?;\n    Ok(timestamp)\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/de.rs",
    "content": "use serde::de::Visitor;\nuse serde::de::{DeserializeSeed, EnumAccess, MapAccess, SeqAccess, Unexpected, VariantAccess};\n\n#[cfg(feature = \"napi6\")]\nuse crate::bindgen_runtime::BigInt;\nuse crate::{\n  bindgen_runtime::{ArrayBuffer, BufferSlice, FromNapiValue, JsObjectValue, Object, Unknown},\n  type_of, Error, JsValue, Result, Status, Value, ValueType,\n};\n\npub struct De<'env>(pub(crate) &'env Value);\nimpl<'env> De<'env> {\n  pub fn new(value: &'env Object<'env>) -> Self {\n    Self(&value.0)\n  }\n}\n\n#[doc(hidden)]\nimpl<'x> serde::de::Deserializer<'x> for &mut De<'_> {\n  type Error = Error;\n\n  fn deserialize_any<V>(self, visitor: V) -> Result<V::Value>\n  where\n    V: Visitor<'x>,\n  {\n    let js_value_type = type_of!(self.0.env, self.0.value)?;\n    match js_value_type {\n      ValueType::Null | ValueType::Undefined => visitor.visit_unit(),\n      ValueType::Boolean => {\n        let val: bool = unsafe { FromNapiValue::from_napi_value(self.0.env, self.0.value)? };\n        visitor.visit_bool(val)\n      }\n      ValueType::Number => {\n        let js_number: f64 = unsafe { FromNapiValue::from_napi_value(self.0.env, self.0.value)? };\n        if (js_number.trunc() - js_number).abs() < f64::EPSILON {\n          visitor.visit_i64(js_number as i64)\n        } else {\n          visitor.visit_f64(js_number)\n        }\n      }\n      ValueType::String => visitor.visit_str(\n        unsafe { <String as FromNapiValue>::from_napi_value(self.0.env, self.0.value) }?.as_str(),\n      ),\n      ValueType::Object => {\n        let js_object = Object::from_raw(self.0.env, self.0.value);\n        if js_object.is_array()? {\n          let mut deserializer =\n            JsArrayAccess::new(&js_object, js_object.get_array_length_unchecked()?);\n          visitor.visit_seq(&mut deserializer)\n        } else if js_object.is_typedarray()? {\n          visitor.visit_bytes(unsafe { FromNapiValue::from_napi_value(self.0.env, self.0.value)? })\n        } else if js_object.is_buffer()? {\n          visitor.visit_bytes(&unsafe { BufferSlice::from_napi_value(self.0.env, self.0.value)? })\n        } else if js_object.is_arraybuffer()? {\n          let array_buf = unsafe { ArrayBuffer::from_napi_value(self.0.env, self.0.value)? };\n          if array_buf.data.is_empty() {\n            return visitor.visit_bytes(&[]);\n          }\n          visitor.visit_bytes(array_buf.data)\n        } else {\n          let mut deserializer = JsObjectAccess::new(&js_object)?;\n          visitor.visit_map(&mut deserializer)\n        }\n      }\n      #[cfg(feature = \"napi6\")]\n      ValueType::BigInt => {\n        let js_bigint = unsafe { BigInt::from_napi_value(self.0.env, self.0.value)? };\n\n        let BigInt { sign_bit, words } = &js_bigint;\n        let word_sized = words.len() < 2;\n\n        match (sign_bit, word_sized) {\n          (true, true) => visitor.visit_i64(js_bigint.get_i64().0),\n          (true, false) => visitor.visit_i128(js_bigint.get_i128().0),\n          (false, true) => visitor.visit_u64(js_bigint.get_u64().1),\n          (false, false) => visitor.visit_u128(js_bigint.get_u128().1),\n        }\n      }\n      ValueType::External | ValueType::Function | ValueType::Symbol => Err(Error::new(\n        Status::InvalidArg,\n        format!(\"typeof {js_value_type:?} value could not be deserialized\"),\n      )),\n      ValueType::Unknown => unreachable!(),\n    }\n  }\n\n  fn deserialize_bytes<V>(self, visitor: V) -> Result<V::Value>\n  where\n    V: Visitor<'x>,\n  {\n    match type_of!(self.0.env, self.0.value)? {\n      ValueType::Object => {\n        let js_object = Object::from_raw(self.0.env, self.0.value);\n        if js_object.is_buffer()? {\n          return visitor\n            .visit_bytes(&unsafe { BufferSlice::from_napi_value(self.0.env, self.0.value)? });\n        } else if js_object.is_arraybuffer()? {\n          let array_buf = unsafe { ArrayBuffer::from_napi_value(self.0.env, self.0.value)? };\n          if array_buf.data.is_empty() {\n            return visitor.visit_bytes(&[]);\n          }\n          return visitor.visit_bytes(array_buf.data);\n        }\n        visitor.visit_bytes(unsafe { FromNapiValue::from_napi_value(self.0.env, self.0.value)? })\n      }\n      _ => unreachable!(),\n    }\n  }\n\n  fn deserialize_byte_buf<V>(self, visitor: V) -> Result<V::Value>\n  where\n    V: Visitor<'x>,\n  {\n    match type_of!(self.0.env, self.0.value)? {\n      ValueType::Object => {\n        let js_object = Object::from_raw(self.0.env, self.0.value);\n        if js_object.is_buffer()? {\n          return visitor.visit_byte_buf(\n            unsafe { BufferSlice::from_napi_value(self.0.env, self.0.value)? }.to_vec(),\n          );\n        } else if js_object.is_typedarray()? {\n          return visitor.visit_byte_buf(unsafe {\n            let u8_slice: &[u8] = FromNapiValue::from_napi_value(self.0.env, self.0.value)?;\n            u8_slice.to_vec()\n          });\n        } else if js_object.is_arraybuffer()? {\n          let array_buf = unsafe { ArrayBuffer::from_napi_value(self.0.env, self.0.value)? };\n          if array_buf.data.is_empty() {\n            return visitor.visit_byte_buf(Vec::new());\n          }\n          return visitor.visit_byte_buf(array_buf.data.to_vec());\n        }\n        visitor.visit_byte_buf(unsafe { FromNapiValue::from_napi_value(self.0.env, self.0.value)? })\n      }\n      _ => unreachable!(),\n    }\n  }\n\n  fn deserialize_option<V>(self, visitor: V) -> Result<V::Value>\n  where\n    V: Visitor<'x>,\n  {\n    match type_of!(self.0.env, self.0.value)? {\n      ValueType::Undefined | ValueType::Null => visitor.visit_none(),\n      _ => visitor.visit_some(self),\n    }\n  }\n\n  fn deserialize_enum<V>(\n    self,\n    _name: &'static str,\n    _variants: &'static [&'static str],\n    visitor: V,\n  ) -> Result<V::Value>\n  where\n    V: Visitor<'x>,\n  {\n    let js_value_type = type_of!(self.0.env, self.0.value)?;\n    match js_value_type {\n      ValueType::String => visitor.visit_enum(JsEnumAccess::new(\n        unsafe { FromNapiValue::from_napi_value(self.0.env, self.0.value) }?,\n        None,\n      )),\n      ValueType::Object => {\n        let js_object = Object::from_raw(self.0.env, self.0.value);\n        let properties = js_object.get_property_names()?;\n        let property_len = properties.get_array_length_unchecked()?;\n        if property_len != 1 {\n          Err(Error::new(\n            Status::InvalidArg,\n            format!(\"object key length: {property_len}, can not deserialize to Enum\"),\n          ))\n        } else {\n          let key = properties.get_element::<String>(0)?;\n          let value: Unknown = js_object.get_named_property_unchecked(&key)?;\n          visitor.visit_enum(JsEnumAccess::new(key, Some(&value.0)))\n        }\n      }\n      _ => Err(Error::new(\n        Status::InvalidArg,\n        format!(\"{js_value_type:?} type could not deserialize to Enum type\"),\n      )),\n    }\n  }\n\n  fn deserialize_ignored_any<V>(self, visitor: V) -> Result<V::Value>\n  where\n    V: Visitor<'x>,\n  {\n    visitor.visit_unit()\n  }\n\n  forward_to_deserialize_any! {\n     <V: Visitor<'x>>\n      bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string\n      unit unit_struct seq tuple tuple_struct map struct identifier\n      newtype_struct\n  }\n}\n\n#[doc(hidden)]\npub(crate) struct JsEnumAccess<'env> {\n  variant: String,\n  value: Option<&'env Value>,\n}\n\n#[doc(hidden)]\nimpl<'env> JsEnumAccess<'env> {\n  fn new(variant: String, value: Option<&'env Value>) -> Self {\n    Self { variant, value }\n  }\n}\n\n#[doc(hidden)]\nimpl<'de, 'env> EnumAccess<'de> for JsEnumAccess<'env> {\n  type Error = Error;\n  type Variant = JsVariantAccess<'env>;\n\n  fn variant_seed<V>(self, seed: V) -> Result<(V::Value, Self::Variant)>\n  where\n    V: DeserializeSeed<'de>,\n  {\n    use serde::de::IntoDeserializer;\n    let variant = self.variant.into_deserializer();\n    let variant_access = JsVariantAccess { value: self.value };\n    seed.deserialize(variant).map(|v| (v, variant_access))\n  }\n}\n\n#[doc(hidden)]\npub(crate) struct JsVariantAccess<'env> {\n  value: Option<&'env Value>,\n}\n\n#[doc(hidden)]\nimpl<'de> VariantAccess<'de> for JsVariantAccess<'_> {\n  type Error = Error;\n  fn unit_variant(self) -> Result<()> {\n    match self.value {\n      Some(val) => {\n        let mut deserializer = De(val);\n        serde::de::Deserialize::deserialize(&mut deserializer)\n      }\n      None => Ok(()),\n    }\n  }\n\n  fn newtype_variant_seed<T>(self, seed: T) -> Result<T::Value>\n  where\n    T: DeserializeSeed<'de>,\n  {\n    match self.value {\n      Some(val) => {\n        let mut deserializer = De(val);\n        seed.deserialize(&mut deserializer)\n      }\n      None => Err(serde::de::Error::invalid_type(\n        Unexpected::UnitVariant,\n        &\"newtype variant\",\n      )),\n    }\n  }\n\n  fn tuple_variant<V>(self, _len: usize, visitor: V) -> Result<V::Value>\n  where\n    V: Visitor<'de>,\n  {\n    match self.value {\n      Some(js_value) => {\n        let js_object = Object::from_raw(js_value.env, js_value.value);\n        if js_object.is_array()? {\n          let mut deserializer =\n            JsArrayAccess::new(&js_object, js_object.get_array_length_unchecked()?);\n          visitor.visit_seq(&mut deserializer)\n        } else {\n          Err(serde::de::Error::invalid_type(\n            Unexpected::Other(\"JsValue\"),\n            &\"tuple variant\",\n          ))\n        }\n      }\n      None => Err(serde::de::Error::invalid_type(\n        Unexpected::UnitVariant,\n        &\"tuple variant\",\n      )),\n    }\n  }\n\n  fn struct_variant<V>(self, _fields: &'static [&'static str], visitor: V) -> Result<V::Value>\n  where\n    V: Visitor<'de>,\n  {\n    match self.value {\n      Some(js_value) => {\n        if let Ok(val) = unsafe { Object::from_napi_value(js_value.env, js_value.value) } {\n          let mut deserializer = JsObjectAccess::new(&val)?;\n          visitor.visit_map(&mut deserializer)\n        } else {\n          Err(serde::de::Error::invalid_type(\n            Unexpected::Other(\"JsValue\"),\n            &\"struct variant\",\n          ))\n        }\n      }\n      _ => Err(serde::de::Error::invalid_type(\n        Unexpected::UnitVariant,\n        &\"struct variant\",\n      )),\n    }\n  }\n}\n\n#[doc(hidden)]\nstruct JsArrayAccess<'env> {\n  input: &'env Object<'env>,\n  idx: u32,\n  len: u32,\n}\n\n#[doc(hidden)]\nimpl<'env> JsArrayAccess<'env> {\n  fn new(input: &'env Object, len: u32) -> Self {\n    Self { input, idx: 0, len }\n  }\n}\n\n#[doc(hidden)]\nimpl<'de> SeqAccess<'de> for JsArrayAccess<'_> {\n  type Error = Error;\n\n  fn next_element_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>>\n  where\n    T: DeserializeSeed<'de>,\n  {\n    if self.idx >= self.len {\n      return Ok(None);\n    }\n    let v = self.input.get_element::<Unknown>(self.idx)?;\n    self.idx += 1;\n\n    let mut de = De(&v.0);\n    seed.deserialize(&mut de).map(Some)\n  }\n}\n\n#[doc(hidden)]\npub(crate) struct JsObjectAccess<'env> {\n  value: &'env Object<'env>,\n  properties: Object<'env>,\n  idx: u32,\n  property_len: u32,\n}\n\n#[doc(hidden)]\nimpl<'env> JsObjectAccess<'env> {\n  fn new(value: &'env Object) -> Result<Self> {\n    let properties = value.get_property_names()?;\n    let property_len = properties.get_array_length_unchecked()?;\n    Ok(Self {\n      value,\n      properties,\n      idx: 0,\n      property_len,\n    })\n  }\n}\n\n#[doc(hidden)]\nimpl<'de> MapAccess<'de> for JsObjectAccess<'_> {\n  type Error = Error;\n\n  fn next_key_seed<K>(&mut self, seed: K) -> Result<Option<K::Value>>\n  where\n    K: DeserializeSeed<'de>,\n  {\n    if self.idx >= self.property_len {\n      return Ok(None);\n    }\n\n    let prop_name = self.properties.get_element::<Unknown>(self.idx)?;\n\n    let mut de = De(&prop_name.0);\n    seed.deserialize(&mut de).map(Some)\n  }\n\n  fn next_value_seed<V>(&mut self, seed: V) -> Result<V::Value>\n  where\n    V: DeserializeSeed<'de>,\n  {\n    if self.idx >= self.property_len {\n      return Err(Error::new(\n        Status::InvalidArg,\n        format!(\"Index:{} out of range: {}\", self.property_len, self.idx),\n      ));\n    }\n    let prop_name = self.properties.get_element::<String>(self.idx)?;\n    let value: Unknown = self.value.get_named_property_unchecked(&prop_name)?;\n\n    self.idx += 1;\n    let mut de = De(&value.0);\n    let res = seed.deserialize(&mut de)?;\n    Ok(res)\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/deferred.rs",
    "content": "use std::os::raw::c_void;\nuse std::ptr;\nuse std::{\n  marker::PhantomData,\n  sync::{Arc, RwLock},\n};\n\n#[cfg(feature = \"deferred_trace\")]\nuse crate::{bindgen_runtime::JsObjectValue, JsValue};\nuse crate::{\n  bindgen_runtime::{Object, ToNapiValue},\n  check_status, sys, Env, Error, Result,\n};\n\n#[cfg(feature = \"deferred_trace\")]\n/// A javascript error which keeps a stack trace\n/// to the original caller in an asynchronous context.\n/// This is required as the stack trace is lost when\n/// an error is created in a different thread.\n///\n/// See this issue for more details:\n/// https://github.com/nodejs/node-addon-api/issues/595\n#[repr(transparent)]\n#[derive(Clone)]\nstruct DeferredTrace(sys::napi_ref);\n\n#[cfg(feature = \"deferred_trace\")]\nimpl DeferredTrace {\n  fn new(raw_env: sys::napi_env) -> Result<Self> {\n    let env = Env::from_raw(raw_env);\n    let reason = env.create_string(\"none\")?;\n\n    let mut js_error = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_create_error(raw_env, ptr::null_mut(), reason.raw(), &mut js_error) },\n      \"Create error in DeferredTrace failed\"\n    )?;\n\n    let mut result = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_create_reference(raw_env, js_error, 1, &mut result) },\n      \"Create reference in DeferredTrace failed\"\n    )?;\n\n    Ok(Self(result))\n  }\n\n  fn into_rejected(self, raw_env: sys::napi_env, mut err: Error) -> Result<sys::napi_value> {\n    let env = Env::from_raw(raw_env);\n    let mut raw = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_reference_value(raw_env, self.0, &mut raw) },\n      \"Failed to get referenced value in DeferredTrace\"\n    )?;\n\n    let mut obj = Object::from_raw(raw_env, raw);\n    let err_value = if !err.maybe_raw.is_null() {\n      let mut err_raw_value = std::ptr::null_mut();\n      check_status!(\n        unsafe { sys::napi_get_reference_value(raw_env, err.maybe_raw, &mut err_raw_value) },\n        \"Get error reference in `to_napi_value` failed\"\n      )?;\n      let err_obj = Object::from_raw(raw_env, err_raw_value);\n\n      let err_value = if err_obj.has_named_property(\"message\")? {\n        // The error was already created inside the JS engine, just return it\n        Ok(err_obj.raw())\n      } else {\n        obj.set_named_property(\"message\", \"\")?;\n        obj.set_named_property(\"code\", \"\")?;\n        Ok(raw)\n      };\n      let mut ref_count = 0;\n      check_status!(\n        unsafe { sys::napi_reference_unref(raw_env, err.maybe_raw, &mut ref_count) },\n        \"Unref error reference in `to_napi_value` failed\"\n      )?;\n      if ref_count == 0 {\n        check_status!(\n          unsafe { sys::napi_delete_reference(raw_env, err.maybe_raw) },\n          \"Delete error reference in `to_napi_value` failed\"\n        )?;\n      }\n      // already unref, skip the logic in `Drop`\n      err.maybe_env = ptr::null_mut();\n      err.maybe_raw = ptr::null_mut();\n      err_value\n    } else {\n      obj.set_named_property(\"message\", &err.reason)?;\n      obj.set_named_property(\n        \"code\",\n        env.create_string_from_std(format!(\"{}\", err.status))?,\n      )?;\n      Ok(raw)\n    };\n    check_status!(\n      unsafe { sys::napi_delete_reference(raw_env, self.0) },\n      \"Failed to get referenced value in DeferredTrace\"\n    )?;\n    err_value\n  }\n}\n\ntype FinalizeCallback = Arc<RwLock<Option<Box<dyn FnOnce(sys::napi_env)>>>>;\n\nstruct DeferredData<Data: ToNapiValue, Resolver: FnOnce(Env) -> Result<Data>> {\n  resolver: Result<Resolver>,\n  #[cfg(feature = \"deferred_trace\")]\n  trace: DeferredTrace,\n  tsfn: sys::napi_threadsafe_function,\n  finalize_callback: FinalizeCallback,\n}\n\npub struct JsDeferred<Data: ToNapiValue, Resolver: FnOnce(Env) -> Result<Data>> {\n  pub(crate) tsfn: sys::napi_threadsafe_function,\n  #[cfg(feature = \"deferred_trace\")]\n  trace: DeferredTrace,\n  finalize_callback: FinalizeCallback,\n  _data: PhantomData<Data>,\n  _resolver: PhantomData<Resolver>,\n}\n\n// A trick to send the resolver into the `panic` handler\n// Do not use clone in the other place besides the `fn execute_tokio_future`\nimpl<Data: ToNapiValue, Resolver: FnOnce(Env) -> Result<Data>> Clone\n  for JsDeferred<Data, Resolver>\n{\n  fn clone(&self) -> Self {\n    Self {\n      tsfn: self.tsfn,\n      #[cfg(feature = \"deferred_trace\")]\n      trace: self.trace.clone(),\n      finalize_callback: self.finalize_callback.clone(),\n      _data: PhantomData,\n      _resolver: PhantomData,\n    }\n  }\n}\n\nunsafe impl<Data: ToNapiValue, Resolver: FnOnce(Env) -> Result<Data>> Send\n  for JsDeferred<Data, Resolver>\n{\n}\n\nimpl<Data: ToNapiValue, Resolver: FnOnce(Env) -> Result<Data>> JsDeferred<Data, Resolver> {\n  pub(crate) fn new(env: &Env) -> Result<(Self, Object<'_>)> {\n    let (tsfn, promise) = js_deferred_new_raw(env, Some(napi_resolve_deferred::<Data, Resolver>))?;\n\n    let deferred = Self {\n      tsfn,\n      #[cfg(feature = \"deferred_trace\")]\n      trace: DeferredTrace::new(env.0)?,\n      finalize_callback: Default::default(),\n      _data: PhantomData,\n      _resolver: PhantomData,\n    };\n\n    Ok((deferred, promise))\n  }\n\n  /// Consumes the deferred, and resolves the promise. The provided function will be called\n  /// from the JavaScript thread, and should return the resolved value.\n  pub fn resolve(self, resolver: Resolver) {\n    self.call_tsfn(Ok(resolver))\n  }\n\n  /// Consumes the deferred, and rejects the promise with the provided error.\n  pub fn reject(self, error: Error) {\n    self.call_tsfn(Err(error))\n  }\n\n  #[allow(clippy::arc_with_non_send_sync)]\n  pub fn set_finalize_callback(\n    &mut self,\n    finalize_callback: Option<Box<dyn FnOnce(sys::napi_env)>>,\n  ) {\n    self.finalize_callback = Arc::new(RwLock::new(finalize_callback));\n  }\n\n  fn call_tsfn(self, result: Result<Resolver>) {\n    let data = DeferredData {\n      resolver: result,\n      #[cfg(feature = \"deferred_trace\")]\n      trace: self.trace,\n      tsfn: self.tsfn,\n      finalize_callback: self.finalize_callback.clone(),\n    };\n\n    // Call back into the JS thread via a threadsafe function. This results in napi_resolve_deferred being called.\n    let status = unsafe {\n      sys::napi_call_threadsafe_function(\n        self.tsfn,\n        Box::into_raw(Box::from(data)).cast(),\n        sys::ThreadsafeFunctionCallMode::blocking,\n      )\n    };\n    debug_assert!(\n      status == sys::Status::napi_ok,\n      \"Call threadsafe function in JsDeferred failed\"\n    );\n  }\n}\n\nfn js_deferred_new_raw(\n  env: &Env,\n  resolve_deferred: sys::napi_threadsafe_function_call_js,\n) -> Result<(sys::napi_threadsafe_function, Object<'_>)> {\n  let mut raw_promise = ptr::null_mut();\n  let mut raw_deferred = ptr::null_mut();\n  check_status!(\n    unsafe { sys::napi_create_promise(env.0, &mut raw_deferred, &mut raw_promise) },\n    \"Create promise in JsDeferred failed\"\n  )?;\n\n  // Create a threadsafe function so we can call back into the JS thread when we are done.\n  let mut async_resource_name = ptr::null_mut();\n  check_status!(\n    unsafe {\n      sys::napi_create_string_utf8(\n        env.0,\n        c\"napi_resolve_deferred\".as_ptr().cast(),\n        22,\n        &mut async_resource_name,\n      )\n    },\n    \"Create async resource name in JsDeferred failed\"\n  )?;\n\n  let mut tsfn = ptr::null_mut();\n  check_status!(\n    unsafe {\n      sys::napi_create_threadsafe_function(\n        env.0,\n        ptr::null_mut(),\n        ptr::null_mut(),\n        async_resource_name,\n        0,\n        1,\n        ptr::null_mut(),\n        None,\n        raw_deferred.cast(),\n        resolve_deferred,\n        &mut tsfn,\n      )\n    },\n    \"Create threadsafe function in JsDeferred failed\"\n  )?;\n\n  let promise = Object::from_raw(env.0, raw_promise);\n\n  Ok((tsfn, promise))\n}\n\nextern \"C\" fn napi_resolve_deferred<Data: ToNapiValue, Resolver: FnOnce(Env) -> Result<Data>>(\n  env: sys::napi_env,\n  _js_callback: sys::napi_value,\n  context: *mut c_void,\n  data: *mut c_void,\n) {\n  let deferred = context.cast();\n  let deferred_data: Box<DeferredData<Data, Resolver>> = unsafe { Box::from_raw(data.cast()) };\n  let tsfn: *mut napi_sys::napi_threadsafe_function__ = deferred_data.tsfn;\n  let finalize_callback = RwLock::write(&deferred_data.finalize_callback)\n    .expect(\"RwLock Poison\")\n    .take();\n  let result = deferred_data\n    .resolver\n    .and_then(|resolver| resolver(Env::from_raw(env)))\n    .and_then(|res| unsafe { ToNapiValue::to_napi_value(env, res) });\n\n  let release_tsfn_result = check_status!(\n    unsafe {\n      sys::napi_release_threadsafe_function(tsfn, sys::ThreadsafeFunctionReleaseMode::release)\n    },\n    \"Release threadsafe function in JsDeferred failed\"\n  );\n\n  if let Err(e) = release_tsfn_result.and(result).and_then(|res| {\n    check_status!(\n      unsafe { sys::napi_resolve_deferred(env, deferred, res) },\n      \"Resolve deferred value failed\"\n    )\n    .map(|_| {\n      #[cfg(feature = \"deferred_trace\")]\n      {\n        let _status = unsafe { sys::napi_delete_reference(env, deferred_data.trace.0) };\n        if _status != sys::Status::napi_ok && cfg!(debug_assertions) {\n          eprintln!(\n            \"Failed to delete reference in deferred {}\",\n            crate::Status::from(_status)\n          );\n        }\n      }\n    })\n  }) {\n    #[cfg(feature = \"deferred_trace\")]\n    let error = deferred_data.trace.into_rejected(env, e);\n    #[cfg(not(feature = \"deferred_trace\"))]\n    let error = Ok::<sys::napi_value, Error>(unsafe { crate::JsError::from(e).into_value(env) });\n\n    match error {\n      Ok(error) => {\n        unsafe { sys::napi_reject_deferred(env, deferred, error) };\n        if let Some(finalize_callback) = finalize_callback {\n          finalize_callback(env);\n        }\n      }\n      Err(err) => {\n        if let Some(finalize_callback) = finalize_callback {\n          finalize_callback(env);\n        }\n        if cfg!(debug_assertions) {\n          eprintln!(\"Failed to reject deferred: {err:?}\");\n          let mut err = ptr::null_mut();\n          let mut err_msg = ptr::null_mut();\n          unsafe {\n            sys::napi_create_string_utf8(env, c\"Rejection failed\".as_ptr().cast(), 0, &mut err_msg);\n            sys::napi_create_error(env, ptr::null_mut(), err_msg, &mut err);\n            sys::napi_reject_deferred(env, deferred, err);\n          }\n        }\n      }\n    }\n  } else if let Some(finalize_callback) = finalize_callback {\n    finalize_callback(env);\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/either.rs",
    "content": "pub use crate::bindgen_runtime::Either;\n"
  },
  {
    "path": "crates/napi/src/js_values/external.rs",
    "content": "use std::{marker::PhantomData, ptr};\n\nuse crate::{\n  bindgen_prelude::{\n    sys, External, ExternalRef, FromNapiValue, Result, Status, TypeName, ValidateNapiValue,\n  },\n  check_status, Error, JsValue, Value, ValueType,\n};\n\n/// Represent the Node-API `External` value\n///\n/// The difference between the `JsExternal` and `External` is that the `JsExternal` holds the raw value of `External`.\n/// So that you can call `Object::set_property` with the `JsExternal` value, but can't do the same with `External`.\npub struct JsExternal<'env>(pub(crate) Value, PhantomData<&'env ()>);\n\nimpl<'env> TypeName for JsExternal<'env> {\n  fn type_name() -> &'static str {\n    \"External\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::External\n  }\n}\n\nimpl<'env> ValidateNapiValue for JsExternal<'env> {}\n\nimpl<'env> FromNapiValue for JsExternal<'env> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Ok(Self(\n      Value {\n        env,\n        value: napi_val,\n        value_type: ValueType::External,\n      },\n      PhantomData,\n    ))\n  }\n}\n\nimpl<'env> JsValue<'env> for JsExternal<'env> {\n  fn value(&self) -> Value {\n    self.0\n  }\n}\n\nimpl<'env> JsExternal<'env> {\n  /// Get the value from the `JsExternal`\n  ///\n  /// If the underlying value is not `T`, it will return `InvalidArg` error.\n  pub fn get_value<T: 'static>(&self) -> Result<&mut T> {\n    self.get_static_value::<T>().map(|ext| ext.as_mut())\n  }\n\n  /// Create a reference to the `JsExternal`\n  ///\n  /// If the underlying value is not `T`, it will return `InvalidArg` error.\n  pub fn create_ref<T: 'static>(&self) -> Result<ExternalRef<T>> {\n    let mut ref_ = ptr::null_mut();\n    let external = self.get_static_value()?;\n    check_status!(\n      unsafe { sys::napi_create_reference(self.0.env, self.0.value, 1, &mut ref_) },\n      \"Failed to create reference on external value\"\n    )?;\n    Ok(ExternalRef {\n      obj: external,\n      raw: ref_,\n      env: self.0.env,\n    })\n  }\n\n  #[inline]\n  fn get_static_value<T: 'static>(&self) -> Result<&'static mut External<T>> {\n    let mut unknown_tagged_object = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_value_external(self.0.env, self.0.value, &mut unknown_tagged_object) },\n      \"Failed to get external value\"\n    )?;\n\n    match unsafe { External::from_raw_impl(unknown_tagged_object) } {\n      Some(external) => Ok(external),\n      None => Err(Error::new(\n        Status::InvalidArg,\n        format!(\n          \"<{}> on `External` is not the type of wrapped object\",\n          std::any::type_name::<T>()\n        ),\n      )),\n    }\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/function.rs",
    "content": "use std::ptr;\n\nuse super::Value;\n#[cfg(feature = \"napi4\")]\nuse crate::{\n  bindgen_runtime::JsValuesTupleIntoVec,\n  threadsafe_function::{ThreadsafeCallContext, ThreadsafeFunction},\n};\nuse crate::{\n  bindgen_runtime::{FromNapiValue, ToNapiValue, TypeName, ValidateNapiValue},\n  check_pending_exception, sys, Error, JsObject, JsString, NapiRaw, NapiValue, Result, Status,\n  Unknown, ValueType,\n};\n\n#[deprecated(since = \"2.17.0\", note = \"Please use `Function` instead\")]\npub struct JsFunction(pub(crate) Value);\n\nimpl ValidateNapiValue for JsFunction {}\n\nimpl TypeName for JsFunction {\n  fn type_name() -> &'static str {\n    \"Function\"\n  }\n\n  fn value_type() -> crate::ValueType {\n    ValueType::Function\n  }\n}\n\n/// See [Working with JavaScript Functions](https://nodejs.org/api/n-api.html#n_api_working_with_javascript_functions).\n///\n/// Example:\n/// ```\n/// use napi::{JsFunction, CallContext, JsNull, Result};\n///\n/// #[js_function(1)]\n/// pub fn call_function(ctx: CallContext) -> Result<JsNull> {\n///     let js_func = ctx.get::<JsFunction>(0)?;\n///     let js_string = ctx.env.create_string(\"hello\".as_ref())?.into_unknown()?;\n///     js_func.call(None, &[js_string])?;\n///     Ok(ctx.env.get_null()?)\n/// }\n/// ```\nimpl JsFunction {\n  /// [napi_call_function](https://nodejs.org/api/n-api.html#n_api_napi_call_function)\n  pub fn call<V>(&self, this: Option<&JsObject>, args: &[V]) -> Result<Unknown<'_>>\n  where\n    V: NapiRaw,\n  {\n    let raw_this = this\n      .map(|v| unsafe { v.raw() })\n      .or_else(|| unsafe { ToNapiValue::to_napi_value(self.0.env, ()) }.ok())\n      .ok_or_else(|| Error::new(Status::GenericFailure, \"Get raw this failed\".to_owned()))?;\n    let raw_args = args\n      .iter()\n      .map(|arg| unsafe { arg.raw() })\n      .collect::<Vec<sys::napi_value>>();\n    let mut return_value = ptr::null_mut();\n    check_pending_exception!(self.0.env, unsafe {\n      sys::napi_call_function(\n        self.0.env,\n        raw_this,\n        self.0.value,\n        args.len(),\n        raw_args.as_ptr(),\n        &mut return_value,\n      )\n    })?;\n\n    Ok(unsafe { Unknown::from_raw_unchecked(self.0.env, return_value) })\n  }\n\n  /// [napi_call_function](https://nodejs.org/api/n-api.html#n_api_napi_call_function)\n  /// The same with `call`, but without arguments\n  pub fn call_without_args(&self, this: Option<&JsObject>) -> Result<Unknown<'_>> {\n    let raw_this = this\n      .map(|v| unsafe { v.raw() })\n      .or_else(|| unsafe { ToNapiValue::to_napi_value(self.0.env, ()) }.ok())\n      .ok_or_else(|| Error::new(Status::GenericFailure, \"Get raw this failed\".to_owned()))?;\n    let mut return_value = ptr::null_mut();\n    check_pending_exception!(self.0.env, unsafe {\n      sys::napi_call_function(\n        self.0.env,\n        raw_this,\n        self.0.value,\n        0,\n        ptr::null_mut(),\n        &mut return_value,\n      )\n    })?;\n\n    Ok(unsafe { Unknown::from_raw_unchecked(self.0.env, return_value) })\n  }\n\n  /// <https://nodejs.org/api/n-api.html#n_api_napi_new_instance>\n  ///\n  /// This method is used to instantiate a new `JavaScript` value using a given `JsFunction` that represents the constructor for the object.\n  pub fn new_instance<V>(&self, args: &[V]) -> Result<JsObject>\n  where\n    V: NapiRaw,\n  {\n    let mut js_instance = ptr::null_mut();\n    let length = args.len();\n    let raw_args = args\n      .iter()\n      .map(|arg| unsafe { arg.raw() })\n      .collect::<Vec<sys::napi_value>>();\n    check_pending_exception!(self.0.env, unsafe {\n      sys::napi_new_instance(\n        self.0.env,\n        self.0.value,\n        length,\n        raw_args.as_ptr(),\n        &mut js_instance,\n      )\n    })?;\n    Ok(unsafe { JsObject::from_raw_unchecked(self.0.env, js_instance) })\n  }\n\n  /// function name\n  pub fn name(&self) -> Result<String> {\n    let mut name = ptr::null_mut();\n    check_pending_exception!(self.0.env, unsafe {\n      sys::napi_get_named_property(self.0.env, self.0.value, c\"name\".as_ptr().cast(), &mut name)\n    })?;\n    let name_value = unsafe { JsString::from_napi_value(self.0.env, name) }?;\n    Ok(name_value.into_utf8()?.as_str()?.to_owned())\n  }\n\n  #[cfg(feature = \"napi4\")]\n  pub fn create_threadsafe_function<\n    T,\n    NewArgs,\n    Return,\n    ErrorStatus,\n    F,\n    const ES: bool,\n    const Weak: bool,\n    const MaxQueueSize: usize,\n  >(\n    &self,\n    callback: F,\n  ) -> Result<ThreadsafeFunction<T, Return, NewArgs, ErrorStatus, ES, Weak, MaxQueueSize>>\n  where\n    T: 'static,\n    NewArgs: 'static + JsValuesTupleIntoVec,\n    Return: crate::bindgen_runtime::FromNapiValue,\n    F: 'static + Send + FnMut(ThreadsafeCallContext<T>) -> Result<NewArgs>,\n    ErrorStatus: AsRef<str> + From<Status>,\n  {\n    ThreadsafeFunction::<T, Return, NewArgs, ErrorStatus, ES, Weak, MaxQueueSize>::create(\n      self.0.env,\n      self.0.value,\n      callback,\n    )\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/global.rs",
    "content": "use super::*;\nuse crate::bindgen_runtime::{FnArgs, FromNapiValue, Function, Unknown};\n\npub struct JsGlobal<'env>(\n  pub(crate) Value,\n  pub(crate) std::marker::PhantomData<&'env ()>,\n);\n\nimpl FromNapiValue for JsGlobal<'_> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Ok(JsGlobal(\n      Value {\n        env,\n        value: napi_val,\n        value_type: ValueType::Object,\n      },\n      std::marker::PhantomData,\n    ))\n  }\n}\n\nimpl<'env> JsValue<'env> for JsGlobal<'env> {\n  fn value(&self) -> Value {\n    self.0\n  }\n}\n\nimpl<'env> JsObjectValue<'env> for JsGlobal<'env> {}\n\npub struct JsTimeout<'env>(\n  pub(crate) Value,\n  pub(crate) std::marker::PhantomData<&'env ()>,\n);\n\nimpl<'env> JsValue<'env> for JsTimeout<'env> {\n  fn value(&self) -> Value {\n    self.0\n  }\n}\n\nimpl<'env> JsObjectValue<'env> for JsTimeout<'env> {}\n\nimpl FromNapiValue for JsTimeout<'_> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Ok(JsTimeout(\n      Value {\n        env,\n        value: napi_val,\n        value_type: ValueType::Object,\n      },\n      std::marker::PhantomData,\n    ))\n  }\n}\npub struct JSON<'env>(\n  pub(crate) Value,\n  pub(crate) std::marker::PhantomData<&'env ()>,\n);\n\nimpl<'env> JsValue<'env> for JSON<'env> {\n  fn value(&self) -> Value {\n    self.0\n  }\n}\n\nimpl<'env> JsObjectValue<'env> for JSON<'env> {}\n\nimpl FromNapiValue for JSON<'_> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Ok(JSON(\n      Value {\n        env,\n        value: napi_val,\n        value_type: ValueType::Object,\n      },\n      std::marker::PhantomData,\n    ))\n  }\n}\n\nimpl JSON<'_> {\n  pub fn stringify<V: ToNapiValue>(&self, value: V) -> Result<std::string::String> {\n    let func: Function<V, std::string::String> = self.get_named_property_unchecked(\"stringify\")?;\n    func.call(value)\n  }\n}\n\ntype SupportType<'a> = Function<'a, FnArgs<(Function<'a, (), Unknown<'a>>, f64)>, JsTimeout<'a>>;\n\nimpl<'env> JsGlobal<'env> {\n  pub fn set_interval(\n    &self,\n    handler: Function<(), Unknown>,\n    interval: f64,\n  ) -> Result<JsTimeout<'env>> {\n    let func: SupportType = self.get_named_property_unchecked(\"setInterval\")?;\n    func.call(FnArgs {\n      data: (handler, interval),\n    })\n  }\n\n  pub fn clear_interval(&self, timer: JsTimeout) -> Result<()> {\n    let func: Function<JsTimeout, ()> = self.get_named_property_unchecked(\"clearInterval\")?;\n    func.call(timer)\n  }\n\n  pub fn set_timeout(\n    &self,\n    handler: Function<(), Unknown>,\n    interval: f64,\n  ) -> Result<JsTimeout<'env>> {\n    let func: SupportType = self.get_named_property_unchecked(\"setTimeout\")?;\n    func.call(FnArgs {\n      data: (handler, interval),\n    })\n  }\n\n  pub fn clear_timeout(&self, timer: JsTimeout) -> Result<()> {\n    let func: Function<JsTimeout, ()> = self.get_named_property_unchecked(\"clearTimeout\")?;\n    func.call(timer)\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/mod.rs",
    "content": "#![allow(deprecated)]\n\n#[cfg(feature = \"compat-mode\")]\nuse std::convert::TryFrom;\n#[cfg(feature = \"compat-mode\")]\nuse std::ffi::CString;\n#[cfg(feature = \"compat-mode\")]\nuse std::ptr;\n\n#[cfg(all(feature = \"napi5\", feature = \"compat-mode\"))]\nuse crate::bindgen_runtime::finalize_closures;\n#[cfg(feature = \"compat-mode\")]\nuse crate::{\n  bindgen_runtime::{FromNapiValue, ValidateNapiValue},\n  check_status, type_of, Callback, Error, Status,\n};\nuse crate::{\n  bindgen_runtime::{JsObjectValue, ToNapiValue},\n  sys, Result, ValueType,\n};\n\n#[cfg(feature = \"compat-mode\")]\nmod arraybuffer;\n#[cfg(all(feature = \"napi6\", feature = \"compat-mode\"))]\nmod bigint;\n#[cfg(feature = \"compat-mode\")]\nmod boolean;\n#[cfg(feature = \"compat-mode\")]\nmod buffer;\n#[cfg(feature = \"napi5\")]\nmod date;\n#[cfg(feature = \"serde-json\")]\nmod de;\n#[cfg(feature = \"napi4\")]\nmod deferred;\nmod either;\nmod external;\n#[cfg(feature = \"compat-mode\")]\nmod function;\nmod global;\n#[cfg(feature = \"compat-mode\")]\nmod null;\nmod number;\n#[cfg(feature = \"compat-mode\")]\nmod object;\nmod object_property;\n#[cfg(feature = \"serde-json\")]\nmod ser;\nmod string;\nmod symbol;\nmod tagged_object;\n#[cfg(feature = \"compat-mode\")]\nmod undefined;\nmod unknown;\nmod value;\n#[cfg(feature = \"compat-mode\")]\nmod value_ref;\n\n#[cfg(feature = \"napi6\")]\npub use crate::bindgen_prelude::{KeyCollectionMode, KeyConversion, KeyFilter};\n#[cfg(feature = \"compat-mode\")]\npub use arraybuffer::*;\n#[cfg(all(feature = \"napi6\", feature = \"compat-mode\"))]\npub use bigint::JsBigInt;\n#[cfg(feature = \"compat-mode\")]\npub use boolean::JsBoolean;\n#[cfg(feature = \"compat-mode\")]\npub use buffer::*;\n#[cfg(feature = \"napi5\")]\npub use date::*;\n#[cfg(feature = \"serde-json\")]\npub use de::De;\n#[cfg(feature = \"napi4\")]\npub use deferred::*;\npub use either::Either;\npub use external::JsExternal;\n#[cfg(feature = \"compat-mode\")]\npub use function::JsFunction;\npub use global::*;\n#[cfg(feature = \"compat-mode\")]\npub use null::*;\npub use number::JsNumber;\n#[cfg(feature = \"compat-mode\")]\npub use object::*;\npub use object_property::*;\n#[cfg(feature = \"serde-json\")]\npub use ser::Ser;\npub use string::*;\npub use symbol::*;\npub(crate) use tagged_object::TaggedObject;\n#[cfg(feature = \"compat-mode\")]\npub use undefined::JsUndefined;\npub use unknown::{Unknown, UnknownRef};\npub use value::JsValue;\npub(crate) use value::Value;\n#[cfg(feature = \"compat-mode\")]\npub use value_ref::*;\n\n#[cfg(feature = \"compat-mode\")]\nmacro_rules! impl_napi_value_trait {\n  ($js_value:ident, $value_type:expr) => {\n    impl NapiValue for $js_value {\n      unsafe fn from_raw(env: sys::napi_env, value: sys::napi_value) -> Result<$js_value> {\n        let value_type = type_of!(env, value)?;\n        if value_type != $value_type {\n          Err(Error::new(\n            Status::InvalidArg,\n            format!(\"expect {:?}, got: {:?}\", $value_type, value_type),\n          ))\n        } else {\n          Ok($js_value(Value {\n            env,\n            value,\n            value_type: $value_type,\n          }))\n        }\n      }\n\n      unsafe fn from_raw_unchecked(env: sys::napi_env, value: sys::napi_value) -> $js_value {\n        $js_value(Value {\n          env,\n          value,\n          value_type: $value_type,\n        })\n      }\n    }\n\n    impl NapiRaw for $js_value {\n      unsafe fn raw(&self) -> sys::napi_value {\n        self.0.value\n      }\n    }\n\n    impl<'env> NapiRaw for &'env $js_value {\n      unsafe fn raw(&self) -> sys::napi_value {\n        self.0.value\n      }\n    }\n\n    impl TryFrom<Unknown<'_>> for $js_value {\n      type Error = Error;\n      fn try_from(value: Unknown) -> Result<$js_value> {\n        unsafe { $js_value::from_raw(value.0.env, value.0.value) }\n      }\n    }\n  };\n}\n\n#[cfg(feature = \"compat-mode\")]\nmacro_rules! impl_js_value_methods {\n  ($js_value:ident) => {\n    impl $js_value {\n      pub fn into_unknown<'env>(self) -> Unknown<'env> {\n        unsafe { Unknown::from_raw_unchecked(self.0.env, self.0.value) }\n      }\n\n      #[cfg(feature = \"compat-mode\")]\n      pub fn coerce_to_bool(self) -> Result<JsBoolean> {\n        let mut new_raw_value = ptr::null_mut();\n        check_status!(unsafe {\n          sys::napi_coerce_to_bool(self.0.env, self.0.value, &mut new_raw_value)\n        })?;\n        Ok(JsBoolean(Value {\n          env: self.0.env,\n          value: new_raw_value,\n          value_type: ValueType::Boolean,\n        }))\n      }\n\n      pub fn coerce_to_number<'env>(self) -> Result<JsNumber<'env>> {\n        let mut new_raw_value = ptr::null_mut();\n        check_status!(unsafe {\n          sys::napi_coerce_to_number(self.0.env, self.0.value, &mut new_raw_value)\n        })?;\n        Ok(JsNumber(\n          Value {\n            env: self.0.env,\n            value: new_raw_value,\n            value_type: ValueType::Number,\n          },\n          std::marker::PhantomData,\n        ))\n      }\n\n      pub fn coerce_to_string<'env>(self) -> Result<JsString<'env>> {\n        let mut new_raw_value = ptr::null_mut();\n        check_status!(unsafe {\n          sys::napi_coerce_to_string(self.0.env, self.0.value, &mut new_raw_value)\n        })?;\n        Ok(JsString(\n          Value {\n            env: self.0.env,\n            value: new_raw_value,\n            value_type: ValueType::String,\n          },\n          std::marker::PhantomData,\n        ))\n      }\n\n      pub fn coerce_to_object(self) -> Result<JsObject> {\n        let mut new_raw_value = ptr::null_mut();\n        check_status!(unsafe {\n          sys::napi_coerce_to_object(self.0.env, self.0.value, &mut new_raw_value)\n        })?;\n        Ok(JsObject(Value {\n          env: self.0.env,\n          value: new_raw_value,\n          value_type: ValueType::Object,\n        }))\n      }\n\n      #[cfg(feature = \"napi5\")]\n      pub fn is_date(&self) -> Result<bool> {\n        let mut is_date = true;\n        check_status!(unsafe { sys::napi_is_date(self.0.env, self.0.value, &mut is_date) })?;\n        Ok(is_date)\n      }\n\n      pub fn is_promise(&self) -> Result<bool> {\n        let mut is_promise = true;\n        check_status!(unsafe { sys::napi_is_promise(self.0.env, self.0.value, &mut is_promise) })?;\n        Ok(is_promise)\n      }\n\n      pub fn is_error(&self) -> Result<bool> {\n        let mut result = false;\n        check_status!(unsafe { sys::napi_is_error(self.0.env, self.0.value, &mut result) })?;\n        Ok(result)\n      }\n\n      pub fn is_typedarray(&self) -> Result<bool> {\n        let mut result = false;\n        check_status!(unsafe { sys::napi_is_typedarray(self.0.env, self.0.value, &mut result) })?;\n        Ok(result)\n      }\n\n      pub fn is_dataview(&self) -> Result<bool> {\n        let mut result = false;\n        check_status!(unsafe { sys::napi_is_dataview(self.0.env, self.0.value, &mut result) })?;\n        Ok(result)\n      }\n\n      pub fn is_array(&self) -> Result<bool> {\n        let mut is_array = false;\n        check_status!(unsafe { sys::napi_is_array(self.0.env, self.0.value, &mut is_array) })?;\n        Ok(is_array)\n      }\n\n      pub fn is_buffer(&self) -> Result<bool> {\n        let mut is_buffer = false;\n        check_status!(unsafe { sys::napi_is_buffer(self.0.env, self.0.value, &mut is_buffer) })?;\n        Ok(is_buffer)\n      }\n\n      pub fn is_arraybuffer(&self) -> Result<bool> {\n        let mut is_buffer = false;\n        check_status!(unsafe {\n          sys::napi_is_arraybuffer(self.0.env, self.0.value, &mut is_buffer)\n        })?;\n        Ok(is_buffer)\n      }\n\n      pub fn instanceof<Constructor>(&self, constructor: Constructor) -> Result<bool>\n      where\n        Constructor: NapiRaw,\n      {\n        let mut result = false;\n        check_status!(unsafe {\n          sys::napi_instanceof(self.0.env, self.0.value, constructor.raw(), &mut result)\n        })?;\n        Ok(result)\n      }\n    }\n  };\n}\n\n#[cfg(feature = \"compat-mode\")]\nmacro_rules! impl_object_methods {\n  ($js_value:ident) => {\n    impl $js_value {\n      pub fn set_property<K, V>(&mut self, key: K, value: V) -> Result<()>\n      where\n        K: ToNapiValue,\n        V: ToNapiValue,\n      {\n        check_status!(unsafe {\n          sys::napi_set_property(\n            self.0.env,\n            self.0.value,\n            ToNapiValue::to_napi_value(self.0.env, key)?,\n            ToNapiValue::to_napi_value(self.0.env, value)?,\n          )\n        })\n      }\n\n      pub fn get_property<K, T>(&self, key: K) -> Result<T>\n      where\n        K: ToNapiValue,\n        T: FromNapiValue,\n      {\n        let mut raw_value = ptr::null_mut();\n        check_status!(unsafe {\n          sys::napi_get_property(\n            self.0.env,\n            self.0.value,\n            ToNapiValue::to_napi_value(self.0.env, key)?,\n            &mut raw_value,\n          )\n        })?;\n        unsafe { T::from_napi_value(self.0.env, raw_value) }\n      }\n\n      pub fn get_property_unchecked<K, T>(&self, key: K) -> Result<T>\n      where\n        K: NapiRaw,\n        T: NapiValue,\n      {\n        let mut raw_value = ptr::null_mut();\n        check_status!(unsafe {\n          sys::napi_get_property(self.0.env, self.0.value, key.raw(), &mut raw_value)\n        })?;\n        Ok(unsafe { T::from_raw_unchecked(self.0.env, raw_value) })\n      }\n\n      pub fn set_named_property<T>(&mut self, name: &str, value: T) -> Result<()>\n      where\n        T: ToNapiValue,\n      {\n        let key = CString::new(name)?;\n        check_status!(unsafe {\n          sys::napi_set_named_property(\n            self.0.env,\n            self.0.value,\n            key.as_ptr(),\n            T::to_napi_value(self.0.env, value)?,\n          )\n        })\n      }\n\n      pub fn create_named_method(&mut self, name: &str, function: Callback) -> Result<()> {\n        let mut js_function = ptr::null_mut();\n        let len = name.len();\n        let name = CString::new(name)?;\n        check_status!(unsafe {\n          sys::napi_create_function(\n            self.0.env,\n            name.as_ptr(),\n            len as isize,\n            Some(function),\n            ptr::null_mut(),\n            &mut js_function,\n          )\n        })?;\n        check_status!(\n          unsafe {\n            sys::napi_set_named_property(self.0.env, self.0.value, name.as_ptr(), js_function)\n          },\n          \"create_named_method error\"\n        )\n      }\n\n      pub fn get_named_property<T>(&self, name: &str) -> Result<T>\n      where\n        T: FromNapiValue + ValidateNapiValue,\n      {\n        let key = CString::new(name)?;\n        let mut raw_value = ptr::null_mut();\n        check_status!(\n          unsafe {\n            sys::napi_get_named_property(self.0.env, self.0.value, key.as_ptr(), &mut raw_value)\n          },\n          \"get_named_property error\"\n        )?;\n        unsafe { <T as ValidateNapiValue>::validate(self.0.env, raw_value) }.map_err(\n          |mut err| {\n            err.reason = format!(\"Object property '{name}' type mismatch. {}\", err.reason);\n            err\n          },\n        )?;\n        unsafe { <T as FromNapiValue>::from_napi_value(self.0.env, raw_value) }\n      }\n\n      pub fn get_named_property_unchecked<T>(&self, name: &str) -> Result<T>\n      where\n        T: FromNapiValue,\n      {\n        let key = CString::new(name)?;\n        let mut raw_value = ptr::null_mut();\n        check_status!(\n          unsafe {\n            sys::napi_get_named_property(self.0.env, self.0.value, key.as_ptr(), &mut raw_value)\n          },\n          \"get_named_property_unchecked error\"\n        )?;\n        unsafe { <T as FromNapiValue>::from_napi_value(self.0.env, raw_value) }\n      }\n\n      pub fn has_named_property<N: AsRef<str>>(&self, name: N) -> Result<bool> {\n        let mut result = false;\n        let key = CString::new(name.as_ref())?;\n        check_status!(\n          unsafe {\n            sys::napi_has_named_property(self.0.env, self.0.value, key.as_ptr(), &mut result)\n          },\n          \"napi_has_named_property error\"\n        )?;\n        Ok(result)\n      }\n\n      pub fn delete_property<S>(&mut self, name: S) -> Result<bool>\n      where\n        S: ToNapiValue,\n      {\n        let mut result = false;\n        check_status!(unsafe {\n          sys::napi_delete_property(\n            self.0.env,\n            self.0.value,\n            ToNapiValue::to_napi_value(self.0.env, name)?,\n            &mut result,\n          )\n        })?;\n        Ok(result)\n      }\n\n      pub fn delete_named_property(&mut self, name: &str) -> Result<bool> {\n        let mut result = false;\n        let mut js_key = ptr::null_mut();\n        check_status!(unsafe {\n          sys::napi_create_string_utf8(\n            self.0.env,\n            name.as_ptr().cast(),\n            name.len() as isize,\n            &mut js_key,\n          )\n        })?;\n        check_status!(unsafe {\n          sys::napi_delete_property(self.0.env, self.0.value, js_key, &mut result)\n        })?;\n        Ok(result)\n      }\n\n      pub fn has_own_property(&self, key: &str) -> Result<bool> {\n        let mut result = false;\n        let mut js_key = ptr::null_mut();\n        check_status!(unsafe {\n          sys::napi_create_string_utf8(\n            self.0.env,\n            key.as_ptr().cast(),\n            key.len() as isize,\n            &mut js_key,\n          )\n        })?;\n        check_status!(unsafe {\n          sys::napi_has_own_property(self.0.env, self.0.value, js_key, &mut result)\n        })?;\n        Ok(result)\n      }\n\n      pub fn has_own_property_js<K>(&self, key: K) -> Result<bool>\n      where\n        K: ToNapiValue,\n      {\n        let mut result = false;\n        check_status!(unsafe {\n          sys::napi_has_own_property(\n            self.0.env,\n            self.0.value,\n            ToNapiValue::to_napi_value(self.0.env, key)?,\n            &mut result,\n          )\n        })?;\n        Ok(result)\n      }\n\n      pub fn has_property(&self, name: &str) -> Result<bool> {\n        let mut js_key = ptr::null_mut();\n        let mut result = false;\n        check_status!(unsafe {\n          sys::napi_create_string_utf8(\n            self.0.env,\n            name.as_ptr().cast(),\n            name.len() as isize,\n            &mut js_key,\n          )\n        })?;\n        check_status!(unsafe {\n          sys::napi_has_property(self.0.env, self.0.value, js_key, &mut result)\n        })?;\n        Ok(result)\n      }\n\n      pub fn has_property_js<K>(&self, name: K) -> Result<bool>\n      where\n        K: ToNapiValue,\n      {\n        let mut result = false;\n        check_status!(unsafe {\n          sys::napi_has_property(\n            self.0.env,\n            self.0.value,\n            ToNapiValue::to_napi_value(self.0.env, name)?,\n            &mut result,\n          )\n        })?;\n        Ok(result)\n      }\n\n      pub fn get_property_names(&self) -> Result<JsObject> {\n        let mut raw_value = ptr::null_mut();\n        check_status!(unsafe {\n          sys::napi_get_property_names(self.0.env, self.0.value, &mut raw_value)\n        })?;\n        Ok(unsafe { JsObject::from_raw_unchecked(self.0.env, raw_value) })\n      }\n\n      /// <https://nodejs.org/api/n-api.html#n_api_napi_get_all_property_names>\n      /// return `Array` of property names\n      #[cfg(feature = \"napi6\")]\n      pub fn get_all_property_names(\n        &self,\n        mode: KeyCollectionMode,\n        filter: KeyFilter,\n        conversion: KeyConversion,\n      ) -> Result<JsObject> {\n        let mut properties_value = ptr::null_mut();\n        check_status!(unsafe {\n          sys::napi_get_all_property_names(\n            self.0.env,\n            self.0.value,\n            mode.into(),\n            filter.into(),\n            conversion.into(),\n            &mut properties_value,\n          )\n        })?;\n        Ok(unsafe { JsObject::from_raw_unchecked(self.0.env, properties_value) })\n      }\n\n      /// This returns the equivalent of `Object.getPrototypeOf` (which is not the same as the function's prototype property).\n      pub fn get_prototype<T>(&self) -> Result<T>\n      where\n        T: NapiValue,\n      {\n        let mut result = ptr::null_mut();\n        check_status!(unsafe { sys::napi_get_prototype(self.0.env, self.0.value, &mut result) })?;\n        unsafe { T::from_raw(self.0.env, result) }\n      }\n\n      pub fn get_prototype_unchecked<T>(&self) -> Result<T>\n      where\n        T: NapiValue,\n      {\n        let mut result = ptr::null_mut();\n        check_status!(unsafe { sys::napi_get_prototype(self.0.env, self.0.value, &mut result) })?;\n        Ok(unsafe { T::from_raw_unchecked(self.0.env, result) })\n      }\n\n      pub fn set_element<T>(&mut self, index: u32, value: T) -> Result<()>\n      where\n        T: ToNapiValue,\n      {\n        check_status!(unsafe {\n          sys::napi_set_element(\n            self.0.env,\n            self.0.value,\n            index,\n            ToNapiValue::to_napi_value(self.0.env, value)?,\n          )\n        })\n      }\n\n      pub fn has_element(&self, index: u32) -> Result<bool> {\n        let mut result = false;\n        check_status!(unsafe {\n          sys::napi_has_element(self.0.env, self.0.value, index, &mut result)\n        })?;\n        Ok(result)\n      }\n\n      pub fn delete_element(&mut self, index: u32) -> Result<bool> {\n        let mut result = false;\n        check_status!(unsafe {\n          sys::napi_delete_element(self.0.env, self.0.value, index, &mut result)\n        })?;\n        Ok(result)\n      }\n\n      pub fn get_element<T>(&self, index: u32) -> Result<T>\n      where\n        T: FromNapiValue,\n      {\n        let mut raw_value = ptr::null_mut();\n        check_status!(unsafe {\n          sys::napi_get_element(self.0.env, self.0.value, index, &mut raw_value)\n        })?;\n        unsafe { T::from_napi_value(self.0.env, raw_value) }\n      }\n\n      pub fn get_element_unchecked<T>(&self, index: u32) -> Result<T>\n      where\n        T: NapiValue,\n      {\n        let mut raw_value = ptr::null_mut();\n        check_status!(unsafe {\n          sys::napi_get_element(self.0.env, self.0.value, index, &mut raw_value)\n        })?;\n        Ok(unsafe { T::from_raw_unchecked(self.0.env, raw_value) })\n      }\n\n      /// This method allows the efficient definition of multiple properties on a given object.\n      pub fn define_properties(&mut self, properties: &[Property]) -> Result<()> {\n        let properties_iter = properties.iter().map(|property| property.raw());\n        #[cfg(feature = \"napi5\")]\n        {\n          let mut closures = properties_iter\n            .clone()\n            .map(|p| p.data)\n            .filter(|data| !data.is_null())\n            .collect::<Vec<*mut std::ffi::c_void>>();\n          if !closures.is_empty() {\n            let finalize_hint = Box::into_raw(Box::new((closures.len(), closures.capacity())));\n            check_status!(unsafe {\n              sys::napi_add_finalizer(\n                self.0.env,\n                self.0.value,\n                closures.as_mut_ptr().cast(),\n                Some(finalize_closures),\n                finalize_hint.cast(),\n                ptr::null_mut(),\n              )\n            })?;\n            std::mem::forget(closures);\n          }\n        }\n        check_status!(unsafe {\n          sys::napi_define_properties(\n            self.0.env,\n            self.0.value,\n            properties.len(),\n            properties_iter\n              .collect::<Vec<sys::napi_property_descriptor>>()\n              .as_ptr(),\n          )\n        })\n      }\n\n      /// Perform `is_array` check before get the length\n      /// if `Object` is not array, `ArrayExpected` error returned\n      pub fn get_array_length(&self) -> Result<u32> {\n        if self.is_array()? != true {\n          return Err(Error::new(\n            Status::ArrayExpected,\n            \"Object is not array\".to_owned(),\n          ));\n        }\n        self.get_array_length_unchecked()\n      }\n\n      /// use this API if you can ensure this `Object` is `Array`\n      pub fn get_array_length_unchecked(&self) -> Result<u32> {\n        let mut length: u32 = 0;\n        check_status!(unsafe {\n          sys::napi_get_array_length(self.0.env, self.0.value, &mut length)\n        })?;\n        Ok(length)\n      }\n\n      #[cfg(feature = \"napi8\")]\n      pub fn freeze(&mut self) -> Result<()> {\n        check_status!(unsafe { sys::napi_object_freeze(self.0.env, self.0.value) })\n      }\n\n      #[cfg(feature = \"napi8\")]\n      pub fn seal(&mut self) -> Result<()> {\n        check_status!(unsafe { sys::napi_object_seal(self.0.env, self.0.value) })\n      }\n    }\n  };\n}\n\n#[cfg(feature = \"compat-mode\")]\npub trait NapiRaw {\n  #[allow(clippy::missing_safety_doc)]\n  unsafe fn raw(&self) -> sys::napi_value;\n}\n\n#[cfg(feature = \"compat-mode\")]\npub trait NapiValue: Sized + NapiRaw {\n  #[allow(clippy::missing_safety_doc)]\n  unsafe fn from_raw(env: sys::napi_env, value: sys::napi_value) -> Result<Self>;\n\n  #[allow(clippy::missing_safety_doc)]\n  unsafe fn from_raw_unchecked(env: sys::napi_env, value: sys::napi_value) -> Self;\n}\n\n#[cfg(feature = \"compat-mode\")]\nimpl_js_value_methods!(JsUndefined);\n#[cfg(feature = \"compat-mode\")]\nimpl_js_value_methods!(JsNull);\n#[cfg(feature = \"compat-mode\")]\nimpl_js_value_methods!(JsBoolean);\n#[cfg(feature = \"compat-mode\")]\nimpl_js_value_methods!(JsBuffer);\n#[cfg(feature = \"compat-mode\")]\nimpl_js_value_methods!(JsArrayBuffer);\n#[cfg(feature = \"compat-mode\")]\nimpl_js_value_methods!(JsTypedArray);\n#[cfg(feature = \"compat-mode\")]\nimpl_js_value_methods!(JsDataView);\n#[cfg(feature = \"compat-mode\")]\nimpl_js_value_methods!(JsObject);\n#[cfg(feature = \"compat-mode\")]\nimpl_js_value_methods!(JsFunction);\n\n#[cfg(feature = \"compat-mode\")]\nimpl_object_methods!(JsObject);\n#[cfg(feature = \"compat-mode\")]\nimpl_object_methods!(JsBuffer);\n#[cfg(feature = \"compat-mode\")]\nimpl_object_methods!(JsArrayBuffer);\n#[cfg(feature = \"compat-mode\")]\nimpl_object_methods!(JsTypedArray);\n#[cfg(feature = \"compat-mode\")]\nimpl_object_methods!(JsDataView);\n\n#[cfg(feature = \"compat-mode\")]\nimpl_napi_value_trait!(JsUndefined, ValueType::Undefined);\n#[cfg(feature = \"compat-mode\")]\nimpl_napi_value_trait!(JsNull, ValueType::Null);\n#[cfg(feature = \"compat-mode\")]\nimpl_napi_value_trait!(JsBoolean, ValueType::Boolean);\n#[cfg(feature = \"compat-mode\")]\nimpl_napi_value_trait!(JsBuffer, ValueType::Object);\n#[cfg(feature = \"compat-mode\")]\nimpl_napi_value_trait!(JsArrayBuffer, ValueType::Object);\n#[cfg(feature = \"compat-mode\")]\nimpl_napi_value_trait!(JsTypedArray, ValueType::Object);\n#[cfg(feature = \"compat-mode\")]\nimpl_napi_value_trait!(JsDataView, ValueType::Object);\n#[cfg(feature = \"compat-mode\")]\nimpl_napi_value_trait!(JsObject, ValueType::Object);\n#[cfg(feature = \"compat-mode\")]\nimpl_napi_value_trait!(JsFunction, ValueType::Object);\n"
  },
  {
    "path": "crates/napi/src/js_values/null.rs",
    "content": "use crate::{\n  bindgen_runtime::{TypeName, ValidateNapiValue},\n  Value, ValueType,\n};\n\n#[cfg(feature = \"compat-mode\")]\n#[deprecated(\n  since = \"3.0.0\",\n  note = \"Please use `napi::bindgen_prelude::Null` instead\"\n)]\n#[derive(Clone, Copy)]\npub struct JsNull(pub(crate) Value);\n\n#[cfg(feature = \"compat-mode\")]\nimpl TypeName for JsNull {\n  fn type_name() -> &'static str {\n    \"null\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Null\n  }\n}\n\n#[cfg(feature = \"compat-mode\")]\nimpl ValidateNapiValue for JsNull {}\n"
  },
  {
    "path": "crates/napi/src/js_values/number.rs",
    "content": "use std::convert::TryFrom;\n\nuse crate::{\n  bindgen_runtime::{FromNapiValue, TypeName, ValidateNapiValue},\n  check_status, sys, Error, JsValue, Result, Value, ValueType,\n};\n\n#[derive(Clone, Copy)]\npub struct JsNumber<'env>(\n  pub(crate) Value,\n  pub(crate) std::marker::PhantomData<&'env ()>,\n);\n\nimpl TypeName for JsNumber<'_> {\n  fn type_name() -> &'static str {\n    \"number\"\n  }\n\n  fn value_type() -> crate::ValueType {\n    ValueType::Number\n  }\n}\n\nimpl ValidateNapiValue for JsNumber<'_> {}\n\nimpl<'env> JsValue<'env> for JsNumber<'env> {\n  fn value(&self) -> Value {\n    self.0\n  }\n}\n\nimpl FromNapiValue for JsNumber<'_> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Ok(JsNumber(\n      Value {\n        env,\n        value: napi_val,\n        value_type: ValueType::Number,\n      },\n      std::marker::PhantomData,\n    ))\n  }\n}\n\nimpl JsNumber<'_> {\n  pub fn get_uint32(&self) -> Result<u32> {\n    let mut result = 0;\n    check_status!(unsafe { sys::napi_get_value_uint32(self.0.env, self.0.value, &mut result) })?;\n    Ok(result)\n  }\n\n  pub fn get_int32(&self) -> Result<i32> {\n    let mut result = 0;\n    check_status!(unsafe { sys::napi_get_value_int32(self.0.env, self.0.value, &mut result) })?;\n    Ok(result)\n  }\n\n  pub fn get_int64(&self) -> Result<i64> {\n    let mut result = 0;\n    check_status!(unsafe { sys::napi_get_value_int64(self.0.env, self.0.value, &mut result) })?;\n    Ok(result)\n  }\n\n  pub fn get_double(&self) -> Result<f64> {\n    let mut result = 0_f64;\n    check_status!(unsafe { sys::napi_get_value_double(self.0.env, self.0.value, &mut result) })?;\n    Ok(result)\n  }\n}\n\nimpl TryFrom<JsNumber<'_>> for u32 {\n  type Error = Error;\n\n  fn try_from(value: JsNumber) -> Result<u32> {\n    let mut result = 0;\n    check_status!(unsafe { sys::napi_get_value_uint32(value.0.env, value.0.value, &mut result) })?;\n    Ok(result)\n  }\n}\n\nimpl TryFrom<JsNumber<'_>> for i32 {\n  type Error = Error;\n\n  fn try_from(value: JsNumber) -> Result<i32> {\n    let mut result = 0;\n    check_status!(unsafe { sys::napi_get_value_int32(value.0.env, value.0.value, &mut result) })?;\n    Ok(result)\n  }\n}\n\nimpl TryFrom<JsNumber<'_>> for i64 {\n  type Error = Error;\n\n  fn try_from(value: JsNumber) -> Result<i64> {\n    let mut result = 0;\n    check_status!(unsafe { sys::napi_get_value_int64(value.0.env, value.0.value, &mut result) })?;\n    Ok(result)\n  }\n}\n\nimpl TryFrom<JsNumber<'_>> for f64 {\n  type Error = Error;\n\n  fn try_from(value: JsNumber) -> Result<f64> {\n    let mut result = 0_f64;\n    check_status!(unsafe { sys::napi_get_value_double(value.0.env, value.0.value, &mut result) })?;\n    Ok(result)\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/object.rs",
    "content": "#[cfg(feature = \"napi5\")]\nuse std::ffi::c_void;\n#[cfg(feature = \"napi5\")]\nuse std::ptr;\n\n#[cfg(feature = \"napi5\")]\nuse super::check_status;\nuse crate::{\n  bindgen_prelude::{FromNapiValue, ToNapiValue, TypeName, ValidateNapiValue},\n  sys, Result, Value, ValueType,\n};\n#[cfg(feature = \"napi5\")]\nuse crate::{bindgen_runtime::FinalizeContext, Env};\n\n#[deprecated(since = \"3.0.0\", note = \"Use `napi::bindgen_prelude::Object` instead\")]\n#[derive(Clone, Copy)]\npub struct JsObject(pub(crate) Value);\n\nimpl TypeName for JsObject {\n  fn type_name() -> &'static str {\n    \"Object\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Object\n  }\n}\n\nimpl ValidateNapiValue for JsObject {}\n\nimpl FromNapiValue for JsObject {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Ok(Self(Value {\n      env,\n      value: napi_val,\n      value_type: ValueType::Object,\n    }))\n  }\n}\n\nimpl ToNapiValue for JsObject {\n  unsafe fn to_napi_value(_: sys::napi_env, value: Self) -> Result<sys::napi_value> {\n    Ok(value.0.value)\n  }\n}\n\nimpl From<Value> for JsObject {\n  fn from(value: Value) -> Self {\n    Self(value)\n  }\n}\n\n#[cfg(feature = \"napi5\")]\nimpl JsObject {\n  pub fn add_finalizer<T, Hint, F>(\n    &mut self,\n    native: T,\n    finalize_hint: Hint,\n    finalize_cb: F,\n  ) -> Result<()>\n  where\n    T: 'static,\n    Hint: 'static,\n    F: FnOnce(FinalizeContext<T, Hint>) + 'static,\n  {\n    let mut maybe_ref = ptr::null_mut();\n    let wrap_context = Box::leak(Box::new((native, finalize_cb, ptr::null_mut())));\n    check_status!(unsafe {\n      sys::napi_add_finalizer(\n        self.0.env,\n        self.0.value,\n        wrap_context as *mut _ as *mut c_void,\n        Some(\n          finalize_callback::<T, Hint, F>\n            as unsafe extern \"C\" fn(\n              env: sys::napi_env,\n              finalize_data: *mut c_void,\n              finalize_hint: *mut c_void,\n            ),\n        ),\n        Box::leak(Box::new(finalize_hint)) as *mut _ as *mut c_void,\n        &mut maybe_ref, // Note: this does not point to the boxed one…\n      )\n    })?;\n    wrap_context.2 = maybe_ref;\n    Ok(())\n  }\n}\n\n#[cfg(feature = \"napi5\")]\nunsafe extern \"C\" fn finalize_callback<T, Hint, F>(\n  raw_env: sys::napi_env,\n  finalize_data: *mut c_void,\n  finalize_hint: *mut c_void,\n) where\n  T: 'static,\n  Hint: 'static,\n  F: FnOnce(FinalizeContext<T, Hint>),\n{\n  let (value, callback, raw_ref) =\n    unsafe { *Box::from_raw(finalize_data as *mut (T, F, sys::napi_ref)) };\n  let hint = unsafe { *Box::from_raw(finalize_hint as *mut Hint) };\n  let env = Env::from_raw(raw_env);\n  callback(FinalizeContext { env, value, hint });\n  if !raw_ref.is_null() {\n    let status = unsafe { sys::napi_delete_reference(raw_env, raw_ref) };\n    debug_assert!(\n      status == sys::Status::napi_ok,\n      \"Delete reference in finalize callback failed\"\n    );\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/object_property.rs",
    "content": "use std::convert::From;\n#[cfg(feature = \"napi5\")]\nuse std::ffi::c_void;\nuse std::ffi::CString;\nuse std::ptr;\n\nuse bitflags::bitflags;\n\n#[cfg(feature = \"napi5\")]\nuse crate::bindgen_runtime::{FromNapiValue, This};\nuse crate::{bindgen_runtime::ToNapiValue, sys, Callback, Env, JsValue, Result};\n\n#[cfg(feature = \"napi5\")]\n#[derive(Copy, Clone)]\npub struct PropertyClosures {\n  pub setter_closure: *mut c_void,\n  pub getter_closure: *mut c_void,\n  pub setter_drop_fn: Option<unsafe fn(*mut c_void)>,\n  pub getter_drop_fn: Option<unsafe fn(*mut c_void)>,\n}\n\n#[cfg(feature = \"napi5\")]\nimpl Default for PropertyClosures {\n  fn default() -> Self {\n    Self {\n      setter_closure: ptr::null_mut(),\n      getter_closure: ptr::null_mut(),\n      setter_drop_fn: None,\n      getter_drop_fn: None,\n    }\n  }\n}\n\n#[derive(Clone)]\npub struct Property {\n  utf8_name: Option<CString>,\n  name: sys::napi_value,\n  getter: sys::napi_callback,\n  setter: sys::napi_callback,\n  method: sys::napi_callback,\n  attrs: PropertyAttributes,\n  value: sys::napi_value,\n  pub(crate) is_ctor: bool,\n  #[cfg(feature = \"napi5\")]\n  pub(crate) closures: PropertyClosures,\n}\n\nimpl Default for Property {\n  fn default() -> Self {\n    Property {\n      utf8_name: Default::default(),\n      name: ptr::null_mut(),\n      getter: Default::default(),\n      setter: Default::default(),\n      method: Default::default(),\n      attrs: Default::default(),\n      value: ptr::null_mut(),\n      is_ctor: Default::default(),\n      #[cfg(feature = \"napi5\")]\n      closures: PropertyClosures::default(),\n    }\n  }\n}\n\nbitflags! {\n  #[derive(Debug, Copy, Clone)]\n  pub struct PropertyAttributes: i32 {\n    const Default = sys::PropertyAttributes::default;\n    const Writable = sys::PropertyAttributes::writable;\n    const Enumerable = sys::PropertyAttributes::enumerable;\n    const Configurable = sys::PropertyAttributes::configurable;\n    const Static = sys::PropertyAttributes::static_;\n  }\n}\n\nimpl Default for PropertyAttributes {\n  fn default() -> Self {\n    PropertyAttributes::Configurable | PropertyAttributes::Enumerable | PropertyAttributes::Writable\n  }\n}\n\nimpl From<PropertyAttributes> for sys::napi_property_attributes {\n  fn from(value: PropertyAttributes) -> Self {\n    value.bits()\n  }\n}\n\nimpl Property {\n  pub fn new() -> Self {\n    Default::default()\n  }\n\n  pub fn with_utf8_name(mut self, name: &str) -> Result<Self> {\n    self.utf8_name = Some(CString::new(name)?);\n    Ok(self)\n  }\n\n  pub fn with_name<T: ToNapiValue>(mut self, env: &Env, name: T) -> Result<Self> {\n    self.name = unsafe { T::to_napi_value(env.0, name)? };\n    Ok(self)\n  }\n\n  pub fn with_method(mut self, callback: Callback) -> Self {\n    self.method = Some(callback);\n    self\n  }\n\n  pub fn with_getter(mut self, callback: Callback) -> Self {\n    self.getter = Some(callback);\n    self\n  }\n\n  #[cfg(feature = \"napi5\")]\n  pub fn with_getter_closure<R, F>(mut self, callback: F) -> Self\n  where\n    F: 'static + Fn(Env, This) -> Result<R>,\n    R: ToNapiValue,\n  {\n    let boxed_callback = Box::new(callback);\n    let closure_data_ptr: *mut F = Box::into_raw(boxed_callback);\n    self.closures.getter_closure = closure_data_ptr.cast();\n    self.closures.getter_drop_fn = Some(|ptr: *mut c_void| unsafe {\n      drop(Box::from_raw(ptr as *mut F));\n    });\n\n    let fun = crate::trampoline_getter::<R, F>;\n    self.getter = Some(fun);\n    self\n  }\n\n  pub fn with_setter(mut self, callback: Callback) -> Self {\n    self.setter = Some(callback);\n    self\n  }\n\n  #[cfg(feature = \"napi5\")]\n  pub fn with_setter_closure<F, V>(mut self, callback: F) -> Self\n  where\n    F: 'static + Fn(crate::Env, This, V) -> Result<()>,\n    V: FromNapiValue,\n  {\n    let boxed_callback = Box::new(callback);\n    let closure_data_ptr: *mut F = Box::into_raw(boxed_callback);\n    self.closures.setter_closure = closure_data_ptr.cast();\n    self.closures.setter_drop_fn = Some(|ptr: *mut c_void| unsafe {\n      drop(Box::from_raw(ptr as *mut F));\n    });\n\n    let fun = crate::trampoline_setter::<V, F>;\n    self.setter = Some(fun);\n    self\n  }\n\n  pub fn with_property_attributes(mut self, attributes: PropertyAttributes) -> Self {\n    self.attrs = attributes;\n    self\n  }\n\n  pub fn with_value<'env, T: JsValue<'env>>(mut self, value: &T) -> Self {\n    self.value = T::raw(value);\n    self\n  }\n\n  pub fn with_napi_value<T: ToNapiValue>(mut self, env: &Env, value: T) -> Result<Self> {\n    self.value = unsafe { T::to_napi_value(env.0, value)? };\n    Ok(self)\n  }\n\n  pub(crate) fn raw(&self) -> sys::napi_property_descriptor {\n    #[cfg(feature = \"napi5\")]\n    let data = if self.closures.getter_closure.is_null() && self.closures.setter_closure.is_null() {\n      // No closures to allocate, avoid memory leak\n      ptr::null_mut()\n    } else {\n      // Only allocate when we actually have closures\n      Box::into_raw(Box::new(self.closures)).cast()\n    };\n\n    sys::napi_property_descriptor {\n      utf8name: match self.utf8_name {\n        Some(ref name) => name.as_ptr(),\n        None => ptr::null(),\n      },\n      name: self.name,\n      method: self.method,\n      getter: self.getter,\n      setter: self.setter,\n      value: self.value,\n      attributes: self.attrs.into(),\n      #[cfg(not(feature = \"napi5\"))]\n      data: ptr::null_mut(),\n      #[cfg(feature = \"napi5\")]\n      data,\n    }\n  }\n\n  pub fn with_ctor(mut self, callback: Callback) -> Self {\n    self.method = Some(callback);\n    self.is_ctor = true;\n    self\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/ser.rs",
    "content": "use std::{marker::PhantomData, result::Result as StdResult};\n\nuse serde::{ser, Serialize, Serializer};\n\nuse crate::{\n  bindgen_runtime::{Array, BufferSlice, JsObjectValue, Null, Object, ToNapiValue},\n  Env, Error, JsString, JsValue, Result, Unknown, Value, ValueType,\n};\n\npub struct Ser<'env>(pub(crate) &'env Env);\n\nimpl<'env> Ser<'env> {\n  pub fn new(env: &'env Env) -> Self {\n    Self(env)\n  }\n}\n\nimpl<'env> Serializer for Ser<'env> {\n  type Ok = Value;\n  type Error = Error;\n\n  type SerializeSeq = SeqSerializer<'env>;\n  type SerializeTuple = SeqSerializer<'env>;\n  type SerializeTupleStruct = SeqSerializer<'env>;\n  type SerializeTupleVariant = SeqSerializer<'env>;\n  type SerializeMap = MapSerializer<'env>;\n  type SerializeStruct = StructSerializer<'env>;\n  type SerializeStructVariant = StructSerializer<'env>;\n\n  fn serialize_bool(self, v: bool) -> Result<Self::Ok> {\n    Ok(Value {\n      env: self.0 .0,\n      value: unsafe { ToNapiValue::to_napi_value(self.0 .0, v)? },\n      value_type: ValueType::Boolean,\n    })\n  }\n\n  fn serialize_bytes(self, v: &[u8]) -> Result<Self::Ok> {\n    BufferSlice::from_data(self.0, v.to_owned()).map(|bs| Value {\n      env: self.0.raw(),\n      value: bs.raw_value,\n      value_type: ValueType::Object,\n    })\n  }\n\n  fn serialize_char(self, v: char) -> Result<Self::Ok> {\n    let mut b = [0; 4];\n    let result = v.encode_utf8(&mut b);\n    self.0.create_string(result).map(|js_string| js_string.0)\n  }\n\n  fn serialize_f32(self, v: f32) -> Result<Self::Ok> {\n    Ok(Value {\n      env: self.0.raw(),\n      value: unsafe { ToNapiValue::to_napi_value(self.0 .0, v)? },\n      value_type: ValueType::Number,\n    })\n  }\n\n  fn serialize_f64(self, v: f64) -> Result<Self::Ok> {\n    Ok(Value {\n      env: self.0.raw(),\n      value: unsafe { ToNapiValue::to_napi_value(self.0 .0, v)? },\n      value_type: ValueType::Number,\n    })\n  }\n\n  fn serialize_i16(self, v: i16) -> Result<Self::Ok> {\n    Ok(Value {\n      env: self.0.raw(),\n      value: unsafe { ToNapiValue::to_napi_value(self.0 .0, v as i32)? },\n      value_type: ValueType::Number,\n    })\n  }\n\n  fn serialize_i32(self, v: i32) -> Result<Self::Ok> {\n    Ok(Value {\n      env: self.0.raw(),\n      value: unsafe { ToNapiValue::to_napi_value(self.0 .0, v)? },\n      value_type: ValueType::Number,\n    })\n  }\n\n  fn serialize_i64(self, v: i64) -> Result<Self::Ok> {\n    Ok(Value {\n      env: self.0.raw(),\n      value: unsafe { ToNapiValue::to_napi_value(self.0 .0, v)? },\n      value_type: ValueType::Number,\n    })\n  }\n\n  fn serialize_i8(self, v: i8) -> Result<Self::Ok> {\n    Ok(Value {\n      env: self.0.raw(),\n      value: unsafe { ToNapiValue::to_napi_value(self.0 .0, v as i32)? },\n      value_type: ValueType::Number,\n    })\n  }\n\n  fn serialize_u8(self, v: u8) -> Result<Self::Ok> {\n    Ok(Value {\n      env: self.0.raw(),\n      value: unsafe { ToNapiValue::to_napi_value(self.0 .0, v as u32)? },\n      value_type: ValueType::Number,\n    })\n  }\n\n  fn serialize_u16(self, v: u16) -> Result<Self::Ok> {\n    Ok(Value {\n      env: self.0.raw(),\n      value: unsafe { ToNapiValue::to_napi_value(self.0 .0, v as u32)? },\n      value_type: ValueType::Number,\n    })\n  }\n\n  fn serialize_u32(self, v: u32) -> Result<Self::Ok> {\n    Ok(Value {\n      env: self.0.raw(),\n      value: unsafe { ToNapiValue::to_napi_value(self.0 .0, v)? },\n      value_type: ValueType::Number,\n    })\n  }\n\n  #[cfg(all(\n    any(\n      feature = \"napi2\",\n      feature = \"napi3\",\n      feature = \"napi4\",\n      feature = \"napi5\"\n    ),\n    not(feature = \"napi6\")\n  ))]\n  fn serialize_u64(self, v: u64) -> Result<Self::Ok> {\n    if v <= u32::MAX.into() {\n      self.serialize_u32(v as u32)\n    } else {\n      Err(Error::new(\n        crate::Status::InvalidArg,\n        \"u64 is too large to serialize, enable napi6 feature and serialize it as BigInt instead\",\n      ))\n    }\n  }\n\n  #[cfg(feature = \"napi6\")]\n  fn serialize_u64(self, v: u64) -> Result<Self::Ok> {\n    // https://github.com/napi-rs/napi-rs/issues/1470\n    // serde_json::Value by default uses u64 for positive integers. This results in napirs using a BigInt instead of a number when converting to a js value.\n    // To avoid this, we need to check if the value fits into a smaller number type.\n    // If this is the case, we use the smaller type instead.\n    if v <= u32::MAX.into() {\n      self.serialize_u32(v as u32)\n    } else {\n      Ok(Value {\n        env: self.0.raw(),\n        value: unsafe { ToNapiValue::to_napi_value(self.0 .0, v)? },\n        value_type: ValueType::Number,\n      })\n    }\n  }\n\n  #[cfg(all(\n    any(\n      feature = \"napi2\",\n      feature = \"napi3\",\n      feature = \"napi4\",\n      feature = \"napi5\"\n    ),\n    not(feature = \"napi6\")\n  ))]\n  fn serialize_u128(self, v: u128) -> Result<Self::Ok> {\n    Ok(Value {\n      env: self.0.raw(),\n      value: unsafe { ToNapiValue::to_napi_value(self.0 .0, v.to_string())? },\n      value_type: ValueType::Number,\n    })\n  }\n\n  #[cfg(feature = \"napi6\")]\n  fn serialize_u128(self, v: u128) -> Result<Self::Ok> {\n    Ok(Value {\n      env: self.0.raw(),\n      value: unsafe { ToNapiValue::to_napi_value(self.0 .0, v)? },\n      value_type: ValueType::Number,\n    })\n  }\n\n  #[cfg(all(\n    any(\n      feature = \"napi2\",\n      feature = \"napi3\",\n      feature = \"napi4\",\n      feature = \"napi5\"\n    ),\n    not(feature = \"napi6\")\n  ))]\n  fn serialize_i128(self, v: i128) -> Result<Self::Ok> {\n    Ok(Value {\n      env: self.0.raw(),\n      value: unsafe { ToNapiValue::to_napi_value(self.0 .0, v.to_string())? },\n      value_type: ValueType::Number,\n    })\n  }\n\n  #[cfg(feature = \"napi6\")]\n  fn serialize_i128(self, v: i128) -> Result<Self::Ok> {\n    Ok(Value {\n      env: self.0.raw(),\n      value: unsafe { ToNapiValue::to_napi_value(self.0 .0, v)? },\n      value_type: ValueType::Number,\n    })\n  }\n\n  fn serialize_unit(self) -> Result<Self::Ok> {\n    Ok(Value {\n      env: self.0.raw(),\n      value: unsafe { ToNapiValue::to_napi_value(self.0 .0, Null) }?,\n      value_type: ValueType::Null,\n    })\n  }\n\n  fn serialize_none(self) -> Result<Self::Ok> {\n    Ok(Value {\n      env: self.0.raw(),\n      value: unsafe { ToNapiValue::to_napi_value(self.0 .0, Null) }?,\n      value_type: ValueType::Null,\n    })\n  }\n\n  fn serialize_str(self, v: &str) -> Result<Self::Ok> {\n    self.0.create_string(v).map(|string| string.0)\n  }\n\n  fn serialize_some<T>(self, value: &T) -> Result<Self::Ok>\n  where\n    T: ?Sized + Serialize,\n  {\n    value.serialize(self)\n  }\n\n  fn serialize_map(self, _len: Option<usize>) -> Result<Self::SerializeMap> {\n    let env = self.0;\n    let key = env.create_string(\"\")?;\n    let obj = Object::new(env)?;\n    Ok(MapSerializer { key, obj })\n  }\n\n  fn serialize_seq(self, len: Option<usize>) -> Result<Self::SerializeSeq> {\n    let array = Array::new(self.0.raw(), len.unwrap_or(0) as u32)?;\n    Ok(SeqSerializer {\n      current_index: 0,\n      array,\n    })\n  }\n\n  fn serialize_tuple_variant(\n    self,\n    _name: &'static str,\n    _variant_index: u32,\n    variant: &'static str,\n    len: usize,\n  ) -> Result<Self::SerializeTupleVariant> {\n    let env = self.0;\n    let array = Array::new(env.raw(), len as u32)?;\n    let mut object = Object::new(env)?;\n    object.set_named_property(\n      variant,\n      Object(\n        Value {\n          value: array.inner,\n          env: array.env,\n          value_type: ValueType::Object,\n        },\n        PhantomData,\n      ),\n    )?;\n    Ok(SeqSerializer {\n      current_index: 0,\n      array,\n    })\n  }\n\n  fn serialize_unit_struct(self, _name: &'static str) -> Result<Self::Ok> {\n    Ok(Value {\n      env: self.0.raw(),\n      value: unsafe { ToNapiValue::to_napi_value(self.0 .0, Null) }?,\n      value_type: ValueType::Null,\n    })\n  }\n\n  fn serialize_unit_variant(\n    self,\n    _name: &'static str,\n    _variant_index: u32,\n    variant: &'static str,\n  ) -> Result<Self::Ok> {\n    self.0.create_string(variant).map(|string| string.0)\n  }\n\n  fn serialize_newtype_struct<T>(self, _name: &'static str, value: &T) -> Result<Self::Ok>\n  where\n    T: ?Sized + Serialize,\n  {\n    value.serialize(self)\n  }\n\n  fn serialize_newtype_variant<T>(\n    self,\n    _name: &'static str,\n    _variant_index: u32,\n    variant: &'static str,\n    value: &T,\n  ) -> Result<Self::Ok>\n  where\n    T: ?Sized + Serialize,\n  {\n    let mut obj = Object::new(self.0)?;\n    obj.set_named_property(\n      variant,\n      Unknown(value.serialize(self)?, std::marker::PhantomData),\n    )?;\n    Ok(obj.0)\n  }\n\n  fn serialize_tuple(self, len: usize) -> Result<Self::SerializeTuple> {\n    Ok(SeqSerializer {\n      array: Array::new(self.0.raw(), len as u32)?,\n      current_index: 0,\n    })\n  }\n\n  fn serialize_tuple_struct(\n    self,\n    _name: &'static str,\n    len: usize,\n  ) -> Result<Self::SerializeTupleStruct> {\n    Ok(SeqSerializer {\n      array: Array::new(self.0.raw(), len as u32)?,\n      current_index: 0,\n    })\n  }\n\n  fn serialize_struct(self, _name: &'static str, _len: usize) -> Result<Self::SerializeStruct> {\n    Ok(StructSerializer {\n      obj: Object::new(self.0)?,\n    })\n  }\n\n  fn serialize_struct_variant(\n    self,\n    _name: &'static str,\n    _variant_index: u32,\n    variant: &'static str,\n    _len: usize,\n  ) -> Result<Self::SerializeStructVariant> {\n    let mut outer = Object::new(self.0)?;\n    let inner = Object::new(self.0)?;\n    outer.set_named_property(\n      variant,\n      Object(\n        Value {\n          env: inner.0.env,\n          value: inner.0.value,\n          value_type: ValueType::Object,\n        },\n        PhantomData,\n      ),\n    )?;\n    Ok(StructSerializer {\n      obj: Object::new(self.0)?,\n    })\n  }\n}\n\npub struct SeqSerializer<'env> {\n  array: Array<'env>,\n  current_index: usize,\n}\n\nimpl ser::SerializeSeq for SeqSerializer<'_> {\n  type Ok = Value;\n  type Error = Error;\n\n  fn serialize_element<T>(&mut self, value: &T) -> StdResult<(), Self::Error>\n  where\n    T: ?Sized + Serialize,\n  {\n    let env = Env::from_raw(self.array.env);\n    self.array.set_element(\n      self.current_index as _,\n      Unknown(value.serialize(Ser::new(&env))?, std::marker::PhantomData),\n    )?;\n    self.current_index += 1;\n    Ok(())\n  }\n\n  fn end(self) -> Result<Self::Ok> {\n    Ok(self.array.value())\n  }\n}\n\n#[doc(hidden)]\nimpl ser::SerializeTuple for SeqSerializer<'_> {\n  type Ok = Value;\n  type Error = Error;\n\n  fn serialize_element<T>(&mut self, value: &T) -> StdResult<(), Self::Error>\n  where\n    T: ?Sized + Serialize,\n  {\n    let env = Env::from_raw(self.array.env);\n    self.array.set_element(\n      self.current_index as _,\n      Unknown(value.serialize(Ser::new(&env))?, std::marker::PhantomData),\n    )?;\n    self.current_index += 1;\n    Ok(())\n  }\n\n  fn end(self) -> StdResult<Self::Ok, Self::Error> {\n    Ok(self.array.value())\n  }\n}\n\n#[doc(hidden)]\nimpl ser::SerializeTupleStruct for SeqSerializer<'_> {\n  type Ok = Value;\n  type Error = Error;\n\n  fn serialize_field<T>(&mut self, value: &T) -> StdResult<(), Self::Error>\n  where\n    T: ?Sized + Serialize,\n  {\n    let env = Env::from_raw(self.array.env);\n    self.array.set_element(\n      self.current_index as _,\n      Unknown(value.serialize(Ser::new(&env))?, std::marker::PhantomData),\n    )?;\n    self.current_index += 1;\n    Ok(())\n  }\n\n  fn end(self) -> StdResult<Self::Ok, Self::Error> {\n    Ok(self.array.value())\n  }\n}\n\n#[doc(hidden)]\nimpl ser::SerializeTupleVariant for SeqSerializer<'_> {\n  type Ok = Value;\n  type Error = Error;\n\n  fn serialize_field<T>(&mut self, value: &T) -> StdResult<(), Self::Error>\n  where\n    T: ?Sized + Serialize,\n  {\n    let env = Env::from_raw(self.array.env);\n    self.array.set_element(\n      self.current_index as _,\n      Unknown(value.serialize(Ser::new(&env))?, std::marker::PhantomData),\n    )?;\n    self.current_index += 1;\n    Ok(())\n  }\n\n  fn end(self) -> Result<Self::Ok> {\n    Ok(self.array.value())\n  }\n}\n\npub struct MapSerializer<'env> {\n  key: JsString<'env>,\n  obj: Object<'env>,\n}\n\n#[doc(hidden)]\nimpl ser::SerializeMap for MapSerializer<'_> {\n  type Ok = Value;\n  type Error = Error;\n\n  fn serialize_key<T>(&mut self, key: &T) -> StdResult<(), Self::Error>\n  where\n    T: ?Sized + Serialize,\n  {\n    let env = Env::from_raw(self.obj.0.env);\n    self.key = JsString(key.serialize(Ser::new(&env))?, std::marker::PhantomData);\n    Ok(())\n  }\n\n  fn serialize_value<T>(&mut self, value: &T) -> StdResult<(), Self::Error>\n  where\n    T: ?Sized + Serialize,\n  {\n    let env = Env::from_raw(self.obj.0.env);\n    self.obj.set_property(\n      JsString::from_raw(self.key.0.env, self.key.0.value),\n      Unknown(value.serialize(Ser::new(&env))?, std::marker::PhantomData),\n    )?;\n    Ok(())\n  }\n\n  fn serialize_entry<K, V>(&mut self, key: &K, value: &V) -> StdResult<(), Self::Error>\n  where\n    K: ?Sized + Serialize,\n    V: ?Sized + Serialize,\n  {\n    let env = Env::from_raw(self.obj.0.env);\n    self.obj.set_property(\n      JsString(key.serialize(Ser::new(&env))?, std::marker::PhantomData),\n      Unknown(value.serialize(Ser::new(&env))?, std::marker::PhantomData),\n    )?;\n    Ok(())\n  }\n\n  fn end(self) -> Result<Self::Ok> {\n    Ok(self.obj.0)\n  }\n}\n\npub struct StructSerializer<'env> {\n  obj: Object<'env>,\n}\n\n#[doc(hidden)]\nimpl ser::SerializeStruct for StructSerializer<'_> {\n  type Ok = Value;\n  type Error = Error;\n\n  fn serialize_field<T>(&mut self, key: &'static str, value: &T) -> StdResult<(), Error>\n  where\n    T: ?Sized + Serialize,\n  {\n    let env = Env::from_raw(self.obj.0.env);\n    self.obj.set_named_property(\n      key,\n      Unknown(value.serialize(Ser::new(&env))?, std::marker::PhantomData),\n    )?;\n    Ok(())\n  }\n\n  fn end(self) -> Result<Self::Ok> {\n    Ok(self.obj.0)\n  }\n}\n\n#[doc(hidden)]\nimpl ser::SerializeStructVariant for StructSerializer<'_> {\n  type Ok = Value;\n  type Error = Error;\n\n  fn serialize_field<T>(&mut self, key: &'static str, value: &T) -> StdResult<(), Error>\n  where\n    T: ?Sized + Serialize,\n  {\n    let env = Env::from_raw(self.obj.0.env);\n    self.obj.set_named_property(\n      key,\n      Unknown(value.serialize(Ser::new(&env))?, std::marker::PhantomData),\n    )?;\n    Ok(())\n  }\n\n  fn end(self) -> Result<Self::Ok> {\n    Ok(self.obj.0)\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/string/latin1.rs",
    "content": "#[cfg(feature = \"napi10\")]\nuse std::ffi::c_void;\n\nuse crate::{bindgen_prelude::ToNapiValue, sys, JsString, Result};\n\n#[cfg(feature = \"napi10\")]\nuse crate::Env;\n\npub struct JsStringLatin1<'env> {\n  pub(crate) inner: JsString<'env>,\n  pub(crate) buf: &'env [u8],\n  pub(crate) _inner_buf: Vec<u8>,\n}\n\nimpl<'env> JsStringLatin1<'env> {\n  #[cfg(feature = \"napi10\")]\n  /// Try to create a new JavaScript latin1 string from a Rust `Vec<u8>` without copying the data\n  /// ## Behavior\n  ///\n  /// The `copied` parameter in the underlying `node_api_create_external_string_latin1` call\n  /// indicates whether the string data was copied into V8's heap rather than being used\n  /// as an external reference.\n  ///\n  /// ### When `copied` is `true`:\n  /// - String data is copied to V8's heap\n  /// - Finalizer is called immediately if provided\n  /// - Original buffer can be freed after the call\n  /// - Performance benefit of external strings is not achieved\n  ///\n  /// ### When `copied` is `false`:\n  /// - V8 creates an external string that references the original buffer without copying\n  /// - Original buffer must remain valid for the lifetime of the JS string\n  /// - Finalizer called when string is garbage collected\n  /// - Memory usage and copying overhead is reduced\n  ///\n  /// ## Common scenarios where `copied` is `true`:\n  /// - String is too short (typically < 10-15 characters)\n  /// - V8 heap is under memory pressure\n  /// - V8 is running with pointer compression or sandbox features\n  /// - Invalid Latin-1 encoding that requires sanitization\n  /// - Platform doesn't support external strings\n  /// - Memory alignment issues with the provided buffer\n  ///\n  /// The `copied` parameter serves as feedback to understand whether the external string\n  /// optimization was successful or if V8 fell back to traditional string creation.\n  pub fn from_data(env: &'env Env, data: Vec<u8>) -> Result<JsStringLatin1<'env>> {\n    use std::{mem, ptr};\n\n    use crate::{check_status, Error, Status, Value, ValueType};\n\n    if data.is_empty() {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Cannot create external string from empty data\".to_owned(),\n      ));\n    }\n\n    let mut raw_value = ptr::null_mut();\n    let mut copied = false;\n    let data_ptr = data.as_ptr();\n    let len = data.len();\n    let cap = data.capacity();\n    let finalize_hint = Box::into_raw(Box::new((len, cap)));\n\n    check_status!(\n      unsafe {\n        sys::node_api_create_external_string_latin1(\n          env.0,\n          data_ptr.cast(),\n          len as isize,\n          Some(drop_latin1_string),\n          finalize_hint.cast(),\n          &mut raw_value,\n          &mut copied,\n        )\n      },\n      \"Failed to create external string latin1\"\n    )?;\n\n    let inner_buf = if copied {\n      // If the data was copied, the finalizer won't be called\n      // We need to clean up the finalize_hint and let the Vec be dropped\n      unsafe {\n        let _ = Box::from_raw(finalize_hint);\n      };\n      data\n    } else {\n      // Only forget the data if it wasn't copied\n      // The finalizer will handle cleanup\n      mem::forget(data);\n      vec![]\n    };\n\n    Ok(Self {\n      inner: JsString(\n        Value {\n          env: env.0,\n          value: raw_value,\n          value_type: ValueType::String,\n        },\n        std::marker::PhantomData,\n      ),\n      buf: unsafe { std::slice::from_raw_parts(data_ptr, len) },\n      _inner_buf: inner_buf,\n    })\n  }\n\n  #[cfg(feature = \"napi10\")]\n  /// Creates an external Latin-1 string from raw data with a custom finalize callback.\n  ///\n  /// ## Safety\n  ///\n  /// The caller must ensure that:\n  /// - The data pointer is valid for the lifetime of the string\n  /// - The finalize callback properly cleans up the data\n  ///\n  /// ## Behavior\n  ///\n  /// The `copied` parameter in the underlying `node_api_create_external_string_latin1` call\n  /// indicates whether the string data was copied into V8's heap rather than being used\n  /// as an external reference.\n  ///\n  /// ### When `copied` is `true`:\n  /// - String data is copied to V8's heap\n  /// - Finalizer is called immediately if provided\n  /// - Original buffer can be freed after the call\n  /// - Performance benefit of external strings is not achieved\n  ///\n  /// ### When `copied` is `false`:\n  /// - V8 creates an external string that references the original buffer without copying\n  /// - Original buffer must remain valid for the lifetime of the JS string\n  /// - Finalizer called when string is garbage collected\n  /// - Memory usage and copying overhead is reduced\n  ///\n  /// ## Common scenarios where `copied` is `true`:\n  /// - String is too short (typically < 10-15 characters)\n  /// - V8 heap is under memory pressure\n  /// - V8 is running with pointer compression or sandbox features\n  /// - Invalid Latin-1 encoding that requires sanitization\n  /// - Platform doesn't support external strings\n  /// - Memory alignment issues with the provided buffer\n  ///\n  /// The `copied` parameter serves as feedback to understand whether the external string\n  /// optimization was successful or if V8 fell back to traditional string creation.\n  pub unsafe fn from_external<T: 'env, F: FnOnce(Env, T) + 'env>(\n    env: &'env Env,\n    data: *const u8,\n    len: usize,\n    finalize_hint: T,\n    finalize_callback: F,\n  ) -> Result<JsStringLatin1<'env>> {\n    use std::ptr;\n\n    use crate::{check_status, Error, Status, Value, ValueType};\n\n    if data.is_null() {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Data pointer should not be null\".to_owned(),\n      ));\n    }\n\n    let hint_ptr = Box::into_raw(Box::new((finalize_hint, finalize_callback)));\n    let mut raw_value = ptr::null_mut();\n    let mut copied = false;\n\n    check_status!(\n      unsafe {\n        sys::node_api_create_external_string_latin1(\n          env.0,\n          data.cast(),\n          len as isize,\n          Some(finalize_with_custom_callback::<T, F>),\n          hint_ptr.cast(),\n          &mut raw_value,\n          &mut copied,\n        )\n      },\n      \"Failed to create external string latin1\"\n    )?;\n\n    if copied {\n      unsafe {\n        let (hint, finalize) = *Box::from_raw(hint_ptr);\n        finalize(*env, hint);\n      }\n    }\n\n    Ok(Self {\n      inner: JsString(\n        Value {\n          env: env.0,\n          value: raw_value,\n          value_type: ValueType::String,\n        },\n        std::marker::PhantomData,\n      ),\n      buf: unsafe { std::slice::from_raw_parts(data, len) },\n      _inner_buf: vec![],\n    })\n  }\n\n  #[cfg(feature = \"napi10\")]\n  pub fn from_static(env: &'env Env, string: &'static str) -> Result<JsStringLatin1<'env>> {\n    use std::ptr;\n\n    use crate::{check_status, Error, Status, Value, ValueType};\n\n    if string.is_empty() {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Data pointer should not be null\".to_owned(),\n      ));\n    }\n\n    let mut raw_value = ptr::null_mut();\n    let mut copied = false;\n\n    check_status!(\n      unsafe {\n        sys::node_api_create_external_string_latin1(\n          env.0,\n          string.as_ptr().cast(),\n          string.len() as isize,\n          None,\n          ptr::null_mut(),\n          &mut raw_value,\n          &mut copied,\n        )\n      },\n      \"Failed to create external string latin1\"\n    )?;\n\n    Ok(Self {\n      inner: JsString(\n        Value {\n          env: env.0,\n          value: raw_value,\n          value_type: ValueType::String,\n        },\n        std::marker::PhantomData,\n      ),\n      buf: string.as_bytes(),\n      _inner_buf: vec![],\n    })\n  }\n\n  pub fn as_slice(&self) -> &[u8] {\n    self.buf\n  }\n\n  pub fn len(&self) -> usize {\n    self.buf.len()\n  }\n\n  pub fn is_empty(&self) -> bool {\n    self.buf.is_empty()\n  }\n\n  pub fn take(self) -> Vec<u8> {\n    self.as_slice().to_vec()\n  }\n\n  pub fn into_value(self) -> JsString<'env> {\n    self.inner\n  }\n\n  #[cfg(feature = \"latin1\")]\n  pub fn into_latin1_string(self) -> Result<String> {\n    let mut dst_str = unsafe { String::from_utf8_unchecked(vec![0; self.len() * 2 + 1]) };\n    encoding_rs::mem::convert_latin1_to_str(self.buf, dst_str.as_mut_str());\n    Ok(dst_str)\n  }\n}\n\nimpl From<JsStringLatin1<'_>> for Vec<u8> {\n  fn from(value: JsStringLatin1) -> Self {\n    value.take()\n  }\n}\n\nimpl ToNapiValue for JsStringLatin1<'_> {\n  unsafe fn to_napi_value(_: sys::napi_env, val: JsStringLatin1) -> Result<sys::napi_value> {\n    Ok(val.inner.0.value)\n  }\n}\n\n#[cfg(feature = \"napi10\")]\nextern \"C\" fn drop_latin1_string(\n  _: sys::node_api_basic_env,\n  finalize_data: *mut c_void,\n  finalize_hint: *mut c_void,\n) {\n  let (size, capacity): (usize, usize) = unsafe { *Box::from_raw(finalize_hint.cast()) };\n  if size == 0 || finalize_data.is_null() {\n    return;\n  }\n  let data: Vec<u8> = unsafe { Vec::from_raw_parts(finalize_data.cast(), size, capacity) };\n  drop(data);\n}\n\n#[cfg(feature = \"napi10\")]\nextern \"C\" fn finalize_with_custom_callback<T, F: FnOnce(Env, T)>(\n  env: sys::node_api_basic_env,\n  _finalize_data: *mut c_void,\n  finalize_hint: *mut c_void,\n) {\n  let (hint, callback) = unsafe { *Box::from_raw(finalize_hint as *mut (T, F)) };\n  callback(Env(env.cast()), hint);\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/string/mod.rs",
    "content": "use std::marker::PhantomData;\nuse std::mem;\nuse std::ptr;\n\nuse crate::{\n  bindgen_runtime::{FromNapiValue, ToNapiValue, TypeName, ValidateNapiValue},\n  check_status, sys, Result, Value, ValueType,\n};\n\npub use latin1::JsStringLatin1;\npub use utf16::JsStringUtf16;\npub use utf8::JsStringUtf8;\n\nuse super::JsValue;\n\nmod latin1;\nmod utf16;\nmod utf8;\n\n#[derive(Clone, Copy)]\npub struct JsString<'env>(pub(crate) Value, pub(crate) PhantomData<&'env ()>);\n\nimpl TypeName for JsString<'_> {\n  fn type_name() -> &'static str {\n    \"String\"\n  }\n\n  fn value_type() -> crate::ValueType {\n    ValueType::String\n  }\n}\n\nimpl ValidateNapiValue for JsString<'_> {}\n\nimpl<'env> JsValue<'env> for JsString<'env> {\n  fn value(&self) -> Value {\n    self.0\n  }\n}\n\nimpl FromNapiValue for JsString<'_> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Ok(JsString(\n      Value {\n        env,\n        value: napi_val,\n        value_type: ValueType::String,\n      },\n      PhantomData,\n    ))\n  }\n}\n\nimpl ToNapiValue for &JsString<'_> {\n  unsafe fn to_napi_value(_env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    Ok(val.raw())\n  }\n}\n\nimpl<'env> JsString<'env> {\n  #[cfg(feature = \"serde-json\")]\n  pub(crate) fn from_raw(env: sys::napi_env, value: sys::napi_value) -> Self {\n    JsString(\n      Value {\n        env,\n        value,\n        value_type: ValueType::String,\n      },\n      PhantomData,\n    )\n  }\n\n  pub fn utf8_len(&self) -> Result<usize> {\n    let mut length = 0;\n    check_status!(unsafe {\n      sys::napi_get_value_string_utf8(self.0.env, self.0.value, ptr::null_mut(), 0, &mut length)\n    })?;\n    Ok(length)\n  }\n\n  pub fn utf16_len(&self) -> Result<usize> {\n    let mut length = 0;\n    check_status!(unsafe {\n      sys::napi_get_value_string_utf16(self.0.env, self.0.value, ptr::null_mut(), 0, &mut length)\n    })?;\n    Ok(length)\n  }\n\n  pub fn latin1_len(&self) -> Result<usize> {\n    let mut length = 0;\n    check_status!(unsafe {\n      sys::napi_get_value_string_latin1(self.0.env, self.0.value, ptr::null_mut(), 0, &mut length)\n    })?;\n    Ok(length)\n  }\n\n  pub fn into_utf8(self) -> Result<JsStringUtf8<'env>> {\n    let mut written_char_count = 0;\n    let len = self.utf8_len()? + 1;\n    let mut result = vec![0; len];\n    let buf_ptr = result.as_mut_ptr();\n    check_status!(unsafe {\n      sys::napi_get_value_string_utf8(\n        self.0.env,\n        self.0.value,\n        buf_ptr,\n        len,\n        &mut written_char_count,\n      )\n    })?;\n\n    mem::forget(result);\n\n    Ok(JsStringUtf8 {\n      inner: self,\n      buf: unsafe { Vec::from_raw_parts(buf_ptr.cast(), written_char_count, len) },\n    })\n  }\n\n  pub fn into_utf16(self) -> Result<JsStringUtf16<'env>> {\n    let mut written_char_count = 0usize;\n    let len = self.utf16_len()? + 1;\n    let mut result = vec![0; len];\n    let buf_ptr = result.as_mut_ptr();\n    check_status!(unsafe {\n      sys::napi_get_value_string_utf16(\n        self.0.env,\n        self.0.value,\n        buf_ptr,\n        len,\n        &mut written_char_count,\n      )\n    })?;\n\n    Ok(JsStringUtf16 {\n      inner: self,\n      buf: unsafe { std::slice::from_raw_parts(buf_ptr.cast(), len) },\n      _inner_buf: result,\n    })\n  }\n\n  pub fn into_latin1(self) -> Result<JsStringLatin1<'env>> {\n    let mut written_char_count = 0usize;\n    let len = self.latin1_len()? + 1;\n    let mut result = vec![0; len];\n    let buf_ptr = result.as_mut_ptr();\n    check_status!(unsafe {\n      sys::napi_get_value_string_latin1(\n        self.0.env,\n        self.0.value,\n        buf_ptr,\n        len,\n        &mut written_char_count,\n      )\n    })?;\n\n    mem::forget(result);\n\n    Ok(JsStringLatin1 {\n      inner: self,\n      buf: unsafe { std::slice::from_raw_parts(buf_ptr.cast(), written_char_count) },\n      _inner_buf: unsafe { Vec::from_raw_parts(buf_ptr.cast(), written_char_count, len) },\n    })\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/string/utf16.rs",
    "content": "use std::convert::TryFrom;\n#[cfg(feature = \"napi10\")]\nuse std::ffi::c_void;\nuse std::ops::Deref;\n\nuse crate::{bindgen_runtime::ToNapiValue, sys, Error, JsString, Result, Status};\n\n#[cfg(feature = \"napi10\")]\nuse crate::Env;\n\npub struct JsStringUtf16<'env> {\n  pub(crate) inner: JsString<'env>,\n  pub(crate) buf: &'env [u16],\n  pub(crate) _inner_buf: Vec<u16>,\n}\n\nimpl<'env> JsStringUtf16<'env> {\n  #[cfg(feature = \"napi10\")]\n  /// Try to create a new JavaScript utf16 string from a Rust `Vec<u16>` without copying the data\n  /// ## Behavior\n  ///\n  /// The `copied` parameter in the underlying `node_api_create_external_string_utf16` call\n  /// indicates whether the string data was copied into V8's heap rather than being used\n  /// as an external reference.\n  ///\n  /// ### When `copied` is `true`:\n  /// - String data is copied to V8's heap\n  /// - Finalizer is called immediately if provided\n  /// - Original buffer can be freed after the call\n  /// - Performance benefit of external strings is not achieved\n  ///\n  /// ### When `copied` is `false`:\n  /// - V8 creates an external string that references the original buffer without copying\n  /// - Original buffer must remain valid for the lifetime of the JS string\n  /// - Finalizer called when string is garbage collected\n  /// - Memory usage and copying overhead is reduced\n  ///\n  /// ## Common scenarios where `copied` is `true`:\n  /// - String is too short (typically < 10-15 characters)\n  /// - V8 heap is under memory pressure\n  /// - V8 is running with pointer compression or sandbox features\n  /// - Invalid UTF-16 encoding that requires sanitization\n  /// - Platform doesn't support external strings\n  /// - Memory alignment issues with the provided buffer\n  ///\n  /// The `copied` parameter serves as feedback to understand whether the external string\n  /// optimization was successful or if V8 fell back to traditional string creation.\n  pub fn from_data(env: &'env Env, data: Vec<u16>) -> Result<JsStringUtf16<'env>> {\n    use std::mem;\n    use std::ptr;\n\n    use crate::{check_status, Value, ValueType};\n\n    if data.is_empty() {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Cannot create external string from empty data\".to_owned(),\n      ));\n    }\n\n    let mut raw_value = ptr::null_mut();\n    let mut copied = false;\n    let data_ptr = data.as_ptr();\n    let len = data.len();\n    let cap = data.capacity();\n    let finalize_hint = Box::into_raw(Box::new((len, cap)));\n\n    check_status!(\n      unsafe {\n        sys::node_api_create_external_string_utf16(\n          env.0,\n          data_ptr,\n          len as isize,\n          Some(drop_utf16_string),\n          finalize_hint.cast(),\n          &mut raw_value,\n          &mut copied,\n        )\n      },\n      \"Failed to create external string utf16\"\n    )?;\n\n    let inner_buf = if copied {\n      // If the data was copied, the finalizer won't be called\n      // We need to clean up the finalize_hint and let the Vec be dropped\n      unsafe {\n        let _ = Box::from_raw(finalize_hint);\n      };\n      data\n    } else {\n      // Only forget the data if it wasn't copied\n      // The finalizer will handle cleanup\n      mem::forget(data);\n      vec![]\n    };\n\n    Ok(Self {\n      inner: JsString(\n        Value {\n          env: env.0,\n          value: raw_value,\n          value_type: ValueType::String,\n        },\n        std::marker::PhantomData,\n      ),\n      buf: unsafe { std::slice::from_raw_parts(data_ptr.cast(), len) },\n      _inner_buf: inner_buf,\n    })\n  }\n\n  #[cfg(feature = \"napi10\")]\n  /// Creates an external UTF-16 string from raw data with a custom finalize callback.\n  ///\n  /// ## Safety\n  ///\n  /// The caller must ensure that:\n  /// - The data pointer is valid for the lifetime of the string\n  /// - The finalize callback properly cleans up the data\n  ///\n  /// ## Behavior\n  ///\n  /// The `copied` parameter in the underlying `node_api_create_external_string_utf16` call\n  /// indicates whether the string data was copied into V8's heap rather than being used\n  /// as an external reference.\n  ///\n  /// ### When `copied` is `true`:\n  /// - String data is copied to V8's heap\n  /// - Finalizer is called immediately if provided\n  /// - Original buffer can be freed after the call\n  /// - Performance benefit of external strings is not achieved\n  ///\n  /// ### When `copied` is `false`:\n  /// - V8 creates an external string that references the original buffer without copying\n  /// - Original buffer must remain valid for the lifetime of the JS string\n  /// - Finalizer called when string is garbage collected\n  /// - Memory usage and copying overhead is reduced\n  ///\n  /// ## Common scenarios where `copied` is `true`:\n  /// - String is too short (typically < 10-15 characters)\n  /// - V8 heap is under memory pressure\n  /// - V8 is running with pointer compression or sandbox features\n  /// - Invalid UTF-16 encoding that requires sanitization\n  /// - Platform doesn't support external strings\n  /// - Memory alignment issues with the provided buffer\n  ///\n  /// The `copied` parameter serves as feedback to understand whether the external string\n  /// optimization was successful or if V8 fell back to traditional string creation.\n  pub unsafe fn from_external<T: 'env, F: FnOnce(Env, T) + 'env>(\n    env: &'env Env,\n    data: *const u16,\n    len: usize,\n    finalize_hint: T,\n    finalize_callback: F,\n  ) -> Result<JsStringUtf16<'env>> {\n    use std::ptr;\n\n    use crate::{check_status, Value, ValueType};\n\n    if data.is_null() {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Data pointer should not be null\".to_owned(),\n      ));\n    }\n\n    let hint_ptr = Box::into_raw(Box::new((finalize_hint, finalize_callback)));\n    let mut raw_value = ptr::null_mut();\n    let mut copied = false;\n\n    check_status!(\n      unsafe {\n        sys::node_api_create_external_string_utf16(\n          env.0,\n          data,\n          len as isize,\n          Some(finalize_with_custom_callback::<T, F>),\n          hint_ptr.cast(),\n          &mut raw_value,\n          &mut copied,\n        )\n      },\n      \"Failed to create external string utf16\"\n    )?;\n\n    if copied {\n      unsafe {\n        let (hint, finalize) = *Box::from_raw(hint_ptr);\n        finalize(*env, hint);\n      }\n    }\n\n    Ok(Self {\n      inner: JsString(\n        Value {\n          env: env.0,\n          value: raw_value,\n          value_type: ValueType::String,\n        },\n        std::marker::PhantomData,\n      ),\n      buf: unsafe { std::slice::from_raw_parts(data, len) },\n      _inner_buf: vec![],\n    })\n  }\n\n  #[cfg(feature = \"napi10\")]\n  pub fn from_static(env: &'env Env, data: &'static [u16]) -> Result<JsStringUtf16<'env>> {\n    use std::ptr;\n\n    use crate::{check_status, Value, ValueType};\n\n    if data.is_empty() {\n      return Err(Error::new(\n        Status::InvalidArg,\n        \"Data should not be empty\".to_owned(),\n      ));\n    }\n\n    let mut raw_value = ptr::null_mut();\n    let mut copied = false;\n\n    check_status!(\n      unsafe {\n        sys::node_api_create_external_string_utf16(\n          env.0,\n          data.as_ptr(),\n          data.len() as isize,\n          None,\n          ptr::null_mut(),\n          &mut raw_value,\n          &mut copied,\n        )\n      },\n      \"Failed to create external string utf16\"\n    )?;\n\n    Ok(Self {\n      inner: JsString(\n        Value {\n          env: env.0,\n          value: raw_value,\n          value_type: ValueType::String,\n        },\n        std::marker::PhantomData,\n      ),\n      buf: data,\n      _inner_buf: vec![],\n    })\n  }\n\n  pub fn as_str(&self) -> Result<String> {\n    if let Some((_, prefix)) = self.as_slice().split_last() {\n      String::from_utf16(prefix).map_err(|e| Error::new(Status::InvalidArg, format!(\"{e}\")))\n    } else {\n      Ok(String::new())\n    }\n  }\n\n  pub fn as_slice(&self) -> &[u16] {\n    self.buf\n  }\n\n  pub fn len(&self) -> usize {\n    self.buf.len()\n  }\n\n  pub fn is_empty(&self) -> bool {\n    self.buf.is_empty()\n  }\n\n  pub fn into_value(self) -> JsString<'env> {\n    self.inner\n  }\n}\n\nimpl TryFrom<JsStringUtf16<'_>> for String {\n  type Error = Error;\n\n  fn try_from(value: JsStringUtf16) -> Result<String> {\n    value.as_str()\n  }\n}\n\nimpl Deref for JsStringUtf16<'_> {\n  type Target = [u16];\n\n  fn deref(&self) -> &[u16] {\n    self.buf\n  }\n}\n\nimpl AsRef<[u16]> for JsStringUtf16<'_> {\n  fn as_ref(&self) -> &[u16] {\n    self.buf\n  }\n}\n\nimpl From<JsStringUtf16<'_>> for Vec<u16> {\n  fn from(value: JsStringUtf16) -> Self {\n    value.as_slice().to_vec()\n  }\n}\n\nimpl ToNapiValue for JsStringUtf16<'_> {\n  unsafe fn to_napi_value(_: sys::napi_env, val: JsStringUtf16) -> Result<sys::napi_value> {\n    Ok(val.inner.0.value)\n  }\n}\n\n#[cfg(feature = \"napi10\")]\nextern \"C\" fn drop_utf16_string(\n  _: sys::node_api_basic_env,\n  finalize_data: *mut c_void,\n  finalize_hint: *mut c_void,\n) {\n  let (size, capacity): (usize, usize) = unsafe { *Box::from_raw(finalize_hint.cast()) };\n  if size == 0 || finalize_data.is_null() {\n    return;\n  }\n  let data: Vec<u16> = unsafe { Vec::from_raw_parts(finalize_data.cast(), size, capacity) };\n  drop(data);\n}\n\n#[cfg(feature = \"napi10\")]\nextern \"C\" fn finalize_with_custom_callback<T, F: FnOnce(Env, T)>(\n  env: sys::node_api_basic_env,\n  _finalize_data: *mut c_void,\n  finalize_hint: *mut c_void,\n) {\n  let (hint, callback) = unsafe { *Box::from_raw(finalize_hint as *mut (T, F)) };\n  callback(Env(env.cast()), hint);\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/string/utf8.rs",
    "content": "use std::convert::TryFrom;\nuse std::str;\n\nuse crate::{bindgen_prelude::ToNapiValue, sys, Error, JsString, Result, Status};\n\npub struct JsStringUtf8<'env> {\n  pub(crate) inner: JsString<'env>,\n  pub(crate) buf: Vec<u8>,\n}\n\nimpl<'env> JsStringUtf8<'env> {\n  pub fn as_str(&self) -> Result<&str> {\n    str::from_utf8(self.buf.as_slice())\n      .map_err(|err| Error::new(Status::InvalidArg, err.to_string()))\n  }\n\n  pub fn as_slice(&self) -> &[u8] {\n    self.buf.as_slice()\n  }\n\n  pub fn len(&self) -> usize {\n    self.buf.len()\n  }\n\n  pub fn is_empty(&self) -> bool {\n    self.buf.is_empty()\n  }\n\n  pub fn into_owned(self) -> Result<String> {\n    Ok(unsafe { String::from_utf8_unchecked(self.buf.to_vec()) })\n  }\n\n  pub fn take(self) -> Vec<u8> {\n    self.buf.to_vec()\n  }\n\n  pub fn into_value(self) -> JsString<'env> {\n    self.inner\n  }\n}\n\nimpl TryFrom<JsStringUtf8<'_>> for String {\n  type Error = Error;\n\n  fn try_from(value: JsStringUtf8) -> Result<String> {\n    value.into_owned()\n  }\n}\n\nimpl From<JsStringUtf8<'_>> for Vec<u8> {\n  fn from(value: JsStringUtf8) -> Self {\n    value.take()\n  }\n}\n\nimpl ToNapiValue for JsStringUtf8<'_> {\n  unsafe fn to_napi_value(_: sys::napi_env, val: JsStringUtf8) -> Result<sys::napi_value> {\n    Ok(val.inner.0.value)\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/symbol.rs",
    "content": "use std::ptr;\n\nuse crate::{\n  bindgen_runtime::{Env, FromNapiValue, ToNapiValue, TypeName, ValidateNapiValue},\n  check_status, sys, JsValue, Result, Value, ValueType,\n};\n\n#[derive(Clone, Copy)]\n/// represent `Symbol` value in JavaScript\npub struct JsSymbol<'env>(\n  pub(crate) Value,\n  pub(crate) std::marker::PhantomData<&'env ()>,\n);\n\nimpl TypeName for JsSymbol<'_> {\n  fn type_name() -> &'static str {\n    \"symbol\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Symbol\n  }\n}\n\nimpl<'env> JsValue<'env> for JsSymbol<'env> {\n  fn value(&self) -> Value {\n    self.0\n  }\n}\n\nimpl FromNapiValue for JsSymbol<'_> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Ok(JsSymbol(\n      Value {\n        env,\n        value: napi_val,\n        value_type: ValueType::Symbol,\n      },\n      std::marker::PhantomData,\n    ))\n  }\n}\n\nimpl ValidateNapiValue for JsSymbol<'_> {}\n\nimpl JsSymbol<'_> {\n  /// Create a reference to the symbol\n  pub fn create_ref<const LEAK_CHECK: bool>(&self) -> Result<SymbolRef<LEAK_CHECK>> {\n    let mut ref_ = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_create_reference(self.0.env, self.0.value, 1, &mut ref_) },\n      \"Failed to create reference\"\n    )?;\n    Ok(SymbolRef { inner: ref_ })\n  }\n}\n\n/// A reference to a JavaScript Symbol.\n///\n/// You must call the `unref` method to release the reference, or the symbol under the hood will be leaked forever.\n///\n/// Set the `LEAK_CHECK` to `false` to disable the leak check during the `Drop`\npub struct SymbolRef<const LEAK_CHECK: bool = true> {\n  pub(crate) inner: sys::napi_ref,\n}\n\nunsafe impl<const LEAK_CHECK: bool> Send for SymbolRef<LEAK_CHECK> {}\n\nimpl<const LEAK_CHECK: bool> Drop for SymbolRef<LEAK_CHECK> {\n  fn drop(&mut self) {\n    if LEAK_CHECK && !self.inner.is_null() {\n      eprintln!(\"ObjectRef is not unref, it considered as a memory leak\");\n    }\n  }\n}\n\nimpl<const LEAK_CHECK: bool> SymbolRef<LEAK_CHECK> {\n  /// Get the object from the reference\n  pub fn get_value<'env>(&self, env: &'env Env) -> Result<JsSymbol<'env>> {\n    let mut result = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_reference_value(env.0, self.inner, &mut result) },\n      \"Failed to get reference value\"\n    )?;\n    unsafe { JsSymbol::from_napi_value(env.0, result) }\n  }\n\n  /// Unref the reference\n  pub fn unref(mut self, env: &Env) -> Result<()> {\n    check_status!(\n      unsafe { sys::napi_delete_reference(env.0, self.inner) },\n      \"delete Ref failed\"\n    )?;\n    self.inner = ptr::null_mut();\n    Ok(())\n  }\n}\n\nimpl<const LEAK_CHECK: bool> FromNapiValue for SymbolRef<LEAK_CHECK> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut ref_ = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_create_reference(env, napi_val, 1, &mut ref_) },\n      \"Failed to create reference\"\n    )?;\n    Ok(Self { inner: ref_ })\n  }\n}\n\nimpl<const LEAK_CHECK: bool> ToNapiValue for &SymbolRef<LEAK_CHECK> {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let mut result = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_reference_value(env, val.inner, &mut result) },\n      \"Failed to get reference value\"\n    )?;\n    Ok(result)\n  }\n}\n\nimpl<const LEAK_CHECK: bool> ToNapiValue for SymbolRef<LEAK_CHECK> {\n  unsafe fn to_napi_value(env: sys::napi_env, mut val: Self) -> Result<sys::napi_value> {\n    let mut result = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_reference_value(env, val.inner, &mut result) },\n      \"Failed to get reference value\"\n    )?;\n    check_status!(\n      unsafe { sys::napi_delete_reference(env, val.inner) },\n      \"delete Ref failed\"\n    )?;\n    val.inner = ptr::null_mut();\n    drop(val);\n    Ok(result)\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/tagged_object.rs",
    "content": "use std::any::TypeId;\n\n#[repr(C)]\npub struct TaggedObject<T> {\n  type_id: TypeId,\n  pub(crate) object: Option<T>,\n}\n\nimpl<T: 'static> TaggedObject<T> {\n  pub fn new(object: T) -> Self {\n    TaggedObject {\n      type_id: TypeId::of::<T>(),\n      object: Some(object),\n    }\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/undefined.rs",
    "content": "use crate::{\n  bindgen_runtime::{FromNapiValue, TypeName, ValidateNapiValue},\n  sys, JsValue, Result, ValueType,\n};\n\nuse super::Value;\n\n#[deprecated(since = \"3.0.0\", note = \"use `()` instead\")]\n#[derive(Clone, Copy)]\npub struct JsUndefined(pub(crate) Value);\n\nimpl TypeName for JsUndefined {\n  fn type_name() -> &'static str {\n    \"undefined\"\n  }\n\n  fn value_type() -> crate::ValueType {\n    ValueType::Undefined\n  }\n}\n\nimpl ValidateNapiValue for JsUndefined {}\n\nimpl JsValue<'_> for JsUndefined {\n  fn value(&self) -> Value {\n    self.0\n  }\n}\n\nimpl FromNapiValue for JsUndefined {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Ok(Self(Value {\n      env,\n      value: napi_val,\n      value_type: ValueType::Undefined,\n    }))\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/unknown.rs",
    "content": "use std::ptr;\n\nuse crate::{\n  bindgen_runtime::{Env, FromNapiValue, ToNapiValue, TypeName, ValidateNapiValue},\n  check_status, sys, type_of, JsValue, Result, Value, ValueType,\n};\n\n#[derive(Clone, Copy)]\n/// Represents a raw JavaScript value\npub struct Unknown<'env>(\n  pub(crate) Value,\n  pub(crate) std::marker::PhantomData<&'env ()>,\n);\n\nimpl<'env> JsValue<'env> for Unknown<'env> {\n  fn value(&self) -> Value {\n    self.0\n  }\n}\n\nimpl TypeName for Unknown<'_> {\n  fn type_name() -> &'static str {\n    \"unknown\"\n  }\n\n  fn value_type() -> ValueType {\n    ValueType::Unknown\n  }\n}\n\nimpl ValidateNapiValue for Unknown<'_> {\n  unsafe fn validate(\n    _env: napi_sys::napi_env,\n    _napi_val: napi_sys::napi_value,\n  ) -> Result<sys::napi_value> {\n    Ok(ptr::null_mut())\n  }\n}\n\nimpl FromNapiValue for Unknown<'_> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Ok(Unknown(\n      Value {\n        env,\n        value: napi_val,\n        value_type: ValueType::Unknown,\n      },\n      std::marker::PhantomData,\n    ))\n  }\n}\n\nimpl Unknown<'_> {\n  pub fn get_type(&self) -> Result<ValueType> {\n    type_of!(self.0.env, self.0.value)\n  }\n\n  /// # Safety\n  ///\n  /// This function should be called after `JsUnknown::get_type`\n  ///\n  /// And the `V` must be match with the return value of `get_type`\n  pub unsafe fn cast<V>(&self) -> Result<V>\n  where\n    V: FromNapiValue,\n  {\n    unsafe { V::from_napi_value(self.0.env, self.0.value) }\n  }\n\n  /// # Safety\n  ///\n  /// Unknown doesn't have a type\n  pub unsafe fn from_raw_unchecked(env: sys::napi_env, value: sys::napi_value) -> Self {\n    Unknown(\n      Value {\n        env,\n        value,\n        value_type: ValueType::Unknown,\n      },\n      std::marker::PhantomData,\n    )\n  }\n\n  /// Create a reference to the unknown value\n  pub fn create_ref(&self) -> Result<UnknownRef> {\n    let mut ref_ = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_create_reference(self.0.env, self.0.value, 1, &mut ref_) },\n      \"Failed to create reference\"\n    )?;\n    Ok(UnknownRef { inner: ref_ })\n  }\n}\n\n/// A reference to a unknown JavaScript value.\n///\n/// You must call the `unref` method to release the reference, or the object under the hood will be leaked forever.\n///\n/// Set the `LEAK_CHECK` to `false` to disable the leak check during the `Drop`\npub struct UnknownRef<const LEAK_CHECK: bool = true> {\n  pub(crate) inner: sys::napi_ref,\n}\n\nunsafe impl<const LEAK_CHECK: bool> Send for UnknownRef<LEAK_CHECK> {}\n\nimpl<const LEAK_CHECK: bool> Drop for UnknownRef<LEAK_CHECK> {\n  fn drop(&mut self) {\n    if LEAK_CHECK && !self.inner.is_null() {\n      eprintln!(\"ObjectRef is not unref, it considered as a memory leak\");\n    }\n  }\n}\n\nimpl<const LEAK_CHECK: bool> UnknownRef<LEAK_CHECK> {\n  /// Get the object from the reference\n  pub fn get_value<'env>(&self, env: &'env Env) -> Result<Unknown<'env>> {\n    let mut result = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_reference_value(env.0, self.inner, &mut result) },\n      \"Failed to get reference value\"\n    )?;\n    Ok(unsafe { Unknown::from_raw_unchecked(env.0, result) })\n  }\n\n  /// Unref the reference\n  pub fn unref(mut self, env: &Env) -> Result<()> {\n    check_status!(\n      unsafe { sys::napi_reference_unref(env.0, self.inner, &mut 0) },\n      \"unref Ref failed\"\n    )?;\n    check_status!(\n      unsafe { sys::napi_delete_reference(env.0, self.inner) },\n      \"delete Ref failed\"\n    )?;\n    self.inner = ptr::null_mut();\n    Ok(())\n  }\n}\n\nimpl<const LEAK_CHECK: bool> FromNapiValue for UnknownRef<LEAK_CHECK> {\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    let mut ref_ = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_create_reference(env, napi_val, 1, &mut ref_) },\n      \"Failed to create reference\"\n    )?;\n    Ok(Self { inner: ref_ })\n  }\n}\n\nimpl<const LEAK_CHECK: bool> ToNapiValue for &UnknownRef<LEAK_CHECK> {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let mut result = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_reference_value(env, val.inner, &mut result) },\n      \"Failed to get reference value\"\n    )?;\n    Ok(result)\n  }\n}\n\nimpl<const LEAK_CHECK: bool> ToNapiValue for UnknownRef<LEAK_CHECK> {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let mut result = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_reference_value(env, val.inner, &mut result) },\n      \"Failed to get reference value\"\n    )?;\n    check_status!(\n      unsafe { sys::napi_delete_reference(env, val.inner) },\n      \"Failed to delete reference\"\n    )?;\n    Ok(result)\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/value.rs",
    "content": "use std::fmt::{self, Display};\nuse std::ptr;\n\nuse crate::bindgen_runtime::EscapableHandleScope;\nuse crate::{\n  bindgen_runtime::{FromNapiValue, Object, Unknown},\n  {check_status, sys, JsNumber, JsString, Result, ValueType},\n};\n\n#[derive(Debug, Clone, Copy)]\npub struct Value {\n  pub env: sys::napi_env,\n  pub value: sys::napi_value,\n  pub value_type: ValueType,\n}\n\nimpl Display for Value {\n  fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n    write!(f, \"Value({:?})\", self.value_type)\n  }\n}\n\npub trait JsValue<'env>: Sized + FromNapiValue {\n  fn value(&self) -> Value;\n\n  fn raw(&self) -> sys::napi_value {\n    self.value().value\n  }\n\n  /// Convert the value to an unknown\n  fn to_unknown(&self) -> Unknown<'env> {\n    Unknown(\n      Value {\n        env: self.value().env,\n        value: self.value().value,\n        value_type: ValueType::Unknown,\n      },\n      std::marker::PhantomData,\n    )\n  }\n\n  /// Coerce the value to a boolean\n  fn coerce_to_bool(&self) -> Result<bool> {\n    let mut new_raw_value = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_coerce_to_bool(env, self.value().value, &mut new_raw_value)\n    })?;\n    unsafe { bool::from_napi_value(env, new_raw_value) }\n  }\n\n  fn coerce_to_number(&self) -> Result<JsNumber<'_>> {\n    let mut new_raw_value = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_coerce_to_number(env, self.value().value, &mut new_raw_value)\n    })?;\n    Ok(JsNumber(\n      Value {\n        env,\n        value: new_raw_value,\n        value_type: ValueType::Number,\n      },\n      std::marker::PhantomData,\n    ))\n  }\n\n  fn coerce_to_string(&self) -> Result<JsString<'_>> {\n    let mut new_raw_value = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_coerce_to_string(env, self.value().value, &mut new_raw_value)\n    })?;\n    Ok(JsString(\n      Value {\n        env,\n        value: new_raw_value,\n        value_type: ValueType::String,\n      },\n      std::marker::PhantomData,\n    ))\n  }\n\n  fn coerce_to_object(&self) -> Result<Object<'env>> {\n    let mut new_raw_value = ptr::null_mut();\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_coerce_to_object(env, self.value().value, &mut new_raw_value)\n    })?;\n    Ok(Object::from_raw(env, new_raw_value))\n  }\n\n  #[cfg(feature = \"napi5\")]\n  fn is_date(&self) -> Result<bool> {\n    let mut is_date = true;\n    let env = self.value().env;\n    check_status!(unsafe { sys::napi_is_date(env, self.value().value, &mut is_date) })?;\n    Ok(is_date)\n  }\n\n  fn is_promise(&self) -> Result<bool> {\n    let mut is_promise = true;\n    let env = self.value().env;\n    check_status!(unsafe { sys::napi_is_promise(env, self.value().value, &mut is_promise) })?;\n    Ok(is_promise)\n  }\n\n  fn is_error(&self) -> Result<bool> {\n    let mut result = false;\n    let env = self.value().env;\n    check_status!(unsafe { sys::napi_is_error(env, self.value().value, &mut result) })?;\n    Ok(result)\n  }\n\n  fn is_typedarray(&self) -> Result<bool> {\n    let mut result = false;\n    let env = self.value().env;\n    check_status!(unsafe { sys::napi_is_typedarray(env, self.value().value, &mut result) })?;\n    Ok(result)\n  }\n\n  fn is_dataview(&self) -> Result<bool> {\n    let mut result = false;\n    let env = self.value().env;\n    check_status!(unsafe { sys::napi_is_dataview(env, self.value().value, &mut result) })?;\n    Ok(result)\n  }\n\n  fn is_array(&self) -> Result<bool> {\n    let mut is_array = false;\n    let env = self.value().env;\n    check_status!(unsafe { sys::napi_is_array(env, self.value().value, &mut is_array) })?;\n    Ok(is_array)\n  }\n\n  fn is_buffer(&self) -> Result<bool> {\n    let mut is_buffer = false;\n    let env = self.value().env;\n    check_status!(unsafe { sys::napi_is_buffer(env, self.value().value, &mut is_buffer) })?;\n    Ok(is_buffer)\n  }\n\n  fn is_arraybuffer(&self) -> Result<bool> {\n    let mut is_buffer = false;\n    let env = self.value().env;\n    check_status!(unsafe { sys::napi_is_arraybuffer(env, self.value().value, &mut is_buffer) })?;\n    Ok(is_buffer)\n  }\n\n  fn instanceof<'c, Constructor>(&self, constructor: Constructor) -> Result<bool>\n  where\n    Constructor: JsValue<'c>,\n  {\n    let mut result = false;\n    let env = self.value().env;\n    check_status!(unsafe {\n      sys::napi_instanceof(env, self.value().value, constructor.raw(), &mut result)\n    })?;\n    Ok(result)\n  }\n\n  fn escape<'scope, E: JsValue<'scope> + FromNapiValue>(\n    &self,\n    escapable_handle_scope: EscapableHandleScope<'scope>,\n  ) -> Result<E> {\n    let mut result = ptr::null_mut();\n    unsafe {\n      sys::napi_escape_handle(\n        escapable_handle_scope.env,\n        escapable_handle_scope.scope,\n        self.raw(),\n        &mut result,\n      )\n    };\n    unsafe { <E as FromNapiValue>::from_napi_value(self.value().env, result) }\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/js_values/value_ref.rs",
    "content": "use std::{marker::PhantomData, ptr};\n\nuse crate::{\n  bindgen_runtime::{FromNapiMutRef, FromNapiValue, ToNapiValue},\n  check_status, sys, Env, JsValue, Result,\n};\n\npub struct Ref<T> {\n  pub(crate) raw_ref: sys::napi_ref,\n  pub(crate) _phantom: PhantomData<T>,\n  pub(crate) taken: bool,\n}\n\n#[allow(clippy::non_send_fields_in_send_ty)]\nunsafe impl<T> Send for Ref<T> {}\nunsafe impl<T> Sync for Ref<T> {}\n\nimpl<'env, T: JsValue<'env>> Ref<T> {\n  pub fn new(env: &Env, value: &T) -> Result<Ref<T>> {\n    let mut raw_ref = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_create_reference(env.0, value.raw(), 1, &mut raw_ref) },\n      \"Create napi_ref from {} failed\",\n      std::any::type_name::<T>()\n    )?;\n    Ok(Ref {\n      raw_ref,\n      taken: false,\n      _phantom: PhantomData,\n    })\n  }\n\n  pub fn unref(&mut self, env: &Env) -> Result<()> {\n    check_status!(\n      unsafe { sys::napi_reference_unref(env.0, self.raw_ref, &mut 0) },\n      \"unref Ref failed\"\n    )?;\n\n    check_status!(\n      unsafe { sys::napi_delete_reference(env.0, self.raw_ref) },\n      \"delete Ref failed\"\n    )?;\n    self.taken = true;\n    Ok(())\n  }\n}\n\nimpl<T: FromNapiValue> Ref<T> {\n  /// Get the value from the reference\n  pub fn get_value(&self, env: &Env) -> Result<T> {\n    if self.taken {\n      return Err(crate::Error::new(\n        crate::Status::InvalidArg,\n        \"Ref value has been deleted\",\n      ));\n    }\n    let mut result = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_reference_value(env.0, self.raw_ref, &mut result) },\n      \"Failed to get reference value\"\n    )?;\n    unsafe { T::from_napi_value(env.0, result) }\n  }\n}\n\nimpl<T: 'static + FromNapiMutRef> Ref<T> {\n  /// Get the value reference from the reference\n  #[allow(clippy::mut_from_ref)]\n  pub fn get_value_mut(&self, env: &Env) -> Result<&mut T> {\n    let mut result = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_reference_value(env.0, self.raw_ref, &mut result) },\n      \"Failed to get reference value\"\n    )?;\n    unsafe { T::from_napi_mut_ref(env.0, result) }\n  }\n}\n\nimpl<'env, T: FromNapiValue + JsValue<'env>> FromNapiValue for Ref<T> {\n  unsafe fn from_napi_value(env: sys::napi_env, value: sys::napi_value) -> Result<Self> {\n    let val = T::from_napi_value(env, value)?;\n    Ref::new(&Env::from_raw(env), &val)\n  }\n}\n\nimpl<T: 'static> ToNapiValue for Ref<T> {\n  unsafe fn to_napi_value(env: sys::napi_env, val: Self) -> Result<sys::napi_value> {\n    let mut result = ptr::null_mut();\n    check_status!(\n      unsafe { sys::napi_get_reference_value(env, val.raw_ref, &mut result) },\n      \"Failed to get reference value\"\n    )?;\n    Ok(result)\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/lib.rs",
    "content": "#![deny(clippy::all)]\n#![allow(non_upper_case_globals)]\n\n//! High level Node.js [N-API](https://nodejs.org/api/n-api.html) binding\n//!\n//! **napi-rs** provides minimal overhead to write N-API modules in `Rust`.\n//!\n//! ## Feature flags\n//!\n//! ### napi1 ~ napi10\n//!\n//! Because `Node.js` N-API has versions. So there are feature flags to choose what version of `N-API` you want to build for.\n//! For example, if you want build a library which can be used by `node@10.17.0`, you should choose the `napi5` or lower.\n//!\n//! The details of N-API versions and support matrix: [Node-API version matrix](https://nodejs.org/api/n-api.html#node-api-version-matrix)\n//!\n//! ### tokio_rt\n//! With `tokio_rt` feature, `napi-rs` provides a ***tokio runtime*** in an additional thread.\n//! And you can easily run tokio `future` in it and return `promise`.\n//!\n//! ```\n//! use futures::prelude::*;\n//! use napi::bindgen_prelude::*;\n//! use tokio;\n//!\n//! #[napi]\n//! pub fn tokio_readfile(js_filepath: String) -> Result<Buffer> {\n//!     ctx.env.spawn_future_with_callback(\n//!         tokio::fs::read(js_filepath)\n//!           .map(|v| v.map_err(|e| Error::new(Status::Unknown, format!(\"failed to read file, {}\", e)))),\n//!         |_, data| data.into(),\n//!     )\n//! }\n//! ```\n//!\n//! ### latin1\n//!\n//! Decode latin1 string from JavaScript using [encoding_rs](https://docs.rs/encoding_rs).\n//!\n//! With this feature, you can use `JsString.as_latin1_string` function\n//!\n//! ### serde-json\n//!\n//! Enable Serialize/Deserialize data cross `JavaScript Object` and `Rust struct`.\n//!\n//! ```\n//! #[derive(Serialize, Debug, Deserialize)]\n//! struct AnObject {\n//!     a: u32,\n//!     b: Vec<f64>,\n//!     c: String,\n//! }\n//!\n//! #[napi]\n//! fn deserialize_from_js(arg0: JsUnknown) -> Result<JsUndefined> {\n//!     let de_serialized: AnObject = ctx.env.from_js_value(arg0)?;\n//!     ...\n//! }\n//!\n//! #[napi]\n//! fn serialize(env: Env) -> Result<JsUnknown> {\n//!     let value = AnyObject { a: 1, b: vec![0.1, 2.22], c: \"hello\" };\n//!     env.to_js_value(&value)\n//! }\n//! ```\n//!\n\n#[cfg(all(target_family = \"wasm\", not(feature = \"noop\"), feature = \"napi3\"))]\n#[link(wasm_import_module = \"napi\")]\nextern \"C\" {\n  fn napi_add_env_cleanup_hook(\n    env: sys::napi_env,\n    fun: Option<unsafe extern \"C\" fn(arg: *mut core::ffi::c_void)>,\n    arg: *mut core::ffi::c_void,\n  ) -> sys::napi_status;\n}\n\n#[cfg(feature = \"napi8\")]\nmod async_cleanup_hook;\n#[cfg(feature = \"napi8\")]\npub use async_cleanup_hook::AsyncCleanupHook;\nmod async_work;\nmod bindgen_runtime;\n#[cfg(feature = \"compat-mode\")]\nmod call_context;\n#[cfg(feature = \"napi3\")]\nmod cleanup_env;\nmod env;\nmod error;\nmod js_values;\nmod status;\nmod task;\n#[cfg(all(feature = \"tokio_rt\", feature = \"napi4\"))]\nmod tokio_runtime;\nmod value_type;\n#[cfg(feature = \"napi3\")]\npub use cleanup_env::CleanupEnvHook;\n#[cfg(not(feature = \"noop\"))]\nmod sendable_resolver;\n#[cfg(feature = \"napi4\")]\npub mod threadsafe_function;\n#[cfg(not(feature = \"noop\"))]\npub use sendable_resolver::SendableResolver;\n\nmod version;\n\npub use napi_sys as sys;\n\npub use async_work::AsyncWorkPromise;\n#[cfg(feature = \"compat-mode\")]\npub use call_context::CallContext;\n\npub use bindgen_runtime::iterator;\npub use env::*;\npub use error::*;\npub use js_values::*;\npub use status::Status;\npub use task::{ScopedTask, Task};\npub use value_type::*;\npub use version::NodeVersion;\n#[cfg(feature = \"serde-json\")]\n#[macro_use]\nextern crate serde;\n\npub type ContextlessResult<T> = Result<Option<T>>;\n\n#[doc(hidden)]\n#[macro_export(local_inner_macros)]\nmacro_rules! type_of {\n  ($env:expr, $value:expr) => {{\n    let mut value_type = 0;\n    #[allow(unused_unsafe)]\n    check_status!(unsafe { $crate::sys::napi_typeof($env, $value, &mut value_type) })\n      .and_then(|_| Ok($crate::ValueType::from(value_type)))\n  }};\n}\n\n#[doc(hidden)]\n#[macro_export]\nmacro_rules! assert_type_of {\n  ($env: expr, $value:expr, $value_ty: expr) => {\n    $crate::type_of!($env, $value).and_then(|received_type| {\n      if received_type == $value_ty {\n        Ok(())\n      } else {\n        Err($crate::Error::new(\n          $crate::Status::InvalidArg,\n          format!(\n            \"Expect value to be {}, but received {}\",\n            $value_ty, received_type\n          ),\n        ))\n      }\n    })\n  };\n}\n\npub mod bindgen_prelude {\n  #[cfg(all(feature = \"compat-mode\", not(feature = \"noop\")))]\n  pub use crate::bindgen_runtime::register_module_exports;\n  #[cfg(feature = \"tokio_rt\")]\n  pub use crate::tokio_runtime::*;\n  pub use crate::{\n    assert_type_of, bindgen_runtime::*, check_pending_exception, check_status,\n    check_status_or_throw, error, error::*, sys, type_of, JsError, JsValue, Property,\n    PropertyAttributes, Result, Status, Task, ValueType,\n  };\n  #[cfg(feature = \"tracing\")]\n  pub use ::tracing;\n\n  // This function's signature must be kept in sync with the one in tokio_runtime.rs, otherwise napi\n  // will fail to compile without the `tokio_rt` feature.\n\n  /// If the feature `tokio_rt` has been enabled this will enter the runtime context and\n  /// then call the provided closure. Otherwise it will just call the provided closure.\n  #[cfg(not(all(feature = \"tokio_rt\", feature = \"napi4\")))]\n  pub fn within_runtime_if_available<F: FnOnce() -> T, T>(f: F) -> T {\n    f()\n  }\n}\n\n#[doc(hidden)]\npub mod __private {\n  pub use crate::bindgen_runtime::{\n    get_class_constructor, iterator::create_iterator, register_class, ___CALL_FROM_FACTORY,\n  };\n\n  #[cfg(feature = \"tokio_rt\")]\n  pub use crate::bindgen_runtime::async_iterator::create_async_iterator;\n\n  use crate::sys;\n\n  pub unsafe fn log_js_value<V: AsRef<[sys::napi_value]>>(\n    // `info`, `log`, `warning` or `error`\n    method: &str,\n    env: sys::napi_env,\n    values: V,\n  ) {\n    use std::ffi::CString;\n    use std::ptr;\n\n    let mut g = ptr::null_mut();\n    unsafe { sys::napi_get_global(env, &mut g) };\n    let mut console = ptr::null_mut();\n    let console_c_string = CString::new(\"console\").unwrap();\n    let method_c_string = CString::new(method).unwrap();\n    unsafe { sys::napi_get_named_property(env, g, console_c_string.as_ptr(), &mut console) };\n    let mut method_js_fn = ptr::null_mut();\n    unsafe {\n      sys::napi_get_named_property(env, console, method_c_string.as_ptr(), &mut method_js_fn)\n    };\n    unsafe {\n      sys::napi_call_function(\n        env,\n        console,\n        method_js_fn,\n        values.as_ref().len(),\n        values.as_ref().as_ptr(),\n        ptr::null_mut(),\n      )\n    };\n  }\n}\n\npub extern crate ctor;\n\n#[cfg(feature = \"tokio_rt\")]\npub extern crate tokio;\n\n#[cfg(feature = \"error_anyhow\")]\npub extern crate anyhow;\n\n#[cfg(feature = \"web_stream\")]\npub extern crate futures_core;\n#[cfg(feature = \"web_stream\")]\npub extern crate tokio_stream;\n"
  },
  {
    "path": "crates/napi/src/sendable_resolver.rs",
    "content": "use crate::Result;\nuse napi_sys as sys;\nuse std::marker::PhantomData;\n\npub struct SendableResolver<\n  Data: 'static + Send,\n  R: 'static + FnOnce(sys::napi_env, Data) -> Result<sys::napi_value>,\n> {\n  inner: R,\n  _data: PhantomData<Data>,\n}\n\n// the `SendableResolver` will be only called in the `threadsafe_function_call_js` callback\n// which means it will be always called in the Node.js JavaScript thread\n// so the inner function is not required to be `Send`\n// but the `Send` bound is required by the `execute_tokio_future` function\nunsafe impl<Data: 'static + Send, R: 'static + FnOnce(sys::napi_env, Data) -> Result<sys::napi_value>>\n  Send for SendableResolver<Data, R>\n{\n}\n\nimpl<Data: 'static + Send, R: 'static + FnOnce(sys::napi_env, Data) -> Result<sys::napi_value>>\n  SendableResolver<Data, R>\n{\n  pub fn new(inner: R) -> Self {\n    Self {\n      inner,\n      _data: PhantomData,\n    }\n  }\n\n  pub fn resolve(self, env: sys::napi_env, data: Data) -> Result<sys::napi_value> {\n    (self.inner)(env, data)\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/status.rs",
    "content": "use std::fmt::{Display, Formatter, Result};\n\nuse crate::sys;\n\n#[repr(i32)]\n#[derive(Eq, PartialEq, Debug, Clone, Copy, PartialOrd, Ord)]\npub enum Status {\n  Ok = 0,\n  InvalidArg,\n  ObjectExpected,\n  StringExpected,\n  NameExpected,\n  FunctionExpected,\n  NumberExpected,\n  BooleanExpected,\n  ArrayExpected,\n  GenericFailure,\n  PendingException,\n  Cancelled,\n  EscapeCalledTwice,\n  HandleScopeMismatch,\n  CallbackScopeMismatch,\n  /// ThreadSafeFunction queue is full\n  QueueFull,\n  /// ThreadSafeFunction closed\n  Closing,\n  BigintExpected,\n  DateExpected,\n  ArrayBufferExpected,\n  DetachableArraybufferExpected,\n  WouldDeadlock,\n  NoExternalBuffersAllowed,\n  Unknown = 1024, // unknown status. for example, using napi3 module in napi7 Node.js, and generate an invalid napi3 status\n}\n\nimpl Display for Status {\n  fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n    let status_string = format!(\"{self:?}\");\n    write!(f, \"{status_string}\")\n  }\n}\n\nimpl AsRef<str> for Status {\n  fn as_ref(&self) -> &str {\n    match self {\n      Status::Ok => \"Ok\",\n      Status::InvalidArg => \"InvalidArg\",\n      Status::ObjectExpected => \"ObjectExpected\",\n      Status::StringExpected => \"StringExpected\",\n      Status::NameExpected => \"NameExpected\",\n      Status::FunctionExpected => \"FunctionExpected\",\n      Status::NumberExpected => \"NumberExpected\",\n      Status::BooleanExpected => \"BooleanExpected\",\n      Status::ArrayExpected => \"ArrayExpected\",\n      Status::GenericFailure => \"GenericFailure\",\n      Status::PendingException => \"PendingException\",\n      Status::Cancelled => \"Cancelled\",\n      Status::EscapeCalledTwice => \"EscapeCalledTwice\",\n      Status::HandleScopeMismatch => \"HandleScopeMismatch\",\n      Status::CallbackScopeMismatch => \"CallbackScopeMismatch\",\n      Status::QueueFull => \"QueueFull\",\n      Status::Closing => \"Closing\",\n      Status::BigintExpected => \"BigintExpected\",\n      Status::DateExpected => \"DateExpected\",\n      Status::ArrayBufferExpected => \"ArrayBufferExpected\",\n      Status::DetachableArraybufferExpected => \"DetachableArraybufferExpected\",\n      Status::WouldDeadlock => \"WouldDeadlock\",\n      Status::NoExternalBuffersAllowed => \"NoExternalBuffersAllowed\",\n      _ => \"Unknown\",\n    }\n  }\n}\n\nimpl From<i32> for Status {\n  fn from(code: i32) -> Self {\n    match code {\n      sys::Status::napi_ok => Status::Ok,\n      sys::Status::napi_invalid_arg => Status::InvalidArg,\n      sys::Status::napi_object_expected => Status::ObjectExpected,\n      sys::Status::napi_string_expected => Status::StringExpected,\n      sys::Status::napi_name_expected => Status::NameExpected,\n      sys::Status::napi_function_expected => Status::FunctionExpected,\n      sys::Status::napi_number_expected => Status::NumberExpected,\n      sys::Status::napi_boolean_expected => Status::BooleanExpected,\n      sys::Status::napi_array_expected => Status::ArrayExpected,\n      sys::Status::napi_generic_failure => Status::GenericFailure,\n      sys::Status::napi_pending_exception => Status::PendingException,\n      sys::Status::napi_cancelled => Status::Cancelled,\n      sys::Status::napi_escape_called_twice => Status::EscapeCalledTwice,\n      sys::Status::napi_handle_scope_mismatch => Status::HandleScopeMismatch,\n      sys::Status::napi_callback_scope_mismatch => Status::CallbackScopeMismatch,\n      sys::Status::napi_queue_full => Status::QueueFull,\n      sys::Status::napi_closing => Status::Closing,\n      sys::Status::napi_bigint_expected => Status::BigintExpected,\n      sys::Status::napi_date_expected => Status::DateExpected,\n      sys::Status::napi_arraybuffer_expected => Status::ArrayBufferExpected,\n      sys::Status::napi_detachable_arraybuffer_expected => Status::DetachableArraybufferExpected,\n      sys::Status::napi_would_deadlock => Status::WouldDeadlock,\n      sys::Status::napi_no_external_buffers_allowed => Status::NoExternalBuffersAllowed,\n      _ => Status::Unknown,\n    }\n  }\n}\n\nimpl From<Status> for i32 {\n  fn from(code: Status) -> Self {\n    match code {\n      Status::Ok => sys::Status::napi_ok,\n      Status::InvalidArg => sys::Status::napi_invalid_arg,\n      Status::ObjectExpected => sys::Status::napi_object_expected,\n      Status::StringExpected => sys::Status::napi_string_expected,\n      Status::NameExpected => sys::Status::napi_name_expected,\n      Status::FunctionExpected => sys::Status::napi_function_expected,\n      Status::NumberExpected => sys::Status::napi_number_expected,\n      Status::BooleanExpected => sys::Status::napi_boolean_expected,\n      Status::ArrayExpected => sys::Status::napi_array_expected,\n      Status::GenericFailure => sys::Status::napi_generic_failure,\n      Status::PendingException => sys::Status::napi_pending_exception,\n      Status::Cancelled => sys::Status::napi_cancelled,\n      Status::EscapeCalledTwice => sys::Status::napi_escape_called_twice,\n      Status::HandleScopeMismatch => sys::Status::napi_handle_scope_mismatch,\n      Status::CallbackScopeMismatch => sys::Status::napi_callback_scope_mismatch,\n      Status::QueueFull => sys::Status::napi_queue_full,\n      Status::Closing => sys::Status::napi_closing,\n      Status::BigintExpected => sys::Status::napi_bigint_expected,\n      Status::DateExpected => sys::Status::napi_date_expected,\n      Status::ArrayBufferExpected => sys::Status::napi_arraybuffer_expected,\n      Status::DetachableArraybufferExpected => sys::Status::napi_detachable_arraybuffer_expected,\n      Status::WouldDeadlock => sys::Status::napi_would_deadlock,\n      Status::NoExternalBuffersAllowed => sys::Status::napi_no_external_buffers_allowed,\n      Status::Unknown => sys::Status::napi_generic_failure,\n    }\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/task.rs",
    "content": "use crate::{\n  bindgen_runtime::{ToNapiValue, TypeName},\n  Env, Error, Result,\n};\n\npub trait Task: Send + Sized {\n  type Output: Send + Sized + 'static;\n  type JsValue: ToNapiValue + TypeName;\n\n  /// Compute logic in libuv thread\n  fn compute(&mut self) -> Result<Self::Output>;\n\n  /// Into this method if `compute` return `Ok`\n  fn resolve(&mut self, env: Env, output: Self::Output) -> Result<Self::JsValue>;\n\n  #[allow(unused_variables)]\n  /// Into this method if `compute` return `Err`\n  fn reject(&mut self, env: Env, err: Error) -> Result<Self::JsValue> {\n    Err(err)\n  }\n\n  #[allow(unused_variables)]\n  /// after resolve or reject\n  fn finally(self, env: Env) -> Result<()> {\n    Ok(())\n  }\n}\n\nimpl<'a, T: Task> ScopedTask<'a> for T {\n  type Output = T::Output;\n  type JsValue = T::JsValue;\n\n  fn compute(&mut self) -> Result<Self::Output> {\n    T::compute(self)\n  }\n\n  fn resolve(&mut self, env: &'a Env, output: Self::Output) -> Result<Self::JsValue> {\n    T::resolve(self, Env::from_raw(env.raw()), output)\n  }\n\n  fn reject(&mut self, env: &'a Env, err: Error) -> Result<Self::JsValue> {\n    T::reject(self, Env::from_raw(env.raw()), err)\n  }\n\n  fn finally(self, env: Env) -> Result<()> {\n    T::finally(self, env)\n  }\n}\n\n/// Basically it's the same as the `Task` trait\n///\n/// The difference is it can be resolve or reject a `JsValue` with lifetime\npub trait ScopedTask<'task>: Send + Sized {\n  type Output: Send + Sized + 'static;\n  type JsValue: ToNapiValue + TypeName;\n\n  /// Compute logic in libuv thread\n  fn compute(&mut self) -> Result<Self::Output>;\n\n  /// Into this method if `compute` return `Ok`\n  fn resolve(&mut self, env: &'task Env, output: Self::Output) -> Result<Self::JsValue>;\n\n  #[allow(unused_variables)]\n  /// Into this method if `compute` return `Err`\n  fn reject(&mut self, env: &'task Env, err: Error) -> Result<Self::JsValue> {\n    Err(err)\n  }\n\n  #[allow(unused_variables)]\n  /// after resolve or reject\n  fn finally(self, env: Env) -> Result<()> {\n    Ok(())\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/threadsafe_function.rs",
    "content": "#![allow(clippy::single_component_path_imports)]\n\nuse std::marker::PhantomData;\nuse std::os::raw::c_void;\nuse std::ptr::{self, null_mut};\nuse std::sync::{\n  self,\n  atomic::{AtomicBool, AtomicPtr, Ordering},\n  Arc, RwLock, RwLockWriteGuard,\n};\n\nuse futures::channel::oneshot::channel;\n\nuse crate::{\n  bindgen_runtime::{FromNapiValue, JsValuesTupleIntoVec, TypeName, Unknown, ValidateNapiValue},\n  check_status, get_error_message_and_stack_trace, sys, Env, Error, JsError, Result, Status,\n};\n\n#[deprecated(since = \"2.17.0\", note = \"Please use `ThreadsafeFunction` instead\")]\npub type ThreadSafeCallContext<T> = ThreadsafeCallContext<T>;\n\n/// ThreadSafeFunction Context object\n/// the `value` is the value passed to `call` method\npub struct ThreadsafeCallContext<T: 'static> {\n  pub env: Env,\n  pub value: T,\n}\n\n#[repr(u8)]\n#[derive(Clone, Copy, Debug, Eq, PartialEq)]\npub enum ThreadsafeFunctionCallMode {\n  NonBlocking,\n  Blocking,\n}\n\nimpl From<ThreadsafeFunctionCallMode> for sys::napi_threadsafe_function_call_mode {\n  fn from(value: ThreadsafeFunctionCallMode) -> Self {\n    match value {\n      ThreadsafeFunctionCallMode::Blocking => sys::ThreadsafeFunctionCallMode::blocking,\n      ThreadsafeFunctionCallMode::NonBlocking => sys::ThreadsafeFunctionCallMode::nonblocking,\n    }\n  }\n}\n\npub struct ThreadsafeFunctionHandle {\n  raw: AtomicPtr<sys::napi_threadsafe_function__>,\n  aborted: RwLock<bool>,\n  referred: AtomicBool,\n}\n\nimpl ThreadsafeFunctionHandle {\n  /// create a Arc to hold the `ThreadsafeFunctionHandle`\n  pub fn new(raw: sys::napi_threadsafe_function) -> Arc<Self> {\n    Arc::new(Self {\n      raw: AtomicPtr::new(raw),\n      aborted: RwLock::new(false),\n      referred: AtomicBool::new(true),\n    })\n  }\n\n  /// Lock `aborted` with read access, call `f` with the value of `aborted`, then unlock it\n  pub fn with_read_aborted<RT, F>(&self, f: F) -> RT\n  where\n    F: FnOnce(bool) -> RT,\n  {\n    let aborted_guard = self\n      .aborted\n      .read()\n      .expect(\"Threadsafe Function aborted lock failed\");\n    f(*aborted_guard)\n  }\n\n  /// Lock `aborted` with write access, call `f` with the `RwLockWriteGuard`, then unlock it\n  pub fn with_write_aborted<RT, F>(&self, f: F) -> RT\n  where\n    F: FnOnce(RwLockWriteGuard<bool>) -> RT,\n  {\n    let aborted_guard = self\n      .aborted\n      .write()\n      .expect(\"Threadsafe Function aborted lock failed\");\n    f(aborted_guard)\n  }\n\n  #[allow(clippy::arc_with_non_send_sync)]\n  pub fn null() -> Arc<Self> {\n    Self::new(null_mut())\n  }\n\n  pub fn get_raw(&self) -> sys::napi_threadsafe_function {\n    self.raw.load(Ordering::SeqCst)\n  }\n\n  pub fn set_raw(&self, raw: sys::napi_threadsafe_function) {\n    self.raw.store(raw, Ordering::SeqCst)\n  }\n}\n\nimpl Drop for ThreadsafeFunctionHandle {\n  fn drop(&mut self) {\n    self.with_read_aborted(|aborted| {\n      if !aborted {\n        let raw = self.get_raw();\n        // if ThreadsafeFunction::create failed, the raw will be null and we don't need to release it\n        if !raw.is_null() {\n          let release_status = unsafe {\n            sys::napi_release_threadsafe_function(\n              self.get_raw(),\n              sys::ThreadsafeFunctionReleaseMode::release,\n            )\n          };\n          assert!(\n            release_status == sys::Status::napi_ok,\n            \"Threadsafe Function release failed {}\",\n            Status::from(release_status)\n          );\n        }\n      }\n    })\n  }\n}\n\n#[repr(u8)]\npub enum ThreadsafeFunctionCallVariant {\n  Direct,\n  WithCallback,\n}\n\npub struct ThreadsafeFunctionCallJsBackData<T, Return = Unknown<'static>> {\n  pub data: T,\n  pub call_variant: ThreadsafeFunctionCallVariant,\n  pub callback: Box<dyn FnOnce(Result<Return>, Env) -> Result<()>>,\n}\n\n/// Communicate with the addon's main thread by invoking a JavaScript function from other threads.\n///\n/// ## Example\n/// An example of using `ThreadsafeFunction`:\n///\n/// ```rust\n/// use std::thread;\n/// use std::sync::Arc;\n///\n/// use napi::{\n///     threadsafe_function::{\n///         ThreadSafeCallContext, ThreadsafeFunctionCallMode, ThreadsafeFunctionReleaseMode,\n///     },\n/// };\n/// use napi_derive::napi;\n///\n/// #[napi]\n/// pub fn call_threadsafe_function(callback: Arc<ThreadsafeFunction<(u32, bool, String), ()>>) {\n///   let tsfn_cloned = tsfn.clone();\n///\n///   thread::spawn(move || {\n///       let output: Vec<u32> = vec![0, 1, 2, 3];\n///       // It's okay to call a threadsafe function multiple times.\n///       tsfn.call(Ok((1, false, \"NAPI-RS\".into())), ThreadsafeFunctionCallMode::Blocking);\n///       tsfn.call(Ok((2, true, \"NAPI-RS\".into())), ThreadsafeFunctionCallMode::NonBlocking);\n///   });\n///\n///   thread::spawn(move || {\n///       tsfn_cloned.call((3, false, \"NAPI-RS\".into())), ThreadsafeFunctionCallMode::NonBlocking);\n///   });\n/// }\n/// ```\npub struct ThreadsafeFunction<\n  T: 'static,\n  Return: 'static + FromNapiValue = Unknown<'static>,\n  CallJsBackArgs: 'static + JsValuesTupleIntoVec = T,\n  ErrorStatus: AsRef<str> + From<Status> = Status,\n  const CalleeHandled: bool = true,\n  const Weak: bool = false,\n  const MaxQueueSize: usize = 0,\n> {\n  pub handle: Arc<ThreadsafeFunctionHandle>,\n  _phantom: PhantomData<(T, CallJsBackArgs, Return, ErrorStatus)>,\n}\n\nunsafe impl<\n    T: 'static,\n    Return: FromNapiValue,\n    CallJsBackArgs: 'static + JsValuesTupleIntoVec,\n    ErrorStatus: AsRef<str> + From<Status>,\n    const CalleeHandled: bool,\n    const Weak: bool,\n    const MaxQueueSize: usize,\n  > Send\n  for ThreadsafeFunction<\n    T,\n    Return,\n    CallJsBackArgs,\n    ErrorStatus,\n    { CalleeHandled },\n    { Weak },\n    { MaxQueueSize },\n  >\n{\n}\n\nunsafe impl<\n    T: 'static,\n    Return: FromNapiValue,\n    CallJsBackArgs: 'static + JsValuesTupleIntoVec,\n    ErrorStatus: AsRef<str> + From<Status>,\n    const CalleeHandled: bool,\n    const Weak: bool,\n    const MaxQueueSize: usize,\n  > Sync\n  for ThreadsafeFunction<\n    T,\n    Return,\n    CallJsBackArgs,\n    ErrorStatus,\n    { CalleeHandled },\n    { Weak },\n    { MaxQueueSize },\n  >\n{\n}\n\nimpl<\n    T: 'static + JsValuesTupleIntoVec,\n    Return: FromNapiValue,\n    ErrorStatus: AsRef<str> + From<Status>,\n    const CalleeHandled: bool,\n    const Weak: bool,\n    const MaxQueueSize: usize,\n  > FromNapiValue\n  for ThreadsafeFunction<T, Return, T, ErrorStatus, { CalleeHandled }, { Weak }, { MaxQueueSize }>\n{\n  unsafe fn from_napi_value(env: sys::napi_env, napi_val: sys::napi_value) -> Result<Self> {\n    Self::create(env, napi_val, |ctx| Ok(ctx.value))\n  }\n}\n\nimpl<\n    T: 'static + JsValuesTupleIntoVec,\n    Return: FromNapiValue,\n    ErrorStatus: AsRef<str> + From<Status>,\n    const CalleeHandled: bool,\n    const Weak: bool,\n    const MaxQueueSize: usize,\n  > TypeName\n  for ThreadsafeFunction<T, Return, T, ErrorStatus, { CalleeHandled }, { Weak }, { MaxQueueSize }>\n{\n  fn type_name() -> &'static str {\n    \"ThreadsafeFunction\"\n  }\n\n  fn value_type() -> crate::ValueType {\n    crate::ValueType::Function\n  }\n}\n\nimpl<\n    T: 'static + JsValuesTupleIntoVec,\n    Return: FromNapiValue,\n    ErrorStatus: AsRef<str> + From<Status>,\n    const CalleeHandled: bool,\n    const Weak: bool,\n    const MaxQueueSize: usize,\n  > ValidateNapiValue\n  for ThreadsafeFunction<T, Return, T, ErrorStatus, { CalleeHandled }, { Weak }, { MaxQueueSize }>\n{\n}\n\nimpl<\n    T: 'static,\n    Return: FromNapiValue,\n    CallJsBackArgs: 'static + JsValuesTupleIntoVec,\n    ErrorStatus: AsRef<str> + From<Status>,\n    const CalleeHandled: bool,\n    const Weak: bool,\n    const MaxQueueSize: usize,\n  >\n  ThreadsafeFunction<\n    T,\n    Return,\n    CallJsBackArgs,\n    ErrorStatus,\n    { CalleeHandled },\n    { Weak },\n    { MaxQueueSize },\n  >\n{\n  // See [napi_create_threadsafe_function](https://nodejs.org/api/n-api.html#n_api_napi_create_threadsafe_function)\n  // for more information.\n  pub(crate) fn create<\n    NewArgs: 'static + JsValuesTupleIntoVec,\n    R: 'static + FnMut(ThreadsafeCallContext<T>) -> Result<NewArgs>,\n  >(\n    env: sys::napi_env,\n    func: sys::napi_value,\n    callback: R,\n  ) -> Result<\n    ThreadsafeFunction<\n      T,\n      Return,\n      NewArgs,\n      ErrorStatus,\n      { CalleeHandled },\n      { Weak },\n      { MaxQueueSize },\n    >,\n  > {\n    let mut async_resource_name = ptr::null_mut();\n    static THREAD_SAFE_FUNCTION_ASYNC_RESOURCE_NAME: &str = \"napi_rs_threadsafe_function\";\n\n    #[cfg(feature = \"napi10\")]\n    {\n      let mut copied = false;\n      check_status!(\n        unsafe {\n          sys::node_api_create_external_string_latin1(\n            env,\n            THREAD_SAFE_FUNCTION_ASYNC_RESOURCE_NAME.as_ptr().cast(),\n            27,\n            None,\n            ptr::null_mut(),\n            &mut async_resource_name,\n            &mut copied,\n          )\n        },\n        \"Create external string latin1 in ThreadsafeFunction::create failed\"\n      )?;\n    }\n\n    #[cfg(not(feature = \"napi10\"))]\n    {\n      check_status!(\n        unsafe {\n          sys::napi_create_string_utf8(\n            env,\n            THREAD_SAFE_FUNCTION_ASYNC_RESOURCE_NAME.as_ptr().cast(),\n            27,\n            &mut async_resource_name,\n          )\n        },\n        \"Create string utf8 in ThreadsafeFunction::create failed\"\n      )?;\n    }\n\n    let mut raw_tsfn = ptr::null_mut();\n    let callback_ptr = Box::into_raw(Box::new(callback));\n    let handle = ThreadsafeFunctionHandle::null();\n    check_status!(\n      unsafe {\n        sys::napi_create_threadsafe_function(\n          env,\n          func,\n          ptr::null_mut(),\n          async_resource_name,\n          MaxQueueSize,\n          1,\n          Arc::downgrade(&handle).into_raw().cast_mut().cast(), // pass handler to thread_finalize_cb\n          Some(thread_finalize_cb::<T, NewArgs, R>),\n          callback_ptr.cast(),\n          Some(call_js_cb::<T, Return, NewArgs, ErrorStatus, R, CalleeHandled>),\n          &mut raw_tsfn,\n        )\n      },\n      \"Create threadsafe function in ThreadsafeFunction::create failed\"\n    )?;\n    handle.set_raw(raw_tsfn);\n\n    // Weak ThreadsafeFunction will not prevent the event loop from exiting\n    if Weak {\n      check_status!(\n        unsafe { sys::napi_unref_threadsafe_function(env, raw_tsfn) },\n        \"Unref threadsafe function failed in Weak mode\"\n      )?;\n    }\n\n    Ok(ThreadsafeFunction {\n      handle,\n      _phantom: PhantomData,\n    })\n  }\n\n  #[deprecated(\n    since = \"2.17.0\",\n    note = \"Please use `ThreadsafeFunction::clone` instead of manually increasing the reference count\"\n  )]\n  /// See [napi_ref_threadsafe_function](https://nodejs.org/api/n-api.html#n_api_napi_ref_threadsafe_function)\n  /// for more information.\n  ///\n  /// \"ref\" is a keyword so that we use \"refer\" here.\n  pub fn refer(&mut self, env: &Env) -> Result<()> {\n    self.handle.with_read_aborted(|aborted| {\n      if !aborted && !self.handle.referred.load(Ordering::Relaxed) {\n        check_status!(unsafe { sys::napi_ref_threadsafe_function(env.0, self.handle.get_raw()) })?;\n        self.handle.referred.store(true, Ordering::Relaxed);\n      }\n      Ok(())\n    })\n  }\n\n  #[deprecated(\n    since = \"2.17.0\",\n    note = \"Please use `ThreadsafeFunction::clone` instead of manually decreasing the reference count\"\n  )]\n  /// See [napi_unref_threadsafe_function](https://nodejs.org/api/n-api.html#n_api_napi_unref_threadsafe_function)\n  /// for more information.\n  pub fn unref(&mut self, env: &Env) -> Result<()> {\n    self.handle.with_read_aborted(|aborted| {\n      if !aborted && self.handle.referred.load(Ordering::Relaxed) {\n        check_status!(unsafe {\n          sys::napi_unref_threadsafe_function(env.0, self.handle.get_raw())\n        })?;\n        self.handle.referred.store(false, Ordering::Relaxed);\n      }\n      Ok(())\n    })\n  }\n\n  pub fn aborted(&self) -> bool {\n    self.handle.with_read_aborted(|aborted| aborted)\n  }\n\n  #[deprecated(\n    since = \"2.17.0\",\n    note = \"Drop all references to the ThreadsafeFunction will automatically release it\"\n  )]\n  pub fn abort(self) -> Result<()> {\n    self.handle.with_write_aborted(|mut aborted_guard| {\n      if !*aborted_guard {\n        check_status!(unsafe {\n          sys::napi_release_threadsafe_function(\n            self.handle.get_raw(),\n            sys::ThreadsafeFunctionReleaseMode::abort,\n          )\n        })?;\n        *aborted_guard = true;\n      }\n      Ok(())\n    })\n  }\n\n  /// Get the raw `ThreadSafeFunction` pointer\n  pub fn raw(&self) -> sys::napi_threadsafe_function {\n    self.handle.get_raw()\n  }\n}\n\nimpl<\n    T: 'static,\n    Return: FromNapiValue,\n    CallJsBackArgs: 'static + JsValuesTupleIntoVec,\n    ErrorStatus: AsRef<str> + From<Status>,\n    const Weak: bool,\n    const MaxQueueSize: usize,\n  > ThreadsafeFunction<T, Return, CallJsBackArgs, ErrorStatus, true, { Weak }, { MaxQueueSize }>\n{\n  /// See [napi_call_threadsafe_function](https://nodejs.org/api/n-api.html#n_api_napi_call_threadsafe_function)\n  /// for more information.\n  pub fn call(&self, value: Result<T, ErrorStatus>, mode: ThreadsafeFunctionCallMode) -> Status {\n    self.handle.with_read_aborted(|aborted| {\n      if aborted {\n        return Status::Closing;\n      }\n\n      unsafe {\n        sys::napi_call_threadsafe_function(\n          self.handle.get_raw(),\n          Box::into_raw(Box::new(value.map(|data| {\n            ThreadsafeFunctionCallJsBackData {\n              data,\n              call_variant: ThreadsafeFunctionCallVariant::Direct,\n              callback: Box::new(|_d: Result<Return>, _| Ok(())),\n            }\n          })))\n          .cast(),\n          mode.into(),\n        )\n      }\n      .into()\n    })\n  }\n\n  /// Call the ThreadsafeFunction, and handle the return value with a callback\n  pub fn call_with_return_value<F: 'static + FnOnce(Result<Return>, Env) -> Result<()>>(\n    &self,\n    value: Result<T, ErrorStatus>,\n    mode: ThreadsafeFunctionCallMode,\n    cb: F,\n  ) -> Status {\n    self.handle.with_read_aborted(|aborted| {\n      if aborted {\n        return Status::Closing;\n      }\n\n      unsafe {\n        sys::napi_call_threadsafe_function(\n          self.handle.get_raw(),\n          Box::into_raw(Box::new(value.map(|data| {\n            ThreadsafeFunctionCallJsBackData {\n              data,\n              call_variant: ThreadsafeFunctionCallVariant::WithCallback,\n              callback: Box::new(move |d: Result<Return>, env: Env| cb(d, env)),\n            }\n          })))\n          .cast(),\n          mode.into(),\n        )\n      }\n      .into()\n    })\n  }\n\n  /// Call the ThreadsafeFunction, and handle the return value with in `async` way\n  pub async fn call_async(&self, value: Result<T, ErrorStatus>) -> Result<Return> {\n    let (sender, receiver) = channel::<Result<Return>>();\n\n    self.handle.with_read_aborted(|aborted| {\n      if aborted {\n        return Err(crate::Error::from_status(Status::Closing));\n      }\n\n      check_status!(\n        unsafe {\n          sys::napi_call_threadsafe_function(\n            self.handle.get_raw(),\n            Box::into_raw(Box::new(value.map(|data| {\n              ThreadsafeFunctionCallJsBackData {\n                data,\n                call_variant: ThreadsafeFunctionCallVariant::WithCallback,\n                callback: Box::new(move |d: Result<Return>, _| {\n                  sender\n                    .send(d)\n                    // The only reason for send to return Err is if the receiver isn't listening\n                    // Not hiding the error would result in a napi_fatal_error call, it's safe to ignore it instead.\n                    .or(Ok(()))\n                }),\n              }\n            })))\n            .cast(),\n            ThreadsafeFunctionCallMode::NonBlocking.into(),\n          )\n        },\n        \"Threadsafe function call_async failed\"\n      )\n    })?;\n    receiver.await.map_err(|_| {\n      crate::Error::new(\n        Status::GenericFailure,\n        \"Receive value from threadsafe function sender failed\",\n      )\n    })?\n  }\n}\n\nimpl<\n    T: 'static,\n    Return: FromNapiValue,\n    CallJsBackArgs: 'static + JsValuesTupleIntoVec,\n    ErrorStatus: AsRef<str> + From<Status>,\n    const Weak: bool,\n    const MaxQueueSize: usize,\n  > ThreadsafeFunction<T, Return, CallJsBackArgs, ErrorStatus, false, { Weak }, { MaxQueueSize }>\n{\n  /// See [napi_call_threadsafe_function](https://nodejs.org/api/n-api.html#n_api_napi_call_threadsafe_function)\n  /// for more information.\n  pub fn call(&self, value: T, mode: ThreadsafeFunctionCallMode) -> Status {\n    self.handle.with_read_aborted(|aborted| {\n      if aborted {\n        return Status::Closing;\n      }\n\n      unsafe {\n        sys::napi_call_threadsafe_function(\n          self.handle.get_raw(),\n          Box::into_raw(Box::new(ThreadsafeFunctionCallJsBackData {\n            data: value,\n            call_variant: ThreadsafeFunctionCallVariant::Direct,\n            callback: Box::new(|_d: Result<Return>, _: Env| Ok(())),\n          }))\n          .cast(),\n          mode.into(),\n        )\n      }\n      .into()\n    })\n  }\n\n  /// Call the ThreadsafeFunction, and handle the return value with a callback\n  pub fn call_with_return_value<F: 'static + FnOnce(Result<Return>, Env) -> Result<()>>(\n    &self,\n    value: T,\n    mode: ThreadsafeFunctionCallMode,\n    cb: F,\n  ) -> Status {\n    self.handle.with_read_aborted(|aborted| {\n      if aborted {\n        return Status::Closing;\n      }\n\n      unsafe {\n        sys::napi_call_threadsafe_function(\n          self.handle.get_raw(),\n          Box::into_raw(Box::new(ThreadsafeFunctionCallJsBackData {\n            data: value,\n            call_variant: ThreadsafeFunctionCallVariant::WithCallback,\n            callback: Box::new(cb),\n          }))\n          .cast(),\n          mode.into(),\n        )\n      }\n      .into()\n    })\n  }\n\n  /// Call the ThreadsafeFunction, and handle the return value with in `async` way\n  pub async fn call_async(&self, value: T) -> Result<Return> {\n    let (sender, receiver) = channel::<Return>();\n\n    self.handle.with_read_aborted(|aborted| {\n      if aborted {\n        return Err(crate::Error::from_status(Status::Closing));\n      }\n\n      check_status!(unsafe {\n        sys::napi_call_threadsafe_function(\n          self.handle.get_raw(),\n          Box::into_raw(Box::new(ThreadsafeFunctionCallJsBackData {\n            data: value,\n            call_variant: ThreadsafeFunctionCallVariant::WithCallback,\n            callback: Box::new(move |d, _| {\n              d.and_then(|d| {\n                sender\n                  .send(d)\n                  // The only reason for send to return Err is if the receiver isn't listening\n                  // Not hiding the error would result in a napi_fatal_error call, it's safe to ignore it instead.\n                  .or(Ok(()))\n              })\n            }),\n          }))\n          .cast(),\n          ThreadsafeFunctionCallMode::NonBlocking.into(),\n        )\n      })\n    })?;\n\n    receiver\n      .await\n      .map_err(|err| crate::Error::new(Status::GenericFailure, format!(\"{err}\")))\n  }\n}\n\nunsafe extern \"C\" fn thread_finalize_cb<T: 'static, V: 'static + JsValuesTupleIntoVec, R>(\n  #[allow(unused_variables)] env: sys::napi_env,\n  finalize_data: *mut c_void,\n  finalize_hint: *mut c_void,\n) where\n  R: 'static + FnMut(ThreadsafeCallContext<T>) -> Result<V>,\n{\n  let handle_option: Option<Arc<ThreadsafeFunctionHandle>> =\n    unsafe { sync::Weak::from_raw(finalize_data.cast()).upgrade() };\n\n  if let Some(handle) = handle_option {\n    handle.with_write_aborted(|mut aborted_guard| {\n      if !*aborted_guard {\n        *aborted_guard = true;\n      }\n    });\n  }\n\n  // cleanup\n  drop(unsafe { Box::<R>::from_raw(finalize_hint.cast()) });\n}\n\nunsafe extern \"C\" fn call_js_cb<\n  T: 'static,\n  Return: FromNapiValue,\n  V: 'static + JsValuesTupleIntoVec,\n  ErrorStatus: AsRef<str> + From<Status>,\n  R,\n  const CalleeHandled: bool,\n>(\n  raw_env: sys::napi_env,\n  js_callback: sys::napi_value,\n  context: *mut c_void,\n  data: *mut c_void,\n) where\n  R: 'static + FnMut(ThreadsafeCallContext<T>) -> Result<V>,\n{\n  // env and/or callback can be null when shutting down\n  if raw_env.is_null() || js_callback.is_null() {\n    return;\n  }\n\n  let callback: &mut R = unsafe { Box::leak(Box::from_raw(context.cast())) };\n  let val = unsafe {\n    if CalleeHandled {\n      *Box::<Result<ThreadsafeFunctionCallJsBackData<T, Return>, ErrorStatus>>::from_raw(\n        data.cast(),\n      )\n    } else {\n      Ok(*Box::<ThreadsafeFunctionCallJsBackData<T, Return>>::from_raw(data.cast()))\n    }\n  };\n\n  let mut recv = ptr::null_mut();\n  unsafe { sys::napi_get_undefined(raw_env, &mut recv) };\n\n  let ret = val.and_then(|v| {\n    (callback)(ThreadsafeCallContext {\n      env: Env::from_raw(raw_env),\n      value: v.data,\n    })\n    .and_then(|ret| Ok((ret.into_vec(raw_env)?, v.call_variant, v.callback)))\n    .map_err(|err| Error::new(err.status.into(), err.reason.clone()))\n  });\n\n  // Follow async callback conventions: https://nodejs.org/en/knowledge/errors/what-are-the-error-conventions/\n  // Check if the Result is okay, if so, pass a null as the first (error) argument automatically.\n  // If the Result is an error, pass that as the first argument.\n  let status = match ret {\n    Ok((values, call_variant, callback)) => {\n      let args: Vec<sys::napi_value> = if CalleeHandled {\n        let mut js_null = ptr::null_mut();\n        unsafe { sys::napi_get_null(raw_env, &mut js_null) };\n        core::iter::once(js_null).chain(values).collect()\n      } else {\n        values\n      };\n      let mut return_value = ptr::null_mut();\n      #[allow(unused_mut)]\n      let mut status = sys::napi_call_function(\n        raw_env,\n        recv,\n        js_callback,\n        args.len(),\n        args.as_ptr(),\n        &mut return_value,\n      );\n      if let ThreadsafeFunctionCallVariant::WithCallback = call_variant {\n        // throw Error in JavaScript callback\n        let callback_arg = if status == sys::Status::napi_pending_exception {\n          let mut exception = ptr::null_mut();\n          unsafe { sys::napi_get_and_clear_last_exception(raw_env, &mut exception) };\n          let mut error_reference = ptr::null_mut();\n          let raw_status = status;\n          status =\n            unsafe { sys::napi_create_reference(raw_env, exception, 1, &mut error_reference) };\n\n          get_error_message_and_stack_trace(raw_env, exception).and_then(|reason| {\n            Err(Error {\n              maybe_raw: error_reference,\n              maybe_env: raw_env,\n              cause: None,\n              status: Status::from(raw_status),\n              reason,\n            })\n          })\n        } else {\n          unsafe { Return::from_napi_value(raw_env, return_value) }\n        };\n        if let Err(err) = callback(callback_arg, Env::from_raw(raw_env)) {\n          unsafe { sys::napi_fatal_exception(raw_env, JsError::from(err).into_value(raw_env)) };\n        }\n      }\n      status\n    }\n    Err(e) if !CalleeHandled => unsafe {\n      sys::napi_fatal_exception(raw_env, JsError::from(e).into_value(raw_env))\n    },\n    Err(e) => unsafe {\n      sys::napi_call_function(\n        raw_env,\n        recv,\n        js_callback,\n        1,\n        [JsError::from(e).into_value(raw_env)].as_mut_ptr(),\n        ptr::null_mut(),\n      )\n    },\n  };\n  handle_call_js_cb_status(status, raw_env)\n}\n\nfn handle_call_js_cb_status(status: sys::napi_status, raw_env: sys::napi_env) {\n  if status == sys::Status::napi_ok {\n    return;\n  }\n  if status == sys::Status::napi_pending_exception {\n    let mut error_result = ptr::null_mut();\n    assert_eq!(\n      unsafe { sys::napi_get_and_clear_last_exception(raw_env, &mut error_result) },\n      sys::Status::napi_ok\n    );\n\n    // When shutting down, napi_fatal_exception sometimes returns another exception\n    let stat = unsafe { sys::napi_fatal_exception(raw_env, error_result) };\n    assert!(stat == sys::Status::napi_ok || stat == sys::Status::napi_pending_exception);\n  } else {\n    let error_code: Status = status.into();\n    let mut error_code_value = ptr::null_mut();\n    assert_eq!(\n      unsafe {\n        sys::napi_create_string_utf8(\n          raw_env,\n          error_code.as_ref().as_ptr().cast(),\n          error_code.as_ref().len() as isize,\n          &mut error_code_value,\n        )\n      },\n      sys::Status::napi_ok,\n    );\n    const ERROR_MSG: &str = \"Call JavaScript callback failed in threadsafe function\";\n    let mut error_msg_value = ptr::null_mut();\n    assert_eq!(\n      unsafe {\n        sys::napi_create_string_utf8(\n          raw_env,\n          ERROR_MSG.as_ptr().cast(),\n          ERROR_MSG.len() as isize,\n          &mut error_msg_value,\n        )\n      },\n      sys::Status::napi_ok,\n    );\n    let mut error_value = ptr::null_mut();\n    assert_eq!(\n      unsafe {\n        sys::napi_create_error(raw_env, error_code_value, error_msg_value, &mut error_value)\n      },\n      sys::Status::napi_ok,\n    );\n    assert_eq!(\n      unsafe { sys::napi_fatal_exception(raw_env, error_value) },\n      sys::Status::napi_ok\n    );\n  }\n}\n\n/// This is a placeholder type that is used to indicate that the return value of a threadsafe function is unknown.\n/// Use this type when you don't care about the return value of a threadsafe function.\n///\n/// And you can't get the value of it as well because it's just a placeholder.\npub struct UnknownReturnValue;\n\nimpl TypeName for UnknownReturnValue {\n  fn type_name() -> &'static str {\n    \"UnknownReturnValue\"\n  }\n\n  fn value_type() -> crate::ValueType {\n    crate::ValueType::Unknown\n  }\n}\n\nimpl ValidateNapiValue for UnknownReturnValue {}\n\nimpl FromNapiValue for UnknownReturnValue {\n  unsafe fn from_napi_value(_env: sys::napi_env, _napi_val: sys::napi_value) -> Result<Self> {\n    Ok(UnknownReturnValue)\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/tokio_runtime.rs",
    "content": "#[cfg(not(feature = \"noop\"))]\nuse std::sync::{LazyLock, OnceLock, RwLock};\nuse std::{future::Future, marker::PhantomData};\n\nuse tokio::runtime::Runtime;\n\nuse crate::{bindgen_runtime::ToNapiValue, sys, Env, Error, Result};\n#[cfg(not(feature = \"noop\"))]\nuse crate::{JsDeferred, SendableResolver, Unknown};\n\n#[cfg(not(feature = \"noop\"))]\nfn create_runtime() -> Runtime {\n  // Check if we're supposed to use a user-defined runtime\n  if IS_USER_DEFINED_RT.get().copied().unwrap_or(false) {\n    // Try to take the user-defined runtime if it's still available\n    if let Some(user_defined_rt) = USER_DEFINED_RT\n      .get()\n      .and_then(|rt| rt.write().ok().and_then(|mut rt| rt.take()))\n    {\n      return user_defined_rt;\n    }\n    // If the user-defined runtime was already taken, fall back to creating a default runtime\n    // This handles the case where the runtime was shutdown and needs to be restarted\n  }\n\n  #[cfg(any(\n    all(target_family = \"wasm\", tokio_unstable),\n    not(target_family = \"wasm\")\n  ))]\n  {\n    tokio::runtime::Builder::new_multi_thread()\n      .enable_all()\n      .build()\n      .expect(\"Create tokio runtime failed\")\n  }\n  #[cfg(all(target_family = \"wasm\", not(tokio_unstable)))]\n  {\n    tokio::runtime::Builder::new_current_thread()\n      .enable_all()\n      .build()\n      .expect(\"Create tokio runtime failed\")\n  }\n}\n\n#[cfg(not(feature = \"noop\"))]\nstatic RT: LazyLock<RwLock<Option<Runtime>>> =\n  LazyLock::new(|| RwLock::new(Some(create_runtime())));\n\n#[cfg(not(feature = \"noop\"))]\nstatic USER_DEFINED_RT: OnceLock<RwLock<Option<Runtime>>> = OnceLock::new();\n\n#[cfg(not(feature = \"noop\"))]\nstatic IS_USER_DEFINED_RT: OnceLock<bool> = OnceLock::new();\n\n#[cfg(not(feature = \"noop\"))]\n/// Create a custom Tokio runtime used by the NAPI-RS.\n/// You can control the tokio runtime configuration by yourself.\n/// ### Example\n/// ```no_run\n/// use tokio::runtime::Builder;\n/// use napi::create_custom_tokio_runtime;\n///\n/// #[napi_derive::module_init]\n/// fn init() {\n///    let rt = Builder::new_multi_thread().enable_all().thread_stack_size(32 * 1024 * 1024).build().unwrap();\n///    create_custom_tokio_runtime(rt);\n/// }\npub fn create_custom_tokio_runtime(rt: Runtime) {\n  USER_DEFINED_RT.get_or_init(move || RwLock::new(Some(rt)));\n  IS_USER_DEFINED_RT.get_or_init(|| true);\n}\n\n#[cfg(feature = \"noop\")]\npub fn create_custom_tokio_runtime(_: Runtime) {}\n\n#[cfg(not(feature = \"noop\"))]\n/// Start the async runtime (Currently is tokio).\n///\n/// In Node.js native targets the async runtime will be dropped when Node env exits.\n/// But in Electron renderer process, the Node env will exits and recreate when the window reloads.\n/// So we need to ensure that the async runtime is initialized when the Node env is created.\n///\n/// In wasm targets, the async runtime will not been shutdown automatically due to the limitation of the wasm runtime.\n/// So, you need to call `shutdown_async_runtime` function to manually shutdown the async runtime.\n/// In some scenarios, you may want to start the async runtime again like in tests.\npub fn start_async_runtime() {\n  if let Ok(mut rt) = RT.write() {\n    if rt.is_none() {\n      *rt = Some(create_runtime());\n    }\n  }\n}\n\n#[cfg(not(feature = \"noop\"))]\npub fn shutdown_async_runtime() {\n  if let Some(rt) = RT.write().ok().and_then(|mut rt| rt.take()) {\n    rt.shutdown_background();\n  }\n}\n\n#[cfg(not(feature = \"noop\"))]\n/// Spawns a future onto the Tokio runtime.\n///\n/// Depending on where you use it, you should await or abort the future in your drop function.\n/// To avoid undefined behavior and memory corruptions.\npub fn spawn<F>(fut: F) -> tokio::task::JoinHandle<F::Output>\nwhere\n  F: 'static + Send + Future<Output = ()>,\n{\n  RT.read()\n    .ok()\n    .and_then(|rt| rt.as_ref().map(|rt| rt.spawn(fut)))\n    .expect(\"Access tokio runtime failed in spawn\")\n}\n\n#[cfg(not(feature = \"noop\"))]\n/// Runs a future to completion\n/// This is blocking, meaning that it pauses other execution until the future is complete,\n/// only use it when it is absolutely necessary, in other places use async functions instead.\npub fn block_on<F: Future>(fut: F) -> F::Output {\n  RT.read()\n    .ok()\n    .and_then(|rt| rt.as_ref().map(|rt| rt.block_on(fut)))\n    .expect(\"Access tokio runtime failed in block_on\")\n}\n\n#[cfg(feature = \"noop\")]\n/// Runs a future to completion\n/// This is blocking, meaning that it pauses other execution until the future is complete,\n/// only use it when it is absolutely necessary, in other places use async functions instead.\npub fn block_on<F: Future>(_: F) -> F::Output {\n  unreachable!(\"noop feature is enabled, block_on is not available\")\n}\n\n#[cfg(not(feature = \"noop\"))]\n/// spawn_blocking on the current Tokio runtime.\npub fn spawn_blocking<F, R>(func: F) -> tokio::task::JoinHandle<R>\nwhere\n  F: FnOnce() -> R + Send + 'static,\n  R: Send + 'static,\n{\n  RT.read()\n    .ok()\n    .and_then(|rt| rt.as_ref().map(|rt| rt.spawn_blocking(func)))\n    .expect(\"Access tokio runtime failed in spawn_blocking\")\n}\n\n#[cfg(not(feature = \"noop\"))]\n// This function's signature must be kept in sync with the one in lib.rs, otherwise napi\n// will fail to compile with the `tokio_rt` feature.\n#[cfg(not(feature = \"noop\"))]\n/// If the feature `tokio_rt` has been enabled this will enter the runtime context and\n/// then call the provided closure. Otherwise it will just call the provided closure.\npub fn within_runtime_if_available<F: FnOnce() -> T, T>(f: F) -> T {\n  RT.read()\n    .ok()\n    .and_then(|rt| {\n      rt.as_ref().map(|rt| {\n        let rt_guard = rt.enter();\n        let ret = f();\n        drop(rt_guard);\n        ret\n      })\n    })\n    .expect(\"Access tokio runtime failed in within_runtime_if_available\")\n}\n\n#[cfg(feature = \"noop\")]\npub fn within_runtime_if_available<F: FnOnce() -> T, T>(f: F) -> T {\n  f()\n}\n\n#[cfg(feature = \"noop\")]\n#[allow(unused)]\npub fn execute_tokio_future<\n  Data: 'static + Send,\n  Fut: 'static + Send + Future<Output = std::result::Result<Data, impl Into<Error>>>,\n  Resolver: 'static + FnOnce(sys::napi_env, Data) -> Result<sys::napi_value>,\n>(\n  env: sys::napi_env,\n  fut: Fut,\n  resolver: Resolver,\n) -> Result<sys::napi_value> {\n  Ok(std::ptr::null_mut())\n}\n\n#[cfg(not(feature = \"noop\"))]\n#[allow(clippy::not_unsafe_ptr_arg_deref)]\npub fn execute_tokio_future<\n  Data: 'static + Send,\n  Fut: 'static + Send + Future<Output = std::result::Result<Data, impl Into<Error>>>,\n  Resolver: 'static + FnOnce(sys::napi_env, Data) -> Result<sys::napi_value>,\n>(\n  env: sys::napi_env,\n  fut: Fut,\n  resolver: Resolver,\n) -> Result<sys::napi_value> {\n  let env = Env::from_raw(env);\n  let (deferred, promise) = JsDeferred::new(&env)?;\n  #[cfg(any(\n    all(target_family = \"wasm\", tokio_unstable),\n    not(target_family = \"wasm\")\n  ))]\n  let deferred_for_panic = deferred.clone();\n  let sendable_resolver = SendableResolver::new(resolver);\n\n  let inner = async move {\n    match fut.await {\n      Ok(v) => deferred.resolve(move |env| {\n        sendable_resolver\n          .resolve(env.raw(), v)\n          .map(|v| unsafe { Unknown::from_raw_unchecked(env.raw(), v) })\n      }),\n      Err(e) => deferred.reject(e.into()),\n    }\n  };\n\n  #[cfg(any(\n    all(target_family = \"wasm\", tokio_unstable),\n    not(target_family = \"wasm\")\n  ))]\n  let jh = spawn(inner);\n\n  #[cfg(any(\n    all(target_family = \"wasm\", tokio_unstable),\n    not(target_family = \"wasm\")\n  ))]\n  spawn(async move {\n    if let Err(err) = jh.await {\n      if let Ok(reason) = err.try_into_panic() {\n        if let Some(s) = reason.downcast_ref::<&str>() {\n          deferred_for_panic.reject(Error::new(crate::Status::GenericFailure, s));\n        } else {\n          deferred_for_panic.reject(Error::new(\n            crate::Status::GenericFailure,\n            \"Panic in async function\",\n          ));\n        }\n      }\n    }\n  });\n\n  #[cfg(all(target_family = \"wasm\", not(tokio_unstable)))]\n  {\n    std::thread::spawn(|| {\n      block_on(inner);\n    });\n  }\n\n  Ok(promise.0.value)\n}\n\n#[doc(hidden)]\n#[cfg(not(feature = \"noop\"))]\n#[allow(clippy::not_unsafe_ptr_arg_deref)]\npub fn execute_tokio_future_with_finalize_callback<\n  Data: 'static + Send,\n  Fut: 'static + Send + Future<Output = std::result::Result<Data, impl Into<Error>>>,\n  Resolver: 'static + FnOnce(sys::napi_env, Data) -> Result<sys::napi_value>,\n>(\n  env: sys::napi_env,\n  fut: Fut,\n  resolver: Resolver,\n  finalize_callback: Option<Box<dyn FnOnce(sys::napi_env)>>,\n) -> Result<sys::napi_value> {\n  let env = Env::from_raw(env);\n  let (mut deferred, promise) = JsDeferred::new(&env)?;\n  deferred.set_finalize_callback(finalize_callback);\n  #[cfg(any(\n    all(target_family = \"wasm\", tokio_unstable),\n    not(target_family = \"wasm\")\n  ))]\n  let deferred_for_panic = deferred.clone();\n  let sendable_resolver = SendableResolver::new(resolver);\n\n  let inner = async move {\n    match fut.await {\n      Ok(v) => deferred.resolve(move |env| {\n        sendable_resolver\n          .resolve(env.raw(), v)\n          .map(|v| unsafe { Unknown::from_raw_unchecked(env.raw(), v) })\n      }),\n      Err(e) => deferred.reject(e.into()),\n    }\n  };\n\n  #[cfg(any(\n    all(target_family = \"wasm\", tokio_unstable),\n    not(target_family = \"wasm\")\n  ))]\n  let jh = spawn(inner);\n\n  #[cfg(any(\n    all(target_family = \"wasm\", tokio_unstable),\n    not(target_family = \"wasm\")\n  ))]\n  spawn(async move {\n    if let Err(err) = jh.await {\n      if let Ok(reason) = err.try_into_panic() {\n        if let Some(s) = reason.downcast_ref::<&str>() {\n          deferred_for_panic.reject(Error::new(crate::Status::GenericFailure, s));\n        } else {\n          deferred_for_panic.reject(Error::new(\n            crate::Status::GenericFailure,\n            \"Panic in async function\",\n          ));\n        }\n      }\n    }\n  });\n\n  #[cfg(all(target_family = \"wasm\", not(tokio_unstable)))]\n  {\n    std::thread::spawn(|| {\n      block_on(inner);\n    });\n  }\n\n  Ok(promise.0.value)\n}\n\n#[cfg(feature = \"noop\")]\n#[doc(hidden)]\npub fn execute_tokio_future_with_finalize_callback<\n  Data: 'static + Send,\n  Fut: 'static + Send + Future<Output = std::result::Result<Data, impl Into<Error>>>,\n  Resolver: 'static + FnOnce(sys::napi_env, Data) -> Result<sys::napi_value>,\n>(\n  _env: sys::napi_env,\n  _fut: Fut,\n  _resolver: Resolver,\n  _finalize_callback: Option<Box<dyn FnOnce(sys::napi_env)>>,\n) -> Result<sys::napi_value> {\n  Ok(std::ptr::null_mut())\n}\n\npub struct AsyncBlockBuilder<\n  V: Send + 'static,\n  F: Future<Output = Result<V>> + Send + 'static,\n  Dispose: FnOnce(Env) -> Result<()> + 'static = fn(Env) -> Result<()>,\n> {\n  inner: F,\n  dispose: Option<Dispose>,\n}\n\nimpl<V: ToNapiValue + Send + 'static, F: Future<Output = Result<V>> + Send + 'static>\n  AsyncBlockBuilder<V, F>\n{\n  /// Create a new `AsyncBlockBuilder` with the given future, without dispose\n  pub fn new(inner: F) -> Self {\n    Self {\n      inner,\n      dispose: None,\n    }\n  }\n}\n\nimpl<\n    V: ToNapiValue + Send + 'static,\n    F: Future<Output = Result<V>> + Send + 'static,\n    Dispose: FnOnce(Env) -> Result<()> + 'static,\n  > AsyncBlockBuilder<V, F, Dispose>\n{\n  pub fn with(inner: F) -> Self {\n    Self {\n      inner,\n      dispose: None,\n    }\n  }\n\n  pub fn with_dispose(mut self, dispose: Dispose) -> Self {\n    self.dispose = Some(dispose);\n    self\n  }\n\n  pub fn build(self, env: &Env) -> Result<AsyncBlock<V>> {\n    Ok(AsyncBlock {\n      inner: execute_tokio_future(env.0, self.inner, |env, v| unsafe {\n        if let Some(dispose) = self.dispose {\n          let env = Env::from_raw(env);\n          dispose(env)?;\n        }\n        V::to_napi_value(env, v)\n      })?,\n      _phantom: PhantomData,\n    })\n  }\n}\n\nimpl<V: Send + 'static, F: Future<Output = Result<V>> + Send + 'static> AsyncBlockBuilder<V, F> {\n  /// Create a new `AsyncBlockBuilder` with the given future, without dispose\n  pub fn build_with_map<T: ToNapiValue, Map: FnOnce(Env, V) -> Result<T> + 'static>(\n    env: &Env,\n    inner: F,\n    map: Map,\n  ) -> Result<AsyncBlock<T>> {\n    Ok(AsyncBlock {\n      inner: execute_tokio_future(env.0, inner, |env, v| unsafe {\n        let v = map(Env::from_raw(env), v)?;\n        T::to_napi_value(env, v)\n      })?,\n      _phantom: PhantomData,\n    })\n  }\n}\n\npub struct AsyncBlock<T: ToNapiValue + 'static> {\n  inner: sys::napi_value,\n  _phantom: PhantomData<T>,\n}\n\nimpl<T: ToNapiValue + 'static> ToNapiValue for AsyncBlock<T> {\n  unsafe fn to_napi_value(_: napi_sys::napi_env, val: Self) -> Result<napi_sys::napi_value> {\n    Ok(val.inner)\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/value_type.rs",
    "content": "use std::fmt::{Display, Formatter, Result};\n\nuse crate::sys;\n\n#[repr(i32)]\n#[derive(Copy, Clone, Debug, PartialEq, PartialOrd, Ord, Eq, Hash)]\npub enum ValueType {\n  Undefined = 0,\n  Null = 1,\n  Boolean = 2,\n  Number = 3,\n  String = 4,\n  Symbol = 5,\n  Object = 6,\n  Function = 7,\n  External = 8,\n  #[cfg(feature = \"napi6\")]\n  BigInt = 9,\n  Unknown = 1024,\n}\n\nimpl Display for ValueType {\n  fn fmt(&self, f: &mut Formatter<'_>) -> Result {\n    let status_string = format!(\"{self:?}\");\n    write!(f, \"{status_string}\")\n  }\n}\n\nimpl From<i32> for ValueType {\n  fn from(value: i32) -> ValueType {\n    match value {\n      #[cfg(feature = \"napi6\")]\n      sys::ValueType::napi_bigint => ValueType::BigInt,\n      sys::ValueType::napi_boolean => ValueType::Boolean,\n      sys::ValueType::napi_external => ValueType::External,\n      sys::ValueType::napi_function => ValueType::Function,\n      sys::ValueType::napi_null => ValueType::Null,\n      sys::ValueType::napi_number => ValueType::Number,\n      sys::ValueType::napi_object => ValueType::Object,\n      sys::ValueType::napi_string => ValueType::String,\n      sys::ValueType::napi_symbol => ValueType::Symbol,\n      sys::ValueType::napi_undefined => ValueType::Undefined,\n      _ => ValueType::Unknown,\n    }\n  }\n}\n"
  },
  {
    "path": "crates/napi/src/version.rs",
    "content": "use crate::{sys, Error, Status};\nuse std::ffi::CStr;\n\n#[derive(Debug, Clone, Copy)]\npub struct NodeVersion {\n  pub major: u32,\n  pub minor: u32,\n  pub patch: u32,\n  pub release: &'static str,\n}\n\nimpl TryFrom<sys::napi_node_version> for NodeVersion {\n  type Error = Error;\n\n  fn try_from(value: sys::napi_node_version) -> Result<NodeVersion, Error> {\n    Ok(NodeVersion {\n      major: value.major,\n      minor: value.minor,\n      patch: value.patch,\n      release: unsafe {\n        CStr::from_ptr(value.release)\n          .to_str()\n          .map_err(|_| Error::new(Status::StringExpected, \"Invalid release name\".to_owned()))?\n      },\n    })\n  }\n}\n"
  },
  {
    "path": "crates/sys/CHANGELOG.md",
    "content": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## [Unreleased]\n\n## [3.2.1](https://github.com/napi-rs/napi-rs/compare/napi-sys-v3.2.0...napi-sys-v3.2.1) - 2025-12-02\n\n### Fixed\n\n- *(sys)* always require libloading because of msvc ([#3047](https://github.com/napi-rs/napi-rs/pull/3047))\n\n## [3.2.0](https://github.com/napi-rs/napi-rs/compare/napi-sys-v3.1.1...napi-sys-v3.2.0) - 2025-12-02\n\n### Added\n\n- *(napi)* add node_api_create_object_with_properties support for enum creation ([#2990](https://github.com/napi-rs/napi-rs/pull/2990))\n\n### Other\n\n- *(sys)* add back non dyn-symbols behavior ([#3045](https://github.com/napi-rs/napi-rs/pull/3045))\n\n## [3.1.1](https://github.com/napi-rs/napi-rs/compare/napi-sys-v3.1.0...napi-sys-v3.1.1) - 2025-11-07\n\n### Other\n\n- *(napi)* Promise and ThreadsafeFunction::call_async don't require tokio ([#2998](https://github.com/napi-rs/napi-rs/pull/2998))\n\n## [3.1.0](https://github.com/napi-rs/napi-rs/compare/napi-sys-v3.0.1...napi-sys-v3.1.0) - 2025-11-06\n\n### Added\n\n- *(sys)* use libloading to load napi symbols at runtime on all platform ([#2996](https://github.com/napi-rs/napi-rs/pull/2996))\n\n## [3.0.1](https://github.com/napi-rs/napi-rs/compare/napi-sys-v3.0.0...napi-sys-v3.0.1) - 2025-10-24\n\n### Other\n\n- *(napi)* bump rust-version ([#2966](https://github.com/napi-rs/napi-rs/pull/2966))\n"
  },
  {
    "path": "crates/sys/Cargo.toml",
    "content": "[package]\nauthors = [\"LongYinan <lynweklm@gmail.com>\"]\ndescription = \"NodeJS N-API raw binding\"\nedition = \"2021\"\ninclude = [\"src/**/*\", \"Cargo.toml\"]\nkeywords = [\"NodeJS\", \"FFI\", \"NAPI\", \"n-api\"]\nlicense = \"MIT\"\nname = \"napi-sys\"\nreadme = \"README.md\"\nrepository = \"https://github.com/napi-rs/napi-rs\"\nrust-version.workspace = true\nversion = \"3.2.1\"\n\n[features]\ndefault = [\"dyn-symbols\"]\ndyn-symbols = []\nexperimental = []\nnapi1 = []\nnapi2 = [\"napi1\"]\nnapi3 = [\"napi2\"]\nnapi4 = [\"napi3\"]\nnapi5 = [\"napi4\"]\nnapi6 = [\"napi5\"]\nnapi7 = [\"napi6\"]\nnapi8 = [\"napi7\"]\nnapi9 = [\"napi8\"]\nnapi10 = [\"napi9\"]\n\n[package.metadata.workspaces]\nindependent = true\n\n[dependencies]\nlibloading = { version = \"0.9\" }\n"
  },
  {
    "path": "crates/sys/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2020-present LongYinan\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nCopyright (c) 2015 David Herman\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "crates/sys/README.md",
    "content": "# napi-sys\n\nDynamic loading logic copied from https://github.com/neon-bindings/neon/tree/0.10.0/crates/neon-runtime/src/napi/bindings.\n\n<a href=\"https://docs.rs/crate/napi-sys\"><img src=\"https://docs.rs/napi-sys/badge.svg\"></img></a>\n<a href=\"https://crates.io/crates/napi-sys\"><img src=\"https://img.shields.io/crates/v/napi-sys.svg\"></img></a>\n<a href=\"https://discord.gg/SpWzYHsKHs\">\n<img src=\"https://img.shields.io/discord/874290842444111882.svg?logo=discord&style=flat-square\"\n    alt=\"chat\" />\n</a>\n\nLow-level N-API bindings for Node.js addons written in Rust.\n\nSee the [napi](https://nodejs.org/api/n-api.html) for the high-level API.\n"
  },
  {
    "path": "crates/sys/src/functions.rs",
    "content": "#![allow(clippy::too_many_arguments)]\n\nmod napi1 {\n  use super::super::types::*;\n  use std::os::raw::{c_char, c_void};\n\n  generate!(\n    extern \"C\" {\n      fn napi_get_last_error_info(\n        env: napi_env,\n        result: *mut *const napi_extended_error_info,\n      ) -> napi_status;\n\n      fn napi_get_undefined(env: napi_env, result: *mut napi_value) -> napi_status;\n      fn napi_get_null(env: napi_env, result: *mut napi_value) -> napi_status;\n      fn napi_get_global(env: napi_env, result: *mut napi_value) -> napi_status;\n      fn napi_get_boolean(env: napi_env, value: bool, result: *mut napi_value) -> napi_status;\n      fn napi_create_object(env: napi_env, result: *mut napi_value) -> napi_status;\n      fn napi_create_array(env: napi_env, result: *mut napi_value) -> napi_status;\n      fn napi_create_array_with_length(\n        env: napi_env,\n        length: usize,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_create_double(env: napi_env, value: f64, result: *mut napi_value) -> napi_status;\n      fn napi_create_int32(env: napi_env, value: i32, result: *mut napi_value) -> napi_status;\n      fn napi_create_uint32(env: napi_env, value: u32, result: *mut napi_value) -> napi_status;\n      fn napi_create_int64(env: napi_env, value: i64, result: *mut napi_value) -> napi_status;\n      fn napi_create_string_latin1(\n        env: napi_env,\n        str_: *const c_char,\n        length: isize,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_create_string_utf8(\n        env: napi_env,\n        str_: *const c_char,\n        length: isize,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_create_string_utf16(\n        env: napi_env,\n        str_: *const u16,\n        length: isize,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_create_symbol(\n        env: napi_env,\n        description: napi_value,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_create_function(\n        env: napi_env,\n        utf8name: *const c_char,\n        length: isize,\n        cb: napi_callback,\n        data: *mut c_void,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_create_error(\n        env: napi_env,\n        code: napi_value,\n        msg: napi_value,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_create_type_error(\n        env: napi_env,\n        code: napi_value,\n        msg: napi_value,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_create_range_error(\n        env: napi_env,\n        code: napi_value,\n        msg: napi_value,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_typeof(env: napi_env, value: napi_value, result: *mut napi_valuetype) -> napi_status;\n      fn napi_get_value_double(env: napi_env, value: napi_value, result: *mut f64) -> napi_status;\n      fn napi_get_value_int32(env: napi_env, value: napi_value, result: *mut i32) -> napi_status;\n      fn napi_get_value_uint32(env: napi_env, value: napi_value, result: *mut u32) -> napi_status;\n      fn napi_get_value_int64(env: napi_env, value: napi_value, result: *mut i64) -> napi_status;\n      fn napi_get_value_bool(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;\n      fn napi_get_value_string_latin1(\n        env: napi_env,\n        value: napi_value,\n        buf: *mut c_char,\n        bufsize: usize,\n        result: *mut usize,\n      ) -> napi_status;\n      fn napi_get_value_string_utf8(\n        env: napi_env,\n        value: napi_value,\n        buf: *mut c_char,\n        bufsize: usize,\n        result: *mut usize,\n      ) -> napi_status;\n      fn napi_get_value_string_utf16(\n        env: napi_env,\n        value: napi_value,\n        buf: *mut u16,\n        bufsize: usize,\n        result: *mut usize,\n      ) -> napi_status;\n      fn napi_coerce_to_bool(\n        env: napi_env,\n        value: napi_value,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_coerce_to_number(\n        env: napi_env,\n        value: napi_value,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_coerce_to_object(\n        env: napi_env,\n        value: napi_value,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_coerce_to_string(\n        env: napi_env,\n        value: napi_value,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_get_prototype(\n        env: napi_env,\n        object: napi_value,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_get_property_names(\n        env: napi_env,\n        object: napi_value,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_set_property(\n        env: napi_env,\n        object: napi_value,\n        key: napi_value,\n        value: napi_value,\n      ) -> napi_status;\n      fn napi_has_property(\n        env: napi_env,\n        object: napi_value,\n        key: napi_value,\n        result: *mut bool,\n      ) -> napi_status;\n      fn napi_get_property(\n        env: napi_env,\n        object: napi_value,\n        key: napi_value,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_delete_property(\n        env: napi_env,\n        object: napi_value,\n        key: napi_value,\n        result: *mut bool,\n      ) -> napi_status;\n      fn napi_has_own_property(\n        env: napi_env,\n        object: napi_value,\n        key: napi_value,\n        result: *mut bool,\n      ) -> napi_status;\n      fn napi_set_named_property(\n        env: napi_env,\n        object: napi_value,\n        utf8name: *const c_char,\n        value: napi_value,\n      ) -> napi_status;\n      fn napi_has_named_property(\n        env: napi_env,\n        object: napi_value,\n        utf8name: *const c_char,\n        result: *mut bool,\n      ) -> napi_status;\n      fn napi_get_named_property(\n        env: napi_env,\n        object: napi_value,\n        utf8name: *const c_char,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_set_element(\n        env: napi_env,\n        object: napi_value,\n        index: u32,\n        value: napi_value,\n      ) -> napi_status;\n      fn napi_has_element(\n        env: napi_env,\n        object: napi_value,\n        index: u32,\n        result: *mut bool,\n      ) -> napi_status;\n      fn napi_get_element(\n        env: napi_env,\n        object: napi_value,\n        index: u32,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_delete_element(\n        env: napi_env,\n        object: napi_value,\n        index: u32,\n        result: *mut bool,\n      ) -> napi_status;\n      fn napi_define_properties(\n        env: napi_env,\n        object: napi_value,\n        property_count: usize,\n        properties: *const napi_property_descriptor,\n      ) -> napi_status;\n      fn napi_is_array(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;\n      fn napi_get_array_length(env: napi_env, value: napi_value, result: *mut u32) -> napi_status;\n      fn napi_strict_equals(\n        env: napi_env,\n        lhs: napi_value,\n        rhs: napi_value,\n        result: *mut bool,\n      ) -> napi_status;\n      fn napi_call_function(\n        env: napi_env,\n        recv: napi_value,\n        func: napi_value,\n        argc: usize,\n        argv: *const napi_value,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_new_instance(\n        env: napi_env,\n        constructor: napi_value,\n        argc: usize,\n        argv: *const napi_value,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_instanceof(\n        env: napi_env,\n        object: napi_value,\n        constructor: napi_value,\n        result: *mut bool,\n      ) -> napi_status;\n      fn napi_get_cb_info(\n        env: napi_env,\n        cbinfo: napi_callback_info,\n        argc: *mut usize,\n        argv: *mut napi_value,\n        this_arg: *mut napi_value,\n        data: *mut *mut c_void,\n      ) -> napi_status;\n      fn napi_get_new_target(\n        env: napi_env,\n        cbinfo: napi_callback_info,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_define_class(\n        env: napi_env,\n        utf8name: *const c_char,\n        length: isize,\n        constructor: napi_callback,\n        data: *mut c_void,\n        property_count: usize,\n        properties: *const napi_property_descriptor,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_wrap(\n        env: napi_env,\n        js_object: napi_value,\n        native_object: *mut c_void,\n        finalize_cb: napi_finalize,\n        finalize_hint: *mut c_void,\n        result: *mut napi_ref,\n      ) -> napi_status;\n      fn napi_unwrap(env: napi_env, js_object: napi_value, result: *mut *mut c_void)\n        -> napi_status;\n      fn napi_remove_wrap(\n        env: napi_env,\n        js_object: napi_value,\n        result: *mut *mut c_void,\n      ) -> napi_status;\n      fn napi_create_external(\n        env: napi_env,\n        data: *mut c_void,\n        finalize_cb: napi_finalize,\n        finalize_hint: *mut c_void,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_get_value_external(\n        env: napi_env,\n        value: napi_value,\n        result: *mut *mut c_void,\n      ) -> napi_status;\n      fn napi_create_reference(\n        env: napi_env,\n        value: napi_value,\n        initial_refcount: u32,\n        result: *mut napi_ref,\n      ) -> napi_status;\n      fn napi_delete_reference(env: napi_env, ref_: napi_ref) -> napi_status;\n      fn napi_reference_ref(env: napi_env, ref_: napi_ref, result: *mut u32) -> napi_status;\n      fn napi_reference_unref(env: napi_env, ref_: napi_ref, result: *mut u32) -> napi_status;\n      fn napi_get_reference_value(\n        env: napi_env,\n        ref_: napi_ref,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_open_handle_scope(env: napi_env, result: *mut napi_handle_scope) -> napi_status;\n      fn napi_close_handle_scope(env: napi_env, scope: napi_handle_scope) -> napi_status;\n      fn napi_open_escapable_handle_scope(\n        env: napi_env,\n        result: *mut napi_escapable_handle_scope,\n      ) -> napi_status;\n      fn napi_close_escapable_handle_scope(\n        env: napi_env,\n        scope: napi_escapable_handle_scope,\n      ) -> napi_status;\n      fn napi_escape_handle(\n        env: napi_env,\n        scope: napi_escapable_handle_scope,\n        escapee: napi_value,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_throw(env: napi_env, error: napi_value) -> napi_status;\n      fn napi_throw_error(env: napi_env, code: *const c_char, msg: *const c_char) -> napi_status;\n      fn napi_throw_type_error(\n        env: napi_env,\n        code: *const c_char,\n        msg: *const c_char,\n      ) -> napi_status;\n      fn napi_throw_range_error(\n        env: napi_env,\n        code: *const c_char,\n        msg: *const c_char,\n      ) -> napi_status;\n      fn napi_is_error(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;\n      fn napi_is_exception_pending(env: napi_env, result: *mut bool) -> napi_status;\n      fn napi_get_and_clear_last_exception(env: napi_env, result: *mut napi_value) -> napi_status;\n      fn napi_is_arraybuffer(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;\n      fn napi_create_arraybuffer(\n        env: napi_env,\n        byte_length: usize,\n        data: *mut *mut c_void,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_create_external_arraybuffer(\n        env: napi_env,\n        external_data: *mut c_void,\n        byte_length: usize,\n        finalize_cb: napi_finalize,\n        finalize_hint: *mut c_void,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_get_arraybuffer_info(\n        env: napi_env,\n        arraybuffer: napi_value,\n        data: *mut *mut c_void,\n        byte_length: *mut usize,\n      ) -> napi_status;\n      fn napi_is_typedarray(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;\n      fn napi_create_typedarray(\n        env: napi_env,\n        type_: napi_typedarray_type,\n        length: usize,\n        arraybuffer: napi_value,\n        byte_offset: usize,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_get_typedarray_info(\n        env: napi_env,\n        typedarray: napi_value,\n        type_: *mut napi_typedarray_type,\n        length: *mut usize,\n        data: *mut *mut c_void,\n        arraybuffer: *mut napi_value,\n        byte_offset: *mut usize,\n      ) -> napi_status;\n      fn napi_create_dataview(\n        env: napi_env,\n        length: usize,\n        arraybuffer: napi_value,\n        byte_offset: usize,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_is_dataview(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;\n      fn napi_get_dataview_info(\n        env: napi_env,\n        dataview: napi_value,\n        bytelength: *mut usize,\n        data: *mut *mut c_void,\n        arraybuffer: *mut napi_value,\n        byte_offset: *mut usize,\n      ) -> napi_status;\n      fn napi_get_version(env: napi_env, result: *mut u32) -> napi_status;\n      fn napi_create_promise(\n        env: napi_env,\n        deferred: *mut napi_deferred,\n        promise: *mut napi_value,\n      ) -> napi_status;\n      fn napi_resolve_deferred(\n        env: napi_env,\n        deferred: napi_deferred,\n        resolution: napi_value,\n      ) -> napi_status;\n      fn napi_reject_deferred(\n        env: napi_env,\n        deferred: napi_deferred,\n        rejection: napi_value,\n      ) -> napi_status;\n      fn napi_is_promise(env: napi_env, value: napi_value, is_promise: *mut bool) -> napi_status;\n      fn napi_run_script(env: napi_env, script: napi_value, result: *mut napi_value)\n        -> napi_status;\n      fn napi_adjust_external_memory(\n        env: napi_env,\n        change_in_bytes: i64,\n        adjusted_value: *mut i64,\n      ) -> napi_status;\n      fn napi_module_register(mod_: *mut napi_module);\n      fn napi_fatal_error(\n        location: *const c_char,\n        location_len: isize,\n        message: *const c_char,\n        message_len: isize,\n      );\n      fn napi_async_init(\n        env: napi_env,\n        async_resource: napi_value,\n        async_resource_name: napi_value,\n        result: *mut napi_async_context,\n      ) -> napi_status;\n      fn napi_async_destroy(env: napi_env, async_context: napi_async_context) -> napi_status;\n      fn napi_make_callback(\n        env: napi_env,\n        async_context: napi_async_context,\n        recv: napi_value,\n        func: napi_value,\n        argc: usize,\n        argv: *const napi_value,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_create_buffer(\n        env: napi_env,\n        length: usize,\n        data: *mut *mut c_void,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_create_external_buffer(\n        env: napi_env,\n        length: usize,\n        data: *mut c_void,\n        finalize_cb: napi_finalize,\n        finalize_hint: *mut c_void,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_create_buffer_copy(\n        env: napi_env,\n        length: usize,\n        data: *const c_void,\n        result_data: *mut *mut c_void,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_is_buffer(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;\n      fn napi_get_buffer_info(\n        env: napi_env,\n        value: napi_value,\n        data: *mut *mut c_void,\n        length: *mut usize,\n      ) -> napi_status;\n      fn napi_create_async_work(\n        env: napi_env,\n        async_resource: napi_value,\n        async_resource_name: napi_value,\n        execute: napi_async_execute_callback,\n        complete: napi_async_complete_callback,\n        data: *mut c_void,\n        result: *mut napi_async_work,\n      ) -> napi_status;\n      fn napi_delete_async_work(env: napi_env, work: napi_async_work) -> napi_status;\n      fn napi_queue_async_work(env: napi_env, work: napi_async_work) -> napi_status;\n      fn napi_cancel_async_work(env: napi_env, work: napi_async_work) -> napi_status;\n      fn napi_get_node_version(\n        env: napi_env,\n        version: *mut *const napi_node_version,\n      ) -> napi_status;\n    }\n  );\n}\n\n#[cfg(feature = \"napi2\")]\nmod napi2 {\n  use super::super::types::*;\n  use std::os::raw::c_int;\n\n  generate!(\n    extern \"C\" {\n      fn napi_get_uv_event_loop(env: napi_env, loop_: *mut *mut uv_loop_s) -> napi_status;\n\n      fn uv_run(loop_: *mut uv_loop_s, mode: uv_run_mode) -> c_int;\n    }\n  );\n}\n\n#[cfg(feature = \"napi3\")]\nmod napi3 {\n  use std::os::raw::c_void;\n\n  use super::super::types::*;\n\n  generate!(\n    extern \"C\" {\n      fn napi_fatal_exception(env: napi_env, err: napi_value) -> napi_status;\n      fn napi_add_env_cleanup_hook(\n        env: napi_env,\n        fun: Option<unsafe extern \"C\" fn(arg: *mut c_void)>,\n        arg: *mut c_void,\n      ) -> napi_status;\n      fn napi_remove_env_cleanup_hook(\n        env: napi_env,\n        fun: Option<unsafe extern \"C\" fn(arg: *mut c_void)>,\n        arg: *mut c_void,\n      ) -> napi_status;\n      fn napi_open_callback_scope(\n        env: napi_env,\n        resource_object: napi_value,\n        context: napi_async_context,\n        result: *mut napi_callback_scope,\n      ) -> napi_status;\n      fn napi_close_callback_scope(env: napi_env, scope: napi_callback_scope) -> napi_status;\n    }\n  );\n}\n\n#[cfg(feature = \"napi4\")]\nmod napi4 {\n  use super::super::types::*;\n  use std::os::raw::c_void;\n\n  generate!(\n    extern \"C\" {\n      fn napi_create_threadsafe_function(\n        env: napi_env,\n        func: napi_value,\n        async_resource: napi_value,\n        async_resource_name: napi_value,\n        max_queue_size: usize,\n        initial_thread_count: usize,\n        thread_finalize_data: *mut c_void,\n        thread_finalize_cb: napi_finalize,\n        context: *mut c_void,\n        call_js_cb: napi_threadsafe_function_call_js,\n        result: *mut napi_threadsafe_function,\n      ) -> napi_status;\n      fn napi_get_threadsafe_function_context(\n        func: napi_threadsafe_function,\n        result: *mut *mut c_void,\n      ) -> napi_status;\n      fn napi_call_threadsafe_function(\n        func: napi_threadsafe_function,\n        data: *mut c_void,\n        is_blocking: napi_threadsafe_function_call_mode,\n      ) -> napi_status;\n      fn napi_acquire_threadsafe_function(func: napi_threadsafe_function) -> napi_status;\n      fn napi_release_threadsafe_function(\n        func: napi_threadsafe_function,\n        mode: napi_threadsafe_function_release_mode,\n      ) -> napi_status;\n      fn napi_unref_threadsafe_function(\n        env: napi_env,\n        func: napi_threadsafe_function,\n      ) -> napi_status;\n      fn napi_ref_threadsafe_function(env: napi_env, func: napi_threadsafe_function)\n        -> napi_status;\n    }\n  );\n}\n\n#[cfg(feature = \"napi5\")]\nmod napi5 {\n  use super::super::types::*;\n  use std::ffi::c_void;\n\n  generate!(\n    extern \"C\" {\n      fn napi_create_date(env: napi_env, time: f64, result: *mut napi_value) -> napi_status;\n      fn napi_is_date(env: napi_env, value: napi_value, is_date: *mut bool) -> napi_status;\n      fn napi_get_date_value(env: napi_env, value: napi_value, result: *mut f64) -> napi_status;\n      fn napi_add_finalizer(\n        env: napi_env,\n        js_object: napi_value,\n        native_object: *mut c_void,\n        finalize_cb: napi_finalize,\n        finalize_hint: *mut c_void,\n        result: *mut napi_ref,\n      ) -> napi_status;\n    }\n  );\n}\n\n#[cfg(feature = \"napi6\")]\nmod napi6 {\n  use super::super::types::*;\n  use std::os::raw::{c_int, c_void};\n\n  generate!(\n    extern \"C\" {\n      fn napi_create_bigint_int64(\n        env: napi_env,\n        value: i64,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_create_bigint_uint64(\n        env: napi_env,\n        value: u64,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_create_bigint_words(\n        env: napi_env,\n        sign_bit: c_int,\n        word_count: usize,\n        words: *const u64,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_get_value_bigint_int64(\n        env: napi_env,\n        value: napi_value,\n        result: *mut i64,\n        lossless: *mut bool,\n      ) -> napi_status;\n      fn napi_get_value_bigint_uint64(\n        env: napi_env,\n        value: napi_value,\n        result: *mut u64,\n        lossless: *mut bool,\n      ) -> napi_status;\n      fn napi_get_value_bigint_words(\n        env: napi_env,\n        value: napi_value,\n        sign_bit: *mut c_int,\n        word_count: *mut usize,\n        words: *mut u64,\n      ) -> napi_status;\n      fn napi_get_all_property_names(\n        env: napi_env,\n        object: napi_value,\n        key_mode: napi_key_collection_mode,\n        key_filter: napi_key_filter,\n        key_conversion: napi_key_conversion,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn napi_set_instance_data(\n        env: napi_env,\n        data: *mut c_void,\n        finalize_cb: napi_finalize,\n        finalize_hint: *mut c_void,\n      ) -> napi_status;\n      fn napi_get_instance_data(env: napi_env, data: *mut *mut c_void) -> napi_status;\n    }\n  );\n}\n\n#[cfg(feature = \"napi7\")]\nmod napi7 {\n  use super::super::types::*;\n\n  generate!(\n    extern \"C\" {\n      fn napi_detach_arraybuffer(env: napi_env, arraybuffer: napi_value) -> napi_status;\n      fn napi_is_detached_arraybuffer(\n        env: napi_env,\n        value: napi_value,\n        result: *mut bool,\n      ) -> napi_status;\n    }\n  );\n}\n\n#[cfg(feature = \"napi8\")]\nmod napi8 {\n  use std::os::raw::c_void;\n\n  use super::super::types::*;\n\n  generate!(\n    extern \"C\" {\n      fn napi_add_async_cleanup_hook(\n        env: napi_env,\n        hook: napi_async_cleanup_hook,\n        arg: *mut c_void,\n        remove_handle: *mut napi_async_cleanup_hook_handle,\n      ) -> napi_status;\n\n      fn napi_remove_async_cleanup_hook(\n        remove_handle: napi_async_cleanup_hook_handle,\n      ) -> napi_status;\n\n      fn napi_object_freeze(env: napi_env, object: napi_value) -> napi_status;\n\n      fn napi_object_seal(env: napi_env, object: napi_value) -> napi_status;\n    }\n  );\n}\n\n#[cfg(feature = \"napi9\")]\nmod napi9 {\n  use std::os::raw::c_char;\n\n  use super::super::types::*;\n\n  generate!(\n    extern \"C\" {\n      fn node_api_symbol_for(\n        env: napi_env,\n        utf8name: *const c_char,\n        length: isize,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn node_api_get_module_file_name(env: napi_env, result: *mut *const c_char) -> napi_status;\n      fn node_api_create_syntax_error(\n        env: napi_env,\n        code: napi_value,\n        msg: napi_value,\n        result: *mut napi_value,\n      ) -> napi_status;\n      fn node_api_throw_syntax_error(\n        env: napi_env,\n        code: *const c_char,\n        msg: *const c_char,\n      ) -> napi_status;\n    }\n  );\n}\n\n#[cfg(feature = \"napi10\")]\nmod napi10 {\n  use std::os::raw::{c_char, c_void};\n\n  use super::super::types::*;\n\n  generate!(\n    extern \"C\" {\n      fn node_api_create_external_string_latin1(\n        env: napi_env,\n        str_: *const c_char,\n        length: isize,\n        napi_finalize: node_api_basic_finalize,\n        finalize_hint: *mut c_void,\n        result: *mut napi_value,\n        copied: *mut bool,\n      ) -> napi_status;\n\n      fn node_api_create_external_string_utf16(\n        env: napi_env,\n        str_: *const u16,\n        length: isize,\n        napi_finalize: node_api_basic_finalize,\n        finalize_hint: *mut c_void,\n        result: *mut napi_value,\n        copied: *mut bool,\n      ) -> napi_status;\n\n      fn node_api_create_property_key_utf16(\n        env: napi_env,\n        str_: *const u16,\n        length: isize,\n        result: *mut napi_value,\n      ) -> napi_status;\n\n      fn node_api_create_property_key_utf8(\n        env: napi_env,\n        str_: *const c_char,\n        length: isize,\n        result: *mut napi_value,\n      ) -> napi_status;\n\n      fn node_api_create_property_key_latin1(\n        env: napi_env,\n        str_: *const c_char,\n        length: isize,\n        result: *mut napi_value,\n      ) -> napi_status;\n    }\n  );\n}\n\n#[cfg(feature = \"experimental\")]\nmod experimental {\n  use std::os::raw::c_void;\n\n  use super::super::types::*;\n\n  generate!(\n    extern \"C\" {\n      fn node_api_create_buffer_from_arraybuffer(\n        env: napi_env,\n        arraybuffer: napi_value,\n        byte_offset: usize,\n        byte_length: usize,\n        result: *mut napi_value,\n      ) -> napi_status;\n\n      fn node_api_post_finalizer(\n        env: node_api_basic_env,\n        finalize_cb: napi_finalize,\n        finalize_data: *mut c_void,\n        finalize_hint: *mut c_void,\n      ) -> napi_status;\n\n      fn napi_create_object_with_properties(\n        env: napi_env,\n        prototype_or_null: napi_value,\n        property_names: *const napi_value,\n        property_values: *const napi_value,\n        property_count: usize,\n        result: *mut napi_value,\n      ) -> napi_status;\n    }\n  );\n}\n\n#[cfg(feature = \"experimental\")]\npub use experimental::*;\n\npub use napi1::*;\n#[cfg(feature = \"napi10\")]\npub use napi10::*;\n#[cfg(feature = \"napi2\")]\npub use napi2::*;\n#[cfg(feature = \"napi3\")]\npub use napi3::*;\n#[cfg(feature = \"napi4\")]\npub use napi4::*;\n#[cfg(feature = \"napi5\")]\npub use napi5::*;\n#[cfg(feature = \"napi6\")]\npub use napi6::*;\n#[cfg(feature = \"napi7\")]\npub use napi7::*;\n#[cfg(feature = \"napi8\")]\npub use napi8::*;\n#[cfg(feature = \"napi9\")]\npub use napi9::*;\n\n#[cfg(all(windows, not(target_env = \"msvc\"), feature = \"dyn-symbols\"))]\nfn test_library(\n  lib_result: Result<libloading::os::windows::Library, libloading::Error>,\n) -> Result<libloading::Library, libloading::Error> {\n  unsafe {\n    match lib_result {\n      Ok(lib) => {\n        let symbol: Result<\n          libloading::os::windows::Symbol<unsafe extern \"C\" fn()>,\n          libloading::Error,\n        > = lib.get(b\"napi_create_int32\\0\");\n        match symbol {\n          Ok(_) => Ok(lib.into()),\n          Err(err) => Err(err),\n        }\n      }\n      Err(err) => Err(err),\n    }\n  }\n}\n\n#[cfg(all(windows, not(target_env = \"msvc\"), feature = \"dyn-symbols\"))]\nfn find_node_library() -> Result<libloading::Library, libloading::Error> {\n  return unsafe {\n    test_library(libloading::os::windows::Library::this())\n      .or(test_library(\n        libloading::os::windows::Library::open_already_loaded(\"libnode\"),\n      ))\n      .or(test_library(\n        libloading::os::windows::Library::open_already_loaded(\"node\"),\n      ))\n      .or(test_library(libloading::os::windows::Library::new(\"node\")))\n      .or(test_library(libloading::os::windows::Library::new(\n        \"libnode\",\n      )))\n  };\n}\n\n#[cfg(any(\n  target_env = \"msvc\",\n  all(not(target_family = \"wasm\"), feature = \"dyn-symbols\")\n))]\npub(super) unsafe fn load_all() -> Result<libloading::Library, libloading::Error> {\n  #[cfg(all(windows, target_env = \"msvc\"))]\n  let host = libloading::os::windows::Library::this()?.into();\n\n  #[cfg(all(windows, not(target_env = \"msvc\")))]\n  let host = find_node_library()?.into();\n\n  #[cfg(unix)]\n  let host = libloading::os::unix::Library::this().into();\n\n  napi1::load(&host)?;\n  #[cfg(feature = \"napi2\")]\n  napi2::load(&host)?;\n  #[cfg(feature = \"napi3\")]\n  napi3::load(&host)?;\n  #[cfg(feature = \"napi4\")]\n  napi4::load(&host)?;\n  #[cfg(feature = \"napi5\")]\n  napi5::load(&host)?;\n  #[cfg(feature = \"napi6\")]\n  napi6::load(&host)?;\n  #[cfg(feature = \"napi7\")]\n  napi7::load(&host)?;\n  #[cfg(feature = \"napi8\")]\n  napi8::load(&host)?;\n  #[cfg(feature = \"napi9\")]\n  napi9::load(&host)?;\n  #[cfg(feature = \"napi10\")]\n  napi10::load(&host)?;\n  #[cfg(feature = \"experimental\")]\n  experimental::load(&host)?;\n  Ok(host)\n}\n"
  },
  {
    "path": "crates/sys/src/lib.rs",
    "content": "// borrowed from https://github.com/neon-bindings/neon/tree/main/crates/neon/src/sys/bindings\n\n#![allow(ambiguous_glob_reexports)]\n\n#[cfg(any(\n  target_env = \"msvc\",\n  all(not(target_family = \"wasm\"), feature = \"dyn-symbols\")\n))]\nmacro_rules! generate {\n  (@stub_fn $name:ident($($param:ident: $ptype:ty,)*) -> napi_status) => {\n    unsafe extern \"C\" fn $name($(_: $ptype,)*) -> napi_status {\n      eprintln!(\"Node-API symbol {} has not been loaded\", stringify!($name));\n      1\n    }\n  };\n  (@stub_fn $name:ident($($param:ident: $ptype:ty,)*) -> $rtype:ty) => {\n    unsafe extern \"C\" fn $name($(_: $ptype,)*) -> $rtype {\n      eprintln!(\"Node-API symbol {} has not been loaded\", stringify!($name));\n      unsafe { std::mem::zeroed() }\n    }\n  };\n  (@stub_fn $name:ident($($param:ident: $ptype:ty,)*)) => {\n    unsafe extern \"C\" fn $name($(_: $ptype,)*) {\n      eprintln!(\"Node-API symbol {} has not been loaded\", stringify!($name));\n    }\n  };\n  (extern \"C\" {\n    $(fn $name:ident($($param:ident: $ptype:ty$(,)?)*)$( -> $rtype:ty)?;)+\n  }) => {\n    struct Napi {\n      $(\n        $name: unsafe extern \"C\" fn(\n          $($param: $ptype,)*\n        )$( -> $rtype)*,\n      )*\n    }\n\n    static mut NAPI: Napi = {\n      $(\n        generate!(@stub_fn $name($($param: $ptype,)*) $( -> $rtype)?);\n      )*\n\n      Napi {\n        $(\n          $name,\n        )*\n      }\n    };\n\n    #[allow(clippy::missing_safety_doc)]\n    pub unsafe fn load(\n      host: &libloading::Library,\n    ) -> Result<(), libloading::Error> {\n      NAPI = Napi {\n        $(\n          $name: {\n            let symbol: Result<libloading::Symbol<unsafe extern \"C\" fn ($(_: $ptype,)*)$( -> $rtype)*>, libloading::Error> = host.get(stringify!($name).as_bytes());\n            match symbol {\n              Ok(f) => *f,\n              Err(_) => {\n                // ignore error, use the stub function\n                NAPI.$name\n              }\n            }\n          },\n        )*\n      };\n\n      Ok(())\n    }\n\n    $(\n      #[inline]\n      #[allow(clippy::missing_safety_doc)]\n      pub unsafe fn $name($($param: $ptype,)*)$( -> $rtype)* {\n        (NAPI.$name)($($param,)*)\n      }\n    )*\n  };\n}\n\n#[cfg(any(\n  target_family = \"wasm\",\n  all(not(target_env = \"msvc\"), not(feature = \"dyn-symbols\"))\n))]\nmacro_rules! generate {\n  (extern \"C\" {\n    $(fn $name:ident($($param:ident: $ptype:ty$(,)?)*)$( -> $rtype:ty)?;)+\n  }) => {\n    extern \"C\" {\n      $(\n        pub fn $name($($param: $ptype,)*)$( -> $rtype)*;\n      ) *\n    }\n  };\n}\n\nmod functions;\nmod types;\n\npub use functions::*;\npub use types::*;\n\n#[cfg(any(\n  target_env = \"msvc\",\n  all(not(target_family = \"wasm\"), feature = \"dyn-symbols\")\n))]\n/// Loads N-API symbols from host process.\n/// Must be called at least once before using any functions in bindings or\n/// they will panic\n///\n/// # Safety\n///\n/// The returned Library must be kept alive as long as any N-API\npub unsafe fn setup() -> libloading::Library {\n  match load_all() {\n    Err(err) => panic!(\"{}\", err),\n    Ok(l) => l,\n  }\n}\n"
  },
  {
    "path": "crates/sys/src/types.rs",
    "content": "#![allow(non_upper_case_globals)]\n#![allow(non_camel_case_types)]\n#![allow(non_snake_case)]\n#![allow(dead_code)]\n\nuse std::os::raw::{c_char, c_int, c_uint, c_void};\n\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct napi_env__ {\n  _unused: [u8; 0],\n}\n\n/// Env ptr\npub type napi_env = *mut napi_env__;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct napi_value__ {\n  _unused: [u8; 0],\n}\n\n/// JsValue ptr\npub type napi_value = *mut napi_value__;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct napi_ref__ {\n  _unused: [u8; 0],\n}\npub type napi_ref = *mut napi_ref__;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct napi_handle_scope__ {\n  _unused: [u8; 0],\n}\npub type napi_handle_scope = *mut napi_handle_scope__;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct napi_escapable_handle_scope__ {\n  _unused: [u8; 0],\n}\npub type napi_escapable_handle_scope = *mut napi_escapable_handle_scope__;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct napi_callback_info__ {\n  _unused: [u8; 0],\n}\npub type napi_callback_info = *mut napi_callback_info__;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct napi_deferred__ {\n  _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct uv_loop_s {\n  _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub enum uv_run_mode {\n  UV_RUN_DEFAULT = 0,\n  UV_RUN_ONCE = 1,\n  UV_RUN_NOWAIT = 2,\n}\npub type napi_deferred = *mut napi_deferred__;\n\npub type napi_property_attributes = i32;\n\npub mod PropertyAttributes {\n  use super::napi_property_attributes;\n\n  pub const default: napi_property_attributes = 0;\n  pub const writable: napi_property_attributes = 1 << 0;\n  pub const enumerable: napi_property_attributes = 1 << 1;\n  pub const configurable: napi_property_attributes = 1 << 2;\n\n  // Used with napi_define_class to distinguish static properties\n  // from instance properties. Ignored by napi_define_properties.\n  pub const static_: napi_property_attributes = 1 << 10;\n}\n\npub type napi_valuetype = i32;\n\npub mod ValueType {\n  pub const napi_undefined: i32 = 0;\n  pub const napi_null: i32 = 1;\n  pub const napi_boolean: i32 = 2;\n  pub const napi_number: i32 = 3;\n  pub const napi_string: i32 = 4;\n  pub const napi_symbol: i32 = 5;\n  pub const napi_object: i32 = 6;\n  pub const napi_function: i32 = 7;\n  pub const napi_external: i32 = 8;\n  #[cfg(feature = \"napi6\")]\n  pub const napi_bigint: i32 = 9;\n}\n\npub type napi_typedarray_type = i32;\n\npub mod TypedarrayType {\n  pub const int8_array: i32 = 0;\n  pub const uint8_array: i32 = 1;\n  pub const uint8_clamped_array: i32 = 2;\n  pub const int16_array: i32 = 3;\n  pub const uint16_array: i32 = 4;\n  pub const int32_array: i32 = 5;\n  pub const uint32_array: i32 = 6;\n  pub const float32_array: i32 = 7;\n  pub const float64_array: i32 = 8;\n  #[cfg(feature = \"napi6\")]\n  pub const bigint64_array: i32 = 9;\n  #[cfg(feature = \"napi6\")]\n  pub const biguint64_array: i32 = 10;\n}\n\npub type napi_status = i32;\n\npub mod Status {\n  pub const napi_ok: i32 = 0;\n  pub const napi_invalid_arg: i32 = 1;\n  pub const napi_object_expected: i32 = 2;\n  pub const napi_string_expected: i32 = 3;\n  pub const napi_name_expected: i32 = 4;\n  pub const napi_function_expected: i32 = 5;\n  pub const napi_number_expected: i32 = 6;\n  pub const napi_boolean_expected: i32 = 7;\n  pub const napi_array_expected: i32 = 8;\n  pub const napi_generic_failure: i32 = 9;\n  pub const napi_pending_exception: i32 = 10;\n  pub const napi_cancelled: i32 = 11;\n  pub const napi_escape_called_twice: i32 = 12;\n  pub const napi_handle_scope_mismatch: i32 = 13;\n  pub const napi_callback_scope_mismatch: i32 = 14;\n  pub const napi_queue_full: i32 = 15;\n  pub const napi_closing: i32 = 16;\n  pub const napi_bigint_expected: i32 = 17;\n  pub const napi_date_expected: i32 = 18;\n  pub const napi_arraybuffer_expected: i32 = 19;\n  pub const napi_detachable_arraybuffer_expected: i32 = 20;\n  pub const napi_would_deadlock: i32 = 21; // unused\n  pub const napi_no_external_buffers_allowed: i32 = 22;\n}\n\npub type napi_callback =\n  Option<unsafe extern \"C\" fn(env: napi_env, info: napi_callback_info) -> napi_value>;\npub type napi_finalize = Option<\n  unsafe extern \"C\" fn(env: napi_env, finalize_data: *mut c_void, finalize_hint: *mut c_void),\n>;\n#[repr(C)]\n#[derive(Copy, Clone, Debug)]\npub struct napi_property_descriptor {\n  pub utf8name: *const c_char,\n  pub name: napi_value,\n  pub method: napi_callback,\n  pub getter: napi_callback,\n  pub setter: napi_callback,\n  pub value: napi_value,\n  pub attributes: napi_property_attributes,\n  pub data: *mut c_void,\n}\n\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct napi_extended_error_info {\n  pub error_message: *const c_char,\n  pub engine_reserved: *mut c_void,\n  pub engine_error_code: u32,\n  pub error_code: napi_status,\n}\n\n#[cfg(feature = \"napi6\")]\npub type napi_key_collection_mode = i32;\n\n#[cfg(feature = \"napi6\")]\npub mod KeyCollectionMode {\n  pub use super::napi_key_collection_mode;\n  pub const include_prototypes: napi_key_collection_mode = 0;\n  pub const own_only: napi_key_collection_mode = 1;\n}\n\n#[cfg(feature = \"napi6\")]\npub type napi_key_filter = i32;\n\n#[cfg(feature = \"napi6\")]\npub mod KeyFilter {\n  use super::napi_key_filter;\n\n  pub const all_properties: napi_key_filter = 0;\n  pub const writable: napi_key_filter = 1;\n  pub const enumerable: napi_key_filter = 1 << 1;\n  pub const configurable: napi_key_filter = 1 << 2;\n  pub const skip_strings: napi_key_filter = 1 << 3;\n  pub const skip_symbols: napi_key_filter = 1 << 4;\n}\n\n#[cfg(feature = \"napi6\")]\npub type napi_key_conversion = i32;\n\n#[cfg(feature = \"napi6\")]\npub mod KeyConversion {\n  use super::napi_key_conversion;\n\n  pub const keep_numbers: napi_key_conversion = 0;\n  pub const numbers_to_strings: napi_key_conversion = 1;\n}\n#[cfg(feature = \"napi8\")]\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct napi_async_cleanup_hook_handle__ {\n  _unused: [u8; 0],\n}\n#[cfg(feature = \"napi8\")]\npub type napi_async_cleanup_hook_handle = *mut napi_async_cleanup_hook_handle__;\n#[cfg(feature = \"napi8\")]\npub type napi_async_cleanup_hook =\n  Option<unsafe extern \"C\" fn(handle: napi_async_cleanup_hook_handle, data: *mut c_void)>;\n\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct napi_callback_scope__ {\n  _unused: [u8; 0],\n}\npub type napi_callback_scope = *mut napi_callback_scope__;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct napi_async_context__ {\n  _unused: [u8; 0],\n}\npub type napi_async_context = *mut napi_async_context__;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct napi_async_work__ {\n  _unused: [u8; 0],\n}\npub type napi_async_work = *mut napi_async_work__;\n\n#[cfg(feature = \"napi4\")]\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct napi_threadsafe_function__ {\n  _unused: [u8; 0],\n}\n\n#[cfg(feature = \"napi4\")]\npub type napi_threadsafe_function = *mut napi_threadsafe_function__;\n\n#[cfg(feature = \"napi4\")]\npub type napi_threadsafe_function_release_mode = i32;\n\n#[cfg(feature = \"napi4\")]\npub mod ThreadsafeFunctionReleaseMode {\n  use super::napi_threadsafe_function_release_mode;\n  pub const release: napi_threadsafe_function_release_mode = 0;\n  pub const abort: napi_threadsafe_function_release_mode = 1;\n}\n\n#[cfg(feature = \"napi4\")]\npub type napi_threadsafe_function_call_mode = i32;\n\n#[cfg(feature = \"napi4\")]\npub mod ThreadsafeFunctionCallMode {\n  use super::napi_threadsafe_function_call_mode;\n\n  pub const nonblocking: napi_threadsafe_function_call_mode = 0;\n  pub const blocking: napi_threadsafe_function_call_mode = 1;\n}\n\npub type napi_async_execute_callback =\n  Option<unsafe extern \"C\" fn(env: napi_env, data: *mut c_void)>;\npub type napi_async_complete_callback =\n  Option<unsafe extern \"C\" fn(env: napi_env, status: napi_status, data: *mut c_void)>;\n\n#[cfg(feature = \"napi4\")]\npub type napi_threadsafe_function_call_js = Option<\n  unsafe extern \"C\" fn(\n    env: napi_env,\n    js_callback: napi_value,\n    context: *mut c_void,\n    data: *mut c_void,\n  ),\n>;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct napi_node_version {\n  pub major: u32,\n  pub minor: u32,\n  pub patch: u32,\n  pub release: *const c_char,\n}\n\npub type napi_addon_register_func =\n  Option<unsafe extern \"C\" fn(env: napi_env, exports: napi_value) -> napi_value>;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct napi_module {\n  pub nm_version: c_int,\n  pub nm_flags: c_uint,\n  pub nm_filename: *const c_char,\n  pub nm_register_func: napi_addon_register_func,\n  pub nm_modname: *const c_char,\n  pub nm_priv: *mut c_void,\n  pub reserved: [*mut c_void; 4usize],\n}\n\n#[cfg(feature = \"napi10\")]\npub type node_api_basic_finalize = Option<\n  unsafe extern \"C\" fn(\n    env: node_api_basic_env,\n    finalize_data: *mut c_void,\n    finalize_hint: *mut c_void,\n  ),\n>;\n\n#[cfg(any(feature = \"experimental\", feature = \"napi10\"))]\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct node_api_basic_env__ {\n  _unused: [u8; 0],\n}\n\n#[cfg(any(feature = \"experimental\", feature = \"napi10\"))]\npub type node_api_basic_env = *mut node_api_basic_env__;\n"
  },
  {
    "path": "debian-aarch64.Dockerfile",
    "content": "FROM messense/manylinux2014-cross:aarch64\n\nENV RUSTUP_HOME=/usr/local/rustup \\\n  CARGO_HOME=/usr/local/cargo \\\n  PATH=/usr/local/cargo/bin:$PATH \\\n  CC=clang \\\n  CC_aarch64_unknown_linux_gnu=clang \\\n  CXX=clang++ \\\n  CXX_aarch64_unknown_linux_gnu=clang++ \\\n  CFLAGS=\"--sysroot=/usr/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot\" \\\n  CXXFLAGS=\"--sysroot=/usr/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot\" \\\n  C_INCLUDE_PATH=\"/usr/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/usr/include\" \\\n  LDFLAGS=\"-L/usr/aarch64-unknown-linux-gnu/lib/llvm-18/lib\"\n\nADD ./lib/llvm-18 /usr/aarch64-unknown-linux-gnu/lib/llvm-18\n\nRUN apt-get update && \\\n  apt-get install -y --fix-missing --no-install-recommends curl gnupg gpg-agent ca-certificates openssl && \\\n  curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \\\n  curl -fsSL https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --dearmor -o /etc/apt/keyrings/llvm-snapshot.gpg && \\\n  echo \"deb [signed-by=/etc/apt/keyrings/llvm-snapshot.gpg] http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main\" >> /etc/apt/sources.list && \\\n  echo \"deb-src [signed-by=/etc/apt/keyrings/llvm-snapshot.gpg] http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main\" >> /etc/apt/sources.list && \\\n  echo \"deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main\" > /etc/apt/sources.list.d/nodesource.list && \\\n  apt-get update && \\\n  apt-get install -y --fix-missing --no-install-recommends \\\n  llvm-18 \\\n  clang-18 \\\n  lld-18 \\\n  libc++-18-dev \\\n  libc++abi-18-dev \\\n  nodejs \\\n  xz-utils \\\n  rcs \\\n  git \\\n  make \\\n  cmake \\\n  ninja-build && \\\n  apt-get autoremove -y && \\\n  curl https://sh.rustup.rs -sSf | sh -s -- -y && \\\n  rustup target add aarch64-unknown-linux-gnu && \\\n  corepack enable && \\\n  ln -sf /usr/bin/clang-18 /usr/bin/clang && \\\n  ln -sf /usr/bin/clang++-18 /usr/bin/clang++ && \\\n  ln -sf /usr/bin/lld-18 /usr/bin/lld && \\\n  ln -sf /usr/bin/clang-18 /usr/bin/cc\n"
  },
  {
    "path": "debian-zig.Dockerfile",
    "content": "FROM ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian\n\nARG ZIG_VERSION=0.12.0\n\nRUN wget https://ziglang.org/download/${ZIG_VERSION}/zig-linux-x86_64-${ZIG_VERSION}.tar.xz && \\\n  tar -xvf zig-linux-x86_64-${ZIG_VERSION}.tar.xz && \\\n  mv zig-linux-x86_64-${ZIG_VERSION} /usr/local/zig && \\\n  ln -sf /usr/local/zig/zig /usr/local/bin/zig && \\\n  rm zig-linux-x86_64-${ZIG_VERSION}.tar.xz\n"
  },
  {
    "path": "debian.Dockerfile",
    "content": "FROM messense/manylinux2014-cross:x86_64\n\nARG NASM_VERSION=2.16.01\n\nENV RUSTUP_HOME=/usr/local/rustup \\\n  CARGO_HOME=/usr/local/cargo \\\n  PATH=/usr/local/cargo/bin:$PATH \\\n  CC=clang \\\n  CXX=clang++ \\\n  CC_x86_64_unknown_linux_gnu=clang \\\n  CXX_x86_64_unknown_linux_gnu=clang++ \\\n  RUST_TARGET=x86_64-unknown-linux-gnu\n\nRUN apt-get update && \\\n  apt-get install -y --fix-missing --no-install-recommends curl gnupg gpg-agent ca-certificates openssl && \\\n  mkdir -p /etc/apt/keyrings && \\\n  curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \\\n  curl -fsSL https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --dearmor -o /etc/apt/keyrings/llvm-snapshot.gpg && \\\n  echo \"deb [signed-by=/etc/apt/keyrings/llvm-snapshot.gpg] http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main\" >> /etc/apt/sources.list && \\\n  echo \"deb-src [signed-by=/etc/apt/keyrings/llvm-snapshot.gpg] http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main\" >> /etc/apt/sources.list && \\\n  echo \"deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main\" > /etc/apt/sources.list.d/nodesource.list && \\\n  apt-get update && \\\n  apt-get install -y --fix-missing --no-install-recommends \\\n  llvm-18 \\\n  clang-18 \\\n  lld-18 \\\n  libc++-18-dev \\\n  libc++abi-18-dev \\\n  nodejs \\\n  xz-utils \\\n  rcs \\\n  git \\\n  make \\\n  cmake \\\n  ninja-build && \\\n  apt-get autoremove -y && \\\n  curl https://sh.rustup.rs -sSf | sh -s -- -y && \\\n  corepack enable && \\\n  ln -sf /usr/bin/clang-18 /usr/bin/clang && \\\n  ln -sf /usr/bin/clang++-18 /usr/bin/clang++ && \\\n  ln -sf /usr/bin/lld-18 /usr/bin/lld && \\\n  ln -sf /usr/bin/clang-18 /usr/bin/cc\n\nRUN wget https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VERSION}/nasm-${NASM_VERSION}.tar.xz && \\\n  tar -xf nasm-${NASM_VERSION}.tar.xz && \\\n  cd nasm-${NASM_VERSION} && \\\n  ./configure --prefix=/usr/ && \\\n  make && \\\n  make install && \\\n  cd / && \\\n  rm -rf nasm-${NASM_VERSION} && \\\n  rm nasm-${NASM_VERSION}.tar.xz\n\nENV LDFLAGS=\"-fuse-ld=lld --sysroot=/usr/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/sysroot\" \\\n  CFLAGS=\"--sysroot=/usr/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/sysroot\" \\\n  CXXFLAGS=\"--sysroot=/usr/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/sysroot\" \\\n  C_INCLUDE_PATH=\"/usr/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/sysroot/usr/include\"\n"
  },
  {
    "path": "examples/binary/.gitignore",
    "content": "*.node\nnapi-examples-binary\n"
  },
  {
    "path": "examples/binary/Cargo.toml",
    "content": "[package]\nedition = \"2021\"\nname = \"napi-examples-binary\"\npublish = false\nversion = \"0.1.0\"\n\n[dependencies]\n"
  },
  {
    "path": "examples/binary/package.json",
    "content": "{\n  \"name\": \"binary\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"bin\": \"napi-examples-binary\",\n  \"scripts\": {\n    \"build\": \"napi-raw build\"\n  },\n  \"devDependencies\": {\n    \"@napi-rs/cli\": \"workspace:*\"\n  }\n}\n"
  },
  {
    "path": "examples/binary/src/main.rs",
    "content": "fn main() {\n  println!(\"Hello World!\");\n}\n"
  },
  {
    "path": "examples/binary/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.json\"\n}\n"
  },
  {
    "path": "examples/napi/.gitignore",
    "content": "*.node\nwip/\n*.wasm\n"
  },
  {
    "path": "examples/napi/Cargo.toml",
    "content": "[package]\nauthors = [\"LongYinan <lynweklm@gmail.com>\"]\nedition = \"2021\"\nname = \"napi-examples\"\npublish = false\nversion = \"0.1.0\"\n\n[lib]\ncrate-type = [\"cdylib\"]\n\n[features]\nsnmalloc = [\"snmalloc-rs\"]\nmimalloc = [\"mimalloc-safe\"]\ndyn-symbols = [\"napi/dyn-symbols\"]\nerror_try_builds = []\nnoop = [\"napi/noop\"]\ncfg_attr_napi = [\n] # for testing cfg_attr(not(feature = \"noop\"), napi_derive::napi) attribute\n\n[dependencies]\nanyhow = \"1\"\nchrono = \"0.4\"\nfutures = \"0.3\"\nbytes = \"1\"\nnapi-derive = { path = \"../../crates/macro\", features = [\"type-def\"] }\nnapi-shared = { path = \"../napi-shared\" }\nserde = \"1\"\nserde_bytes = \"0.11\"\nserde_derive = \"1\"\nserde_json = \"1\"\nindexmap = \"2\"\nrustc-hash = \"2\"\ntokio-stream = \"0.1\"\ntokio-util = { version = \"0.7\", features = [\"io\"] }\nnapi = { path = \"../../crates/napi\", default-features = false, features = [\n  \"napi10\",\n  \"serde-json\",\n  \"experimental\",\n  \"latin1\",\n  \"chrono_date\",\n  \"object_indexmap\",\n  \"tokio\",\n  \"async\",\n  \"tokio_rt\",\n  \"tokio_macros\",\n  \"tokio_io_util\",\n  \"deferred_trace\",\n  \"node_version_detect\",\n  \"web_stream\",\n  \"error_anyhow\",\n  \"dyn-symbols\",\n] }\n\n[target.'cfg(target_family = \"wasm\")'.dependencies]\ntokio = { version = \"1\", features = [\"rt\", \"time\"] }\n\n[target.'cfg(not(target_family = \"wasm\"))'.dependencies]\ntokio = { version = \"1\", features = [\"rt\", \"time\", \"fs\"] }\nreqwest = { version = \"0.12\", default-features = false, features = [\n  \"rustls-tls\",\n  \"stream\",\n  \"charset\",\n  \"http2\",\n  \"system-proxy\",\n  \"json\",\n] }\n\n[dependencies.snmalloc-rs]\nversion = \"0.3\"\nfeatures = [\"build_cc\", \"local_dynamic_tls\"]\noptional = true\n\n[dependencies.mimalloc-safe]\nversion = \"0.1\"\noptional = true\nfeatures = [\"skip_collect_on_exit\"]\n\n[build-dependencies]\nnapi-build = { path = \"../../crates/build\" }\n\n[dev-dependencies]\ntrybuild = \"1.0\"\n"
  },
  {
    "path": "examples/napi/__tests__/__snapshots__/typegen.spec.ts.md",
    "content": "# Snapshot report for `__tests__/typegen.spec.ts`\n\nThe actual snapshot is saved in `typegen.spec.ts.snap`.\n\nGenerated by [AVA](https://avajs.dev).\n\n## should generate correct type def file\n\n> Snapshot 1\n\n    `/* auto-generated by NAPI-RS */␊\n    /* eslint-disable */␊\n    ␊\n    type MaybePromise<T> = T | Promise<T>␊\n    ␊\n    export declare class ExternalObject<T> {␊\n      readonly '': {␊\n        readonly '': unique symbol␊\n        [K: symbol]: T␊\n      }␊\n    }␊\n    /**␊\n     * \\`constructor\\` option for \\`struct\\` requires all fields to be public,␊\n     * otherwise tag impl fn as constructor␊\n     * #[napi(constructor)]␊\n     */␊\n    export declare class Animal {␊\n      /** Kind of animal */␊\n      readonly kind: Kind␊\n      /** This is the constructor */␊\n      constructor(kind: Kind, name: string)␊\n      /** This is a factory method */␊\n      static withKind(kind: Kind): Animal␊\n      get name(): string␊\n      set name(name: string)␊\n      get type(): Kind␊\n      set type(kind: Kind)␊\n      /**␊\n       * This is a␊\n       * multi-line comment␊\n       * with an emoji 🚀␊\n       */␊\n      whoami(): string␊\n      /** This is static... */␊\n      static getDogKind(): Kind␊\n      /**␊\n       * Here are some characters and character sequences␊\n       * that should be escaped correctly:␊\n       * \\\\[]{}/\\\\:\"\"{␊\n       * }␊\n       */␊\n      returnOtherClass(): Dog␊\n      returnOtherClassWithCustomConstructor(): Bird␊\n      overrideIndividualArgOnMethod(normalTy: string, overriddenTy: {n: string}): Bird␊\n    }␊\n    ␊\n    export declare class AnimalWithDefaultConstructor {␊\n      name: string␊\n      kind: number␊\n      constructor(name: string, kind: number)␊\n    }␊\n    ␊\n    export declare class AnotherClassForEither {␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class AnotherCssStyleSheet {␊\n      get rules(): CssRuleList␊\n    }␊\n    export type AnotherCSSStyleSheet = AnotherCssStyleSheet␊\n    ␊\n    export declare class Asset {␊\n      constructor()␊\n      get filePath(): number␊\n    }␊\n    export type JsAsset = Asset␊\n    ␊\n    export declare class Assets {␊\n      constructor()␊\n      get(id: number): JsAsset | null␊\n    }␊\n    export type JsAssets = Assets␊\n    ␊\n    export declare class Bird {␊\n      name: string␊\n      constructor(name: string)␊\n      getCount(): number␊\n      getNameAsync(): Promise<string>␊\n      acceptSliceMethod(slice: Uint8Array): number␊\n    }␊\n    ␊\n    /** Smoking test for type generation */␊\n    export declare class Blake2BHasher {␊\n      static withKey(key: Blake2bKey): Blake2BHasher␊\n      update(data: Buffer): void␊\n    }␊\n    export type Blake2bHasher = Blake2BHasher␊\n    ␊\n    export declare class Blake2BKey {␊\n    ␊\n    }␊\n    export type Blake2bKey = Blake2BKey␊\n    ␊\n    export declare class CatchOnConstructor {␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class CatchOnConstructor2 {␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class ClassWithFactory {␊\n      name: string␊\n      static withName(name: string): ClassWithFactory␊\n      static with4Name(name: string): Promise<ClassWithFactory>␊\n      static with4NameResult(name: string): Promise<ClassWithFactory>␊\n      setName(name: string): this␊\n    }␊\n    ␊\n    export declare class ClassWithLifetime {␊\n      constructor()␊\n      getName(): string␊\n    }␊\n    ␊\n    export declare class Context {␊\n      maybeNeed?: boolean␊\n      buffer: Uint8Array␊\n      constructor()␊\n      static withData(data: string): Context␊\n      static withBuffer(buf: Uint8Array): Context␊\n      method(): string␊\n    }␊\n    ␊\n    export declare class CssRuleList {␊\n      getRules(): Array<string>␊\n      get parentStyleSheet(): CSSStyleSheet␊\n      get name(): string | null␊\n    }␊\n    export type CSSRuleList = CssRuleList␊\n    ␊\n    export declare class CssStyleSheet {␊\n      constructor(name: string, rules: Array<string>)␊\n      get rules(): CssRuleList␊\n      anotherCssStyleSheet(): AnotherCssStyleSheet␊\n    }␊\n    export type CSSStyleSheet = CssStyleSheet␊\n    ␊\n    export declare class CustomFinalize {␊\n      constructor(width: number, height: number)␊\n    }␊\n    ␊\n    export declare class CustomStruct {␊\n      static customStatusCodeForFactory(): CustomStruct␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class DefaultUseNullableClass {␊\n      requiredNumberField: number␊\n      requiredStringField: string␊\n      optionalNumberField?: number␊\n      optionalStringField?: string␊\n      constructor(requiredNumberField: number, requiredStringField: string, optionalNumberField?: number, optionalStringField?: string)␊\n    }␊\n    ␊\n    export declare class Dog {␊\n      name: string␊\n      constructor(name: string)␊\n    }␊\n    ␊\n    export declare class Fib {␊\n      [Symbol.iterator](): Iterator<number, void, number>␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class Fib2 {␊\n      [Symbol.iterator](): Iterator<number, void, number>␊\n      static create(seed: number): Fib2␊\n    }␊\n    ␊\n    export declare class Fib3 {␊\n      current: number␊\n      next: number␊\n      constructor(current: number, next: number)␊\n      [Symbol.iterator](): Iterator<number, void, number>␊\n    }␊\n    ␊\n    export declare class GetterSetterWithClosures {␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class JsClassForEither {␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class JsRemote {␊\n      constructor(repo: JsRepo)␊\n      name(): string␊\n    }␊\n    ␊\n    export declare class JsRepo {␊\n      constructor(dir: string)␊\n      remote(): JsRemote␊\n    }␊\n    ␊\n    export declare class NinjaTurtle {␊\n      name: string␊\n      static isInstanceOf(value: unknown): boolean␊\n      /** Create your ninja turtle! 🐢 */␊\n      static newRaph(): NinjaTurtle␊\n      getMaskColor(): string␊\n      getName(): string␊\n      returnThis(): this␊\n    }␊\n    ␊\n    export declare class NotUseNullableClass {␊\n      requiredNumberField: number␊\n      requiredStringField: string␊\n      optionalNumberField?: number␊\n      optionalStringField?: string␊\n      constructor(requiredNumberField: number, requiredStringField: string, optionalNumberField?: number, optionalStringField?: string)␊\n    }␊\n    ␊\n    export declare class NotWritableClass {␊\n      name: string␊\n      constructor(name: string)␊\n      setName(name: string): void␊\n    }␊\n    ␊\n    export declare class Optional {␊\n      static optionEnd(required: string, optional?: string | undefined | null): string␊\n      static optionStart(optional: string | undefined | null, required: string): string␊\n      static optionStartEnd(optional1: string | undefined | null, required: string, optional2?: string | undefined | null): string␊\n      static optionOnly(optional?: string | undefined | null): string␊\n    }␊\n    ␊\n    export declare class Reader {␊\n    ␊\n      constructor()␊\n      read(): Buffer␊\n    }␊\n    ␊\n    export declare class Selector {␊\n      orderBy: Array<string>␊\n      select: Array<string>␊\n      struct: string␊\n      where?: string␊\n      constructor(orderBy: Array<string>, select: Array<string>, struct: string, where?: string)␊\n    }␊\n    ␊\n    export declare class UseNullableClass {␊\n      requiredNumberField: number␊\n      requiredStringField: string␊\n      nullableNumberField: number | null␊\n      nullableStringField: string | null␊\n      constructor(requiredNumberField: number, requiredStringField: string, nullableNumberField: number | null, nullableStringField: string | null)␊\n    }␊\n    ␊\n    export declare class Width {␊\n      value: number␊\n      constructor(value: number)␊\n    }␊\n    ␊\n    export interface A {␊\n      foo: number␊\n    }␊\n    ␊\n    export declare function acceptArraybuffer(fixture: ArrayBuffer): bigint␊\n    ␊\n    export declare function acceptSlice(fixture: Uint8Array): bigint␊\n    ␊\n    export declare function acceptStream(stream: ReadableStream<Uint8Array>): Promise<Buffer>␊\n    ␊\n    export declare function acceptThreadsafeFunction(func: ((err: Error | null, arg: number) => any)): void␊\n    ␊\n    export declare function acceptThreadsafeFunctionFatal(func: ((arg: number) => void)): void␊\n    ␊\n    export declare function acceptThreadsafeFunctionTupleArgs(func: ((err: Error | null, arg0: number, arg1: boolean, arg2: string) => any)): void␊\n    ␊\n    export declare function acceptUint8ClampedSlice(input: Uint8ClampedArray): bigint␊\n    ␊\n    export declare function acceptUint8ClampedSliceAndBufferSlice(a: Buffer, b: Uint8ClampedArray): bigint␊\n    ␊\n    export declare function add(a: number, b: number): number␊\n    ␊\n    export declare const enum ALIAS {␊\n      A = 0,␊\n      B = 1␊\n    }␊\n    ␊\n    export interface AliasedStruct {␊\n      a: ALIAS␊\n      b: number␊\n    }␊\n    ␊\n    export interface AllOptionalObject {␊\n      name?: string␊\n      age?: number␊\n    }␊\n    ␊\n    export declare function appendBuffer(buf: Buffer): Buffer␊\n    ␊\n    export declare function apply0(ctx: Animal, callback: () => void): void␊\n    ␊\n    export declare function apply1(ctx: Animal, callback: (arg: string) => void, name: string): void␊\n    ␊\n    export declare function arrayBufferPassThrough(buf: Uint8Array): Promise<Uint8Array>␊\n    ␊\n    export declare function asyncBufferToArray(buf: ArrayBuffer): Array<number>␊\n    ␊\n    export declare function asyncMultiTwo(arg: number): Promise<number>␊\n    ␊\n    export declare function asyncPlus100(p: Promise<number>): Promise<number>␊\n    ␊\n    export declare function asyncReduceBuffer(buf: Buffer): Promise<number>␊\n    ␊\n    export declare function asyncTaskOptionalReturn(): Promise<number | null>␊\n    ␊\n    export declare function asyncTaskReadFile(path: string): Promise<Buffer>␊\n    ␊\n    export declare function asyncTaskVoidReturn(): Promise<void>␊\n    ␊\n    export interface B {␊\n      bar: number␊\n    }␊\n    ␊\n    export declare function bigintAdd(a: bigint, b: bigint): bigint␊\n    ␊\n    export declare function bigintFromI128(): bigint␊\n    ␊\n    export declare function bigintFromI64(): bigint␊\n    ␊\n    export declare function bigintGetU64AsString(bi: bigint): string␊\n    ␊\n    export declare function btreeSetToJs(): Set<string>␊\n    ␊\n    export declare function btreeSetToRust(set: Set<string>): void␊\n    ␊\n    export declare function bufferPassThrough(buf: Buffer): Promise<Buffer>␊\n    ␊\n    export declare function bufferWithAsyncBlock(buf: Buffer): Promise<number>␊\n    ␊\n    export declare function buildThreadsafeFunctionFromFunction(callback: (arg0: number, arg1: number) => number): void␊\n    ␊\n    export declare function buildThreadsafeFunctionFromFunctionCalleeHandle(callback: () => void): void␊\n    ␊\n    export interface C {␊\n      baz: number␊\n    }␊\n    ␊\n    export declare function call0(callback: () => number): number␊\n    ␊\n    export declare function call1(callback: (arg: number) => number, arg: number): number␊\n    ␊\n    export declare function call2(callback: (arg0: number, arg1: number) => number, arg1: number, arg2: number): number␊\n    ␊\n    export declare function callbackReturnPromise<T>(functionInput: () => T | Promise<T>, callback: (err: Error | null, result: T) => void): T | Promise<T>␊\n    ␊\n    export declare function callbackReturnPromiseAndSpawn(jsFunc: (arg0: string) => Promise<string>): Promise<string>␊\n    ␊\n    export declare function callCatchOnPromise(input: Promise<number>): Promise<string>␊\n    ␊\n    export declare function callFinallyOnPromise(input: Promise<number>, onFinally: () => void): Promise<number>␊\n    ␊\n    export declare function callFunction(cb: () => number): number␊\n    ␊\n    export declare function callFunctionWithArg(cb: (arg0: number, arg1: number) => number, arg0: number, arg1: number): number␊\n    ␊\n    export declare function callFunctionWithArgAndCtx(ctx: Animal, cb: (arg: string) => void, name: string): void␊\n    ␊\n    export declare function callLongThreadsafeFunction(tsfn: ((err: Error | null, arg: number) => unknown)): void␊\n    ␊\n    export declare function callRuleHandler(rule: Rule, arg: number): number␊\n    ␊\n    export declare function callThenOnPromise(input: Promise<number>): Promise<string>␊\n    ␊\n    export declare function callThreadsafeFunction(tsfn: ((err: Error | null, arg: number) => unknown)): void␊\n    ␊\n    export declare function captureErrorInCallback(cb1: () => void, cb2: (arg0: Error) => void): void␊\n    ␊\n    export declare function chronoDateAdd1Minute(input: Date): Date␊\n    ␊\n    export declare function chronoDateFixtureReturn1(): Date␊\n    ␊\n    export declare function chronoDateFixtureReturn2(): Date␊\n    ␊\n    export declare function chronoDateWithTimezoneReturn(): Date | null␊\n    ␊\n    export declare function chronoDateWithTimezoneToMillis(input: Date): number␊\n    ␊\n    export declare function chronoLocalDateReturn(): Date | null␊\n    ␊\n    export declare function chronoLocalDateToMillis(input: Date): number␊\n    ␊\n    export declare function chronoNativeDateTime(date: Date): number␊\n    ␊\n    export declare function chronoNativeDateTimeReturn(): Date | null␊\n    ␊\n    export declare function chronoUtcDateReturn(): Date | null␊\n    ␊\n    export declare function chronoUtcDateToMillis(input: Date): number␊\n    ␊\n    export declare function concatLatin1(s: string): string␊\n    ␊\n    export declare function concatStr(s: string): string␊\n    ␊\n    export declare function concatUtf16(s: string): string␊\n    ␊\n    export declare function contains(source: string, target: string): boolean␊\n    ␊\n    export declare function convertU32Array(input: Uint32Array): Array<number>␊\n    ␊\n    export declare function createArraybuffer(): ArrayBuffer␊\n    ␊\n    export declare function createBigInt(): bigint␊\n    ␊\n    export declare function createBigIntI64(): bigint␊\n    ␊\n    export declare function createBufferSliceFromCopiedData(): Buffer␊\n    ␊\n    export declare function createExternal(size: number): ExternalObject<number>␊\n    ␊\n    export declare function createExternalBufferSlice(): Buffer␊\n    ␊\n    export declare function createExternalString(content: string): ExternalObject<string>␊\n    ␊\n    export declare function createExternalTypedArray(): Uint32Array␊\n    ␊\n    export declare function createObj(): object␊\n    ␊\n    export declare function createObjectWithClassField(): ObjectFieldClassInstance␊\n    ␊\n    export declare function createObjWithProperty(): { value: ArrayBuffer, get getter(): number }␊\n    ␊\n    export declare function createOptionalExternal(size?: number | undefined | null): ExternalObject<number> | null␊\n    ␊\n    export declare function createReadableStream(): ReadableStream<Buffer>␊\n    ␊\n    export declare function createReadableStreamFromClass(readableStreamClass: typeof ReadableStream): ReadableStream<Buffer>␊\n    ␊\n    export declare function createReferenceOnFunction(cb: () => void): Promise<void>␊\n    ␊\n    export declare function createSymbol(): symbol␊\n    ␊\n    export declare function createSymbolFor(desc: string): symbol␊\n    ␊\n    /** You could break the step and for an new continuous value. */␊\n    export declare const enum CustomNumEnum {␊\n      One = 1,␊\n      Two = 2,␊\n      Three = 3,␊\n      Four = 4,␊\n      Six = 6,␊\n      Eight = 8,␊\n      Nine = 9,␊\n      Ten = 10␊\n    }␊\n    ␊\n    export declare function customStatusCode(): void␊\n    ␊\n    export declare const enum CustomStringEnum {␊\n      Foo = 'my-custom-value',␊\n      Bar = 'Bar',␊\n      Baz = 'Baz'␊\n    }␊\n    ␊\n    export type CustomU32 =␊\n      number␊\n    ␊\n    export interface Data {␊\n      data: string | Buffer␊\n    }␊\n    ␊\n    export interface DatesWithTimeZone {␊\n      start: Date␊\n      end?: Date␊\n    }␊\n    ␊\n    export declare function dateToNumber(input: Date): number␊\n    ␊\n    /** This is a const */␊\n    export const DEFAULT_COST: number␊\n    ␊\n    export interface DefaultUseNullableStruct {␊\n      requiredNumberField: number␊\n      requiredStringField: string␊\n      optionalNumberField?: number␊\n      optionalStringField?: string␊\n    }␊\n    ␊\n    export declare function derefUint8Array(a: Uint8Array, b: Uint8ClampedArray): number␊\n    ␊\n    export declare function either3(input: string | number | boolean): number␊\n    ␊\n    export declare function either4(input: string | number | boolean | Obj): number␊\n    ␊\n    export declare function eitherBoolOrFunction(input: boolean | (any)): void␊\n    ␊\n    export declare function eitherBoolOrTuple(input: boolean | [boolean, string]): void␊\n    ␊\n    export declare function eitherFromObjects(input: A | B | C): string␊\n    ␊\n    export declare function eitherFromOption(): JsClassForEither | undefined␊\n    ␊\n    export declare function eitherStringOrNumber(input: string | number): number␊\n    ␊\n    export declare const enum Empty {␊\n    ␊\n    }␊\n    ␊\n    export declare function enumToI32(e: CustomNumEnum): number␊\n    ␊\n    export declare function errorMessageContainsNullByte(msg: string): void␊\n    ␊\n    export declare function f32ArrayToArray(input: Float32Array): Array<number>␊\n    ␊\n    export declare function f64ArrayToArray(input: Float64Array): Array<number>␊\n    ␊\n    export declare function fibonacci(n: number): number␊\n    ␊\n    export declare function fnReceivedAliased(s: AliasedStruct, e: ALIAS): void␊\n    ␊\n    export interface FunctionData {␊\n      handle: () => number␊\n    }␊\n    ␊\n    export declare function generateFunctionAndCallIt(): FunctionData␊\n    ␊\n    export declare function getBtreeMapping(): Record<string, number>␊\n    ␊\n    export declare function getBuffer(): Buffer␊\n    ␊\n    export declare function getBufferSlice(): Buffer␊\n    ␊\n    export declare function getCwd(callback: (arg0: string) => void): void␊\n    ␊\n    export declare function getEmptyBuffer(): Buffer␊\n    ␊\n    export declare function getEmptyTypedArray(): Uint8Array␊\n    ␊\n    export declare function getExternal(external: ExternalObject<number>): number␊\n    ␊\n    export declare function getGlobal(): typeof global␊\n    ␊\n    export declare function getIndexMapping(): Record<string, number>␊\n    ␊\n    export declare function getIndexMappingWithHasher(): Record<string, number>␊\n    ␊\n    export declare function getMapping(): Record<string, number>␊\n    ␊\n    export declare function getMappingWithHasher(): Record<string, number>␊\n    ␊\n    export declare function getModuleFileName(): string␊\n    ␊\n    export declare function getMyVec(): MyVec␊\n    ␊\n    export declare function getNestedNumArr(): number[][][]␊\n    ␊\n    export declare function getNull(): null␊\n    ␊\n    export declare function getNullByteProperty(obj: object): string | null␊\n    ␊\n    export declare function getNumArr(): number[]␊\n    ␊\n    /** Gets some numbers */␊\n    export declare function getNums(): Array<number>␊\n    ␊\n    export declare function getOptionalExternal(external?: ExternalObject<number> | undefined | null): number | null␊\n    ␊\n    export declare function getPackageJsonName(packageJson: PackageJson): string␊\n    ␊\n    export declare function getStrFromObject(): void␊\n    ␊\n    export declare function getterFromObj(): number␊\n    ␊\n    export declare function getTuple(val: [number, string, number]): number␊\n    ␊\n    export declare function getUndefined(): void␊\n    ␊\n    export declare function getWords(): Array<string>␊\n    ␊\n    export declare function i16ArrayToArray(input: Int16Array): Array<number>␊\n    ␊\n    export declare function i32ArrayToArray(input: Int32Array): Array<number>␊\n    ␊\n    export declare function i64ArrayToArray(input: BigInt64Array): Array<number>␊\n    ␊\n    export declare function i8ArrayToArray(input: Int8Array): Array<number>␊\n    ␊\n    export declare function indexmapPassthrough(fixture: Record<string, number>): Record<string, number>␊\n    ␊\n    export declare function jsErrorCallback(value: unknown): Array<Error>␊\n    ␊\n    /** default enum values are continuos i32s start from 0 */␊\n    export declare const enum Kind {␊\n      /** Barks */␊\n      Dog = 0,␊\n      /** Kills birds */␊\n      Cat = 1,␊\n      /** Tasty */␊\n      Duck = 2␊\n    }␊\n    ␊\n    /** default enum values are continuos i32s start from 0 */␊\n    export declare const enum KindInValidate {␊\n      /** Barks */␊\n      Dog = 0,␊\n      /** Kills birds */␊\n      Cat = 1,␊\n      /** Tasty */␊\n      Duck = 2␊\n    }␊\n    ␊\n    export declare function listObjKeys(obj: object): Array<string>␊\n    ␊\n    export interface LocalDates {␊\n      start: Date␊\n      end?: Date␊\n    }␊\n    ␊\n    export declare function mapOption(val?: number | undefined | null): number | null␊\n    ␊\n    export declare function mutateExternal(external: ExternalObject<number>, newVal: number): void␊\n    ␊\n    export declare function mutateOptionalExternal(external: ExternalObject<number> | undefined | null, newVal: number): void␊\n    ␊\n    export declare function mutateTypedArray(input: Float32Array): void␊\n    ␊\n    export type MyPromise =␊\n      string | Promise<string>␊\n    ␊\n    export type MyVec =␊\n      Array<number | string>␊\n    ␊\n    export interface NotUseNullableStruct {␊\n      requiredNumberField: number␊\n      requiredStringField: string␊\n      optionalNumberField?: number␊\n      optionalStringField?: string␊\n    }␊\n    ␊\n    export type Nullable<T> =␊\n      T | undefined | null␊\n    ␊\n    export interface Obj {␊\n      v: string | number␊\n    }␊\n    ␊\n    export interface ObjectFieldClassInstance {␊\n      bird: Bird␊\n    }␊\n    ␊\n    export declare function objectGetNamedPropertyShouldPerformTypecheck(obj: { foo: number; bar: string; }): void␊\n    ␊\n    export interface ObjectOnlyFromJs {␊\n      count: number␊\n      callback: ((err: Error | null, arg: number) => any)␊\n    }␊\n    ␊\n    export interface ObjectOnlyToJs {␊\n      name: number␊\n      dependencies: any␊\n    }␊\n    ␊\n    export declare function optionEnd(callback: (arg0: string, arg1?: string | undefined | null) => void): void␊\n    ␊\n    export declare function optionOnly(callback: (arg0?: string | undefined | null) => void): void␊\n    ␊\n    export declare function optionStart(callback: (arg0: string | undefined | null, arg1: string) => void): void␊\n    ␊\n    export declare function optionStartEnd(callback: (arg0: string | undefined | null, arg1: string, arg2?: string | undefined | null) => void): void␊\n    ␊\n    export declare function overrideIndividualArgOnFunction(notOverridden: string, f: () => string, notOverridden2: number): string␊\n    ␊\n    export declare function overrideIndividualArgOnFunctionWithCbArg(callback: (town: string, name?: string | undefined | null) => string, notOverridden: number): object␊\n    ␊\n    export declare function overrideWholeFunctionType(operation: 'add' | 'subtract' | 'multiply', a: number, b: number): number␊\n    ␊\n    /** This is an interface for package.json */␊\n    export interface PackageJson {␊\n      name: string␊\n      /** The version of the package */␊\n      version: string␊\n      dependencies?: Record<string, any>␊\n      devDependencies?: Record<string, any>␊\n    }␊\n    ␊\n    export declare function panic(): void␊\n    ␊\n    export declare function panicInAsync(): Promise<void>␊\n    ␊\n    export declare function passSetToJs(): Set<string>␊\n    ␊\n    export declare function passSetToRust(set: Set<string>): void␊\n    ␊\n    export declare function passSetWithHasherToJs(): Set<string>␊\n    ␊\n    export interface Pet {␊\n      name: string␊\n      kind: number␊\n      eitherTsfn: string | ((err: Error | null, arg: number) => number)␊\n    }␊\n    ␊\n    export declare function plusOne(this: Width): number␊\n    ␊\n    export declare function promiseInEither(input: number | Promise<number>): Promise<boolean>␊\n    ␊\n    /** napi = { version = 2, features = [\"serde-json\"] } */␊\n    export declare function readFile(callback: (arg0: Error | undefined, arg1?: string | undefined | null) => void): void␊\n    ␊\n    export declare function readFileAsync(path: string): Promise<Buffer>␊\n    ␊\n    export declare function readPackageJson(): PackageJson␊\n    ␊\n    export declare function receiveAllOptionalObject(obj?: AllOptionalObject | undefined | null): void␊\n    ␊\n    export declare function receiveBufferSliceWithLifetime(data: Data): number␊\n    ␊\n    export declare function receiveClassOrNumber(either: number | JsClassForEither): number␊\n    ␊\n    export declare function receiveDifferentClass(either: JsClassForEither | AnotherClassForEither): number␊\n    ␊\n    export declare function receiveMutClassOrNumber(either: number | JsClassForEither): number␊\n    ␊\n    export declare function receiveObjectOnlyFromJs(obj: { count: number, callback: (err: Error | null, count: number) => void }): void␊\n    ␊\n    export declare function receiveObjectWithClassField(object: ObjectFieldClassInstance): Bird␊\n    ␊\n    export declare function receiveStrictObject(strictObject: StrictObject): void␊\n    ␊\n    export declare function receiveString(s: string): string␊\n    ␊\n    export declare function referenceAsCallback(callback: (arg0: number, arg1: number) => number, arg0: number, arg1: number): number␊\n    ␊\n    export declare function returnCString(): string␊\n    ␊\n    export declare function returnEither(input: number): string | number␊\n    ␊\n    export declare function returnEitherClass(input: number): number | JsClassForEither␊\n    ␊\n    export declare function returnFromSharedCrate(): Shared␊\n    ␊\n    export declare function returnNull(): null␊\n    ␊\n    export declare function returnObjectOnlyToJs(): ObjectOnlyToJs␊\n    ␊\n    export declare function returnUndefined(): void␊\n    ␊\n    export declare function returnUndefinedIfInvalid(input: boolean): boolean␊\n    ␊\n    export declare function returnUndefinedIfInvalidPromise(input: Promise<boolean>): Promise<boolean>␊\n    ␊\n    export declare function roundtripStr(s: string): string␊\n    ␊\n    export interface Rule {␊\n      name: string␊\n      handler: RuleHandler<number, number>␊\n    }␊\n    ␊\n    export type RuleHandler<Args, Ret> =␊\n      (arg: Args) => Ret␊\n    ␊\n    export declare function runScript(script: string): unknown␊\n    ␊\n    export declare function setNullByteProperty(obj: object): void␊\n    ␊\n    export declare function setSymbolInObj(symbol: symbol): object␊\n    ␊\n    export interface Shared {␊\n      value: number␊\n    }␊\n    ␊\n    export declare function spawnThreadInThread(tsfn: ((err: Error | null, arg: number) => number)): void␊\n    ␊\n    export declare const enum Status {␊\n      Pristine = 'Pristine',␊\n      Loading = 'Loading',␊\n      Ready = 'Ready'␊\n    }␊\n    ␊\n    export declare const enum StatusInValidate {␊\n      Poll = 'Poll',␊\n      Ready = 'Ready',␊\n      Done = 'Done'␊\n    }␊\n    ␊\n    export interface StrictObject {␊\n      name: string␊\n    }␊\n    ␊\n    export declare const enum StringEnum {␊\n      VariantOne = 'variantone',␊\n      VariantTwo = 'varianttwo',␊\n      VariantThree = 'variantthree'␊\n    }␊\n    ␊\n    export type StructuredKind =␊\n      | { type2: 'Hello' }␊\n      | { type2: 'Greeting', name: string }␊\n      | { type2: 'Birthday', name: string, age: number }␊\n      | { type2: 'Tuple', field0: number, field1: number }␊\n    ␊\n    export declare function sumBtreeMapping(nums: Record<string, number>): number␊\n    ␊\n    export declare function sumIndexMapping(nums: Record<string, number>): number␊\n    ␊\n    export declare function sumMapping(nums: Record<string, number>): number␊\n    ␊\n    export declare function sumNums(nums: Array<number>): number␊\n    ␊\n    export declare function testSerdeBigNumberPrecision(number: string): any␊\n    ␊\n    export declare function testSerdeBufferBytes(obj: object): bigint␊\n    ␊\n    export declare function testSerdeRoundtrip(data: any): any␊\n    ␊\n    export declare function threadsafeFunctionClosureCapture(func: (arg: string) => void): void␊\n    ␊\n    export declare function threadsafeFunctionFatalMode(cb: ((arg: boolean) => unknown)): void␊\n    ␊\n    export declare function threadsafeFunctionFatalModeError(cb: ((arg: boolean) => string)): void␊\n    ␊\n    export declare function threadsafeFunctionThrowError(cb: ((err: Error | null, arg: boolean) => unknown)): void␊\n    ␊\n    export declare function throwAsyncError(): Promise<void>␊\n    ␊\n    export declare function throwError(): void␊\n    ␊\n    export declare function throwSyntaxError(error: string, code?: string | undefined | null): void␊\n    ␊\n    export declare function toJsObj(): object␊\n    ␊\n    export declare function tsfnAsyncCall(func: (arg0: number, arg1: number, arg2: number) => string): Promise<void>␊\n    ␊\n    export declare function tsfnCallWithCallback(tsfn: ((err: Error | null, ) => string)): void␊\n    ␊\n    export declare function tsfnInEither(pet: Pet): void␊\n    ␊\n    export declare function tsfnReturnPromise(func: ((err: Error | null, arg: number) => Promise<number>)): Promise<number>␊\n    ␊\n    export declare function tsfnReturnPromiseTimeout(func: ((err: Error | null, arg: number) => Promise<number>)): Promise<number>␊\n    ␊\n    export declare function tsfnThrowFromJs(tsfn: ((err: Error | null, arg: number) => Promise<number>)): Promise<number>␊\n    ␊\n    export declare function tsRename(a: { foo: number }): string[]␊\n    ␊\n    export interface TsTypeChanged {␊\n      typeOverride: object␊\n      typeOverrideOptional?: object␊\n    }␊\n    ␊\n    export interface TupleObject {␊\n      field0: number␊\n      field1: number␊\n    }␊\n    ␊\n    export declare function u16ArrayToArray(input: Uint16Array): Array<number>␊\n    ␊\n    export declare function u32ArrayToArray(input: Uint32Array): Array<number>␊\n    ␊\n    export declare function u64ArrayToArray(input: BigUint64Array): Array<bigint>␊\n    ␊\n    export declare function u8ArrayToArray(input: Uint8Array): Array<number>␊\n    ␊\n    export declare function uInit8ArrayFromString(): Promise<Uint8Array>␊\n    ␊\n    export interface UseNullableStruct {␊\n      requiredNumberField: number␊\n      requiredStringField: string␊\n      nullableNumberField: number | null␊\n      nullableStringField: string | null␊\n    }␊\n    ␊\n    export interface UtcDates {␊\n      start: Date␊\n      end?: Date␊\n    }␊\n    ␊\n    export declare function validateArray(arr: Array<number>): number␊\n    ␊\n    export declare function validateBigint(input: bigint): bigint␊\n    ␊\n    export declare function validateBoolean(i: boolean): boolean␊\n    ␊\n    export declare function validateBuffer(b: Buffer): number␊\n    ␊\n    export declare function validateBufferSlice(input: Buffer): number␊\n    ␊\n    export declare function validateDate(d: Date): number␊\n    ␊\n    export declare function validateDateTime(d: Date): number␊\n    ␊\n    export declare function validateEnum(input: KindInValidate): number␊\n    ␊\n    export declare function validateExternal(e: ExternalObject<number>): number␊\n    ␊\n    export declare function validateFunction(cb: () => number): number␊\n    ␊\n    export declare function validateHashMap(input: Record<string, number>): number␊\n    ␊\n    export declare function validateNull(i: null): boolean␊\n    ␊\n    export declare function validateNumber(i: number): number␊\n    ␊\n    export declare function validateOptional(input1?: string | undefined | null, input2?: boolean | undefined | null): boolean␊\n    ␊\n    export declare function validatePromise(p: Promise<number>): Promise<number>␊\n    ␊\n    export declare function validateString(s: string): string␊\n    ␊\n    export declare function validateStringEnum(input: StatusInValidate): string␊\n    ␊\n    export declare function validateStructuredEnum(kind: StructuredKind): StructuredKind␊\n    ␊\n    export declare function validateSymbol(s: symbol): boolean␊\n    ␊\n    export declare function validateTypedArray(input: Uint8Array): number␊\n    ␊\n    export declare function validateTypedArraySlice(input: Uint8Array): number␊\n    ␊\n    export declare function validateUint8ClampedSlice(input: Uint8ClampedArray): number␊\n    ␊\n    export declare function validateUndefined(i: undefined): boolean␊\n    ␊\n    export type VoidNullable<T = void> =␊\n      Nullable<T>␊\n    ␊\n    export declare function withAbortController(a: number, b: number, signal: AbortSignal): Promise<number>␊\n    ␊\n    export declare function withinAsyncRuntimeIfAvailable(): void␊\n    ␊\n    export declare function withoutAbortController(a: number, b: number): Promise<number>␊\n    ␊\n    export declare function xxh64Alias(input: Buffer): bigint␊\n    ␊\n    export declare namespace xxh2 {␊\n      export function xxh2Plus(a: number, b: number): number␊\n      export function xxh3Xxh64Alias(input: Buffer): bigint␊\n    }␊\n    ␊\n    export declare namespace xxh3 {␊\n      /** Xxh3 class */␊\n      export class Xxh3 {␊\n        constructor()␊\n        /** update */␊\n        update(input: Buffer): void␊\n        digest(): bigint␊\n      }␊\n      export const ALIGNMENT: number␊\n      /** xxh128 function */␊\n      export function xxh128(input: Buffer): bigint␊\n      export function xxh3_64(input: Buffer): bigint␊\n    }␊\n    `\n"
  },
  {
    "path": "examples/napi/__tests__/__snapshots__/values.spec.ts.md",
    "content": "# Snapshot report for `__tests__/values.spec.ts`\n\nThe actual snapshot is saved in `values.spec.ts.snap`.\n\nGenerated by [AVA](https://avajs.dev).\n\n## serde-json\n\n> Snapshot 1\n\n    [\n      '@napi-rs/cli',\n      '@napi-rs/triples',\n      '@napi-rs/wasm-runtime',\n      '@oxc-node/cli',\n      '@oxc-node/core',\n      '@testing-library/dom',\n      '@types/lodash',\n      '@vitest/browser',\n      '@vitest/browser-playwright',\n      '@vitest/ui',\n      'ava',\n      'buffer',\n      'core-js',\n      'cross-env',\n      'electron',\n      'lodash',\n      'playwright',\n      'rxjs',\n      'sinon',\n      'vite',\n      'vite-plugin-node-polyfills',\n      'vitest',\n      'web-streams-polyfill',\n      'webdriverio',\n    ]\n\n## should generate correct type def file\n\n> Snapshot 1\n\n    `/* auto-generated by NAPI-RS */␊\n    /* eslint-disable */␊\n    ␊\n    import type { ReadableStream } from 'node:stream/web'␊\n    ␊\n    type MaybePromise<T> = T | Promise<T>␊\n    ␊\n    export declare const NAPI_RS_SYMBOL: symbol␊\n    ␊\n    export declare class ExternalObject<T> {␊\n      readonly '': {␊\n        readonly '': unique symbol␊\n        [K: symbol]: T␊\n      }␊\n    }␊\n    ␊\n    export type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array␊\n    /**␊\n     * \\`constructor\\` option for \\`struct\\` requires all fields to be public,␊\n     * otherwise tag impl fn as constructor␊\n     * #[napi(constructor)]␊\n     */␊\n    export declare class Animal {␊\n      /** Kind of animal */␊\n      readonly kind: Kind␊\n      /** This is the constructor */␊\n      constructor(kind: Kind, name: string)␊\n      /** This is a factory method */␊\n      static withKind(kind: Kind): Animal␊\n      get name(): string␊\n      set name(name: string)␊\n      get type(): Kind␊\n      set type(kind: Kind)␊\n      get optionalValue(): number | null␊\n      /**␊\n       * This is to test that setter with optional parameter generates valid TypeScript.␊\n       * TypeScript does not allow optional parameters in setters (TS1051).␊\n       */␊\n      set optionalValue(value: number | undefined | null)␊\n      /**␊\n       * This is a␊\n       * multi-line comment␊\n       * with an emoji 🚀␊\n       */␊\n      whoami(): string␊\n      /** This is static... */␊\n      static getDogKind(): Kind␊\n      /**␊\n       * Here are some characters and character sequences␊\n       * that should be escaped correctly:␊\n       * \\\\[]{}/\\\\:\"\"{␊\n       * }␊\n       * Accept header \"*\\\\/json\" should not break the comment block␊\n       */␊\n      returnOtherClass(): Dog␊\n      returnOtherClassWithCustomConstructor(): Bird␊\n      overrideIndividualArgOnMethod(normalTy: string, overriddenTy: {n: string}): Bird␊\n    }␊\n    ␊\n    export declare class AnimalWithDefaultConstructor {␊\n      name: string␊\n      kind: number␊\n      constructor(name: string, kind: number)␊\n    }␊\n    ␊\n    export declare class AnotherClassForEither {␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class AnotherCssStyleSheet {␊\n      get rules(): CssRuleList␊\n    }␊\n    export type AnotherCSSStyleSheet = AnotherCssStyleSheet␊\n    ␊\n    export declare class Asset {␊\n      constructor()␊\n      get filePath(): number␊\n    }␊\n    export type JsAsset = Asset␊\n    ␊\n    export declare class Assets {␊\n      constructor()␊\n      get(id: number): JsAsset | null␊\n    }␊\n    export type JsAssets = Assets␊\n    ␊\n    /**␊\n     * This type implements JavaScript's async iterable protocol.␊\n     * It can be used with \\`for await...of\\` loops.␊\n     *␊\n     * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_async_iterator_and_async_iterable_protocols␊\n     */␊\n    export declare class AsyncDataSource {␊\n      [Symbol.asyncIterator](): AsyncGenerator<string, void, undefined>␊\n      /** Creates an async data source that yields each item with a simulated I/O delay */␊\n      static fromData(data: Array<string>, delayMs: number): AsyncDataSource␊\n    }␊\n    ␊\n    /**␊\n     * This type implements JavaScript's async iterable protocol.␊\n     * It can be used with \\`for await...of\\` loops.␊\n     *␊\n     * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_async_iterator_and_async_iterable_protocols␊\n     */␊\n    export declare class AsyncFib {␊\n      [Symbol.asyncIterator](): AsyncGenerator<number, void, number | undefined>␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class AsyncThrowClass {␊\n    ␊\n      constructor()␊\n      asyncThrowError(): Promise<void>␊\n    }␊\n    ␊\n    export declare class Bird {␊\n      name: string␊\n      constructor(name: string)␊\n      getCount(): number␊\n      getNameAsync(): Promise<string>␊\n      acceptSliceMethod(slice: Uint8Array): number␊\n    }␊\n    ␊\n    /** Smoking test for type generation */␊\n    export declare class Blake2BHasher {␊\n      static withKey(key: Blake2bKey): Blake2BHasher␊\n      update(data: Buffer): void␊\n    }␊\n    export type Blake2bHasher = Blake2BHasher␊\n    ␊\n    export declare class Blake2BKey {␊\n    ␊\n    }␊\n    export type Blake2bKey = Blake2BKey␊\n    ␊\n    export declare class CatchOnConstructor {␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class CatchOnConstructor2 {␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class ClassInArray {␊\n      constructor(value: number)␊\n    }␊\n    ␊\n    export declare class ClassReturnInPromise {␊\n    ␊\n    }␊\n    ␊\n    export declare class ClassWithFactory {␊\n      name: string␊\n      static withName(name: string): ClassWithFactory␊\n      static with4Name(name: string): Promise<ClassWithFactory>␊\n      static with4NameResult(name: string): Promise<ClassWithFactory>␊\n      setName(name: string): this␊\n    }␊\n    ␊\n    export declare class ClassWithLifetime {␊\n      constructor()␊\n      getName(): string␊\n    }␊\n    ␊\n    export declare class Context {␊\n      maybeNeed?: boolean␊\n      buffer: Uint8Array␊\n      constructor()␊\n      static withData(data: string): Context␊\n      static withBuffer(buf: Uint8Array): Context␊\n      method(): string␊\n    }␊\n    ␊\n    /**␊\n     * This type implements JavaScript's async iterable protocol.␊\n     * It can be used with \\`for await...of\\` loops.␊\n     *␊\n     * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_async_iterator_and_async_iterable_protocols␊\n     */␊\n    export declare class CounterRepro {␊\n      constructor(max: number)␊\n      [Symbol.asyncIterator](): AsyncGenerator<number, void, undefined>␊\n    }␊\n    ␊\n    export declare class CreateStringClass {␊\n      static new(): CreateStringClass␊\n      createString(): string | null␊\n      createStringResult(): string␊\n    }␊\n    ␊\n    export declare class CssRuleList {␊\n      getRules(): Array<string>␊\n      get parentStyleSheet(): CSSStyleSheet␊\n      get name(): string | null␊\n    }␊\n    export type CSSRuleList = CssRuleList␊\n    ␊\n    export declare class CssStyleSheet {␊\n      constructor(name: string, rules: Array<string>)␊\n      get rules(): CssRuleList␊\n      anotherCssStyleSheet(): AnotherCssStyleSheet␊\n    }␊\n    export type CSSStyleSheet = CssStyleSheet␊\n    ␊\n    export declare class CustomFinalize {␊\n      constructor(width: number, height: number)␊\n    }␊\n    ␊\n    export declare class CustomStruct {␊\n      static customStatusCodeForFactory(): CustomStruct␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class DefaultUseNullableClass {␊\n      requiredNumberField: number␊\n      requiredStringField: string␊\n      optionalNumberField?: number␊\n      optionalStringField?: string␊\n      constructor(requiredNumberField: number, requiredStringField: string, optionalNumberField?: number, optionalStringField?: string)␊\n    }␊\n    ␊\n    /**␊\n     * This type implements JavaScript's async iterable protocol.␊\n     * It can be used with \\`for await...of\\` loops.␊\n     *␊\n     * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_async_iterator_and_async_iterable_protocols␊\n     */␊\n    export declare class DelayedCounter {␊\n      [Symbol.asyncIterator](): AsyncGenerator<number, string, undefined>␊\n      /** Creates a counter that yields values from 0 to max-1 with a delay between each */␊\n      constructor(max: number, delayMs: number)␊\n    }␊\n    ␊\n    export declare class Dog {␊\n      name: string␊\n      constructor(name: string)␊\n    }␊\n    ␊\n    /**␊\n     * This type extends JavaScript's \\`Iterator\\`, and so has the iterator helper␊\n     * methods. It may extend the upcoming TypeScript \\`Iterator\\` class in the future.␊\n     *␊\n     * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Iterator#iterator_helper_methods␊\n     * @see https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-6.html#iterator-helper-methods␊\n     */␊\n    export declare class Fib extends Iterator<number, void, number> {␊\n      constructor()␊\n      next(value?: number): IteratorResult<number, void>␊\n    }␊\n    ␊\n    /**␊\n     * This type extends JavaScript's \\`Iterator\\`, and so has the iterator helper␊\n     * methods. It may extend the upcoming TypeScript \\`Iterator\\` class in the future.␊\n     *␊\n     * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Iterator#iterator_helper_methods␊\n     * @see https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-6.html#iterator-helper-methods␊\n     */␊\n    export declare class Fib2 extends Iterator<number, void, number> {␊\n      static create(seed: number): Fib2␊\n      next(value?: number): IteratorResult<number, void>␊\n    }␊\n    ␊\n    /**␊\n     * This type extends JavaScript's \\`Iterator\\`, and so has the iterator helper␊\n     * methods. It may extend the upcoming TypeScript \\`Iterator\\` class in the future.␊\n     *␊\n     * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Iterator#iterator_helper_methods␊\n     * @see https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-6.html#iterator-helper-methods␊\n     */␊\n    export declare class Fib3 extends Iterator<number, void, number> {␊\n      current: number␊\n      nextNum: number␊\n      constructor(current: number, nextNum: number)␊\n      next(value?: number): IteratorResult<number, void>␊\n    }␊\n    ␊\n    /**␊\n     * This type extends JavaScript's \\`Iterator\\`, and so has the iterator helper␊\n     * methods. It may extend the upcoming TypeScript \\`Iterator\\` class in the future.␊\n     *␊\n     * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Iterator#iterator_helper_methods␊\n     * @see https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-6.html#iterator-helper-methods␊\n     */␊\n    export declare class Fib4 extends Iterator<unknown, void, number> {␊\n      current: number␊\n      nextItem: number␊\n      constructor(current: number, nextItem: number)␊\n      next(value?: number): IteratorResult<unknown, void>␊\n    }␊\n    ␊\n    export declare class GetterSetterWithClosures {␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class JsClassForEither {␊\n      constructor()␊\n    }␊\n    ␊\n    export declare class JSOnlyMethodsClass {␊\n      data: string␊\n      processData(): string␊\n      getLength(): number␊\n    }␊\n    export type RustOnlyMethodsClass = JSOnlyMethodsClass␊\n    ␊\n    export declare class JsRemote {␊\n      constructor(repo: JsRepo)␊\n      name(): string␊\n    }␊\n    ␊\n    export declare class JsRepo {␊\n      constructor(dir: string)␊\n      remote(): JsRemote␊\n    }␊\n    ␊\n    export declare class MyJsNamedClass {␊\n      constructor(value: string)␊\n      getValue(): string␊\n      multiplyValue(times: number): string␊\n    }␊\n    export type OriginalRustNameForJsNamedStruct = MyJsNamedClass␊\n    ␊\n    export declare class NinjaTurtle {␊\n      name: string␊\n      static isInstanceOf(value: unknown): boolean␊\n      /** Create your ninja turtle! 🐢 */␊\n      static newRaph(): NinjaTurtle␊\n      getMaskColor(): string␊\n      getName(): string␊\n      returnThis(): this␊\n    }␊\n    ␊\n    export declare class NotUseNullableClass {␊\n      requiredNumberField: number␊\n      requiredStringField: string␊\n      optionalNumberField?: number␊\n      optionalStringField?: string␊\n      constructor(requiredNumberField: number, requiredStringField: string, optionalNumberField?: number, optionalStringField?: string)␊\n    }␊\n    ␊\n    export declare class NotWritableClass {␊\n      name: string␊\n      constructor(name: string)␊\n      setName(name: string): void␊\n    }␊\n    ␊\n    export declare class Optional {␊\n      static optionEnd(required: string, optional?: string | undefined | null): string␊\n      static optionStart(optional: string | undefined | null, required: string): string␊\n      static optionStartEnd(optional1: string | undefined | null, required: string, optional2?: string | undefined | null): string␊\n      static optionOnly(optional?: string | undefined | null): string␊\n    }␊\n    ␊\n    export declare class PackageJsonReader {␊\n      constructor()␊\n      read(): any␊\n    }␊\n    ␊\n    export declare class Reader {␊\n    ␊\n      constructor()␊\n      read(): Buffer␊\n    }␊\n    ␊\n    export declare class Selector {␊\n      orderBy: Array<string>␊\n      select: Array<string>␊\n      struct: string␊\n      where?: string␊\n      constructor(orderBy: Array<string>, select: Array<string>, struct: string, where?: string)␊\n    }␊\n    ␊\n    export declare class Thing {␊\n    ␊\n    }␊\n    ␊\n    export declare class ThingList {␊\n      constructor()␊\n      get thing(): Thing␊\n    }␊\n    ␊\n    export declare class UseNullableClass {␊\n      requiredNumberField: number␊\n      requiredStringField: string␊\n      nullableNumberField: number | null␊\n      nullableStringField: string | null␊\n      constructor(requiredNumberField: number, requiredStringField: string, nullableNumberField: number | null, nullableStringField: string | null)␊\n    }␊\n    ␊\n    export declare class Width {␊\n      value: number␊\n      constructor(value: number)␊\n    }␊\n    ␊\n    export interface A {␊\n      foo: number␊\n    }␊\n    ␊\n    export declare function acceptArraybuffer(fixture: ArrayBuffer): bigint␊\n    ␊\n    export declare function acceptSlice(fixture: Uint8Array): bigint␊\n    ␊\n    export declare function acceptStream(stream: ReadableStream<Uint8Array>): Promise<Buffer>␊\n    ␊\n    export declare function acceptThreadsafeFunction(func: ((err: Error | null, arg: number) => any)): void␊\n    ␊\n    export declare function acceptThreadsafeFunctionFatal(func: ((arg: number) => void)): void␊\n    ␊\n    export declare function acceptThreadsafeFunctionTupleArgs(func: ((err: Error | null, arg0: number, arg1: boolean, arg2: string) => any)): void␊\n    ␊\n    export declare function acceptUint8ClampedSlice(input: Uint8ClampedArray): bigint␊\n    ␊\n    export declare function acceptUint8ClampedSliceAndBufferSlice(a: Buffer, b: Uint8ClampedArray): bigint␊\n    ␊\n    export declare function acceptUntypedTypedArray(input: TypedArray): bigint␊\n    ␊\n    export declare function add(a: number, b: number): number␊\n    ␊\n    export declare const enum ALIAS {␊\n      A = 0,␊\n      B = 1␊\n    }␊\n    ␊\n    export interface AliasedStruct {␊\n      a: ALIAS␊\n      b: number␊\n    }␊\n    ␊\n    export interface AllOptionalObject {␊\n      name?: string␊\n      age?: number␊\n    }␊\n    ␊\n    export declare function appendBuffer(buf: Buffer): Buffer␊\n    ␊\n    export declare function apply0(ctx: Animal, callback: () => void): void␊\n    ␊\n    export declare function apply1(ctx: Animal, callback: (arg: string) => void, name: string): void␊\n    ␊\n    export declare function arrayBufferFromData(): ArrayBuffer␊\n    ␊\n    export declare function arrayBufferFromExternal(): ArrayBuffer␊\n    ␊\n    export declare function arrayBufferPassThrough(buf: Uint8Array): Promise<Uint8Array>␊\n    ␊\n    export declare function arrayParams(arr: Array<number>): number␊\n    ␊\n    export declare function asyncBufferToArray(buf: ArrayBuffer): Array<number>␊\n    ␊\n    export declare function asyncMultiTwo(arg: number): Promise<number>␊\n    ␊\n    export declare function asyncPlus100(p: Promise<number>): Promise<number>␊\n    ␊\n    export declare function asyncReduceBuffer(buf: Buffer): Promise<number>␊\n    ␊\n    export declare function asyncResolveArray(inner: number): Promise<unknown[]>␊\n    ␊\n    export declare function asyncTaskArraybuffer(data: Array<number>): Promise<ArrayBuffer>␊\n    ␊\n    export declare function asyncTaskFinally(inner: object): Promise<void>␊\n    ␊\n    export declare function asyncTaskOptionalReturn(): Promise<number | null>␊\n    ␊\n    export declare function asyncTaskReadFile(path: string): Promise<Buffer>␊\n    ␊\n    export declare function asyncTaskVoidReturn(): Promise<void>␊\n    ␊\n    export interface B {␊\n      bar: number␊\n    }␊\n    ␊\n    export declare function bigintAdd(a: bigint, b: bigint): bigint␊\n    ␊\n    export declare function bigintFromI128(): bigint␊\n    ␊\n    export declare function bigintFromI64(): bigint␊\n    ␊\n    export declare function bigintGetU64AsString(bi: bigint): string␊\n    ␊\n    export interface BindingVitePluginMeta {␊\n      'vite:import-glob': ViteImportGlobMeta␊\n    }␊\n    ␊\n    export declare function btreeSetToJs(): Set<string>␊\n    ␊\n    export declare function btreeSetToRust(set: Set<string>): void␊\n    ␊\n    export declare function bufferPassThrough(buf: Buffer): Promise<Buffer>␊\n    ␊\n    export declare function bufferWithAsyncBlock(buf: Buffer): Promise<number>␊\n    ␊\n    export declare function buildThreadsafeFunctionFromFunction(callback: (arg0: number, arg1: number) => number): void␊\n    ␊\n    export declare function buildThreadsafeFunctionFromFunctionCalleeHandle(callback: () => void): void␊\n    ␊\n    export interface C {␊\n      baz: number␊\n    }␊\n    ␊\n    export declare function call0(callback: () => number): number␊\n    ␊\n    export declare function call1(callback: (arg: number) => number, arg: number): number␊\n    ␊\n    export declare function call2(callback: (arg0: number, arg1: number) => number, arg1: number, arg2: number): number␊\n    ␊\n    export declare function callAsyncWithUnknownReturnValue(tsfn: ((err: Error | null, arg: number) => unknown)): Promise<number>␊\n    ␊\n    export declare function callbackInSpawn(callback: (arg: object) => unknown): void␊\n    ␊\n    export declare function callbackReturnPromise<T>(functionInput: () => T | Promise<T>, callback: (err: Error | null, result: T) => void): T | Promise<T>␊\n    ␊\n    export declare function callbackReturnPromiseAndSpawn(jsFunc: (arg0: string) => Promise<string>): Promise<string>␊\n    ␊\n    export declare function callCatchOnPromise(input: Promise<number>): Promise<string>␊\n    ␊\n    export declare function callFinallyOnPromise(input: Promise<number>, onFinally: () => void): Promise<number>␊\n    ␊\n    export declare function callFunction(cb: () => number): number␊\n    ␊\n    export declare function callFunctionWithArg(cb: (arg0: number, arg1: number) => number, arg0: number, arg1: number): number␊\n    ␊\n    export declare function callFunctionWithArgAndCtx(ctx: Animal, cb: (arg: string) => void, name: string): void␊\n    ␊\n    export declare function callLongThreadsafeFunction(tsfn: ((err: Error | null, arg: number) => unknown)): void␊\n    ␊\n    export declare function callRuleHandler(rule: Rule, arg: number): number␊\n    ␊\n    export declare function callThenOnPromise(input: Promise<number>): Promise<string>␊\n    ␊\n    export declare function callThreadsafeFunction(tsfn: ((err: Error | null, arg: number) => unknown)): void␊\n    ␊\n    export declare function captureErrorInCallback(cb1: () => void, cb2: (arg0: Error) => void): void␊\n    ␊\n    export declare function chronoDateAdd1Minute(input: Date): Date␊\n    ␊\n    export declare function chronoDateFixtureReturn1(): Date␊\n    ␊\n    export declare function chronoDateFixtureReturn2(): Date␊\n    ␊\n    export declare function chronoDateWithTimezoneReturn(): Date | null␊\n    ␊\n    export declare function chronoDateWithTimezoneToMillis(input: Date): number␊\n    ␊\n    export declare function chronoLocalDateReturn(): Date | null␊\n    ␊\n    export declare function chronoLocalDateToMillis(input: Date): number␊\n    ␊\n    export declare function chronoNativeDateTime(date: Date): number␊\n    ␊\n    export declare function chronoNativeDateTimeReturn(): Date | null␊\n    ␊\n    export declare function chronoUtcDateReturn(): Date | null␊\n    ␊\n    export declare function chronoUtcDateToMillis(input: Date): number␊\n    ␊\n    export interface CompilerAssumptions {␊\n      ignoreFunctionLength?: boolean␊\n      noDocumentAll?: boolean␊\n      objectRestNoSymbols?: boolean␊\n      pureGetters?: boolean␊\n      /**␊\n       * When using public class fields, assume that they don't shadow any getter in the current class,␊\n       * in its subclasses or in its superclass. Thus, it's safe to assign them rather than using␊\n       * \\`Object.defineProperty\\`.␊\n       *␊\n       * For example:␊\n       *␊\n       * Input:␊\n       * \\`\\`\\`js␊\n       * class Test {␊\n       *   field = 2;␊\n       *␊\n       *   static staticField = 3;␊\n       * }␊\n       * \\`\\`\\`␊\n       *␊\n       * When \\`set_public_class_fields\\` is \\`true\\`, the output will be:␊\n       * \\`\\`\\`js␊\n       * class Test {␊\n       *   constructor() {␊\n       *     this.field = 2;␊\n       *   }␊\n       * }␊\n       * Test.staticField = 3;␊\n       * \\`\\`\\`␊\n       *␊\n       * Otherwise, the output will be:␊\n       * \\`\\`\\`js␊\n       * import _defineProperty from \"@oxc-project/runtime/helpers/defineProperty\";␊\n       * class Test {␊\n       *   constructor() {␊\n       *     _defineProperty(this, \"field\", 2);␊\n       *   }␊\n       * }␊\n       * _defineProperty(Test, \"staticField\", 3);␊\n       * \\`\\`\\`␊\n       *␊\n       * NOTE: For TypeScript, if you wanted behavior is equivalent to \\`useDefineForClassFields: false\\`, you should␊\n       * set both \\`set_public_class_fields\\` and [\\`crate::TypeScriptOptions::remove_class_fields_without_initializer\\`]␊\n       * to \\`true\\`.␊\n       */␊\n      setPublicClassFields?: boolean␊\n    }␊\n    ␊\n    export declare function compressSync(_: string | Uint8Array): Buffer␊\n    ␊\n    export declare function concatLatin1(s: string): string␊\n    ␊\n    export declare function concatStr(s: string): string␊\n    ␊\n    export declare function concatUtf16(s: string): string␊\n    ␊\n    export declare function contains(source: string, target: string): boolean␊\n    ␊\n    export declare function convertU32Array(input: Uint32Array): Array<number>␊\n    ␊\n    export declare function createArraybuffer(): ArrayBuffer␊\n    ␊\n    export declare function createBigInt(): bigint␊\n    ␊\n    export declare function createBigIntI64(): bigint␊\n    ␊\n    export declare function createBufferSliceFromCopiedData(): Buffer␊\n    ␊\n    export declare function createExternal(size: number): ExternalObject<number>␊\n    ␊\n    export declare function createExternalBufferSlice(): Buffer␊\n    ␊\n    export declare function createExternalLatin1CustomFinalize(): string␊\n    ␊\n    export declare function createExternalLatin1Empty(): string␊\n    ␊\n    export declare function createExternalLatin1Long(): string␊\n    ␊\n    export declare function createExternalLatin1Short(): string␊\n    ␊\n    export declare function createExternalLatin1String(): string␊\n    ␊\n    export declare function createExternalLatin1WithLatin1Chars(): string␊\n    ␊\n    export declare function createExternalRef(size: number): ExternalObject<number>␊\n    ␊\n    export declare function createExternalString(content: string): ExternalObject<string>␊\n    ␊\n    export declare function createExternalTypedArray(): Uint32Array␊\n    ␊\n    export declare function createExternalUtf16String(): string␊\n    ␊\n    export declare function createFunction(): (arg: number) => number␊\n    ␊\n    export declare function createI32ArrayFromExternal(): Int32Array␊\n    ␊\n    export declare function createObj(): object␊\n    ␊\n    export declare function createObjectRef(): object␊\n    ␊\n    export declare function createObjectWithClassField(): ObjectFieldClassInstance␊\n    ␊\n    export declare function createObjWithProperty(): { value: ArrayBuffer, get getter(): number }␊\n    ␊\n    export declare function createOptionalExternal(size?: number | undefined | null): ExternalObject<number> | null␊\n    ␊\n    export declare function createReadableStream(): ReadableStream<Buffer>␊\n    ␊\n    export declare function createReadableStreamFromClass(readableStreamClass: typeof ReadableStream): ReadableStream<Buffer>␊\n    ␊\n    /**␊\n     * Creates a ReadableStream that emits StreamItem objects.␊\n     * This demonstrates streaming custom Rust structs to JavaScript.␊\n     */␊\n    export declare function createReadableStreamWithObject(): ReadableStream<StreamItem>␊\n    ␊\n    export declare function createReferenceOnFunction(cb: () => void): Promise<void>␊\n    ␊\n    export declare function createRejectedPromise(message: string): Promise<number>␊\n    ␊\n    export declare function createResolvedPromise(value: number): Promise<number>␊\n    ␊\n    export declare function createStaticLatin1String(): string␊\n    ␊\n    export declare function createStaticUtf16String(): string␊\n    ␊\n    export declare function createSymbol(): symbol␊\n    ␊\n    export declare function createSymbolFor(desc: string): symbol␊\n    ␊\n    export declare function createSymbolRef(desc: string): symbol␊\n    ␊\n    export declare function createUint8ClampedArrayFromData(): Uint8ClampedArray␊\n    ␊\n    export declare function createUint8ClampedArrayFromExternal(): Uint8ClampedArray␊\n    ␊\n    export declare function createZeroCopyLatin1String(): string␊\n    ␊\n    export declare function createZeroCopyUtf16String(): string␊\n    ␊\n    /** You could break the step and for an new continuous value. */␊\n    export declare const enum CustomNumEnum {␊\n      One = 1,␊\n      Two = 2,␊\n      Three = 3,␊\n      Four = 4,␊\n      Six = 6,␊\n      Eight = 8,␊\n      Nine = 9,␊\n      Ten = 10␊\n    }␊\n    ␊\n    export declare function customStatusCode(): void␊\n    ␊\n    export declare const enum CustomStringEnum {␊\n      Foo = 'my-custom-value',␊\n      Bar = 'Bar',␊\n      Baz = 'Baz'␊\n    }␊\n    ␊\n    export type CustomU32 =␊\n      number␊\n    ␊\n    export interface Data {␊\n      data: string | Buffer␊\n    }␊\n    ␊\n    export interface DatesWithTimeZone {␊\n      start: Date␊\n      end?: Date␊\n    }␊\n    ␊\n    export declare function dateToNumber(input: Date): number␊\n    ␊\n    /** This is a const */␊\n    export const DEFAULT_COST: number␊\n    ␊\n    export interface DefaultUseNullableStruct {␊\n      requiredNumberField: number␊\n      requiredStringField: string␊\n      optionalNumberField?: number␊\n      optionalStringField?: string␊\n    }␊\n    ␊\n    export declare function defineClass(): typeof DynamicRustClass␊\n    ␊\n    class DynamicRustClass {␊\n      constructor(value: number)␊\n      rustMethod(): number␊\n    }␊\n    ␊\n    export declare function derefUint8Array(a: Uint8Array, b: Uint8ClampedArray): number␊\n    ␊\n    export declare function either3(input: string | number | boolean): number␊\n    ␊\n    export declare function either4(input: string | number | boolean | Obj): number␊\n    ␊\n    export declare function eitherBoolOrFunction(input: boolean | ((arg?: unknown) => unknown)): void␊\n    ␊\n    export declare function eitherBoolOrTuple(input: boolean | [boolean, string]): void␊\n    ␊\n    export declare function eitherF64OrU32(input: number): number␊\n    ␊\n    export declare function eitherFromObjects(input: A | B | C): string␊\n    ␊\n    export declare function eitherFromOption(): JsClassForEither | undefined␊\n    ␊\n    export declare function eitherPromiseInEitherA(input: Promise<number> | number | string): Promise<boolean>␊\n    ␊\n    export declare function eitherStringOrNumber(input: string | number): number␊\n    ␊\n    export declare const enum Empty {␊\n    ␊\n    }␊\n    ␊\n    export declare function enumToI32(e: CustomNumEnum): number␊\n    ␊\n    export declare function errorMessageContainsNullByte(msg: string): void␊\n    ␊\n    export declare function esmResolve(next: () => Promise<undefined>): Promise<undefined>␊\n    ␊\n    export declare function extendsJavascriptError(errorClass: any): void␊\n    ␊\n    export type ExternalLinterLoadPluginCb =␊\n      ((arg: string) => PluginLoadResult)␊\n    ␊\n    export type ExternalLinterLoadPluginCb2 =␊\n      ((arg: string) => PluginLoadResult)␊\n    ␊\n    export declare function f32ArrayToArray(input: Float32Array): Array<number>␊\n    ␊\n    export declare function f64ArrayToArray(input: Float64Array): Array<number>␊\n    ␊\n    export declare function fetch(url: string, requestInit?: RequestInit | undefined | null): Promise<import('undici-types').Response>␊\n    ␊\n    export declare function fibonacci(n: number): number␊\n    ␊\n    export declare function fnReceivedAliased(s: AliasedStruct, e: ALIAS): void␊\n    ␊\n    export interface FunctionData {␊\n      handle: () => number␊\n    }␊\n    ␊\n    export declare function generateFunctionAndCallIt(): FunctionData␊\n    ␊\n    export declare function getBigintJsonValue(value: bigint): void␊\n    ␊\n    export declare function getBtreeMapping(): Record<string, number>␊\n    ␊\n    export declare function getBuffer(): Buffer␊\n    ␊\n    export declare function getBufferSlice(): Buffer␊\n    ␊\n    export declare function getClassFromArray(arr: unknown[]): number | null␊\n    ␊\n    export declare function getCwd(callback: (arg0: string) => void): void␊\n    ␊\n    export declare function getEmptyBuffer(): Buffer␊\n    ␊\n    export declare function getEmptyTypedArray(): Uint8Array␊\n    ␊\n    export declare function getExternal(external: ExternalObject<number>): number␊\n    ␊\n    export declare function getGlobal(): typeof global␊\n    ␊\n    export declare function getIndexMapping(): Record<string, number>␊\n    ␊\n    export declare function getIndexMappingWithHasher(): Record<string, number>␊\n    ␊\n    export declare function getMapping(): Record<string, number>␊\n    ␊\n    export declare function getMappingWithHasher(): Record<string, number>␊\n    ␊\n    export declare function getModuleFileName(): string␊\n    ␊\n    export declare function getMyVec(): MyVec␊\n    ␊\n    export declare function getNestedNumArr(): number[][][]␊\n    ␊\n    export declare function getNull(): null␊\n    ␊\n    export declare function getNullByteProperty(obj: object): string | null␊\n    ␊\n    export declare function getNumArr(): number[]␊\n    ␊\n    /** Gets some numbers */␊\n    export declare function getNums(): Array<number>␊\n    ␊\n    export declare function getOptionalExternal(external?: ExternalObject<number> | undefined | null): number | null␊\n    ␊\n    export declare function getPackageJsonName(packageJson: PackageJson): string␊\n    ␊\n    export declare function getStrFromObject(): void␊\n    ␊\n    export declare function getterFromObj(): number␊\n    ␊\n    export declare function getTuple(val: [number, string, number]): number␊\n    ␊\n    export declare function getUndefined(): void␊\n    ␊\n    export declare function getWords(): Array<string>␊\n    ␊\n    export declare function i16ArrayToArray(input: Int16Array): Array<number>␊\n    ␊\n    export declare function i32ArrayToArray(input: Int32Array): Array<number>␊\n    ␊\n    export declare function i64ArrayToArray(input: BigInt64Array): Array<number>␊\n    ␊\n    export declare function i8ArrayToArray(input: Int8Array): Array<number>␊\n    ␊\n    export declare function indexmapPassthrough(fixture: Record<string, number>): Record<string, number>␊\n    ␊\n    export declare function indexSetToJs(): Set<string>␊\n    ␊\n    export declare function indexSetToRust(set: Set<string>): void␊\n    ␊\n    export declare function intoUtf8(s: string): string␊\n    ␊\n    export declare function jsErrorCallback(value: unknown): Array<Error>␊\n    ␊\n    /** default enum values are continuos i32s start from 0 */␊\n    export declare const enum Kind {␊\n      /** Barks */␊\n      Dog = 0,␊\n      /** Kills birds */␊\n      Cat = 1,␊\n      /** Tasty */␊\n      Duck = 2␊\n    }␊\n    ␊\n    /** default enum values are continuos i32s start from 0 */␊\n    export declare const enum KindInValidate {␊\n      /** Barks */␊\n      Dog = 0,␊\n      /** Kills birds */␊\n      Cat = 1,␊\n      /** Tasty */␊\n      Duck = 2␊\n    }␊\n    ␊\n    export interface Latin1MethodsResult {␊\n      length: number␊\n      isEmpty: boolean␊\n      asSlice: Array<number>␊\n    }␊\n    ␊\n    export declare function listObjKeys(obj: object): Array<string>␊\n    ␊\n    export interface LocalDates {␊\n      start: Date␊\n      end?: Date␊\n    }␊\n    ␊\n    export declare function mapOption(val?: number | undefined | null): number | null␊\n    ␊\n    export declare function mergeTupleArray(t1: TupleToArray, t2: TupleToArray): TupleToArray␊\n    ␊\n    export interface Meta {␊\n      merge: boolean␊\n    }␊\n    ␊\n    export declare function mutateArraybuffer(buf: ArrayBuffer): void␊\n    ␊\n    export declare function mutateExternal(external: ExternalObject<number>, newVal: number): void␊\n    ␊\n    export declare function mutateOptionalExternal(external: ExternalObject<number> | undefined | null, newVal: number): void␊\n    ␊\n    export declare function mutateTypedArray(input: Float32Array): void␊\n    ␊\n    export type MyPromise =␊\n      string | Promise<string>␊\n    ␊\n    export type MyVec =␊\n      Array<number | string>␊\n    ␊\n    /** Nested metadata for demonstrating object streaming with complex types */␊\n    export interface NestedMetadata {␊\n      hello: string␊\n    }␊\n    ␊\n    export interface NotUseNullableStruct {␊\n      requiredNumberField: number␊\n      requiredStringField: string␊\n      optionalNumberField?: number␊\n      optionalStringField?: string␊\n    }␊\n    ␊\n    export type Nullable<T> =␊\n      T | undefined | null␊\n    ␊\n    export interface Obj {␊\n      v: string | number␊\n    }␊\n    ␊\n    export interface ObjectFieldClassInstance {␊\n      bird: Bird␊\n    }␊\n    ␊\n    export declare function objectGetNamedPropertyShouldPerformTypecheck(obj: { foo: number; bar: string; }): void␊\n    ␊\n    export interface ObjectOnlyFromJs {␊\n      count: number␊\n      callback: ((err: Error | null, arg: number) => any)␊\n    }␊\n    ␊\n    export interface ObjectOnlyToJs {␊\n      name: number␊\n      dependencies: any␊\n    }␊\n    ␊\n    export declare function objectWithCApis(): object␊\n    ␊\n    export declare function optionalCallbackTypes(callback?: ((arg: string) => unknown) | undefined | null): void␊\n    ␊\n    export declare function optionEnd(callback: (arg0: string, arg1?: string | undefined | null) => void): void␊\n    ␊\n    export declare function optionOnly(callback: (arg0?: string | undefined | null) => void): void␊\n    ␊\n    export declare function optionStart(callback: (arg0: string | undefined | null, arg1: string) => void): void␊\n    ␊\n    export declare function optionStartEnd(callback: (arg0: string | undefined | null, arg1: string, arg2?: string | undefined | null) => void): void␊\n    ␊\n    export declare function overrideIndividualArgOnFunction(notOverridden: string, f: () => string, notOverridden2: number): string␊\n    ␊\n    export declare function overrideIndividualArgOnFunctionWithCbArg(callback: (town: string, name?: string | undefined | null) => string, notOverridden: number): object␊\n    ␊\n    export declare function overrideWholeFunctionType(operation: 'add' | 'subtract' | 'multiply', a: number, b: number): number␊\n    ␊\n    /** This is an interface for package.json */␊\n    export interface PackageJson {␊\n      name: string␊\n      /** The version of the package */␊\n      version: string␊\n      dependencies?: Record<string, any>␊\n      devDependencies?: Record<string, any>␊\n    }␊\n    ␊\n    export declare function panic(): void␊\n    ␊\n    export declare function panicInAsync(): Promise<void>␊\n    ␊\n    export declare function passSetToJs(): Set<string>␊\n    ␊\n    export declare function passSetToRust(set: Set<string>): void␊\n    ␊\n    export declare function passSetWithHasherToJs(): Set<string>␊\n    ␊\n    export interface Pet {␊\n      name: string␊\n      kind: number␊\n      eitherTsfn: string | ((err: Error | null, arg: number) => number)␊\n    }␊\n    ␊\n    export interface PluginLoadResult {␊\n      name: string␊\n      version: string␊\n    }␊\n    ␊\n    export declare function plusOne(this: Width): number␊\n    ␊\n    export declare function promiseInEither(input: number | Promise<number>): Promise<boolean>␊\n    ␊\n    export declare function promiseRawReturnClassInstance(): Promise<ClassReturnInPromise>␊\n    ␊\n    export interface PropertyNameDigitTest {␊\n      /** Property names starting with digits should be quoted */␊\n      '0invalid': string␊\n      '123': string␊\n    }␊\n    ␊\n    export interface PropertyNameSpecialCharsTest {␊\n      /** Special characters should be quoted */␊\n      'kebab-case': string␊\n      'with space': string␊\n      'dot.notation': string␊\n      'xml:lang': string␊\n      /** Dollar sign should be quoted for backward compatibility */␊\n      '$var': string␊\n    }␊\n    ␊\n    export interface PropertyNameUnicodeTest {␊\n      /** Unicode characters should NOT be quoted */␊\n      café: string␊\n      日本語: string␊\n      Ελληνικά: string␊\n    }␊\n    ␊\n    export interface PropertyNameValidTest {␊\n      /** Valid identifiers should NOT be quoted */␊\n      camelCase: string␊\n      pascalCase: string␊\n      private: string␊\n      with123Numbers: string␊\n    }␊\n    ␊\n    /** napi = { version = 2, features = [\"serde-json\"] } */␊\n    export declare function readFile(callback: (arg0: Error | undefined, arg1?: string | undefined | null) => void): void␊\n    ␊\n    export declare function readFileAsync(path: string): Promise<Buffer>␊\n    ␊\n    export declare function readPackageJson(): PackageJson␊\n    ␊\n    export declare function receiveAllOptionalObject(obj?: AllOptionalObject | undefined | null): void␊\n    ␊\n    export declare function receiveBindingVitePluginMeta(meta: BindingVitePluginMeta): void␊\n    ␊\n    export declare function receiveBufferSliceWithLifetime(data: Data): number␊\n    ␊\n    export declare function receiveClassOrNumber(either: number | JsClassForEither): number␊\n    ␊\n    export declare function receiveDifferentClass(either: JsClassForEither | AnotherClassForEither): number␊\n    ␊\n    export declare function receiveMutClassOrNumber(either: number | JsClassForEither): number␊\n    ␊\n    export declare function receiveObjectOnlyFromJs(obj: { count: number, callback: (err: Error | null, count: number) => void }): void␊\n    ␊\n    export declare function receiveObjectWithClassField(object: ObjectFieldClassInstance): Bird␊\n    ␊\n    export declare function receiveStrictObject(strictObject: StrictObject): void␊\n    ␊\n    export declare function receiveString(s: string): string␊\n    ␊\n    export declare function referenceAsCallback(callback: (arg0: number, arg1: number) => number, arg0: number, arg1: number): number␊\n    ␊\n    export interface RequestInit {␊\n      method?: string␊\n      headers?: Record<string, string>␊\n    }␊\n    ␊\n    export declare function returnCString(): string␊\n    ␊\n    export declare function returnEither(input: number): string | number␊\n    ␊\n    export declare function returnEitherClass(input: number): number | JsClassForEither␊\n    ␊\n    export declare function returnFromSharedCrate(): Shared␊\n    ␊\n    export declare function returnNull(): null␊\n    ␊\n    export declare function returnObjectOnlyToJs(): ObjectOnlyToJs␊\n    ␊\n    export declare function returnUndefined(): void␊\n    ␊\n    export declare function returnUndefinedIfInvalid(input: boolean): boolean␊\n    ␊\n    export declare function returnUndefinedIfInvalidPromise(input: Promise<boolean>): Promise<boolean>␊\n    ␊\n    export declare function roundtripStr(s: string): string␊\n    ␊\n    export interface Rule {␊\n      name: string␊\n      handler: RuleHandler<number, number>␊\n    }␊\n    ␊\n    export type RuleHandler<Args, Ret> =␊\n      (arg: Args) => Ret␊\n    ␊\n    export declare function runScript(script: string): unknown␊\n    ␊\n    export declare function setNullByteProperty(obj: object): void␊\n    ␊\n    export declare function setSymbolInObj(symbol: symbol): object␊\n    ␊\n    export declare function shorterEscapableScope(createString: () => string | null): string␊\n    ␊\n    export declare function shorterScope(arr: unknown[]): Array<number>␊\n    ␊\n    export declare function shutdownRuntime(): void␊\n    ␊\n    export declare function spawnFutureLifetime(input: number): Promise<string>␊\n    ␊\n    export declare function spawnThreadInThread(tsfn: ((err: Error | null, arg: number) => number)): void␊\n    ␊\n    export declare const enum Status {␊\n      Pristine = 'Pristine',␊\n      Loading = 'Loading',␊\n      Ready = 'Ready'␊\n    }␊\n    ␊\n    export declare const enum StatusInValidate {␊\n      Poll = 'Poll',␊\n      Ready = 'Ready',␊\n      Done = 'Done'␊\n    }␊\n    ␊\n    /** Example struct demonstrating object streaming with nested types */␊\n    export interface StreamItem {␊\n      something: NestedMetadata␊\n      name: string␊\n      size: number␊\n    }␊\n    ␊\n    export interface StrictObject {␊\n      name: string␊\n    }␊\n    ␊\n    export declare const enum StringEnum {␊\n      VariantOne = 'variantone',␊\n      VariantTwo = 'varianttwo',␊\n      VariantThree = 'variantthree'␊\n    }␊\n    ␊\n    export type StructuredKind =␊\n      | { type2: 'Hello' }␊\n      | { type2: 'Greeting', name: string }␊\n      | { type2: 'Birthday', name: string, age: number }␊\n      | { type2: 'Tuple', field0: number, field1: number }␊\n    ␊\n    export type StructuredKindLowercase =␊\n      | { type: 'hello' }␊\n      | { type: 'greeting', name: string }␊\n      | { type: 'birthday', name: string, age: number }␊\n      | { type: 'tuple', field0: number, field1: number }␊\n    ␊\n    export declare function sumBtreeMapping(nums: Record<string, number>): number␊\n    ␊\n    export declare function sumIndexMapping(nums: Record<string, number>): number␊\n    ␊\n    export declare function sumMapping(nums: Record<string, number>): number␊\n    ␊\n    export declare function sumNums(nums: Array<number>): number␊\n    ␊\n    /**␊\n     * Function to test escaped quotes in comments.␊\n     * This comment contains escaped quotes: \\\\\\\\\"g+sx\\\\\\\\\" and should not break JSON parsing.␊\n     * The pattern \\\\\\\\\"value\\\\\\\\\" is commonly used in regex and shell commands.␊\n     * Another example: sed 's/old/\\\\\\\\\"new\\\\\\\\\"/g' where quotes are escaped.␊\n     */␊\n    export declare function testEscapedQuotesInComments(input: string): string␊\n    ␊\n    export declare function testLatin1Methods(input: string): Latin1MethodsResult␊\n    ␊\n    export declare function testSerdeBigNumberPrecision(number: string): any␊\n    ␊\n    export declare function testSerdeBufferBytes(obj: object): bigint␊\n    ␊\n    export declare function testSerdeRoundtrip(data: any): any␊\n    ␊\n    export declare function testWorkers(amount: number, completeCallback: ((err: Error | null, ) => void)): void␊\n    ␊\n    export declare function threadsafeFunctionBuildThrowErrorWithStatus(cb: (arg?: unknown) => unknown): void␊\n    ␊\n    export declare function threadsafeFunctionClosureCapture(defaultValue: Animal, func: (arg: Animal) => void): void␊\n    ␊\n    export declare function threadsafeFunctionFatalMode(cb: ((arg: boolean) => unknown)): void␊\n    ␊\n    export declare function threadsafeFunctionFatalModeError(cb: ((arg: boolean) => string)): void␊\n    ␊\n    export declare function threadsafeFunctionThrowError(cb: ((err: Error | null, arg: boolean) => unknown)): void␊\n    ␊\n    export declare function threadsafeFunctionThrowErrorWithStatus(cb: ((err: Error | null, arg: boolean) => unknown)): void␊\n    ␊\n    export declare function throwAsyncError(): Promise<void>␊\n    ␊\n    export declare function throwError(): void␊\n    ␊\n    export declare function throwErrorWithCause(): void␊\n    ␊\n    export declare function throwSyntaxError(error: string, code?: string | undefined | null): void␊\n    ␊\n    export declare function toJsObj(): object␊\n    ␊\n    export declare function tsfnAsyncCall(func: (arg0: number, arg1: number, arg2: number) => string): Promise<void>␊\n    ␊\n    export declare function tsfnCallWithCallback(tsfn: ((err: Error | null, ) => string)): void␊\n    ␊\n    export declare function tsfnInEither(pet: Pet): void␊\n    ␊\n    export declare function tsfnReturnPromise(func: ((err: Error | null, arg: number) => Promise<number>)): Promise<number>␊\n    ␊\n    export declare function tsfnReturnPromiseTimeout(func: ((err: Error | null, arg: number) => Promise<number>)): Promise<number>␊\n    ␊\n    export declare function tsfnThrowFromJs(tsfn: ((err: Error | null, arg: number) => Promise<number>)): Promise<number>␊\n    ␊\n    export declare function tsfnThrowFromJsCallbackContainsTsfn(tsfn: ((err: Error | null, arg: number) => Promise<number>)): Promise<void>␊\n    ␊\n    export declare function tsfnWeak(tsfn: (() => void)): Promise<void>␊\n    ␊\n    export declare function tsRename(a: { foo: number }): string[]␊\n    ␊\n    export interface TsTypeChanged {␊\n      typeOverride: object␊\n      typeOverrideOptional?: object␊\n    }␊\n    ␊\n    export interface TupleObject {␊\n      customField: number␊\n      field1: number␊\n    }␊\n    ␊\n    export type TupleToArray =␊\n      [field0: string, field1: number, field2?: Meta]␊\n    ␊\n    export declare function u16ArrayToArray(input: Uint16Array): Array<number>␊\n    ␊\n    export declare function u32ArrayToArray(input: Uint32Array): Array<number>␊\n    ␊\n    export declare function u64ArrayToArray(input: BigUint64Array): Array<bigint>␊\n    ␊\n    export declare function u8ArrayToArray(input: Uint8Array): Array<number>␊\n    ␊\n    export declare function uInit8ArrayFromString(): Promise<Uint8Array>␊\n    ␊\n    export declare function uint8ArrayFromData(): Uint8Array␊\n    ␊\n    export declare function uint8ArrayFromExternal(): Uint8Array␊\n    ␊\n    export interface UseNullableStruct {␊\n      requiredNumberField: number␊\n      requiredStringField: string␊\n      nullableNumberField: number | null␊\n      nullableStringField: string | null␊\n    }␊\n    ␊\n    export interface UtcDates {␊\n      start: Date␊\n      end?: Date␊\n    }␊\n    ␊\n    export declare function validateArray(arr: Array<number>): number␊\n    ␊\n    export declare function validateBigint(input: bigint): bigint␊\n    ␊\n    export declare function validateBoolean(i: boolean): boolean␊\n    ␊\n    export declare function validateBuffer(b: Buffer): number␊\n    ␊\n    export declare function validateBufferSlice(input: Buffer): number␊\n    ␊\n    export declare function validateDate(d: Date): number␊\n    ␊\n    export declare function validateDateTime(d: Date): number␊\n    ␊\n    export declare function validateEnum(input: KindInValidate): number␊\n    ␊\n    export declare function validateExternal(e: ExternalObject<number>): number␊\n    ␊\n    export declare function validateFunction(cb: () => number): number␊\n    ␊\n    export declare function validateHashMap(input: Record<string, number>): number␊\n    ␊\n    export declare function validateNull(i: null): boolean␊\n    ␊\n    export declare function validateNumber(i: number): number␊\n    ␊\n    export declare function validateOptional(input1?: string | undefined | null, input2?: boolean | undefined | null): boolean␊\n    ␊\n    export declare function validatePromise(p: Promise<number>): Promise<number>␊\n    ␊\n    export declare function validateString(s: string): string␊\n    ␊\n    export declare function validateStringEnum(input: StatusInValidate): string␊\n    ␊\n    export declare function validateStructuredEnum(kind: StructuredKind): StructuredKind␊\n    ␊\n    export declare function validateStructuredEnumLowercase(kind: StructuredKindLowercase): StructuredKindLowercase␊\n    ␊\n    export declare function validateSymbol(s: symbol): boolean␊\n    ␊\n    export declare function validateTypedArray(input: Uint8Array): number␊\n    ␊\n    export declare function validateTypedArraySlice(input: Uint8Array): number␊\n    ␊\n    export declare function validateUint8ClampedSlice(input: Uint8ClampedArray): number␊\n    ␊\n    export declare function validateUndefined(i: undefined): boolean␊\n    ␊\n    export interface ViteImportGlobMeta {␊\n      isSubImportsPattern?: boolean␊\n    }␊\n    ␊\n    export type VoidNullable<T = void> =␊\n      Nullable<T>␊\n    ␊\n    export declare function withAbortController(a: number, b: number, signal: AbortSignal): Promise<number>␊\n    ␊\n    export declare function withAbortSignalHandle(signal: AbortSignal): Promise<number>␊\n    ␊\n    export declare function withinAsyncRuntimeIfAvailable(): void␊\n    ␊\n    export declare function withoutAbortController(a: number, b: number): Promise<number>␊\n    ␊\n    export declare function xxh64Alias(input: Buffer): bigint␊\n    ␊\n    export declare namespace xxh2 {␊\n      export function xxh2Plus(a: number, b: number): number␊\n      export function xxh3Xxh64Alias(input: Buffer): bigint␊\n    }␊\n    ␊\n    export declare namespace xxh3 {␊\n      /** Xxh3 class */␊\n      export class Xxh3 {␊\n        constructor()␊\n        /** update */␊\n        update(input: Buffer): void␊\n        digest(): bigint␊\n      }␊\n      export const ALIGNMENT: number␊\n      /** xxh128 function */␊\n      export function xxh128(input: Buffer): bigint␊\n      export function xxh3_64(input: Buffer): bigint␊\n    }␊\n    export declare class ComplexClass {␊\n      value: string␊\n      number: number␊\n      constructor(value: string | ComplexClass, number: number)␊\n      methodOne(): string␊\n      methodTwo(): number␊\n      methodThree(): string␊\n      methodFour(): boolean␊\n      methodFive(): string␊\n    }␊\n    ␊\n    export interface Shared {␊\n      value: number␊\n    }␊\n    `\n"
  },
  {
    "path": "examples/napi/__tests__/async-exit.js",
    "content": "import assert from 'node:assert'\n\nimport { fetch } from '../index.cjs'\n\nconst res = await fetch('https://api.github.com/repos/napi-rs/napi-rs', {\n  headers: {\n    'X-GitHub-Api-Version': '2022-11-28',\n    Authorization: `Bearer ${process.env.GITHUB_TOKEN}`,\n    Accept: 'application/json',\n    'User-Agent': 'napi-rs/napi-rs',\n  },\n})\n\nassert(res instanceof Response)\n\nconsole.info(\n  `[${import.meta.filename.split('/').pop()}] All assertions passed.`,\n)\n"
  },
  {
    "path": "examples/napi/__tests__/async-exit.spec.ts",
    "content": "import { spawn } from 'node:child_process'\nimport { join, dirname } from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nimport test from 'ava'\n\nconst __dirname = dirname(fileURLToPath(import.meta.url))\nconst scriptPath = join(__dirname, 'async-exit.js')\n\ntest('async napi functions let the process exit', async (t) => {\n  if (process.env.WASI_TEST || process.arch === 'arm') {\n    t.pass()\n    return\n  }\n  const cp = spawn(process.execPath, [scriptPath], {\n    stdio: 'inherit',\n  })\n  let done = false\n  let timer: NodeJS.Timeout | null = null\n  const run = new Promise<void>((resolve, reject) => {\n    cp.on('exit', (code) => {\n      done = true\n      if (code === 0) {\n        resolve()\n      } else {\n        reject(new Error(`Process exited with code ${code}`))\n      }\n    })\n    cp.on('error', reject)\n    timer = setTimeout(() => {\n      if (!done) {\n        cp.kill()\n        reject(new Error('timeout'))\n      }\n    }, 5000)\n  }).finally(() => {\n    if (timer) {\n      clearTimeout(timer)\n    }\n  })\n  await t.notThrowsAsync(() => run)\n})\n"
  },
  {
    "path": "examples/napi/__tests__/async-generator-gc.spec.ts",
    "content": "import ava from 'ava'\n\nimport { DelayedCounter, shutdownRuntime } from '../index.cjs'\n\nconst test =\n  process.platform === 'darwin' && process.arch === 'arm64' ? ava : ava.skip\n\nava.after(() => {\n  shutdownRuntime()\n})\n\n// This test reproduces the use-after-free bug reported in issue #3119\n// The bug occurs when GC runs while an async generator is still being iterated\ntest('async generator should survive garbage collection', async (t) => {\n  if (typeof DelayedCounter === 'undefined') {\n    t.pass(\n      'DelayedCounter is not available (tokio_rt feature not enabled), skipping test',\n    )\n    return\n  }\n\n  // Use a large iteration count to trigger GC\n  // The bug typically manifests around iteration 559\n  const totalIterations = 2000\n  const counter = new DelayedCounter(totalIterations, 0) // 0ms delay for speed\n\n  const results: number[] = []\n  let count = 0\n\n  try {\n    for await (const value of counter) {\n      results.push(value as number)\n      count++\n\n      // Force GC every 500 iterations if available\n      if (count % 500 === 0 && typeof global.gc === 'function') {\n        global.gc()\n      }\n    }\n\n    // If we get here without crashing, the bug is fixed\n    t.is(\n      count,\n      totalIterations,\n      `Expected ${totalIterations} iterations, got ${count}`,\n    )\n    t.is(results.length, totalIterations)\n\n    // Verify we got the correct sequence\n    t.is(results[0], 0)\n    t.is(results[results.length - 1], totalIterations - 1)\n  } catch (error) {\n    // If the bug exists, we might get a crash or early termination\n    t.fail(`Failed after ${count} iterations: ${error}`)\n  }\n})\n\n// Test with forced GC at specific points\ntest('async generator should handle GC during iteration', async (t) => {\n  if (typeof DelayedCounter === 'undefined') {\n    t.pass(\n      'DelayedCounter is not available (tokio_rt feature not enabled), skipping test',\n    )\n    return\n  }\n\n  if (typeof global.gc !== 'function') {\n    t.pass('GC not exposed (run with --expose-gc), skipping test')\n    return\n  }\n\n  const counter = new DelayedCounter(1000, 0)\n  const results: number[] = []\n\n  for await (const value of counter) {\n    results.push(value as number)\n\n    // Force GC on every iteration (aggressive test)\n    global.gc()\n  }\n\n  t.is(results.length, 1000)\n  t.is(results[0], 0)\n  t.is(results[999], 999)\n})\n\n// Test that the instance doesn't get collected while iterator is in use\ntest('async generator instance should stay alive during iteration', async (t) => {\n  if (typeof DelayedCounter === 'undefined') {\n    t.pass(\n      'DelayedCounter is not available (tokio_rt feature not enabled), skipping test',\n    )\n    return\n  }\n\n  if (typeof global.gc !== 'function') {\n    t.pass('GC not exposed (run with --expose-gc), skipping test')\n    return\n  }\n\n  // Create counter and immediately get iterator (original instance may become unreferenced)\n  const iterator = new DelayedCounter(1000, 0)[Symbol.asyncIterator]()\n\n  // Force GC - this should NOT collect the Counter instance\n  global.gc()\n\n  // Should still be able to iterate\n  const first = await iterator.next()\n  t.deepEqual(first, { value: 0, done: false })\n\n  global.gc() // GC again\n\n  const second = await iterator.next()\n  t.deepEqual(second, { value: 1, done: false })\n})\n"
  },
  {
    "path": "examples/napi/__tests__/bun-test.js",
    "content": "import {\n  test,\n  afterAll,\n  afterEach,\n  beforeAll,\n  beforeEach,\n  expect,\n} from 'bun:test'\n\nexport { test, afterAll, afterEach, beforeAll, beforeEach, expect }\n"
  },
  {
    "path": "examples/napi/__tests__/error-msg.spec.ts",
    "content": "import test from 'ava'\n\nimport { receiveString, shutdownRuntime } from '../index.cjs'\n\ntest.after(() => {\n  shutdownRuntime()\n})\n\ntest('Function message', (t) => {\n  // @ts-expect-error\n  t.throws(() => receiveString(function a() {}), {\n    message:\n      'Failed to convert JavaScript value `function a(..) ` into rust type `String`',\n  })\n  // @ts-expect-error\n  t.throws(() => receiveString(() => {}), {\n    message:\n      'Failed to convert JavaScript value `function anonymous(..) ` into rust type `String`',\n  })\n  // @ts-expect-error\n  t.throws(() => receiveString(1), {\n    message:\n      'Failed to convert JavaScript value `Number 1 ` into rust type `String`',\n  })\n  t.throws(\n    () =>\n      // @ts-expect-error\n      receiveString({\n        a: 1,\n        b: {\n          foo: 'bar',\n          s: false,\n        },\n      }),\n    {\n      message:\n        'Failed to convert JavaScript value `Object {\"a\":1,\"b\":{\"foo\":\"bar\",\"s\":false}}` into rust type `String`',\n    },\n  )\n  // @ts-expect-error\n  t.throws(() => receiveString(Symbol('1')), {\n    message:\n      'Failed to convert JavaScript value `Symbol` into rust type `String`',\n  })\n\n  // @ts-expect-error\n  t.throws(() => receiveString(), {\n    message:\n      'Failed to convert JavaScript value `Undefined` into rust type `String`',\n  })\n\n  // @ts-expect-error\n  t.throws(() => receiveString(null), {\n    message:\n      'Failed to convert JavaScript value `Null` into rust type `String`',\n  })\n\n  // @ts-expect-error\n  t.throws(() => receiveString(100n), {\n    message:\n      'Failed to convert JavaScript value `BigInt 100 ` into rust type `String`',\n  })\n})\n"
  },
  {
    "path": "examples/napi/__tests__/generator.spec.ts",
    "content": "import test from 'ava'\n\nimport {\n  Fib,\n  Fib2,\n  Fib3,\n  Fib4,\n  AsyncFib,\n  DelayedCounter,\n  AsyncDataSource,\n  shutdownRuntime,\n} from '../index.cjs'\n\ntest.after(() => {\n  shutdownRuntime()\n})\n\nfor (const [index, factory] of [\n  () => new Fib(),\n  () => Fib2.create(0),\n  () => new Fib3(0, 1),\n].entries()) {\n  test(`should be able to stop a generator #${index}`, (t) => {\n    let iterator = factory()\n    if (typeof Iterator === 'undefined') {\n      iterator = iterator[Symbol.iterator]()\n    }\n    t.deepEqual(iterator.next(), {\n      done: false,\n      value: 1,\n    })\n    iterator.next()\n    iterator.next()\n    iterator.next()\n    iterator.next()\n    t.deepEqual(iterator.next(), {\n      done: false,\n      value: 8,\n    })\n    t.deepEqual(iterator.return?.(), {\n      done: true,\n    })\n    t.deepEqual(iterator.next(), {\n      done: true,\n    })\n  })\n\n  test(`should be able to throw to generator #${index}`, (t) => {\n    const iterator = factory()\n    t.deepEqual(iterator.next(), {\n      done: false,\n      value: 1,\n    })\n    iterator.next()\n    iterator.next()\n    iterator.next()\n    iterator.next()\n    t.deepEqual(iterator.next(), {\n      done: false,\n      value: 8,\n    })\n    t.throws(() => iterator.throw!(new Error()))\n    t.deepEqual(iterator.next(), {\n      done: true,\n    })\n  })\n\n  test(`should be an Iterator and have the Iterator Helper methods #${index}`, (t) => {\n    if (typeof Iterator === 'undefined') {\n      t.pass('Iterator is not existing, skipping test')\n      return\n    }\n    const iterator = factory()\n\n    t.true(Object.getPrototypeOf(iterator) === Iterator.prototype)\n    let arr = [\n      ...iterator\n        .drop(3)\n        .filter((x: number) => x % 2 == 0)\n        .take(5),\n    ]\n    t.deepEqual(arr, [8, 34, 144, 610, 2584])\n  })\n}\n\ntest('generator should be able to return object', (t) => {\n  const fib = new Fib4(0, 1)\n\n  const gen = fib[Symbol.iterator]\n  t.is(typeof gen, 'function')\n  const iterator = gen.call(fib)\n  t.deepEqual(iterator.next(), {\n    done: false,\n    value: { number: 1 },\n  })\n})\n\n// AsyncGenerator tests\ntest('async generator should work with for-await-of', async (t) => {\n  if (typeof AsyncFib === 'undefined') {\n    t.pass(\n      'AsyncFib is not available (tokio_rt feature not enabled), skipping test',\n    )\n    return\n  }\n  const fib = new AsyncFib()\n  const results: number[] = []\n  let count = 0\n  for await (const value of fib) {\n    results.push(value)\n    if (++count >= 5) break\n  }\n  t.deepEqual(results, [1, 1, 2, 3, 5])\n})\n\ntest('async generator should support next()', async (t) => {\n  if (typeof AsyncFib === 'undefined') {\n    t.pass(\n      'AsyncFib is not available (tokio_rt feature not enabled), skipping test',\n    )\n    return\n  }\n  const fib = new AsyncFib()\n  const iter = fib[Symbol.asyncIterator]()\n  t.deepEqual(await iter.next(), { value: 1, done: false })\n  t.deepEqual(await iter.next(), { value: 1, done: false })\n  t.deepEqual(await iter.next(), { value: 2, done: false })\n})\n\ntest('async generator should support return()', async (t) => {\n  if (typeof AsyncFib === 'undefined') {\n    t.pass(\n      'AsyncFib is not available (tokio_rt feature not enabled), skipping test',\n    )\n    return\n  }\n  const fib = new AsyncFib()\n  const iter = fib[Symbol.asyncIterator]()\n  t.deepEqual(await iter.next(), { value: 1, done: false })\n  t.deepEqual(await iter.return?.(), { value: undefined, done: true })\n})\n\ntest('async generator should support throw()', async (t) => {\n  if (typeof AsyncFib === 'undefined') {\n    t.pass(\n      'AsyncFib is not available (tokio_rt feature not enabled), skipping test',\n    )\n    return\n  }\n  const fib = new AsyncFib()\n  const iter = fib[Symbol.asyncIterator]()\n  t.deepEqual(await iter.next(), { value: 1, done: false })\n  // throw() should reject with the error passed to it\n  await t.throwsAsync(() => iter.throw!(new Error('test error')))\n})\n\n// Truly async generator tests - these use actual async delays\ntest('DelayedCounter should yield values with real async delays', async (t) => {\n  if (typeof DelayedCounter === 'undefined') {\n    t.pass(\n      'DelayedCounter is not available (tokio_rt feature not enabled), skipping test',\n    )\n    return\n  }\n\n  const counter = new DelayedCounter(3, 10) // 3 values, 10ms delay each\n  const results: number[] = []\n  const startTime = Date.now()\n\n  for await (const value of counter) {\n    results.push(value as number)\n  }\n\n  const elapsed = Date.now() - startTime\n\n  t.deepEqual(results, [0, 1, 2])\n  // Should take at least 30ms (3 iterations * 10ms each)\n  // Allow some tolerance for timing\n  t.true(elapsed >= 25, `Expected at least 25ms, got ${elapsed}ms`)\n})\n\ntest('DelayedCounter should complete and return done:true', async (t) => {\n  if (typeof DelayedCounter === 'undefined') {\n    t.pass(\n      'DelayedCounter is not available (tokio_rt feature not enabled), skipping test',\n    )\n    return\n  }\n\n  const counter = new DelayedCounter(2, 5)\n  const iter = counter[Symbol.asyncIterator]()\n\n  t.deepEqual(await iter.next(), { value: 0, done: false })\n  t.deepEqual(await iter.next(), { value: 1, done: false })\n  // After max is reached, should return done: true\n  t.deepEqual(await iter.next(), { value: undefined, done: true })\n  // Verify idempotency: subsequent calls should continue returning done: true\n  t.deepEqual(await iter.next(), { value: undefined, done: true })\n})\n\ntest('AsyncDataSource should yield string items with async delays', async (t) => {\n  if (typeof AsyncDataSource === 'undefined') {\n    t.pass(\n      'AsyncDataSource is not available (tokio_rt feature not enabled), skipping test',\n    )\n    return\n  }\n\n  const data = ['hello', 'async', 'world']\n  const source = AsyncDataSource.fromData(data, 10) // 10ms delay per item\n  const results: string[] = []\n  const startTime = Date.now()\n\n  for await (const item of source) {\n    results.push(item as string)\n  }\n\n  const elapsed = Date.now() - startTime\n\n  t.deepEqual(results, ['hello', 'async', 'world'])\n  // Should take at least 30ms (3 items * 10ms each)\n  t.true(elapsed >= 25, `Expected at least 25ms, got ${elapsed}ms`)\n})\n\ntest('AsyncDataSource factory pattern should work', async (t) => {\n  if (typeof AsyncDataSource === 'undefined') {\n    t.pass(\n      'AsyncDataSource is not available (tokio_rt feature not enabled), skipping test',\n    )\n    return\n  }\n\n  const source = AsyncDataSource.fromData(['a', 'b'], 5)\n  const iter = source[Symbol.asyncIterator]()\n\n  t.deepEqual(await iter.next(), { value: 'a', done: false })\n  t.deepEqual(await iter.next(), { value: 'b', done: false })\n  t.deepEqual(await iter.next(), { value: undefined, done: true })\n})\n\ntest('async generators should run concurrently', async (t) => {\n  if (typeof DelayedCounter === 'undefined') {\n    t.pass(\n      'DelayedCounter is not available (tokio_rt feature not enabled), skipping test',\n    )\n    return\n  }\n\n  // Create two counters that each take 50ms total\n  const counter1 = new DelayedCounter(5, 10) // 5 * 10ms = 50ms\n  const counter2 = new DelayedCounter(5, 10) // 5 * 10ms = 50ms\n\n  const startTime = Date.now()\n\n  // Run both concurrently\n  const [results1, results2] = await Promise.all([\n    (async () => {\n      const r: number[] = []\n      for await (const v of counter1) r.push(v as number)\n      return r\n    })(),\n    (async () => {\n      const r: number[] = []\n      for await (const v of counter2) r.push(v as number)\n      return r\n    })(),\n  ])\n\n  const elapsed = Date.now() - startTime\n\n  t.deepEqual(results1, [0, 1, 2, 3, 4])\n  t.deepEqual(results2, [0, 1, 2, 3, 4])\n  // If running concurrently, should take ~50ms, not ~100ms\n  // Allow very generous tolerance for CI/WASI environments\n  t.true(\n    elapsed < 300,\n    `Expected concurrent execution under 300ms, got ${elapsed}ms`,\n  )\n})\n"
  },
  {
    "path": "examples/napi/__tests__/hidden-property.spec.ts",
    "content": "import test from 'ava'\n\nimport { CounterRepro, shutdownRuntime } from '../index.cjs'\n\ntest.after(() => {\n  shutdownRuntime()\n})\n\ntest('[[InstanceRef]] should be hidden from enumeration', async (t) => {\n  if (typeof CounterRepro === 'undefined') {\n    t.pass('CounterRepro not available, skipping test')\n    return\n  }\n\n  const counter = new CounterRepro(10)\n  const iterator = counter[Symbol.asyncIterator]()\n\n  // The [[InstanceRef]] property should not be enumerable\n  const keys = Object.keys(iterator)\n  t.false(\n    keys.includes('[[InstanceRef]]'),\n    '[[InstanceRef]] should not appear in Object.keys()',\n  )\n\n  // Should not show up in for-in loop\n  const forInKeys: string[] = []\n  for (const key in iterator) {\n    forInKeys.push(key)\n  }\n  t.false(\n    forInKeys.includes('[[InstanceRef]]'),\n    '[[InstanceRef]] should not appear in for-in',\n  )\n\n  // Verify the property descriptor shows it's truly hidden\n  // Note: Object.getOwnPropertyNames() WILL show non-enumerable properties,\n  // but what matters is that [[InstanceRef]] doesn't show in Object.keys() or for-in (which we tested above)\n  const descriptor = Object.getOwnPropertyDescriptor(\n    iterator,\n    '[[InstanceRef]]',\n  )\n  if (descriptor) {\n    t.false(descriptor.enumerable, '[[InstanceRef]] should be non-enumerable')\n    t.false(descriptor.writable, '[[InstanceRef]] should be non-writable')\n    t.false(\n      descriptor.configurable,\n      '[[InstanceRef]] should be non-configurable',\n    )\n  }\n\n  // The iterator should still work correctly\n  const first = await iterator.next()\n  t.deepEqual(first, { value: 0, done: false })\n})\n\ntest('[[InstanceRef]] should be non-writable and non-configurable', async (t) => {\n  if (typeof CounterRepro === 'undefined') {\n    t.pass('CounterRepro not available, skipping test')\n    return\n  }\n\n  const counter = new CounterRepro(10)\n  const iterator = counter[Symbol.asyncIterator]()\n\n  const originalValue = (iterator as any)['[[InstanceRef]]']\n\n  // Try to assign a new value (should throw in strict mode)\n  const assignError = t.throws(\n    () => {\n      'use strict'\n      ;(iterator as any)['[[InstanceRef]]'] = 'hacked'\n    },\n    { instanceOf: TypeError },\n  )\n\n  t.truthy(\n    assignError,\n    'Assignment to non-writable property should throw TypeError',\n  )\n\n  // Value should remain unchanged\n  t.is((iterator as any)['[[InstanceRef]]'], originalValue)\n\n  // Try to delete the property (should throw in strict mode for non-configurable property)\n  const deleteError = t.throws(\n    () => {\n      'use strict'\n      delete (iterator as any)['[[InstanceRef]]']\n    },\n    { instanceOf: TypeError },\n  )\n\n  t.truthy(\n    deleteError,\n    'Deleting non-configurable property should throw TypeError',\n  )\n\n  // Property should still exist\n  t.is((iterator as any)['[[InstanceRef]]'], originalValue)\n\n  // The iterator should still work correctly\n  const first = await iterator.next()\n  t.deepEqual(first, { value: 0, done: false })\n})\n\ntest('visible properties should still be accessible', async (t) => {\n  if (typeof CounterRepro === 'undefined') {\n    t.pass('CounterRepro not available, skipping test')\n    return\n  }\n\n  const counter = new CounterRepro(10)\n  const iterator = counter[Symbol.asyncIterator]()\n\n  // The visible methods should be accessible\n  t.is(typeof iterator.next, 'function')\n  t.is(typeof iterator.return, 'function')\n  t.is(typeof iterator.throw, 'function')\n\n  // These should appear in enumeration\n  const keys = Object.keys(iterator)\n  t.true(keys.includes('next'), 'next should be enumerable')\n  t.true(keys.includes('return'), 'return should be enumerable')\n  t.true(keys.includes('throw'), 'throw should be enumerable')\n})\n"
  },
  {
    "path": "examples/napi/__tests__/issue-3119-repro.spec.ts",
    "content": "import test from 'ava'\n\nimport { CounterRepro, shutdownRuntime } from '../index.cjs'\n\ntest.after(() => {\n  shutdownRuntime()\n})\n\n// Exact reproduction of issue #3119\n// This test should fail/crash with the current implementation\n// Expected behavior: completes 5000 iterations\n// Actual behavior with bug: crashes at ~559 iterations with \"malloc(): unaligned tcache chunk detected\"\ntest('CounterRepro should complete without crashing (issue #3119)', async (t) => {\n  if (typeof CounterRepro === 'undefined') {\n    t.pass('CounterRepro not available, skipping test')\n    return\n  }\n\n  const n = 5000\n  let count = 0\n\n  try {\n    for await (const _ of new CounterRepro(n)) {\n      count++\n    }\n\n    t.is(count, n, `Expected ${n} iterations, got ${count}`)\n  } catch (error) {\n    t.fail(`Crashed after ${count} iterations: ${error}`)\n  }\n})\n\n// This version forces GC to make the bug more deterministic\ntest('CounterRepro should survive forced GC (issue #3119)', async (t) => {\n  if (typeof CounterRepro === 'undefined') {\n    t.pass('CounterRepro not available, skipping test')\n    return\n  }\n\n  if (typeof global.gc !== 'function') {\n    t.pass('GC not exposed (run with --expose-gc), skipping test')\n    return\n  }\n\n  const n = 5000\n  let count = 0\n\n  try {\n    for await (const _ of new CounterRepro(n)) {\n      count++\n      // Force GC periodically to trigger the bug more reliably\n      if (count % 100 === 0) {\n        global.gc()\n      }\n    }\n\n    t.is(count, n, `Expected ${n} iterations, got ${count}`)\n  } catch (error) {\n    t.fail(`Crashed after ${count} iterations with forced GC: ${error}`)\n  }\n})\n\n// Test that demonstrates the reference loss issue\ntest('CounterRepro iterator should maintain reference to instance', async (t) => {\n  if (typeof CounterRepro === 'undefined') {\n    t.pass('CounterRepro not available, skipping test')\n    return\n  }\n\n  if (typeof global.gc !== 'function') {\n    t.pass('GC not exposed (run with --expose-gc), skipping test')\n    return\n  }\n\n  // Create iterator immediately without keeping instance reference\n  // This should trigger the bug - the Counter instance becomes unreachable\n  const iter = new CounterRepro(100)[Symbol.asyncIterator]()\n\n  // Force GC - this will collect the Counter instance\n  global.gc()\n\n  // Try to iterate - this will crash if the bug exists\n  let count = 0\n  try {\n    while (true) {\n      const result = await iter.next()\n      if (result.done) break\n      count++\n\n      // GC on every iteration to be aggressive\n      global.gc()\n    }\n\n    t.is(count, 100)\n  } catch (error) {\n    t.fail(`Crashed after ${count} iterations: ${error}`)\n  }\n})\n"
  },
  {
    "path": "examples/napi/__tests__/object-attr.spec.ts",
    "content": "import test from 'ava'\n\nimport { NotWritableClass, shutdownRuntime } from '../index.cjs'\n\ntest.after(() => {\n  shutdownRuntime()\n})\n\ntest('Not Writable Class', (t) => {\n  const obj = new NotWritableClass('1')\n  t.throws(() => {\n    obj.name = '2'\n  })\n  obj.setName('2')\n  t.is(obj.name, '2')\n  t.throws(() => {\n    obj.setName = () => {}\n  })\n})\n"
  },
  {
    "path": "examples/napi/__tests__/property-names.spec.ts",
    "content": "import test from 'ava'\n\nimport type {\n  PropertyNameDigitTest,\n  PropertyNameSpecialCharsTest,\n  PropertyNameUnicodeTest,\n  PropertyNameValidTest,\n} from '../index.cjs'\n\ntest('Unicode property names should be unquoted', (t) => {\n  // These should compile without quotes\n  const obj: PropertyNameUnicodeTest = {\n    café: 'coffee',\n    日本語: 'japanese',\n    Ελληνικά: 'greek',\n  }\n\n  t.is(obj.café, 'coffee')\n  t.is(obj.日本語, 'japanese')\n  t.is(obj.Ελληνικά, 'greek')\n})\n\ntest('Special character property names should be quoted', (t) => {\n  // These require quotes in the type definition\n  const obj: PropertyNameSpecialCharsTest = {\n    'kebab-case': 'value1',\n    'with space': 'value2',\n    'dot.notation': 'value3',\n    'xml:lang': 'value4',\n    $var: 'value5',\n  }\n\n  t.is(obj['kebab-case'], 'value1')\n  t.is(obj['with space'], 'value2')\n  t.is(obj['dot.notation'], 'value3')\n  t.is(obj['xml:lang'], 'value4')\n  t.is(obj['$var'], 'value5')\n})\n\ntest('Digit-starting property names should be quoted', (t) => {\n  // These require quotes because they start with digits\n  const obj: PropertyNameDigitTest = {\n    '0invalid': 'value1',\n    '123': 'value2',\n  }\n\n  t.is(obj['0invalid'], 'value1')\n  t.is(obj['123'], 'value2')\n})\n\ntest('Valid identifier property names should be unquoted', (t) => {\n  // These should compile without quotes\n  const obj: PropertyNameValidTest = {\n    camelCase: 'value1',\n    pascalCase: 'value2',\n    private: 'value3',\n    with123Numbers: 'value4',\n  }\n\n  t.is(obj.camelCase, 'value1')\n  t.is(obj.pascalCase, 'value2')\n  t.is(obj.private, 'value3')\n  t.is(obj.with123Numbers, 'value4')\n})\n"
  },
  {
    "path": "examples/napi/__tests__/strict.spec.ts",
    "content": "import { Buffer } from 'node:buffer'\n\nimport test from 'ava'\n\nimport {\n  validateArray,\n  validateTypedArray,\n  validateTypedArraySlice,\n  validateBufferSlice,\n  validateBigint,\n  validateBuffer,\n  validateBoolean,\n  validateDate,\n  validateDateTime,\n  createExternal,\n  validateExternal,\n  validateFunction,\n  validateHashMap,\n  validatePromise,\n  validateString,\n  validateSymbol,\n  validateNull,\n  validateUndefined,\n  validateEnum,\n  validateStringEnum,\n  KindInValidate,\n  StatusInValidate,\n  returnUndefinedIfInvalid,\n  returnUndefinedIfInvalidPromise,\n  validateOptional,\n  shutdownRuntime,\n} from '../index.cjs'\n\ntest.after(() => {\n  shutdownRuntime()\n})\n\ntest('should validate array', (t) => {\n  t.is(validateArray([1, 2, 3]), 3)\n  // @ts-expect-error\n  t.throws(() => validateArray(1), {\n    message: 'Expected an array',\n    code: 'InvalidArg',\n  })\n})\n\ntest('should validate arraybuffer', (t) => {\n  t.is(validateTypedArray(new Uint8Array([1, 2, 3])), 3)\n  // @ts-expect-error\n  t.throws(() => validateTypedArray(1), {\n    code: 'InvalidArg',\n    message: 'Expected a TypedArray value',\n  })\n\n  t.is(validateTypedArraySlice(new Uint8Array([1, 2, 3])), 3)\n\n  // @ts-expect-error\n  t.throws(() => validateTypedArraySlice(1), {\n    code: 'InvalidArg',\n    message: 'Expected a TypedArray value',\n  })\n\n  t.is(validateBufferSlice(Buffer.from('hello')), 5)\n  // @ts-expect-error\n  t.throws(() => validateBufferSlice(2), {\n    code: 'InvalidArg',\n    message: 'Expected a Buffer value',\n  })\n})\n\ntest('should validate BigInt', (t) => {\n  if (typeof BigInt === 'undefined') {\n    t.pass('BigInt is not supported')\n  } else {\n    const fx = BigInt(1024 * 1024 * 1024 * 1024)\n    t.is(validateBigint(fx), fx)\n    // @ts-expect-error\n    t.throws(() => validateBigint(1), {\n      code: 'InvalidArg',\n      message: 'Expect value to be BigInt, but received Number',\n    })\n  }\n})\n\ntest('should validate buffer', (t) => {\n  t.is(validateBuffer(Buffer.from('hello')), 5)\n  // @ts-expect-error\n  t.throws(() => validateBuffer(2), {\n    code: 'InvalidArg',\n    message: 'Expected a Buffer value',\n  })\n})\n\ntest('should validate boolean value', (t) => {\n  t.is(validateBoolean(true), false)\n  t.is(validateBoolean(false), true)\n  // @ts-expect-error\n  t.throws(() => validateBoolean(1), {\n    code: 'InvalidArg',\n    message: 'Expect value to be Boolean, but received Number',\n  })\n})\n\ntest('should validate date', (t) => {\n  if (Number(process.versions.napi) < 5) {\n    return t.pass()\n  }\n  const fx = new Date('2016-12-24')\n  t.is(validateDate(fx), fx.valueOf())\n  t.is(validateDateTime(fx), 1)\n  // @ts-expect-error\n  t.throws(() => validateDate(1), {\n    code: 'InvalidArg',\n    message: 'Expected a Date object',\n  })\n  // @ts-expect-error\n  t.throws(() => validateDateTime(2), {\n    code: 'InvalidArg',\n    message: 'Expected a Date object',\n  })\n})\n\ntest('should validate External', (t) => {\n  const fx = createExternal(1)\n  t.is(validateExternal(fx), 1)\n  // @ts-expect-error\n  t.throws(() => validateExternal(1), {\n    code: 'InvalidArg',\n    message: 'Expect value to be External, but received Number',\n  })\n})\n\ntest('should validate function', (t) => {\n  t.is(\n    validateFunction(() => 1),\n    4,\n  )\n  // @ts-expect-error\n  t.throws(() => validateFunction(2), {\n    code: 'InvalidArg',\n    message: 'Expect value to be Function, but received Number',\n  })\n})\n\ntest('should validate Map', (t) => {\n  t.is(validateHashMap({ a: 1, b: 2 }), 2)\n  // @ts-expect-error\n  t.throws(() => validateHashMap(), {\n    code: 'InvalidArg',\n    message: 'Expect value to be Object, but received Undefined',\n  })\n})\n\ntest('should validate promise', async (t) => {\n  t.is(\n    await validatePromise(\n      new Promise((resolve) => {\n        setTimeout(() => {\n          resolve(1)\n        }, 100)\n      }),\n    ),\n    2,\n  )\n  // @ts-expect-error\n  await t.throwsAsync(() => validatePromise(1), {\n    code: 'InvalidArg',\n    message: 'Expected Promise object',\n  })\n})\n\ntest('should validate string', (t) => {\n  t.is(validateString('hello'), 'hello!')\n  // @ts-expect-error\n  t.throws(() => validateString(1), {\n    code: 'InvalidArg',\n    message: 'Expect value to be String, but received Number',\n  })\n})\n\ntest('should validate symbol', (t) => {\n  t.notThrows(() => validateSymbol(Symbol()))\n  // @ts-expect-error\n  t.throws(() => validateSymbol(1), {\n    code: 'InvalidArg',\n    message: 'Expect value to be Symbol, but received Number',\n  })\n})\n\ntest('should validate null', (t) => {\n  t.notThrows(() => validateNull(null))\n  // @ts-expect-error\n  t.throws(() => validateNull(1), {\n    code: 'InvalidArg',\n    message: 'Expect value to be Null, but received Number',\n  })\n})\n\ntest('should validate undefined', (t) => {\n  t.notThrows(() => validateUndefined(void 0))\n  // @ts-expect-error\n  t.notThrows(() => validateUndefined())\n  // @ts-expect-error\n  t.throws(() => validateUndefined(1), {\n    code: 'InvalidArg',\n    message: 'Expect value to be Undefined, but received Number',\n  })\n})\n\ntest('should validate enum', (t) => {\n  t.is(validateEnum(KindInValidate.Cat), KindInValidate.Cat)\n  // @ts-expect-error\n  t.throws(() => validateEnum('3'), {\n    code: 'InvalidArg',\n    message: 'Expect value to be Number, but received String',\n  })\n\n  t.is(validateStringEnum(StatusInValidate.Poll), 'Poll')\n\n  // @ts-expect-error\n  t.throws(() => validateStringEnum(1), {\n    code: 'InvalidArg',\n    message: 'Expect value to be String, but received Number',\n  })\n})\n\ntest('should return undefined if arg is invalid', (t) => {\n  t.is(returnUndefinedIfInvalid(true), false)\n  // @ts-expect-error\n  t.is(returnUndefinedIfInvalid(1), undefined)\n})\n\ntest('should return Promise.reject() if arg is not Promise', async (t) => {\n  t.is(await returnUndefinedIfInvalidPromise(Promise.resolve(true)), false)\n  // @ts-expect-error\n  await t.throwsAsync(() => returnUndefinedIfInvalidPromise(1))\n})\n\ntest('should validate Option<T>', (t) => {\n  t.is(validateOptional(null, null), false)\n  t.is(validateOptional(null, false), false)\n  t.is(validateOptional('1', false), true)\n  t.is(validateOptional(null, true), true)\n  // @ts-expect-error\n  t.throws(() => validateOptional(1, null))\n  // @ts-expect-error\n  t.throws(() => validateOptional(null, 2))\n  // @ts-expect-error\n  t.throws(() => validateOptional(1, 2))\n})\n"
  },
  {
    "path": "examples/napi/__tests__/test.framework.js",
    "content": "const { bun } = process.versions\n\n/**@type {import('ava').TestFn} */\nlet testRunner\n\nif (bun) {\n  const { test, expect, afterAll, afterEach, beforeAll, beforeEach } =\n    await import('./bun-test.js')\n  const testContext = {\n    is: (actual, expected) => {\n      expect(actual).toEqual(expected)\n    },\n    not: (actual, expected) => {\n      expect(actual).not.toEqual(expected)\n    },\n    deepEqual: (actual, expected) => {\n      expect(actual).toEqual(expected)\n    },\n    throws: (fn, expected) => {\n      if (expected) {\n        expect(fn).toThrow(expected)\n      } else {\n        expect(fn).toThrow()\n      }\n    },\n    notThrows: (fn, expected) => {\n      if (expected) {\n        expect(fn).not.toThrow(expected)\n      } else {\n        expect(fn).not.toThrow()\n      }\n    },\n    throwsAsync: async (fn, expected) => {\n      if (expected) {\n        expect(\n          async () => await (typeof fn === 'function' ? fn() : fn),\n        ).toThrow(expected)\n      } else {\n        expect(\n          async () => await (typeof fn === 'function' ? fn() : fn),\n        ).toThrow()\n      }\n    },\n    notThrowsAsync: async (fn, expected) => {\n      if (expected) {\n        expect(\n          async () => await (typeof fn === 'function' ? fn() : fn),\n        ).not.toThrow(expected)\n      } else {\n        expect(\n          async () => await (typeof fn === 'function' ? fn() : fn),\n        ).not.toThrow()\n      }\n    },\n    true: (actual, message) => {\n      expect(actual).toBe(true, message)\n    },\n    false: (actual, message) => {\n      expect(actual).toBe(false, message)\n    },\n    pass: () => {\n      expect(true).toBe(true)\n    },\n    fail: () => {\n      expect(true).toBe(false)\n    },\n    regex: (actual, expected) => {\n      expect(actual).toMatch(expected)\n    },\n    snapshot: (..._args) => {\n      // TODO: Ignore snapshots test at this moment\n    },\n  }\n  testRunner = (title, spec) => {\n    test(title, async () => {\n      await Promise.resolve(spec(testContext))\n    })\n  }\n  testRunner.skip = (label, fn) => {\n    test.skip(label, () => {\n      fn(testContext)\n    })\n  }\n  testRunner.after = (fn) => {\n    afterAll(fn)\n  }\n  testRunner.before = (fn) => {\n    beforeAll(fn)\n  }\n  testRunner.afterEach = (fn) => {\n    afterEach(fn)\n  }\n  testRunner.beforeEach = (fn) => {\n    beforeEach(fn)\n  }\n} else {\n  const test = (await import('ava')).default\n  testRunner = test\n}\n\nexport { testRunner as test }\n"
  },
  {
    "path": "examples/napi/__tests__/tsfn-error.cjs",
    "content": "const { threadsafeFunctionFatalModeError } = require('../index.cjs')\n\nthreadsafeFunctionFatalModeError(() => {\n  return false\n})\n"
  },
  {
    "path": "examples/napi/__tests__/unload.spec.js",
    "content": "// use the commonjs syntax to prevent compiler from transpiling the module syntax\n\nimport { createRequire } from 'node:module'\nimport * as path from 'node:path'\n\nimport { platformArchTriples } from '@napi-rs/triples'\nimport test from 'ava'\n\nconst require = createRequire(import.meta.url)\nconst __dirname = path.dirname(new URL(import.meta.url).pathname)\n\nconst platforms = platformArchTriples[process.platform][process.arch]\n\nlet binaryName\n\nif (platforms.length === 1) {\n  binaryName = `example.${platforms[0].platformArchABI}.node`\n} else if (process.platform === 'linux') {\n  if (process.report?.getReport?.()?.header.glibcVersionRuntime) {\n    if (process.arch === 'arm') {\n      binaryName = `example.linux-arm-gnueabihf.node`\n    } else {\n      binaryName = `example.${platforms.find(({ abi }) => abi === 'gnu').platformArchABI}.node`\n    }\n  } else {\n    binaryName = `example.${platforms.find(({ abi }) => abi === 'musl').platformArchABI}.node`\n  }\n} else if (process.platform === 'win32') {\n  binaryName = `example.${platforms.find(({ abi }) => abi === 'msvc').platformArchABI}.node`\n} else {\n  throw new Error('unsupported platform')\n}\n\ntest('unload module', (t) => {\n  if (process.env.WASI_TEST) {\n    t.pass()\n    return\n  }\n  const { add } = require(`../${binaryName}`)\n  t.is(add(1, 2), 3)\n  delete require.cache[require.resolve(`../${binaryName}`)]\n  const { add: add2 } = require(`../${binaryName}`)\n  t.is(add2(1, 2), 3)\n})\n\ntest('load module multi times', (t) => {\n  if (process.env.WASI_TEST || process.platform === 'win32') {\n    t.pass()\n    return\n  }\n  const { add } = require(`../${binaryName}`)\n  t.is(add(1, 2), 3)\n  const { add: add2 } = require(\n    path.toNamespacedPath(path.join(__dirname, `../${binaryName}`)),\n  )\n  t.is(add2(1, 2), 3)\n})\n"
  },
  {
    "path": "examples/napi/__tests__/values.spec.ts",
    "content": "import { Buffer } from 'node:buffer'\nimport { exec } from 'node:child_process'\nimport { join } from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport { createReadStream } from 'node:fs'\nimport { readFile as nodeReadFile } from 'node:fs/promises'\nimport { Readable } from 'node:stream'\nimport { Subject, take } from 'rxjs'\nimport Sinon, { spy } from 'sinon'\n\nimport 'core-js/features/promise/with-resolvers.js'\n\nimport {\n  DEFAULT_COST,\n  add,\n  fibonacci,\n  call0,\n  call1,\n  call2,\n  apply0,\n  apply1,\n  callFunction,\n  callFunctionWithArg,\n  callFunctionWithArgAndCtx,\n  createReferenceOnFunction,\n  referenceAsCallback,\n  contains,\n  concatLatin1,\n  concatStr,\n  concatUtf16,\n  createZeroCopyUtf16String,\n  createZeroCopyLatin1String,\n  createExternalUtf16String,\n  createExternalLatin1String,\n  createExternalLatin1Empty,\n  createExternalLatin1Short,\n  createExternalLatin1Long,\n  createExternalLatin1WithLatin1Chars,\n  createExternalLatin1CustomFinalize,\n  createStaticLatin1String,\n  createStaticUtf16String,\n  testLatin1Methods,\n  roundtripStr,\n  getNums,\n  getWords,\n  getTuple,\n  getMapping,\n  sumMapping,\n  sumNums,\n  getBtreeMapping,\n  sumBtreeMapping,\n  getIndexMapping,\n  sumIndexMapping,\n  indexmapPassthrough,\n  passSetToJs,\n  passSetToRust,\n  btreeSetToJs,\n  btreeSetToRust,\n  getCwd,\n  Animal,\n  Kind,\n  NinjaTurtle,\n  ClassWithFactory,\n  CustomNumEnum,\n  Context,\n  GetterSetterWithClosures,\n  enumToI32,\n  listObjKeys,\n  createObj,\n  mapOption,\n  readFile,\n  throwError,\n  throwErrorWithCause,\n  jsErrorCallback,\n  customStatusCode,\n  panic,\n  readPackageJson,\n  PackageJsonReader,\n  getPackageJsonName,\n  getBuffer,\n  getEmptyBuffer,\n  getEmptyTypedArray,\n  asyncBufferToArray,\n  readFileAsync,\n  eitherStringOrNumber,\n  returnEither,\n  either3,\n  either4,\n  eitherPromiseInEitherA,\n  eitherF64OrU32,\n  withoutAbortController,\n  withAbortController,\n  asyncTaskReadFile,\n  asyncTaskOptionalReturn,\n  asyncTaskFinally,\n  asyncResolveArray,\n  asyncTaskArraybuffer,\n  asyncMultiTwo,\n  bigintAdd,\n  createBigInt,\n  createBigIntI64,\n  bigintGetU64AsString,\n  callThreadsafeFunction,\n  threadsafeFunctionThrowError,\n  threadsafeFunctionThrowErrorWithStatus,\n  threadsafeFunctionBuildThrowErrorWithStatus,\n  threadsafeFunctionClosureCapture,\n  tsfnCallWithCallback,\n  tsfnAsyncCall,\n  tsfnThrowFromJs,\n  asyncPlus100,\n  getGlobal,\n  getUndefined,\n  getNull,\n  setSymbolInObj,\n  createSymbol,\n  createSymbolFor,\n  createSymbolRef,\n  threadsafeFunctionFatalMode,\n  createExternal,\n  getExternal,\n  mutateExternal,\n  createExternalString,\n  createExternalRef,\n  xxh2,\n  xxh3,\n  xxh64Alias,\n  tsRename,\n  acceptArraybuffer,\n  acceptSlice,\n  u8ArrayToArray,\n  i8ArrayToArray,\n  u16ArrayToArray,\n  i16ArrayToArray,\n  u32ArrayToArray,\n  i32ArrayToArray,\n  u64ArrayToArray,\n  i64ArrayToArray,\n  f32ArrayToArray,\n  f64ArrayToArray,\n  acceptUint8ClampedSlice,\n  acceptUint8ClampedSliceAndBufferSlice,\n  convertU32Array,\n  createExternalTypedArray,\n  mutateTypedArray,\n  mutateArraybuffer,\n  receiveAllOptionalObject,\n  objectGetNamedPropertyShouldPerformTypecheck,\n  fnReceivedAliased,\n  ALIAS,\n  appendBuffer,\n  returnNull,\n  returnUndefined,\n  Dog,\n  Bird,\n  Assets,\n  receiveStrictObject,\n  receiveClassOrNumber,\n  JsClassForEither,\n  receiveMutClassOrNumber,\n  getStrFromObject,\n  testSerdeRoundtrip,\n  testSerdeBigNumberPrecision,\n  testSerdeBufferBytes,\n  getBigintJsonValue,\n  createObjWithProperty,\n  receiveObjectOnlyFromJs,\n  dateToNumber,\n  chronoUtcDateToMillis,\n  chronoLocalDateToMillis,\n  chronoDateWithTimezoneToMillis,\n  chronoDateFixtureReturn1,\n  chronoDateFixtureReturn2,\n  derefUint8Array,\n  chronoDateAdd1Minute,\n  bufferPassThrough,\n  arrayBufferPassThrough,\n  JsRepo,\n  JsRemote,\n  CssStyleSheet,\n  CatchOnConstructor,\n  CatchOnConstructor2,\n  asyncReduceBuffer,\n  callbackReturnPromise,\n  callbackReturnPromiseAndSpawn,\n  returnEitherClass,\n  eitherFromOption,\n  eitherFromObjects,\n  overrideIndividualArgOnFunction,\n  overrideIndividualArgOnFunctionWithCbArg,\n  createObjectWithClassField,\n  receiveObjectWithClassField,\n  AnotherClassForEither,\n  receiveDifferentClass,\n  getNumArr,\n  getNestedNumArr,\n  CustomFinalize,\n  plusOne,\n  Width,\n  captureErrorInCallback,\n  bigintFromI128,\n  bigintFromI64,\n  acceptThreadsafeFunction,\n  acceptThreadsafeFunctionFatal,\n  acceptThreadsafeFunctionTupleArgs,\n  promiseInEither,\n  runScript,\n  tsfnReturnPromise,\n  tsfnReturnPromiseTimeout,\n  returnFromSharedCrate,\n  chronoNativeDateTime,\n  chronoNativeDateTimeReturn,\n  throwAsyncError,\n  getModuleFileName,\n  throwSyntaxError,\n  type AliasedStruct,\n  returnObjectOnlyToJs,\n  buildThreadsafeFunctionFromFunction,\n  buildThreadsafeFunctionFromFunctionCalleeHandle,\n  createOptionalExternal,\n  getOptionalExternal,\n  mutateOptionalExternal,\n  panicInAsync,\n  CustomStruct,\n  ClassWithLifetime,\n  uInit8ArrayFromString,\n  callThenOnPromise,\n  callCatchOnPromise,\n  callFinallyOnPromise,\n  createResolvedPromise,\n  createRejectedPromise,\n  StructuredKind,\n  validateStructuredEnum,\n  StructuredKindLowercase,\n  validateStructuredEnumLowercase,\n  createArraybuffer,\n  getBufferSlice,\n  createExternalBufferSlice,\n  createBufferSliceFromCopiedData,\n  Reader,\n  withinAsyncRuntimeIfAvailable,\n  errorMessageContainsNullByte,\n  returnCString,\n  receiveBufferSliceWithLifetime,\n  generateFunctionAndCallIt,\n  getMyVec,\n  setNullByteProperty,\n  getNullByteProperty,\n  receiveBindingVitePluginMeta,\n  createObjectRef,\n  objectWithCApis,\n  getMappingWithHasher,\n  getIndexMappingWithHasher,\n  passSetWithHasherToJs,\n  Rule,\n  callRuleHandler,\n  acceptStream,\n  createReadableStream,\n  createReadableStreamWithObject,\n  createReadableStreamFromClass,\n  spawnThreadInThread,\n  esmResolve,\n  mergeTupleArray,\n  TupleToArray,\n  ClassInArray,\n  getClassFromArray,\n  extendsJavascriptError,\n  shutdownRuntime,\n  callAsyncWithUnknownReturnValue,\n  shorterScope,\n  shorterEscapableScope,\n  tsfnThrowFromJsCallbackContainsTsfn,\n  MyJsNamedClass,\n  JSOnlyMethodsClass,\n  RustOnlyMethodsClass,\n  OriginalRustNameForJsNamedStruct,\n  ComplexClass,\n  createUint8ClampedArrayFromData,\n  arrayBufferFromData,\n  arrayBufferFromExternal,\n  uint8ArrayFromData,\n  createUint8ClampedArrayFromExternal,\n  uint8ArrayFromExternal,\n  Thing,\n  ThingList,\n  createFunction,\n  spawnFutureLifetime,\n  promiseRawReturnClassInstance,\n  ClassReturnInPromise,\n  acceptUntypedTypedArray,\n  defineClass,\n  callbackInSpawn,\n  arrayParams,\n  indexSetToRust,\n  indexSetToJs,\n  intoUtf8,\n  withAbortSignalHandle,\n  createI32ArrayFromExternal,\n  optionalCallbackTypes,\n} from '../index.cjs'\n// import other stuff in `#[napi(module_exports)]`\nimport nativeAddon from '../index.cjs'\n\nimport { test } from './test.framework.js'\n\nconst __dirname = join(fileURLToPath(import.meta.url), '..')\n\nconst Napi4Test = Number(process.versions.napi) >= 4 ? test : test.skip\n\ntest.after(() => {\n  shutdownRuntime()\n})\n\ntest('export const', (t) => {\n  t.is(DEFAULT_COST, 12)\n})\n\ntest('number', (t) => {\n  t.is(add(1, 2), 3)\n  t.is(fibonacci(5), 5)\n\n  t.throws(\n    // @ts-expect-error\n    () => fibonacci(''),\n    void 0,\n    'Expect value to be Number, but received String',\n  )\n})\n\ntest('string', (t) => {\n  t.true(contains('hello', 'ell'))\n  t.false(contains('John', 'jn'))\n\n  t.is(concatStr('æ¶½¾DEL'), 'æ¶½¾DEL + Rust 🦀 string!')\n  t.is(concatLatin1('æ¶½¾DEL'), 'æ¶½¾DEL + Rust 🦀 string!')\n  t.is(\n    concatUtf16('JavaScript 🌳 你好 napi'),\n    'JavaScript 🌳 你好 napi + Rust 🦀 string!',\n  )\n  t.is(\n    roundtripStr('what up?!\\u0000after the NULL'),\n    'what up?!\\u0000after the NULL',\n  )\n  t.is(returnCString(), 'Hello from C string!')\n  t.is(createZeroCopyUtf16String(), 'abc')\n  t.is(createZeroCopyLatin1String(), 'Hello')\n  t.is(createExternalUtf16String(), 'External UTF16')\n  t.is(createExternalLatin1String(), 'External Latin1')\n  t.is(createStaticLatin1String(), 'Static Latin1 string')\n  t.is(createStaticUtf16String(), 'Static UTF16')\n  t.is(intoUtf8('Hello'), 'Hello')\n})\n\ntest('JsStringLatin1::from_external tests', (t) => {\n  // Test with empty string\n  t.is(createExternalLatin1Empty(), '')\n\n  // Test with short string (likely to be copied by V8)\n  t.is(createExternalLatin1Short(), 'Hi')\n\n  // Test with long string (more likely to remain external)\n  t.is(\n    createExternalLatin1Long(),\n    'This is a much longer string that is more likely to be kept as an external string by V8 rather than being copied',\n  )\n\n  // Test with actual Latin-1 extended characters\n  // The string contains: \"Hello ÀÁÂ ñòó\"\n  const latin1Result = createExternalLatin1WithLatin1Chars()\n  t.is(latin1Result.length, 13)\n  t.true(latin1Result.includes('Hello'))\n\n  // Test with custom finalize hint\n  t.is(createExternalLatin1CustomFinalize(), 'Custom finalize test')\n\n  // Test Latin1 methods\n  const methodsTest = testLatin1Methods('Test string')\n  t.is(methodsTest.length, 11)\n  t.is(methodsTest.isEmpty, false)\n  if (!process.env.WASI_TEST) {\n    t.deepEqual(methodsTest.asSlice, Array.from(Buffer.from('Test string')))\n  }\n\n  // Test with empty input\n  t.throws(() => testLatin1Methods(''), {\n    message: 'Cannot create external string from empty data',\n    code: 'InvalidArg',\n  })\n})\n\ntest('array', (t) => {\n  t.deepEqual(getNums(), [1, 1, 2, 3, 5, 8])\n  t.deepEqual(getWords(), ['foo', 'bar'])\n  t.deepEqual(getTuple([1, 'test', 2]), 3)\n\n  t.is(sumNums([1, 2, 3, 4, 5]), 15)\n  t.deepEqual(getNumArr(), [1, 2])\n  t.deepEqual(getNestedNumArr(), [[[1]], [[1]]])\n})\n\ntest('map', (t) => {\n  t.deepEqual(getMapping(), { a: 101, b: 102, '\\0c': 103 })\n  t.deepEqual(getMappingWithHasher(), { a: 101, b: 102 })\n  t.is(sumMapping({ a: 101, b: 102, '\\0c': 103 }), 306)\n  t.deepEqual(getBtreeMapping(), { a: 101, b: 102, '\\0c': 103 })\n  t.is(sumBtreeMapping({ a: 101, b: 102, '\\0c': 103 }), 306)\n  t.deepEqual(getIndexMapping(), { a: 101, b: 102, '\\0c': 103 })\n  t.deepEqual(getIndexMappingWithHasher(), { a: 101, b: 102 })\n  t.is(sumIndexMapping({ a: 101, b: 102, '\\0c': 103 }), 306)\n  t.deepEqual(indexmapPassthrough({ a: 101, b: 102, '\\0c': 103 }), {\n    a: 101,\n    b: 102,\n    '\\0c': 103,\n  })\n})\n\ntest('set', (t) => {\n  t.notThrows(() => {\n    passSetToRust(new Set(['a', 'b', 'c']))\n    btreeSetToRust(new Set(['a', 'b', 'c']))\n    indexSetToRust(new Set(['a', 'b', 'c']))\n  })\n  t.deepEqual(Array.from(passSetToJs()).sort(), ['a', 'b', 'c'])\n  t.deepEqual(Array.from(passSetWithHasherToJs()).sort(), ['a', 'b', 'c'])\n  t.deepEqual(Array.from(btreeSetToJs()).sort(), ['a', 'b', 'c'])\n  t.deepEqual(Array.from(indexSetToJs()), ['a', 'b', 'c', 'd'])\n})\n\ntest('enum', (t) => {\n  t.deepEqual([Kind.Dog, Kind.Cat, Kind.Duck], [0, 1, 2])\n  t.is(enumToI32(CustomNumEnum.Eight), 8)\n})\n\ntest('structured enum', (t) => {\n  const hello: StructuredKind = {\n    type2: 'Hello',\n  }\n  const greeting: StructuredKind = {\n    type2: 'Greeting',\n    name: 'Napi-rs',\n  }\n  const birthday: StructuredKind = {\n    type2: 'Birthday',\n    name: 'Napi-rs',\n    age: 10,\n  }\n  const tuple: StructuredKind = {\n    type2: 'Tuple',\n    field0: 1,\n    field1: 2,\n  }\n  t.deepEqual(hello, validateStructuredEnum(hello))\n  t.deepEqual(greeting, validateStructuredEnum(greeting))\n  t.deepEqual(birthday, validateStructuredEnum(birthday))\n  t.deepEqual(tuple, validateStructuredEnum(tuple))\n  t.throws(() => validateStructuredEnum({ type2: 'unknown' } as any))\n  t.throws(() => validateStructuredEnum({ type2: 'Greeting' } as any))\n\n  const hello2: StructuredKindLowercase = {\n    type: 'hello',\n  }\n  const greeting2: StructuredKindLowercase = {\n    type: 'greeting',\n    name: 'Napi-rs',\n  }\n  const birthday2: StructuredKindLowercase = {\n    type: 'birthday',\n    name: 'Napi-rs',\n    age: 10,\n  }\n  const tuple2: StructuredKindLowercase = {\n    type: 'tuple',\n    field0: 1,\n    field1: 2,\n  }\n  t.deepEqual(hello2, validateStructuredEnumLowercase(hello2))\n  t.deepEqual(greeting2, validateStructuredEnumLowercase(greeting2))\n  t.deepEqual(birthday2, validateStructuredEnumLowercase(birthday2))\n  t.deepEqual(tuple2, validateStructuredEnumLowercase(tuple2))\n  t.throws(() => validateStructuredEnumLowercase({ type: 'unknown' } as any))\n  t.throws(() => validateStructuredEnumLowercase({ type: 'greeting' } as any))\n})\n\ntest('function call', async (t) => {\n  t.is(\n    call0((...args) => {\n      console.error(args)\n      t.is(args.length, 0)\n      return 42\n    }),\n    42,\n  )\n  t.is(\n    call1((a) => a + 10, 42),\n    52,\n  )\n  t.is(\n    call2((a, b) => a + b, 42, 10),\n    52,\n  )\n  const ctx = new Animal(Kind.Dog, '旺财')\n  apply0(ctx, function (this: Animal) {\n    this.name = '可乐'\n  })\n  t.is(ctx.name, '可乐')\n  const ctx2 = new Animal(Kind.Dog, '旺财')\n  apply1(\n    ctx2,\n    function (this: Animal, name: string) {\n      this.name = name\n    },\n    '可乐',\n  )\n  t.is(ctx2.name, '可乐')\n  t.is(\n    callFunction(() => 42),\n    42,\n  )\n  t.is(\n    callFunctionWithArg((a, b) => a + b, 42, 10),\n    52,\n  )\n  const ctx3 = new Animal(Kind.Dog, '旺财')\n  callFunctionWithArgAndCtx(\n    ctx3,\n    function (this: Animal, name: string) {\n      this.name = name\n    },\n    '可乐',\n  )\n  t.is(ctx3.name, '可乐')\n  const cbSpy = spy()\n  await createReferenceOnFunction(cbSpy)\n  t.is(cbSpy.callCount, 1)\n  t.is(\n    referenceAsCallback((a, b) => a + b, 42, 10),\n    52,\n  )\n  const fn = createFunction()\n  t.is(fn(42), 242)\n  // Verify the generated types\n  t.notThrows(() => optionalCallbackTypes())\n  t.notThrows(() => optionalCallbackTypes((arg) => arg))\n})\n\ntest('class', (t) => {\n  const dog = new Animal(Kind.Dog, '旺财')\n\n  t.is(dog.name, '旺财')\n  t.is(dog.kind, Kind.Dog)\n  t.is(dog.whoami(), 'Dog: 旺财')\n\n  t.notThrows(() => {\n    const rawMethod = dog.whoami\n    dog.whoami = function (...args) {\n      return rawMethod.apply(this, args)\n    }\n  })\n\n  dog.name = '可乐'\n  t.is(dog.name, '可乐')\n  t.deepEqual(dog.returnOtherClass(), new Dog('Doge'))\n  t.deepEqual(dog.returnOtherClassWithCustomConstructor(), new Bird('parrot'))\n  t.is(\n    dog.overrideIndividualArgOnMethod('Jafar', { n: 'Iago' }).name,\n    'Jafar-Iago',\n  )\n  t.is(dog.returnOtherClassWithCustomConstructor().getCount(), 1234)\n  t.is(dog.type, Kind.Dog)\n  dog.type = Kind.Cat\n  t.is(dog.type, Kind.Cat)\n  const assets = new Assets()\n  t.is(assets.get(1)?.filePath, 1)\n  const turtle = NinjaTurtle.newRaph()\n  t.is(turtle.returnThis(), turtle)\n  t.is(NinjaTurtle.isInstanceOf(turtle), true)\n  // Inject this to function\n  const width = new Width(1)\n  t.is(plusOne.call(width), 2)\n  t.throws(() => {\n    // @ts-expect-error\n    plusOne.call('')\n  })\n\n  t.notThrows(() => {\n    new CatchOnConstructor()\n  })\n\n  const classWithLifetime = new ClassWithLifetime()\n  t.deepEqual(classWithLifetime.getName(), 'alie')\n  t.deepEqual(Object.keys(classWithLifetime), ['inner'])\n\n  if (!process.env.TEST_ZIG_CROSS) {\n    t.throws(\n      () => {\n        new CatchOnConstructor2()\n      },\n      (() =>\n        process.env.WASI_TEST\n          ? undefined\n          : {\n              message: 'CatchOnConstructor2 panic',\n            })(),\n    )\n  }\n})\n\ntest('class with js_name', (t) => {\n  // Test class instantiation and basic functionality\n  const instance = new MyJsNamedClass('test_value')\n  t.is(instance.getValue(), 'test_value')\n  t.is(instance.multiplyValue(3), 'test_valuetest_valuetest_value')\n\n  // Test type alias compatibility - OriginalRustNameForJsNamedStruct should be assignable from MyJsNamedClass\n  const instanceForTypeCheck: OriginalRustNameForJsNamedStruct =\n    new MyJsNamedClass('type_test')\n  t.is(\n    instanceForTypeCheck.getValue(),\n    'type_test',\n    'Type alias OriginalRustNameForJsNamedStruct should be assignable from MyJsNamedClass',\n  )\n  t.is(\n    instanceForTypeCheck.multiplyValue(2),\n    'type_testtype_test',\n    'Methods should be callable via type alias',\n  )\n\n  // Test edge cases\n  const emptyInstance = new MyJsNamedClass('')\n  t.is(emptyInstance.getValue(), '', 'Should handle empty strings')\n  t.is(emptyInstance.multiplyValue(0), '', 'Should handle zero multiplication')\n\n  // Test with special characters\n  const specialInstance = new MyJsNamedClass('hello 🚀 world')\n  t.is(\n    specialInstance.getValue(),\n    'hello 🚀 world',\n    'Should handle unicode characters',\n  )\n  t.is(\n    specialInstance.multiplyValue(2),\n    'hello 🚀 worldhello 🚀 world',\n    'Should multiply unicode strings correctly',\n  )\n})\n\ntest('struct with js_name and methods only (no constructor)', (t) => {\n  // Test that structs with js_name but no constructor still have their methods in type definitions\n  // This was a bug where methods would disappear if there was no constructor/factory method\n\n  // The fact that this test compiles successfully means the type definitions are correct\n  // We verify that:\n  // 1. JSOnlyMethodsClass is the exported class name (not RustOnlyMethodsClass)\n  // 2. RustOnlyMethodsClass is a type alias for JSOnlyMethodsClass\n  // 3. Both have the methods processData() and getLength()\n\n  // Test type compatibility - this will fail to compile if types are wrong\n  const testTypeCompatibility = (instance: JSOnlyMethodsClass) => {\n    // These assignments will cause TypeScript compilation errors if methods are missing\n    const processDataFn: () => string = instance.processData\n    const getLengthFn: () => number = instance.getLength\n    return { processDataFn, getLengthFn }\n  }\n\n  // Test type alias compatibility\n  const testAliasCompatibility = (instance: RustOnlyMethodsClass) => {\n    const processDataFn: () => string = instance.processData\n    const getLengthFn: () => number = instance.getLength\n    return { processDataFn, getLengthFn }\n  }\n\n  // Test that RustOnlyMethodsClass is assignable to JSOnlyMethodsClass\n  const mockInstance = { data: 'test' } as JSOnlyMethodsClass\n  const aliasInstance: RustOnlyMethodsClass = mockInstance\n\n  // If we get here, the types compiled successfully\n  t.pass(\n    'Type definitions are correct - js_name struct with methods only works properly',\n  )\n\n  // Verify we can call the test functions without compilation errors\n  t.notThrows(\n    () => testTypeCompatibility(mockInstance),\n    'JSOnlyMethodsClass methods should be accessible',\n  )\n  t.notThrows(\n    () => testAliasCompatibility(aliasInstance),\n    'RustOnlyMethodsClass alias methods should be accessible',\n  )\n})\n\ntest('define class', (t) => {\n  const DynamicRustClass = defineClass()\n  const instance = new DynamicRustClass(42)\n  t.is(instance.rustMethod(), 42)\n})\n\ntest('async self in class', async (t) => {\n  const b = new Bird('foo')\n  t.is(await b.getNameAsync(), 'foo')\n})\n\ntest('class factory', (t) => {\n  const duck = ClassWithFactory.withName('Default')\n  t.is(duck.name, 'Default')\n\n  const ret = duck.setName('D')\n  t.is(ret.name, 'D')\n  t.is(ret, duck)\n\n  duck.name = '周黑鸭'\n  t.is(duck.name, '周黑鸭')\n\n  const doge = Animal.withKind(Kind.Dog)\n  t.is(doge.name, 'Default')\n\n  doge.name = '旺财'\n  t.is(doge.name, '旺财')\n\n  const error = t.throws(() => new ClassWithFactory())\n  t.true(\n    error?.message.startsWith(\n      'Class contains no `constructor`, can not new it!',\n    ),\n  )\n})\n\ntest('async class factory', async (t) => {\n  const instance = await ClassWithFactory.with4Name('foo')\n  t.is(instance.name, 'foo-4')\n  const instance2 = await ClassWithFactory.with4NameResult('foo')\n  t.is(instance2.name, 'foo-4')\n})\n\ntest('class constructor return Result', (t) => {\n  const c = new Context()\n  t.is(c.method(), 'not empty')\n})\n\ntest('class default field is TypedArray', (t) => {\n  const c = new Context()\n  t.deepEqual(c.buffer, new Uint8Array([0, 1, 2, 3]))\n  const fixture = new Uint8Array([0, 1, 2, 3, 4, 5, 6])\n  const c2 = Context.withBuffer(fixture)\n  t.is(c2.buffer, fixture)\n})\n\ntest('class Factory return Result', (t) => {\n  const c = Context.withData('not empty')\n  t.is(c.method(), 'not empty')\n})\n\ntest('class in object field', (t) => {\n  const obj = createObjectWithClassField()\n  t.is(obj.bird.name, 'Carolyn')\n  t.is(receiveObjectWithClassField(obj), obj.bird)\n})\n\ntest('custom finalize class', (t) => {\n  t.notThrows(() => new CustomFinalize(200, 200))\n})\n\ntest('should be able to create object reference and shared reference', (t) => {\n  const repo = new JsRepo('.')\n  t.is(repo.remote().name(), 'origin')\n  t.is(new JsRemote(repo).name(), 'origin')\n})\n\ntest('should be able to into_reference', (t) => {\n  const rules = ['body: { color: red }', 'div: { color: blue }']\n  const sheet = new CssStyleSheet('test.css', rules)\n  t.is(sheet.rules, sheet.rules)\n  t.deepEqual(sheet.rules.getRules(), rules)\n  t.is(sheet.rules.parentStyleSheet, sheet)\n  t.is(sheet.rules.name, 'test.css')\n  const anotherStyleSheet = sheet.anotherCssStyleSheet()\n  t.is(anotherStyleSheet.rules, sheet.rules)\n})\n\ntest('callback', (t) => {\n  if (!process.env.WASI_TEST) {\n    getCwd((cwd) => {\n      t.is(cwd, process.cwd())\n    })\n  }\n\n  t.throws(\n    // @ts-expect-error\n    () => getCwd(),\n    void 0,\n    'Expect value to be Function, but received Undefined',\n  )\n\n  readFile((err, content) => {\n    t.is(err, undefined)\n    t.is(content, 'hello world')\n  })\n\n  captureErrorInCallback(\n    () => {\n      throw new Error('Testing')\n    },\n    (err) => {\n      t.is((err as Error).message, 'Testing')\n    },\n  )\n})\n\nNapi4Test('callback function return Promise', async (t) => {\n  const cbSpy = spy()\n  await callbackReturnPromise<string>(() => '1', spy)\n  t.is(cbSpy.callCount, 0)\n  await callbackReturnPromise(\n    () => Promise.resolve('42'),\n    (err, res) => {\n      t.is(err, null)\n      cbSpy(res)\n    },\n  )\n  t.is(cbSpy.callCount, 1)\n  t.deepEqual(cbSpy.args, [['42']])\n})\n\nNapi4Test('callback function return Promise and spawn', async (t) => {\n  const finalReturn = await callbackReturnPromiseAndSpawn((input) =>\n    Promise.resolve(`${input} world`),\n  )\n  t.is(finalReturn, 'Hello world 😼')\n})\n\ntest('promise', async (t) => {\n  const res = await callThenOnPromise(Promise.resolve(1))\n  t.is(res, '1')\n  const cat = await callCatchOnPromise(Promise.reject('cat'))\n  t.is(cat, 'cat')\n  const spy = Sinon.spy()\n  await callFinallyOnPromise(Promise.resolve(1), spy)\n  t.true(spy.calledOnce)\n})\n\ntest('PromiseRaw::resolve', async (t) => {\n  const result = await createResolvedPromise(42)\n  t.is(result, 42)\n})\n\ntest('PromiseRaw::reject', async (t) => {\n  await t.throwsAsync(() => createRejectedPromise('test error message'), {\n    message: 'test error message',\n  })\n})\n\ntest('object', (t) => {\n  t.deepEqual(listObjKeys({ name: 'John Doe', age: 20 }), ['name', 'age'])\n  t.deepEqual(createObj(), { test: 1 })\n  t.throws(\n    () =>\n      objectGetNamedPropertyShouldPerformTypecheck({\n        // @ts-expect-error\n        foo: '2',\n        bar: '3',\n      }),\n    {\n      message: `Object property 'foo' type mismatch. Expect value to be Number, but received String`,\n      code: 'InvalidArg',\n    },\n  )\n  t.throws(\n    () =>\n      objectGetNamedPropertyShouldPerformTypecheck({\n        foo: 2,\n        // @ts-expect-error\n        bar: 3,\n      }),\n    {\n      message: `Object property 'bar' type mismatch. Expect value to be String, but received Number`,\n      code: 'InvalidArg',\n    },\n  )\n  t.notThrows(() =>\n    objectGetNamedPropertyShouldPerformTypecheck({\n      foo: 2,\n      bar: '3',\n    }),\n  )\n  t.deepEqual(returnObjectOnlyToJs(), {\n    name: 42,\n    dependencies: {\n      '@napi-rs/cli': '^3.0.0',\n      rollup: '^4.0.0',\n    },\n  })\n  t.throws(\n    () =>\n      receiveAllOptionalObject({\n        // @ts-expect-error\n        name: 1,\n      }),\n    {\n      code: 'StringExpected',\n      message:\n        'Failed to convert JavaScript value `Number 1 ` into rust type `String` on AllOptionalObject.name',\n    },\n  )\n\n  t.is(receiveBufferSliceWithLifetime({ data: 'foo' }), 3)\n  t.is(receiveBufferSliceWithLifetime({ data: Buffer.from('barz') }), 4)\n\n  const data = generateFunctionAndCallIt()\n  t.is(data.handle(), 1)\n\n  const objNull: any = {}\n  setNullByteProperty(objNull)\n  t.is(objNull['\\0virtual'], 'test')\n  t.is(getNullByteProperty(objNull), 'test')\n  t.notThrows(() =>\n    receiveBindingVitePluginMeta({\n      'vite:import-glob': {\n        isSubImportsPattern: true,\n      },\n    }),\n  )\n  const objRef = createObjectRef()\n  // @ts-expect-error\n  t.is(objRef.test, 1)\n\n  t.notThrows(() => {\n    const obj = objectWithCApis()\n    // @ts-expect-error\n    t.is(obj.test(), 42)\n  })\n})\n\ntest('get str from object', (t) => {\n  t.notThrows(() => getStrFromObject())\n})\n\ntest('create object from Property', (t) => {\n  const obj = createObjWithProperty()\n  t.true(obj.value instanceof ArrayBuffer)\n  t.is(obj.getter, 42)\n})\n\ntest('global', (t) => {\n  t.is(getGlobal(), typeof global === 'undefined' ? globalThis : global)\n})\n\ntest('get undefined', (t) => {\n  for (const _ of Array.from({ length: 100 })) {\n    t.is(getUndefined(), undefined)\n  }\n})\n\ntest('get null', (t) => {\n  for (const _ of Array.from({ length: 100 })) {\n    t.is(getNull(), null)\n  }\n})\n\ntest('return Null', (t) => {\n  t.is(returnNull(), null)\n})\n\ntest('return Undefined', (t) => {\n  t.is(returnUndefined(), undefined)\n})\n\ntest('pass symbol in', (t) => {\n  const sym = Symbol('test')\n  const obj = setSymbolInObj(sym)\n  // @ts-expect-error\n  t.is(obj[sym], 'a symbol')\n})\n\ntest('create symbol', (t) => {\n  t.is(createSymbol().toString(), 'Symbol(a symbol)')\n  const symRef = createSymbolRef('test')\n  t.is(symRef.toString(), 'Symbol(test)')\n})\n\ntest('Option', (t) => {\n  t.is(mapOption(null), null)\n  t.is(mapOption(3), 4)\n})\n\ntest('Result', (t) => {\n  t.throws(() => throwError(), void 0, 'Manual Error')\n  const errorWithCause = t.throws(() => throwErrorWithCause())\n  t.is(errorWithCause?.message, 'Manual Error')\n  t.is((errorWithCause?.cause as Error)?.message, 'Inner Error')\n  if (!process.env.SKIP_UNWIND_TEST) {\n    t.throws(() => panic(), void 0, `Don't panic`)\n  }\n  t.throws(() => errorMessageContainsNullByte('\\u001a\\u0000'))\n\n  const errors = jsErrorCallback(\n    new Error('JS Error', { cause: new Error('cause') }),\n  )\n  t.deepEqual(errors[0]!.message, 'JS Error')\n  if (!process.env.WASI_TEST) {\n    t.deepEqual((errors[0]!.cause as Error).message, 'cause')\n  }\n  t.deepEqual(errors[1]!.message, 'JS Error')\n  t.deepEqual((errors[1]!.cause as Error).message, 'cause')\n\n  const [nestedError] = jsErrorCallback(\n    new Error('error1', {\n      cause: new Error('error2', {\n        cause: new Error('error3', {\n          cause: new Error('error4'),\n        }),\n      }),\n    }),\n  )\n  let error = nestedError\n  if (!process.env.WASI_TEST) {\n    for (let i = 0; i < 4; i++) {\n      t.deepEqual(error!.message, `error${i + 1}`)\n      error = error!.cause as Error\n    }\n  }\n\n  // nullish causes should not be reconstructed as nested errors\n  const undefinedCauseError = new Error('undefined cause')\n  undefinedCauseError.cause = undefined\n  const [errWithUndefinedCause] = jsErrorCallback(undefinedCauseError)\n  t.deepEqual(errWithUndefinedCause!.message, 'undefined cause')\n  t.is(errWithUndefinedCause!.cause, undefined)\n\n  const nullCauseError = new Error('null cause')\n  nullCauseError.cause = null\n  const [errWithNullCause] = jsErrorCallback(nullCauseError)\n  t.deepEqual(errWithNullCause!.message, 'null cause')\n  // errWithNullCause is the original JS error (via napi_ref), so .cause stays null\n  t.is(errWithNullCause!.cause, null)\n\n  // non-nullish cause should still be preserved\n  const [errWithRealCause] = jsErrorCallback(\n    new Error('outer', { cause: new Error('inner') }),\n  )\n  t.deepEqual(errWithRealCause!.message, 'outer')\n  if (!process.env.WASI_TEST) {\n    t.deepEqual((errWithRealCause!.cause as Error).message, 'inner')\n  }\n})\n\ntest('Async error with stack trace', async (t) => {\n  const err = await t.throwsAsync(() => throwAsyncError())\n  t.not(err?.stack, undefined)\n  t.deepEqual(err!.message, 'Async Error')\n  if (!process.env.WASI_TEST) {\n    t.regex(err!.stack!, /.+at .+values\\.spec\\.(ts|js):\\d+:\\d+.+/gm)\n  }\n})\n\ntest('custom status code in Error', (t) => {\n  t.throws(() => customStatusCode(), {\n    code: 'Panic',\n  })\n  t.throws(() => CustomStruct.customStatusCodeForFactory(), {\n    code: 'Panic',\n  })\n  t.throws(() => new CustomStruct(), {\n    code: 'Panic',\n  })\n})\n\ntest('function ts type override', (t) => {\n  // @ts-expect-error\n  t.deepEqual(tsRename({ foo: 1, bar: 2, baz: 2 }), ['foo', 'bar', 'baz'])\n})\n\ntest('function individual ts arg type override', (t) => {\n  t.is(\n    overrideIndividualArgOnFunction('someStr', () => 'anotherStr', 42),\n    'oia: someStr-42-anotherStr',\n  )\n  t.deepEqual(\n    overrideIndividualArgOnFunctionWithCbArg(\n      (town, opt) => `im: ${town}-${opt}`,\n      89,\n    ),\n    'im: World(89)-null',\n  )\n})\n\ntest('option object', (t) => {\n  t.notThrows(() => receiveAllOptionalObject())\n  t.notThrows(() => receiveAllOptionalObject({}))\n})\n\ntest('should throw if object type is not matched', (t) => {\n  // @ts-expect-error\n  const err1 = t.throws(() => receiveStrictObject({ name: 1 }))\n  t.is(\n    err1?.message,\n    'Failed to convert JavaScript value `Number 1 ` into rust type `String` on StrictObject.name',\n  )\n  // @ts-expect-error\n  const err2 = t.throws(() => receiveStrictObject({ bar: 1 }))\n  t.is(err2!.message, 'Missing field `name`')\n})\n\ntest('aliased rust struct and enum', (t) => {\n  const a = ALIAS.A\n  const b: AliasedStruct = {\n    a,\n    b: 1,\n  }\n  t.notThrows(() => fnReceivedAliased(b, ALIAS.B))\n})\n\ntest('serde-json', (t) => {\n  if (process.env.WASI_TEST || process.platform === 'freebsd') {\n    t.pass()\n    return\n  }\n  const packageJson = readPackageJson()\n  t.is(packageJson.name, '@examples/napi')\n  t.is(packageJson.version, '0.0.0')\n  t.snapshot(Object.keys(packageJson.devDependencies!).sort())\n\n  t.is(getPackageJsonName(packageJson), '@examples/napi')\n})\n\ntest('serde-json-ref', (t) => {\n  if (process.env.WASI_TEST || process.platform === 'freebsd') {\n    t.pass()\n    return\n  }\n  const reader = new PackageJsonReader()\n  const packageJson = reader.read()\n  t.is(packageJson.name, '@examples/napi')\n  t.is(packageJson.version, '0.0.0')\n})\n\ntest('serde-roundtrip', (t) => {\n  t.is(testSerdeRoundtrip(1), 1)\n  t.is(testSerdeRoundtrip(1.2), 1.2)\n  t.is(testSerdeRoundtrip(-1), -1)\n\n  t.deepEqual(testSerdeRoundtrip([1, 1.2, -1]), [1, 1.2, -1])\n  t.deepEqual(testSerdeRoundtrip({ a: 1, b: 1.2, c: -1 }), {\n    a: 1,\n    b: 1.2,\n    c: -1,\n  })\n  t.throws(() => testSerdeRoundtrip(NaN))\n\n  t.is(testSerdeRoundtrip(null), null)\n\n  let err = t.throws(() => testSerdeRoundtrip(undefined))\n  t.is(err?.message, 'undefined cannot be represented as a serde_json::Value')\n\n  err = t.throws(() => testSerdeRoundtrip(() => {}))\n  t.is(\n    err!.message,\n    'JS functions cannot be represented as a serde_json::Value',\n  )\n\n  err = t.throws(() => testSerdeRoundtrip(Symbol.for('foo')))\n  t.is(err!.message, 'JS symbols cannot be represented as a serde_json::Value')\n})\n\ntest('serde-large-number-precision', (t) => {\n  t.is(testSerdeBigNumberPrecision('12345').number, 12345)\n  t.is(\n    testSerdeBigNumberPrecision('123456789012345678901234567890').number,\n    1.2345678901234568e29,\n  )\n  t.is(\n    testSerdeBigNumberPrecision('123456789012345678901234567890.123456789')\n      .number,\n    1.2345678901234568e29,\n  )\n  t.is(\n    testSerdeBigNumberPrecision('109775245175819965').number.toString(),\n    '109775245175819965',\n  )\n})\n\ntest('serde-buffer-bytes', (t) => {\n  t.is(testSerdeBufferBytes({ code: new Uint8Array([1, 2, 3]) }), 3n)\n  t.is(testSerdeBufferBytes({ code: new Uint8Array(0) }), 0n)\n\n  t.is(testSerdeBufferBytes({ code: Buffer.from([1, 2, 3]) }), 3n)\n  t.is(testSerdeBufferBytes({ code: Buffer.alloc(0) }), 0n)\n  t.is(testSerdeBufferBytes({ code: new ArrayBuffer(10) }), 10n)\n  t.is(testSerdeBufferBytes({ code: new ArrayBuffer(0) }), 0n)\n})\n\ntest('get bigint json value', (t) => {\n  t.notThrows(() => {\n    getBigintJsonValue(-1n)\n    getBigintJsonValue(1n)\n    getBigintJsonValue(18446744073709551620n)\n  })\n})\n\ntest('buffer', (t) => {\n  let buf = getBuffer()\n  t.is(buf.toString('utf-8'), 'Hello world')\n  buf = appendBuffer(buf)\n  t.is(buf.toString('utf-8'), 'Hello world!')\n  t.is(getBufferSlice().toString('utf-8'), 'Hello world')\n  t.is(createExternalBufferSlice().toString('utf-8'), 'Hello world')\n  t.is(createBufferSliceFromCopiedData().toString('utf-8'), 'Hello world')\n\n  const a = getEmptyBuffer()\n  const b = getEmptyBuffer()\n  t.is(a.toString(), '')\n  t.is(b.toString(), '')\n\n  t.true(Array.isArray(asyncBufferToArray(Buffer.from([1, 2, 3]).buffer)))\n})\n\ntest('Return BufferSlice with lifetime', (t) => {\n  const reader = new Reader()\n  const reader2 = new Reader()\n  t.deepEqual(reader.read(), Buffer.from('Hello world'))\n  t.deepEqual(reader2.read(), Buffer.from('Hello world'))\n})\n\ntest('Transparent', (t) => {\n  const v = getMyVec()\n  t.deepEqual(v, [42, 'a string'])\n})\n\ntest('TypedArray', (t) => {\n  t.is(acceptSlice(new Uint8Array([1, 2, 3])), 3n)\n  t.deepEqual(u8ArrayToArray(new Uint8Array([1, 2, 3])), [1, 2, 3])\n  t.deepEqual(i8ArrayToArray(new Int8Array([1, 2, 3])), [1, 2, 3])\n  t.deepEqual(u16ArrayToArray(new Uint16Array([1, 2, 3])), [1, 2, 3])\n  t.deepEqual(i16ArrayToArray(new Int16Array([1, 2, 3])), [1, 2, 3])\n  t.deepEqual(u32ArrayToArray(new Uint32Array([1, 2, 3])), [1, 2, 3])\n  t.deepEqual(i32ArrayToArray(new Int32Array([1, 2, 3])), [1, 2, 3])\n  t.deepEqual(u64ArrayToArray(new BigUint64Array([1n, 2n, 3n])), [1n, 2n, 3n])\n  t.deepEqual(i64ArrayToArray(new BigInt64Array([1n, 2n, 3n])), [1, 2, 3])\n  t.deepEqual(f32ArrayToArray(new Float32Array([1, 2, 3])), [1, 2, 3])\n  t.deepEqual(f64ArrayToArray(new Float64Array([1, 2, 3])), [1, 2, 3])\n\n  const bird = new Bird('Carolyn')\n\n  t.is(bird.acceptSliceMethod(new Uint8Array([1, 2, 3])), 3)\n\n  t.is(acceptUint8ClampedSlice(new Uint8ClampedArray([1, 2, 3])), 3n)\n  t.is(\n    acceptUint8ClampedSliceAndBufferSlice(\n      Buffer.from([1, 2, 3]),\n      new Uint8ClampedArray([1, 2, 3]),\n    ),\n    6n,\n  )\n})\n\ntest('emptybuffer', (t) => {\n  let buf = new ArrayBuffer(0)\n  t.is(acceptArraybuffer(buf), 0n)\n})\n\ntest('reset empty buffer', (t) => {\n  const empty = getEmptyBuffer()\n\n  const shared = new ArrayBuffer(0)\n  const buffer = Buffer.from(shared)\n  t.notThrows(() => {\n    buffer.set(empty)\n  })\n})\n\ntest('empty typed array', (t) => {\n  t.notThrows(() => {\n    derefUint8Array(getEmptyTypedArray(), new Uint8ClampedArray([]))\n  })\n})\n\ntest('convert typedarray to vec', (t) => {\n  const input = new Uint32Array([1, 2, 3, 4, 5])\n  t.deepEqual(convertU32Array(input), Array.from(input))\n})\n\ntest('create external TypedArray', (t) => {\n  t.deepEqual(createExternalTypedArray(), new Uint32Array([1, 2, 3, 4, 5]))\n  t.deepEqual(\n    createI32ArrayFromExternal(),\n    new Int32Array([-1, -2, 30000, -40, 5]),\n  )\n})\n\ntest('typed array creation', (t) => {\n  t.deepEqual(\n    createUint8ClampedArrayFromData(),\n    new Uint8ClampedArray(Buffer.from('Hello world')),\n  )\n  t.deepEqual(\n    createUint8ClampedArrayFromExternal(),\n    new Uint8ClampedArray(Buffer.from('Hello world')),\n  )\n  t.deepEqual(Buffer.from(arrayBufferFromData()), Buffer.from('Hello world'))\n  t.deepEqual(\n    Buffer.from(arrayBufferFromExternal()),\n    Buffer.from('Hello world from external'),\n  )\n  t.deepEqual(uint8ArrayFromData(), new Uint8Array(Buffer.from('Hello world')))\n  t.deepEqual(\n    uint8ArrayFromExternal(),\n    new Uint8Array(Buffer.from('Hello world')),\n  )\n})\n\ntest('mutate TypedArray', (t) => {\n  if (process.env.WASI_TEST) {\n    t.pass()\n    return\n  }\n  const input = new Float32Array([1, 2, 3, 4, 5])\n  mutateTypedArray(input)\n  t.deepEqual(input, new Float32Array([2.0, 4.0, 6.0, 8.0, 10.0]))\n})\n\ntest('mutate ArrayBuffer', (t) => {\n  if (process.env.WASI_TEST) {\n    t.pass()\n    return\n  }\n  const input = new ArrayBuffer(5)\n  const view = new Uint8Array(input)\n  view[0] = 1\n  view[1] = 2\n  view[2] = 3\n  view[3] = 4\n  view[4] = 5\n  mutateArraybuffer(input)\n  t.deepEqual(view, new Uint8Array([2, 4, 6, 8, 10]))\n})\n\ntest('deref uint8 array', (t) => {\n  t.is(\n    derefUint8Array(new Uint8Array([1, 2]), new Uint8ClampedArray([3, 4])),\n    4,\n  )\n})\n\ntest('accept untyped typed array', (t) => {\n  t.is(acceptUntypedTypedArray(new Uint8Array([1, 2, 3])), 3n)\n})\n\ntest('async', async (t) => {\n  if (process.env.WASI_TEST) {\n    t.pass()\n    return\n  }\n  const bufPromise = readFileAsync(join(__dirname, '../package.json'))\n  await t.notThrowsAsync(bufPromise)\n  const buf = await bufPromise\n  const { name } = JSON.parse(buf.toString())\n  t.is(name, '@examples/napi')\n\n  await t.throwsAsync(() => readFileAsync('some_nonexist_path.file'))\n})\n\ntest('within async runtime', (t) => {\n  t.notThrows(() => withinAsyncRuntimeIfAvailable())\n})\n\ntest('panic in async fn', async (t) => {\n  if (!process.env.SKIP_UNWIND_TEST && !process.env.WASI_TEST) {\n    await t.throwsAsync(() => panicInAsync(), {\n      message: 'panic in async function',\n    })\n  } else {\n    t.pass('no unwind runtime')\n  }\n})\n\ntest('async move', async (t) => {\n  t.is(await asyncMultiTwo(2), 4)\n})\n\ntest('buffer passthrough', async (t) => {\n  const fixture = Buffer.from('hello world')\n  const ret = await bufferPassThrough(fixture)\n  t.deepEqual(ret, fixture)\n})\n\ntest('arraybuffer passthrough', async (t) => {\n  const fixture = new Uint8Array([1, 2, 3, 4, 5])\n  const ret = await arrayBufferPassThrough(fixture)\n  t.deepEqual(ret, fixture)\n})\n\ntest('async reduce buffer', async (t) => {\n  const input = [1, 2, 3, 4, 5, 6]\n  const fixture = Buffer.from(input)\n  t.is(\n    await asyncReduceBuffer(fixture),\n    input.reduce((acc, cur) => acc + cur),\n  )\n})\n\ntest('create arraybuffer with native', (t) => {\n  const ret = createArraybuffer()\n  t.true(ret instanceof ArrayBuffer)\n  const buf = new ArrayBuffer(4)\n  const view = new Uint8Array(buf)\n  view[0] = 1\n  view[1] = 2\n  view[2] = 3\n  view[3] = 4\n  t.deepEqual(ret, buf)\n})\n\ntest('Uint8Array from String', async (t) => {\n  t.is(\n    Buffer.from(await uInit8ArrayFromString()).toString('utf8'),\n    'Hello world',\n  )\n})\n\ntest('either', (t) => {\n  t.is(eitherStringOrNumber(2), 2)\n  t.is(eitherStringOrNumber('hello'), 'hello'.length)\n  t.is(eitherF64OrU32(1), 1)\n  t.is(eitherF64OrU32(1.1), 1.1)\n})\n\ntest('return either', (t) => {\n  t.is(returnEither(2), 2)\n  t.is(returnEither(42), '42')\n})\n\ntest('receive class reference in either', (t) => {\n  const c = new JsClassForEither()\n  t.is(receiveClassOrNumber(1), 2)\n  t.is(receiveClassOrNumber(c), 100)\n  t.is(receiveMutClassOrNumber(c), 100)\n})\n\ntest('receive different class', (t) => {\n  const a = new JsClassForEither()\n  const b = new AnotherClassForEither()\n  t.is(receiveDifferentClass(a), 42)\n  t.is(receiveDifferentClass(b), 100)\n})\n\ntest('return either class', (t) => {\n  t.is(returnEitherClass(1), 1)\n  t.true(returnEitherClass(-1) instanceof JsClassForEither)\n})\n\ntest('either from option', (t) => {\n  t.true(eitherFromOption() instanceof JsClassForEither)\n})\n\ntest('either from objects', (t) => {\n  t.is(eitherFromObjects({ foo: 1 }), 'A')\n  t.is(eitherFromObjects({ bar: 2 }), 'B')\n  t.is(eitherFromObjects({ baz: 3 }), 'C')\n})\n\ntest('either3', (t) => {\n  t.is(either3(2), 2)\n  t.is(either3('hello'), 'hello'.length)\n  t.is(either3(true), 1)\n  t.is(either3(false), 0)\n})\n\ntest('either4', (t) => {\n  t.is(either4(2), 2)\n  t.is(either4('hello'), 'hello'.length)\n  t.is(either4(true), 1)\n  t.is(either4(false), 0)\n  t.is(either4({ v: 1 }), 1)\n  t.is(either4({ v: 'world' }), 'world'.length)\n})\n\ntest('either promise in either a', async (t) => {\n  t.is(await eitherPromiseInEitherA(1), false)\n  t.is(await eitherPromiseInEitherA(20), true)\n  t.is(await eitherPromiseInEitherA(Promise.resolve(1)), false)\n  t.is(await eitherPromiseInEitherA(Promise.resolve(20)), true)\n  t.is(await eitherPromiseInEitherA('abc'), false)\n})\n\ntest('external', (t) => {\n  const FX = 42\n  const ext = createExternal(FX)\n  t.is(getExternal(ext), FX)\n  mutateExternal(ext, FX + 1)\n  t.is(getExternal(ext), FX + 1)\n  // @ts-expect-error\n  t.throws(() => getExternal({}))\n  const ext2 = createExternalString('wtf')\n  // @ts-expect-error\n  const e = t.throws(() => getExternal(ext2))\n  t.is(e?.message, '<u32> on `External` is not the type of wrapped object')\n\n  const extRef = createExternalRef(FX)\n  t.is(getExternal(extRef), FX)\n})\n\ntest('optional external', (t) => {\n  const FX = 42\n  const extEmpty = createOptionalExternal()\n  t.is(getOptionalExternal(extEmpty), null)\n  const ext = createOptionalExternal(FX)\n  t.is(getOptionalExternal(ext), FX)\n  mutateOptionalExternal(ext, FX + 1)\n  t.is(getOptionalExternal(ext), FX + 1)\n  // @ts-expect-error\n  t.throws(() => getOptionalExternal({}))\n  const ext2 = createExternalString('wtf')\n  // @ts-expect-error\n  const e = t.throws(() => getOptionalExternal(ext2))\n  t.is(e?.message, '<u32> on `External` is not the type of wrapped object')\n})\n\ntest('should be able to run script', async (t) => {\n  t.is(runScript(`1 + 1`), 2)\n  t.is(await runScript(`Promise.resolve(1)`), 1)\n})\n\ntest('should be able to return object from shared crate', (t) => {\n  t.deepEqual(returnFromSharedCrate(), {\n    value: 42,\n  })\n})\n\nconst AbortSignalTest =\n  typeof AbortController !== 'undefined' ? test : test.skip\n\ntest('async task without abort controller', async (t) => {\n  t.is(await withoutAbortController(1, 2), 3)\n})\n\n// schedule async task always start immediately, hard to create a case that async task is scheduled but not started\ntest.skip('async task with abort controller', async (t) => {\n  const ctrl = new AbortController()\n  const promise = withAbortController(1, 2, ctrl.signal)\n  try {\n    ctrl.abort()\n    await promise\n    t.fail('Should throw AbortError')\n  } catch (err: unknown) {\n    t.is((err as Error).message, 'AbortError')\n  }\n})\n\ntest('async task with different resolved values', async (t) => {\n  const r1 = await asyncTaskOptionalReturn()\n  t.falsy(r1)\n  if (!process.env.WASI_TEST) {\n    await asyncTaskReadFile(import.meta.filename)\n  }\n  const r2 = await asyncResolveArray(2)\n  t.deepEqual(r2, [0, 1])\n})\n\ntest('async task with ArrayBuffer', async (t) => {\n  const inputData = new Uint8Array([1, 2, 3, 4, 5])\n  const result = await asyncTaskArraybuffer(Array.from(inputData))\n\n  t.true(result instanceof ArrayBuffer)\n  t.is(result.byteLength, 5)\n\n  const view = new Uint8Array(result)\n  t.deepEqual(Array.from(view), [1, 2, 3, 4, 5])\n\n  // Test with empty array\n  const emptyResult = await asyncTaskArraybuffer([])\n  t.true(emptyResult instanceof ArrayBuffer)\n  t.is(emptyResult.byteLength, 0)\n\n  // Test with larger data\n  const largeData = new Uint8Array(1000).fill(42)\n  const largeResult = await asyncTaskArraybuffer(Array.from(largeData))\n  t.true(largeResult instanceof ArrayBuffer)\n  t.is(largeResult.byteLength, 1000)\n  const largeView = new Uint8Array(largeResult)\n  t.is(largeView[0], 42)\n  t.is(largeView[999], 42)\n})\n\nAbortSignalTest('with abort signal handle', async (t) => {\n  const ctrl = new AbortController()\n  const promise = withAbortSignalHandle(ctrl.signal)\n  try {\n    ctrl.abort()\n    const ret = await promise\n    t.is(ret, 999)\n  } catch (err: unknown) {\n    // sometimes on CI, the scheduled task is able to abort\n    // so we only allow it to throw AbortError\n    t.is((err as Error).message, 'AbortError')\n  }\n})\n\nAbortSignalTest('abort resolved task', async (t) => {\n  const ctrl = new AbortController()\n  await withAbortController(1, 2, ctrl.signal).then(() => ctrl.abort())\n  t.pass('should not throw')\n})\n\ntest('abort signal should be able to reuse with different tasks', async (t) => {\n  const ctrl = new AbortController()\n  await t.notThrowsAsync(async () => {\n    try {\n      const promise = Promise.all(\n        Array.from({ length: 20 }).map(() =>\n          withAbortController(1, 2, ctrl.signal),\n        ),\n      )\n      ctrl.abort()\n      await promise\n    } catch (err: unknown) {\n      // sometimes on CI, the scheduled task is able to abort\n      // so we only allow it to throw AbortError\n      t.is((err as Error).message, 'AbortError')\n    }\n  })\n})\n\ntest('async task finally must be called', async (t) => {\n  const obj = {\n    finally: false,\n    resolve: false,\n  }\n  await asyncTaskFinally(obj)\n  t.is(obj.finally, true)\n  t.is(obj.resolve, true)\n})\n\nconst BigIntTest = typeof BigInt !== 'undefined' ? test : test.skip\n\nBigIntTest('BigInt add', (t) => {\n  t.is(bigintAdd(BigInt(1), BigInt(2)), BigInt(3))\n})\n\nBigIntTest('create BigInt', (t) => {\n  t.is(createBigInt(), BigInt('-3689348814741910323300'))\n})\n\nBigIntTest('create BigInt i64', (t) => {\n  t.is(createBigIntI64(), BigInt(100))\n})\n\nBigIntTest('BigInt get_u64', (t) => {\n  t.is(bigintGetU64AsString(BigInt(0)), '0')\n})\n\nBigIntTest('js mod test', (t) => {\n  t.is(xxh64Alias(Buffer.from('hello world')), BigInt('1116'))\n  t.is(xxh3.xxh3_64(Buffer.from('hello world')), BigInt('1116'))\n  t.is(xxh3.xxh128(Buffer.from('hello world')), BigInt('1116'))\n  t.is(xxh2.xxh2Plus(1, 2), 3)\n  t.is(xxh2.xxh3Xxh64Alias(Buffer.from('hello world')), BigInt('1116'))\n  t.is(xxh3.ALIGNMENT, 16)\n  const xx3 = new xxh3.Xxh3()\n  xx3.update(Buffer.from('hello world'))\n  t.is(xx3.digest(), BigInt('1116'))\n})\n\nBigIntTest('from i128 i64', (t) => {\n  t.is(bigintFromI64(), BigInt('100'))\n  t.is(bigintFromI128(), BigInt('-100'))\n})\n\nNapi4Test('call ThreadsafeFunction', (t) => {\n  if (process.env.WASI_TEST) {\n    t.pass()\n    return\n  }\n  let i = 0\n  let value = 0\n  return new Promise((resolve) => {\n    callThreadsafeFunction((err, v) => {\n      t.is(err, null)\n      i++\n      value += v\n      if (i === 100) {\n        resolve()\n        t.is(\n          value,\n          Array.from({ length: 100 }, (_, i) => i).reduce((a, b) => a + b),\n        )\n      }\n    })\n  })\n})\n\nNapi4Test('throw error from ThreadsafeFunction', async (t) => {\n  const throwPromise = new Promise((_, reject) => {\n    threadsafeFunctionThrowError(reject)\n  })\n  const err = await t.throwsAsync(throwPromise)\n  t.is(err?.message, 'ThrowFromNative')\n})\n\nNapi4Test('throw error from ThreadsafeFunction with status', async (t) => {\n  const throwPromise = new Promise((_, reject) => {\n    threadsafeFunctionThrowErrorWithStatus(reject)\n  })\n  const err = await t.throwsAsync(throwPromise)\n  t.is((err as Error & { code?: string })?.code, 'CustomErrorStatus')\n})\n\nNapi4Test(\n  'throw error from ThreadsafeFunction with builder and status',\n  async (t) => {\n    const throwPromise = new Promise((_, reject) => {\n      threadsafeFunctionBuildThrowErrorWithStatus(reject)\n    })\n    const err = await t.throwsAsync(throwPromise)\n    t.is((err as Error & { code?: string })?.code, 'CustomErrorStatus')\n  },\n)\n\nNapi4Test('ThreadsafeFunction closure capture data', (t) => {\n  return new Promise((resolve) => {\n    const defaultValue = new Animal(Kind.Dog, '旺财')\n    threadsafeFunctionClosureCapture(defaultValue, (value) => {\n      resolve()\n      t.is(value, defaultValue)\n    })\n  })\n})\n\nNapi4Test('resolve value from thread safe function fatal mode', async (t) => {\n  const tsfnFatalMode = new Promise<boolean>((resolve) => {\n    threadsafeFunctionFatalMode(resolve)\n  })\n  t.true(await tsfnFatalMode)\n})\n\nNapi4Test('throw error from thread safe function fatal mode', (t) => {\n  const p = exec('node ./tsfn-error.cjs', {\n    cwd: __dirname,\n  })\n  let stderr = Buffer.from([])\n  p.stderr?.on('data', (data) => {\n    stderr = Buffer.concat([stderr, Buffer.from(data)])\n  })\n  return new Promise<void>((resolve) => {\n    p.on('exit', (code) => {\n      t.is(code, 1)\n      const stderrMsg = stderr.toString('utf8')\n      console.info(stderrMsg)\n      t.true(stderrMsg.includes(`Error: Failed to convert JavaScript value`))\n      resolve()\n    })\n  })\n})\n\nNapi4Test('await Promise in rust', async (t) => {\n  const fx = 20\n  const result = await asyncPlus100(\n    new Promise((resolve) => {\n      setTimeout(() => resolve(fx), 50)\n    }),\n  )\n  t.is(result, fx + 100)\n})\n\nNapi4Test('Promise should reject raw error in rust', async (t) => {\n  const fxError = new Error('What is Happy Planet')\n  await t.throwsAsync(() => asyncPlus100(Promise.reject(fxError)), {\n    message: fxError.message,\n  })\n})\n\nNapi4Test('call ThreadsafeFunction with callback', async (t) => {\n  await t.notThrowsAsync(\n    () =>\n      new Promise<void>((resolve) => {\n        tsfnCallWithCallback(() => {\n          resolve()\n          return 'ReturnFromJavaScriptRawCallback'\n        })\n      }),\n  )\n})\n\nNapi4Test('async call ThreadsafeFunction', async (t) => {\n  await t.notThrowsAsync(() =>\n    tsfnAsyncCall((arg1, arg2, arg3) => {\n      t.is(arg1, 0)\n      t.is(arg2, 1)\n      t.is(arg3, 2)\n      return 'ReturnFromJavaScriptRawCallback'\n    }),\n  )\n})\n\n// https://github.com/napi-rs/napi-rs/issues/2727\ntest('provide undefined to tsfn', async (t) => {\n  // @ts-expect-error\n  t.throws(() => tsfnAsyncCall(), {\n    code: 'InvalidArg',\n  })\n})\n\ntest('Throw from ThreadsafeFunction JavaScript callback', async (t) => {\n  const errMsg = 'ThrowFromJavaScriptRawCallback'\n  await t.throwsAsync(\n    () =>\n      tsfnThrowFromJs(() => {\n        throw new Error(errMsg)\n      }),\n    {\n      message: errMsg,\n    },\n  )\n\n  await t.throwsAsync(\n    async () => {\n      await tsfnThrowFromJs(() => {\n        const a = {}\n        // @ts-expect-error\n        a.c.d = 2\n        return Promise.resolve(1)\n      })\n      await tsfnThrowFromJsCallbackContainsTsfn(() => {\n        const a = {}\n        // @ts-expect-error\n        a.b.c = 1\n        tsfnThrowFromJs(() => {\n          // @ts-expect-error\n          a.c.d = 2\n          return Promise.resolve(1)\n        })\n        return Promise.resolve(1)\n      })\n    },\n    {\n      instanceOf: TypeError,\n      message: \"Cannot set properties of undefined (setting 'd')\",\n    },\n  )\n})\n\nNapi4Test('accept ThreadsafeFunction', async (t) => {\n  await new Promise<void>((resolve, reject) => {\n    acceptThreadsafeFunction((err, value) => {\n      if (err) {\n        reject(err)\n      } else {\n        t.is(value, 1)\n        resolve()\n      }\n    })\n  })\n})\n\nNapi4Test('accept ThreadsafeFunction Fatal', async (t) => {\n  await new Promise<void>((resolve) => {\n    acceptThreadsafeFunctionFatal((value) => {\n      t.is(value, 1)\n      resolve()\n    })\n  })\n})\n\nNapi4Test('accept ThreadsafeFunction tuple args', async (t) => {\n  await new Promise<void>((resolve, reject) => {\n    acceptThreadsafeFunctionTupleArgs((err, num, bool, str) => {\n      if (err) {\n        return reject(err)\n      }\n      t.is(num, 1)\n      t.is(bool, false)\n      t.is(str, 'NAPI-RS')\n      resolve()\n    })\n  })\n})\n\nNapi4Test('threadsafe function return Promise and await in Rust', async (t) => {\n  const value = await tsfnReturnPromise((err, value) => {\n    if (err) {\n      throw err\n    }\n    return Promise.resolve(value + 2)\n  })\n  t.is(value, 5)\n  await t.throwsAsync(\n    () =>\n      tsfnReturnPromiseTimeout((err, value) => {\n        if (err) {\n          throw err\n        }\n        return new Promise((resolve) => {\n          setTimeout(() => {\n            resolve(value + 2)\n          }, 300)\n        })\n      }),\n    {\n      message: 'Timeout',\n    },\n  )\n  // trigger Promise.then in Rust after `Promise` is dropped\n  await new Promise((resolve) => setTimeout(resolve, 400))\n})\n\nNapi4Test('call async with unknown return value', async (t) => {\n  await new Promise<number>((resolve, reject) => {\n    return callAsyncWithUnknownReturnValue((err, value) => {\n      if (err) {\n        reject(err)\n      } else {\n        resolve(value)\n        t.is(value, 42)\n        return {}\n      }\n    }).then((result) => {\n      t.is(result, 110)\n    })\n  })\n})\n\nNapi4Test('object only from js', (t) => {\n  return new Promise((resolve, reject) => {\n    receiveObjectOnlyFromJs({\n      count: 100,\n      callback: (err: Error | null, count: number) => {\n        if (err) {\n          reject(err)\n        } else {\n          t.is(count, 100)\n          resolve()\n        }\n      },\n    })\n  })\n})\n\nNapi4Test('build ThreadsafeFunction from Function', (t) => {\n  const subject = new Subject<void>()\n  const fn = (a: number, b: number) => {\n    t.is(a, 1)\n    t.is(b, 2)\n    subject.next()\n    return a * b\n  }\n\n  buildThreadsafeFunctionFromFunction(fn)\n\n  t.notThrows(() => {\n    buildThreadsafeFunctionFromFunctionCalleeHandle(() => {})\n  })\n\n  return subject.pipe(take(3))\n})\n\nNapi4Test('promise in either', async (t) => {\n  t.is(await promiseInEither(1), false)\n  t.is(await promiseInEither(20), true)\n  t.is(await promiseInEither(Promise.resolve(1)), false)\n  t.is(await promiseInEither(Promise.resolve(20)), true)\n  // @ts-expect-error\n  t.throws(() => promiseInEither('1'))\n})\n\nconst Napi5Test = Number(process.versions.napi) >= 5 ? test : test.skip\n\nNapi5Test('Date test', (t) => {\n  const fixture = new Date('2016-12-24')\n  t.is(dateToNumber(fixture), fixture.valueOf())\n})\n\nNapi5Test('Date to chrono test', (t) => {\n  const fixture = new Date('2022-02-09T19:31:55.396Z')\n  t.is(chronoUtcDateToMillis(fixture), fixture.getTime())\n  t.is(chronoLocalDateToMillis(fixture), fixture.getTime())\n  t.is(chronoDateWithTimezoneToMillis(fixture), fixture.getTime())\n  t.deepEqual(\n    chronoDateAdd1Minute(fixture),\n    new Date(fixture.getTime() + 60 * 1000),\n  )\n})\n\nNapi5Test('Get date', (t) => {\n  const fixture1 = new Date('2024-02-07T18:28:18-0800')\n  t.deepEqual(chronoDateFixtureReturn1(), fixture1)\n  const fixture2 = new Date('2024-02-07T18:28:18+0530')\n  t.deepEqual(chronoDateFixtureReturn2(), fixture2)\n})\n\nNapi5Test('Class with getter setter closures', (t) => {\n  const instance = new GetterSetterWithClosures()\n  // @ts-expect-error\n  instance.name = 'Allie'\n  t.pass()\n  // @ts-expect-error\n  t.is(instance.name, `I'm Allie`)\n  // @ts-expect-error\n  t.is(instance.age, 0.3)\n  // @ts-expect-error\n  t.is(instance[instance.ageSymbol], 0.3)\n})\n\nNapi5Test('Date to chrono::NativeDateTime test', (t) => {\n  const fixture = new Date()\n  t.is(chronoNativeDateTime(fixture), fixture.valueOf())\n})\n\nNapi5Test('Date from chrono::NativeDateTime test', (t) => {\n  const fixture = chronoNativeDateTimeReturn()\n  t.true(fixture instanceof Date)\n  t.is(fixture?.toISOString(), '2016-12-23T15:25:59.325Z')\n})\n\nconst Napi9Test = Number(process.versions.napi) >= 9 ? test : test.skip\n\nNapi9Test('create symbol for', (t) => {\n  t.is(createSymbolFor('foo'), Symbol.for('foo'))\n})\n\nNapi9Test('get module file name', (t) => {\n  if (process.env.WASI_TEST) {\n    t.pass()\n    return\n  }\n  console.info(getModuleFileName())\n  t.regex(\n    getModuleFileName(),\n    new RegExp(`example.${process.platform}-${process.arch}`),\n  )\n})\n\ntest('throw syntax error', (t) => {\n  const message = `Syntax Error: Unexpected token '}'`\n  const code = 'InvalidCharacterError'\n  t.throws(\n    () => throwSyntaxError(message, code),\n    {\n      code,\n      instanceOf: SyntaxError,\n    },\n    message,\n  )\n})\n\ntest('type', (t) => {\n  const rule: Rule = {\n    name: 'rule',\n    handler: (a) => {\n      return a + 5\n    },\n  }\n  t.is(callRuleHandler(rule, 1), 6)\n})\n\ntest('tuple to array', (t) => {\n  let t1: TupleToArray = ['a', 1]\n  let t2: TupleToArray = ['b', 2, { merge: true }]\n  let v = mergeTupleArray(t1, t1)\n  t.deepEqual(v, ['a', 1, undefined])\n\n  let mergev = mergeTupleArray(t1, t2)\n  t.deepEqual(mergev, ['ab', 3, { merge: true }])\n})\n\ntest('get class from array', (t) => {\n  const classInArray = new ClassInArray(42)\n  t.is(getClassFromArray([classInArray]), 42)\n})\n\ntest('acceptStream', async (t) => {\n  if (process.version.startsWith('v18')) {\n    // https://github.com/nodejs/node/issues/56432\n    t.pass('Skip when Node.js is 18 and WASI due to bug')\n    return\n  }\n  const selfPath = fileURLToPath(import.meta.url)\n  const nodeFileStream = createReadStream(selfPath)\n  const buffer = await acceptStream(Readable.toWeb(nodeFileStream))\n  t.is(buffer.toString('utf-8'), await nodeReadFile(selfPath, 'utf-8'))\n})\n\ntest('create readable stream from channel', async (t) => {\n  if (process.env.WASI_TEST) {\n    t.pass(\n      'Skip when WASI because ReadableStream controller.enqueue does not accept SharedArrayBuffer',\n    )\n    return\n  }\n  const stream = await createReadableStream()\n  const chunks = []\n  for await (const chunk of stream) {\n    chunks.push(chunk)\n  }\n  t.is(Buffer.concat(chunks).toString('utf-8'), 'hello'.repeat(100))\n  const { ReadableStream } = await import('web-streams-polyfill')\n  // @ts-expect-error ReadableStream polyfill types conflict\n  const streamFromClass = await createReadableStreamFromClass(ReadableStream)\n  const chunksFromClass = []\n  for await (const chunk of streamFromClass) {\n    chunksFromClass.push(chunk)\n  }\n  t.is(Buffer.concat(chunksFromClass).toString('utf-8'), 'hello'.repeat(100))\n})\n\ntest('create readable stream from channel with object', async (t) => {\n  if (process.env.WASI_TEST) {\n    t.pass(\n      'Skip when WASI because ReadableStream controller.enqueue does not accept SharedArrayBuffer',\n    )\n    return\n  }\n  const stream = await createReadableStreamWithObject()\n  const chunks = []\n  for await (const chunk of stream) {\n    chunks.push(chunk)\n  }\n\n  t.is(chunks.length, 100)\n\n  chunks.forEach((chunk, index) => {\n    t.truthy(chunk?.something, `Element ${index} doesn't have chunk.something`)\n    t.is(chunk.something.hello, '', `Element ${index} hello is an empty string`)\n    t.is(chunk.name, '', `Element ${index} name is not an empty string`)\n    t.is(chunk.size, index, `Element ${index} size has to be ${index}`)\n  })\n})\n\ntest('readable stream cancellation should cleanup resources', async (t) => {\n  if (process.env.WASI_TEST) {\n    t.pass(\n      'Skip when WASI because ReadableStream controller.enqueue does not accept SharedArrayBuffer',\n    )\n    return\n  }\n  const stream = await createReadableStreamWithObject()\n  const reader = stream.getReader()\n\n  // Read a couple items\n  const first = await reader.read()\n  t.false(first.done)\n  t.is(first.value?.size, 0)\n\n  const second = await reader.read()\n  t.false(second.done)\n  t.is(second.value?.size, 1)\n\n  // Cancel early - this should trigger the cancel callback and cleanup resources\n  await t.notThrowsAsync(async () => {\n    await reader.cancel('user cancelled')\n  })\n\n  // Subsequent reads should return done\n  const afterCancel = await reader.read()\n  t.true(afterCancel.done)\n})\n\ntest('spawnThreadInThread should be fine', async (t) => {\n  await new Promise((resolve, reject) => {\n    spawnThreadInThread((err, num) => {\n      if (err) {\n        reject(err)\n      } else {\n        t.is(num, 42)\n        resolve(void 0)\n      }\n      return 0\n    })\n  })\n  t.pass()\n})\n\ntest('should generate correct type def file', async (t) => {\n  if (process.env.WASI_TEST || process.platform === 'freebsd') {\n    t.pass()\n  } else {\n    t.snapshot(await nodeReadFile(join(__dirname, '..', 'index.d.cts'), 'utf8'))\n  }\n})\n\ntest('should be able to recursively hidden lifetime', async (t) => {\n  await t.notThrowsAsync(async () => {\n    await esmResolve(() => Promise.resolve(undefined))\n  })\n})\n\ntest('should be able to correct lifetime of spawn_future_lifetime', async (t) => {\n  const result = await spawnFutureLifetime(1)\n  t.is(result, '1')\n  const result2 = await promiseRawReturnClassInstance()\n  t.true(result2 instanceof ClassReturnInPromise)\n})\n\ntest('extends javascript error', (t) => {\n  class CustomError extends Error {}\n\n  try {\n    extendsJavascriptError(CustomError)\n  } catch (e: any) {\n    t.true(e instanceof CustomError)\n    t.is(e.message, 'Error message in Rust')\n    t.is(e.name, 'RustError')\n    t.true(typeof e.nativeStackTrace === 'string')\n  }\n})\n\ntest('module exports', (t) => {\n  t.is(nativeAddon.NAPI_RS_SYMBOL, Symbol.for('NAPI_RS_SYMBOL'))\n})\n\ntest('shorter scope', (t) => {\n  const result = shorterScope(['hello', { foo: 'bar' }, 'world', true])\n  t.deepEqual(result, [5, 1, 5, 0])\n})\n\ntest('escapable handle scope', (t) => {\n  function makeIterFunction() {\n    let i = 0\n    return () => {\n      if (i >= 10_000) {\n        return null\n      }\n      i++\n      return Math.random().toString().repeat(100)\n    }\n  }\n  t.notThrows(() => {\n    shorterEscapableScope(makeIterFunction())\n  })\n})\n\ntest('complex class with multiple methods - issue #2722', (t) => {\n  // Test creating instance of re-exported class with constructor (Either<String, ClassInstance<ComplexClass>>)\n  t.notThrows(() => {\n    const complex = new ComplexClass('test_value', 42)\n\n    // Test that constructor worked\n    t.is(complex.value, 'test_value')\n    t.is(complex.number, 42)\n\n    // Test all methods work\n    t.is(complex.methodOne(), 'method_one: test_value')\n    t.is(complex.methodTwo(), 84)\n    t.is(complex.methodThree(), 'method_three: test_value - 42')\n    t.is(complex.methodFour(), true)\n    t.is(complex.methodFive(), 'TEST_VALUE')\n  })\n\n  // Test with Either::B variant (ClassInstance instead of string)\n  t.notThrows(() => {\n    const original = new ComplexClass('original', 100)\n    const complex2 = new ComplexClass(original, -10)\n    t.is(complex2.value, 'cloned:original') // Should clone the value\n    t.is(complex2.methodFour(), false)\n  })\n\n  // Test that we can create multiple instances (stress test with Either)\n  t.notThrows(() => {\n    const baseInstance = new ComplexClass('base', 999)\n    for (let i = 0; i < 10; i++) {\n      // Alternate between string and ClassInstance for Either parameter\n      const instance =\n        i % 2 === 0\n          ? new ComplexClass(`test${i}`, i)\n          : new ComplexClass(baseInstance, i)\n\n      const expectedValue = i % 2 === 0 ? `test${i}` : 'cloned:base'\n      t.is(instance.value, expectedValue)\n      t.is(instance.number, i)\n    }\n  })\n})\n\ntest('instanceof for objects returned from getters - issue #2746', (t) => {\n  const list = new ThingList()\n  const thing = list.thing\n  t.true(thing instanceof Thing, 'thing should be an instance of Thing')\n})\n\ntest('callback in spawn async task', async (t) => {\n  const { resolve, promise } = Promise.withResolvers()\n  callbackInSpawn((obj) => {\n    resolve(obj)\n  })\n  const obj = await promise\n  t.deepEqual(obj, { foo: 'bar' })\n})\n\ntest('return if invalid params', (t) => {\n  t.notThrows(() => {\n    // @ts-expect-error\n    arrayParams(['1', '2'])\n    arrayParams([\n      // @ts-expect-error\n      { foo: 'bar' },\n      // @ts-expect-error\n      Symbol.for('foo'),\n    ])\n  })\n})\n"
  },
  {
    "path": "examples/napi/__tests__/worker-thread.spec.ts",
    "content": "import { join } from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport { Worker } from 'node:worker_threads'\nimport { setTimeout } from 'node:timers/promises'\n\nimport test from 'ava'\n\nimport { Animal, Kind, DEFAULT_COST, shutdownRuntime } from '../index.cjs'\n\nconst __dirname = join(fileURLToPath(import.meta.url), '..')\n\nconst concurrency =\n  (process.platform === 'win32' ||\n    process.platform === 'darwin' ||\n    (process.platform === 'linux' &&\n      (process.arch === 'x64' || process.arch === 'arm64') &&\n      // @ts-expect-error\n      process?.report?.getReport()?.header?.glibcVersionRuntime)) &&\n  !process.env.WASI_TEST &&\n  !process.env.ASAN_OPTIONS\n    ? 20\n    : 1\n\ntest.after(() => {\n  if (process.platform !== 'win32') {\n    shutdownRuntime()\n  }\n})\n\ntest('should be able to require in worker thread', async (t) => {\n  await Promise.all(\n    Array.from({ length: concurrency }).map(() => {\n      const w = new Worker(join(__dirname, 'worker.js'), {\n        env: process.env,\n      })\n      return new Promise<void>((resolve, reject) => {\n        w.postMessage({ type: 'require' })\n        w.on('message', (msg) => {\n          t.is(msg, Animal.withKind(Kind.Cat).whoami() + DEFAULT_COST)\n          resolve()\n        })\n        w.on('error', (err) => {\n          reject(err)\n        })\n      })\n        .then(() => setTimeout(100))\n        .then(() => w.terminate())\n        .then(() => {\n          t.pass()\n        })\n    }),\n  )\n})\n\ntest('custom GC works on worker_threads', async (t) => {\n  await Promise.all(\n    Array.from({ length: concurrency }).map(() =>\n      Promise.all([\n        new Promise<Worker>((resolve, reject) => {\n          const w = new Worker(join(__dirname, 'worker.js'), {\n            env: process.env,\n          })\n          w.postMessage({\n            type: 'async:buffer',\n          })\n          w.on('message', (msg) => {\n            t.is(msg, 'done')\n            resolve(w)\n          })\n          w.on('error', (err) => {\n            reject(err)\n          })\n        }).then((w) => {\n          return w.terminate()\n        }),\n        new Promise<Worker>((resolve, reject) => {\n          const w = new Worker(join(__dirname, 'worker.js'), {\n            execArgv: [],\n          })\n          w.postMessage({\n            type: 'async:arraybuffer',\n          })\n          w.on('message', (msg) => {\n            t.is(msg, 'done')\n            resolve(w)\n          })\n          w.on('error', (err) => {\n            reject(err)\n          })\n        }).then(async (w) => {\n          await setTimeout(100)\n          return w.terminate()\n        }),\n      ]),\n    ),\n  )\n})\n\ntest('should be able to new Class in worker thread concurrently', async (t) => {\n  await Promise.all(\n    Array.from({ length: concurrency }).map(() => {\n      const w = new Worker(join(__dirname, 'worker.js'), {\n        env: process.env,\n      })\n      return new Promise<void>((resolve, reject) => {\n        w.postMessage({ type: 'constructor' })\n        w.on('message', (msg) => {\n          t.is(msg, 'Ellie')\n          resolve()\n        })\n        w.on('error', (err) => {\n          reject(err)\n        })\n      })\n        .then(() => setTimeout(100))\n        .then(() => w.terminate())\n        .then(() => {\n          t.pass()\n        })\n    }),\n  )\n})\n"
  },
  {
    "path": "examples/napi/__tests__/worker.js",
    "content": "import { parentPort } from 'node:worker_threads'\n\nimport native from '../index.cjs'\n\nconst isWasiTest = !!process.env.WASI_TEST\n\nparentPort.on('message', ({ type }) => {\n  switch (type) {\n    case 'require':\n      parentPort.postMessage(\n        native.Animal.withKind(native.Kind.Cat).whoami() + native.DEFAULT_COST,\n      )\n      break\n    case 'async:buffer':\n      Promise.all(\n        Array.from({ length: isWasiTest ? 2 : 100 }).map(() =>\n          native.bufferPassThrough(Buffer.from([1, 2, 3])),\n        ),\n      )\n        .then(() => {\n          parentPort.postMessage('done')\n        })\n        .catch((e) => {\n          throw e\n        })\n      break\n    case 'async:arraybuffer':\n      Promise.all(\n        Array.from({ length: isWasiTest ? 2 : 100 }).map(() =>\n          native.arrayBufferPassThrough(Uint8Array.from([1, 2, 3])),\n        ),\n      )\n        .then(() => {\n          parentPort.postMessage('done')\n        })\n        .catch((e) => {\n          throw e\n        })\n\n      break\n    case 'constructor':\n      let ellie\n      for (let i = 0; i < (isWasiTest ? 10 : 1000); i++) {\n        ellie = new native.Animal(native.Kind.Cat, 'Ellie')\n      }\n      parentPort.postMessage(ellie.name)\n      break\n    default:\n      throw new TypeError(`Unknown message type: ${type}`)\n  }\n})\n"
  },
  {
    "path": "examples/napi/browser/values.spec.ts",
    "content": "import { Buffer } from 'buffer'\n\nimport { describe, it, expect } from 'vitest'\n\nglobalThis.Buffer = Buffer\n\n// @ts-expect-error\nconst {\n  // @ts-expect-error\n  __fs,\n  DEFAULT_COST,\n  Bird,\n  GetterSetterWithClosures,\n  tsfnReturnPromise,\n  tsfnReturnPromiseTimeout,\n  asyncTaskReadFile,\n  testWorkers,\n}: typeof import('../index.cjs') = await import('../example.wasi-browser')\n\ndescribe('NAPI-RS wasi browser test', function () {\n  it('DEFAULT_COST', function () {\n    expect(DEFAULT_COST).toBe(12)\n  })\n\n  it('async self in class', async function () {\n    const b = new Bird('foo')\n    expect(await b.getNameAsync()).toBe('foo')\n  })\n\n  it('Class with getter setter closures', () => {\n    const instance = new GetterSetterWithClosures()\n    // @ts-expect-error\n    instance.name = 'Allie'\n    // @ts-expect-error\n    expect(instance.name).toBe(`I'm Allie`)\n    // @ts-expect-error\n    expect(instance.age).toBe(0.3)\n  })\n\n  it('threadsafe function return Promise and await in Rust', async () => {\n    const value = await tsfnReturnPromise((err, value) => {\n      if (err) {\n        throw err\n      }\n      return Promise.resolve(value + 2)\n    })\n    expect(value).toBe(5)\n    await expect(\n      tsfnReturnPromiseTimeout((err, value) => {\n        if (err) {\n          throw err\n        }\n        return new Promise((resolve) => {\n          setTimeout(() => {\n            resolve(value + 2)\n          }, 300)\n        })\n      }),\n    ).rejects.toMatchObject(new Error('Timeout'))\n    // trigger Promise.then in Rust after `Promise` is dropped\n    await new Promise((resolve) => setTimeout(resolve, 400))\n  })\n\n  it('readFileAsync', async () => {\n    __fs.writeFileSync('/test.txt', 'hello world')\n    const value = await asyncTaskReadFile('/test.txt')\n    expect(value.toString('utf8')).toBe('hello world')\n  })\n\n  it('testWorkers should not throw', async () => {\n    const { resolve, reject, promise } = Promise.withResolvers<void>()\n    expect(() =>\n      testWorkers(10, (err) => {\n        if (err) {\n          reject(err)\n        } else {\n          resolve()\n        }\n      }),\n    ).not.toThrow()\n    await expect(promise).resolves.toBeUndefined()\n  })\n})\n"
  },
  {
    "path": "examples/napi/browser.js",
    "content": "export * from '@examples/napi-wasm32-wasi'\n"
  },
  {
    "path": "examples/napi/build.rs",
    "content": "fn main() {\n  println!(\"cargo::rustc-check-cfg=cfg(tokio_unstable)\");\n\n  use napi_build::setup;\n\n  setup();\n}\n"
  },
  {
    "path": "examples/napi/dts-header.d.ts",
    "content": "/* auto-generated by NAPI-RS */\n/* eslint-disable */\n\nimport type { ReadableStream } from 'node:stream/web'\n\ntype MaybePromise<T> = T | Promise<T>\n\nexport declare const NAPI_RS_SYMBOL: symbol\n"
  },
  {
    "path": "examples/napi/electron-renderer/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>Electron test</title>\n  </head>\n\n  <body>\n    <div>Electron test</div>\n    <script src=\"./index.js\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "examples/napi/electron-renderer/index.js",
    "content": "const { ipcRenderer } = require('electron')\n\nconst { callLongThreadsafeFunction } = require('../index.cjs')\n\ncallLongThreadsafeFunction(() => {})\n\nipcRenderer.on('ping', () => ipcRenderer.send('pong'))\n"
  },
  {
    "path": "examples/napi/electron.cjs",
    "content": "const assert = require('node:assert')\nconst { readFileSync } = require('node:fs')\n\nconst { app, BrowserWindow, ipcMain } = require('electron')\n\nconst FILE_CONTENT = readFileSync(__filename, 'utf8')\n\nconst createWindowAndReload = async () => {\n  await app.whenReady()\n\n  const win = new BrowserWindow({\n    width: 800,\n    height: 600,\n    show: false,\n    webPreferences: {\n      nodeIntegration: true,\n      contextIsolation: false,\n    },\n  })\n\n  await win.loadFile('./electron-renderer/index.html')\n\n  await new Promise((resolve, reject) => {\n    win.webContents.on('render-process-gone', (e, detail) => {\n      reject(\n        new Error(\n          `Renderer process crashed: ${detail.reason}, exitCode: ${detail.exitCode}`,\n        ),\n      )\n    })\n\n    // reload to check if there is any crash\n    win.reload()\n\n    // make sure the renderer process is still alive\n    ipcMain.once('pong', () => {\n      console.info('pong')\n      resolve()\n    })\n\n    // Wait for a while to make sure if a crash happens, the 'resolve' function should be called after the crash\n    setTimeout(() => {\n      win.webContents.send('ping')\n      console.info('ping')\n    }, 1000)\n  })\n}\n\nasync function main() {\n  const {\n    readFileAsync,\n    callThreadsafeFunction,\n    getBufferSlice,\n    createExternalBufferSlice,\n    createUint8ClampedArrayFromData,\n    createUint8ClampedArrayFromExternal,\n    uint8ArrayFromData,\n    uint8ArrayFromExternal,\n    arrayBufferFromData,\n    createExternalTypedArray,\n    createReadableStream,\n  } = require('./index.cjs')\n\n  const buf = await readFileAsync(__filename)\n  assert(FILE_CONTENT === buf.toString('utf8'))\n\n  const value = await new Promise((resolve, reject) => {\n    let i = 0\n    let value = 0\n    callThreadsafeFunction((err, v) => {\n      if (err != null) {\n        reject(err)\n        return\n      }\n      i++\n      value += v\n      if (i === 100) {\n        resolve(value)\n      }\n    })\n  })\n\n  assert(\n    value ===\n      Array.from({ length: 100 }, (_, i) => i).reduce((a, b) => a + b),\n  )\n  console.info(createExternalTypedArray())\n\n  const stream = await createReadableStream()\n  const chunks = []\n  for await (const chunk of stream) {\n    chunks.push(chunk)\n  }\n  assert(Buffer.concat(chunks).toString('utf-8') === 'hello'.repeat(100))\n\n  assert(getBufferSlice().toString('utf8'), 'Hello world')\n  assert(createExternalBufferSlice().toString('utf8'), 'Hello world')\n  assert(Buffer.from(createUint8ClampedArrayFromData()).toString('utf8'), 'Hello world')\n  assert(Buffer.from(createUint8ClampedArrayFromExternal()).toString('utf8'), 'Hello world')\n  assert(Buffer.from(arrayBufferFromData()).toString('utf8'), 'Hello world')\n  assert(Buffer.from(uint8ArrayFromData()).toString('utf8'), 'Hello world')\n  assert(Buffer.from(uint8ArrayFromExternal()).toString('utf8'), 'Hello world')\n}\n\nPromise.all([main(), createWindowAndReload()])\n  .then(() => {\n    process.exit(0)\n  })\n  .catch((e) => {\n    console.error(e)\n    process.exit(1)\n  })\n"
  },
  {
    "path": "examples/napi/example.wasi-browser.js",
    "content": "import {\n  createOnMessage as __wasmCreateOnMessageForFsProxy,\n  getDefaultContext as __emnapiGetDefaultContext,\n  instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync,\n  WASI as __WASI,\n} from '@napi-rs/wasm-runtime'\nimport { memfs, Buffer } from '@napi-rs/wasm-runtime/fs'\n\n\nexport const { fs: __fs, vol: __volume } = memfs()\n\nconst __wasi = new __WASI({\n  version: 'preview1',\n  fs: __fs,\n  preopens: {\n    '/': '/',\n  },\n})\n\nconst __wasmUrl = new URL('./example.wasm32-wasi.wasm', import.meta.url).href\nconst __emnapiContext = __emnapiGetDefaultContext()\n__emnapiContext.feature.Buffer = Buffer\n\nconst __sharedMemory = new WebAssembly.Memory({\n  initial: 16384,\n  maximum: 65536,\n  shared: true,\n})\n\nconst __wasmFile = await fetch(__wasmUrl).then((res) => res.arrayBuffer())\n\nconst {\n  instance: __napiInstance,\n  module: __wasiModule,\n  napiModule: __napiModule,\n} = __emnapiInstantiateNapiModuleSync(__wasmFile, {\n  context: __emnapiContext,\n  asyncWorkPoolSize: 4,\n  wasi: __wasi,\n  onCreateWorker() {\n    const worker = new Worker(new URL('./wasi-worker-browser.mjs', import.meta.url), {\n      type: 'module',\n    })\n    worker.addEventListener('message', __wasmCreateOnMessageForFsProxy(__fs))\n\n    return worker\n  },\n  overwriteImports(importObject) {\n    importObject.env = {\n      ...importObject.env,\n      ...importObject.napi,\n      ...importObject.emnapi,\n      memory: __sharedMemory,\n    }\n    return importObject\n  },\n  beforeInit({ instance }) {\n    for (const name of Object.keys(instance.exports)) {\n      if (name.startsWith('__napi_register__')) {\n        instance.exports[name]()\n      }\n    }\n  },\n})\nexport default __napiModule.exports\nexport const Animal = __napiModule.exports.Animal\nexport const AnimalWithDefaultConstructor = __napiModule.exports.AnimalWithDefaultConstructor\nexport const AnotherClassForEither = __napiModule.exports.AnotherClassForEither\nexport const AnotherCssStyleSheet = __napiModule.exports.AnotherCssStyleSheet\nexport const AnotherCSSStyleSheet = __napiModule.exports.AnotherCSSStyleSheet\nexport const Asset = __napiModule.exports.Asset\nexport const JsAsset = __napiModule.exports.JsAsset\nexport const Assets = __napiModule.exports.Assets\nexport const JsAssets = __napiModule.exports.JsAssets\nexport const AsyncDataSource = __napiModule.exports.AsyncDataSource\nexport const AsyncFib = __napiModule.exports.AsyncFib\nexport const AsyncThrowClass = __napiModule.exports.AsyncThrowClass\nexport const Bird = __napiModule.exports.Bird\nexport const Blake2BHasher = __napiModule.exports.Blake2BHasher\nexport const Blake2bHasher = __napiModule.exports.Blake2bHasher\nexport const Blake2BKey = __napiModule.exports.Blake2BKey\nexport const Blake2bKey = __napiModule.exports.Blake2bKey\nexport const CatchOnConstructor = __napiModule.exports.CatchOnConstructor\nexport const CatchOnConstructor2 = __napiModule.exports.CatchOnConstructor2\nexport const ClassInArray = __napiModule.exports.ClassInArray\nexport const ClassReturnInPromise = __napiModule.exports.ClassReturnInPromise\nexport const ClassWithFactory = __napiModule.exports.ClassWithFactory\nexport const ClassWithLifetime = __napiModule.exports.ClassWithLifetime\nexport const Context = __napiModule.exports.Context\nexport const CounterRepro = __napiModule.exports.CounterRepro\nexport const CreateStringClass = __napiModule.exports.CreateStringClass\nexport const CssRuleList = __napiModule.exports.CssRuleList\nexport const CSSRuleList = __napiModule.exports.CSSRuleList\nexport const CssStyleSheet = __napiModule.exports.CssStyleSheet\nexport const CSSStyleSheet = __napiModule.exports.CSSStyleSheet\nexport const CustomFinalize = __napiModule.exports.CustomFinalize\nexport const CustomStruct = __napiModule.exports.CustomStruct\nexport const DefaultUseNullableClass = __napiModule.exports.DefaultUseNullableClass\nexport const DelayedCounter = __napiModule.exports.DelayedCounter\nexport const Dog = __napiModule.exports.Dog\nexport const Fib = __napiModule.exports.Fib\nexport const Fib2 = __napiModule.exports.Fib2\nexport const Fib3 = __napiModule.exports.Fib3\nexport const Fib4 = __napiModule.exports.Fib4\nexport const GetterSetterWithClosures = __napiModule.exports.GetterSetterWithClosures\nexport const JsClassForEither = __napiModule.exports.JsClassForEither\nexport const JSOnlyMethodsClass = __napiModule.exports.JSOnlyMethodsClass\nexport const RustOnlyMethodsClass = __napiModule.exports.RustOnlyMethodsClass\nexport const JsRemote = __napiModule.exports.JsRemote\nexport const JsRepo = __napiModule.exports.JsRepo\nexport const MyJsNamedClass = __napiModule.exports.MyJsNamedClass\nexport const OriginalRustNameForJsNamedStruct = __napiModule.exports.OriginalRustNameForJsNamedStruct\nexport const NinjaTurtle = __napiModule.exports.NinjaTurtle\nexport const NotUseNullableClass = __napiModule.exports.NotUseNullableClass\nexport const NotWritableClass = __napiModule.exports.NotWritableClass\nexport const Optional = __napiModule.exports.Optional\nexport const PackageJsonReader = __napiModule.exports.PackageJsonReader\nexport const Reader = __napiModule.exports.Reader\nexport const Selector = __napiModule.exports.Selector\nexport const Thing = __napiModule.exports.Thing\nexport const ThingList = __napiModule.exports.ThingList\nexport const UseNullableClass = __napiModule.exports.UseNullableClass\nexport const Width = __napiModule.exports.Width\nexport const acceptArraybuffer = __napiModule.exports.acceptArraybuffer\nexport const acceptSlice = __napiModule.exports.acceptSlice\nexport const acceptStream = __napiModule.exports.acceptStream\nexport const acceptThreadsafeFunction = __napiModule.exports.acceptThreadsafeFunction\nexport const acceptThreadsafeFunctionFatal = __napiModule.exports.acceptThreadsafeFunctionFatal\nexport const acceptThreadsafeFunctionTupleArgs = __napiModule.exports.acceptThreadsafeFunctionTupleArgs\nexport const acceptUint8ClampedSlice = __napiModule.exports.acceptUint8ClampedSlice\nexport const acceptUint8ClampedSliceAndBufferSlice = __napiModule.exports.acceptUint8ClampedSliceAndBufferSlice\nexport const acceptUntypedTypedArray = __napiModule.exports.acceptUntypedTypedArray\nexport const add = __napiModule.exports.add\nexport const ALIAS = __napiModule.exports.ALIAS\nexport const AliasedEnum = __napiModule.exports.AliasedEnum\nexport const appendBuffer = __napiModule.exports.appendBuffer\nexport const apply0 = __napiModule.exports.apply0\nexport const apply1 = __napiModule.exports.apply1\nexport const arrayBufferFromData = __napiModule.exports.arrayBufferFromData\nexport const arrayBufferFromExternal = __napiModule.exports.arrayBufferFromExternal\nexport const arrayBufferPassThrough = __napiModule.exports.arrayBufferPassThrough\nexport const arrayParams = __napiModule.exports.arrayParams\nexport const asyncBufferToArray = __napiModule.exports.asyncBufferToArray\nexport const asyncMultiTwo = __napiModule.exports.asyncMultiTwo\nexport const asyncPlus100 = __napiModule.exports.asyncPlus100\nexport const asyncReduceBuffer = __napiModule.exports.asyncReduceBuffer\nexport const asyncResolveArray = __napiModule.exports.asyncResolveArray\nexport const asyncTaskArraybuffer = __napiModule.exports.asyncTaskArraybuffer\nexport const asyncTaskFinally = __napiModule.exports.asyncTaskFinally\nexport const asyncTaskOptionalReturn = __napiModule.exports.asyncTaskOptionalReturn\nexport const asyncTaskReadFile = __napiModule.exports.asyncTaskReadFile\nexport const asyncTaskVoidReturn = __napiModule.exports.asyncTaskVoidReturn\nexport const bigintAdd = __napiModule.exports.bigintAdd\nexport const bigintFromI128 = __napiModule.exports.bigintFromI128\nexport const bigintFromI64 = __napiModule.exports.bigintFromI64\nexport const bigintGetU64AsString = __napiModule.exports.bigintGetU64AsString\nexport const btreeSetToJs = __napiModule.exports.btreeSetToJs\nexport const btreeSetToRust = __napiModule.exports.btreeSetToRust\nexport const bufferPassThrough = __napiModule.exports.bufferPassThrough\nexport const bufferWithAsyncBlock = __napiModule.exports.bufferWithAsyncBlock\nexport const buildThreadsafeFunctionFromFunction = __napiModule.exports.buildThreadsafeFunctionFromFunction\nexport const buildThreadsafeFunctionFromFunctionCalleeHandle = __napiModule.exports.buildThreadsafeFunctionFromFunctionCalleeHandle\nexport const call0 = __napiModule.exports.call0\nexport const call1 = __napiModule.exports.call1\nexport const call2 = __napiModule.exports.call2\nexport const callAsyncWithUnknownReturnValue = __napiModule.exports.callAsyncWithUnknownReturnValue\nexport const callbackInSpawn = __napiModule.exports.callbackInSpawn\nexport const callbackReturnPromise = __napiModule.exports.callbackReturnPromise\nexport const callbackReturnPromiseAndSpawn = __napiModule.exports.callbackReturnPromiseAndSpawn\nexport const callCatchOnPromise = __napiModule.exports.callCatchOnPromise\nexport const callFinallyOnPromise = __napiModule.exports.callFinallyOnPromise\nexport const callFunction = __napiModule.exports.callFunction\nexport const callFunctionWithArg = __napiModule.exports.callFunctionWithArg\nexport const callFunctionWithArgAndCtx = __napiModule.exports.callFunctionWithArgAndCtx\nexport const callLongThreadsafeFunction = __napiModule.exports.callLongThreadsafeFunction\nexport const callRuleHandler = __napiModule.exports.callRuleHandler\nexport const callThenOnPromise = __napiModule.exports.callThenOnPromise\nexport const callThreadsafeFunction = __napiModule.exports.callThreadsafeFunction\nexport const captureErrorInCallback = __napiModule.exports.captureErrorInCallback\nexport const chronoDateAdd1Minute = __napiModule.exports.chronoDateAdd1Minute\nexport const chronoDateFixtureReturn1 = __napiModule.exports.chronoDateFixtureReturn1\nexport const chronoDateFixtureReturn2 = __napiModule.exports.chronoDateFixtureReturn2\nexport const chronoDateWithTimezoneReturn = __napiModule.exports.chronoDateWithTimezoneReturn\nexport const chronoDateWithTimezoneToMillis = __napiModule.exports.chronoDateWithTimezoneToMillis\nexport const chronoLocalDateReturn = __napiModule.exports.chronoLocalDateReturn\nexport const chronoLocalDateToMillis = __napiModule.exports.chronoLocalDateToMillis\nexport const chronoNativeDateTime = __napiModule.exports.chronoNativeDateTime\nexport const chronoNativeDateTimeReturn = __napiModule.exports.chronoNativeDateTimeReturn\nexport const chronoUtcDateReturn = __napiModule.exports.chronoUtcDateReturn\nexport const chronoUtcDateToMillis = __napiModule.exports.chronoUtcDateToMillis\nexport const compressSync = __napiModule.exports.compressSync\nexport const concatLatin1 = __napiModule.exports.concatLatin1\nexport const concatStr = __napiModule.exports.concatStr\nexport const concatUtf16 = __napiModule.exports.concatUtf16\nexport const contains = __napiModule.exports.contains\nexport const convertU32Array = __napiModule.exports.convertU32Array\nexport const createArraybuffer = __napiModule.exports.createArraybuffer\nexport const createBigInt = __napiModule.exports.createBigInt\nexport const createBigIntI64 = __napiModule.exports.createBigIntI64\nexport const createBufferSliceFromCopiedData = __napiModule.exports.createBufferSliceFromCopiedData\nexport const createExternal = __napiModule.exports.createExternal\nexport const createExternalBufferSlice = __napiModule.exports.createExternalBufferSlice\nexport const createExternalLatin1CustomFinalize = __napiModule.exports.createExternalLatin1CustomFinalize\nexport const createExternalLatin1Empty = __napiModule.exports.createExternalLatin1Empty\nexport const createExternalLatin1Long = __napiModule.exports.createExternalLatin1Long\nexport const createExternalLatin1Short = __napiModule.exports.createExternalLatin1Short\nexport const createExternalLatin1String = __napiModule.exports.createExternalLatin1String\nexport const createExternalLatin1WithLatin1Chars = __napiModule.exports.createExternalLatin1WithLatin1Chars\nexport const createExternalRef = __napiModule.exports.createExternalRef\nexport const createExternalString = __napiModule.exports.createExternalString\nexport const createExternalTypedArray = __napiModule.exports.createExternalTypedArray\nexport const createExternalUtf16String = __napiModule.exports.createExternalUtf16String\nexport const createFunction = __napiModule.exports.createFunction\nexport const createI32ArrayFromExternal = __napiModule.exports.createI32ArrayFromExternal\nexport const createObj = __napiModule.exports.createObj\nexport const createObjectRef = __napiModule.exports.createObjectRef\nexport const createObjectWithClassField = __napiModule.exports.createObjectWithClassField\nexport const createObjWithProperty = __napiModule.exports.createObjWithProperty\nexport const createOptionalExternal = __napiModule.exports.createOptionalExternal\nexport const createReadableStream = __napiModule.exports.createReadableStream\nexport const createReadableStreamFromClass = __napiModule.exports.createReadableStreamFromClass\nexport const createReadableStreamWithObject = __napiModule.exports.createReadableStreamWithObject\nexport const createReferenceOnFunction = __napiModule.exports.createReferenceOnFunction\nexport const createRejectedPromise = __napiModule.exports.createRejectedPromise\nexport const createResolvedPromise = __napiModule.exports.createResolvedPromise\nexport const createStaticLatin1String = __napiModule.exports.createStaticLatin1String\nexport const createStaticUtf16String = __napiModule.exports.createStaticUtf16String\nexport const createSymbol = __napiModule.exports.createSymbol\nexport const createSymbolFor = __napiModule.exports.createSymbolFor\nexport const createSymbolRef = __napiModule.exports.createSymbolRef\nexport const createUint8ClampedArrayFromData = __napiModule.exports.createUint8ClampedArrayFromData\nexport const createUint8ClampedArrayFromExternal = __napiModule.exports.createUint8ClampedArrayFromExternal\nexport const createZeroCopyLatin1String = __napiModule.exports.createZeroCopyLatin1String\nexport const createZeroCopyUtf16String = __napiModule.exports.createZeroCopyUtf16String\nexport const CustomNumEnum = __napiModule.exports.CustomNumEnum\nexport const customStatusCode = __napiModule.exports.customStatusCode\nexport const CustomStringEnum = __napiModule.exports.CustomStringEnum\nexport const dateToNumber = __napiModule.exports.dateToNumber\nexport const DEFAULT_COST = __napiModule.exports.DEFAULT_COST\nexport const defineClass = __napiModule.exports.defineClass\nexport const derefUint8Array = __napiModule.exports.derefUint8Array\nexport const either3 = __napiModule.exports.either3\nexport const either4 = __napiModule.exports.either4\nexport const eitherBoolOrFunction = __napiModule.exports.eitherBoolOrFunction\nexport const eitherBoolOrTuple = __napiModule.exports.eitherBoolOrTuple\nexport const eitherF64OrU32 = __napiModule.exports.eitherF64OrU32\nexport const eitherFromObjects = __napiModule.exports.eitherFromObjects\nexport const eitherFromOption = __napiModule.exports.eitherFromOption\nexport const eitherPromiseInEitherA = __napiModule.exports.eitherPromiseInEitherA\nexport const eitherStringOrNumber = __napiModule.exports.eitherStringOrNumber\nexport const Empty = __napiModule.exports.Empty\nexport const enumToI32 = __napiModule.exports.enumToI32\nexport const errorMessageContainsNullByte = __napiModule.exports.errorMessageContainsNullByte\nexport const esmResolve = __napiModule.exports.esmResolve\nexport const extendsJavascriptError = __napiModule.exports.extendsJavascriptError\nexport const f32ArrayToArray = __napiModule.exports.f32ArrayToArray\nexport const f64ArrayToArray = __napiModule.exports.f64ArrayToArray\nexport const fetch = __napiModule.exports.fetch\nexport const fibonacci = __napiModule.exports.fibonacci\nexport const fnReceivedAliased = __napiModule.exports.fnReceivedAliased\nexport const generateFunctionAndCallIt = __napiModule.exports.generateFunctionAndCallIt\nexport const getBigintJsonValue = __napiModule.exports.getBigintJsonValue\nexport const getBtreeMapping = __napiModule.exports.getBtreeMapping\nexport const getBuffer = __napiModule.exports.getBuffer\nexport const getBufferSlice = __napiModule.exports.getBufferSlice\nexport const getClassFromArray = __napiModule.exports.getClassFromArray\nexport const getCwd = __napiModule.exports.getCwd\nexport const getEmptyBuffer = __napiModule.exports.getEmptyBuffer\nexport const getEmptyTypedArray = __napiModule.exports.getEmptyTypedArray\nexport const getExternal = __napiModule.exports.getExternal\nexport const getGlobal = __napiModule.exports.getGlobal\nexport const getIndexMapping = __napiModule.exports.getIndexMapping\nexport const getIndexMappingWithHasher = __napiModule.exports.getIndexMappingWithHasher\nexport const getMapping = __napiModule.exports.getMapping\nexport const getMappingWithHasher = __napiModule.exports.getMappingWithHasher\nexport const getModuleFileName = __napiModule.exports.getModuleFileName\nexport const getMyVec = __napiModule.exports.getMyVec\nexport const getNestedNumArr = __napiModule.exports.getNestedNumArr\nexport const getNull = __napiModule.exports.getNull\nexport const getNullByteProperty = __napiModule.exports.getNullByteProperty\nexport const getNumArr = __napiModule.exports.getNumArr\nexport const getNums = __napiModule.exports.getNums\nexport const getOptionalExternal = __napiModule.exports.getOptionalExternal\nexport const getPackageJsonName = __napiModule.exports.getPackageJsonName\nexport const getStrFromObject = __napiModule.exports.getStrFromObject\nexport const getterFromObj = __napiModule.exports.getterFromObj\nexport const getTuple = __napiModule.exports.getTuple\nexport const getUndefined = __napiModule.exports.getUndefined\nexport const getWords = __napiModule.exports.getWords\nexport const i16ArrayToArray = __napiModule.exports.i16ArrayToArray\nexport const i32ArrayToArray = __napiModule.exports.i32ArrayToArray\nexport const i64ArrayToArray = __napiModule.exports.i64ArrayToArray\nexport const i8ArrayToArray = __napiModule.exports.i8ArrayToArray\nexport const indexmapPassthrough = __napiModule.exports.indexmapPassthrough\nexport const indexSetToJs = __napiModule.exports.indexSetToJs\nexport const indexSetToRust = __napiModule.exports.indexSetToRust\nexport const intoUtf8 = __napiModule.exports.intoUtf8\nexport const jsErrorCallback = __napiModule.exports.jsErrorCallback\nexport const Kind = __napiModule.exports.Kind\nexport const KindInValidate = __napiModule.exports.KindInValidate\nexport const listObjKeys = __napiModule.exports.listObjKeys\nexport const mapOption = __napiModule.exports.mapOption\nexport const mergeTupleArray = __napiModule.exports.mergeTupleArray\nexport const mutateArraybuffer = __napiModule.exports.mutateArraybuffer\nexport const mutateExternal = __napiModule.exports.mutateExternal\nexport const mutateOptionalExternal = __napiModule.exports.mutateOptionalExternal\nexport const mutateTypedArray = __napiModule.exports.mutateTypedArray\nexport const objectGetNamedPropertyShouldPerformTypecheck = __napiModule.exports.objectGetNamedPropertyShouldPerformTypecheck\nexport const objectWithCApis = __napiModule.exports.objectWithCApis\nexport const optionalCallbackTypes = __napiModule.exports.optionalCallbackTypes\nexport const optionEnd = __napiModule.exports.optionEnd\nexport const optionOnly = __napiModule.exports.optionOnly\nexport const optionStart = __napiModule.exports.optionStart\nexport const optionStartEnd = __napiModule.exports.optionStartEnd\nexport const overrideIndividualArgOnFunction = __napiModule.exports.overrideIndividualArgOnFunction\nexport const overrideIndividualArgOnFunctionWithCbArg = __napiModule.exports.overrideIndividualArgOnFunctionWithCbArg\nexport const overrideWholeFunctionType = __napiModule.exports.overrideWholeFunctionType\nexport const panic = __napiModule.exports.panic\nexport const panicInAsync = __napiModule.exports.panicInAsync\nexport const passSetToJs = __napiModule.exports.passSetToJs\nexport const passSetToRust = __napiModule.exports.passSetToRust\nexport const passSetWithHasherToJs = __napiModule.exports.passSetWithHasherToJs\nexport const plusOne = __napiModule.exports.plusOne\nexport const promiseInEither = __napiModule.exports.promiseInEither\nexport const promiseRawReturnClassInstance = __napiModule.exports.promiseRawReturnClassInstance\nexport const readFile = __napiModule.exports.readFile\nexport const readFileAsync = __napiModule.exports.readFileAsync\nexport const readPackageJson = __napiModule.exports.readPackageJson\nexport const receiveAllOptionalObject = __napiModule.exports.receiveAllOptionalObject\nexport const receiveBindingVitePluginMeta = __napiModule.exports.receiveBindingVitePluginMeta\nexport const receiveBufferSliceWithLifetime = __napiModule.exports.receiveBufferSliceWithLifetime\nexport const receiveClassOrNumber = __napiModule.exports.receiveClassOrNumber\nexport const receiveDifferentClass = __napiModule.exports.receiveDifferentClass\nexport const receiveMutClassOrNumber = __napiModule.exports.receiveMutClassOrNumber\nexport const receiveObjectOnlyFromJs = __napiModule.exports.receiveObjectOnlyFromJs\nexport const receiveObjectWithClassField = __napiModule.exports.receiveObjectWithClassField\nexport const receiveStrictObject = __napiModule.exports.receiveStrictObject\nexport const receiveString = __napiModule.exports.receiveString\nexport const referenceAsCallback = __napiModule.exports.referenceAsCallback\nexport const returnCString = __napiModule.exports.returnCString\nexport const returnEither = __napiModule.exports.returnEither\nexport const returnEitherClass = __napiModule.exports.returnEitherClass\nexport const returnFromSharedCrate = __napiModule.exports.returnFromSharedCrate\nexport const returnNull = __napiModule.exports.returnNull\nexport const returnObjectOnlyToJs = __napiModule.exports.returnObjectOnlyToJs\nexport const returnUndefined = __napiModule.exports.returnUndefined\nexport const returnUndefinedIfInvalid = __napiModule.exports.returnUndefinedIfInvalid\nexport const returnUndefinedIfInvalidPromise = __napiModule.exports.returnUndefinedIfInvalidPromise\nexport const roundtripStr = __napiModule.exports.roundtripStr\nexport const runScript = __napiModule.exports.runScript\nexport const setNullByteProperty = __napiModule.exports.setNullByteProperty\nexport const setSymbolInObj = __napiModule.exports.setSymbolInObj\nexport const shorterEscapableScope = __napiModule.exports.shorterEscapableScope\nexport const shorterScope = __napiModule.exports.shorterScope\nexport const shutdownRuntime = __napiModule.exports.shutdownRuntime\nexport const spawnFutureLifetime = __napiModule.exports.spawnFutureLifetime\nexport const spawnThreadInThread = __napiModule.exports.spawnThreadInThread\nexport const Status = __napiModule.exports.Status\nexport const StatusInValidate = __napiModule.exports.StatusInValidate\nexport const StringEnum = __napiModule.exports.StringEnum\nexport const sumBtreeMapping = __napiModule.exports.sumBtreeMapping\nexport const sumIndexMapping = __napiModule.exports.sumIndexMapping\nexport const sumMapping = __napiModule.exports.sumMapping\nexport const sumNums = __napiModule.exports.sumNums\nexport const testEscapedQuotesInComments = __napiModule.exports.testEscapedQuotesInComments\nexport const testLatin1Methods = __napiModule.exports.testLatin1Methods\nexport const testSerdeBigNumberPrecision = __napiModule.exports.testSerdeBigNumberPrecision\nexport const testSerdeBufferBytes = __napiModule.exports.testSerdeBufferBytes\nexport const testSerdeRoundtrip = __napiModule.exports.testSerdeRoundtrip\nexport const testWorkers = __napiModule.exports.testWorkers\nexport const threadsafeFunctionBuildThrowErrorWithStatus = __napiModule.exports.threadsafeFunctionBuildThrowErrorWithStatus\nexport const threadsafeFunctionClosureCapture = __napiModule.exports.threadsafeFunctionClosureCapture\nexport const threadsafeFunctionFatalMode = __napiModule.exports.threadsafeFunctionFatalMode\nexport const threadsafeFunctionFatalModeError = __napiModule.exports.threadsafeFunctionFatalModeError\nexport const threadsafeFunctionThrowError = __napiModule.exports.threadsafeFunctionThrowError\nexport const threadsafeFunctionThrowErrorWithStatus = __napiModule.exports.threadsafeFunctionThrowErrorWithStatus\nexport const throwAsyncError = __napiModule.exports.throwAsyncError\nexport const throwError = __napiModule.exports.throwError\nexport const throwErrorWithCause = __napiModule.exports.throwErrorWithCause\nexport const throwSyntaxError = __napiModule.exports.throwSyntaxError\nexport const toJsObj = __napiModule.exports.toJsObj\nexport const tsfnAsyncCall = __napiModule.exports.tsfnAsyncCall\nexport const tsfnCallWithCallback = __napiModule.exports.tsfnCallWithCallback\nexport const tsfnInEither = __napiModule.exports.tsfnInEither\nexport const tsfnReturnPromise = __napiModule.exports.tsfnReturnPromise\nexport const tsfnReturnPromiseTimeout = __napiModule.exports.tsfnReturnPromiseTimeout\nexport const tsfnThrowFromJs = __napiModule.exports.tsfnThrowFromJs\nexport const tsfnThrowFromJsCallbackContainsTsfn = __napiModule.exports.tsfnThrowFromJsCallbackContainsTsfn\nexport const tsfnWeak = __napiModule.exports.tsfnWeak\nexport const tsRename = __napiModule.exports.tsRename\nexport const u16ArrayToArray = __napiModule.exports.u16ArrayToArray\nexport const u32ArrayToArray = __napiModule.exports.u32ArrayToArray\nexport const u64ArrayToArray = __napiModule.exports.u64ArrayToArray\nexport const u8ArrayToArray = __napiModule.exports.u8ArrayToArray\nexport const uInit8ArrayFromString = __napiModule.exports.uInit8ArrayFromString\nexport const uint8ArrayFromData = __napiModule.exports.uint8ArrayFromData\nexport const uint8ArrayFromExternal = __napiModule.exports.uint8ArrayFromExternal\nexport const validateArray = __napiModule.exports.validateArray\nexport const validateBigint = __napiModule.exports.validateBigint\nexport const validateBoolean = __napiModule.exports.validateBoolean\nexport const validateBuffer = __napiModule.exports.validateBuffer\nexport const validateBufferSlice = __napiModule.exports.validateBufferSlice\nexport const validateDate = __napiModule.exports.validateDate\nexport const validateDateTime = __napiModule.exports.validateDateTime\nexport const validateEnum = __napiModule.exports.validateEnum\nexport const validateExternal = __napiModule.exports.validateExternal\nexport const validateFunction = __napiModule.exports.validateFunction\nexport const validateHashMap = __napiModule.exports.validateHashMap\nexport const validateNull = __napiModule.exports.validateNull\nexport const validateNumber = __napiModule.exports.validateNumber\nexport const validateOptional = __napiModule.exports.validateOptional\nexport const validatePromise = __napiModule.exports.validatePromise\nexport const validateString = __napiModule.exports.validateString\nexport const validateStringEnum = __napiModule.exports.validateStringEnum\nexport const validateStructuredEnum = __napiModule.exports.validateStructuredEnum\nexport const validateStructuredEnumLowercase = __napiModule.exports.validateStructuredEnumLowercase\nexport const validateSymbol = __napiModule.exports.validateSymbol\nexport const validateTypedArray = __napiModule.exports.validateTypedArray\nexport const validateTypedArraySlice = __napiModule.exports.validateTypedArraySlice\nexport const validateUint8ClampedSlice = __napiModule.exports.validateUint8ClampedSlice\nexport const validateUndefined = __napiModule.exports.validateUndefined\nexport const withAbortController = __napiModule.exports.withAbortController\nexport const withAbortSignalHandle = __napiModule.exports.withAbortSignalHandle\nexport const withinAsyncRuntimeIfAvailable = __napiModule.exports.withinAsyncRuntimeIfAvailable\nexport const withoutAbortController = __napiModule.exports.withoutAbortController\nexport const xxh64Alias = __napiModule.exports.xxh64Alias\nexport const xxh2 = __napiModule.exports.xxh2\nexport const xxh3 = __napiModule.exports.xxh3\nexport const ComplexClass = __napiModule.exports.ComplexClass\n"
  },
  {
    "path": "examples/napi/example.wasi.cjs",
    "content": "/* eslint-disable */\n/* prettier-ignore */\n\n/* auto-generated by NAPI-RS */\n\nconst __nodeFs = require('node:fs')\nconst __nodePath = require('node:path')\nconst { WASI: __nodeWASI } = require('node:wasi')\nconst { Worker } = require('node:worker_threads')\n\nconst {\n  createOnMessage: __wasmCreateOnMessageForFsProxy,\n  getDefaultContext: __emnapiGetDefaultContext,\n  instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync,\n} = require('@napi-rs/wasm-runtime')\n\nconst __rootDir = __nodePath.parse(process.cwd()).root\n\nconst __wasi = new __nodeWASI({\n  version: 'preview1',\n  env: process.env,\n  preopens: {\n    [__rootDir]: __rootDir,\n  }\n})\n\nconst __emnapiContext = __emnapiGetDefaultContext()\n\nconst __sharedMemory = new WebAssembly.Memory({\n  initial: 16384,\n  maximum: 65536,\n  shared: true,\n})\n\nlet __wasmFilePath = __nodePath.join(__dirname, 'example.wasm32-wasi.wasm')\nconst __wasmDebugFilePath = __nodePath.join(__dirname, 'example.wasm32-wasi.debug.wasm')\n\nif (__nodeFs.existsSync(__wasmDebugFilePath)) {\n  __wasmFilePath = __wasmDebugFilePath\n} else if (!__nodeFs.existsSync(__wasmFilePath)) {\n  try {\n    __wasmFilePath = require.resolve('@examples/napi-wasm32-wasi/example.wasm32-wasi.wasm')\n  } catch {\n    throw new Error('Cannot find example.wasm32-wasi.wasm file, and @examples/napi-wasm32-wasi package is not installed.')\n  }\n}\n\nconst { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule } = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__wasmFilePath), {\n  context: __emnapiContext,\n  asyncWorkPoolSize: (function() {\n    const threadsSizeFromEnv = Number(process.env.NAPI_RS_ASYNC_WORK_POOL_SIZE ?? process.env.UV_THREADPOOL_SIZE)\n    // NaN > 0 is false\n    if (threadsSizeFromEnv > 0) {\n      return threadsSizeFromEnv\n    } else {\n      return 4\n    }\n  })(),\n  reuseWorker: true,\n  wasi: __wasi,\n  onCreateWorker() {\n    const worker = new Worker(__nodePath.join(__dirname, 'wasi-worker.mjs'), {\n      env: process.env,\n    })\n    worker.onmessage = ({ data }) => {\n      __wasmCreateOnMessageForFsProxy(__nodeFs)(data)\n    }\n\n    // The main thread of Node.js waits for all the active handles before exiting.\n    // But Rust threads are never waited without `thread::join`.\n    // So here we hack the code of Node.js to prevent the workers from being referenced (active).\n    // According to https://github.com/nodejs/node/blob/19e0d472728c79d418b74bddff588bea70a403d0/lib/internal/worker.js#L415,\n    // a worker is consist of two handles: kPublicPort and kHandle.\n    {\n      const kPublicPort = Object.getOwnPropertySymbols(worker).find(s =>\n        s.toString().includes(\"kPublicPort\")\n      );\n      if (kPublicPort) {\n        worker[kPublicPort].ref = () => {};\n      }\n\n      const kHandle = Object.getOwnPropertySymbols(worker).find(s =>\n        s.toString().includes(\"kHandle\")\n      );\n      if (kHandle) {\n        worker[kHandle].ref = () => {};\n      }\n\n      worker.unref();\n    }\n    return worker\n  },\n  overwriteImports(importObject) {\n    importObject.env = {\n      ...importObject.env,\n      ...importObject.napi,\n      ...importObject.emnapi,\n      memory: __sharedMemory,\n    }\n    return importObject\n  },\n  beforeInit({ instance }) {\n    for (const name of Object.keys(instance.exports)) {\n      if (name.startsWith('__napi_register__')) {\n        instance.exports[name]()\n      }\n    }\n  },\n})\nmodule.exports = __napiModule.exports\nmodule.exports.Animal = __napiModule.exports.Animal\nmodule.exports.AnimalWithDefaultConstructor = __napiModule.exports.AnimalWithDefaultConstructor\nmodule.exports.AnotherClassForEither = __napiModule.exports.AnotherClassForEither\nmodule.exports.AnotherCssStyleSheet = __napiModule.exports.AnotherCssStyleSheet\nmodule.exports.AnotherCSSStyleSheet = __napiModule.exports.AnotherCSSStyleSheet\nmodule.exports.Asset = __napiModule.exports.Asset\nmodule.exports.JsAsset = __napiModule.exports.JsAsset\nmodule.exports.Assets = __napiModule.exports.Assets\nmodule.exports.JsAssets = __napiModule.exports.JsAssets\nmodule.exports.AsyncDataSource = __napiModule.exports.AsyncDataSource\nmodule.exports.AsyncFib = __napiModule.exports.AsyncFib\nmodule.exports.AsyncThrowClass = __napiModule.exports.AsyncThrowClass\nmodule.exports.Bird = __napiModule.exports.Bird\nmodule.exports.Blake2BHasher = __napiModule.exports.Blake2BHasher\nmodule.exports.Blake2bHasher = __napiModule.exports.Blake2bHasher\nmodule.exports.Blake2BKey = __napiModule.exports.Blake2BKey\nmodule.exports.Blake2bKey = __napiModule.exports.Blake2bKey\nmodule.exports.CatchOnConstructor = __napiModule.exports.CatchOnConstructor\nmodule.exports.CatchOnConstructor2 = __napiModule.exports.CatchOnConstructor2\nmodule.exports.ClassInArray = __napiModule.exports.ClassInArray\nmodule.exports.ClassReturnInPromise = __napiModule.exports.ClassReturnInPromise\nmodule.exports.ClassWithFactory = __napiModule.exports.ClassWithFactory\nmodule.exports.ClassWithLifetime = __napiModule.exports.ClassWithLifetime\nmodule.exports.Context = __napiModule.exports.Context\nmodule.exports.CounterRepro = __napiModule.exports.CounterRepro\nmodule.exports.CreateStringClass = __napiModule.exports.CreateStringClass\nmodule.exports.CssRuleList = __napiModule.exports.CssRuleList\nmodule.exports.CSSRuleList = __napiModule.exports.CSSRuleList\nmodule.exports.CssStyleSheet = __napiModule.exports.CssStyleSheet\nmodule.exports.CSSStyleSheet = __napiModule.exports.CSSStyleSheet\nmodule.exports.CustomFinalize = __napiModule.exports.CustomFinalize\nmodule.exports.CustomStruct = __napiModule.exports.CustomStruct\nmodule.exports.DefaultUseNullableClass = __napiModule.exports.DefaultUseNullableClass\nmodule.exports.DelayedCounter = __napiModule.exports.DelayedCounter\nmodule.exports.Dog = __napiModule.exports.Dog\nmodule.exports.Fib = __napiModule.exports.Fib\nmodule.exports.Fib2 = __napiModule.exports.Fib2\nmodule.exports.Fib3 = __napiModule.exports.Fib3\nmodule.exports.Fib4 = __napiModule.exports.Fib4\nmodule.exports.GetterSetterWithClosures = __napiModule.exports.GetterSetterWithClosures\nmodule.exports.JsClassForEither = __napiModule.exports.JsClassForEither\nmodule.exports.JSOnlyMethodsClass = __napiModule.exports.JSOnlyMethodsClass\nmodule.exports.RustOnlyMethodsClass = __napiModule.exports.RustOnlyMethodsClass\nmodule.exports.JsRemote = __napiModule.exports.JsRemote\nmodule.exports.JsRepo = __napiModule.exports.JsRepo\nmodule.exports.MyJsNamedClass = __napiModule.exports.MyJsNamedClass\nmodule.exports.OriginalRustNameForJsNamedStruct = __napiModule.exports.OriginalRustNameForJsNamedStruct\nmodule.exports.NinjaTurtle = __napiModule.exports.NinjaTurtle\nmodule.exports.NotUseNullableClass = __napiModule.exports.NotUseNullableClass\nmodule.exports.NotWritableClass = __napiModule.exports.NotWritableClass\nmodule.exports.Optional = __napiModule.exports.Optional\nmodule.exports.PackageJsonReader = __napiModule.exports.PackageJsonReader\nmodule.exports.Reader = __napiModule.exports.Reader\nmodule.exports.Selector = __napiModule.exports.Selector\nmodule.exports.Thing = __napiModule.exports.Thing\nmodule.exports.ThingList = __napiModule.exports.ThingList\nmodule.exports.UseNullableClass = __napiModule.exports.UseNullableClass\nmodule.exports.Width = __napiModule.exports.Width\nmodule.exports.acceptArraybuffer = __napiModule.exports.acceptArraybuffer\nmodule.exports.acceptSlice = __napiModule.exports.acceptSlice\nmodule.exports.acceptStream = __napiModule.exports.acceptStream\nmodule.exports.acceptThreadsafeFunction = __napiModule.exports.acceptThreadsafeFunction\nmodule.exports.acceptThreadsafeFunctionFatal = __napiModule.exports.acceptThreadsafeFunctionFatal\nmodule.exports.acceptThreadsafeFunctionTupleArgs = __napiModule.exports.acceptThreadsafeFunctionTupleArgs\nmodule.exports.acceptUint8ClampedSlice = __napiModule.exports.acceptUint8ClampedSlice\nmodule.exports.acceptUint8ClampedSliceAndBufferSlice = __napiModule.exports.acceptUint8ClampedSliceAndBufferSlice\nmodule.exports.acceptUntypedTypedArray = __napiModule.exports.acceptUntypedTypedArray\nmodule.exports.add = __napiModule.exports.add\nmodule.exports.ALIAS = __napiModule.exports.ALIAS\nmodule.exports.AliasedEnum = __napiModule.exports.AliasedEnum\nmodule.exports.appendBuffer = __napiModule.exports.appendBuffer\nmodule.exports.apply0 = __napiModule.exports.apply0\nmodule.exports.apply1 = __napiModule.exports.apply1\nmodule.exports.arrayBufferFromData = __napiModule.exports.arrayBufferFromData\nmodule.exports.arrayBufferFromExternal = __napiModule.exports.arrayBufferFromExternal\nmodule.exports.arrayBufferPassThrough = __napiModule.exports.arrayBufferPassThrough\nmodule.exports.arrayParams = __napiModule.exports.arrayParams\nmodule.exports.asyncBufferToArray = __napiModule.exports.asyncBufferToArray\nmodule.exports.asyncMultiTwo = __napiModule.exports.asyncMultiTwo\nmodule.exports.asyncPlus100 = __napiModule.exports.asyncPlus100\nmodule.exports.asyncReduceBuffer = __napiModule.exports.asyncReduceBuffer\nmodule.exports.asyncResolveArray = __napiModule.exports.asyncResolveArray\nmodule.exports.asyncTaskArraybuffer = __napiModule.exports.asyncTaskArraybuffer\nmodule.exports.asyncTaskFinally = __napiModule.exports.asyncTaskFinally\nmodule.exports.asyncTaskOptionalReturn = __napiModule.exports.asyncTaskOptionalReturn\nmodule.exports.asyncTaskReadFile = __napiModule.exports.asyncTaskReadFile\nmodule.exports.asyncTaskVoidReturn = __napiModule.exports.asyncTaskVoidReturn\nmodule.exports.bigintAdd = __napiModule.exports.bigintAdd\nmodule.exports.bigintFromI128 = __napiModule.exports.bigintFromI128\nmodule.exports.bigintFromI64 = __napiModule.exports.bigintFromI64\nmodule.exports.bigintGetU64AsString = __napiModule.exports.bigintGetU64AsString\nmodule.exports.btreeSetToJs = __napiModule.exports.btreeSetToJs\nmodule.exports.btreeSetToRust = __napiModule.exports.btreeSetToRust\nmodule.exports.bufferPassThrough = __napiModule.exports.bufferPassThrough\nmodule.exports.bufferWithAsyncBlock = __napiModule.exports.bufferWithAsyncBlock\nmodule.exports.buildThreadsafeFunctionFromFunction = __napiModule.exports.buildThreadsafeFunctionFromFunction\nmodule.exports.buildThreadsafeFunctionFromFunctionCalleeHandle = __napiModule.exports.buildThreadsafeFunctionFromFunctionCalleeHandle\nmodule.exports.call0 = __napiModule.exports.call0\nmodule.exports.call1 = __napiModule.exports.call1\nmodule.exports.call2 = __napiModule.exports.call2\nmodule.exports.callAsyncWithUnknownReturnValue = __napiModule.exports.callAsyncWithUnknownReturnValue\nmodule.exports.callbackInSpawn = __napiModule.exports.callbackInSpawn\nmodule.exports.callbackReturnPromise = __napiModule.exports.callbackReturnPromise\nmodule.exports.callbackReturnPromiseAndSpawn = __napiModule.exports.callbackReturnPromiseAndSpawn\nmodule.exports.callCatchOnPromise = __napiModule.exports.callCatchOnPromise\nmodule.exports.callFinallyOnPromise = __napiModule.exports.callFinallyOnPromise\nmodule.exports.callFunction = __napiModule.exports.callFunction\nmodule.exports.callFunctionWithArg = __napiModule.exports.callFunctionWithArg\nmodule.exports.callFunctionWithArgAndCtx = __napiModule.exports.callFunctionWithArgAndCtx\nmodule.exports.callLongThreadsafeFunction = __napiModule.exports.callLongThreadsafeFunction\nmodule.exports.callRuleHandler = __napiModule.exports.callRuleHandler\nmodule.exports.callThenOnPromise = __napiModule.exports.callThenOnPromise\nmodule.exports.callThreadsafeFunction = __napiModule.exports.callThreadsafeFunction\nmodule.exports.captureErrorInCallback = __napiModule.exports.captureErrorInCallback\nmodule.exports.chronoDateAdd1Minute = __napiModule.exports.chronoDateAdd1Minute\nmodule.exports.chronoDateFixtureReturn1 = __napiModule.exports.chronoDateFixtureReturn1\nmodule.exports.chronoDateFixtureReturn2 = __napiModule.exports.chronoDateFixtureReturn2\nmodule.exports.chronoDateWithTimezoneReturn = __napiModule.exports.chronoDateWithTimezoneReturn\nmodule.exports.chronoDateWithTimezoneToMillis = __napiModule.exports.chronoDateWithTimezoneToMillis\nmodule.exports.chronoLocalDateReturn = __napiModule.exports.chronoLocalDateReturn\nmodule.exports.chronoLocalDateToMillis = __napiModule.exports.chronoLocalDateToMillis\nmodule.exports.chronoNativeDateTime = __napiModule.exports.chronoNativeDateTime\nmodule.exports.chronoNativeDateTimeReturn = __napiModule.exports.chronoNativeDateTimeReturn\nmodule.exports.chronoUtcDateReturn = __napiModule.exports.chronoUtcDateReturn\nmodule.exports.chronoUtcDateToMillis = __napiModule.exports.chronoUtcDateToMillis\nmodule.exports.compressSync = __napiModule.exports.compressSync\nmodule.exports.concatLatin1 = __napiModule.exports.concatLatin1\nmodule.exports.concatStr = __napiModule.exports.concatStr\nmodule.exports.concatUtf16 = __napiModule.exports.concatUtf16\nmodule.exports.contains = __napiModule.exports.contains\nmodule.exports.convertU32Array = __napiModule.exports.convertU32Array\nmodule.exports.createArraybuffer = __napiModule.exports.createArraybuffer\nmodule.exports.createBigInt = __napiModule.exports.createBigInt\nmodule.exports.createBigIntI64 = __napiModule.exports.createBigIntI64\nmodule.exports.createBufferSliceFromCopiedData = __napiModule.exports.createBufferSliceFromCopiedData\nmodule.exports.createExternal = __napiModule.exports.createExternal\nmodule.exports.createExternalBufferSlice = __napiModule.exports.createExternalBufferSlice\nmodule.exports.createExternalLatin1CustomFinalize = __napiModule.exports.createExternalLatin1CustomFinalize\nmodule.exports.createExternalLatin1Empty = __napiModule.exports.createExternalLatin1Empty\nmodule.exports.createExternalLatin1Long = __napiModule.exports.createExternalLatin1Long\nmodule.exports.createExternalLatin1Short = __napiModule.exports.createExternalLatin1Short\nmodule.exports.createExternalLatin1String = __napiModule.exports.createExternalLatin1String\nmodule.exports.createExternalLatin1WithLatin1Chars = __napiModule.exports.createExternalLatin1WithLatin1Chars\nmodule.exports.createExternalRef = __napiModule.exports.createExternalRef\nmodule.exports.createExternalString = __napiModule.exports.createExternalString\nmodule.exports.createExternalTypedArray = __napiModule.exports.createExternalTypedArray\nmodule.exports.createExternalUtf16String = __napiModule.exports.createExternalUtf16String\nmodule.exports.createFunction = __napiModule.exports.createFunction\nmodule.exports.createI32ArrayFromExternal = __napiModule.exports.createI32ArrayFromExternal\nmodule.exports.createObj = __napiModule.exports.createObj\nmodule.exports.createObjectRef = __napiModule.exports.createObjectRef\nmodule.exports.createObjectWithClassField = __napiModule.exports.createObjectWithClassField\nmodule.exports.createObjWithProperty = __napiModule.exports.createObjWithProperty\nmodule.exports.createOptionalExternal = __napiModule.exports.createOptionalExternal\nmodule.exports.createReadableStream = __napiModule.exports.createReadableStream\nmodule.exports.createReadableStreamFromClass = __napiModule.exports.createReadableStreamFromClass\nmodule.exports.createReadableStreamWithObject = __napiModule.exports.createReadableStreamWithObject\nmodule.exports.createReferenceOnFunction = __napiModule.exports.createReferenceOnFunction\nmodule.exports.createRejectedPromise = __napiModule.exports.createRejectedPromise\nmodule.exports.createResolvedPromise = __napiModule.exports.createResolvedPromise\nmodule.exports.createStaticLatin1String = __napiModule.exports.createStaticLatin1String\nmodule.exports.createStaticUtf16String = __napiModule.exports.createStaticUtf16String\nmodule.exports.createSymbol = __napiModule.exports.createSymbol\nmodule.exports.createSymbolFor = __napiModule.exports.createSymbolFor\nmodule.exports.createSymbolRef = __napiModule.exports.createSymbolRef\nmodule.exports.createUint8ClampedArrayFromData = __napiModule.exports.createUint8ClampedArrayFromData\nmodule.exports.createUint8ClampedArrayFromExternal = __napiModule.exports.createUint8ClampedArrayFromExternal\nmodule.exports.createZeroCopyLatin1String = __napiModule.exports.createZeroCopyLatin1String\nmodule.exports.createZeroCopyUtf16String = __napiModule.exports.createZeroCopyUtf16String\nmodule.exports.CustomNumEnum = __napiModule.exports.CustomNumEnum\nmodule.exports.customStatusCode = __napiModule.exports.customStatusCode\nmodule.exports.CustomStringEnum = __napiModule.exports.CustomStringEnum\nmodule.exports.dateToNumber = __napiModule.exports.dateToNumber\nmodule.exports.DEFAULT_COST = __napiModule.exports.DEFAULT_COST\nmodule.exports.defineClass = __napiModule.exports.defineClass\nmodule.exports.derefUint8Array = __napiModule.exports.derefUint8Array\nmodule.exports.either3 = __napiModule.exports.either3\nmodule.exports.either4 = __napiModule.exports.either4\nmodule.exports.eitherBoolOrFunction = __napiModule.exports.eitherBoolOrFunction\nmodule.exports.eitherBoolOrTuple = __napiModule.exports.eitherBoolOrTuple\nmodule.exports.eitherF64OrU32 = __napiModule.exports.eitherF64OrU32\nmodule.exports.eitherFromObjects = __napiModule.exports.eitherFromObjects\nmodule.exports.eitherFromOption = __napiModule.exports.eitherFromOption\nmodule.exports.eitherPromiseInEitherA = __napiModule.exports.eitherPromiseInEitherA\nmodule.exports.eitherStringOrNumber = __napiModule.exports.eitherStringOrNumber\nmodule.exports.Empty = __napiModule.exports.Empty\nmodule.exports.enumToI32 = __napiModule.exports.enumToI32\nmodule.exports.errorMessageContainsNullByte = __napiModule.exports.errorMessageContainsNullByte\nmodule.exports.esmResolve = __napiModule.exports.esmResolve\nmodule.exports.extendsJavascriptError = __napiModule.exports.extendsJavascriptError\nmodule.exports.f32ArrayToArray = __napiModule.exports.f32ArrayToArray\nmodule.exports.f64ArrayToArray = __napiModule.exports.f64ArrayToArray\nmodule.exports.fetch = __napiModule.exports.fetch\nmodule.exports.fibonacci = __napiModule.exports.fibonacci\nmodule.exports.fnReceivedAliased = __napiModule.exports.fnReceivedAliased\nmodule.exports.generateFunctionAndCallIt = __napiModule.exports.generateFunctionAndCallIt\nmodule.exports.getBigintJsonValue = __napiModule.exports.getBigintJsonValue\nmodule.exports.getBtreeMapping = __napiModule.exports.getBtreeMapping\nmodule.exports.getBuffer = __napiModule.exports.getBuffer\nmodule.exports.getBufferSlice = __napiModule.exports.getBufferSlice\nmodule.exports.getClassFromArray = __napiModule.exports.getClassFromArray\nmodule.exports.getCwd = __napiModule.exports.getCwd\nmodule.exports.getEmptyBuffer = __napiModule.exports.getEmptyBuffer\nmodule.exports.getEmptyTypedArray = __napiModule.exports.getEmptyTypedArray\nmodule.exports.getExternal = __napiModule.exports.getExternal\nmodule.exports.getGlobal = __napiModule.exports.getGlobal\nmodule.exports.getIndexMapping = __napiModule.exports.getIndexMapping\nmodule.exports.getIndexMappingWithHasher = __napiModule.exports.getIndexMappingWithHasher\nmodule.exports.getMapping = __napiModule.exports.getMapping\nmodule.exports.getMappingWithHasher = __napiModule.exports.getMappingWithHasher\nmodule.exports.getModuleFileName = __napiModule.exports.getModuleFileName\nmodule.exports.getMyVec = __napiModule.exports.getMyVec\nmodule.exports.getNestedNumArr = __napiModule.exports.getNestedNumArr\nmodule.exports.getNull = __napiModule.exports.getNull\nmodule.exports.getNullByteProperty = __napiModule.exports.getNullByteProperty\nmodule.exports.getNumArr = __napiModule.exports.getNumArr\nmodule.exports.getNums = __napiModule.exports.getNums\nmodule.exports.getOptionalExternal = __napiModule.exports.getOptionalExternal\nmodule.exports.getPackageJsonName = __napiModule.exports.getPackageJsonName\nmodule.exports.getStrFromObject = __napiModule.exports.getStrFromObject\nmodule.exports.getterFromObj = __napiModule.exports.getterFromObj\nmodule.exports.getTuple = __napiModule.exports.getTuple\nmodule.exports.getUndefined = __napiModule.exports.getUndefined\nmodule.exports.getWords = __napiModule.exports.getWords\nmodule.exports.i16ArrayToArray = __napiModule.exports.i16ArrayToArray\nmodule.exports.i32ArrayToArray = __napiModule.exports.i32ArrayToArray\nmodule.exports.i64ArrayToArray = __napiModule.exports.i64ArrayToArray\nmodule.exports.i8ArrayToArray = __napiModule.exports.i8ArrayToArray\nmodule.exports.indexmapPassthrough = __napiModule.exports.indexmapPassthrough\nmodule.exports.indexSetToJs = __napiModule.exports.indexSetToJs\nmodule.exports.indexSetToRust = __napiModule.exports.indexSetToRust\nmodule.exports.intoUtf8 = __napiModule.exports.intoUtf8\nmodule.exports.jsErrorCallback = __napiModule.exports.jsErrorCallback\nmodule.exports.Kind = __napiModule.exports.Kind\nmodule.exports.KindInValidate = __napiModule.exports.KindInValidate\nmodule.exports.listObjKeys = __napiModule.exports.listObjKeys\nmodule.exports.mapOption = __napiModule.exports.mapOption\nmodule.exports.mergeTupleArray = __napiModule.exports.mergeTupleArray\nmodule.exports.mutateArraybuffer = __napiModule.exports.mutateArraybuffer\nmodule.exports.mutateExternal = __napiModule.exports.mutateExternal\nmodule.exports.mutateOptionalExternal = __napiModule.exports.mutateOptionalExternal\nmodule.exports.mutateTypedArray = __napiModule.exports.mutateTypedArray\nmodule.exports.objectGetNamedPropertyShouldPerformTypecheck = __napiModule.exports.objectGetNamedPropertyShouldPerformTypecheck\nmodule.exports.objectWithCApis = __napiModule.exports.objectWithCApis\nmodule.exports.optionalCallbackTypes = __napiModule.exports.optionalCallbackTypes\nmodule.exports.optionEnd = __napiModule.exports.optionEnd\nmodule.exports.optionOnly = __napiModule.exports.optionOnly\nmodule.exports.optionStart = __napiModule.exports.optionStart\nmodule.exports.optionStartEnd = __napiModule.exports.optionStartEnd\nmodule.exports.overrideIndividualArgOnFunction = __napiModule.exports.overrideIndividualArgOnFunction\nmodule.exports.overrideIndividualArgOnFunctionWithCbArg = __napiModule.exports.overrideIndividualArgOnFunctionWithCbArg\nmodule.exports.overrideWholeFunctionType = __napiModule.exports.overrideWholeFunctionType\nmodule.exports.panic = __napiModule.exports.panic\nmodule.exports.panicInAsync = __napiModule.exports.panicInAsync\nmodule.exports.passSetToJs = __napiModule.exports.passSetToJs\nmodule.exports.passSetToRust = __napiModule.exports.passSetToRust\nmodule.exports.passSetWithHasherToJs = __napiModule.exports.passSetWithHasherToJs\nmodule.exports.plusOne = __napiModule.exports.plusOne\nmodule.exports.promiseInEither = __napiModule.exports.promiseInEither\nmodule.exports.promiseRawReturnClassInstance = __napiModule.exports.promiseRawReturnClassInstance\nmodule.exports.readFile = __napiModule.exports.readFile\nmodule.exports.readFileAsync = __napiModule.exports.readFileAsync\nmodule.exports.readPackageJson = __napiModule.exports.readPackageJson\nmodule.exports.receiveAllOptionalObject = __napiModule.exports.receiveAllOptionalObject\nmodule.exports.receiveBindingVitePluginMeta = __napiModule.exports.receiveBindingVitePluginMeta\nmodule.exports.receiveBufferSliceWithLifetime = __napiModule.exports.receiveBufferSliceWithLifetime\nmodule.exports.receiveClassOrNumber = __napiModule.exports.receiveClassOrNumber\nmodule.exports.receiveDifferentClass = __napiModule.exports.receiveDifferentClass\nmodule.exports.receiveMutClassOrNumber = __napiModule.exports.receiveMutClassOrNumber\nmodule.exports.receiveObjectOnlyFromJs = __napiModule.exports.receiveObjectOnlyFromJs\nmodule.exports.receiveObjectWithClassField = __napiModule.exports.receiveObjectWithClassField\nmodule.exports.receiveStrictObject = __napiModule.exports.receiveStrictObject\nmodule.exports.receiveString = __napiModule.exports.receiveString\nmodule.exports.referenceAsCallback = __napiModule.exports.referenceAsCallback\nmodule.exports.returnCString = __napiModule.exports.returnCString\nmodule.exports.returnEither = __napiModule.exports.returnEither\nmodule.exports.returnEitherClass = __napiModule.exports.returnEitherClass\nmodule.exports.returnFromSharedCrate = __napiModule.exports.returnFromSharedCrate\nmodule.exports.returnNull = __napiModule.exports.returnNull\nmodule.exports.returnObjectOnlyToJs = __napiModule.exports.returnObjectOnlyToJs\nmodule.exports.returnUndefined = __napiModule.exports.returnUndefined\nmodule.exports.returnUndefinedIfInvalid = __napiModule.exports.returnUndefinedIfInvalid\nmodule.exports.returnUndefinedIfInvalidPromise = __napiModule.exports.returnUndefinedIfInvalidPromise\nmodule.exports.roundtripStr = __napiModule.exports.roundtripStr\nmodule.exports.runScript = __napiModule.exports.runScript\nmodule.exports.setNullByteProperty = __napiModule.exports.setNullByteProperty\nmodule.exports.setSymbolInObj = __napiModule.exports.setSymbolInObj\nmodule.exports.shorterEscapableScope = __napiModule.exports.shorterEscapableScope\nmodule.exports.shorterScope = __napiModule.exports.shorterScope\nmodule.exports.shutdownRuntime = __napiModule.exports.shutdownRuntime\nmodule.exports.spawnFutureLifetime = __napiModule.exports.spawnFutureLifetime\nmodule.exports.spawnThreadInThread = __napiModule.exports.spawnThreadInThread\nmodule.exports.Status = __napiModule.exports.Status\nmodule.exports.StatusInValidate = __napiModule.exports.StatusInValidate\nmodule.exports.StringEnum = __napiModule.exports.StringEnum\nmodule.exports.sumBtreeMapping = __napiModule.exports.sumBtreeMapping\nmodule.exports.sumIndexMapping = __napiModule.exports.sumIndexMapping\nmodule.exports.sumMapping = __napiModule.exports.sumMapping\nmodule.exports.sumNums = __napiModule.exports.sumNums\nmodule.exports.testEscapedQuotesInComments = __napiModule.exports.testEscapedQuotesInComments\nmodule.exports.testLatin1Methods = __napiModule.exports.testLatin1Methods\nmodule.exports.testSerdeBigNumberPrecision = __napiModule.exports.testSerdeBigNumberPrecision\nmodule.exports.testSerdeBufferBytes = __napiModule.exports.testSerdeBufferBytes\nmodule.exports.testSerdeRoundtrip = __napiModule.exports.testSerdeRoundtrip\nmodule.exports.testWorkers = __napiModule.exports.testWorkers\nmodule.exports.threadsafeFunctionBuildThrowErrorWithStatus = __napiModule.exports.threadsafeFunctionBuildThrowErrorWithStatus\nmodule.exports.threadsafeFunctionClosureCapture = __napiModule.exports.threadsafeFunctionClosureCapture\nmodule.exports.threadsafeFunctionFatalMode = __napiModule.exports.threadsafeFunctionFatalMode\nmodule.exports.threadsafeFunctionFatalModeError = __napiModule.exports.threadsafeFunctionFatalModeError\nmodule.exports.threadsafeFunctionThrowError = __napiModule.exports.threadsafeFunctionThrowError\nmodule.exports.threadsafeFunctionThrowErrorWithStatus = __napiModule.exports.threadsafeFunctionThrowErrorWithStatus\nmodule.exports.throwAsyncError = __napiModule.exports.throwAsyncError\nmodule.exports.throwError = __napiModule.exports.throwError\nmodule.exports.throwErrorWithCause = __napiModule.exports.throwErrorWithCause\nmodule.exports.throwSyntaxError = __napiModule.exports.throwSyntaxError\nmodule.exports.toJsObj = __napiModule.exports.toJsObj\nmodule.exports.tsfnAsyncCall = __napiModule.exports.tsfnAsyncCall\nmodule.exports.tsfnCallWithCallback = __napiModule.exports.tsfnCallWithCallback\nmodule.exports.tsfnInEither = __napiModule.exports.tsfnInEither\nmodule.exports.tsfnReturnPromise = __napiModule.exports.tsfnReturnPromise\nmodule.exports.tsfnReturnPromiseTimeout = __napiModule.exports.tsfnReturnPromiseTimeout\nmodule.exports.tsfnThrowFromJs = __napiModule.exports.tsfnThrowFromJs\nmodule.exports.tsfnThrowFromJsCallbackContainsTsfn = __napiModule.exports.tsfnThrowFromJsCallbackContainsTsfn\nmodule.exports.tsfnWeak = __napiModule.exports.tsfnWeak\nmodule.exports.tsRename = __napiModule.exports.tsRename\nmodule.exports.u16ArrayToArray = __napiModule.exports.u16ArrayToArray\nmodule.exports.u32ArrayToArray = __napiModule.exports.u32ArrayToArray\nmodule.exports.u64ArrayToArray = __napiModule.exports.u64ArrayToArray\nmodule.exports.u8ArrayToArray = __napiModule.exports.u8ArrayToArray\nmodule.exports.uInit8ArrayFromString = __napiModule.exports.uInit8ArrayFromString\nmodule.exports.uint8ArrayFromData = __napiModule.exports.uint8ArrayFromData\nmodule.exports.uint8ArrayFromExternal = __napiModule.exports.uint8ArrayFromExternal\nmodule.exports.validateArray = __napiModule.exports.validateArray\nmodule.exports.validateBigint = __napiModule.exports.validateBigint\nmodule.exports.validateBoolean = __napiModule.exports.validateBoolean\nmodule.exports.validateBuffer = __napiModule.exports.validateBuffer\nmodule.exports.validateBufferSlice = __napiModule.exports.validateBufferSlice\nmodule.exports.validateDate = __napiModule.exports.validateDate\nmodule.exports.validateDateTime = __napiModule.exports.validateDateTime\nmodule.exports.validateEnum = __napiModule.exports.validateEnum\nmodule.exports.validateExternal = __napiModule.exports.validateExternal\nmodule.exports.validateFunction = __napiModule.exports.validateFunction\nmodule.exports.validateHashMap = __napiModule.exports.validateHashMap\nmodule.exports.validateNull = __napiModule.exports.validateNull\nmodule.exports.validateNumber = __napiModule.exports.validateNumber\nmodule.exports.validateOptional = __napiModule.exports.validateOptional\nmodule.exports.validatePromise = __napiModule.exports.validatePromise\nmodule.exports.validateString = __napiModule.exports.validateString\nmodule.exports.validateStringEnum = __napiModule.exports.validateStringEnum\nmodule.exports.validateStructuredEnum = __napiModule.exports.validateStructuredEnum\nmodule.exports.validateStructuredEnumLowercase = __napiModule.exports.validateStructuredEnumLowercase\nmodule.exports.validateSymbol = __napiModule.exports.validateSymbol\nmodule.exports.validateTypedArray = __napiModule.exports.validateTypedArray\nmodule.exports.validateTypedArraySlice = __napiModule.exports.validateTypedArraySlice\nmodule.exports.validateUint8ClampedSlice = __napiModule.exports.validateUint8ClampedSlice\nmodule.exports.validateUndefined = __napiModule.exports.validateUndefined\nmodule.exports.withAbortController = __napiModule.exports.withAbortController\nmodule.exports.withAbortSignalHandle = __napiModule.exports.withAbortSignalHandle\nmodule.exports.withinAsyncRuntimeIfAvailable = __napiModule.exports.withinAsyncRuntimeIfAvailable\nmodule.exports.withoutAbortController = __napiModule.exports.withoutAbortController\nmodule.exports.xxh64Alias = __napiModule.exports.xxh64Alias\nmodule.exports.xxh2 = __napiModule.exports.xxh2\nmodule.exports.xxh3 = __napiModule.exports.xxh3\nmodule.exports.ComplexClass = __napiModule.exports.ComplexClass\n"
  },
  {
    "path": "examples/napi/index.cjs",
    "content": "// prettier-ignore\n/* eslint-disable */\n// @ts-nocheck\n/* auto-generated by NAPI-RS */\n\nconst { readFileSync } = require('node:fs')\nlet nativeBinding = null\nconst loadErrors = []\n\nconst isMusl = () => {\n  let musl = false\n  if (process.platform === 'linux') {\n    musl = isMuslFromFilesystem()\n    if (musl === null) {\n      musl = isMuslFromReport()\n    }\n    if (musl === null) {\n      musl = isMuslFromChildProcess()\n    }\n  }\n  return musl\n}\n\nconst isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-')\n\nconst isMuslFromFilesystem = () => {\n  try {\n    return readFileSync('/usr/bin/ldd', 'utf-8').includes('musl')\n  } catch {\n    return null\n  }\n}\n\nconst isMuslFromReport = () => {\n  let report = null\n  if (typeof process.report?.getReport === 'function') {\n    process.report.excludeNetwork = true\n    report = process.report.getReport()\n  }\n  if (!report) {\n    return null\n  }\n  if (report.header && report.header.glibcVersionRuntime) {\n    return false\n  }\n  if (Array.isArray(report.sharedObjects)) {\n    if (report.sharedObjects.some(isFileMusl)) {\n      return true\n    }\n  }\n  return false\n}\n\nconst isMuslFromChildProcess = () => {\n  try {\n    return require('child_process').execSync('ldd --version', { encoding: 'utf8' }).includes('musl')\n  } catch (e) {\n    // If we reach this case, we don't know if the system is musl or not, so is better to just fallback to false\n    return false\n  }\n}\n\nfunction requireNative() {\n  if (process.env.NAPI_RS_NATIVE_LIBRARY_PATH) {\n    try {\n      return require(process.env.NAPI_RS_NATIVE_LIBRARY_PATH);\n    } catch (err) {\n      loadErrors.push(err)\n    }\n  } else if (process.platform === 'android') {\n    if (process.arch === 'arm64') {\n      try {\n        return require('./example.android-arm64.node')\n      } catch (e) {\n        loadErrors.push(e)\n      }\n      try {\n        const binding = require('@examples/napi-android-arm64')\n        const bindingPackageVersion = require('@examples/napi-android-arm64/package.json').version\n        if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n          throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n        }\n        return binding\n      } catch (e) {\n        loadErrors.push(e)\n      }\n    } else if (process.arch === 'arm') {\n      try {\n        return require('./example.android-arm-eabi.node')\n      } catch (e) {\n        loadErrors.push(e)\n      }\n      try {\n        const binding = require('@examples/napi-android-arm-eabi')\n        const bindingPackageVersion = require('@examples/napi-android-arm-eabi/package.json').version\n        if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n          throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n        }\n        return binding\n      } catch (e) {\n        loadErrors.push(e)\n      }\n    } else {\n      loadErrors.push(new Error(`Unsupported architecture on Android ${process.arch}`))\n    }\n  } else if (process.platform === 'win32') {\n    if (process.arch === 'x64') {\n      if (process.config?.variables?.shlib_suffix === 'dll.a' || process.config?.variables?.node_target_type === 'shared_library') {\n        try {\n        return require('./example.win32-x64-gnu.node')\n      } catch (e) {\n        loadErrors.push(e)\n      }\n      try {\n        const binding = require('@examples/napi-win32-x64-gnu')\n        const bindingPackageVersion = require('@examples/napi-win32-x64-gnu/package.json').version\n        if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n          throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n        }\n        return binding\n      } catch (e) {\n        loadErrors.push(e)\n      }\n      } else {\n        try {\n        return require('./example.win32-x64-msvc.node')\n      } catch (e) {\n        loadErrors.push(e)\n      }\n      try {\n        const binding = require('@examples/napi-win32-x64-msvc')\n        const bindingPackageVersion = require('@examples/napi-win32-x64-msvc/package.json').version\n        if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n          throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n        }\n        return binding\n      } catch (e) {\n        loadErrors.push(e)\n      }\n      }\n    } else if (process.arch === 'ia32') {\n      try {\n        return require('./example.win32-ia32-msvc.node')\n      } catch (e) {\n        loadErrors.push(e)\n      }\n      try {\n        const binding = require('@examples/napi-win32-ia32-msvc')\n        const bindingPackageVersion = require('@examples/napi-win32-ia32-msvc/package.json').version\n        if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n          throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n        }\n        return binding\n      } catch (e) {\n        loadErrors.push(e)\n      }\n    } else if (process.arch === 'arm64') {\n      try {\n        return require('./example.win32-arm64-msvc.node')\n      } catch (e) {\n        loadErrors.push(e)\n      }\n      try {\n        const binding = require('@examples/napi-win32-arm64-msvc')\n        const bindingPackageVersion = require('@examples/napi-win32-arm64-msvc/package.json').version\n        if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n          throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n        }\n        return binding\n      } catch (e) {\n        loadErrors.push(e)\n      }\n    } else {\n      loadErrors.push(new Error(`Unsupported architecture on Windows: ${process.arch}`))\n    }\n  } else if (process.platform === 'darwin') {\n    try {\n      return require('./example.darwin-universal.node')\n    } catch (e) {\n      loadErrors.push(e)\n    }\n    try {\n      const binding = require('@examples/napi-darwin-universal')\n      const bindingPackageVersion = require('@examples/napi-darwin-universal/package.json').version\n      if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n        throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n      }\n      return binding\n    } catch (e) {\n      loadErrors.push(e)\n    }\n    if (process.arch === 'x64') {\n      try {\n        return require('./example.darwin-x64.node')\n      } catch (e) {\n        loadErrors.push(e)\n      }\n      try {\n        const binding = require('@examples/napi-darwin-x64')\n        const bindingPackageVersion = require('@examples/napi-darwin-x64/package.json').version\n        if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n          throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n        }\n        return binding\n      } catch (e) {\n        loadErrors.push(e)\n      }\n    } else if (process.arch === 'arm64') {\n      try {\n        return require('./example.darwin-arm64.node')\n      } catch (e) {\n        loadErrors.push(e)\n      }\n      try {\n        const binding = require('@examples/napi-darwin-arm64')\n        const bindingPackageVersion = require('@examples/napi-darwin-arm64/package.json').version\n        if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n          throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n        }\n        return binding\n      } catch (e) {\n        loadErrors.push(e)\n      }\n    } else {\n      loadErrors.push(new Error(`Unsupported architecture on macOS: ${process.arch}`))\n    }\n  } else if (process.platform === 'freebsd') {\n    if (process.arch === 'x64') {\n      try {\n        return require('./example.freebsd-x64.node')\n      } catch (e) {\n        loadErrors.push(e)\n      }\n      try {\n        const binding = require('@examples/napi-freebsd-x64')\n        const bindingPackageVersion = require('@examples/napi-freebsd-x64/package.json').version\n        if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n          throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n        }\n        return binding\n      } catch (e) {\n        loadErrors.push(e)\n      }\n    } else if (process.arch === 'arm64') {\n      try {\n        return require('./example.freebsd-arm64.node')\n      } catch (e) {\n        loadErrors.push(e)\n      }\n      try {\n        const binding = require('@examples/napi-freebsd-arm64')\n        const bindingPackageVersion = require('@examples/napi-freebsd-arm64/package.json').version\n        if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n          throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n        }\n        return binding\n      } catch (e) {\n        loadErrors.push(e)\n      }\n    } else {\n      loadErrors.push(new Error(`Unsupported architecture on FreeBSD: ${process.arch}`))\n    }\n  } else if (process.platform === 'linux') {\n    if (process.arch === 'x64') {\n      if (isMusl()) {\n        try {\n          return require('./example.linux-x64-musl.node')\n        } catch (e) {\n          loadErrors.push(e)\n        }\n        try {\n          const binding = require('@examples/napi-linux-x64-musl')\n          const bindingPackageVersion = require('@examples/napi-linux-x64-musl/package.json').version\n          if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n            throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n          }\n          return binding\n        } catch (e) {\n          loadErrors.push(e)\n        }\n      } else {\n        try {\n          return require('./example.linux-x64-gnu.node')\n        } catch (e) {\n          loadErrors.push(e)\n        }\n        try {\n          const binding = require('@examples/napi-linux-x64-gnu')\n          const bindingPackageVersion = require('@examples/napi-linux-x64-gnu/package.json').version\n          if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n            throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n          }\n          return binding\n        } catch (e) {\n          loadErrors.push(e)\n        }\n      }\n    } else if (process.arch === 'arm64') {\n      if (isMusl()) {\n        try {\n          return require('./example.linux-arm64-musl.node')\n        } catch (e) {\n          loadErrors.push(e)\n        }\n        try {\n          const binding = require('@examples/napi-linux-arm64-musl')\n          const bindingPackageVersion = require('@examples/napi-linux-arm64-musl/package.json').version\n          if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n            throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n          }\n          return binding\n        } catch (e) {\n          loadErrors.push(e)\n        }\n      } else {\n        try {\n          return require('./example.linux-arm64-gnu.node')\n        } catch (e) {\n          loadErrors.push(e)\n        }\n        try {\n          const binding = require('@examples/napi-linux-arm64-gnu')\n          const bindingPackageVersion = require('@examples/napi-linux-arm64-gnu/package.json').version\n          if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n            throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n          }\n          return binding\n        } catch (e) {\n          loadErrors.push(e)\n        }\n      }\n    } else if (process.arch === 'arm') {\n      if (isMusl()) {\n        try {\n          return require('./example.linux-arm-musleabihf.node')\n        } catch (e) {\n          loadErrors.push(e)\n        }\n        try {\n          const binding = require('@examples/napi-linux-arm-musleabihf')\n          const bindingPackageVersion = require('@examples/napi-linux-arm-musleabihf/package.json').version\n          if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n            throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n          }\n          return binding\n        } catch (e) {\n          loadErrors.push(e)\n        }\n      } else {\n        try {\n          return require('./example.linux-arm-gnueabihf.node')\n        } catch (e) {\n          loadErrors.push(e)\n        }\n        try {\n          const binding = require('@examples/napi-linux-arm-gnueabihf')\n          const bindingPackageVersion = require('@examples/napi-linux-arm-gnueabihf/package.json').version\n          if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n            throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n          }\n          return binding\n        } catch (e) {\n          loadErrors.push(e)\n        }\n      }\n    } else if (process.arch === 'loong64') {\n      if (isMusl()) {\n        try {\n          return require('./example.linux-loong64-musl.node')\n        } catch (e) {\n          loadErrors.push(e)\n        }\n        try {\n          const binding = require('@examples/napi-linux-loong64-musl')\n          const bindingPackageVersion = require('@examples/napi-linux-loong64-musl/package.json').version\n          if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n            throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n          }\n          return binding\n        } catch (e) {\n          loadErrors.push(e)\n        }\n      } else {\n        try {\n          return require('./example.linux-loong64-gnu.node')\n        } catch (e) {\n          loadErrors.push(e)\n        }\n        try {\n          const binding = require('@examples/napi-linux-loong64-gnu')\n          const bindingPackageVersion = require('@examples/napi-linux-loong64-gnu/package.json').version\n          if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n            throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n          }\n          return binding\n        } catch (e) {\n          loadErrors.push(e)\n        }\n      }\n    } else if (process.arch === 'riscv64') {\n      if (isMusl()) {\n        try {\n          return require('./example.linux-riscv64-musl.node')\n        } catch (e) {\n          loadErrors.push(e)\n        }\n        try {\n          const binding = require('@examples/napi-linux-riscv64-musl')\n          const bindingPackageVersion = require('@examples/napi-linux-riscv64-musl/package.json').version\n          if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n            throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n          }\n          return binding\n        } catch (e) {\n          loadErrors.push(e)\n        }\n      } else {\n        try {\n          return require('./example.linux-riscv64-gnu.node')\n        } catch (e) {\n          loadErrors.push(e)\n        }\n        try {\n          const binding = require('@examples/napi-linux-riscv64-gnu')\n          const bindingPackageVersion = require('@examples/napi-linux-riscv64-gnu/package.json').version\n          if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n            throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n          }\n          return binding\n        } catch (e) {\n          loadErrors.push(e)\n        }\n      }\n    } else if (process.arch === 'ppc64') {\n      try {\n        return require('./example.linux-ppc64-gnu.node')\n      } catch (e) {\n        loadErrors.push(e)\n      }\n      try {\n        const binding = require('@examples/napi-linux-ppc64-gnu')\n        const bindingPackageVersion = require('@examples/napi-linux-ppc64-gnu/package.json').version\n        if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n          throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n        }\n        return binding\n      } catch (e) {\n        loadErrors.push(e)\n      }\n    } else if (process.arch === 's390x') {\n      try {\n        return require('./example.linux-s390x-gnu.node')\n      } catch (e) {\n        loadErrors.push(e)\n      }\n      try {\n        const binding = require('@examples/napi-linux-s390x-gnu')\n        const bindingPackageVersion = require('@examples/napi-linux-s390x-gnu/package.json').version\n        if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n          throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n        }\n        return binding\n      } catch (e) {\n        loadErrors.push(e)\n      }\n    } else {\n      loadErrors.push(new Error(`Unsupported architecture on Linux: ${process.arch}`))\n    }\n  } else if (process.platform === 'openharmony') {\n    if (process.arch === 'arm64') {\n      try {\n        return require('./example.openharmony-arm64.node')\n      } catch (e) {\n        loadErrors.push(e)\n      }\n      try {\n        const binding = require('@examples/napi-openharmony-arm64')\n        const bindingPackageVersion = require('@examples/napi-openharmony-arm64/package.json').version\n        if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n          throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n        }\n        return binding\n      } catch (e) {\n        loadErrors.push(e)\n      }\n    } else if (process.arch === 'x64') {\n      try {\n        return require('./example.openharmony-x64.node')\n      } catch (e) {\n        loadErrors.push(e)\n      }\n      try {\n        const binding = require('@examples/napi-openharmony-x64')\n        const bindingPackageVersion = require('@examples/napi-openharmony-x64/package.json').version\n        if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n          throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n        }\n        return binding\n      } catch (e) {\n        loadErrors.push(e)\n      }\n    } else if (process.arch === 'arm') {\n      try {\n        return require('./example.openharmony-arm.node')\n      } catch (e) {\n        loadErrors.push(e)\n      }\n      try {\n        const binding = require('@examples/napi-openharmony-arm')\n        const bindingPackageVersion = require('@examples/napi-openharmony-arm/package.json').version\n        if (bindingPackageVersion !== '0.0.0' && process.env.NAPI_RS_ENFORCE_VERSION_CHECK && process.env.NAPI_RS_ENFORCE_VERSION_CHECK !== '0') {\n          throw new Error(`Native binding package version mismatch, expected 0.0.0 but got ${bindingPackageVersion}. You can reinstall dependencies to fix this issue.`)\n        }\n        return binding\n      } catch (e) {\n        loadErrors.push(e)\n      }\n    } else {\n      loadErrors.push(new Error(`Unsupported architecture on OpenHarmony: ${process.arch}`))\n    }\n  } else {\n    loadErrors.push(new Error(`Unsupported OS: ${process.platform}, architecture: ${process.arch}`))\n  }\n}\n\nnativeBinding = requireNative()\n\nif (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {\n  let wasiBinding = null\n  let wasiBindingError = null\n  try {\n    wasiBinding = require('./example.wasi.cjs')\n    nativeBinding = wasiBinding\n  } catch (err) {\n    if (process.env.NAPI_RS_FORCE_WASI) {\n      wasiBindingError = err\n    }\n  }\n  if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {\n    try {\n      wasiBinding = require('@examples/napi-wasm32-wasi')\n      nativeBinding = wasiBinding\n    } catch (err) {\n      if (process.env.NAPI_RS_FORCE_WASI) {\n        if (!wasiBindingError) {\n          wasiBindingError = err\n        } else {\n          wasiBindingError.cause = err\n        }\n        loadErrors.push(err)\n      }\n    }\n  }\n  if (process.env.NAPI_RS_FORCE_WASI === 'error' && !wasiBinding) {\n    const error = new Error('WASI binding not found and NAPI_RS_FORCE_WASI is set to error')\n    error.cause = wasiBindingError\n    throw error\n  }\n}\n\nif (!nativeBinding) {\n  if (loadErrors.length > 0) {\n    throw new Error(\n      `Cannot find native binding. ` +\n        `npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). ` +\n        'Please try `npm i` again after removing both package-lock.json and node_modules directory.',\n      {\n        cause: loadErrors.reduce((err, cur) => {\n          cur.cause = err\n          return cur\n        }),\n      },\n    )\n  }\n  throw new Error(`Failed to load native binding`)\n}\n\nmodule.exports = nativeBinding\nmodule.exports.Animal = nativeBinding.Animal\nmodule.exports.AnimalWithDefaultConstructor = nativeBinding.AnimalWithDefaultConstructor\nmodule.exports.AnotherClassForEither = nativeBinding.AnotherClassForEither\nmodule.exports.AnotherCssStyleSheet = nativeBinding.AnotherCssStyleSheet\nmodule.exports.AnotherCSSStyleSheet = nativeBinding.AnotherCSSStyleSheet\nmodule.exports.Asset = nativeBinding.Asset\nmodule.exports.JsAsset = nativeBinding.JsAsset\nmodule.exports.Assets = nativeBinding.Assets\nmodule.exports.JsAssets = nativeBinding.JsAssets\nmodule.exports.AsyncDataSource = nativeBinding.AsyncDataSource\nmodule.exports.AsyncFib = nativeBinding.AsyncFib\nmodule.exports.AsyncThrowClass = nativeBinding.AsyncThrowClass\nmodule.exports.Bird = nativeBinding.Bird\nmodule.exports.Blake2BHasher = nativeBinding.Blake2BHasher\nmodule.exports.Blake2bHasher = nativeBinding.Blake2bHasher\nmodule.exports.Blake2BKey = nativeBinding.Blake2BKey\nmodule.exports.Blake2bKey = nativeBinding.Blake2bKey\nmodule.exports.CatchOnConstructor = nativeBinding.CatchOnConstructor\nmodule.exports.CatchOnConstructor2 = nativeBinding.CatchOnConstructor2\nmodule.exports.ClassInArray = nativeBinding.ClassInArray\nmodule.exports.ClassReturnInPromise = nativeBinding.ClassReturnInPromise\nmodule.exports.ClassWithFactory = nativeBinding.ClassWithFactory\nmodule.exports.ClassWithLifetime = nativeBinding.ClassWithLifetime\nmodule.exports.Context = nativeBinding.Context\nmodule.exports.CounterRepro = nativeBinding.CounterRepro\nmodule.exports.CreateStringClass = nativeBinding.CreateStringClass\nmodule.exports.CssRuleList = nativeBinding.CssRuleList\nmodule.exports.CSSRuleList = nativeBinding.CSSRuleList\nmodule.exports.CssStyleSheet = nativeBinding.CssStyleSheet\nmodule.exports.CSSStyleSheet = nativeBinding.CSSStyleSheet\nmodule.exports.CustomFinalize = nativeBinding.CustomFinalize\nmodule.exports.CustomStruct = nativeBinding.CustomStruct\nmodule.exports.DefaultUseNullableClass = nativeBinding.DefaultUseNullableClass\nmodule.exports.DelayedCounter = nativeBinding.DelayedCounter\nmodule.exports.Dog = nativeBinding.Dog\nmodule.exports.Fib = nativeBinding.Fib\nmodule.exports.Fib2 = nativeBinding.Fib2\nmodule.exports.Fib3 = nativeBinding.Fib3\nmodule.exports.Fib4 = nativeBinding.Fib4\nmodule.exports.GetterSetterWithClosures = nativeBinding.GetterSetterWithClosures\nmodule.exports.JsClassForEither = nativeBinding.JsClassForEither\nmodule.exports.JSOnlyMethodsClass = nativeBinding.JSOnlyMethodsClass\nmodule.exports.RustOnlyMethodsClass = nativeBinding.RustOnlyMethodsClass\nmodule.exports.JsRemote = nativeBinding.JsRemote\nmodule.exports.JsRepo = nativeBinding.JsRepo\nmodule.exports.MyJsNamedClass = nativeBinding.MyJsNamedClass\nmodule.exports.OriginalRustNameForJsNamedStruct = nativeBinding.OriginalRustNameForJsNamedStruct\nmodule.exports.NinjaTurtle = nativeBinding.NinjaTurtle\nmodule.exports.NotUseNullableClass = nativeBinding.NotUseNullableClass\nmodule.exports.NotWritableClass = nativeBinding.NotWritableClass\nmodule.exports.Optional = nativeBinding.Optional\nmodule.exports.PackageJsonReader = nativeBinding.PackageJsonReader\nmodule.exports.Reader = nativeBinding.Reader\nmodule.exports.Selector = nativeBinding.Selector\nmodule.exports.Thing = nativeBinding.Thing\nmodule.exports.ThingList = nativeBinding.ThingList\nmodule.exports.UseNullableClass = nativeBinding.UseNullableClass\nmodule.exports.Width = nativeBinding.Width\nmodule.exports.acceptArraybuffer = nativeBinding.acceptArraybuffer\nmodule.exports.acceptSlice = nativeBinding.acceptSlice\nmodule.exports.acceptStream = nativeBinding.acceptStream\nmodule.exports.acceptThreadsafeFunction = nativeBinding.acceptThreadsafeFunction\nmodule.exports.acceptThreadsafeFunctionFatal = nativeBinding.acceptThreadsafeFunctionFatal\nmodule.exports.acceptThreadsafeFunctionTupleArgs = nativeBinding.acceptThreadsafeFunctionTupleArgs\nmodule.exports.acceptUint8ClampedSlice = nativeBinding.acceptUint8ClampedSlice\nmodule.exports.acceptUint8ClampedSliceAndBufferSlice = nativeBinding.acceptUint8ClampedSliceAndBufferSlice\nmodule.exports.acceptUntypedTypedArray = nativeBinding.acceptUntypedTypedArray\nmodule.exports.add = nativeBinding.add\nmodule.exports.ALIAS = nativeBinding.ALIAS\nmodule.exports.AliasedEnum = nativeBinding.AliasedEnum\nmodule.exports.appendBuffer = nativeBinding.appendBuffer\nmodule.exports.apply0 = nativeBinding.apply0\nmodule.exports.apply1 = nativeBinding.apply1\nmodule.exports.arrayBufferFromData = nativeBinding.arrayBufferFromData\nmodule.exports.arrayBufferFromExternal = nativeBinding.arrayBufferFromExternal\nmodule.exports.arrayBufferPassThrough = nativeBinding.arrayBufferPassThrough\nmodule.exports.arrayParams = nativeBinding.arrayParams\nmodule.exports.asyncBufferToArray = nativeBinding.asyncBufferToArray\nmodule.exports.asyncMultiTwo = nativeBinding.asyncMultiTwo\nmodule.exports.asyncPlus100 = nativeBinding.asyncPlus100\nmodule.exports.asyncReduceBuffer = nativeBinding.asyncReduceBuffer\nmodule.exports.asyncResolveArray = nativeBinding.asyncResolveArray\nmodule.exports.asyncTaskArraybuffer = nativeBinding.asyncTaskArraybuffer\nmodule.exports.asyncTaskFinally = nativeBinding.asyncTaskFinally\nmodule.exports.asyncTaskOptionalReturn = nativeBinding.asyncTaskOptionalReturn\nmodule.exports.asyncTaskReadFile = nativeBinding.asyncTaskReadFile\nmodule.exports.asyncTaskVoidReturn = nativeBinding.asyncTaskVoidReturn\nmodule.exports.bigintAdd = nativeBinding.bigintAdd\nmodule.exports.bigintFromI128 = nativeBinding.bigintFromI128\nmodule.exports.bigintFromI64 = nativeBinding.bigintFromI64\nmodule.exports.bigintGetU64AsString = nativeBinding.bigintGetU64AsString\nmodule.exports.btreeSetToJs = nativeBinding.btreeSetToJs\nmodule.exports.btreeSetToRust = nativeBinding.btreeSetToRust\nmodule.exports.bufferPassThrough = nativeBinding.bufferPassThrough\nmodule.exports.bufferWithAsyncBlock = nativeBinding.bufferWithAsyncBlock\nmodule.exports.buildThreadsafeFunctionFromFunction = nativeBinding.buildThreadsafeFunctionFromFunction\nmodule.exports.buildThreadsafeFunctionFromFunctionCalleeHandle = nativeBinding.buildThreadsafeFunctionFromFunctionCalleeHandle\nmodule.exports.call0 = nativeBinding.call0\nmodule.exports.call1 = nativeBinding.call1\nmodule.exports.call2 = nativeBinding.call2\nmodule.exports.callAsyncWithUnknownReturnValue = nativeBinding.callAsyncWithUnknownReturnValue\nmodule.exports.callbackInSpawn = nativeBinding.callbackInSpawn\nmodule.exports.callbackReturnPromise = nativeBinding.callbackReturnPromise\nmodule.exports.callbackReturnPromiseAndSpawn = nativeBinding.callbackReturnPromiseAndSpawn\nmodule.exports.callCatchOnPromise = nativeBinding.callCatchOnPromise\nmodule.exports.callFinallyOnPromise = nativeBinding.callFinallyOnPromise\nmodule.exports.callFunction = nativeBinding.callFunction\nmodule.exports.callFunctionWithArg = nativeBinding.callFunctionWithArg\nmodule.exports.callFunctionWithArgAndCtx = nativeBinding.callFunctionWithArgAndCtx\nmodule.exports.callLongThreadsafeFunction = nativeBinding.callLongThreadsafeFunction\nmodule.exports.callRuleHandler = nativeBinding.callRuleHandler\nmodule.exports.callThenOnPromise = nativeBinding.callThenOnPromise\nmodule.exports.callThreadsafeFunction = nativeBinding.callThreadsafeFunction\nmodule.exports.captureErrorInCallback = nativeBinding.captureErrorInCallback\nmodule.exports.chronoDateAdd1Minute = nativeBinding.chronoDateAdd1Minute\nmodule.exports.chronoDateFixtureReturn1 = nativeBinding.chronoDateFixtureReturn1\nmodule.exports.chronoDateFixtureReturn2 = nativeBinding.chronoDateFixtureReturn2\nmodule.exports.chronoDateWithTimezoneReturn = nativeBinding.chronoDateWithTimezoneReturn\nmodule.exports.chronoDateWithTimezoneToMillis = nativeBinding.chronoDateWithTimezoneToMillis\nmodule.exports.chronoLocalDateReturn = nativeBinding.chronoLocalDateReturn\nmodule.exports.chronoLocalDateToMillis = nativeBinding.chronoLocalDateToMillis\nmodule.exports.chronoNativeDateTime = nativeBinding.chronoNativeDateTime\nmodule.exports.chronoNativeDateTimeReturn = nativeBinding.chronoNativeDateTimeReturn\nmodule.exports.chronoUtcDateReturn = nativeBinding.chronoUtcDateReturn\nmodule.exports.chronoUtcDateToMillis = nativeBinding.chronoUtcDateToMillis\nmodule.exports.compressSync = nativeBinding.compressSync\nmodule.exports.concatLatin1 = nativeBinding.concatLatin1\nmodule.exports.concatStr = nativeBinding.concatStr\nmodule.exports.concatUtf16 = nativeBinding.concatUtf16\nmodule.exports.contains = nativeBinding.contains\nmodule.exports.convertU32Array = nativeBinding.convertU32Array\nmodule.exports.createArraybuffer = nativeBinding.createArraybuffer\nmodule.exports.createBigInt = nativeBinding.createBigInt\nmodule.exports.createBigIntI64 = nativeBinding.createBigIntI64\nmodule.exports.createBufferSliceFromCopiedData = nativeBinding.createBufferSliceFromCopiedData\nmodule.exports.createExternal = nativeBinding.createExternal\nmodule.exports.createExternalBufferSlice = nativeBinding.createExternalBufferSlice\nmodule.exports.createExternalLatin1CustomFinalize = nativeBinding.createExternalLatin1CustomFinalize\nmodule.exports.createExternalLatin1Empty = nativeBinding.createExternalLatin1Empty\nmodule.exports.createExternalLatin1Long = nativeBinding.createExternalLatin1Long\nmodule.exports.createExternalLatin1Short = nativeBinding.createExternalLatin1Short\nmodule.exports.createExternalLatin1String = nativeBinding.createExternalLatin1String\nmodule.exports.createExternalLatin1WithLatin1Chars = nativeBinding.createExternalLatin1WithLatin1Chars\nmodule.exports.createExternalRef = nativeBinding.createExternalRef\nmodule.exports.createExternalString = nativeBinding.createExternalString\nmodule.exports.createExternalTypedArray = nativeBinding.createExternalTypedArray\nmodule.exports.createExternalUtf16String = nativeBinding.createExternalUtf16String\nmodule.exports.createFunction = nativeBinding.createFunction\nmodule.exports.createI32ArrayFromExternal = nativeBinding.createI32ArrayFromExternal\nmodule.exports.createObj = nativeBinding.createObj\nmodule.exports.createObjectRef = nativeBinding.createObjectRef\nmodule.exports.createObjectWithClassField = nativeBinding.createObjectWithClassField\nmodule.exports.createObjWithProperty = nativeBinding.createObjWithProperty\nmodule.exports.createOptionalExternal = nativeBinding.createOptionalExternal\nmodule.exports.createReadableStream = nativeBinding.createReadableStream\nmodule.exports.createReadableStreamFromClass = nativeBinding.createReadableStreamFromClass\nmodule.exports.createReadableStreamWithObject = nativeBinding.createReadableStreamWithObject\nmodule.exports.createReferenceOnFunction = nativeBinding.createReferenceOnFunction\nmodule.exports.createRejectedPromise = nativeBinding.createRejectedPromise\nmodule.exports.createResolvedPromise = nativeBinding.createResolvedPromise\nmodule.exports.createStaticLatin1String = nativeBinding.createStaticLatin1String\nmodule.exports.createStaticUtf16String = nativeBinding.createStaticUtf16String\nmodule.exports.createSymbol = nativeBinding.createSymbol\nmodule.exports.createSymbolFor = nativeBinding.createSymbolFor\nmodule.exports.createSymbolRef = nativeBinding.createSymbolRef\nmodule.exports.createUint8ClampedArrayFromData = nativeBinding.createUint8ClampedArrayFromData\nmodule.exports.createUint8ClampedArrayFromExternal = nativeBinding.createUint8ClampedArrayFromExternal\nmodule.exports.createZeroCopyLatin1String = nativeBinding.createZeroCopyLatin1String\nmodule.exports.createZeroCopyUtf16String = nativeBinding.createZeroCopyUtf16String\nmodule.exports.CustomNumEnum = nativeBinding.CustomNumEnum\nmodule.exports.customStatusCode = nativeBinding.customStatusCode\nmodule.exports.CustomStringEnum = nativeBinding.CustomStringEnum\nmodule.exports.dateToNumber = nativeBinding.dateToNumber\nmodule.exports.DEFAULT_COST = nativeBinding.DEFAULT_COST\nmodule.exports.defineClass = nativeBinding.defineClass\nmodule.exports.derefUint8Array = nativeBinding.derefUint8Array\nmodule.exports.either3 = nativeBinding.either3\nmodule.exports.either4 = nativeBinding.either4\nmodule.exports.eitherBoolOrFunction = nativeBinding.eitherBoolOrFunction\nmodule.exports.eitherBoolOrTuple = nativeBinding.eitherBoolOrTuple\nmodule.exports.eitherF64OrU32 = nativeBinding.eitherF64OrU32\nmodule.exports.eitherFromObjects = nativeBinding.eitherFromObjects\nmodule.exports.eitherFromOption = nativeBinding.eitherFromOption\nmodule.exports.eitherPromiseInEitherA = nativeBinding.eitherPromiseInEitherA\nmodule.exports.eitherStringOrNumber = nativeBinding.eitherStringOrNumber\nmodule.exports.Empty = nativeBinding.Empty\nmodule.exports.enumToI32 = nativeBinding.enumToI32\nmodule.exports.errorMessageContainsNullByte = nativeBinding.errorMessageContainsNullByte\nmodule.exports.esmResolve = nativeBinding.esmResolve\nmodule.exports.extendsJavascriptError = nativeBinding.extendsJavascriptError\nmodule.exports.f32ArrayToArray = nativeBinding.f32ArrayToArray\nmodule.exports.f64ArrayToArray = nativeBinding.f64ArrayToArray\nmodule.exports.fetch = nativeBinding.fetch\nmodule.exports.fibonacci = nativeBinding.fibonacci\nmodule.exports.fnReceivedAliased = nativeBinding.fnReceivedAliased\nmodule.exports.generateFunctionAndCallIt = nativeBinding.generateFunctionAndCallIt\nmodule.exports.getBigintJsonValue = nativeBinding.getBigintJsonValue\nmodule.exports.getBtreeMapping = nativeBinding.getBtreeMapping\nmodule.exports.getBuffer = nativeBinding.getBuffer\nmodule.exports.getBufferSlice = nativeBinding.getBufferSlice\nmodule.exports.getClassFromArray = nativeBinding.getClassFromArray\nmodule.exports.getCwd = nativeBinding.getCwd\nmodule.exports.getEmptyBuffer = nativeBinding.getEmptyBuffer\nmodule.exports.getEmptyTypedArray = nativeBinding.getEmptyTypedArray\nmodule.exports.getExternal = nativeBinding.getExternal\nmodule.exports.getGlobal = nativeBinding.getGlobal\nmodule.exports.getIndexMapping = nativeBinding.getIndexMapping\nmodule.exports.getIndexMappingWithHasher = nativeBinding.getIndexMappingWithHasher\nmodule.exports.getMapping = nativeBinding.getMapping\nmodule.exports.getMappingWithHasher = nativeBinding.getMappingWithHasher\nmodule.exports.getModuleFileName = nativeBinding.getModuleFileName\nmodule.exports.getMyVec = nativeBinding.getMyVec\nmodule.exports.getNestedNumArr = nativeBinding.getNestedNumArr\nmodule.exports.getNull = nativeBinding.getNull\nmodule.exports.getNullByteProperty = nativeBinding.getNullByteProperty\nmodule.exports.getNumArr = nativeBinding.getNumArr\nmodule.exports.getNums = nativeBinding.getNums\nmodule.exports.getOptionalExternal = nativeBinding.getOptionalExternal\nmodule.exports.getPackageJsonName = nativeBinding.getPackageJsonName\nmodule.exports.getStrFromObject = nativeBinding.getStrFromObject\nmodule.exports.getterFromObj = nativeBinding.getterFromObj\nmodule.exports.getTuple = nativeBinding.getTuple\nmodule.exports.getUndefined = nativeBinding.getUndefined\nmodule.exports.getWords = nativeBinding.getWords\nmodule.exports.i16ArrayToArray = nativeBinding.i16ArrayToArray\nmodule.exports.i32ArrayToArray = nativeBinding.i32ArrayToArray\nmodule.exports.i64ArrayToArray = nativeBinding.i64ArrayToArray\nmodule.exports.i8ArrayToArray = nativeBinding.i8ArrayToArray\nmodule.exports.indexmapPassthrough = nativeBinding.indexmapPassthrough\nmodule.exports.indexSetToJs = nativeBinding.indexSetToJs\nmodule.exports.indexSetToRust = nativeBinding.indexSetToRust\nmodule.exports.intoUtf8 = nativeBinding.intoUtf8\nmodule.exports.jsErrorCallback = nativeBinding.jsErrorCallback\nmodule.exports.Kind = nativeBinding.Kind\nmodule.exports.KindInValidate = nativeBinding.KindInValidate\nmodule.exports.listObjKeys = nativeBinding.listObjKeys\nmodule.exports.mapOption = nativeBinding.mapOption\nmodule.exports.mergeTupleArray = nativeBinding.mergeTupleArray\nmodule.exports.mutateArraybuffer = nativeBinding.mutateArraybuffer\nmodule.exports.mutateExternal = nativeBinding.mutateExternal\nmodule.exports.mutateOptionalExternal = nativeBinding.mutateOptionalExternal\nmodule.exports.mutateTypedArray = nativeBinding.mutateTypedArray\nmodule.exports.objectGetNamedPropertyShouldPerformTypecheck = nativeBinding.objectGetNamedPropertyShouldPerformTypecheck\nmodule.exports.objectWithCApis = nativeBinding.objectWithCApis\nmodule.exports.optionalCallbackTypes = nativeBinding.optionalCallbackTypes\nmodule.exports.optionEnd = nativeBinding.optionEnd\nmodule.exports.optionOnly = nativeBinding.optionOnly\nmodule.exports.optionStart = nativeBinding.optionStart\nmodule.exports.optionStartEnd = nativeBinding.optionStartEnd\nmodule.exports.overrideIndividualArgOnFunction = nativeBinding.overrideIndividualArgOnFunction\nmodule.exports.overrideIndividualArgOnFunctionWithCbArg = nativeBinding.overrideIndividualArgOnFunctionWithCbArg\nmodule.exports.overrideWholeFunctionType = nativeBinding.overrideWholeFunctionType\nmodule.exports.panic = nativeBinding.panic\nmodule.exports.panicInAsync = nativeBinding.panicInAsync\nmodule.exports.passSetToJs = nativeBinding.passSetToJs\nmodule.exports.passSetToRust = nativeBinding.passSetToRust\nmodule.exports.passSetWithHasherToJs = nativeBinding.passSetWithHasherToJs\nmodule.exports.plusOne = nativeBinding.plusOne\nmodule.exports.promiseInEither = nativeBinding.promiseInEither\nmodule.exports.promiseRawReturnClassInstance = nativeBinding.promiseRawReturnClassInstance\nmodule.exports.readFile = nativeBinding.readFile\nmodule.exports.readFileAsync = nativeBinding.readFileAsync\nmodule.exports.readPackageJson = nativeBinding.readPackageJson\nmodule.exports.receiveAllOptionalObject = nativeBinding.receiveAllOptionalObject\nmodule.exports.receiveBindingVitePluginMeta = nativeBinding.receiveBindingVitePluginMeta\nmodule.exports.receiveBufferSliceWithLifetime = nativeBinding.receiveBufferSliceWithLifetime\nmodule.exports.receiveClassOrNumber = nativeBinding.receiveClassOrNumber\nmodule.exports.receiveDifferentClass = nativeBinding.receiveDifferentClass\nmodule.exports.receiveMutClassOrNumber = nativeBinding.receiveMutClassOrNumber\nmodule.exports.receiveObjectOnlyFromJs = nativeBinding.receiveObjectOnlyFromJs\nmodule.exports.receiveObjectWithClassField = nativeBinding.receiveObjectWithClassField\nmodule.exports.receiveStrictObject = nativeBinding.receiveStrictObject\nmodule.exports.receiveString = nativeBinding.receiveString\nmodule.exports.referenceAsCallback = nativeBinding.referenceAsCallback\nmodule.exports.returnCString = nativeBinding.returnCString\nmodule.exports.returnEither = nativeBinding.returnEither\nmodule.exports.returnEitherClass = nativeBinding.returnEitherClass\nmodule.exports.returnFromSharedCrate = nativeBinding.returnFromSharedCrate\nmodule.exports.returnNull = nativeBinding.returnNull\nmodule.exports.returnObjectOnlyToJs = nativeBinding.returnObjectOnlyToJs\nmodule.exports.returnUndefined = nativeBinding.returnUndefined\nmodule.exports.returnUndefinedIfInvalid = nativeBinding.returnUndefinedIfInvalid\nmodule.exports.returnUndefinedIfInvalidPromise = nativeBinding.returnUndefinedIfInvalidPromise\nmodule.exports.roundtripStr = nativeBinding.roundtripStr\nmodule.exports.runScript = nativeBinding.runScript\nmodule.exports.setNullByteProperty = nativeBinding.setNullByteProperty\nmodule.exports.setSymbolInObj = nativeBinding.setSymbolInObj\nmodule.exports.shorterEscapableScope = nativeBinding.shorterEscapableScope\nmodule.exports.shorterScope = nativeBinding.shorterScope\nmodule.exports.shutdownRuntime = nativeBinding.shutdownRuntime\nmodule.exports.spawnFutureLifetime = nativeBinding.spawnFutureLifetime\nmodule.exports.spawnThreadInThread = nativeBinding.spawnThreadInThread\nmodule.exports.Status = nativeBinding.Status\nmodule.exports.StatusInValidate = nativeBinding.StatusInValidate\nmodule.exports.StringEnum = nativeBinding.StringEnum\nmodule.exports.sumBtreeMapping = nativeBinding.sumBtreeMapping\nmodule.exports.sumIndexMapping = nativeBinding.sumIndexMapping\nmodule.exports.sumMapping = nativeBinding.sumMapping\nmodule.exports.sumNums = nativeBinding.sumNums\nmodule.exports.testEscapedQuotesInComments = nativeBinding.testEscapedQuotesInComments\nmodule.exports.testLatin1Methods = nativeBinding.testLatin1Methods\nmodule.exports.testSerdeBigNumberPrecision = nativeBinding.testSerdeBigNumberPrecision\nmodule.exports.testSerdeBufferBytes = nativeBinding.testSerdeBufferBytes\nmodule.exports.testSerdeRoundtrip = nativeBinding.testSerdeRoundtrip\nmodule.exports.testWorkers = nativeBinding.testWorkers\nmodule.exports.threadsafeFunctionBuildThrowErrorWithStatus = nativeBinding.threadsafeFunctionBuildThrowErrorWithStatus\nmodule.exports.threadsafeFunctionClosureCapture = nativeBinding.threadsafeFunctionClosureCapture\nmodule.exports.threadsafeFunctionFatalMode = nativeBinding.threadsafeFunctionFatalMode\nmodule.exports.threadsafeFunctionFatalModeError = nativeBinding.threadsafeFunctionFatalModeError\nmodule.exports.threadsafeFunctionThrowError = nativeBinding.threadsafeFunctionThrowError\nmodule.exports.threadsafeFunctionThrowErrorWithStatus = nativeBinding.threadsafeFunctionThrowErrorWithStatus\nmodule.exports.throwAsyncError = nativeBinding.throwAsyncError\nmodule.exports.throwError = nativeBinding.throwError\nmodule.exports.throwErrorWithCause = nativeBinding.throwErrorWithCause\nmodule.exports.throwSyntaxError = nativeBinding.throwSyntaxError\nmodule.exports.toJsObj = nativeBinding.toJsObj\nmodule.exports.tsfnAsyncCall = nativeBinding.tsfnAsyncCall\nmodule.exports.tsfnCallWithCallback = nativeBinding.tsfnCallWithCallback\nmodule.exports.tsfnInEither = nativeBinding.tsfnInEither\nmodule.exports.tsfnReturnPromise = nativeBinding.tsfnReturnPromise\nmodule.exports.tsfnReturnPromiseTimeout = nativeBinding.tsfnReturnPromiseTimeout\nmodule.exports.tsfnThrowFromJs = nativeBinding.tsfnThrowFromJs\nmodule.exports.tsfnThrowFromJsCallbackContainsTsfn = nativeBinding.tsfnThrowFromJsCallbackContainsTsfn\nmodule.exports.tsfnWeak = nativeBinding.tsfnWeak\nmodule.exports.tsRename = nativeBinding.tsRename\nmodule.exports.u16ArrayToArray = nativeBinding.u16ArrayToArray\nmodule.exports.u32ArrayToArray = nativeBinding.u32ArrayToArray\nmodule.exports.u64ArrayToArray = nativeBinding.u64ArrayToArray\nmodule.exports.u8ArrayToArray = nativeBinding.u8ArrayToArray\nmodule.exports.uInit8ArrayFromString = nativeBinding.uInit8ArrayFromString\nmodule.exports.uint8ArrayFromData = nativeBinding.uint8ArrayFromData\nmodule.exports.uint8ArrayFromExternal = nativeBinding.uint8ArrayFromExternal\nmodule.exports.validateArray = nativeBinding.validateArray\nmodule.exports.validateBigint = nativeBinding.validateBigint\nmodule.exports.validateBoolean = nativeBinding.validateBoolean\nmodule.exports.validateBuffer = nativeBinding.validateBuffer\nmodule.exports.validateBufferSlice = nativeBinding.validateBufferSlice\nmodule.exports.validateDate = nativeBinding.validateDate\nmodule.exports.validateDateTime = nativeBinding.validateDateTime\nmodule.exports.validateEnum = nativeBinding.validateEnum\nmodule.exports.validateExternal = nativeBinding.validateExternal\nmodule.exports.validateFunction = nativeBinding.validateFunction\nmodule.exports.validateHashMap = nativeBinding.validateHashMap\nmodule.exports.validateNull = nativeBinding.validateNull\nmodule.exports.validateNumber = nativeBinding.validateNumber\nmodule.exports.validateOptional = nativeBinding.validateOptional\nmodule.exports.validatePromise = nativeBinding.validatePromise\nmodule.exports.validateString = nativeBinding.validateString\nmodule.exports.validateStringEnum = nativeBinding.validateStringEnum\nmodule.exports.validateStructuredEnum = nativeBinding.validateStructuredEnum\nmodule.exports.validateStructuredEnumLowercase = nativeBinding.validateStructuredEnumLowercase\nmodule.exports.validateSymbol = nativeBinding.validateSymbol\nmodule.exports.validateTypedArray = nativeBinding.validateTypedArray\nmodule.exports.validateTypedArraySlice = nativeBinding.validateTypedArraySlice\nmodule.exports.validateUint8ClampedSlice = nativeBinding.validateUint8ClampedSlice\nmodule.exports.validateUndefined = nativeBinding.validateUndefined\nmodule.exports.withAbortController = nativeBinding.withAbortController\nmodule.exports.withAbortSignalHandle = nativeBinding.withAbortSignalHandle\nmodule.exports.withinAsyncRuntimeIfAvailable = nativeBinding.withinAsyncRuntimeIfAvailable\nmodule.exports.withoutAbortController = nativeBinding.withoutAbortController\nmodule.exports.xxh64Alias = nativeBinding.xxh64Alias\nmodule.exports.xxh2 = nativeBinding.xxh2\nmodule.exports.xxh3 = nativeBinding.xxh3\nmodule.exports.ComplexClass = nativeBinding.ComplexClass\n"
  },
  {
    "path": "examples/napi/index.d.cts",
    "content": "/* auto-generated by NAPI-RS */\n/* eslint-disable */\n\nimport type { ReadableStream } from 'node:stream/web'\n\ntype MaybePromise<T> = T | Promise<T>\n\nexport declare const NAPI_RS_SYMBOL: symbol\n\nexport declare class ExternalObject<T> {\n  readonly '': {\n    readonly '': unique symbol\n    [K: symbol]: T\n  }\n}\n\nexport type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array\n/**\n * `constructor` option for `struct` requires all fields to be public,\n * otherwise tag impl fn as constructor\n * #[napi(constructor)]\n */\nexport declare class Animal {\n  /** Kind of animal */\n  readonly kind: Kind\n  /** This is the constructor */\n  constructor(kind: Kind, name: string)\n  /** This is a factory method */\n  static withKind(kind: Kind): Animal\n  get name(): string\n  set name(name: string)\n  get type(): Kind\n  set type(kind: Kind)\n  get optionalValue(): number | null\n  /**\n   * This is to test that setter with optional parameter generates valid TypeScript.\n   * TypeScript does not allow optional parameters in setters (TS1051).\n   */\n  set optionalValue(value: number | undefined | null)\n  /**\n   * This is a\n   * multi-line comment\n   * with an emoji 🚀\n   */\n  whoami(): string\n  /** This is static... */\n  static getDogKind(): Kind\n  /**\n   * Here are some characters and character sequences\n   * that should be escaped correctly:\n   * \\[]{}/\\:\"\"{\n   * }\n   * Accept header \"*\\/json\" should not break the comment block\n   */\n  returnOtherClass(): Dog\n  returnOtherClassWithCustomConstructor(): Bird\n  overrideIndividualArgOnMethod(normalTy: string, overriddenTy: {n: string}): Bird\n}\n\nexport declare class AnimalWithDefaultConstructor {\n  name: string\n  kind: number\n  constructor(name: string, kind: number)\n}\n\nexport declare class AnotherClassForEither {\n  constructor()\n}\n\nexport declare class AnotherCssStyleSheet {\n  get rules(): CssRuleList\n}\nexport type AnotherCSSStyleSheet = AnotherCssStyleSheet\n\nexport declare class Asset {\n  constructor()\n  get filePath(): number\n}\nexport type JsAsset = Asset\n\nexport declare class Assets {\n  constructor()\n  get(id: number): JsAsset | null\n}\nexport type JsAssets = Assets\n\n/**\n * This type implements JavaScript's async iterable protocol.\n * It can be used with `for await...of` loops.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_async_iterator_and_async_iterable_protocols\n */\nexport declare class AsyncDataSource {\n  [Symbol.asyncIterator](): AsyncGenerator<string, void, undefined>\n  /** Creates an async data source that yields each item with a simulated I/O delay */\n  static fromData(data: Array<string>, delayMs: number): AsyncDataSource\n}\n\n/**\n * This type implements JavaScript's async iterable protocol.\n * It can be used with `for await...of` loops.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_async_iterator_and_async_iterable_protocols\n */\nexport declare class AsyncFib {\n  [Symbol.asyncIterator](): AsyncGenerator<number, void, number | undefined>\n  constructor()\n}\n\nexport declare class AsyncThrowClass {\n\n  constructor()\n  asyncThrowError(): Promise<void>\n}\n\nexport declare class Bird {\n  name: string\n  constructor(name: string)\n  getCount(): number\n  getNameAsync(): Promise<string>\n  acceptSliceMethod(slice: Uint8Array): number\n}\n\n/** Smoking test for type generation */\nexport declare class Blake2BHasher {\n  static withKey(key: Blake2bKey): Blake2BHasher\n  update(data: Buffer): void\n}\nexport type Blake2bHasher = Blake2BHasher\n\nexport declare class Blake2BKey {\n\n}\nexport type Blake2bKey = Blake2BKey\n\nexport declare class CatchOnConstructor {\n  constructor()\n}\n\nexport declare class CatchOnConstructor2 {\n  constructor()\n}\n\nexport declare class ClassInArray {\n  constructor(value: number)\n}\n\nexport declare class ClassReturnInPromise {\n\n}\n\nexport declare class ClassWithFactory {\n  name: string\n  static withName(name: string): ClassWithFactory\n  static with4Name(name: string): Promise<ClassWithFactory>\n  static with4NameResult(name: string): Promise<ClassWithFactory>\n  setName(name: string): this\n}\n\nexport declare class ClassWithLifetime {\n  constructor()\n  getName(): string\n}\n\nexport declare class Context {\n  maybeNeed?: boolean\n  buffer: Uint8Array\n  constructor()\n  static withData(data: string): Context\n  static withBuffer(buf: Uint8Array): Context\n  method(): string\n}\n\n/**\n * This type implements JavaScript's async iterable protocol.\n * It can be used with `for await...of` loops.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_async_iterator_and_async_iterable_protocols\n */\nexport declare class CounterRepro {\n  constructor(max: number)\n  [Symbol.asyncIterator](): AsyncGenerator<number, void, undefined>\n}\n\nexport declare class CreateStringClass {\n  static new(): CreateStringClass\n  createString(): string | null\n  createStringResult(): string\n}\n\nexport declare class CssRuleList {\n  getRules(): Array<string>\n  get parentStyleSheet(): CSSStyleSheet\n  get name(): string | null\n}\nexport type CSSRuleList = CssRuleList\n\nexport declare class CssStyleSheet {\n  constructor(name: string, rules: Array<string>)\n  get rules(): CssRuleList\n  anotherCssStyleSheet(): AnotherCssStyleSheet\n}\nexport type CSSStyleSheet = CssStyleSheet\n\nexport declare class CustomFinalize {\n  constructor(width: number, height: number)\n}\n\nexport declare class CustomStruct {\n  static customStatusCodeForFactory(): CustomStruct\n  constructor()\n}\n\nexport declare class DefaultUseNullableClass {\n  requiredNumberField: number\n  requiredStringField: string\n  optionalNumberField?: number\n  optionalStringField?: string\n  constructor(requiredNumberField: number, requiredStringField: string, optionalNumberField?: number, optionalStringField?: string)\n}\n\n/**\n * This type implements JavaScript's async iterable protocol.\n * It can be used with `for await...of` loops.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_async_iterator_and_async_iterable_protocols\n */\nexport declare class DelayedCounter {\n  [Symbol.asyncIterator](): AsyncGenerator<number, string, undefined>\n  /** Creates a counter that yields values from 0 to max-1 with a delay between each */\n  constructor(max: number, delayMs: number)\n}\n\nexport declare class Dog {\n  name: string\n  constructor(name: string)\n}\n\n/**\n * This type extends JavaScript's `Iterator`, and so has the iterator helper\n * methods. It may extend the upcoming TypeScript `Iterator` class in the future.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Iterator#iterator_helper_methods\n * @see https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-6.html#iterator-helper-methods\n */\nexport declare class Fib extends Iterator<number, void, number> {\n  constructor()\n  next(value?: number): IteratorResult<number, void>\n}\n\n/**\n * This type extends JavaScript's `Iterator`, and so has the iterator helper\n * methods. It may extend the upcoming TypeScript `Iterator` class in the future.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Iterator#iterator_helper_methods\n * @see https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-6.html#iterator-helper-methods\n */\nexport declare class Fib2 extends Iterator<number, void, number> {\n  static create(seed: number): Fib2\n  next(value?: number): IteratorResult<number, void>\n}\n\n/**\n * This type extends JavaScript's `Iterator`, and so has the iterator helper\n * methods. It may extend the upcoming TypeScript `Iterator` class in the future.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Iterator#iterator_helper_methods\n * @see https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-6.html#iterator-helper-methods\n */\nexport declare class Fib3 extends Iterator<number, void, number> {\n  current: number\n  nextNum: number\n  constructor(current: number, nextNum: number)\n  next(value?: number): IteratorResult<number, void>\n}\n\n/**\n * This type extends JavaScript's `Iterator`, and so has the iterator helper\n * methods. It may extend the upcoming TypeScript `Iterator` class in the future.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Iterator#iterator_helper_methods\n * @see https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-6.html#iterator-helper-methods\n */\nexport declare class Fib4 extends Iterator<unknown, void, number> {\n  current: number\n  nextItem: number\n  constructor(current: number, nextItem: number)\n  next(value?: number): IteratorResult<unknown, void>\n}\n\nexport declare class GetterSetterWithClosures {\n  constructor()\n}\n\nexport declare class JsClassForEither {\n  constructor()\n}\n\nexport declare class JSOnlyMethodsClass {\n  data: string\n  processData(): string\n  getLength(): number\n}\nexport type RustOnlyMethodsClass = JSOnlyMethodsClass\n\nexport declare class JsRemote {\n  constructor(repo: JsRepo)\n  name(): string\n}\n\nexport declare class JsRepo {\n  constructor(dir: string)\n  remote(): JsRemote\n}\n\nexport declare class MyJsNamedClass {\n  constructor(value: string)\n  getValue(): string\n  multiplyValue(times: number): string\n}\nexport type OriginalRustNameForJsNamedStruct = MyJsNamedClass\n\nexport declare class NinjaTurtle {\n  name: string\n  static isInstanceOf(value: unknown): boolean\n  /** Create your ninja turtle! 🐢 */\n  static newRaph(): NinjaTurtle\n  getMaskColor(): string\n  getName(): string\n  returnThis(): this\n}\n\nexport declare class NotUseNullableClass {\n  requiredNumberField: number\n  requiredStringField: string\n  optionalNumberField?: number\n  optionalStringField?: string\n  constructor(requiredNumberField: number, requiredStringField: string, optionalNumberField?: number, optionalStringField?: string)\n}\n\nexport declare class NotWritableClass {\n  name: string\n  constructor(name: string)\n  setName(name: string): void\n}\n\nexport declare class Optional {\n  static optionEnd(required: string, optional?: string | undefined | null): string\n  static optionStart(optional: string | undefined | null, required: string): string\n  static optionStartEnd(optional1: string | undefined | null, required: string, optional2?: string | undefined | null): string\n  static optionOnly(optional?: string | undefined | null): string\n}\n\nexport declare class PackageJsonReader {\n  constructor()\n  read(): any\n}\n\nexport declare class Reader {\n\n  constructor()\n  read(): Buffer\n}\n\nexport declare class Selector {\n  orderBy: Array<string>\n  select: Array<string>\n  struct: string\n  where?: string\n  constructor(orderBy: Array<string>, select: Array<string>, struct: string, where?: string)\n}\n\nexport declare class Thing {\n\n}\n\nexport declare class ThingList {\n  constructor()\n  get thing(): Thing\n}\n\nexport declare class UseNullableClass {\n  requiredNumberField: number\n  requiredStringField: string\n  nullableNumberField: number | null\n  nullableStringField: string | null\n  constructor(requiredNumberField: number, requiredStringField: string, nullableNumberField: number | null, nullableStringField: string | null)\n}\n\nexport declare class Width {\n  value: number\n  constructor(value: number)\n}\n\nexport interface A {\n  foo: number\n}\n\nexport declare function acceptArraybuffer(fixture: ArrayBuffer): bigint\n\nexport declare function acceptSlice(fixture: Uint8Array): bigint\n\nexport declare function acceptStream(stream: ReadableStream<Uint8Array>): Promise<Buffer>\n\nexport declare function acceptThreadsafeFunction(func: ((err: Error | null, arg: number) => any)): void\n\nexport declare function acceptThreadsafeFunctionFatal(func: ((arg: number) => void)): void\n\nexport declare function acceptThreadsafeFunctionTupleArgs(func: ((err: Error | null, arg0: number, arg1: boolean, arg2: string) => any)): void\n\nexport declare function acceptUint8ClampedSlice(input: Uint8ClampedArray): bigint\n\nexport declare function acceptUint8ClampedSliceAndBufferSlice(a: Buffer, b: Uint8ClampedArray): bigint\n\nexport declare function acceptUntypedTypedArray(input: TypedArray): bigint\n\nexport declare function add(a: number, b: number): number\n\nexport declare const enum ALIAS {\n  A = 0,\n  B = 1\n}\n\nexport interface AliasedStruct {\n  a: ALIAS\n  b: number\n}\n\nexport interface AllOptionalObject {\n  name?: string\n  age?: number\n}\n\nexport declare function appendBuffer(buf: Buffer): Buffer\n\nexport declare function apply0(ctx: Animal, callback: () => void): void\n\nexport declare function apply1(ctx: Animal, callback: (arg: string) => void, name: string): void\n\nexport declare function arrayBufferFromData(): ArrayBuffer\n\nexport declare function arrayBufferFromExternal(): ArrayBuffer\n\nexport declare function arrayBufferPassThrough(buf: Uint8Array): Promise<Uint8Array>\n\nexport declare function arrayParams(arr: Array<number>): number\n\nexport declare function asyncBufferToArray(buf: ArrayBuffer): Array<number>\n\nexport declare function asyncMultiTwo(arg: number): Promise<number>\n\nexport declare function asyncPlus100(p: Promise<number>): Promise<number>\n\nexport declare function asyncReduceBuffer(buf: Buffer): Promise<number>\n\nexport declare function asyncResolveArray(inner: number): Promise<unknown[]>\n\nexport declare function asyncTaskArraybuffer(data: Array<number>): Promise<ArrayBuffer>\n\nexport declare function asyncTaskFinally(inner: object): Promise<void>\n\nexport declare function asyncTaskOptionalReturn(): Promise<number | null>\n\nexport declare function asyncTaskReadFile(path: string): Promise<Buffer>\n\nexport declare function asyncTaskVoidReturn(): Promise<void>\n\nexport interface B {\n  bar: number\n}\n\nexport declare function bigintAdd(a: bigint, b: bigint): bigint\n\nexport declare function bigintFromI128(): bigint\n\nexport declare function bigintFromI64(): bigint\n\nexport declare function bigintGetU64AsString(bi: bigint): string\n\nexport interface BindingVitePluginMeta {\n  'vite:import-glob': ViteImportGlobMeta\n}\n\nexport declare function btreeSetToJs(): Set<string>\n\nexport declare function btreeSetToRust(set: Set<string>): void\n\nexport declare function bufferPassThrough(buf: Buffer): Promise<Buffer>\n\nexport declare function bufferWithAsyncBlock(buf: Buffer): Promise<number>\n\nexport declare function buildThreadsafeFunctionFromFunction(callback: (arg0: number, arg1: number) => number): void\n\nexport declare function buildThreadsafeFunctionFromFunctionCalleeHandle(callback: () => void): void\n\nexport interface C {\n  baz: number\n}\n\nexport declare function call0(callback: () => number): number\n\nexport declare function call1(callback: (arg: number) => number, arg: number): number\n\nexport declare function call2(callback: (arg0: number, arg1: number) => number, arg1: number, arg2: number): number\n\nexport declare function callAsyncWithUnknownReturnValue(tsfn: ((err: Error | null, arg: number) => unknown)): Promise<number>\n\nexport declare function callbackInSpawn(callback: (arg: object) => unknown): void\n\nexport declare function callbackReturnPromise<T>(functionInput: () => T | Promise<T>, callback: (err: Error | null, result: T) => void): T | Promise<T>\n\nexport declare function callbackReturnPromiseAndSpawn(jsFunc: (arg0: string) => Promise<string>): Promise<string>\n\nexport declare function callCatchOnPromise(input: Promise<number>): Promise<string>\n\nexport declare function callFinallyOnPromise(input: Promise<number>, onFinally: () => void): Promise<number>\n\nexport declare function callFunction(cb: () => number): number\n\nexport declare function callFunctionWithArg(cb: (arg0: number, arg1: number) => number, arg0: number, arg1: number): number\n\nexport declare function callFunctionWithArgAndCtx(ctx: Animal, cb: (arg: string) => void, name: string): void\n\nexport declare function callLongThreadsafeFunction(tsfn: ((err: Error | null, arg: number) => unknown)): void\n\nexport declare function callRuleHandler(rule: Rule, arg: number): number\n\nexport declare function callThenOnPromise(input: Promise<number>): Promise<string>\n\nexport declare function callThreadsafeFunction(tsfn: ((err: Error | null, arg: number) => unknown)): void\n\nexport declare function captureErrorInCallback(cb1: () => void, cb2: (arg0: Error) => void): void\n\nexport declare function chronoDateAdd1Minute(input: Date): Date\n\nexport declare function chronoDateFixtureReturn1(): Date\n\nexport declare function chronoDateFixtureReturn2(): Date\n\nexport declare function chronoDateWithTimezoneReturn(): Date | null\n\nexport declare function chronoDateWithTimezoneToMillis(input: Date): number\n\nexport declare function chronoLocalDateReturn(): Date | null\n\nexport declare function chronoLocalDateToMillis(input: Date): number\n\nexport declare function chronoNativeDateTime(date: Date): number\n\nexport declare function chronoNativeDateTimeReturn(): Date | null\n\nexport declare function chronoUtcDateReturn(): Date | null\n\nexport declare function chronoUtcDateToMillis(input: Date): number\n\nexport interface CompilerAssumptions {\n  ignoreFunctionLength?: boolean\n  noDocumentAll?: boolean\n  objectRestNoSymbols?: boolean\n  pureGetters?: boolean\n  /**\n   * When using public class fields, assume that they don't shadow any getter in the current class,\n   * in its subclasses or in its superclass. Thus, it's safe to assign them rather than using\n   * `Object.defineProperty`.\n   *\n   * For example:\n   *\n   * Input:\n   * ```js\n   * class Test {\n   *   field = 2;\n   *\n   *   static staticField = 3;\n   * }\n   * ```\n   *\n   * When `set_public_class_fields` is `true`, the output will be:\n   * ```js\n   * class Test {\n   *   constructor() {\n   *     this.field = 2;\n   *   }\n   * }\n   * Test.staticField = 3;\n   * ```\n   *\n   * Otherwise, the output will be:\n   * ```js\n   * import _defineProperty from \"@oxc-project/runtime/helpers/defineProperty\";\n   * class Test {\n   *   constructor() {\n   *     _defineProperty(this, \"field\", 2);\n   *   }\n   * }\n   * _defineProperty(Test, \"staticField\", 3);\n   * ```\n   *\n   * NOTE: For TypeScript, if you wanted behavior is equivalent to `useDefineForClassFields: false`, you should\n   * set both `set_public_class_fields` and [`crate::TypeScriptOptions::remove_class_fields_without_initializer`]\n   * to `true`.\n   */\n  setPublicClassFields?: boolean\n}\n\nexport declare function compressSync(_: string | Uint8Array): Buffer\n\nexport declare function concatLatin1(s: string): string\n\nexport declare function concatStr(s: string): string\n\nexport declare function concatUtf16(s: string): string\n\nexport declare function contains(source: string, target: string): boolean\n\nexport declare function convertU32Array(input: Uint32Array): Array<number>\n\nexport declare function createArraybuffer(): ArrayBuffer\n\nexport declare function createBigInt(): bigint\n\nexport declare function createBigIntI64(): bigint\n\nexport declare function createBufferSliceFromCopiedData(): Buffer\n\nexport declare function createExternal(size: number): ExternalObject<number>\n\nexport declare function createExternalBufferSlice(): Buffer\n\nexport declare function createExternalLatin1CustomFinalize(): string\n\nexport declare function createExternalLatin1Empty(): string\n\nexport declare function createExternalLatin1Long(): string\n\nexport declare function createExternalLatin1Short(): string\n\nexport declare function createExternalLatin1String(): string\n\nexport declare function createExternalLatin1WithLatin1Chars(): string\n\nexport declare function createExternalRef(size: number): ExternalObject<number>\n\nexport declare function createExternalString(content: string): ExternalObject<string>\n\nexport declare function createExternalTypedArray(): Uint32Array\n\nexport declare function createExternalUtf16String(): string\n\nexport declare function createFunction(): (arg: number) => number\n\nexport declare function createI32ArrayFromExternal(): Int32Array\n\nexport declare function createObj(): object\n\nexport declare function createObjectRef(): object\n\nexport declare function createObjectWithClassField(): ObjectFieldClassInstance\n\nexport declare function createObjWithProperty(): { value: ArrayBuffer, get getter(): number }\n\nexport declare function createOptionalExternal(size?: number | undefined | null): ExternalObject<number> | null\n\nexport declare function createReadableStream(): ReadableStream<Buffer>\n\nexport declare function createReadableStreamFromClass(readableStreamClass: typeof ReadableStream): ReadableStream<Buffer>\n\n/**\n * Creates a ReadableStream that emits StreamItem objects.\n * This demonstrates streaming custom Rust structs to JavaScript.\n */\nexport declare function createReadableStreamWithObject(): ReadableStream<StreamItem>\n\nexport declare function createReferenceOnFunction(cb: () => void): Promise<void>\n\nexport declare function createRejectedPromise(message: string): Promise<number>\n\nexport declare function createResolvedPromise(value: number): Promise<number>\n\nexport declare function createStaticLatin1String(): string\n\nexport declare function createStaticUtf16String(): string\n\nexport declare function createSymbol(): symbol\n\nexport declare function createSymbolFor(desc: string): symbol\n\nexport declare function createSymbolRef(desc: string): symbol\n\nexport declare function createUint8ClampedArrayFromData(): Uint8ClampedArray\n\nexport declare function createUint8ClampedArrayFromExternal(): Uint8ClampedArray\n\nexport declare function createZeroCopyLatin1String(): string\n\nexport declare function createZeroCopyUtf16String(): string\n\n/** You could break the step and for an new continuous value. */\nexport declare const enum CustomNumEnum {\n  One = 1,\n  Two = 2,\n  Three = 3,\n  Four = 4,\n  Six = 6,\n  Eight = 8,\n  Nine = 9,\n  Ten = 10\n}\n\nexport declare function customStatusCode(): void\n\nexport declare const enum CustomStringEnum {\n  Foo = 'my-custom-value',\n  Bar = 'Bar',\n  Baz = 'Baz'\n}\n\nexport type CustomU32 =\n  number\n\nexport interface Data {\n  data: string | Buffer\n}\n\nexport interface DatesWithTimeZone {\n  start: Date\n  end?: Date\n}\n\nexport declare function dateToNumber(input: Date): number\n\n/** This is a const */\nexport const DEFAULT_COST: number\n\nexport interface DefaultUseNullableStruct {\n  requiredNumberField: number\n  requiredStringField: string\n  optionalNumberField?: number\n  optionalStringField?: string\n}\n\nexport declare function defineClass(): typeof DynamicRustClass\n\nclass DynamicRustClass {\n  constructor(value: number)\n  rustMethod(): number\n}\n\nexport declare function derefUint8Array(a: Uint8Array, b: Uint8ClampedArray): number\n\nexport declare function either3(input: string | number | boolean): number\n\nexport declare function either4(input: string | number | boolean | Obj): number\n\nexport declare function eitherBoolOrFunction(input: boolean | ((arg?: unknown) => unknown)): void\n\nexport declare function eitherBoolOrTuple(input: boolean | [boolean, string]): void\n\nexport declare function eitherF64OrU32(input: number): number\n\nexport declare function eitherFromObjects(input: A | B | C): string\n\nexport declare function eitherFromOption(): JsClassForEither | undefined\n\nexport declare function eitherPromiseInEitherA(input: Promise<number> | number | string): Promise<boolean>\n\nexport declare function eitherStringOrNumber(input: string | number): number\n\nexport declare const enum Empty {\n\n}\n\nexport declare function enumToI32(e: CustomNumEnum): number\n\nexport declare function errorMessageContainsNullByte(msg: string): void\n\nexport declare function esmResolve(next: () => Promise<undefined>): Promise<undefined>\n\nexport declare function extendsJavascriptError(errorClass: any): void\n\nexport type ExternalLinterLoadPluginCb =\n  ((arg: string) => PluginLoadResult)\n\nexport type ExternalLinterLoadPluginCb2 =\n  ((arg: string) => PluginLoadResult)\n\nexport declare function f32ArrayToArray(input: Float32Array): Array<number>\n\nexport declare function f64ArrayToArray(input: Float64Array): Array<number>\n\nexport declare function fetch(url: string, requestInit?: RequestInit | undefined | null): Promise<import('undici-types').Response>\n\nexport declare function fibonacci(n: number): number\n\nexport declare function fnReceivedAliased(s: AliasedStruct, e: ALIAS): void\n\nexport interface FunctionData {\n  handle: () => number\n}\n\nexport declare function generateFunctionAndCallIt(): FunctionData\n\nexport declare function getBigintJsonValue(value: bigint): void\n\nexport declare function getBtreeMapping(): Record<string, number>\n\nexport declare function getBuffer(): Buffer\n\nexport declare function getBufferSlice(): Buffer\n\nexport declare function getClassFromArray(arr: unknown[]): number | null\n\nexport declare function getCwd(callback: (arg0: string) => void): void\n\nexport declare function getEmptyBuffer(): Buffer\n\nexport declare function getEmptyTypedArray(): Uint8Array\n\nexport declare function getExternal(external: ExternalObject<number>): number\n\nexport declare function getGlobal(): typeof global\n\nexport declare function getIndexMapping(): Record<string, number>\n\nexport declare function getIndexMappingWithHasher(): Record<string, number>\n\nexport declare function getMapping(): Record<string, number>\n\nexport declare function getMappingWithHasher(): Record<string, number>\n\nexport declare function getModuleFileName(): string\n\nexport declare function getMyVec(): MyVec\n\nexport declare function getNestedNumArr(): number[][][]\n\nexport declare function getNull(): null\n\nexport declare function getNullByteProperty(obj: object): string | null\n\nexport declare function getNumArr(): number[]\n\n/** Gets some numbers */\nexport declare function getNums(): Array<number>\n\nexport declare function getOptionalExternal(external?: ExternalObject<number> | undefined | null): number | null\n\nexport declare function getPackageJsonName(packageJson: PackageJson): string\n\nexport declare function getStrFromObject(): void\n\nexport declare function getterFromObj(): number\n\nexport declare function getTuple(val: [number, string, number]): number\n\nexport declare function getUndefined(): void\n\nexport declare function getWords(): Array<string>\n\nexport declare function i16ArrayToArray(input: Int16Array): Array<number>\n\nexport declare function i32ArrayToArray(input: Int32Array): Array<number>\n\nexport declare function i64ArrayToArray(input: BigInt64Array): Array<number>\n\nexport declare function i8ArrayToArray(input: Int8Array): Array<number>\n\nexport declare function indexmapPassthrough(fixture: Record<string, number>): Record<string, number>\n\nexport declare function indexSetToJs(): Set<string>\n\nexport declare function indexSetToRust(set: Set<string>): void\n\nexport declare function intoUtf8(s: string): string\n\nexport declare function jsErrorCallback(value: unknown): Array<Error>\n\n/** default enum values are continuos i32s start from 0 */\nexport declare const enum Kind {\n  /** Barks */\n  Dog = 0,\n  /** Kills birds */\n  Cat = 1,\n  /** Tasty */\n  Duck = 2\n}\n\n/** default enum values are continuos i32s start from 0 */\nexport declare const enum KindInValidate {\n  /** Barks */\n  Dog = 0,\n  /** Kills birds */\n  Cat = 1,\n  /** Tasty */\n  Duck = 2\n}\n\nexport interface Latin1MethodsResult {\n  length: number\n  isEmpty: boolean\n  asSlice: Array<number>\n}\n\nexport declare function listObjKeys(obj: object): Array<string>\n\nexport interface LocalDates {\n  start: Date\n  end?: Date\n}\n\nexport declare function mapOption(val?: number | undefined | null): number | null\n\nexport declare function mergeTupleArray(t1: TupleToArray, t2: TupleToArray): TupleToArray\n\nexport interface Meta {\n  merge: boolean\n}\n\nexport declare function mutateArraybuffer(buf: ArrayBuffer): void\n\nexport declare function mutateExternal(external: ExternalObject<number>, newVal: number): void\n\nexport declare function mutateOptionalExternal(external: ExternalObject<number> | undefined | null, newVal: number): void\n\nexport declare function mutateTypedArray(input: Float32Array): void\n\nexport type MyPromise =\n  string | Promise<string>\n\nexport type MyVec =\n  Array<number | string>\n\n/** Nested metadata for demonstrating object streaming with complex types */\nexport interface NestedMetadata {\n  hello: string\n}\n\nexport interface NotUseNullableStruct {\n  requiredNumberField: number\n  requiredStringField: string\n  optionalNumberField?: number\n  optionalStringField?: string\n}\n\nexport type Nullable<T> =\n  T | undefined | null\n\nexport interface Obj {\n  v: string | number\n}\n\nexport interface ObjectFieldClassInstance {\n  bird: Bird\n}\n\nexport declare function objectGetNamedPropertyShouldPerformTypecheck(obj: { foo: number; bar: string; }): void\n\nexport interface ObjectOnlyFromJs {\n  count: number\n  callback: ((err: Error | null, arg: number) => any)\n}\n\nexport interface ObjectOnlyToJs {\n  name: number\n  dependencies: any\n}\n\nexport declare function objectWithCApis(): object\n\nexport declare function optionalCallbackTypes(callback?: ((arg: string) => unknown) | undefined | null): void\n\nexport declare function optionEnd(callback: (arg0: string, arg1?: string | undefined | null) => void): void\n\nexport declare function optionOnly(callback: (arg0?: string | undefined | null) => void): void\n\nexport declare function optionStart(callback: (arg0: string | undefined | null, arg1: string) => void): void\n\nexport declare function optionStartEnd(callback: (arg0: string | undefined | null, arg1: string, arg2?: string | undefined | null) => void): void\n\nexport declare function overrideIndividualArgOnFunction(notOverridden: string, f: () => string, notOverridden2: number): string\n\nexport declare function overrideIndividualArgOnFunctionWithCbArg(callback: (town: string, name?: string | undefined | null) => string, notOverridden: number): object\n\nexport declare function overrideWholeFunctionType(operation: 'add' | 'subtract' | 'multiply', a: number, b: number): number\n\n/** This is an interface for package.json */\nexport interface PackageJson {\n  name: string\n  /** The version of the package */\n  version: string\n  dependencies?: Record<string, any>\n  devDependencies?: Record<string, any>\n}\n\nexport declare function panic(): void\n\nexport declare function panicInAsync(): Promise<void>\n\nexport declare function passSetToJs(): Set<string>\n\nexport declare function passSetToRust(set: Set<string>): void\n\nexport declare function passSetWithHasherToJs(): Set<string>\n\nexport interface Pet {\n  name: string\n  kind: number\n  eitherTsfn: string | ((err: Error | null, arg: number) => number)\n}\n\nexport interface PluginLoadResult {\n  name: string\n  version: string\n}\n\nexport declare function plusOne(this: Width): number\n\nexport declare function promiseInEither(input: number | Promise<number>): Promise<boolean>\n\nexport declare function promiseRawReturnClassInstance(): Promise<ClassReturnInPromise>\n\nexport interface PropertyNameDigitTest {\n  /** Property names starting with digits should be quoted */\n  '0invalid': string\n  '123': string\n}\n\nexport interface PropertyNameSpecialCharsTest {\n  /** Special characters should be quoted */\n  'kebab-case': string\n  'with space': string\n  'dot.notation': string\n  'xml:lang': string\n  /** Dollar sign should be quoted for backward compatibility */\n  '$var': string\n}\n\nexport interface PropertyNameUnicodeTest {\n  /** Unicode characters should NOT be quoted */\n  café: string\n  日本語: string\n  Ελληνικά: string\n}\n\nexport interface PropertyNameValidTest {\n  /** Valid identifiers should NOT be quoted */\n  camelCase: string\n  pascalCase: string\n  private: string\n  with123Numbers: string\n}\n\n/** napi = { version = 2, features = [\"serde-json\"] } */\nexport declare function readFile(callback: (arg0: Error | undefined, arg1?: string | undefined | null) => void): void\n\nexport declare function readFileAsync(path: string): Promise<Buffer>\n\nexport declare function readPackageJson(): PackageJson\n\nexport declare function receiveAllOptionalObject(obj?: AllOptionalObject | undefined | null): void\n\nexport declare function receiveBindingVitePluginMeta(meta: BindingVitePluginMeta): void\n\nexport declare function receiveBufferSliceWithLifetime(data: Data): number\n\nexport declare function receiveClassOrNumber(either: number | JsClassForEither): number\n\nexport declare function receiveDifferentClass(either: JsClassForEither | AnotherClassForEither): number\n\nexport declare function receiveMutClassOrNumber(either: number | JsClassForEither): number\n\nexport declare function receiveObjectOnlyFromJs(obj: { count: number, callback: (err: Error | null, count: number) => void }): void\n\nexport declare function receiveObjectWithClassField(object: ObjectFieldClassInstance): Bird\n\nexport declare function receiveStrictObject(strictObject: StrictObject): void\n\nexport declare function receiveString(s: string): string\n\nexport declare function referenceAsCallback(callback: (arg0: number, arg1: number) => number, arg0: number, arg1: number): number\n\nexport interface RequestInit {\n  method?: string\n  headers?: Record<string, string>\n}\n\nexport declare function returnCString(): string\n\nexport declare function returnEither(input: number): string | number\n\nexport declare function returnEitherClass(input: number): number | JsClassForEither\n\nexport declare function returnFromSharedCrate(): Shared\n\nexport declare function returnNull(): null\n\nexport declare function returnObjectOnlyToJs(): ObjectOnlyToJs\n\nexport declare function returnUndefined(): void\n\nexport declare function returnUndefinedIfInvalid(input: boolean): boolean\n\nexport declare function returnUndefinedIfInvalidPromise(input: Promise<boolean>): Promise<boolean>\n\nexport declare function roundtripStr(s: string): string\n\nexport interface Rule {\n  name: string\n  handler: RuleHandler<number, number>\n}\n\nexport type RuleHandler<Args, Ret> =\n  (arg: Args) => Ret\n\nexport declare function runScript(script: string): unknown\n\nexport declare function setNullByteProperty(obj: object): void\n\nexport declare function setSymbolInObj(symbol: symbol): object\n\nexport declare function shorterEscapableScope(createString: () => string | null): string\n\nexport declare function shorterScope(arr: unknown[]): Array<number>\n\nexport declare function shutdownRuntime(): void\n\nexport declare function spawnFutureLifetime(input: number): Promise<string>\n\nexport declare function spawnThreadInThread(tsfn: ((err: Error | null, arg: number) => number)): void\n\nexport declare const enum Status {\n  Pristine = 'Pristine',\n  Loading = 'Loading',\n  Ready = 'Ready'\n}\n\nexport declare const enum StatusInValidate {\n  Poll = 'Poll',\n  Ready = 'Ready',\n  Done = 'Done'\n}\n\n/** Example struct demonstrating object streaming with nested types */\nexport interface StreamItem {\n  something: NestedMetadata\n  name: string\n  size: number\n}\n\nexport interface StrictObject {\n  name: string\n}\n\nexport declare const enum StringEnum {\n  VariantOne = 'variantone',\n  VariantTwo = 'varianttwo',\n  VariantThree = 'variantthree'\n}\n\nexport type StructuredKind =\n  | { type2: 'Hello' }\n  | { type2: 'Greeting', name: string }\n  | { type2: 'Birthday', name: string, age: number }\n  | { type2: 'Tuple', field0: number, field1: number }\n\nexport type StructuredKindLowercase =\n  | { type: 'hello' }\n  | { type: 'greeting', name: string }\n  | { type: 'birthday', name: string, age: number }\n  | { type: 'tuple', field0: number, field1: number }\n\nexport declare function sumBtreeMapping(nums: Record<string, number>): number\n\nexport declare function sumIndexMapping(nums: Record<string, number>): number\n\nexport declare function sumMapping(nums: Record<string, number>): number\n\nexport declare function sumNums(nums: Array<number>): number\n\n/**\n * Function to test escaped quotes in comments.\n * This comment contains escaped quotes: \\\\\"g+sx\\\\\" and should not break JSON parsing.\n * The pattern \\\\\"value\\\\\" is commonly used in regex and shell commands.\n * Another example: sed 's/old/\\\\\"new\\\\\"/g' where quotes are escaped.\n */\nexport declare function testEscapedQuotesInComments(input: string): string\n\nexport declare function testLatin1Methods(input: string): Latin1MethodsResult\n\nexport declare function testSerdeBigNumberPrecision(number: string): any\n\nexport declare function testSerdeBufferBytes(obj: object): bigint\n\nexport declare function testSerdeRoundtrip(data: any): any\n\nexport declare function testWorkers(amount: number, completeCallback: ((err: Error | null, ) => void)): void\n\nexport declare function threadsafeFunctionBuildThrowErrorWithStatus(cb: (arg?: unknown) => unknown): void\n\nexport declare function threadsafeFunctionClosureCapture(defaultValue: Animal, func: (arg: Animal) => void): void\n\nexport declare function threadsafeFunctionFatalMode(cb: ((arg: boolean) => unknown)): void\n\nexport declare function threadsafeFunctionFatalModeError(cb: ((arg: boolean) => string)): void\n\nexport declare function threadsafeFunctionThrowError(cb: ((err: Error | null, arg: boolean) => unknown)): void\n\nexport declare function threadsafeFunctionThrowErrorWithStatus(cb: ((err: Error | null, arg: boolean) => unknown)): void\n\nexport declare function throwAsyncError(): Promise<void>\n\nexport declare function throwError(): void\n\nexport declare function throwErrorWithCause(): void\n\nexport declare function throwSyntaxError(error: string, code?: string | undefined | null): void\n\nexport declare function toJsObj(): object\n\nexport declare function tsfnAsyncCall(func: (arg0: number, arg1: number, arg2: number) => string): Promise<void>\n\nexport declare function tsfnCallWithCallback(tsfn: ((err: Error | null, ) => string)): void\n\nexport declare function tsfnInEither(pet: Pet): void\n\nexport declare function tsfnReturnPromise(func: ((err: Error | null, arg: number) => Promise<number>)): Promise<number>\n\nexport declare function tsfnReturnPromiseTimeout(func: ((err: Error | null, arg: number) => Promise<number>)): Promise<number>\n\nexport declare function tsfnThrowFromJs(tsfn: ((err: Error | null, arg: number) => Promise<number>)): Promise<number>\n\nexport declare function tsfnThrowFromJsCallbackContainsTsfn(tsfn: ((err: Error | null, arg: number) => Promise<number>)): Promise<void>\n\nexport declare function tsfnWeak(tsfn: (() => void)): Promise<void>\n\nexport declare function tsRename(a: { foo: number }): string[]\n\nexport interface TsTypeChanged {\n  typeOverride: object\n  typeOverrideOptional?: object\n}\n\nexport interface TupleObject {\n  customField: number\n  field1: number\n}\n\nexport type TupleToArray =\n  [field0: string, field1: number, field2?: Meta]\n\nexport declare function u16ArrayToArray(input: Uint16Array): Array<number>\n\nexport declare function u32ArrayToArray(input: Uint32Array): Array<number>\n\nexport declare function u64ArrayToArray(input: BigUint64Array): Array<bigint>\n\nexport declare function u8ArrayToArray(input: Uint8Array): Array<number>\n\nexport declare function uInit8ArrayFromString(): Promise<Uint8Array>\n\nexport declare function uint8ArrayFromData(): Uint8Array\n\nexport declare function uint8ArrayFromExternal(): Uint8Array\n\nexport interface UseNullableStruct {\n  requiredNumberField: number\n  requiredStringField: string\n  nullableNumberField: number | null\n  nullableStringField: string | null\n}\n\nexport interface UtcDates {\n  start: Date\n  end?: Date\n}\n\nexport declare function validateArray(arr: Array<number>): number\n\nexport declare function validateBigint(input: bigint): bigint\n\nexport declare function validateBoolean(i: boolean): boolean\n\nexport declare function validateBuffer(b: Buffer): number\n\nexport declare function validateBufferSlice(input: Buffer): number\n\nexport declare function validateDate(d: Date): number\n\nexport declare function validateDateTime(d: Date): number\n\nexport declare function validateEnum(input: KindInValidate): number\n\nexport declare function validateExternal(e: ExternalObject<number>): number\n\nexport declare function validateFunction(cb: () => number): number\n\nexport declare function validateHashMap(input: Record<string, number>): number\n\nexport declare function validateNull(i: null): boolean\n\nexport declare function validateNumber(i: number): number\n\nexport declare function validateOptional(input1?: string | undefined | null, input2?: boolean | undefined | null): boolean\n\nexport declare function validatePromise(p: Promise<number>): Promise<number>\n\nexport declare function validateString(s: string): string\n\nexport declare function validateStringEnum(input: StatusInValidate): string\n\nexport declare function validateStructuredEnum(kind: StructuredKind): StructuredKind\n\nexport declare function validateStructuredEnumLowercase(kind: StructuredKindLowercase): StructuredKindLowercase\n\nexport declare function validateSymbol(s: symbol): boolean\n\nexport declare function validateTypedArray(input: Uint8Array): number\n\nexport declare function validateTypedArraySlice(input: Uint8Array): number\n\nexport declare function validateUint8ClampedSlice(input: Uint8ClampedArray): number\n\nexport declare function validateUndefined(i: undefined): boolean\n\nexport interface ViteImportGlobMeta {\n  isSubImportsPattern?: boolean\n}\n\nexport type VoidNullable<T = void> =\n  Nullable<T>\n\nexport declare function withAbortController(a: number, b: number, signal: AbortSignal): Promise<number>\n\nexport declare function withAbortSignalHandle(signal: AbortSignal): Promise<number>\n\nexport declare function withinAsyncRuntimeIfAvailable(): void\n\nexport declare function withoutAbortController(a: number, b: number): Promise<number>\n\nexport declare function xxh64Alias(input: Buffer): bigint\n\nexport declare namespace xxh2 {\n  export function xxh2Plus(a: number, b: number): number\n  export function xxh3Xxh64Alias(input: Buffer): bigint\n}\n\nexport declare namespace xxh3 {\n  /** Xxh3 class */\n  export class Xxh3 {\n    constructor()\n    /** update */\n    update(input: Buffer): void\n    digest(): bigint\n  }\n  export const ALIGNMENT: number\n  /** xxh128 function */\n  export function xxh128(input: Buffer): bigint\n  export function xxh3_64(input: Buffer): bigint\n}\nexport declare class ComplexClass {\n  value: string\n  number: number\n  constructor(value: string | ComplexClass, number: number)\n  methodOne(): string\n  methodTwo(): number\n  methodThree(): string\n  methodFour(): boolean\n  methodFive(): string\n}\n\nexport interface Shared {\n  value: number\n}\n"
  },
  {
    "path": "examples/napi/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <title>Vite Playground</title>\n    <script type=\"module\" src=\"./vite-entry.js\"></script>\n  </head>\n</html>\n"
  },
  {
    "path": "examples/napi/memory-test.ts",
    "content": "import { AsyncThrowClass } from './index.cjs'\n\nfunction test() {\n  const asyncThrowClass = new AsyncThrowClass()\n  asyncThrowClass.asyncThrowError().catch((err) => {\n    console.error(err)\n  })\n  return new WeakRef(asyncThrowClass)\n}\n\nconst wr = test()\n\nsetInterval(() => {\n  global.gc?.()\n  if (wr.deref() === undefined) {\n    console.info('No leak')\n    process.exit(0)\n  }\n}, 1000)\n"
  },
  {
    "path": "examples/napi/package.json",
    "content": "{\n  \"name\": \"@examples/napi\",\n  \"private\": true,\n  \"version\": \"0.0.0\",\n  \"type\": \"module\",\n  \"main\": \"./index.js\",\n  \"types\": \"./index.d.ts\",\n  \"scripts\": {\n    \"browser\": \"vite\",\n    \"build\": \"napi-raw build --platform --js index.cjs --dts index.d.cts\",\n    \"test\": \"ava reset-cache && cross-env TS_NODE_PROJECT=./tsconfig.json node --import @oxc-node/core/register ../../node_modules/ava/entrypoints/cli.mjs\",\n    \"test:leak\": \"oxnode --expose-gc ./memory-test.ts\",\n    \"test-js\": \"ava reset-cache && ava\"\n  },\n  \"napi\": {\n    \"binaryName\": \"example\",\n    \"wasm\": {\n      \"initialMemory\": 16384,\n      \"browser\": {\n        \"fs\": true,\n        \"buffer\": true\n      }\n    },\n    \"dtsHeader\": \"type MaybePromise<T> = T | Promise<T>\",\n    \"dtsHeaderFile\": \"./dts-header.d.ts\",\n    \"targets\": [\n      \"wasm32-wasip1-threads\"\n    ]\n  },\n  \"devDependencies\": {\n    \"@napi-rs/cli\": \"workspace:*\",\n    \"@napi-rs/triples\": \"workspace:*\",\n    \"@napi-rs/wasm-runtime\": \"workspace:*\",\n    \"@oxc-node/cli\": \"^0.0.35\",\n    \"@oxc-node/core\": \"^0.0.35\",\n    \"@testing-library/dom\": \"^10.4.1\",\n    \"@types/lodash\": \"^4.17.20\",\n    \"@vitest/browser\": \"^4.0.8\",\n    \"@vitest/browser-playwright\": \"^4.0.8\",\n    \"@vitest/ui\": \"^4.0.8\",\n    \"ava\": \"^7.0.0\",\n    \"buffer\": \"^6.0.3\",\n    \"core-js\": \"^3.46.0\",\n    \"cross-env\": \"10.1.0\",\n    \"electron\": \"^41.0.0\",\n    \"lodash\": \"^4.17.21\",\n    \"playwright\": \"^1.56.1\",\n    \"rxjs\": \"^7.8.2\",\n    \"sinon\": \"^21.0.0\",\n    \"vite\": \"^8.0.0\",\n    \"vite-plugin-node-polyfills\": \"^0.25.0\",\n    \"vitest\": \"^4.0.8\",\n    \"web-streams-polyfill\": \"^4.2.0\",\n    \"webdriverio\": \"^9.20.0\"\n  },\n  \"ava\": {\n    \"extensions\": {\n      \"ts\": \"module\",\n      \"cts\": \"commonjs\",\n      \"cjs\": true,\n      \"js\": true\n    },\n    \"files\": [\n      \"__tests__/**/*.spec.{ts,cts,js,cjs,mjs}\"\n    ],\n    \"workerThreads\": false,\n    \"cache\": false,\n    \"timeout\": \"10m\"\n  },\n  \"dependencies\": {\n    \"@emnapi/core\": \"^1.7.0\"\n  }\n}\n"
  },
  {
    "path": "examples/napi/src/array.rs",
    "content": "use napi::{\n  bindgen_prelude::{Array, Object},\n  Env,\n};\n\n#[napi]\npub fn get_words() -> Vec<&'static str> {\n  vec![\"foo\", \"bar\"]\n}\n\n#[napi]\n/// Gets some numbers\nfn get_nums() -> Vec<u32> {\n  vec![1, 1, 2, 3, 5, 8]\n}\n\n#[napi]\nfn sum_nums(nums: Vec<u32>) -> u32 {\n  nums.iter().sum()\n}\n\n#[napi]\nfn get_tuple(val: (u32, String, u8)) -> u32 {\n  val.0 + Into::<u32>::into(val.2)\n}\n\n#[napi]\nfn to_js_obj(env: &Env) -> napi::Result<Object<'_>> {\n  let mut arr = env.create_array(0)?;\n  arr.insert(\"a string\")?;\n  arr.insert(42)?;\n  arr.coerce_to_object()\n}\n\n#[napi]\nfn get_num_arr() -> [u32; 2] {\n  [1, 2]\n}\n\n#[napi]\nfn get_nested_num_arr() -> [[[u32; 1]; 1]; 2] {\n  [[[1]], [[1]]]\n}\n\n#[napi(object)]\npub struct Meta {\n  pub merge: bool,\n}\n\n#[napi(array)]\npub struct TupleToArray(pub String, pub u32, pub Option<Meta>);\n\n#[napi]\nfn merge_tuple_array(t1: TupleToArray, t2: TupleToArray) -> TupleToArray {\n  let merge = t2.2.as_ref().is_some_and(|m| m.merge);\n  if merge {\n    let first = t1.0 + &t2.0;\n    let second = t1.1 + t2.1;\n    return TupleToArray(first, second, t2.2);\n  }\n  t1\n}\n\n#[napi]\npub struct ClassInArray {\n  value: u32,\n}\n\n#[napi]\nimpl ClassInArray {\n  #[napi(constructor)]\n  pub fn new(value: u32) -> Self {\n    Self { value }\n  }\n}\n\n#[napi]\npub fn get_class_from_array(arr: Array<'_>) -> napi::Result<Option<u32>> {\n  arr.get_ref::<ClassInArray>(0).map(|c| c.map(|c| c.value))\n}\n"
  },
  {
    "path": "examples/napi/src/async.rs",
    "content": "#[cfg(not(target_family = \"wasm\"))]\nuse futures::prelude::*;\nuse napi::bindgen_prelude::*;\n#[cfg(not(target_family = \"wasm\"))]\nuse napi::tokio::fs;\n\n#[napi]\nasync fn read_file_async(path: String) -> Result<Buffer> {\n  #[cfg(not(target_family = \"wasm\"))]\n  {\n    fs::read(path)\n      .map(|r| match r {\n        Ok(content) => Ok(content.into()),\n        Err(e) => Err(Error::new(\n          Status::GenericFailure,\n          format!(\"failed to read file, {}\", e),\n        )),\n      })\n      .await\n  }\n  #[cfg(target_family = \"wasm\")]\n  {\n    let conetent = std::fs::read(path)?;\n    Ok(conetent.into())\n  }\n}\n\n#[napi]\nasync fn async_multi_two(arg: u32) -> Result<u32> {\n  tokio::task::spawn(async move { Ok(arg * 2) })\n    .await\n    .unwrap()\n}\n\n#[napi]\nasync fn panic_in_async() {\n  panic!(\"panic in async function\");\n}\n\n#[napi(async_runtime)]\npub fn within_async_runtime_if_available() {\n  tokio::spawn(async {\n    println!(\"within_runtime_if_available\");\n  });\n}\n\n#[napi(constructor)]\npub struct AsyncThrowClass {}\n\n#[napi]\nimpl AsyncThrowClass {\n  #[napi]\n  pub async fn async_throw_error(&self) -> Result<()> {\n    Err(Error::new(Status::GenericFailure, \"Throw async error\"))\n  }\n}\n"
  },
  {
    "path": "examples/napi/src/async_generator_repro.rs",
    "content": "// Minimal reproduction of issue #3119: AsyncGenerator use-after-free during GC\n// This matches the exact code from the bug report\n\nuse napi::bindgen_prelude::*;\nuse napi_derive::napi;\nuse std::future::Future;\n\n#[napi(async_iterator)]\npub struct CounterRepro {\n  current: u32,\n  max: u32,\n}\n\n#[napi]\nimpl CounterRepro {\n  #[napi(constructor)]\n  pub fn new(max: u32) -> Self {\n    Self { current: 0, max }\n  }\n}\n\n#[napi]\nimpl AsyncGenerator for CounterRepro {\n  type Yield = u32;\n  type Next = ();\n  type Return = ();\n\n  fn next(\n    &mut self,\n    _value: Option<Self::Next>,\n  ) -> impl Future<Output = Result<Option<Self::Yield>>> + Send + 'static {\n    let current = self.current;\n    let max = self.max;\n    self.current += 1;\n    async move {\n      // This sleep is critical - it triggers the async execution that exposes the bug\n      // Removing this sleep prevents a crash, but the use-after-free is still there\n      tokio::time::sleep(std::time::Duration::from_nanos(1)).await;\n      if current >= max {\n        Ok(None)\n      } else {\n        Ok(Some(current))\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "examples/napi/src/bigint.rs",
    "content": "use napi::bindgen_prelude::*;\n\n#[napi]\nfn bigint_add(a: BigInt, b: BigInt) -> u128 {\n  a.get_u128().1 + b.get_u128().1\n}\n\n#[napi]\nfn create_big_int() -> BigInt {\n  BigInt {\n    words: vec![100u64, 200u64],\n    sign_bit: true,\n  }\n}\n\n#[napi]\nfn create_big_int_i64() -> i64n {\n  i64n(100)\n}\n\n#[napi]\npub fn bigint_get_u64_as_string(bi: BigInt) -> String {\n  bi.get_u64().1.to_string()\n}\n\n#[napi]\npub fn bigint_from_i64() -> BigInt {\n  BigInt::from(100i64)\n}\n\n#[napi]\npub fn bigint_from_i128() -> BigInt {\n  BigInt::from(-100i128)\n}\n"
  },
  {
    "path": "examples/napi/src/callback.rs",
    "content": "use std::{env, format};\n\nuse napi::{bindgen_prelude::*, threadsafe_function::ThreadsafeFunctionCallMode, JsValue, Unknown};\n\n#[napi]\nfn get_cwd<T: Fn(String) -> Result<()>>(callback: T) {\n  callback(env::current_dir().unwrap().to_string_lossy().to_string()).unwrap();\n}\n\n#[napi]\nfn option_end<T: Fn(String, Option<String>) -> Result<()>>(callback: T) {\n  callback(\"Hello\".to_string(), None).unwrap();\n}\n\n#[napi]\nfn option_start<T: Fn(Option<String>, String) -> Result<()>>(callback: T) {\n  callback(None, \"World\".to_string()).unwrap();\n}\n\n#[napi]\nfn option_start_end<T: Fn(Option<String>, String, Option<String>) -> Result<()>>(callback: T) {\n  callback(None, \"World\".to_string(), None).unwrap();\n}\n\n#[napi]\nfn option_only<T: Fn(Option<String>) -> Result<()>>(callback: T) {\n  callback(None).unwrap();\n}\n\n/// napi = { version = 2, features = [\"serde-json\"] }\n#[napi]\nfn read_file<T: Fn(Result<()>, Option<String>) -> Result<()>>(callback: T) {\n  match read_file_content() {\n    Ok(s) => callback(Ok(()), Some(s)),\n    Err(e) => callback(Err(e), None),\n  }\n  .unwrap();\n}\n\nfn read_file_content() -> Result<String> {\n  // serde_json::from_str(&s)?;\n  Ok(\"hello world\".to_string())\n}\n\n#[napi(\n  ts_generic_types = \"T\",\n  ts_args_type = \"functionInput: () => T | Promise<T>, callback: (err: Error | null, result: T) => void\",\n  ts_return_type = \"T | Promise<T>\"\n)]\nfn callback_return_promise<'env>(\n  env: &'env Env,\n  fn_in: Function<(), Unknown<'env>>,\n  fn_out: Function<String, ()>,\n) -> Result<Unknown<'env>> {\n  let ret = fn_in.call(())?;\n  if ret.is_promise()? {\n    let p = Promise::<String>::from_unknown(ret)?;\n    let fn_out_tsfn = fn_out\n      .build_threadsafe_function()\n      .callee_handled::<true>()\n      .build()?;\n    env\n      .spawn_future(async move {\n        let s = p.await;\n        fn_out_tsfn.call(s, ThreadsafeFunctionCallMode::NonBlocking);\n        Ok::<(), Error>(())\n      })\n      .map(|v| v.to_unknown())\n  } else {\n    Ok(ret)\n  }\n}\n\n#[napi(ts_return_type = \"Promise<string>\")]\npub fn callback_return_promise_and_spawn<F: Fn(String) -> Result<Promise<String>>>(\n  env: &Env,\n  js_func: F,\n) -> napi::Result<PromiseRaw<'_, String>> {\n  let promise = js_func(\"Hello\".to_owned())?;\n  env.spawn_future(async move {\n    let resolved = promise.await?;\n    Ok::<String, napi::Error>(format!(\"{} 😼\", resolved))\n  })\n}\n\n#[napi]\npub fn capture_error_in_callback<C: Fn() -> Result<()>, E: Fn(Error) -> Result<()>>(\n  cb1: C,\n  cb2: E,\n) -> Result<()> {\n  if let Err(e) = cb1() {\n    cb2(e)\n  } else {\n    Ok(())\n  }\n}\n"
  },
  {
    "path": "examples/napi/src/class.rs",
    "content": "use napi::{\n  bindgen_prelude::{\n    Buffer, ClassInstance, Function, JavaScriptClassExt, JsObjectValue, JsValue, ObjectFinalize,\n    This, Uint8Array, Unknown,\n  },\n  Env, Property, PropertyAttributes, Result,\n};\n\nuse crate::r#enum::Kind;\n\n/// `constructor` option for `struct` requires all fields to be public,\n/// otherwise tag impl fn as constructor\n/// #[napi(constructor)]\n#[napi]\npub struct Animal {\n  #[napi(readonly)]\n  /// Kind of animal\n  pub kind: Kind,\n\n  name: String,\n\n  optional_value: Option<i32>,\n}\n\n#[napi]\nimpl Animal {\n  /// This is the constructor\n  #[napi(constructor)]\n  pub fn new(kind: Kind, name: String) -> Self {\n    Animal {\n      kind,\n      name,\n      optional_value: None,\n    }\n  }\n\n  /// This is a factory method\n  #[napi(factory)]\n  pub fn with_kind(kind: Kind) -> Self {\n    Animal {\n      kind,\n      name: \"Default\".to_owned(),\n      optional_value: None,\n    }\n  }\n\n  #[napi(getter)]\n  pub fn get_name(&self) -> &str {\n    self.name.as_str()\n  }\n\n  #[napi(setter)]\n  pub fn set_name(&mut self, name: String) {\n    self.name = name;\n  }\n\n  #[napi(getter, js_name = \"type\")]\n  pub fn kind(&self) -> Kind {\n    self.kind\n  }\n\n  #[napi(setter, js_name = \"type\")]\n  pub fn set_kind(&mut self, kind: Kind) {\n    self.kind = kind;\n  }\n\n  #[napi(getter)]\n  pub fn get_optional_value(&self) -> Option<i32> {\n    self.optional_value\n  }\n\n  /// This is to test that setter with optional parameter generates valid TypeScript.\n  /// TypeScript does not allow optional parameters in setters (TS1051).\n  #[napi(setter)]\n  pub fn set_optional_value(&mut self, value: Option<i32>) {\n    self.optional_value = value;\n  }\n\n  /// This is a\n  /// multi-line comment\n  /// with an emoji 🚀\n  #[napi]\n  pub fn whoami(&self) -> String {\n    match self.kind {\n      Kind::Dog => {\n        format!(\"Dog: {}\", self.name)\n      }\n      Kind::Cat => format!(\"Cat: {}\", self.name),\n      Kind::Duck => format!(\"Duck: {}\", self.name),\n    }\n  }\n\n  #[napi]\n  /// This is static...\n  pub fn get_dog_kind() -> Kind {\n    Kind::Dog\n  }\n\n  #[napi]\n  /// Here are some characters and character sequences\n  /// that should be escaped correctly:\n  /// \\[]{}/\\:\"\"{\n  /// }\n  /// Accept header \"*/json\" should not break the comment block\n  pub fn return_other_class(&self) -> Dog {\n    Dog {\n      name: \"Doge\".to_owned(),\n    }\n  }\n\n  #[napi]\n  pub fn return_other_class_with_custom_constructor(&self) -> Bird {\n    Bird::new(\"parrot\".to_owned())\n  }\n\n  #[napi]\n  pub fn override_individual_arg_on_method(\n    &self,\n    normal_ty: String,\n    #[napi(ts_arg_type = \"{n: string}\")] overridden_ty: napi::bindgen_prelude::Object,\n  ) -> Bird {\n    let obj = overridden_ty.coerce_to_object().unwrap();\n    let the_n: Option<String> = obj.get(\"n\").unwrap();\n\n    Bird::new(format!(\"{}-{}\", normal_ty, the_n.unwrap()))\n  }\n}\n\n#[napi(constructor)]\npub struct Dog {\n  pub name: String,\n}\n\n#[cfg_attr(not(feature = \"cfg_attr_napi\"), napi_derive::napi)]\npub struct Bird {\n  pub name: String,\n}\n\n#[cfg_attr(not(feature = \"cfg_attr_napi\"), napi_derive::napi)]\nimpl Bird {\n  #[cfg_attr(not(feature = \"cfg_attr_napi\"), napi_derive::napi(constructor))]\n  pub fn new(name: String) -> Self {\n    Bird { name }\n  }\n\n  #[cfg_attr(not(feature = \"cfg_attr_napi\"), napi_derive::napi)]\n  pub fn get_count(&self) -> u32 {\n    1234\n  }\n\n  #[cfg_attr(not(feature = \"cfg_attr_napi\"), napi_derive::napi)]\n  pub async fn get_name_async(&self) -> &str {\n    tokio::time::sleep(std::time::Duration::new(1, 0)).await;\n    self.name.as_str()\n  }\n\n  #[cfg_attr(not(feature = \"cfg_attr_napi\"), napi_derive::napi)]\n  pub fn accept_slice_method(&self, slice: &[u8]) -> u32 {\n    slice.len() as u32\n  }\n}\n\n/// Smoking test for type generation\n#[napi]\n#[repr(transparent)]\npub struct Blake2bHasher(u32);\n\n#[napi]\nimpl Blake2bHasher {\n  #[napi(factory)]\n  pub fn with_key(key: &Blake2bKey) -> Self {\n    Blake2bHasher(key.get_inner())\n  }\n}\n\n#[napi]\nimpl Blake2bHasher {\n  #[napi]\n  pub fn update(&mut self, data: Buffer) {\n    self.0 += data.len() as u32;\n  }\n}\n\n#[napi]\npub struct Blake2bKey(u32);\n\nimpl Blake2bKey {\n  fn get_inner(&self) -> u32 {\n    self.0\n  }\n}\n\n#[napi]\npub struct Context {\n  data: String,\n  pub maybe_need: Option<bool>,\n  pub buffer: Uint8Array,\n}\n\n// Test for return `napi::Result` and `Result`\n#[napi]\nimpl Context {\n  #[napi(constructor)]\n  pub fn new() -> napi::Result<Self> {\n    Ok(Self {\n      data: \"not empty\".into(),\n      maybe_need: None,\n      buffer: Uint8Array::new(vec![0, 1, 2, 3]),\n    })\n  }\n\n  #[napi(factory)]\n  pub fn with_data(data: String) -> Result<Self> {\n    Ok(Self {\n      data,\n      maybe_need: Some(true),\n      buffer: Uint8Array::new(vec![0, 1, 2, 3]),\n    })\n  }\n\n  #[napi(factory)]\n  pub fn with_buffer(buf: Uint8Array) -> Self {\n    Self {\n      data: \"not empty\".into(),\n      maybe_need: None,\n      buffer: buf,\n    }\n  }\n\n  #[napi]\n  pub fn method(&self) -> String {\n    self.data.clone()\n  }\n}\n\n#[napi(constructor)]\npub struct AnimalWithDefaultConstructor {\n  pub name: String,\n  pub kind: u32,\n}\n\n// Test for skip_typescript\n#[napi]\npub struct NinjaTurtle {\n  pub name: String,\n  #[napi(skip_typescript)]\n  pub mask_color: String,\n}\n\n#[napi]\nimpl NinjaTurtle {\n  #[napi]\n  pub fn is_instance_of(env: Env, value: Unknown) -> Result<bool> {\n    Self::instance_of(&env, &value)\n  }\n\n  /// Create your ninja turtle! 🐢\n  #[napi(factory)]\n  pub fn new_raph() -> Self {\n    Self {\n      name: \"Raphael\".to_owned(),\n      mask_color: \"Red\".to_owned(),\n    }\n  }\n\n  /// We are not going to expose this character, so we just skip it...\n  #[napi(factory, skip_typescript)]\n  pub fn new_leo() -> Self {\n    Self {\n      name: \"Leonardo\".to_owned(),\n      mask_color: \"Blue\".to_owned(),\n    }\n  }\n\n  #[napi]\n  pub fn get_mask_color(&self) -> &str {\n    self.mask_color.as_str()\n  }\n\n  #[napi]\n  pub fn get_name(&self) -> &str {\n    self.name.as_str()\n  }\n\n  #[napi]\n  pub fn return_this<'scope>(&'scope self, this: This<'scope>) -> This<'scope> {\n    this\n  }\n}\n\n#[napi(js_name = \"Assets\")]\npub struct JsAssets {}\n\n#[napi]\nimpl JsAssets {\n  #[napi(constructor)]\n  #[allow(clippy::new_without_default)]\n  pub fn new() -> Self {\n    JsAssets {}\n  }\n\n  #[napi]\n  pub fn get(&mut self, _id: u32) -> Option<JsAsset> {\n    Some(JsAsset {})\n  }\n}\n\n#[napi(js_name = \"Asset\")]\npub struct JsAsset {}\n\n#[napi]\nimpl JsAsset {\n  #[napi(constructor)]\n  #[allow(clippy::new_without_default)]\n  pub fn new() -> Self {\n    Self {}\n  }\n\n  #[napi(getter)]\n  pub fn get_file_path(&self) -> u32 {\n    1\n  }\n}\n\n#[napi]\npub struct Optional {}\n\n#[napi]\nimpl Optional {\n  #[napi]\n  pub fn option_end(required: String, optional: Option<String>) -> String {\n    match optional {\n      None => required,\n      Some(optional) => format!(\"{} {}\", required, optional),\n    }\n  }\n\n  #[napi]\n  pub fn option_start(optional: Option<String>, required: String) -> String {\n    match optional {\n      None => required,\n      Some(optional) => format!(\"{} {}\", optional, required),\n    }\n  }\n\n  #[napi]\n  pub fn option_start_end(\n    optional1: Option<String>,\n    required: String,\n    optional2: Option<String>,\n  ) -> String {\n    match (optional1, optional2) {\n      (None, None) => required,\n      (None, Some(optional2)) => format!(\"{} {}\", required, optional2),\n      (Some(optional1), None) => format!(\"{} {}\", optional1, required),\n      (Some(optional1), Some(optional2)) => format!(\"{} {} {}\", optional1, required, optional2),\n    }\n  }\n\n  #[napi]\n  pub fn option_only(optional: Option<String>) -> String {\n    match optional {\n      None => \"\".to_string(),\n      Some(optional) => optional,\n    }\n  }\n}\n\n#[napi(object)]\npub struct ObjectFieldClassInstance<'env> {\n  pub bird: ClassInstance<'env, Bird>,\n}\n\n#[napi]\npub fn create_object_with_class_field(env: &Env) -> Result<ObjectFieldClassInstance<'_>> {\n  Ok(ObjectFieldClassInstance {\n    bird: Bird {\n      name: \"Carolyn\".to_owned(),\n    }\n    .into_instance(env)?,\n  })\n}\n\n#[napi]\npub fn receive_object_with_class_field(\n  object: ObjectFieldClassInstance,\n) -> Result<ClassInstance<Bird>> {\n  Ok(object.bird)\n}\n\n#[napi(constructor)]\npub struct NotWritableClass {\n  #[napi(writable = false)]\n  pub name: String,\n}\n\n#[napi]\nimpl NotWritableClass {\n  #[napi(writable = false)]\n  pub fn set_name(&mut self, name: String) {\n    self.name = name;\n  }\n}\n\n#[napi(custom_finalize)]\npub struct CustomFinalize {\n  width: u32,\n  height: u32,\n  inner: Vec<u8>,\n}\n\n#[napi]\nimpl CustomFinalize {\n  #[napi(constructor)]\n  pub fn new(env: Env, width: u32, height: u32) -> Result<Self> {\n    let inner = vec![0; (width * height * 4) as usize];\n    let inner_size = inner.len();\n    env.adjust_external_memory(inner_size as i64)?;\n    Ok(Self {\n      width,\n      height,\n      inner,\n    })\n  }\n}\n\nimpl ObjectFinalize for CustomFinalize {\n  fn finalize(self, env: Env) -> Result<()> {\n    env.adjust_external_memory(-(self.inner.len() as i64))?;\n    Ok(())\n  }\n}\n\n#[napi(constructor)]\npub struct Width {\n  pub value: i32,\n}\n\n#[napi]\npub fn plus_one(this: This<&Width>) -> i32 {\n  this.object.value + 1\n}\n\n#[napi]\npub struct GetterSetterWithClosures {}\n\n#[napi]\nimpl GetterSetterWithClosures {\n  #[napi(constructor)]\n  pub fn new(env: &Env, mut this: This) -> Result<Self> {\n    let age_symbol = env.create_symbol(Some(\"age\"))?;\n\n    this.define_properties(&[\n      Property::new()\n        .with_utf8_name(\"name\")?\n        .with_setter_closure(move |_env, mut this, value: String| {\n          this.set_named_property(\"_name\", format!(\"I'm {}\", value))?;\n          Ok(())\n        })\n        .with_getter_closure(|_env, this| this.get_named_property_unchecked::<Unknown>(\"_name\")),\n      Property::new()\n        .with_utf8_name(\"age\")?\n        .with_getter_closure(|_env, _this| Ok(0.3)),\n      Property::new()\n        .with_name(env, age_symbol)?\n        .with_getter_closure(|_env, _this| Ok(0.3)),\n    ])?;\n\n    this.set_property(env.create_string(\"ageSymbol\")?, age_symbol)?;\n    Ok(Self {})\n  }\n}\n\n#[napi]\npub struct CatchOnConstructor {}\n\n#[napi]\nimpl CatchOnConstructor {\n  #[napi(constructor, catch_unwind)]\n  pub fn new() -> Self {\n    Self {}\n  }\n}\n\n#[napi]\npub struct CatchOnConstructor2 {}\n\n#[napi]\nimpl CatchOnConstructor2 {\n  #[napi(constructor, catch_unwind)]\n  pub fn new() -> Self {\n    panic!(\"CatchOnConstructor2 panic\");\n  }\n}\n\n#[napi]\npub struct ClassWithLifetime<'a> {\n  inner: ClassInstance<'a, Animal>,\n  inner2: ClassInstance<'a, Animal>,\n}\n\n#[napi]\nimpl<'scope> ClassWithLifetime<'scope> {\n  #[napi(constructor)]\n  pub fn new(env: &Env, mut this: This<'scope>) -> Result<Self> {\n    let instance = Animal {\n      kind: Kind::Cat,\n      name: \"alie\".to_owned(),\n      optional_value: None,\n    }\n    .into_instance(env)?;\n    let inner = instance.assign_to_this(\"inner\", &mut this)?;\n    let inner2 =\n      instance.assign_to_this_with_attributes(\"inner2\", PropertyAttributes::Default, &mut this)?;\n    Ok(Self { inner, inner2 })\n  }\n\n  #[napi]\n  pub fn get_name(&self) -> &str {\n    self.inner.get_name()\n  }\n}\n\n#[napi(js_name = \"MyJsNamedClass\")]\npub struct OriginalRustNameForJsNamedStruct {\n  value: String,\n}\n\n#[napi]\nimpl OriginalRustNameForJsNamedStruct {\n  #[napi(constructor)]\n  pub fn new(value: String) -> Self {\n    OriginalRustNameForJsNamedStruct { value }\n  }\n\n  #[napi]\n  pub fn get_value(&self) -> String {\n    self.value.clone()\n  }\n\n  #[napi]\n  pub fn multiply_value(&self, times: u32) -> String {\n    self.value.repeat(times as usize)\n  }\n}\n\n// Test case for js_name struct with methods only (no constructor)\n#[napi(js_name = \"JSOnlyMethodsClass\")]\npub struct RustOnlyMethodsClass {\n  pub data: String,\n}\n\n#[napi]\nimpl RustOnlyMethodsClass {\n  #[napi]\n  pub fn process_data(&self) -> String {\n    format!(\"processed: {}\", self.data)\n  }\n\n  #[napi]\n  pub fn get_length(&self) -> u32 {\n    self.data.len() as u32\n  }\n}\n\n// Test case for issue #2746: instanceof failure for objects returned from getters\n#[napi]\npub struct Thing;\n\n#[napi]\npub struct ThingList;\n\n#[napi]\nimpl ThingList {\n  #[napi(constructor)]\n  pub fn new() -> Self {\n    Self\n  }\n\n  #[napi(getter)]\n  pub fn thing() -> Thing {\n    Thing\n  }\n}\n\n#[napi(\n  ts_return_type = r#\"typeof DynamicRustClass\\n\\nclass DynamicRustClass {\n  constructor(value: number)\n  rustMethod(): number\n}\"#\n)]\npub fn define_class<'env>(env: &'env Env) -> Result<Function<'env>> {\n  env.define_class(\n    \"DynamicRustClass\",\n    rust_class_constructor_c_callback,\n    &[Property::new()\n      .with_utf8_name(\"rustMethod\")?\n      .with_method(rust_class_method_c_callback)],\n  )\n}\n\n#[napi(no_export)]\nfn rust_class_constructor(value: i32, mut this: This) -> Result<()> {\n  this.set_named_property(\"dynamicValue\", value)?;\n  Ok(())\n}\n\n#[napi(no_export)]\nfn rust_class_method(this: This) -> Result<i32> {\n  this.get_named_property_unchecked::<i32>(\"dynamicValue\")\n}\n"
  },
  {
    "path": "examples/napi/src/class_factory.rs",
    "content": "use napi::Result;\n\nasync fn always_4() -> i32 {\n  4\n}\n\n#[napi]\npub struct ClassWithFactory {\n  pub name: String,\n}\n\n#[napi]\nimpl ClassWithFactory {\n  #[napi(factory)]\n  pub fn with_name(name: String) -> Self {\n    Self { name }\n  }\n\n  #[napi(factory)]\n  pub async fn with_4_name(name: String) -> Self {\n    Self {\n      name: format!(\"{name}-{}\", always_4().await),\n    }\n  }\n\n  #[napi(factory)]\n  pub async fn with_4_name_result(name: String) -> Result<Self> {\n    Ok(Self {\n      name: format!(\"{name}-{}\", always_4().await),\n    })\n  }\n\n  #[napi]\n  pub fn set_name(&mut self, name: String) -> &Self {\n    self.name = name;\n    self\n  }\n}\n"
  },
  {
    "path": "examples/napi/src/constructor.rs",
    "content": "#[napi(constructor)]\npub struct Selector {\n  pub order_by: Vec<String>,\n  pub select: Vec<String>,\n  pub r#struct: String,\n  pub r#where: Option<String>,\n}\n"
  },
  {
    "path": "examples/napi/src/date.rs",
    "content": "use std::str::FromStr;\n\nuse chrono::{Duration, FixedOffset, Local, TimeZone, Utc};\nuse napi::bindgen_prelude::*;\n\n#[napi]\nfn date_to_number(input: Date) -> Result<f64> {\n  input.value_of()\n}\n\n#[napi]\nfn chrono_utc_date_to_millis(input: chrono::DateTime<Utc>) -> i64 {\n  input.timestamp_millis()\n}\n\n#[napi]\nfn chrono_local_date_to_millis(input: chrono::DateTime<Local>) -> i64 {\n  input.timestamp_millis()\n}\n\n#[napi]\nfn chrono_date_with_timezone_to_millis(input: chrono::DateTime<FixedOffset>) -> i64 {\n  input.timestamp_millis()\n}\n\n#[napi]\nfn chrono_date_add_1_minute(input: chrono::DateTime<Utc>) -> chrono::DateTime<Utc> {\n  Duration::try_minutes(1).map(|d| input + d).unwrap()\n}\n\n#[napi(object)]\npub struct UtcDates {\n  pub start: chrono::DateTime<Utc>,\n  pub end: Option<chrono::DateTime<Utc>>,\n}\n\n#[napi(object)]\npub struct LocalDates {\n  pub start: chrono::DateTime<Local>,\n  pub end: Option<chrono::DateTime<Local>>,\n}\n\n#[napi(object)]\npub struct DatesWithTimeZone {\n  pub start: chrono::DateTime<FixedOffset>,\n  pub end: Option<chrono::DateTime<FixedOffset>>,\n}\n\n#[napi]\npub fn chrono_native_date_time(date: chrono::NaiveDateTime) -> i64 {\n  date.and_utc().timestamp_millis()\n}\n\n#[napi]\npub fn chrono_native_date_time_return() -> Option<chrono::NaiveDateTime> {\n  chrono::NaiveDateTime::from_str(\"2016-12-23T15:25:59.325\").ok()\n}\n\n#[napi]\npub fn chrono_utc_date_return() -> Option<chrono::DateTime<Utc>> {\n  chrono::DateTime::<Utc>::from_str(\"2016-12-23T15:25:59.325\").ok()\n}\n\n#[napi]\npub fn chrono_local_date_return() -> Option<chrono::DateTime<Local>> {\n  chrono::DateTime::<Local>::from_str(\"2016-12-23T15:25:59.325\").ok()\n}\n\n#[napi]\npub fn chrono_date_with_timezone_return() -> Option<chrono::DateTime<FixedOffset>> {\n  chrono::DateTime::<FixedOffset>::from_str(\"2016-12-23T15:25:59.325\").ok()\n}\n\n#[napi]\npub fn chrono_date_fixture_return1() -> chrono::DateTime<FixedOffset> {\n  // Pacific Standard Time: UTC-08:00\n  let pst = FixedOffset::west_opt(8 * 3600).unwrap();\n  pst\n    .with_ymd_and_hms(2024, 2, 7, 18, 28, 18)\n    .single()\n    .unwrap()\n}\n\n#[napi]\npub fn chrono_date_fixture_return2() -> chrono::DateTime<FixedOffset> {\n  // Indian Standard Time: UTC+05:30\n  let ist = FixedOffset::east_opt(5 * 3600 + 30 * 60).unwrap();\n  ist\n    .with_ymd_and_hms(2024, 2, 7, 18, 28, 18)\n    .single()\n    .unwrap()\n}\n"
  },
  {
    "path": "examples/napi/src/either.rs",
    "content": "use napi::{bindgen_prelude::*, JsNumber};\n\n#[napi]\nfn either_string_or_number(input: Either<String, u32>) -> u32 {\n  match input {\n    Either::A(s) => s.len() as u32,\n    Either::B(n) => n,\n  }\n}\n\n#[napi]\nfn return_either(input: u32) -> Either<String, u32> {\n  if input > 10 {\n    Either::A(format!(\"{}\", input))\n  } else {\n    Either::B(input)\n  }\n}\n\n#[napi]\nfn either3(input: Either3<String, u32, bool>) -> u32 {\n  match input {\n    Either3::A(s) => s.len() as u32,\n    Either3::B(n) => n,\n    Either3::C(b) => u32::from(b),\n  }\n}\n\n#[napi(object)]\nstruct Obj {\n  pub v: Either<String, u32>,\n}\n\n#[napi]\nfn either4(input: Either4<String, u32, bool, Obj>) -> u32 {\n  match input {\n    Either4::A(s) => s.len() as u32,\n    Either4::B(n) => n,\n    Either4::C(b) => u32::from(b),\n    Either4::D(f) => match f.v {\n      Either::A(s) => s.len() as u32,\n      Either::B(n) => n,\n    },\n  }\n}\n\n#[napi]\nstruct JsClassForEither {}\n\n#[napi]\nimpl JsClassForEither {\n  #[napi(constructor)]\n  #[allow(clippy::new_without_default)]\n  pub fn new() -> Self {\n    JsClassForEither {}\n  }\n}\n\n#[napi]\nstruct AnotherClassForEither {}\n\n#[napi]\nimpl AnotherClassForEither {\n  #[allow(clippy::new_without_default)]\n  #[napi(constructor)]\n  pub fn new() -> Self {\n    Self {}\n  }\n}\n\n#[napi]\nfn receive_class_or_number(either: Either<u32, &JsClassForEither>) -> u32 {\n  match either {\n    Either::A(n) => n + 1,\n    Either::B(_) => 100,\n  }\n}\n\n#[napi]\nfn receive_mut_class_or_number(either: Either<u32, &mut JsClassForEither>) -> u32 {\n  match either {\n    Either::A(n) => n + 1,\n    Either::B(_) => 100,\n  }\n}\n\n#[napi]\nfn receive_different_class(either: Either<&JsClassForEither, &AnotherClassForEither>) -> u32 {\n  match either {\n    Either::A(_) => 42,\n    Either::B(_) => 100,\n  }\n}\n\n#[napi]\nfn return_either_class(input: i32) -> Either<u32, JsClassForEither> {\n  if input > 0 {\n    Either::A(input as u32)\n  } else {\n    Either::B(JsClassForEither {})\n  }\n}\n\n#[napi]\nfn either_from_option() -> Either<JsClassForEither, Undefined> {\n  Some(JsClassForEither {}).into()\n}\n\n#[napi(object)]\npub struct A {\n  pub foo: u32,\n}\n\n#[napi(object)]\npub struct B {\n  pub bar: u32,\n}\n\n#[napi(object)]\npub struct C {\n  pub baz: u32,\n}\n\n#[napi]\npub fn either_from_objects(input: Either3<A, B, C>) -> String {\n  match &input {\n    Either3::A(_) => \"A\".to_owned(),\n    Either3::B(_) => \"B\".to_owned(),\n    Either3::C(_) => \"C\".to_owned(),\n  }\n}\n\n#[napi]\npub fn either_bool_or_function(_input: Either<bool, Function>) {}\n\n#[napi]\npub async fn promise_in_either(input: Either<u32, Promise<u32>>) -> Result<bool> {\n  match input {\n    Either::A(a) => Ok(a > 10),\n    Either::B(b) => {\n      let r = b.await?;\n      Ok(r > 10)\n    }\n  }\n}\n\n#[napi]\npub fn either_bool_or_tuple(_input: Either<bool, (bool, String)>) {}\n\n#[napi]\npub async fn either_promise_in_either_a(\n  input: Either<Either<Promise<u32>, u32>, String>,\n) -> Result<bool> {\n  match input {\n    Either::A(a) => match a {\n      Either::A(b) => {\n        let r = b.await?;\n        Ok(r > 10)\n      }\n      Either::B(b) => Ok(b > 10),\n    },\n    Either::B(a) => Ok(a.len() > 10),\n  }\n}\n\n#[napi]\npub fn either_f64_or_u32(input: JsNumber) -> Result<Either<f64, u32>> {\n  let input_u32 = input.get_uint32()?;\n  let input_f64 = input.get_double()?;\n  if input_u32 as f64 == input_f64 {\n    Ok(Either::B(input_u32))\n  } else {\n    Ok(Either::A(input_f64))\n  }\n}\n"
  },
  {
    "path": "examples/napi/src/enum.rs",
    "content": "/// default enum values are continuos i32s start from 0\n#[napi]\n#[derive(Debug, Clone, Copy)]\npub enum Kind {\n  /// Barks\n  Dog,\n  /// Kills birds\n  Cat,\n  /// Tasty\n  Duck,\n}\n\n#[napi]\npub enum Empty {}\n\n#[napi(string_enum)]\npub enum Status {\n  Pristine,\n  Loading,\n  Ready,\n}\n\n#[allow(clippy::enum_variant_names)]\n#[napi(string_enum = \"lowercase\")]\npub enum StringEnum {\n  VariantOne,\n  VariantTwo,\n  VariantThree,\n}\n\n/// You could break the step and for an new continuous value.\n#[napi]\npub enum CustomNumEnum {\n  One = 1,\n  Two,\n  Three = 3,\n  Four,\n  #[doc(hidden)]\n  Six = 6,\n  Eight = 8,\n  Nine, // would be 9\n  Ten,  // 10\n}\n\n#[napi]\nfn enum_to_i32(e: CustomNumEnum) -> i32 {\n  e as i32\n}\n\n#[napi(skip_typescript)]\npub enum SkippedEnums {\n  One = 1,\n  Two,\n  Tree,\n}\n\n#[napi(string_enum)]\npub enum CustomStringEnum {\n  #[napi(value = \"my-custom-value\")]\n  Foo,\n  Bar,\n  Baz,\n}\n\n#[napi(discriminant = \"type2\")]\npub enum StructuredKind {\n  Hello,\n  Greeting { name: String },\n  Birthday { name: String, age: u8 },\n  Tuple(u32, u32),\n}\n\n#[napi(discriminant_case = \"lowercase\")]\npub enum StructuredKindLowercase {\n  Hello,\n  Greeting { name: String },\n  Birthday { name: String, age: u8 },\n  Tuple(u32, u32),\n}\n\n#[napi]\npub fn validate_structured_enum(kind: StructuredKind) -> StructuredKind {\n  kind\n}\n\n#[napi]\npub fn validate_structured_enum_lowercase(\n  kind: StructuredKindLowercase,\n) -> StructuredKindLowercase {\n  kind\n}\n"
  },
  {
    "path": "examples/napi/src/env.rs",
    "content": "use napi::bindgen_prelude::*;\n\n#[napi]\npub fn run_script(env: &Env, script: String) -> Result<Unknown<'_>> {\n  env.run_script(script)\n}\n\n#[napi]\npub fn get_module_file_name(env: Env) -> Result<String> {\n  env.get_module_file_name()\n}\n\n#[napi]\npub fn throw_syntax_error(env: Env, error: String, code: Option<String>) {\n  env.throw_syntax_error(error, code);\n}\n"
  },
  {
    "path": "examples/napi/src/error.rs",
    "content": "use napi::bindgen_prelude::*;\n\n#[napi]\npub fn throw_error() -> Result<()> {\n  Err(Error::new(Status::InvalidArg, \"Manual Error\".to_owned()))\n}\n\n#[napi]\npub fn throw_error_with_cause() -> Result<()> {\n  let mut err = Error::new(Status::GenericFailure, \"Manual Error\".to_owned());\n  err.set_cause(Error::new(Status::InvalidArg, \"Inner Error\".to_owned()));\n  Err(err)\n}\n\n#[napi(catch_unwind)]\npub fn panic() {\n  panic!(\"Don't panic\");\n}\n\n#[napi]\npub fn receive_string(s: String) -> String {\n  s\n}\n\npub enum CustomError {\n  NapiError(Error<Status>),\n  Panic,\n}\n\nimpl AsRef<str> for CustomError {\n  fn as_ref(&self) -> &str {\n    match self {\n      CustomError::Panic => \"Panic\",\n      CustomError::NapiError(e) => e.status.as_ref(),\n    }\n  }\n}\n\n#[napi]\npub fn custom_status_code() -> Result<(), CustomError> {\n  Err(Error::new(CustomError::Panic, \"don't panic\"))\n}\n\n#[napi]\npub fn error_message_contains_null_byte(msg: Utf16String) -> Result<()> {\n  Err(Error::new(Status::InvalidArg, msg))\n}\n\n#[napi]\npub async fn throw_async_error() -> Result<()> {\n  Err(Error::new(Status::InvalidArg, \"Async Error\".to_owned()))\n}\n\n#[napi]\npub struct CustomStruct();\n\n#[napi]\nimpl CustomStruct {\n  #[napi(factory)]\n  pub fn custom_status_code_for_factory() -> Result<Self, CustomError> {\n    Err(Error::new(CustomError::Panic, \"don't panic\"))\n  }\n\n  #[napi(constructor)]\n  pub fn custom_status_code_for_constructor() -> Result<Self, CustomError> {\n    Err(Error::new(CustomError::Panic, \"don't panic\"))\n  }\n}\n\n#[napi]\npub fn js_error_callback(value: Unknown) -> Result<Vec<JsError>> {\n  let error: Error = value.into();\n  Ok(vec![error.try_clone()?.into(), error.into()])\n}\n\n#[napi]\npub fn extends_javascript_error(env: Env, error_class: Function<String>) -> Result<()> {\n  let instance = error_class.new_instance(\"Error message in Rust\".to_owned())?;\n  let mut error_object = instance.coerce_to_object()?;\n  error_object.set(\"name\", \"RustError\")?;\n  error_object.set(\n    \"nativeStackTrace\",\n    std::backtrace::Backtrace::capture().to_string(),\n  )?;\n  env.throw(error_object)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi/src/external.rs",
    "content": "use napi::bindgen_prelude::*;\n\n#[napi]\npub fn create_external(size: u32) -> External<u32> {\n  External::new(size)\n}\n\n#[napi]\npub fn create_external_string(content: String) -> External<String> {\n  External::new(content)\n}\n\n#[napi]\npub fn get_external(external: &External<u32>) -> u32 {\n  **external\n}\n\n#[napi]\npub fn mutate_external(external: &mut External<u32>, new_val: u32) {\n  **external = new_val;\n}\n\n#[napi]\npub fn create_optional_external(size: Option<u32>) -> Option<External<u32>> {\n  size.map(External::new)\n}\n\n#[napi]\npub fn get_optional_external(external: Option<&External<u32>>) -> Option<u32> {\n  external.map(|external| **external)\n}\n\n#[napi]\npub fn mutate_optional_external(external: Option<&mut External<u32>>, new_val: u32) {\n  if let Some(external) = external {\n    **external = new_val;\n  }\n}\n\n#[napi]\npub fn create_external_ref(env: &Env, size: u32) -> Result<ExternalRef<u32>> {\n  let external = External::new(size).into_js_external(env)?;\n  external.create_ref()\n}\n"
  },
  {
    "path": "examples/napi/src/fetch.rs",
    "content": "use std::collections::HashMap;\n\nuse napi::bindgen_prelude::*;\nuse napi_derive::napi;\nuse reqwest::{header::HeaderMap, Method};\nuse tokio_stream::StreamExt;\n\n#[napi(object)]\npub struct RequestInit {\n  pub method: Option<String>,\n  pub headers: Option<HashMap<String, String>>,\n}\n\n#[napi(ts_return_type = \"Promise<import('undici-types').Response>\")]\npub fn fetch(\n  env: &Env,\n  url: String,\n  request_init: Option<RequestInit>,\n) -> Result<AsyncBlock<Unknown<'static>>> {\n  AsyncBlockBuilder::build_with_map(\n    env,\n    async move {\n      let headers: HeaderMap =\n        if let Some(headers) = request_init.as_ref().and_then(|init| init.headers.as_ref()) {\n          headers\n            .try_into()\n            .map_err(|err| Error::new(Status::InvalidArg, format!(\"Invalid header: {err}\")))?\n        } else {\n          HeaderMap::new()\n        };\n      let client = reqwest::Client::new();\n      let request = client\n        .request(Method::GET, url)\n        .headers(headers)\n        .build()\n        .map_err(|e| Error::new(Status::InvalidArg, format!(\"Invalid request: {e}\")))?;\n\n      let response = client\n        .execute(request)\n        .await\n        .map_err(|e| Error::new(Status::GenericFailure, e.to_string()))?;\n      Ok(response)\n    },\n    |env, response| {\n      let global = env.get_global()?;\n      let response_constructor: Function<ReadableStream<BufferSlice>, ()> =\n        global.get_named_property(\"Response\")?;\n      let reqwest_stream = response.bytes_stream();\n      let napi_stream = reqwest_stream.filter_map(|chunk| match chunk {\n        Ok(bytes) => {\n          if bytes.is_empty() {\n            return None;\n          }\n\n          Some(Ok(bytes))\n        }\n        Err(e) => Some(Err(napi::Error::new(\n          napi::Status::Unknown,\n          format!(\"Error reading response stream: {e:?}\"),\n        ))),\n      });\n      let js_stream = ReadableStream::create_with_stream_bytes(&env, napi_stream)?;\n      response_constructor.new_instance(js_stream)\n    },\n  )\n}\n"
  },
  {
    "path": "examples/napi/src/fn_return_if_invalid.rs",
    "content": "#[napi(return_if_invalid)]\npub fn array_params(arr: Vec<f64>) -> f64 {\n  arr.into_iter().sum::<f64>()\n}\n"
  },
  {
    "path": "examples/napi/src/fn_strict.rs",
    "content": "use std::collections::HashMap;\n\nuse chrono::{DateTime, Utc};\nuse napi::{bindgen_prelude::*, JsSymbol, JsValue, Unknown};\n\n#[napi(strict)]\nfn validate_array(arr: Vec<u32>) -> u32 {\n  arr.len() as u32\n}\n\n#[napi(strict)]\nfn validate_buffer(b: Buffer) -> u32 {\n  b.len() as u32\n}\n\n#[napi(strict)]\nfn validate_typed_array(input: Uint8Array) -> u32 {\n  input.len() as u32\n}\n\n#[napi(strict)]\nfn validate_typed_array_slice(input: &[u8]) -> u32 {\n  input.len() as u32\n}\n\n#[napi(strict)]\nfn validate_uint8_clamped_slice(input: Uint8ClampedSlice) -> u32 {\n  input.len() as u32\n}\n\n#[napi(strict)]\nfn validate_buffer_slice(input: BufferSlice) -> u32 {\n  input.len() as u32\n}\n\n#[napi(strict)]\nfn validate_bigint(input: BigInt) -> i128 {\n  input.get_i128().0\n}\n\n#[napi(strict)]\nfn validate_boolean(i: bool) -> bool {\n  !i\n}\n\n#[napi(strict)]\nfn validate_date(d: Date) -> Result<f64> {\n  d.value_of()\n}\n\n#[napi(strict)]\nfn validate_date_time(_d: DateTime<Utc>) -> i64 {\n  1\n}\n\n#[napi(strict)]\nfn validate_external(e: &External<u32>) -> u32 {\n  **e\n}\n\n#[napi(strict, ts_args_type = \"cb: () => number\")]\nfn validate_function(cb: Function<(), Unknown>) -> Result<u32> {\n  Ok(cb.call(())?.coerce_to_number()?.get_uint32()? + 3)\n}\n\n#[napi(strict)]\nfn validate_hash_map(input: HashMap<String, u32>) -> u32 {\n  input.len() as u32\n}\n\n#[napi(strict)]\nfn validate_null(_i: Null) -> bool {\n  true\n}\n\n#[napi(strict)]\nfn validate_undefined(_i: Undefined) -> bool {\n  true\n}\n\n#[napi(strict)]\nfn validate_number(i: f64) -> f64 {\n  i + 1.0\n}\n\n#[napi(strict)]\nasync fn validate_promise(p: Promise<u32>) -> Result<u32> {\n  Ok(p.await? + 1)\n}\n\n#[napi(strict)]\nfn validate_string(s: String) -> String {\n  s + \"!\"\n}\n\n#[napi(strict)]\nfn validate_symbol(_s: JsSymbol) -> bool {\n  true\n}\n\n#[napi(strict)]\nfn validate_optional(input1: Option<String>, input2: Option<bool>) -> bool {\n  input1.is_some() || input2.unwrap_or(false)\n}\n\n/// default enum values are continuos i32s start from 0\n#[napi]\npub enum KindInValidate {\n  /// Barks\n  Dog,\n  /// Kills birds\n  Cat,\n  /// Tasty\n  Duck,\n}\n\n#[napi(strict)]\npub fn validate_enum(input: KindInValidate) -> i32 {\n  input as i32\n}\n\n#[napi(string_enum)]\n#[derive(Debug)]\npub enum StatusInValidate {\n  Poll,\n  Ready,\n  Done,\n}\n\n#[napi(strict)]\npub fn validate_string_enum(input: StatusInValidate) -> String {\n  format!(\"{:?}\", input)\n}\n\n#[napi(return_if_invalid)]\nfn return_undefined_if_invalid(input: bool) -> bool {\n  !input\n}\n\n#[napi(return_if_invalid)]\nasync fn return_undefined_if_invalid_promise(input: Promise<bool>) -> Result<bool> {\n  let input_value = input.await?;\n  Ok(!input_value)\n}\n"
  },
  {
    "path": "examples/napi/src/fn_ts_override.rs",
    "content": "use napi::bindgen_prelude::{FnArgs, Function, JsObjectValue, Object, Result};\n\n#[napi(ts_args_type = \"a: { foo: number }\", ts_return_type = \"string[]\")]\nfn ts_rename(a: Object) -> Result<Object> {\n  a.get_property_names()\n}\n\n#[napi]\nfn override_individual_arg_on_function(\n  not_overridden: String,\n  #[napi(ts_arg_type = \"() => string\")] f: Function<(), String>,\n  not_overridden2: u32,\n) -> String {\n  let u = f.call(()).unwrap();\n\n  format!(\"oia: {}-{}-{}\", not_overridden, not_overridden2, u)\n}\n\n#[napi]\nfn override_individual_arg_on_function_with_cb_arg<'env>(\n  #[napi(ts_arg_type = \"(town: string, name?: string | undefined | null) => string\")]\n  callback: Function<FnArgs<(String, Option<String>)>, Object<'env>>,\n  not_overridden: u32,\n) -> Result<Object<'env>> {\n  callback.call((format!(\"World({})\", not_overridden), None).into())\n}\n\n#[napi(ts_type = \"(operation: 'add' | 'subtract' | 'multiply', a: number, b: number): number\")]\nfn override_whole_function_type(operation: String, a: i32, b: i32) -> i32 {\n  match operation.as_str() {\n    \"add\" => a + b,\n    \"subtract\" => a - b,\n    \"multiply\" => a * b,\n    _ => panic!(\"Invalid operation\"),\n  }\n}\n"
  },
  {
    "path": "examples/napi/src/function.rs",
    "content": "use napi::{\n  bindgen_prelude::{ClassInstance, FnArgs, Function, FunctionRef, PromiseRaw},\n  threadsafe_function::{ThreadsafeFunctionCallMode, UnknownReturnValue},\n  Env, Error, Result, Status,\n};\n\nuse crate::class::Animal;\n\n#[napi]\npub fn call0(callback: Function<(), u32>) -> Result<u32> {\n  callback.call(())\n}\n\n#[napi]\npub fn call1(callback: Function<u32, u32>, arg: u32) -> Result<u32> {\n  callback.call(arg)\n}\n\n#[napi]\npub fn call2(callback: Function<FnArgs<(u32, u32)>, u32>, arg1: u32, arg2: u32) -> Result<u32> {\n  callback.call((arg1, arg2).into())\n}\n\n#[napi]\npub fn apply0(ctx: ClassInstance<Animal>, callback: Function<(), ()>) -> Result<()> {\n  callback.apply(ctx, ())\n}\n\n#[napi]\npub fn apply1(\n  ctx: ClassInstance<Animal>,\n  callback: Function<String, ()>,\n  name: String,\n) -> Result<()> {\n  callback.apply(ctx, name)\n}\n\n#[napi]\npub fn call_function(cb: Function<(), u32>) -> Result<u32> {\n  cb.call(())\n}\n\n#[napi]\npub fn call_function_with_arg(\n  cb: Function<FnArgs<(u32, u32)>, u32>,\n  arg0: u32,\n  arg1: u32,\n) -> Result<u32> {\n  cb.call((arg0, arg1).into())\n}\n\n#[napi(ts_return_type = \"Promise<void>\")]\npub fn create_reference_on_function<'env>(\n  env: &'env Env,\n  cb: Function<'env, (), ()>,\n) -> Result<PromiseRaw<'env, ()>> {\n  let reference = cb.create_ref()?;\n  env.spawn_future_with_callback(\n    async {\n      tokio::time::sleep(std::time::Duration::from_millis(100)).await;\n      Ok(())\n    },\n    move |env, _| {\n      let cb = reference.borrow_back(env)?;\n      cb.call(())?;\n      Ok(())\n    },\n  )\n}\n\n#[napi]\npub fn call_function_with_arg_and_ctx(\n  ctx: ClassInstance<Animal>,\n  cb: Function<String, ()>,\n  name: String,\n) -> Result<()> {\n  cb.apply(ctx, name)\n}\n\n#[napi]\npub fn reference_as_callback(\n  env: Env,\n  callback: FunctionRef<FnArgs<(u32, u32)>, u32>,\n  arg0: u32,\n  arg1: u32,\n) -> Result<u32> {\n  callback.borrow_back(&env)?.call((arg0, arg1).into())\n}\n\n#[napi]\npub fn build_threadsafe_function_from_function(\n  callback: Function<FnArgs<(u32, u32)>, u32>,\n) -> Result<()> {\n  let tsfn = callback.build_threadsafe_function().build()?;\n  let jh1 = std::thread::spawn(move || {\n    tsfn.call((1, 2).into(), ThreadsafeFunctionCallMode::NonBlocking);\n  });\n  let tsfn_max_queue_size_1 = callback\n    .build_threadsafe_function()\n    .max_queue_size::<1>()\n    .build()?;\n\n  let jh2 = std::thread::spawn(move || {\n    tsfn_max_queue_size_1.call((1, 2).into(), ThreadsafeFunctionCallMode::NonBlocking);\n  });\n\n  let tsfn_weak = callback\n    .build_threadsafe_function()\n    .weak::<true>()\n    .build()?;\n\n  let jh3 = std::thread::spawn(move || {\n    tsfn_weak.call((1, 2).into(), ThreadsafeFunctionCallMode::NonBlocking);\n  });\n\n  jh1.join().unwrap();\n  jh2.join().unwrap();\n  jh3.join().unwrap();\n\n  Ok(())\n}\n\n#[napi]\npub fn build_threadsafe_function_from_function_callee_handle(\n  callback: Function<(), ()>,\n) -> Result<()> {\n  let tsfn = callback\n    .build_threadsafe_function()\n    .callee_handled::<true>()\n    .build()?;\n\n  std::thread::spawn(move || {\n    tsfn.call(\n      Err(Error::new(Status::GenericFailure, \"run tsfn failed\")),\n      ThreadsafeFunctionCallMode::NonBlocking,\n    );\n  });\n\n  Ok(())\n}\n\n#[napi]\npub fn create_function<'env>(env: &'env Env) -> Result<Function<'env, u32, u32>> {\n  env.create_function(\"customFunction\", no_export_function_c_callback)\n}\n\n#[napi(no_export)]\npub fn no_export_function(input: u32) -> u32 {\n  input + 200\n}\n\n#[napi]\npub fn optional_callback_types(\n  callback: Option<Function<String, UnknownReturnValue>>,\n) -> Result<()> {\n  if let Some(callback) = callback {\n    callback.call(\"Hello\".to_owned())?;\n  }\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi/src/generator.rs",
    "content": "use std::future::Future;\n\nuse napi::{bindgen_prelude::*, iterator::ScopedGenerator};\n\n#[napi(iterator)]\npub struct Fib {\n  current: u32,\n  next: u32,\n}\n\n#[napi]\nimpl Generator for Fib {\n  type Yield = u32;\n  type Next = i32;\n  type Return = ();\n\n  fn next(&mut self, value: Option<Self::Next>) -> Option<Self::Yield> {\n    match value {\n      Some(n) => {\n        self.current = n as u32;\n        self.next = n as u32 + 1;\n      }\n      None => {\n        let next = self.next;\n        let current = self.current;\n        self.current = next;\n        self.next = current + next;\n      }\n    };\n    Some(self.current)\n  }\n}\n\n#[napi]\n#[allow(clippy::new_without_default)]\nimpl Fib {\n  #[napi(constructor)]\n  pub fn new() -> Self {\n    Fib {\n      current: 0,\n      next: 1,\n    }\n  }\n}\n\n#[napi(iterator)]\npub struct Fib2 {\n  current: u32,\n  next: u32,\n}\n\n#[napi]\nimpl Generator for Fib2 {\n  type Yield = u32;\n  type Next = i32;\n  type Return = ();\n\n  fn next(&mut self, value: Option<Self::Next>) -> Option<Self::Yield> {\n    match value {\n      Some(n) => {\n        self.current = n as u32;\n        self.next = n as u32 + 1;\n      }\n      None => {\n        let next = self.next;\n        let current = self.current;\n        self.current = next;\n        self.next = current + next;\n      }\n    };\n    Some(self.current)\n  }\n}\n\n#[napi]\nimpl Fib2 {\n  #[napi(factory)]\n  pub fn create(seed: u32) -> Self {\n    Self {\n      current: seed,\n      next: seed + 1,\n    }\n  }\n}\n\n#[napi(iterator, constructor)]\npub struct Fib3 {\n  pub current: u32,\n  pub next_num: u32,\n}\n\n#[napi]\nimpl Generator for Fib3 {\n  type Yield = u32;\n  type Next = i32;\n  type Return = ();\n\n  fn next(&mut self, value: Option<Self::Next>) -> Option<Self::Yield> {\n    match value {\n      Some(n) => {\n        self.current = n as u32;\n        self.next_num = n as u32 + 1;\n      }\n      None => {\n        let next = self.next_num;\n        let current = self.current;\n        self.current = next;\n        self.next_num = current + next;\n      }\n    };\n    Some(self.current)\n  }\n}\n\n#[napi(iterator, constructor)]\npub struct Fib4 {\n  pub current: u32,\n  pub next_item: u32,\n}\n\n#[napi]\nimpl<'a> ScopedGenerator<'a> for Fib4 {\n  type Yield = Unknown<'a>;\n  type Next = i32;\n  type Return = ();\n\n  fn next(&mut self, env: &'a Env, value: Option<Self::Next>) -> Option<Self::Yield> {\n    match value {\n      Some(n) => {\n        self.current = n as u32;\n        self.next_item = n as u32 + 1;\n      }\n      None => {\n        let next = self.next_item;\n        let current = self.current;\n        self.current = next;\n        self.next_item = current + next;\n      }\n    };\n    let mut obj = Object::new(env).ok();\n    if let Some(ref mut val) = obj {\n      val.set(\"number\", self.current).ok()?;\n    }\n    obj.into_unknown(env).ok()\n  }\n}\n\n// Async iterator example - demonstrates the async generator pattern.\n// This example computes Fibonacci synchronously but returns via an async block,\n// showing the basic structure needed for AsyncGenerator implementations.\n#[napi(async_iterator)]\npub struct AsyncFib {\n  current: u32,\n  next: u32,\n}\n\n#[napi]\nimpl AsyncGenerator for AsyncFib {\n  type Yield = u32;\n  type Next = i32;\n  type Return = ();\n\n  fn next(\n    &mut self,\n    value: Option<Self::Next>,\n  ) -> impl Future<Output = Result<Option<Self::Yield>>> + Send + 'static {\n    // The returned Future must be 'static, so we cannot borrow `self` in the async block.\n    // Instead, we compute the result synchronously here, update `self`, and capture\n    // only the computed value in the async block. This is safe because:\n    // 1. All mutations to `self` complete before creating the Future\n    // 2. The async block only captures `result` (an owned value), not `self`\n    let result = match value {\n      Some(n) => {\n        self.current = n as u32;\n        self.next = n as u32 + 1;\n        self.current\n      }\n      None => {\n        let next = self.next;\n        let current = self.current;\n        self.current = next;\n        self.next = current + next;\n        self.current\n      }\n    };\n    async move { Ok(Some(result)) }\n  }\n}\n\n#[napi]\n#[allow(clippy::new_without_default)]\nimpl AsyncFib {\n  #[napi(constructor)]\n  pub fn new() -> Self {\n    AsyncFib {\n      current: 0,\n      next: 1,\n    }\n  }\n}\n\n// Truly async iterator - uses tokio::time::sleep for real async delays\n#[napi(async_iterator)]\npub struct DelayedCounter {\n  current: u32,\n  max: u32,\n  delay_ms: u64,\n}\n\n#[napi]\nimpl AsyncGenerator for DelayedCounter {\n  type Yield = u32;\n  type Next = ();\n  type Return = String;\n\n  fn next(\n    &mut self,\n    _value: Option<Self::Next>,\n  ) -> impl Future<Output = Result<Option<Self::Yield>>> + Send + 'static {\n    let current = self.current;\n    let max = self.max;\n    let delay_ms = self.delay_ms;\n    self.current += 1;\n\n    async move {\n      // Actually sleep - this is truly async!\n      tokio::time::sleep(std::time::Duration::from_millis(delay_ms)).await;\n\n      if current >= max {\n        Ok(None) // Signal completion\n      } else {\n        Ok(Some(current))\n      }\n    }\n  }\n}\n\n#[napi]\nimpl DelayedCounter {\n  /// Creates a counter that yields values from 0 to max-1 with a delay between each\n  #[napi(constructor)]\n  pub fn new(max: u32, delay_ms: u32) -> Self {\n    DelayedCounter {\n      current: 0,\n      max,\n      delay_ms: delay_ms as u64,\n    }\n  }\n}\n\n// Async iterator that simulates fetching paginated data\n#[napi(async_iterator)]\npub struct AsyncDataSource {\n  data: Vec<String>,\n  index: usize,\n  delay_ms: u64,\n}\n\n#[napi]\nimpl AsyncGenerator for AsyncDataSource {\n  type Yield = String;\n  type Next = ();\n  type Return = ();\n\n  fn next(\n    &mut self,\n    _value: Option<Self::Next>,\n  ) -> impl Future<Output = Result<Option<Self::Yield>>> + Send + 'static {\n    let item = if self.index < self.data.len() {\n      Some(self.data[self.index].clone())\n    } else {\n      None\n    };\n    self.index += 1;\n    let delay_ms = self.delay_ms;\n\n    async move {\n      // Simulate async I/O delay\n      tokio::time::sleep(std::time::Duration::from_millis(delay_ms)).await;\n      Ok(item)\n    }\n  }\n}\n\n#[napi]\nimpl AsyncDataSource {\n  /// Creates an async data source that yields each item with a simulated I/O delay\n  #[napi(factory)]\n  pub fn from_data(data: Vec<String>, delay_ms: u32) -> Self {\n    AsyncDataSource {\n      data,\n      index: 0,\n      delay_ms: delay_ms as u64,\n    }\n  }\n}\n"
  },
  {
    "path": "examples/napi/src/js_mod.rs",
    "content": "#[napi]\nmod xxh3 {\n  use napi::bindgen_prelude::{BigInt, Buffer};\n\n  #[napi]\n  pub const ALIGNMENT: u32 = 16;\n\n  #[napi(js_name = \"xxh3_64\")]\n  pub fn xxh64(input: Buffer) -> u64 {\n    let mut h: u64 = 0;\n    for i in input.as_ref() {\n      h = h.wrapping_add(*i as u64);\n    }\n    h\n  }\n\n  #[napi]\n  /// xxh128 function\n  pub fn xxh128(input: Buffer) -> u128 {\n    let mut h: u128 = 0;\n    for i in input.as_ref() {\n      h = h.wrapping_add(*i as u128);\n    }\n    h\n  }\n\n  #[napi]\n  /// Xxh3 class\n  pub struct Xxh3 {\n    inner: BigInt,\n  }\n\n  #[napi]\n  impl Xxh3 {\n    #[napi(constructor)]\n    #[allow(clippy::new_without_default)]\n    pub fn new() -> Xxh3 {\n      Xxh3 {\n        inner: BigInt {\n          sign_bit: false,\n          words: vec![0],\n        },\n      }\n    }\n\n    #[napi]\n    /// update\n    pub fn update(&mut self, input: Buffer) {\n      for i in input.as_ref() {\n        self.inner = BigInt {\n          sign_bit: false,\n          words: vec![self.inner.get_u64().1.wrapping_add(*i as u64)],\n        };\n      }\n    }\n    #[napi]\n    pub fn digest(&self) -> BigInt {\n      self.inner.clone()\n    }\n  }\n}\n\n#[napi]\nmod xxh2 {\n  use napi::bindgen_prelude::*;\n\n  #[napi]\n  pub fn xxh2_plus(a: u32, b: u32) -> u32 {\n    a + b\n  }\n\n  #[napi]\n  pub fn xxh3_xxh64_alias(input: Buffer) -> u64 {\n    super::xxh3::xxh64(input)\n  }\n}\n\nuse napi::bindgen_prelude::Buffer;\n\n#[napi]\npub fn xxh64_alias(input: Buffer) -> u64 {\n  xxh3::xxh64(input)\n}\n"
  },
  {
    "path": "examples/napi/src/lib.rs",
    "content": "#![allow(dead_code)]\n#![allow(unreachable_code)]\n#![allow(clippy::disallowed_names)]\n#![allow(clippy::uninlined_format_args)]\n#![allow(clippy::new_without_default)]\n#![allow(non_snake_case)]\n#![allow(deprecated)]\n\n#[cfg(not(target_family = \"wasm\"))]\nuse napi::bindgen_prelude::create_custom_tokio_runtime;\nuse napi::bindgen_prelude::{JsObjectValue, Object, Result, Symbol};\npub use napi_shared::*;\n\n#[macro_use]\nextern crate napi_derive;\n#[macro_use]\nextern crate serde_derive;\n\n#[cfg(feature = \"snmalloc\")]\n#[global_allocator]\nstatic ALLOC: snmalloc_rs::SnMalloc = snmalloc_rs::SnMalloc;\n\n#[cfg(feature = \"mimalloc\")]\n#[global_allocator]\nstatic ALLOC: mimalloc_safe::MiMalloc = mimalloc_safe::MiMalloc;\n\n#[cfg(not(target_family = \"wasm\"))]\n#[napi_derive::module_init]\nfn init() {\n  use std::thread::current;\n\n  let rt = tokio::runtime::Builder::new_multi_thread()\n    .enable_all()\n    .on_thread_start(|| {\n      let thread = std::thread::current();\n      println!(\"tokio thread started {:?}\", thread.name());\n    })\n    .build()\n    .unwrap();\n  create_custom_tokio_runtime(rt);\n}\n\n#[napi]\n/// This is a const\npub const DEFAULT_COST: u32 = 12;\n\n#[napi(skip_typescript)]\npub const TYPE_SKIPPED_CONST: u32 = 12;\n\n#[napi]\npub fn shutdown_runtime() {\n  #[cfg(all(target_family = \"wasm\", tokio_unstable))]\n  {\n    napi::bindgen_prelude::shutdown_async_runtime();\n  }\n}\n\n#[napi(module_exports)]\npub fn exports(mut export: Object) -> Result<()> {\n  let symbol = Symbol::for_desc(\"NAPI_RS_SYMBOL\");\n  export.set_named_property(\"NAPI_RS_SYMBOL\", symbol)?;\n  Ok(())\n}\n\nmod array;\nmod r#async;\nmod async_generator_repro;\nmod bigint;\nmod callback;\nmod class;\nmod class_factory;\nmod constructor;\nmod date;\nmod either;\nmod r#enum;\nmod env;\nmod error;\nmod external;\n#[cfg(not(target_family = \"wasm\"))]\nmod fetch;\nmod fn_return_if_invalid;\nmod fn_strict;\nmod fn_ts_override;\nmod function;\nmod generator;\nmod js_mod;\nmod lifetime;\nmod map;\nmod nullable;\nmod number;\nmod object;\nmod promise;\nmod reference;\nmod scope;\nmod serde;\nmod set;\nmod shared;\nmod stream;\nmod string;\nmod symbol;\nmod task;\nmod threadsafe_function;\nmod transparent;\nmod r#type;\nmod typed_array;\nmod wasm;\n"
  },
  {
    "path": "examples/napi/src/lifetime.rs",
    "content": "use std::path::{Path, PathBuf};\n\nuse napi::{bindgen_prelude::*, JsString, ScopedTask};\n\n#[napi]\npub struct CreateStringClass {\n  inner: PathBuf,\n}\n\n#[napi]\nimpl CreateStringClass {\n  #[napi]\n  pub fn new() -> Self {\n    Self {\n      inner: PathBuf::from(\"\"),\n    }\n  }\n\n  #[napi]\n  pub fn create_string<'env>(&self, env: &'env Env) -> Option<JsString<'env>> {\n    create_string(env, &self.inner).ok()\n  }\n\n  #[napi]\n  pub fn create_string_result<'env>(&self, env: &'env Env) -> Result<JsString<'env>> {\n    create_string(env, &self.inner)\n  }\n}\n\nfn create_string<'env>(env: &'env Env, path: &Path) -> Result<JsString<'env>> {\n  let path = path.to_string_lossy();\n  env.create_string(path.as_ref())\n}\n\n#[napi]\npub fn callback_in_spawn(env: &Env, callback: Function<Object, Unknown>) -> Result<()> {\n  let callback_ref = callback.create_ref()?;\n  env\n    .spawn(AsyncTaskInSpawn {})?\n    .promise_object()\n    .then(move |ctx| {\n      let cb = callback_ref.borrow_back(&ctx.env)?;\n      cb.call(ctx.value)?;\n      Ok(())\n    })?;\n  Ok(())\n}\n\nstruct AsyncTaskInSpawn {}\n\nimpl<'env> ScopedTask<'env> for AsyncTaskInSpawn {\n  type Output = ();\n  type JsValue = Object<'env>;\n\n  fn compute(&mut self) -> Result<Self::Output> {\n    Ok(())\n  }\n\n  fn resolve(&mut self, env: &'env Env, _: Self::Output) -> Result<Self::JsValue> {\n    let mut obj = Object::new(env)?;\n    obj.set(\"foo\", \"bar\")?;\n    Ok(obj)\n  }\n}\n\n#[napi]\npub fn compress_sync<'env>(\n  env: &'env Env,\n  _: Either<String, &'env [u8]>,\n) -> Result<BufferSlice<'env>> {\n  BufferSlice::from_data(env, vec![])\n}\n"
  },
  {
    "path": "examples/napi/src/map.rs",
    "content": "use rustc_hash::FxBuildHasher;\nuse std::collections::{BTreeMap, HashMap};\n\nuse indexmap::IndexMap;\n\n#[napi]\nfn get_mapping() -> HashMap<String, u32> {\n  let mut map = HashMap::new();\n  map.insert(\"a\".to_string(), 101);\n  map.insert(\"b\".to_string(), 102);\n  map.insert(\"\\0c\".to_string(), 103);\n  map\n}\n\n#[napi]\nfn sum_mapping(nums: HashMap<String, u32>) -> u32 {\n  nums.into_values().sum()\n}\n\n#[napi]\nfn get_mapping_with_hasher() -> HashMap<String, u32, FxBuildHasher> {\n  let mut map = HashMap::with_hasher(FxBuildHasher);\n  map.insert(\"a\".to_string(), 101);\n  map.insert(\"b\".to_string(), 102);\n  map\n}\n\n#[napi]\nfn get_btree_mapping() -> BTreeMap<String, u32> {\n  let mut map = BTreeMap::new();\n  map.insert(\"a\".to_string(), 101);\n  map.insert(\"b\".to_string(), 102);\n  map.insert(\"\\0c\".to_string(), 103);\n  map\n}\n\n#[napi]\nfn sum_btree_mapping(nums: BTreeMap<String, u32>) -> u32 {\n  nums.into_values().sum()\n}\n\n#[napi]\nfn get_index_mapping() -> IndexMap<String, u32> {\n  let mut map = IndexMap::new();\n  map.insert(\"a\".to_string(), 101);\n  map.insert(\"b\".to_string(), 102);\n  map.insert(\"\\0c\".to_string(), 103);\n  map\n}\n\n#[napi]\nfn get_index_mapping_with_hasher() -> IndexMap<String, u32, FxBuildHasher> {\n  let mut map = IndexMap::with_hasher(FxBuildHasher);\n  map.insert(\"a\".to_string(), 101);\n  map.insert(\"b\".to_string(), 102);\n  map\n}\n\n#[napi]\nfn sum_index_mapping(nums: IndexMap<String, u32>) -> u32 {\n  nums.into_values().sum()\n}\n\n#[napi]\nfn indexmap_passthrough(fixture: IndexMap<String, u32>) -> IndexMap<String, u32> {\n  fixture\n}\n"
  },
  {
    "path": "examples/napi/src/nullable.rs",
    "content": "use napi::bindgen_prelude::*;\n\n#[napi]\nfn map_option(val: Option<u32>) -> Option<u32> {\n  val.map(|v| v + 1)\n}\n\n#[napi]\nfn return_null() -> Null {\n  Null\n}\n\n#[napi]\nfn return_undefined() -> Undefined {}\n\n#[napi(object, use_nullable = true)]\nstruct UseNullableStruct {\n  pub required_number_field: u32,\n  pub required_string_field: String,\n  pub nullable_number_field: Option<u32>,\n  pub nullable_string_field: Option<String>,\n}\n\n#[napi(object, use_nullable = false)]\nstruct NotUseNullableStruct {\n  pub required_number_field: u32,\n  pub required_string_field: String,\n  pub optional_number_field: Option<u32>,\n  pub optional_string_field: Option<String>,\n}\n\n#[napi(object)]\nstruct DefaultUseNullableStruct {\n  pub required_number_field: u32,\n  pub required_string_field: String,\n  pub optional_number_field: Option<u32>,\n  pub optional_string_field: Option<String>,\n}\n\n#[napi(constructor, use_nullable = true)]\nstruct UseNullableClass {\n  pub required_number_field: u32,\n  pub required_string_field: String,\n  pub nullable_number_field: Option<u32>,\n  pub nullable_string_field: Option<String>,\n}\n\n#[napi(constructor, use_nullable = false)]\nstruct NotUseNullableClass {\n  pub required_number_field: u32,\n  pub required_string_field: String,\n  pub optional_number_field: Option<u32>,\n  pub optional_string_field: Option<String>,\n}\n\n#[napi(constructor)]\nstruct DefaultUseNullableClass {\n  pub required_number_field: u32,\n  pub required_string_field: String,\n  pub optional_number_field: Option<u32>,\n  pub optional_string_field: Option<String>,\n}\n"
  },
  {
    "path": "examples/napi/src/number.rs",
    "content": "#[napi]\nfn add(a: u32, b: u32) -> u32 {\n  a + b\n}\n\n#[napi(strict)]\nfn fibonacci(n: u32) -> u32 {\n  match n {\n    1 | 2 => 1,\n    _ => fibonacci(n - 1) + fibonacci(n - 2),\n  }\n}\n"
  },
  {
    "path": "examples/napi/src/object.rs",
    "content": "use napi::{bindgen_prelude::*, threadsafe_function::ThreadsafeFunction, JsGlobal, Result};\n\n#[napi]\nfn list_obj_keys(obj: Object) -> Vec<String> {\n  Object::keys(&obj).unwrap()\n}\n\n#[napi]\nfn create_obj(env: &Env) -> Object<'_> {\n  let mut obj = Object::new(env).unwrap();\n  obj.set(\"test\", 1).unwrap();\n\n  obj\n}\n\n#[napi]\nfn get_global(env: &Env) -> Result<JsGlobal<'_>> {\n  env.get_global()\n}\n\n#[napi]\nfn get_undefined() -> Result<()> {\n  Ok(())\n}\n\n#[napi]\nfn get_null() -> Null {\n  Null\n}\n\n#[napi(object)]\nstruct AllOptionalObject {\n  pub name: Option<String>,\n  pub age: Option<u32>,\n}\n\n#[napi]\nfn receive_all_optional_object(obj: Option<AllOptionalObject>) -> Result<()> {\n  if let Some(obj) = &obj {\n    assert!(obj.name.is_none());\n    assert!(obj.age.is_none());\n  }\n  Ok(())\n}\n\n#[napi(js_name = \"ALIAS\")]\npub enum AliasedEnum {\n  A,\n  B,\n}\n\n#[napi(object, js_name = \"AliasedStruct\")]\npub struct StructContainsAliasedEnum {\n  pub a: AliasedEnum,\n  pub b: u32,\n}\n\n#[napi]\nfn fn_received_aliased(mut s: StructContainsAliasedEnum, e: AliasedEnum) {\n  s.a = e;\n  let _ = s;\n}\n\n#[napi(object)]\npub struct StrictObject {\n  pub name: String,\n}\n\n#[napi]\npub fn receive_strict_object(strict_object: StrictObject) {\n  assert_eq!(strict_object.name, \"strict\");\n}\n\n#[napi]\npub fn get_str_from_object(env: &Env) {\n  let mut obj = Object::new(env).unwrap();\n  obj.set(\"name\", \"value\").unwrap();\n  assert_eq!(obj.get(\"name\").unwrap(), Some(\"value\".to_string()));\n}\n\n#[napi(object)]\npub struct TsTypeChanged {\n  #[napi(ts_type = \"object\")]\n  pub type_override: String,\n\n  #[napi(ts_type = \"object\")]\n  pub type_override_optional: Option<String>,\n}\n\n#[napi(ts_return_type = \"{ value: ArrayBuffer, get getter(): number }\")]\npub fn create_obj_with_property(env: &Env) -> Result<Object<'_>> {\n  let mut obj = Object::new(env)?;\n  let arraybuffer = ArrayBuffer::from_data(env, vec![0; 10])?;\n  obj.define_properties(&[\n    Property::new()\n      .with_utf8_name(\"value\")?\n      .with_value(&arraybuffer),\n    Property::new()\n      .with_utf8_name(\"getter\")?\n      .with_getter(getter_from_obj_c_callback),\n  ])?;\n  Ok(obj)\n}\n\n#[napi]\nfn getter_from_obj() -> u32 {\n  42\n}\n\n#[napi(object, object_to_js = false)]\nstruct ObjectOnlyFromJs {\n  pub count: u32,\n  pub callback: ThreadsafeFunction<u32>,\n}\n\n#[napi]\nfn receive_object_only_from_js(\n  #[napi(ts_arg_type = \"{ count: number, callback: (err: Error | null, count: number) => void }\")]\n  obj: ObjectOnlyFromJs,\n) {\n  let ObjectOnlyFromJs { callback, count } = obj;\n  std::thread::spawn(move || {\n    callback.call(\n      Ok(count),\n      napi::threadsafe_function::ThreadsafeFunctionCallMode::NonBlocking,\n    );\n  });\n}\n\n#[napi(ts_args_type = \"obj: { foo: number; bar: string; }\")]\nfn object_get_named_property_should_perform_typecheck(obj: Object) -> Result<()> {\n  obj.get_named_property::<u32>(\"foo\")?;\n  obj.get_named_property::<String>(\"bar\")?;\n  Ok(())\n}\n\n#[napi(object, object_from_js = false)]\nstruct ObjectOnlyToJs {\n  pub name: u32,\n  pub dependencies: serde_json::Value,\n}\n\n#[napi]\nfn return_object_only_to_js() -> ObjectOnlyToJs {\n  ObjectOnlyToJs {\n    name: 42,\n    dependencies: serde_json::json!({ \"@napi-rs/cli\": \"^3.0.0\", \"rollup\": \"^4.0.0\" }),\n  }\n}\n\n#[napi(object)]\npub struct TupleObject(#[napi(js_name = \"customField\")] pub u32, pub u32);\n\n#[napi(object)]\npub struct Data<'s> {\n  pub data: Either<String, BufferSlice<'s>>,\n}\n\n#[napi]\npub fn receive_buffer_slice_with_lifetime(data: Data) -> u32 {\n  (match data.data {\n    Either::A(s) => s.len(),\n    Either::B(d) => d.len(),\n  }) as u32\n}\n\n#[napi(object)]\npub struct FunctionData<'a> {\n  pub handle: Function<'a, (), i32>,\n}\n\n#[napi]\npub fn generate_function_and_call_it(env: &Env) -> Result<FunctionData<'_>> {\n  let handle = env.create_function_from_closure(\"handle_function\", |_ctx| Ok(1))?;\n  Ok(FunctionData { handle })\n}\n\n#[napi]\npub fn get_null_byte_property(obj: Object) -> Result<Option<String>> {\n  obj.get::<String>(\"\\0virtual\")\n}\n\n#[napi]\npub fn set_null_byte_property(mut obj: Object) -> Result<()> {\n  obj.set(\"\\0virtual\", \"test\")\n}\n\n#[napi(object, object_to_js = false)]\npub struct ViteImportGlobMeta {\n  pub is_sub_imports_pattern: Option<bool>,\n}\n\n#[napi(object, object_to_js = false)]\npub struct BindingVitePluginMeta {\n  #[napi(js_name = \"vite:import-glob\")]\n  pub vite_import_glob: ViteImportGlobMeta,\n}\n\n#[napi]\npub fn receive_binding_vite_plugin_meta(meta: BindingVitePluginMeta) {\n  assert_eq!(meta.vite_import_glob.is_sub_imports_pattern, Some(true));\n}\n\n#[napi]\npub fn create_object_ref(env: &Env) -> Result<ObjectRef> {\n  let mut obj = Object::new(env)?;\n  obj.set(\"test\", 1)?;\n  obj.create_ref()\n}\n\n#[napi]\npub fn object_with_c_apis(env: &Env) -> Result<Object<'_>> {\n  let mut obj = Object::new(env)?;\n  obj.set_c_named_property(c\"test\", 1)?;\n  assert_eq!(obj.get_c_named_property::<u32>(c\"test\")?, 1);\n  assert!(obj.has_c_named_property(c\"test\")?);\n  assert!(obj.delete_c_named_property(c\"test\")?);\n  assert!(!obj.has_c_own_property(c\"test\")?);\n  obj.create_c_named_method(c\"test\", test_method_c_callback)?;\n  Ok(obj)\n}\n\n#[napi(no_export)]\nfn test_method() -> u32 {\n  42\n}\n\n#[napi(object)]\n#[derive(Default, Debug)]\npub struct CompilerAssumptions {\n  pub ignore_function_length: Option<bool>,\n  pub no_document_all: Option<bool>,\n  pub object_rest_no_symbols: Option<bool>,\n  pub pure_getters: Option<bool>,\n  /// When using public class fields, assume that they don't shadow any getter in the current class,\n  /// in its subclasses or in its superclass. Thus, it's safe to assign them rather than using\n  /// `Object.defineProperty`.\n  ///\n  /// For example:\n  ///\n  /// Input:\n  /// ```js\n  /// class Test {\n  ///   field = 2;\n  ///\n  ///   static staticField = 3;\n  /// }\n  /// ```\n  ///\n  /// When `set_public_class_fields` is `true`, the output will be:\n  /// ```js\n  /// class Test {\n  ///   constructor() {\n  ///     this.field = 2;\n  ///   }\n  /// }\n  /// Test.staticField = 3;\n  /// ```\n  ///\n  /// Otherwise, the output will be:\n  /// ```js\n  /// import _defineProperty from \"@oxc-project/runtime/helpers/defineProperty\";\n  /// class Test {\n  ///   constructor() {\n  ///     _defineProperty(this, \"field\", 2);\n  ///   }\n  /// }\n  /// _defineProperty(Test, \"staticField\", 3);\n  /// ```\n  ///\n  /// NOTE: For TypeScript, if you wanted behavior is equivalent to `useDefineForClassFields: false`, you should\n  /// set both `set_public_class_fields` and [`crate::TypeScriptOptions::remove_class_fields_without_initializer`]\n  /// to `true`.\n  pub set_public_class_fields: Option<bool>,\n}\n"
  },
  {
    "path": "examples/napi/src/promise.rs",
    "content": "use napi::{bindgen_prelude::*, Error, JsString};\n\n#[napi]\npub async fn async_plus_100(p: Promise<u32>) -> Result<u32> {\n  let v = p.await?;\n  Ok(v + 100)\n}\n\n#[napi]\npub fn call_then_on_promise(input: PromiseRaw<u32>) -> Result<PromiseRaw<String>> {\n  input.then(|v| Ok(format!(\"{}\", v.value)))\n}\n\n#[napi]\npub fn call_catch_on_promise(input: PromiseRaw<'_, u32>) -> Result<PromiseRaw<'_, String>> {\n  input.catch(|e: CallbackContext<String>| Ok(e.value))\n}\n\n#[napi]\npub fn call_finally_on_promise(\n  mut input: PromiseRaw<u32>,\n  on_finally: FunctionRef<(), ()>,\n) -> Result<PromiseRaw<u32>> {\n  input.finally(move |env| {\n    on_finally.borrow_back(&env)?.call(())?;\n    Ok(())\n  })\n}\n\n#[napi]\npub fn esm_resolve<'env>(\n  _: &'env Env,\n  next: Function<'env, (), PromiseRaw<'env, ()>>,\n) -> Result<PromiseRaw<'env, ()>> {\n  next.call(())\n}\n\n#[napi]\npub fn spawn_future_lifetime<'env>(\n  env: &'env Env,\n  input: u32,\n) -> Result<PromiseRaw<'env, JsString<'env>>> {\n  env.spawn_future_with_callback(async move { Ok(input) }, |env, val| {\n    env.create_string(format!(\"{}\", val))\n  })\n}\n\n#[napi]\npub struct ClassReturnInPromise {}\n\n#[napi]\npub fn promise_raw_return_class_instance<'env>(\n  env: &'env Env,\n) -> Result<PromiseRaw<'env, ClassReturnInPromise>> {\n  env.spawn_future_with_callback(async move { Ok(ClassReturnInPromise {}) }, |_env, _val| {\n    Ok(ClassReturnInPromise {})\n  })\n}\n\n#[napi]\npub fn create_resolved_promise<'env>(env: &'env Env, value: u32) -> Result<PromiseRaw<'env, u32>> {\n  PromiseRaw::resolve(env, value)\n}\n\n#[napi]\npub fn create_rejected_promise<'env>(\n  env: &'env Env,\n  message: String,\n) -> Result<PromiseRaw<'env, u32>> {\n  PromiseRaw::reject(env, Error::from_reason(message))\n}\n"
  },
  {
    "path": "examples/napi/src/reference.rs",
    "content": "use std::{cell::RefCell, rc::Rc};\n\nuse napi::bindgen_prelude::*;\n\npub struct Repository {\n  dir: String,\n}\n\nimpl Repository {\n  fn remote(&self) -> Remote<'_> {\n    Remote { inner: self }\n  }\n}\n\npub struct Remote<'repo> {\n  inner: &'repo Repository,\n}\n\nimpl Remote<'_> {\n  fn name(&self) -> String {\n    \"origin\".to_owned()\n  }\n}\n\n#[napi]\npub struct JsRepo {\n  inner: Repository,\n}\n\n#[napi]\nimpl JsRepo {\n  #[napi(constructor)]\n  pub fn new(dir: String) -> Self {\n    JsRepo {\n      inner: Repository { dir },\n    }\n  }\n\n  #[napi]\n  pub fn remote(&self, reference: Reference<JsRepo>, env: Env) -> Result<JsRemote> {\n    Ok(JsRemote {\n      inner: reference.share_with(env, |repo| Ok(repo.inner.remote()))?,\n    })\n  }\n}\n\n#[napi]\npub struct JsRemote {\n  inner: SharedReference<JsRepo, Remote<'static>>,\n}\n\n#[napi]\nimpl JsRemote {\n  #[napi(constructor)]\n  pub fn new(repo: Reference<JsRepo>, env: Env) -> Result<Self> {\n    Ok(Self {\n      inner: repo.share_with(env, |repo| Ok(repo.inner.remote()))?,\n    })\n  }\n\n  #[napi]\n  pub fn name(&self) -> String {\n    self.inner.name()\n  }\n}\n\nstruct OwnedStyleSheet {\n  rules: Vec<String>,\n}\n\n#[napi]\npub struct CSSRuleList {\n  owned: Rc<RefCell<OwnedStyleSheet>>,\n  parent: WeakReference<CSSStyleSheet>,\n}\n\n#[napi]\nimpl CSSRuleList {\n  #[napi]\n  pub fn get_rules(&self) -> Vec<String> {\n    self.owned.borrow().rules.to_vec()\n  }\n\n  #[napi(getter)]\n  pub fn parent_style_sheet(&self) -> WeakReference<CSSStyleSheet> {\n    self.parent.clone()\n  }\n\n  #[napi(getter)]\n  pub fn name(&self, env: Env) -> Result<Option<String>> {\n    Ok(\n      self\n        .parent\n        .upgrade(env)?\n        .map(|stylesheet| stylesheet.name.clone()),\n    )\n  }\n}\n\n#[napi]\npub struct CSSStyleSheet {\n  name: String,\n  inner: Rc<RefCell<OwnedStyleSheet>>,\n  rules: Option<Reference<CSSRuleList>>,\n}\n\n#[napi]\npub struct AnotherCSSStyleSheet {\n  inner: Rc<RefCell<OwnedStyleSheet>>,\n  rules: Reference<CSSRuleList>,\n}\n\n#[napi]\nimpl AnotherCSSStyleSheet {\n  #[napi(getter)]\n  pub fn rules(&self, env: Env) -> Result<Reference<CSSRuleList>> {\n    self.rules.clone(env)\n  }\n}\n\n#[napi]\nimpl CSSStyleSheet {\n  #[napi(constructor)]\n  pub fn new(name: String, rules: Vec<String>) -> Result<Self> {\n    let inner = Rc::new(RefCell::new(OwnedStyleSheet { rules }));\n    Ok(CSSStyleSheet {\n      name,\n      inner,\n      rules: None,\n    })\n  }\n\n  #[napi(getter)]\n  pub fn rules(\n    &mut self,\n    env: Env,\n    reference: Reference<CSSStyleSheet>,\n  ) -> Result<Reference<CSSRuleList>> {\n    if let Some(rules) = &self.rules {\n      return rules.clone(env);\n    }\n\n    let rules = CSSRuleList::into_reference(\n      CSSRuleList {\n        owned: self.inner.clone(),\n        parent: reference.downgrade(),\n      },\n      env,\n    )?;\n\n    self.rules = Some(rules.clone(env)?);\n    Ok(rules)\n  }\n\n  #[napi]\n  pub fn another_css_style_sheet(&self, env: Env) -> Result<AnotherCSSStyleSheet> {\n    Ok(AnotherCSSStyleSheet {\n      inner: self.inner.clone(),\n      rules: self.rules.as_ref().unwrap().clone(env)?,\n    })\n  }\n}\n"
  },
  {
    "path": "examples/napi/src/scope.rs",
    "content": "use napi::{bindgen_prelude::*, JsString};\n\n#[napi]\npub fn shorter_scope(env: &Env, arr: Array) -> Result<Vec<u32>> {\n  let len = arr.len();\n  let mut result = Vec::with_capacity(len as usize);\n  for i in 0..len {\n    let scope = HandleScope::create(env)?;\n    let value: Unknown = arr.get_element(i)?;\n    let len = unsafe {\n      scope.close(value, |v| match v.get_type()? {\n        ValueType::String => {\n          let string = v.cast::<JsString>()?;\n          Ok(string.utf8_len()? as u32)\n        }\n        ValueType::Object => Ok(1),\n        _ => Ok(0),\n      })?\n    };\n    result.push(len);\n  }\n  Ok(result)\n}\n\n#[napi]\npub fn shorter_escapable_scope<'env>(\n  env: &'env Env,\n  create_string: Function<(), Option<JsString>>,\n) -> Result<JsString<'env>> {\n  let mut longest_string = env.create_string(\"\")?;\n  let mut prev_len = 0;\n  loop {\n    if let Some(maybe_longest) = EscapableHandleScope::with(\n      env,\n      (create_string, longest_string),\n      move |scope, (create_string, prev)| {\n        let elem = create_string.call(())?;\n        if let Some(string) = elem {\n          let len = string.utf8_len()?;\n          if len > prev.utf8_len()? {\n            return Ok(Some(Either::A(string.escape::<JsString>(scope)?)));\n          }\n        } else {\n          return Ok(Some(Either::B(())));\n        }\n        Ok(None)\n      },\n    )? {\n      match maybe_longest {\n        Either::A(longest) => {\n          if longest.utf8_len()? == prev_len {\n            break;\n          }\n          prev_len = longest.utf8_len()?;\n          longest_string = longest;\n        }\n        Either::B(_) => break,\n      }\n    }\n  }\n  Ok(longest_string)\n}\n"
  },
  {
    "path": "examples/napi/src/serde.rs",
    "content": "use napi::bindgen_prelude::*;\nuse serde_json::{Map, Value};\nuse std::fs;\n\n#[napi(object)]\n#[derive(Serialize, Deserialize, Debug)]\n/// This is an interface for package.json\nstruct PackageJson {\n  pub name: String,\n  /// The version of the package\n  pub version: String,\n  pub dependencies: Option<Map<String, Value>>,\n  #[serde(rename = \"devDependencies\")]\n  pub dev_dependencies: Option<Map<String, Value>>,\n}\n\n#[napi]\nfn read_package_json() -> Result<PackageJson> {\n  let raw = fs::read_to_string(\"package.json\")?;\n  let p: PackageJson = serde_json::from_str(&raw)?;\n  Ok(p)\n}\n\n#[napi]\nfn get_package_json_name(package_json: PackageJson) -> String {\n  package_json.name\n}\n\n#[napi]\nfn test_serde_roundtrip(data: Value) -> Value {\n  data\n}\n\n#[napi]\nfn test_serde_big_number_precision(number: String) -> Value {\n  let data = format!(\"{{\\\"number\\\":{}}}\", number);\n  serde_json::from_str(&data).unwrap()\n}\n\n#[derive(Serialize, Debug, Deserialize)]\nstruct BytesObject {\n  #[serde(with = \"serde_bytes\")]\n  code: Vec<u8>,\n}\n\n#[napi]\nfn test_serde_buffer_bytes(obj: Object, env: Env) -> napi::Result<usize> {\n  let obj: BytesObject = env.from_js_value(obj)?;\n  Ok(obj.code.len())\n}\n\n#[napi]\nstruct PackageJsonReader {\n  i: Value,\n}\n\n#[napi]\nimpl PackageJsonReader {\n  #[napi(constructor)]\n  pub fn new() -> Result<Self> {\n    let raw = fs::read_to_string(\"package.json\")?;\n    Ok(Self {\n      i: serde_json::from_str(&raw)?,\n    })\n  }\n\n  #[napi]\n  pub fn read(&self) -> &Value {\n    &self.i\n  }\n}\n\n#[napi(catch_unwind, ts_args_type = \"value: bigint\")]\npub fn get_bigint_json_value(bigint_json_value: Value) {\n  match bigint_json_value {\n    Value::Number(n) => {\n      if let Some(u) = n.as_u64() {\n        assert_eq!(u, 1);\n        return;\n      }\n      if let Some(i) = n.as_i64() {\n        assert_eq!(i, -1);\n        return;\n      }\n      unreachable!(\"should not happen\");\n    }\n    Value::String(s) => {\n      assert_eq!(s, \"18446744073709551620\");\n    }\n    _ => {\n      unreachable!(\"should not happen\");\n    }\n  }\n}\n"
  },
  {
    "path": "examples/napi/src/set.rs",
    "content": "use indexmap::IndexSet;\nuse rustc_hash::FxBuildHasher;\nuse std::collections::{BTreeSet, HashSet};\n\n#[napi]\npub fn pass_set_to_rust(set: HashSet<String>) {\n  assert_eq!(set.len(), 3);\n  assert!(set.contains(\"a\"));\n  assert!(set.contains(\"b\"));\n  assert!(set.contains(\"c\"));\n}\n\n#[napi]\npub fn pass_set_to_js() -> HashSet<String> {\n  let mut set = HashSet::new();\n  set.insert(\"a\".to_string());\n  set.insert(\"b\".to_string());\n  set.insert(\"c\".to_string());\n  set\n}\n\n#[napi]\npub fn pass_set_with_hasher_to_js() -> HashSet<String, FxBuildHasher> {\n  let mut set = HashSet::with_hasher(FxBuildHasher);\n  set.insert(\"a\".to_string());\n  set.insert(\"b\".to_string());\n  set.insert(\"c\".to_string());\n  set\n}\n\n#[napi]\npub fn btree_set_to_rust(set: BTreeSet<String>) {\n  assert_eq!(set.len(), 3);\n  assert!(set.contains(\"a\"));\n  assert!(set.contains(\"b\"));\n  assert!(set.contains(\"c\"));\n}\n\n#[napi]\npub fn btree_set_to_js() -> BTreeSet<String> {\n  let mut set = BTreeSet::new();\n  set.insert(\"a\".to_string());\n  set.insert(\"b\".to_string());\n  set.insert(\"c\".to_string());\n  set\n}\n\n#[napi]\npub fn index_set_to_rust(set: IndexSet<String>) {\n  let mut iter = set.into_iter();\n\n  assert_eq!(Some(\"a\".to_string()), iter.next());\n  assert_eq!(Some(\"b\".to_string()), iter.next());\n  assert_eq!(Some(\"c\".to_string()), iter.next());\n  assert_eq!(None, iter.next());\n}\n\n#[napi]\npub fn index_set_to_js() -> IndexSet<String> {\n  let mut set = IndexSet::new();\n\n  set.insert(\"a\".to_string());\n  set.insert(\"b\".to_string());\n  set.insert(\"c\".to_string());\n  set.insert(\"d\".to_string());\n  set\n}\n"
  },
  {
    "path": "examples/napi/src/shared.rs",
    "content": "use napi_derive::napi;\nuse napi_shared::Shared;\n\n#[napi]\npub fn return_from_shared_crate() -> Shared {\n  Shared { value: 42 }\n}\n"
  },
  {
    "path": "examples/napi/src/stream.rs",
    "content": "use bytes::BytesMut;\nuse napi::bindgen_prelude::*;\nuse tokio::sync::mpsc::error::TrySendError;\nuse tokio_stream::{wrappers::ReceiverStream, StreamExt};\nuse tokio_util::io::{read_buf, StreamReader};\n\n#[napi]\npub fn accept_stream(\n  env: &Env,\n  stream: ReadableStream<Uint8Array>,\n) -> Result<AsyncBlock<BufferSlice<'static>>> {\n  let web_readable_stream = stream.read()?;\n  let mut input = StreamReader::new(web_readable_stream.map(|chunk| {\n    chunk\n      .map(|chunk| bytes::Bytes::copy_from_slice(&chunk))\n      .map_err(|e| std::io::Error::other(e.reason.clone()))\n  }));\n  AsyncBlockBuilder::build_with_map(\n    env,\n    async move {\n      let mut bytes_mut = BytesMut::new();\n      loop {\n        let n = read_buf(&mut input, &mut bytes_mut).await?;\n        if n == 0 {\n          break;\n        }\n      }\n      Ok(bytes_mut)\n    },\n    |env, mut value| {\n      let value_ptr = value.as_mut_ptr();\n      unsafe {\n        BufferSlice::from_external(&env, value_ptr, value.len(), value, move |_, bytes| {\n          drop(bytes);\n        })\n      }\n    },\n  )\n}\n\n#[napi]\npub fn create_readable_stream(env: &Env) -> Result<ReadableStream<'_, BufferSlice<'_>>> {\n  let (tx, rx) = tokio::sync::mpsc::channel(100);\n  std::thread::spawn(move || {\n    for _ in 0..100 {\n      match tx.try_send(Ok(b\"hello\".to_vec())) {\n        Err(TrySendError::Closed(_)) => {\n          panic!(\"closed\");\n        }\n        Err(TrySendError::Full(_)) => {\n          panic!(\"queue is full\");\n        }\n        Ok(_) => {}\n      }\n    }\n  });\n  ReadableStream::create_with_stream_bytes(env, ReceiverStream::new(rx))\n}\n\n/// Nested metadata for demonstrating object streaming with complex types\n#[napi(object)]\n#[derive(Default)]\npub struct NestedMetadata {\n  pub hello: String,\n}\n\n/// Example struct demonstrating object streaming with nested types\n#[napi(object)]\n#[derive(Default)]\npub struct StreamItem {\n  pub something: NestedMetadata,\n  pub name: String,\n  pub size: i32,\n}\n\n/// Creates a ReadableStream that emits StreamItem objects.\n/// This demonstrates streaming custom Rust structs to JavaScript.\n#[napi]\npub fn create_readable_stream_with_object(env: &Env) -> Result<ReadableStream<'_, StreamItem>> {\n  let (tx, rx) = tokio::sync::mpsc::channel(100);\n  std::thread::spawn(move || {\n    for i in 0..100 {\n      let item = StreamItem {\n        something: Default::default(),\n        name: Default::default(),\n        size: i,\n      };\n      match tx.try_send(Ok(item)) {\n        Err(TrySendError::Closed(_)) => {\n          panic!(\"closed\");\n        }\n        Err(TrySendError::Full(_)) => {\n          panic!(\"queue is full\");\n        }\n        Ok(_) => {}\n      }\n    }\n  });\n  ReadableStream::new(env, ReceiverStream::new(rx))\n}\n\n#[napi(ts_args_type = \"readableStreamClass: typeof ReadableStream\")]\npub fn create_readable_stream_from_class<'env>(\n  env: &Env,\n  readable_stream_class: Unknown<'env>,\n) -> Result<ReadableStream<'env, BufferSlice<'env>>> {\n  let (tx, rx) = tokio::sync::mpsc::channel(100);\n  std::thread::spawn(move || {\n    for _ in 0..100 {\n      match tx.try_send(Ok(b\"hello\".to_vec())) {\n        Err(TrySendError::Closed(_)) => {\n          panic!(\"closed\");\n        }\n        Err(TrySendError::Full(_)) => {\n          panic!(\"queue is full\");\n        }\n        Ok(_) => {}\n      }\n    }\n  });\n  ReadableStream::with_stream_bytes_and_readable_stream_class(\n    env,\n    &readable_stream_class,\n    ReceiverStream::new(rx),\n  )\n}\n"
  },
  {
    "path": "examples/napi/src/string.rs",
    "content": "use napi::{bindgen_prelude::*, JsString, JsStringLatin1, JsStringUtf16, JsStringUtf8};\n\n#[napi(object)]\npub struct Latin1MethodsResult {\n  pub length: u32,\n  pub is_empty: bool,\n  pub as_slice: Vec<u8>,\n}\n\n#[napi]\npub fn contains(source: String, target: String) -> bool {\n  source.contains(&target)\n}\n\n#[napi]\npub fn concat_str(mut s: String) -> String {\n  s.push_str(\" + Rust 🦀 string!\");\n  s\n}\n\n#[napi]\npub fn concat_utf16(s: Utf16String) -> Utf16String {\n  Utf16String::from(format!(\"{} + Rust 🦀 string!\", s))\n}\n\n#[napi]\npub fn concat_latin1(s: Latin1String) -> String {\n  format!(\"{} + Rust 🦀 string!\", s)\n}\n\n#[napi]\npub fn roundtrip_str(s: String) -> String {\n  s\n}\n\n#[napi]\npub fn return_c_string() -> RawCString {\n  let mock_c_string = b\"Hello from C string!\\0\";\n  let mock_c_string_ptr = mock_c_string.as_ptr().cast();\n  RawCString::new(mock_c_string_ptr, NAPI_AUTO_LENGTH)\n}\n\n#[napi]\npub fn into_utf8(s: JsString) -> Result<JsStringUtf8> {\n  s.into_utf8()\n}\n\n#[napi]\n/// Function to test escaped quotes in comments.\n/// This comment contains escaped quotes: \\\\\"g+sx\\\\\" and should not break JSON parsing.\n/// The pattern \\\\\"value\\\\\" is commonly used in regex and shell commands.\n/// Another example: sed 's/old/\\\\\"new\\\\\"/g' where quotes are escaped.\npub fn test_escaped_quotes_in_comments(input: String) -> String {\n  format!(\"Processed: {}\", input)\n}\n\n#[napi]\npub fn create_zero_copy_utf16_string<'env>(env: &'env Env) -> Result<JsStringUtf16<'env>> {\n  let data = vec![0x0061, 0x0062, 0x0063];\n  JsStringUtf16::from_data(env, data)\n}\n\n#[napi]\npub fn create_zero_copy_latin1_string<'env>(env: &'env Env) -> Result<JsStringLatin1<'env>> {\n  let data = vec![0x48, 0x65, 0x6C, 0x6C, 0x6F]; // \"Hello\"\n  JsStringLatin1::from_data(env, data)\n}\n\n#[napi]\npub fn create_external_utf16_string<'env>(env: &'env Env) -> Result<JsStringUtf16<'env>> {\n  // Create UTF-16 data for \"External UTF16\"\n  let data: Vec<u16> = \"External UTF16\".encode_utf16().collect();\n  let data_ptr = data.as_ptr();\n  let len = data.len();\n  std::mem::forget(data);\n\n  unsafe {\n    JsStringUtf16::from_external(env, data_ptr, len, data_ptr, move |_, ptr| {\n      std::mem::drop(Vec::from_raw_parts(ptr as *mut u16, len, len));\n    })\n  }\n}\n\n#[napi]\npub fn create_external_latin1_string<'env>(env: &'env Env) -> Result<JsStringLatin1<'env>> {\n  // Create Latin1 data for \"External Latin1\"\n  let data = b\"External Latin1\".to_vec();\n  let data_ptr = data.as_ptr();\n  let len = data.len();\n  std::mem::forget(data);\n\n  unsafe {\n    JsStringLatin1::from_external(env, data_ptr, len, data_ptr, move |_, ptr| {\n      std::mem::drop(Vec::from_raw_parts(ptr as *mut u8, len, len));\n    })\n  }\n}\n\n#[napi]\npub fn create_external_latin1_empty<'env>(env: &'env Env) -> Result<JsString<'env>> {\n  // Test with empty string - from_external and from_data don't support empty strings\n  // So we return a regular empty JsString instead\n  env.create_string(\"\")\n}\n\n#[napi]\npub fn create_external_latin1_short<'env>(env: &'env Env) -> Result<JsStringLatin1<'env>> {\n  // Test with short string (likely to be copied by V8)\n  let data = b\"Hi\".to_vec();\n  let data_ptr = data.as_ptr();\n  let len = data.len();\n  std::mem::forget(data);\n\n  unsafe {\n    JsStringLatin1::from_external(env, data_ptr, len, data_ptr, move |_, ptr| {\n      std::mem::drop(Vec::from_raw_parts(ptr as *mut u8, len, len));\n    })\n  }\n}\n\n#[napi]\npub fn create_external_latin1_long<'env>(env: &'env Env) -> Result<JsStringLatin1<'env>> {\n  // Test with long string (more likely to remain external)\n  let data = b\"This is a much longer string that is more likely to be kept as an external string by V8 rather than being copied\".to_vec();\n  let data_ptr = data.as_ptr();\n  let len = data.len();\n  std::mem::forget(data);\n\n  unsafe {\n    JsStringLatin1::from_external(env, data_ptr, len, data_ptr, move |_, ptr| {\n      std::mem::drop(Vec::from_raw_parts(ptr as *mut u8, len, len));\n    })\n  }\n}\n\n#[napi]\npub fn create_external_latin1_with_latin1_chars<'env>(\n  env: &'env Env,\n) -> Result<JsStringLatin1<'env>> {\n  // Test with actual Latin-1 extended characters (bytes > 127)\n  let data = vec![\n    0x48, 0x65, 0x6C, 0x6C, 0x6F, // \"Hello\"\n    0x20, // space\n    0xC0, 0xC1, 0xC2, // À, Á, Â\n    0x20, // space\n    0xF1, 0xF2, 0xF3, // ñ, ò, ó\n  ];\n  let data_ptr = data.as_ptr();\n  let len = data.len();\n  std::mem::forget(data);\n\n  unsafe {\n    JsStringLatin1::from_external(env, data_ptr, len, data_ptr, move |_, ptr| {\n      std::mem::drop(Vec::from_raw_parts(ptr as *mut u8, len, len));\n    })\n  }\n}\n\n#[napi]\npub fn create_external_latin1_custom_finalize<'env>(\n  env: &'env Env,\n) -> Result<JsStringLatin1<'env>> {\n  // Test with custom finalize hint\n  let data = b\"Custom finalize test\".to_vec();\n  let data_ptr = data.as_ptr();\n  let len = data.len();\n\n  // Create a custom hint that includes the original length\n  let hint = (data_ptr, len);\n  std::mem::forget(data);\n\n  unsafe {\n    JsStringLatin1::from_external(env, data_ptr, len, hint, move |_, (ptr, size)| {\n      // Custom cleanup that uses both pointer and size from hint\n      std::mem::drop(Vec::from_raw_parts(ptr as *mut u8, size, size));\n    })\n  }\n}\n\n#[napi]\npub fn test_latin1_methods(env: &Env, input: String) -> Result<Latin1MethodsResult> {\n  let data = input.as_bytes().to_vec();\n  let latin1 = JsStringLatin1::from_data(env, data)?;\n\n  Ok(Latin1MethodsResult {\n    length: latin1.len() as u32,\n    is_empty: latin1.is_empty(),\n    as_slice: if cfg!(target_family = \"wasm\") {\n      #[allow(clippy::iter_cloned_collect)]\n      latin1.as_slice().iter().cloned().collect()\n    } else {\n      latin1.as_slice().to_vec()\n    },\n  })\n}\n\n#[napi]\npub fn create_static_latin1_string<'env>(env: &'env Env) -> Result<JsStringLatin1<'env>> {\n  // Test from_static with a static Latin-1 string\n  JsStringLatin1::from_static(env, \"Static Latin1 string\")\n}\n\n#[napi]\npub fn create_static_utf16_string<'env>(env: &'env Env) -> Result<JsStringUtf16<'env>> {\n  // Test from_static with a static UTF-16 buffer\n  static UTF16_DATA: &[u16] = &[\n    0x0053, 0x0074, 0x0061, 0x0074, 0x0069, 0x0063, 0x0020, 0x0055, 0x0054, 0x0046, 0x0031, 0x0036,\n  ]; // \"Static UTF16\"\n  JsStringUtf16::from_static(env, UTF16_DATA)\n}\n"
  },
  {
    "path": "examples/napi/src/symbol.rs",
    "content": "use napi::{bindgen_prelude::*, JsSymbol, SymbolRef};\n\n#[napi]\npub fn set_symbol_in_obj<'scope>(env: &'scope Env, symbol: JsSymbol) -> Result<Object<'scope>> {\n  let mut obj = Object::new(env)?;\n  obj.set_property(symbol, env.create_string(\"a symbol\")?)?;\n  Ok(obj)\n}\n\n#[napi]\npub fn create_symbol() -> Symbol {\n  Symbol::new(\"a symbol\".to_owned())\n}\n\n#[napi]\npub fn create_symbol_for(desc: String) -> Symbol {\n  Symbol::for_desc(desc)\n}\n\n#[napi]\npub fn create_symbol_ref(env: &Env, desc: String) -> Result<SymbolRef> {\n  let symbol = Symbol::for_desc(desc);\n  let js_symbol = symbol.into_js_symbol(env)?;\n  js_symbol.create_ref()\n}\n"
  },
  {
    "path": "examples/napi/src/task.rs",
    "content": "use std::{sync::mpsc, thread::sleep};\n\nuse napi::{bindgen_prelude::*, ScopedTask};\n\npub struct SimpleTask {\n  receiver: mpsc::Receiver<i32>,\n}\n\n#[napi]\nimpl napi::Task for SimpleTask {\n  type Output = i32;\n  type JsValue = i32;\n\n  fn compute(&mut self) -> Result<Self::Output> {\n    self.receiver.recv().map_err(|e| {\n      Error::new(\n        Status::GenericFailure,\n        format!(\"Channel receive error: {}\", e),\n      )\n    })\n  }\n\n  fn resolve(&mut self, _env: napi::Env, output: Self::Output) -> Result<Self::JsValue> {\n    Ok(output)\n  }\n\n  fn finally(self, _env: napi::Env) -> Result<()> {\n    Ok(())\n  }\n}\n\npub struct DelaySum(u32, u32);\n\n#[napi]\nimpl napi::Task for DelaySum {\n  type Output = u32;\n  type JsValue = u32;\n\n  fn compute(&mut self) -> Result<Self::Output> {\n    sleep(std::time::Duration::from_millis(100));\n    Ok(self.0 + self.1)\n  }\n\n  fn resolve(&mut self, _env: napi::Env, output: Self::Output) -> Result<Self::JsValue> {\n    Ok(output)\n  }\n\n  fn finally(self, _env: Env) -> Result<()> {\n    Ok(())\n  }\n}\n\n#[napi]\npub fn without_abort_controller(a: u32, b: u32) -> AsyncTask<DelaySum> {\n  AsyncTask::new(DelaySum(a, b))\n}\n\n#[napi]\npub fn with_abort_controller(a: u32, b: u32, signal: AbortSignal) -> AsyncTask<DelaySum> {\n  AsyncTask::with_signal(DelaySum(a, b), signal)\n}\n\n#[napi]\nfn with_abort_signal_handle(signal: AbortSignal) -> AsyncTask<SimpleTask> {\n  let (sender, receiver) = mpsc::channel::<i32>();\n  signal.on_abort(move || sender.send(999).unwrap());\n  AsyncTask::with_signal(SimpleTask { receiver }, signal)\n}\n\nstruct AsyncTaskVoidReturn {}\n\n#[napi]\nimpl Task for AsyncTaskVoidReturn {\n  type JsValue = ();\n  type Output = ();\n\n  fn compute(&mut self) -> Result<Self::Output> {\n    Ok(())\n  }\n\n  fn resolve(&mut self, _env: Env, output: Self::Output) -> Result<Self::JsValue> {\n    Ok(output)\n  }\n}\n\n#[napi]\nfn async_task_void_return() -> AsyncTask<AsyncTaskVoidReturn> {\n  AsyncTask::new(AsyncTaskVoidReturn {})\n}\n\npub struct AsyncTaskOptionalReturn {}\n\n#[napi]\nimpl Task for AsyncTaskOptionalReturn {\n  type JsValue = Option<u32>;\n  type Output = ();\n\n  fn compute(&mut self) -> Result<Self::Output> {\n    Ok(())\n  }\n\n  fn resolve(&mut self, _env: Env, _: Self::Output) -> Result<Self::JsValue> {\n    Ok(None)\n  }\n}\n\n#[napi]\npub fn async_task_optional_return() -> AsyncTask<AsyncTaskOptionalReturn> {\n  AsyncTask::new(AsyncTaskOptionalReturn {})\n}\n\npub struct AsyncTaskReadFile {\n  path: String,\n}\n\n#[napi]\nimpl<'task> ScopedTask<'task> for AsyncTaskReadFile {\n  type Output = Vec<u8>;\n  type JsValue = BufferSlice<'task>;\n\n  fn compute(&mut self) -> Result<Self::Output> {\n    std::fs::read(&self.path).map_err(|e| Error::new(Status::GenericFailure, format!(\"{}\", e)))\n  }\n\n  fn resolve(&mut self, env: &'task Env, output: Self::Output) -> Result<Self::JsValue> {\n    BufferSlice::from_data(env, output)\n  }\n}\n\n#[napi]\npub fn async_task_read_file(path: String) -> AsyncTask<AsyncTaskReadFile> {\n  AsyncTask::new(AsyncTaskReadFile { path })\n}\n\npub struct AsyncResolveArray {\n  inner: usize,\n}\n\n#[napi]\nimpl<'task> ScopedTask<'task> for AsyncResolveArray {\n  type Output = u32;\n  type JsValue = Array<'task>;\n\n  fn compute(&mut self) -> Result<Self::Output> {\n    Ok(self.inner as u32)\n  }\n\n  fn resolve(&mut self, env: &'task Env, output: Self::Output) -> Result<Self::JsValue> {\n    let mut array = env.create_array(output)?;\n    for i in 0..output {\n      array.set(i, i)?;\n    }\n    Ok(array)\n  }\n}\n\n#[napi]\npub fn async_resolve_array(inner: u32) -> AsyncTask<AsyncResolveArray> {\n  AsyncTask::new(AsyncResolveArray {\n    inner: inner as usize,\n  })\n}\n\npub struct AsyncTaskFinally {\n  inner: ObjectRef,\n}\n\n#[napi]\nimpl Task for AsyncTaskFinally {\n  type Output = ();\n  type JsValue = ();\n\n  fn compute(&mut self) -> Result<Self::Output> {\n    Ok(())\n  }\n\n  fn resolve(&mut self, env: Env, _output: Self::Output) -> Result<Self::JsValue> {\n    let mut obj = self.inner.get_value(&env)?;\n    obj.set(\"resolve\", true)?;\n    Ok(())\n  }\n\n  fn finally(self, env: Env) -> Result<()> {\n    let mut obj = self.inner.get_value(&env)?;\n    obj.set(\"finally\", true)?;\n    self.inner.unref(&env)?;\n    Ok(())\n  }\n}\n\n#[napi]\npub fn async_task_finally(inner: ObjectRef) -> AsyncTask<AsyncTaskFinally> {\n  AsyncTask::new(AsyncTaskFinally { inner })\n}\n\npub struct AsyncTaskArrayBuffer {\n  data: Vec<u8>,\n}\n\n#[napi]\nimpl<'task> ScopedTask<'task> for AsyncTaskArrayBuffer {\n  type Output = Vec<u8>;\n  type JsValue = ArrayBuffer<'task>;\n\n  fn compute(&mut self) -> Result<Self::Output> {\n    // Simulate some async computation\n    sleep(std::time::Duration::from_millis(10));\n    Ok(self.data.clone())\n  }\n\n  fn resolve(&mut self, env: &'task Env, output: Self::Output) -> Result<Self::JsValue> {\n    ArrayBuffer::from_data(env, output)\n  }\n}\n\n#[napi]\npub fn async_task_arraybuffer(data: Vec<u8>) -> AsyncTask<AsyncTaskArrayBuffer> {\n  AsyncTask::new(AsyncTaskArrayBuffer { data })\n}\n"
  },
  {
    "path": "examples/napi/src/threadsafe_function.rs",
    "content": "use std::{sync::Arc, thread, time::Duration};\n\nuse napi::{\n  bindgen_prelude::*,\n  threadsafe_function::{ThreadsafeFunction, ThreadsafeFunctionCallMode, UnknownReturnValue},\n  UnknownRef,\n};\n\nuse crate::class::Animal;\n\n#[napi]\npub fn call_threadsafe_function(\n  tsfn: Arc<ThreadsafeFunction<u32, UnknownReturnValue>>,\n) -> Result<()> {\n  for n in 0..100 {\n    let tsfn = tsfn.clone();\n    thread::spawn(move || {\n      tsfn.call(Ok(n), ThreadsafeFunctionCallMode::NonBlocking);\n    });\n  }\n  Ok(())\n}\n\n#[napi]\npub fn call_long_threadsafe_function(\n  tsfn: ThreadsafeFunction<u32, UnknownReturnValue>,\n) -> Result<()> {\n  thread::spawn(move || {\n    for n in 0..10 {\n      thread::sleep(Duration::from_millis(100));\n      tsfn.call(Ok(n), ThreadsafeFunctionCallMode::NonBlocking);\n    }\n  });\n  Ok(())\n}\n\n#[napi]\npub fn threadsafe_function_throw_error(\n  cb: ThreadsafeFunction<bool, UnknownReturnValue>,\n) -> Result<()> {\n  thread::spawn(move || {\n    cb.call(\n      Err(Error::new(\n        Status::GenericFailure,\n        \"ThrowFromNative\".to_owned(),\n      )),\n      ThreadsafeFunctionCallMode::Blocking,\n    );\n  });\n  Ok(())\n}\n\npub struct ErrorStatus(String);\nimpl AsRef<str> for ErrorStatus {\n  fn as_ref(&self) -> &str {\n    &self.0\n  }\n}\n\nimpl From<Status> for ErrorStatus {\n  fn from(value: Status) -> Self {\n    ErrorStatus(value.to_string())\n  }\n}\n\n#[napi]\npub fn threadsafe_function_throw_error_with_status(\n  cb: ThreadsafeFunction<bool, UnknownReturnValue, bool, ErrorStatus>,\n) -> Result<()> {\n  thread::spawn(move || {\n    cb.call(\n      Err(Error::new(\n        ErrorStatus(\"CustomErrorStatus\".to_string()),\n        \"ThrowFromNative\".to_owned(),\n      )),\n      ThreadsafeFunctionCallMode::Blocking,\n    );\n  });\n  Ok(())\n}\n\n#[napi]\npub fn threadsafe_function_build_throw_error_with_status(cb: Function<'static>) -> Result<()> {\n  let tsfn = cb\n    .build_threadsafe_function()\n    .error_status::<ErrorStatus>()\n    .callee_handled::<true>()\n    .build()?;\n  thread::spawn(move || {\n    tsfn.call(\n      Err(Error::new(\n        ErrorStatus(\"CustomErrorStatus\".to_string()),\n        \"ThrowFromNative\".to_owned(),\n      )),\n      ThreadsafeFunctionCallMode::Blocking,\n    );\n  });\n  Ok(())\n}\n\n#[napi]\npub fn threadsafe_function_fatal_mode(\n  cb: ThreadsafeFunction<bool, UnknownReturnValue, bool, Status, false>,\n) -> Result<()> {\n  thread::spawn(move || {\n    cb.call(true, ThreadsafeFunctionCallMode::Blocking);\n  });\n  Ok(())\n}\n\n#[napi]\npub fn threadsafe_function_fatal_mode_error(\n  cb: ThreadsafeFunction<bool, String, bool, Status, false>,\n) -> Result<()> {\n  thread::spawn(move || {\n    cb.call_with_return_value(true, ThreadsafeFunctionCallMode::Blocking, |ret, _| {\n      ret.map(|_| ())\n    });\n  });\n  Ok(())\n}\n\n#[napi]\nfn threadsafe_function_closure_capture(\n  env: Env,\n  default_value: ClassInstance<Animal>,\n  func: Function<Reference<Animal>, ()>,\n) -> napi::Result<()> {\n  let str = \"test\";\n  let default_value_reference: Reference<Animal> =\n    unsafe { Reference::from_napi_value(env.raw(), default_value.value)? };\n  let tsfn = func\n    .build_threadsafe_function::<()>()\n    .build_callback(move |ctx| {\n      println!(\"Captured in ThreadsafeFunction {}\", str); // str is NULL at this point\n      default_value_reference.clone(ctx.env)\n    })?;\n\n  tsfn.call((), ThreadsafeFunctionCallMode::NonBlocking);\n\n  Ok(())\n}\n\n#[napi]\npub fn tsfn_call_with_callback(tsfn: ThreadsafeFunction<(), String>) -> napi::Result<()> {\n  tsfn.call_with_return_value(\n    Ok(()),\n    ThreadsafeFunctionCallMode::NonBlocking,\n    |value: Result<String>, _| {\n      let value = value.expect(\"Failed to retrieve value from JS\");\n      println!(\"{}\", value);\n      assert_eq!(value, \"ReturnFromJavaScriptRawCallback\".to_owned());\n      Ok(())\n    },\n  );\n  Ok(())\n}\n\n#[napi(ts_return_type = \"Promise<void>\")]\npub fn tsfn_async_call<'env>(\n  env: &'env Env,\n  func: Function<FnArgs<(u32, u32, u32)>, String>,\n) -> napi::Result<PromiseRaw<'env, ()>> {\n  let tsfn = func.build_threadsafe_function().build()?;\n\n  env.spawn_future(async move {\n    let msg = tsfn.call_async((0, 1, 2).into()).await?;\n    assert_eq!(msg, \"ReturnFromJavaScriptRawCallback\".to_owned());\n    Ok(())\n  })\n}\n\n#[napi]\npub fn accept_threadsafe_function(func: ThreadsafeFunction<u32>) {\n  thread::spawn(move || {\n    func.call(Ok(1), ThreadsafeFunctionCallMode::NonBlocking);\n  });\n}\n\n#[napi]\npub fn accept_threadsafe_function_fatal(func: ThreadsafeFunction<u32, (), u32, Status, false>) {\n  thread::spawn(move || {\n    func.call(1, ThreadsafeFunctionCallMode::NonBlocking);\n  });\n}\n\n#[napi]\npub fn accept_threadsafe_function_tuple_args(\n  func: ThreadsafeFunction<FnArgs<(u32, bool, String)>>,\n) {\n  thread::spawn(move || {\n    func.call(\n      Ok((1, false, \"NAPI-RS\".into()).into()),\n      ThreadsafeFunctionCallMode::NonBlocking,\n    );\n  });\n}\n\n#[napi]\npub async fn tsfn_return_promise(func: ThreadsafeFunction<u32, Promise<u32>>) -> Result<u32> {\n  let val = func.call_async(Ok(1)).await?.await?;\n  Ok(val + 2)\n}\n\n#[napi]\npub async fn tsfn_return_promise_timeout(\n  func: ThreadsafeFunction<u32, Promise<u32>>,\n) -> Result<u32> {\n  use tokio::time::{self, Duration};\n  let promise = func.call_async(Ok(1)).await?;\n  let sleep = time::sleep(Duration::from_nanos(1));\n  tokio::select! {\n    _ = sleep => {\n      Err(Error::new(Status::GenericFailure, \"Timeout\".to_owned()))\n    }\n    value = promise => {\n      Ok(value? + 2)\n    }\n  }\n}\n\n#[napi]\npub fn call_async_with_unknown_return_value<'env>(\n  env: &'env Env,\n  tsfn: ThreadsafeFunction<u32, UnknownRef>,\n) -> Result<PromiseRaw<'env, u32>> {\n  env.spawn_future_with_callback(\n    async move {\n      let return_value = tsfn.call_async(Ok(42)).await?;\n      Ok(return_value)\n    },\n    |env, value| {\n      let return_value = value.get_value(env)?;\n      let return_value = match return_value.get_type()? {\n        ValueType::Object => Ok(110),\n        _ => Ok(100),\n      };\n      value.unref(env)?;\n      return_value\n    },\n  )\n}\n\n#[napi]\npub async fn tsfn_throw_from_js(tsfn: ThreadsafeFunction<u32, Promise<u32>>) -> napi::Result<u32> {\n  tsfn.call_async(Ok(42)).await?.await\n}\n\n#[napi]\npub async fn tsfn_throw_from_js_callback_contains_tsfn(\n  tsfn: ThreadsafeFunction<u32, Promise<u32>>,\n) {\n  std::thread::spawn(move || {\n    if let Err(e) = napi::bindgen_prelude::block_on(async move {\n      tsfn.call_async(Ok(42)).await?.await?;\n      Ok::<(), Error>(())\n    }) {\n      println!(\"Error in tsfn spawned thread: {}\", e);\n    }\n  });\n}\n\n#[napi]\npub fn spawn_thread_in_thread(tsfn: ThreadsafeFunction<u32, u32>) {\n  std::thread::spawn(move || {\n    std::thread::spawn(move || {\n      tsfn.call(Ok(42), ThreadsafeFunctionCallMode::NonBlocking);\n    });\n  });\n}\n\n#[napi(object, object_to_js = false)]\npub struct Pet {\n  pub name: String,\n  pub kind: u32,\n  pub either_tsfn: Either<String, ThreadsafeFunction<i32, i32>>,\n}\n\n#[napi]\npub fn tsfn_in_either(pet: Pet) {\n  if let Either::B(tsfn) = pet.either_tsfn {\n    thread::spawn(move || {\n      tsfn.call(Ok(42), ThreadsafeFunctionCallMode::NonBlocking);\n    });\n  }\n}\n\n#[napi]\npub async fn tsfn_weak(\n  tsfn: ThreadsafeFunction<(), (), (), Status, false, true>,\n) -> napi::Result<()> {\n  tsfn.call_async(()).await\n}\n"
  },
  {
    "path": "examples/napi/src/transparent.rs",
    "content": "use napi::Either;\n\n#[napi(transparent)]\nstruct MyVec(Vec<Either<u32, String>>);\n\n#[napi]\nfn get_my_vec() -> MyVec {\n  MyVec(vec![Either::A(42), Either::B(\"a string\".to_owned())])\n}\n"
  },
  {
    "path": "examples/napi/src/type.rs",
    "content": "use napi::{\n  bindgen_prelude::{Either, Function, Promise},\n  threadsafe_function::ThreadsafeFunction,\n  Result, Status,\n};\nuse std::sync::Arc;\n\n#[napi]\npub type CustomU32 = u32;\n\n#[napi]\npub type MyPromise = Either<String, Promise<String>>;\n\n#[napi]\npub type Nullable<T> = Option<T>;\n\n#[napi(js_name = \"VoidNullable<T = void>\")]\npub type VoidNullable<T> = Nullable<T>;\n\n#[napi]\npub type RuleHandler<'a, Args, Ret> = Function<'a, Args, Ret>;\n\n#[napi(object, object_to_js = false)]\npub struct Rule<'a> {\n  pub name: String,\n  pub handler: RuleHandler<'a, u32, u32>,\n}\n\n#[napi]\npub fn call_rule_handler(rule: Rule, arg: u32) -> Result<u32> {\n  rule.handler.call(arg)\n}\n\n#[napi(object)]\npub struct PluginLoadResult {\n  pub name: String,\n  pub version: String,\n}\n\n// Test fixture for ThreadsafeFunction with single argument (issue #2726)\n#[napi]\npub type ExternalLinterLoadPluginCb =\n  Arc<ThreadsafeFunction<String, PluginLoadResult, String, Status, false>>;\n\n#[napi]\n#[allow(unused_parens)]\npub type ExternalLinterLoadPluginCb2 =\n  Arc<ThreadsafeFunction<(String), PluginLoadResult, (String), Status, false>>;\n\n// Test fixtures for format_js_property_name function\n// These test that property names are correctly quoted/unquoted in TypeScript definitions\n\n#[napi(object)]\npub struct PropertyNameUnicodeTest {\n  /// Unicode characters should NOT be quoted\n  #[napi(js_name = \"café\")]\n  pub cafe: String,\n  #[napi(js_name = \"日本語\")]\n  pub japanese: String,\n  #[napi(js_name = \"Ελληνικά\")]\n  pub greek: String,\n}\n\n#[napi(object)]\npub struct PropertyNameSpecialCharsTest {\n  /// Special characters should be quoted\n  #[napi(js_name = \"kebab-case\")]\n  pub kebab_case: String,\n  #[napi(js_name = \"with space\")]\n  pub with_space: String,\n  #[napi(js_name = \"dot.notation\")]\n  pub dot_notation: String,\n  #[napi(js_name = \"xml:lang\")]\n  pub xml_lang: String,\n  /// Dollar sign should be quoted for backward compatibility\n  #[napi(js_name = \"$var\")]\n  pub dollar_var: String,\n}\n\n#[napi(object)]\npub struct PropertyNameValidTest {\n  /// Valid identifiers should NOT be quoted\n  pub camelCase: String,\n  #[allow(non_snake_case)]\n  pub PascalCase: String,\n  pub _private: String,\n  pub with123numbers: String,\n}\n\n#[napi(object)]\npub struct PropertyNameDigitTest {\n  /// Property names starting with digits should be quoted\n  #[napi(js_name = \"0invalid\")]\n  pub zero_invalid: String,\n  #[napi(js_name = \"123\")]\n  pub one_two_three: String,\n}\n"
  },
  {
    "path": "examples/napi/src/typed_array.rs",
    "content": "use std::sync::Arc;\n\nuse napi::bindgen_prelude::*;\n\n#[napi]\nfn get_buffer() -> Buffer {\n  String::from(\"Hello world\").as_bytes().into()\n}\n\n#[napi]\nfn get_buffer_slice(env: &Env) -> Result<BufferSlice<'_>> {\n  BufferSlice::from_data(env, String::from(\"Hello world\").as_bytes().to_vec())\n}\n\n#[napi]\nfn append_buffer(buf: Buffer) -> Buffer {\n  let mut buf = Vec::<u8>::from(buf);\n  buf.push(b'!');\n  buf.into()\n}\n\n#[napi]\nfn get_empty_buffer() -> Buffer {\n  vec![].into()\n}\n\n#[napi]\npub fn create_external_buffer_slice(env: &Env) -> Result<BufferSlice<'_>> {\n  let mut data = String::from(\"Hello world\").as_bytes().to_vec();\n  let data_ptr = data.as_mut_ptr();\n  let len = data.len();\n  // Mock the ffi data that not managed by Rust\n  std::mem::forget(data);\n  unsafe {\n    BufferSlice::from_external(env, data_ptr, len, data_ptr, move |_, ptr| {\n      std::mem::drop(Vec::from_raw_parts(ptr, len, len));\n    })\n  }\n}\n\n#[napi]\npub fn create_buffer_slice_from_copied_data(env: &Env) -> Result<BufferSlice<'_>> {\n  BufferSlice::copy_from(env, String::from(\"Hello world\").as_bytes())\n}\n\n#[napi]\nfn get_empty_typed_array() -> Uint8Array {\n  vec![].into()\n}\n\n#[napi]\nfn convert_u32_array(input: Uint32Array) -> Vec<u32> {\n  input.to_vec()\n}\n\n#[napi]\nfn create_external_typed_array() -> Uint32Array {\n  Uint32Array::new(vec![1, 2, 3, 4, 5])\n}\n\n#[napi]\nfn mutate_typed_array(mut input: Float32Array) {\n  for item in unsafe { input.as_mut() } {\n    *item *= 2.0;\n  }\n}\n\n#[napi]\nfn deref_uint8_array(a: Uint8Array, b: Uint8ClampedArray) -> u32 {\n  (a.len() + b.len()) as u32\n}\n\n#[napi]\nasync fn buffer_pass_through(buf: Buffer) -> Result<Buffer> {\n  Ok(buf)\n}\n\n#[napi]\nfn buffer_with_async_block(env: &Env, buf: Arc<Buffer>) -> Result<AsyncBlock<u32>> {\n  let buf_to_dispose = buf.clone();\n  AsyncBlockBuilder::with(async move { Ok(buf.len() as u32) })\n    .with_dispose(move |_| {\n      drop(buf_to_dispose);\n      Ok(())\n    })\n    .build(env)\n}\n\n#[napi]\nasync fn array_buffer_pass_through(buf: Uint8Array) -> Result<Uint8Array> {\n  Ok(buf)\n}\n\n#[napi]\nfn accept_slice(fixture: &[u8]) -> usize {\n  fixture.len()\n}\n\n#[napi]\nfn accept_arraybuffer(fixture: ArrayBuffer) -> Result<usize> {\n  Ok(fixture.len())\n}\n\n#[napi]\nfn create_arraybuffer(env: &Env) -> Result<ArrayBuffer<'_>> {\n  let buf = ArrayBuffer::from_data(env, vec![1, 2, 3, 4])?;\n  Ok(buf)\n}\n\n#[napi]\nfn u8_array_to_array(input: &[u8]) -> Vec<u8> {\n  input.to_vec()\n}\n\n#[napi]\nfn i8_array_to_array(input: &[i8]) -> Vec<i8> {\n  input.to_vec()\n}\n\n#[napi]\nfn u16_array_to_array(input: &[u16]) -> Vec<u16> {\n  input.to_vec()\n}\n\n#[napi]\nfn i16_array_to_array(input: &[i16]) -> Vec<i16> {\n  input.to_vec()\n}\n\n#[napi]\nfn u32_array_to_array(input: &[u32]) -> Vec<u32> {\n  input.to_vec()\n}\n\n#[napi]\nfn i32_array_to_array(input: &[i32]) -> Vec<i32> {\n  input.to_vec()\n}\n\n#[napi]\nfn f32_array_to_array(input: &[f32]) -> Vec<f32> {\n  input.to_vec()\n}\n\n#[napi]\nfn f64_array_to_array(input: &[f64]) -> Vec<f64> {\n  input.to_vec()\n}\n\n#[napi]\nfn u64_array_to_array(input: &[u64]) -> Vec<u64> {\n  input.to_vec()\n}\n\n#[napi]\nfn i64_array_to_array(input: &[i64]) -> Vec<i64> {\n  input.to_vec()\n}\n\n#[napi]\nfn accept_uint8_clamped_slice(input: Uint8ClampedSlice) -> usize {\n  input.len()\n}\n\n#[napi]\nfn accept_uint8_clamped_slice_and_buffer_slice(a: BufferSlice, b: Uint8ClampedSlice) -> usize {\n  a.len() + b.len()\n}\n\nstruct AsyncBuffer {\n  buf: Buffer,\n}\n\n#[napi]\nimpl Task for AsyncBuffer {\n  type Output = u32;\n  type JsValue = u32;\n\n  fn compute(&mut self) -> Result<Self::Output> {\n    Ok(self.buf.iter().fold(0u32, |a, b| a + *b as u32))\n  }\n\n  fn resolve(&mut self, _env: Env, output: Self::Output) -> Result<Self::JsValue> {\n    Ok(output)\n  }\n}\n\n#[napi]\nfn async_reduce_buffer(buf: Buffer) -> Result<AsyncTask<AsyncBuffer>> {\n  Ok(AsyncTask::new(AsyncBuffer { buf }))\n}\n\n#[napi]\nfn async_buffer_to_array(buf: ArrayBuffer) -> Result<Vec<u8>> {\n  Ok(buf.to_vec())\n}\n\n#[napi]\nasync fn u_init8_array_from_string() -> Uint8Array {\n  Uint8Array::from_string(\"Hello world\".to_owned())\n}\n\nstruct AsyncReader {}\n\nstruct OutputBuffer {}\n\nimpl OutputBuffer {\n  fn into_buffer_slice(self, env: &Env) -> Result<BufferSlice<'_>> {\n    BufferSlice::from_data(env, String::from(\"Hello world\"))\n  }\n}\n\n#[napi]\nimpl Task for AsyncReader {\n  type Output = OutputBuffer;\n  type JsValue = Buffer;\n\n  fn compute(&mut self) -> Result<Self::Output> {\n    Ok(OutputBuffer {})\n  }\n\n  fn resolve(&mut self, env: Env, output: Self::Output) -> Result<Self::JsValue> {\n    output\n      .into_buffer_slice(&env)\n      .and_then(|slice| slice.into_buffer(&env))\n  }\n}\n\n#[napi(constructor)]\npub struct Reader {}\n\n#[napi]\nimpl Reader {\n  #[napi]\n  pub fn read<'env>(&'env self, env: &'env Env) -> Result<BufferSlice<'env>> {\n    let output = AsyncReader {}.compute()?;\n    output.into_buffer_slice(env)\n  }\n}\n\n#[napi]\npub fn create_uint8_clamped_array_from_data(env: &Env) -> Result<Uint8ClampedSlice<'_>> {\n  Uint8ClampedSlice::from_data(env, b\"Hello world\")\n}\n\n#[napi]\npub fn create_uint8_clamped_array_from_external(env: &Env) -> Result<Uint8ClampedSlice<'_>> {\n  let mut data = b\"Hello world\".to_vec();\n  let data_ptr = data.as_mut_ptr();\n  let len = data.len();\n  std::mem::forget(data);\n  unsafe {\n    Uint8ClampedSlice::from_external(env, data_ptr, len, data_ptr, move |_, ptr| {\n      std::mem::drop(Vec::from_raw_parts(ptr, len, len));\n    })\n  }\n}\n\n#[napi]\npub fn array_buffer_from_data(env: &Env) -> Result<ArrayBuffer<'_>> {\n  ArrayBuffer::from_data(env, b\"Hello world\")\n}\n\n#[napi]\npub fn array_buffer_from_external(env: &Env) -> Result<ArrayBuffer<'_>> {\n  let mut data = b\"Hello world from external\".to_vec();\n  let data_ptr = data.as_mut_ptr();\n  let len = data.len();\n  std::mem::forget(data);\n  unsafe {\n    ArrayBuffer::from_external(env, data_ptr, len, data_ptr, move |_, ptr| {\n      std::mem::drop(Vec::from_raw_parts(ptr, len, len));\n    })\n  }\n}\n\n#[napi]\npub fn uint8_array_from_data(env: &Env) -> Result<Uint8ArraySlice<'_>> {\n  Uint8ArraySlice::from_data(env, b\"Hello world\")\n}\n\n#[napi]\npub fn uint8_array_from_external(env: &Env) -> Result<Uint8ArraySlice<'_>> {\n  let mut data = b\"Hello world\".to_vec();\n  let data_ptr = data.as_mut_ptr();\n  let len = data.len();\n  std::mem::forget(data);\n  unsafe {\n    Uint8ArraySlice::from_external(env, data_ptr, len, data_ptr, move |_, ptr| {\n      std::mem::drop(Vec::from_raw_parts(ptr, len, len));\n    })\n  }\n}\n\n#[napi]\npub fn create_i32_array_from_external(env: &Env) -> Result<Int32ArraySlice<'_>> {\n  let mut data = vec![-1, -2, 30000, -40, 5];\n  unsafe {\n    Int32ArraySlice::from_external(env, data.as_mut_ptr(), data.len(), data, |_, d| {\n      drop(d);\n    })\n  }\n}\n\n#[napi]\npub fn accept_untyped_typed_array(input: TypedArray) -> usize {\n  input.arraybuffer.len()\n}\n\n#[napi]\npub fn mutate_arraybuffer(mut buf: ArrayBuffer) {\n  for item in unsafe { buf.as_mut() } {\n    *item *= 2;\n  }\n}\n"
  },
  {
    "path": "examples/napi/src/wasm.rs",
    "content": "use std::{thread, time::Duration};\n\nuse napi::{\n  threadsafe_function::{ThreadsafeFunction, ThreadsafeFunctionCallMode},\n  Error, Status,\n};\n\npub fn worker(id: u32) {\n  println!(\"Worker {} started\", id);\n  thread::sleep(Duration::from_millis(500));\n  thread::sleep(Duration::from_millis(200));\n  println!(\"Worker {} finished\", id);\n}\n\n#[napi]\npub fn test_workers(amount: u32, complete_callback: ThreadsafeFunction<(), ()>) {\n  println!(\"Starting parallel workers...\");\n\n  let mut handles = vec![];\n\n  for i in 0..amount {\n    let handle = thread::spawn(move || {\n      worker(i);\n    });\n    handles.push(handle);\n  }\n\n  thread::spawn(move || {\n    for handle in handles {\n      if let Err(e) = handle.join() {\n        complete_callback.call(\n          Err(Error::new(\n            Status::GenericFailure,\n            format!(\"Worker panicked {:?}\", e),\n          )),\n          ThreadsafeFunctionCallMode::NonBlocking,\n        );\n      }\n    }\n    complete_callback.call(Ok(()), ThreadsafeFunctionCallMode::NonBlocking);\n  });\n}\n"
  },
  {
    "path": "examples/napi/tests/README.md",
    "content": "## [trybuild](https://docs.rs/trybuild/latest/trybuild/) tests\n\nSet of tests to exercise various macro expansion errors.\n\n### Notes on adding a new test\n\n- Make sure to include the new test in [build_error_tests/mod.rs](./build_error_tests/mod.rs) so it gets included as\n  part of the crate for formatting purposes.\n\n### Running the tests\n\n> yarn test:macro\n\nor\n\n> cargo test -p napi-examples\n"
  },
  {
    "path": "examples/napi/tests/build_error_tests/assign_js_value_to_class.rs",
    "content": "//! This is testing that JsValue types with lifetime can't be assigned to a field of napi class struct\n\nuse napi_derive::napi;\n\n#[napi]\npub struct JsValueWithOuterLifetime<'a> {\n  pub value: napi::bindgen_prelude::Object<'a>,\n}\n\n// Needed for the trybuild tests.\n#[allow(unused)]\nfn main() {}\n"
  },
  {
    "path": "examples/napi/tests/build_error_tests/assign_js_value_to_class.stderr",
    "content": "error: Can't assign Object to a field of napi class struct\n --> tests/build_error_tests/assign_js_value_to_class.rs:7:14\n  |\n7 |   pub value: napi::bindgen_prelude::Object<'a>,\n  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"
  },
  {
    "path": "examples/napi/tests/build_error_tests/fn_outside_impl_factory.rs",
    "content": "//! This is testing that `#[napi(factory)]` outside of an `impl` block fails\n\nuse napi_derive::napi;\n\n#[napi(factory)]\npub fn add() {\n  println!(\"Hello, world!\");\n}\n\n// Needed for the trybuild tests.\n#[allow(unused)]\nfn main() {}\n"
  },
  {
    "path": "examples/napi/tests/build_error_tests/fn_outside_impl_factory.stderr",
    "content": "error: Only fn in impl block can be marked as factory, constructor, getter or setter\n --> tests/build_error_tests/fn_outside_impl_factory.rs:6:8\n  |\n6 | pub fn add() {\n  |        ^^^\n"
  },
  {
    "path": "examples/napi/tests/build_error_tests/mod.rs",
    "content": "//! Include the test files here so they can be formatted properly with `cargo fmt`\n\npub mod assign_js_value_to_class;\npub mod fn_outside_impl_factory;\npub mod ts_arg_type_1;\npub mod ts_arg_type_2;\npub mod ts_arg_type_3;\npub mod ts_arg_type_4;\n"
  },
  {
    "path": "examples/napi/tests/build_error_tests/ts_arg_type_1.rs",
    "content": "//! This is testing that `#[napi(ts_args_type=\"...\")]` and `#[napi(ts_arg_type=\"...\")]`\n//! are mutually exclusive\n\nuse napi_derive::napi;\n\n#[napi(ts_args_type = \"u: number, fn: object\")]\npub fn add(u: u32, #[napi(ts_arg_type = \"object\")] f: Option<String>) {\n  println!(\"Hello, world! {f:?}-{u}\");\n}\n\n// Needed for the trybuild tests.\n#[allow(unused)]\nfn main() {}\n"
  },
  {
    "path": "examples/napi/tests/build_error_tests/ts_arg_type_1.stderr",
    "content": "error: Found a 'ts_args_type'=\"u: number, fn: object\" override. Cannot use 'ts_arg_type' at the same time since they are mutually exclusive.\n --> tests/build_error_tests/ts_arg_type_1.rs:7:20\n  |\n7 | pub fn add(u: u32, #[napi(ts_arg_type = \"object\")] f: Option<String>) {\n  |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"
  },
  {
    "path": "examples/napi/tests/build_error_tests/ts_arg_type_2.rs",
    "content": "//! This is testing that `#[napi(ts_arg_type=\"...\")]` fails if the argument for `ts_arg_type`\n//! is not a string literal.\n\nuse napi_derive::napi;\n\n#[napi]\npub fn add(u: u32, #[napi(ts_arg_type = 32)] f: Option<String>) {\n  println!(\"Hello, world! {f:?}-{u}\");\n}\n\n// Needed for the trybuild tests.\n#[allow(unused)]\nfn main() {}\n"
  },
  {
    "path": "examples/napi/tests/build_error_tests/ts_arg_type_2.stderr",
    "content": "error: Expects a string literal\n --> tests/build_error_tests/ts_arg_type_2.rs:7:41\n  |\n7 | pub fn add(u: u32, #[napi(ts_arg_type = 32)] f: Option<String>) {\n  |                                         ^^\n"
  },
  {
    "path": "examples/napi/tests/build_error_tests/ts_arg_type_3.rs",
    "content": "//! This is testing that `#[napi(ts_arg_type=\"...\")]` fails if the attribute is not a `MetaNameValue`\n//! i.e. it's a name value pair.\n\nuse napi_derive::napi;\n\n#[napi]\npub fn add(u: u32, #[napi(ts_arg_type, not_expected)] f: Option<String>) {\n  println!(\"Hello, world! {f:?}-{u}\");\n}\n\n// Needed for the trybuild tests.\n#[allow(unused)]\nfn main() {}\n"
  },
  {
    "path": "examples/napi/tests/build_error_tests/ts_arg_type_3.stderr",
    "content": "error: Expects an assignment (ts_arg_type = \"MyType\")\n --> tests/build_error_tests/ts_arg_type_3.rs:7:27\n  |\n7 | pub fn add(u: u32, #[napi(ts_arg_type, not_expected)] f: Option<String>) {\n  |                           ^^^^^^^^^^^\n"
  },
  {
    "path": "examples/napi/tests/build_error_tests/ts_arg_type_4.rs",
    "content": "//! This is testing that `#[napi(ts_arg_type=\"...\")]` fails if the attribute is something other than\n//! `ts_arg_type`\n\nuse napi_derive::napi;\n\n#[napi]\npub fn add(u: u32, #[napi(not_expected = \"obj\")] f: Option<String>) {\n  println!(\"Hello, world! {f:?}-{u}\");\n}\n\n// Needed for the trybuild tests.\n#[allow(unused)]\nfn main() {}\n"
  },
  {
    "path": "examples/napi/tests/build_error_tests/ts_arg_type_4.stderr",
    "content": "error: Expects a 'ts_arg_type'\n --> tests/build_error_tests/ts_arg_type_4.rs:7:20\n  |\n7 | pub fn add(u: u32, #[napi(not_expected = \"obj\")] f: Option<String>) {\n  |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"
  },
  {
    "path": "examples/napi/tests/macro_tests.rs",
    "content": "// `error_try_builds` is not really a feature.\n// This is used just to make the test files part of the crate so that they can get included by things\n// like `cargo fmt` for example, BUT not be part of compilation when running `cargo test`.\n#[cfg(feature = \"error_try_builds\")]\nmod build_error_tests;\n\n#[test]\nfn run_build_error_tests() {\n  let t = trybuild::TestCases::new();\n  t.compile_fail(\"tests/build_error_tests/ts_arg_type_*.rs\");\n  t.compile_fail(\"tests/build_error_tests/fn_outside_impl_factory.rs\");\n  t.compile_fail(\"tests/build_error_tests/assign_js_value_to_class.rs\");\n}\n"
  },
  {
    "path": "examples/napi/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.json\",\n  \"include\": [\".\"],\n  \"compilerOptions\": {\n    \"moduleResolution\": \"node\",\n    \"outDir\": \"./dist\",\n    \"rootDir\": \".\",\n    \"target\": \"ESNext\",\n    \"module\": \"ESNext\",\n    \"types\": [\"node\"],\n    \"lib\": [\"DOM.Iterable\", \"ESNext\"],\n    \"importHelpers\": false\n  },\n  \"exclude\": [\n    \"dist\",\n    \"electron.js\",\n    \"electron-renderer\",\n    \"index.js\",\n    \"index.wasi.mjs\"\n  ]\n}\n"
  },
  {
    "path": "examples/napi/vite-entry.js",
    "content": "import { Buffer } from 'buffer'\n\nimport {\n  Animal,\n  Kind,\n  asyncMultiTwo,\n  tsfnReturnPromise,\n  __fs,\n  asyncTaskReadFile,\n  testWorkers,\n} from './example.wasi-browser'\n\nglobalThis.Buffer = Buffer\n\nconsole.info(new Animal(Kind.Cat, 'Tom'))\nasyncMultiTwo(200).then((res) => {\n  console.info(res)\n})\nconst value = await tsfnReturnPromise((err, value) => {\n  if (err) {\n    throw err\n  }\n  return Promise.resolve(value + 2)\n})\n\nconsole.info(value)\n\n__fs.writeFileSync('/test.txt', 'Hello, World!')\n\nasyncTaskReadFile('/test.txt')\n  .then((res) => {\n    console.log(`readFileAsync: ${res}`)\n  })\n  .catch((err) => {\n    console.error(err)\n  })\n\ntestWorkers(4, (err) => {\n  if (err) {\n    console.error(err)\n  } else {\n    console.log('All workers completed')\n  }\n})\n"
  },
  {
    "path": "examples/napi/vite.config.js",
    "content": "import { defineConfig } from 'vitest/config'\nimport { playwright } from '@vitest/browser-playwright'\n\nexport default defineConfig({\n  server: {\n    headers: {\n      'Cross-Origin-Opener-Policy': 'same-origin',\n      'Cross-Origin-Embedder-Policy': 'require-corp',\n    },\n  },\n  plugins: [\n    {\n      name: 'configure-response-headers',\n      enforce: 'pre',\n      configureServer: (server) => {\n        server.middlewares.use((_req, res, next) => {\n          res.setHeader('Cross-Origin-Embedder-Policy', 'require-corp')\n          res.setHeader('Cross-Origin-Opener-Policy', 'same-origin')\n          next()\n        })\n      },\n    },\n  ],\n  test: {\n    include: ['browser/**/*.{spec,test}.{js,jsx,ts,tsx}'],\n    browser: {\n      enabled: true,\n      provider: playwright(),\n      instances: [\n        {\n          browser: 'chromium',\n        },\n      ],\n    },\n  },\n})\n"
  },
  {
    "path": "examples/napi/wasi-worker-browser.mjs",
    "content": "import { instantiateNapiModuleSync, MessageHandler, WASI, createFsProxy } from '@napi-rs/wasm-runtime'\nimport { memfsExported as __memfsExported } from '@napi-rs/wasm-runtime/fs'\n\nconst fs = createFsProxy(__memfsExported)\n\nconst handler = new MessageHandler({\n  onLoad({ wasmModule, wasmMemory }) {\n    const wasi = new WASI({\n      fs,\n      preopens: {\n        '/': '/',\n      },\n      print: function () {\n        // eslint-disable-next-line no-console\n        console.log.apply(console, arguments)\n      },\n      printErr: function() {\n        // eslint-disable-next-line no-console\n        console.error.apply(console, arguments)\n      },\n    })\n    return instantiateNapiModuleSync(wasmModule, {\n      childThread: true,\n      wasi,\n      overwriteImports(importObject) {\n        importObject.env = {\n          ...importObject.env,\n          ...importObject.napi,\n          ...importObject.emnapi,\n          memory: wasmMemory,\n        }\n      },\n    })\n  },\n})\n\nglobalThis.onmessage = function (e) {\n  handler.handle(e)\n}\n"
  },
  {
    "path": "examples/napi/wasi-worker.mjs",
    "content": "import fs from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { parse } from \"node:path\";\nimport { WASI } from \"node:wasi\";\nimport { parentPort, Worker } from \"node:worker_threads\";\n\nconst require = createRequire(import.meta.url);\n\nconst { instantiateNapiModuleSync, MessageHandler, getDefaultContext } = require(\"@napi-rs/wasm-runtime\");\n\nif (parentPort) {\n  parentPort.on(\"message\", (data) => {\n    globalThis.onmessage({ data });\n  });\n}\n\nObject.assign(globalThis, {\n  self: globalThis,\n  require,\n  Worker,\n  importScripts: function (f) {\n    ;(0, eval)(fs.readFileSync(f, \"utf8\") + \"//# sourceURL=\" + f);\n  },\n  postMessage: function (msg) {\n    if (parentPort) {\n      parentPort.postMessage(msg);\n    }\n  },\n});\n\nconst emnapiContext = getDefaultContext();\n\nconst __rootDir = parse(process.cwd()).root;\n\nconst handler = new MessageHandler({\n  onLoad({ wasmModule, wasmMemory }) {\n    const wasi = new WASI({\n      version: 'preview1',\n      env: process.env,\n      preopens: {\n        [__rootDir]: __rootDir,\n      },\n    });\n\n    return instantiateNapiModuleSync(wasmModule, {\n      childThread: true,\n      wasi,\n      context: emnapiContext,\n      overwriteImports(importObject) {\n        importObject.env = {\n          ...importObject.env,\n          ...importObject.napi,\n          ...importObject.emnapi,\n          memory: wasmMemory\n        };\n      },\n    });\n  },\n});\n\nglobalThis.onmessage = function (e) {\n  handler.handle(e);\n};\n"
  },
  {
    "path": "examples/napi-cargo-test/CHANGELOG.md",
    "content": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## [Unreleased]\n\n## [0.1.0](https://github.com/napi-rs/napi-rs/releases/tag/napi-cargo-test-v0.1.0) - 2025-08-13\n\n### Fixed\n\n- *(napi)* link issue on cargo test --features noop ([#2872](https://github.com/napi-rs/napi-rs/pull/2872))\n"
  },
  {
    "path": "examples/napi-cargo-test/Cargo.toml",
    "content": "[package]\nname = \"napi-cargo-test\"\nversion = \"0.1.0\"\nedition = \"2021\"\npublish = false\n\n[features]\nnoop = [\"napi/noop\", \"napi-derive/noop\"]\n\n[dependencies]\nnapi = { path = \"../../crates/napi\", features = [\"napi10\"] }\nnapi-derive = { path = \"../../crates/macro\", features = [\"type-def\"] }\n\n[lints]\nworkspace = true\n"
  },
  {
    "path": "examples/napi-cargo-test/src/lib.rs",
    "content": "use napi_derive::napi;\n\n#[napi]\npub fn plus(a: i32, b: i32) -> napi::Result<i32> {\n  Ok(a + b)\n}\n\n#[napi]\n#[derive(Debug, PartialEq, Eq)]\npub enum MyEnum {\n  A,\n  B,\n}\n\n#[napi(object)]\n#[derive(Debug, PartialEq, Eq)]\npub struct MyObject {\n  pub a: i32,\n  pub b: i32,\n}\n\n#[cfg(test)]\nmod tests {\n  use super::*;\n\n  #[test]\n  fn test_plus() {\n    let result = plus(1, 2).unwrap();\n    assert_eq!(result, 3i32);\n  }\n\n  #[test]\n  fn test_enum() {\n    let result = MyEnum::A;\n    assert_eq!(result, MyEnum::A);\n  }\n\n  #[test]\n  fn test_struct() {\n    let result = MyObject { a: 1, b: 2 };\n    assert_eq!(result, MyObject { a: 1, b: 2 });\n  }\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/Cargo.toml",
    "content": "[package]\nauthors = [\"LongYinan <lynweklm@gmail.com>\"]\nedition = \"2021\"\nname = \"napi-compat-mode-examples\"\npublish = false\nversion = \"0.1.0\"\n\n[lib]\ncrate-type = [\"cdylib\"]\n\n[features]\nlatest = [\"napi/napi9\"]\nnapi3 = [\"napi/napi3\"]\ndyn-symbols = [\"napi/dyn-symbols\"]\n\n[dependencies]\nfutures = \"0.3\"\nnapi = { path = \"../../crates/napi\", features = [\n  \"tokio_rt\",\n  \"serde-json\",\n  \"latin1\",\n  \"compat-mode\",\n] }\nnapi-derive = { path = \"../../crates/macro\", features = [\"compat-mode\"] }\nserde = \"1\"\nserde_bytes = \"0.11\"\nserde_derive = \"1\"\nserde_json = \"1\"\ntokio = { version = \"1\", features = [\"default\", \"fs\"] }\n\n[build-dependencies]\nnapi-build = { path = \"../../crates/build\" }\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/__snapshots__/object.spec.ts.md",
    "content": "# Snapshot report for `__tests__/object.spec.ts`\n\nThe actual snapshot is saved in `object.spec.ts.snap`.\n\nGenerated by [AVA](https://avajs.dev).\n\n## setProperty\n\n> Snapshot 1\n\n    'Rust object property'\n\n## setNamedProperty\n\n> Snapshot 1\n\n    'RustPropertyKey'\n\n## testGetPropertyNames\n\n> Snapshot 1\n\n    [\n      '2',\n      'k3',\n    ]\n\n## testSetElement\n\n> Snapshot 1\n\n    [\n      undefined,\n      1,\n      undefined,\n      undefined,\n      undefined,\n      'foo',\n    ]\n\n## testDeleteElement\n\n> Snapshot 1\n\n    [\n      0,\n      undefined,\n      undefined,\n      3,\n    ]\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/array.spec.ts",
    "content": "import test from 'ava'\n\n// @ts-expect-error\nimport bindings from '../index.node'\n\ntest('should be able to create array', (t) => {\n  const arr: number[] = bindings.testCreateArray()\n  t.true(arr instanceof Array)\n  t.true(Array.isArray(arr))\n  arr.push(1, 2, 3)\n  t.deepEqual(arr, [1, 2, 3])\n})\n\ntest('should be able to create array with length', (t) => {\n  const len = 100\n  const arr: number[] = bindings.testCreateArrayWithLength(len)\n  t.true(arr instanceof Array)\n  t.true(Array.isArray(arr))\n  t.is(arr.length, len)\n})\n\ntest('should be able to set element', (t) => {\n  const obj = {}\n  const index = 29\n  const arr: unknown[] = []\n  bindings.testSetElement(arr, index, obj)\n  t.is(arr[index], obj)\n})\n\ntest('should be able to use has_element', (t) => {\n  const arr: any[] = [1, '3', undefined]\n  const index = 29\n  arr[index] = {}\n  t.true(bindings.testHasElement(arr, 0))\n  t.true(bindings.testHasElement(arr, 1))\n  t.true(bindings.testHasElement(arr, 2))\n  t.false(bindings.testHasElement(arr, 3))\n  t.false(bindings.testHasElement(arr, 10))\n  t.true(bindings.testHasElement(arr, index))\n})\n\ntest('should be able to delete element', (t) => {\n  const arr: number[] = [0, 1, 2, 3]\n  for (const [index] of arr.entries()) {\n    t.true(bindings.testDeleteElement(arr, index))\n    t.true(arr[index] === undefined)\n  }\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/arraybuffer.spec.ts",
    "content": "import ava from 'ava'\n\nimport { napiVersion } from './napi-version'\n\n// @ts-expect-error\nimport bindings from '../index.node'\n\nconst test = napiVersion >= 6 ? ava : ava.skip\n\ntest('should get arraybuffer length', (t) => {\n  const fixture = Buffer.from('wow, hello')\n  t.is(bindings.getArraybufferLength(fixture.buffer), fixture.buffer.byteLength)\n})\n\ntest('should be able to mutate Uint8Array', (t) => {\n  const fixture = new Uint8Array([0, 1, 2])\n  bindings.mutateUint8Array(fixture)\n  t.is(fixture[0], 42)\n})\n\ntest('should be able to mutate Uint8Array in its middle', (t) => {\n  const fixture = new Uint8Array([0, 1, 2])\n  const view = new Uint8Array(fixture.buffer, 1, 1)\n  bindings.mutateUint8Array(view)\n  t.is(fixture[1], 42)\n})\n\ntest('should be able to mutate Uint16Array', (t) => {\n  const fixture = new Uint16Array([0, 1, 2])\n  bindings.mutateUint16Array(fixture)\n  t.is(fixture[0], 65535)\n})\n\ntest('should be able to mutate Int16Array', (t) => {\n  const fixture = new Int16Array([0, 1, 2])\n  bindings.mutateInt16Array(fixture)\n  t.is(fixture[0], 32767)\n})\n\ntest('should be able to mutate Float32Array', (t) => {\n  const fixture = new Float32Array([0, 1, 2])\n  bindings.mutateFloat32Array(fixture)\n  t.true(Math.abs(fixture[0] - 3.33) <= 0.0001)\n})\n\ntest('should be able to mutate Float64Array', (t) => {\n  const fixture = new Float64Array([0, 1, 2])\n  bindings.mutateFloat64Array(fixture)\n  t.true(Math.abs(fixture[0] - Math.PI) <= 0.0000001)\n})\n\ntest('should be able to mutate BigInt64Array', (t) => {\n  const fixture = new BigInt64Array([BigInt(0), BigInt(1), BigInt(2)])\n  bindings.mutateI64Array(fixture)\n  t.deepEqual(fixture[0], BigInt('9223372036854775807'))\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/buffer.spec.ts",
    "content": "import test from 'ava'\n\n// @ts-expect-error\nimport bindings from '../index.node'\n\ntest('should get buffer length', (t) => {\n  const fixture = Buffer.from('wow, hello')\n  t.is(bindings.getBufferLength(fixture), fixture.length)\n})\n\ntest('should stringify buffer', (t) => {\n  const fixture = 'wow, hello'\n  t.is(bindings.bufferToString(Buffer.from(fixture)), fixture)\n})\n\ntest('should copy', (t) => {\n  const fixture = Buffer.from('wow, hello')\n  const copyBuffer = bindings.copyBuffer(fixture)\n  t.deepEqual(copyBuffer, fixture)\n  t.not(fixture, copyBuffer)\n})\n\ntest('should create borrowed buffer with noop finalize', (t) => {\n  t.deepEqual(\n    bindings.createBorrowedBufferWithNoopFinalize(),\n    Buffer.from([1, 2, 3]),\n  )\n})\n\ntest('should create borrowed buffer with finalize', (t) => {\n  t.deepEqual(\n    bindings.createBorrowedBufferWithFinalize(),\n    Buffer.from([1, 2, 3]),\n  )\n})\n\ntest('should create empty borrowed buffer with finalize', (t) => {\n  t.throws(() => bindings.createEmptyBorrowedBufferWithFinalize().toString(), {\n    message: 'Borrowed data should not be null',\n  })\n  t.throws(() => bindings.createEmptyBorrowedBufferWithFinalize().toString(), {\n    message: 'Borrowed data should not be null',\n  })\n})\n\ntest('should create empty buffer', (t) => {\n  t.is(bindings.createEmptyBuffer().toString(), '')\n  t.is(bindings.createEmptyBuffer().toString(), '')\n})\n\ntest('should be able to mutate buffer', (t) => {\n  const fixture = Buffer.from([0, 1])\n  bindings.mutateBuffer(fixture)\n  t.is(fixture[1], 42)\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/class.spec.ts",
    "content": "import test from 'ava'\n\n// @ts-expect-error\nimport bindings from '../index.node'\n\ntest('should create class', (t) => {\n  const TestClass = bindings.createTestClass()\n  const fixture = 20\n  const testClass = new TestClass(fixture)\n  t.is(testClass.count, fixture)\n  const add = 101\n  testClass.addCount(add)\n  t.is(testClass.count, fixture + add)\n})\n\ntest('should be able to manipulate wrapped native value', (t) => {\n  const TestClass = bindings.createTestClass()\n  const fixture = 20\n  const testClass = new TestClass(fixture)\n  const add = 101\n  t.is(testClass.addNativeCount(add), fixture + add + 100)\n})\n\ntest('should be able to re-create wrapped native value', (t) => {\n  const TestClass = bindings.createTestClass()\n  const fixture = 20\n  const testClass = new TestClass(fixture)\n  const add = 101\n  t.is(testClass.addNativeCount(add), fixture + add + 100)\n  testClass.renewWrapped()\n  t.is(testClass.addNativeCount(0), 42)\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/cleanup-env.spec.ts",
    "content": "import test from 'ava'\n\n// @ts-expect-error\nimport bindings from '../index.node'\n\ntest('should be able to add cleanup hook', (t) => {\n  t.notThrows(() => {\n    const ret = bindings.addCleanupHook()\n    t.is(typeof ret, 'object')\n  })\n})\n\ntest('should be able to remove cleanup hook', (t) => {\n  t.notThrows(() => {\n    const ret = bindings.addCleanupHook()\n    bindings.removeCleanupHook(ret)\n  })\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/create-external.spec.ts",
    "content": "import test from 'ava'\n\n// @ts-expect-error\nimport bindings from '../index.node'\n\ntest('should create external object and get it back', (t) => {\n  const fixture = 42\n  const externalObject = bindings.createExternal(42)\n  t.is(bindings.getExternalCount(externalObject), fixture)\n})\n\ntest('should create external with size hint', (t) => {\n  const fixture = 42\n  const externalObject = bindings.createExternalWithHint(42)\n  t.is(bindings.getExternalCount(externalObject), fixture)\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/either.spec.ts",
    "content": "import test from 'ava'\n\n// @ts-expect-error\nimport bindings from '../index.node'\n\ntest('either should work', (t) => {\n  const fixture = 'napi'\n  t.is(bindings.eitherNumberString(1), 101)\n  t.is(bindings.eitherNumberString(fixture), `Either::B(${fixture})`)\n})\n\ntest('dynamic argument length should work', (t) => {\n  t.is(bindings.dynamicArgumentLength(1), 101)\n  t.is(bindings.dynamicArgumentLength(), 42)\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/env.spec.ts",
    "content": "import test from 'ava'\n\n// @ts-expect-error\nimport bindings from '../index.node'\n\ntest('should be able to access env variable from native', (t) => {\n  t.is(bindings.getEnvVariable(), '@examples/compat-mode')\n})\n\ntest('should be able to throw syntax error', (t) => {\n  const msg = 'Custom Syntax Error'\n  try {\n    bindings.throwSyntaxError(msg)\n    throw new Error('Unreachable')\n  } catch (e) {\n    t.true(e instanceof SyntaxError)\n    t.is((e as SyntaxError).message, msg)\n  }\n})\n\ntest('should be able to coerceToBool', (t) => {\n  t.true(bindings.coerceToBool(true))\n  t.true(bindings.coerceToBool(1))\n  t.true(bindings.coerceToBool({}))\n  t.true(bindings.coerceToBool(Symbol()))\n  t.false(bindings.coerceToBool(0))\n  t.false(bindings.coerceToBool(undefined))\n  t.false(bindings.coerceToBool(null))\n  t.false(bindings.coerceToBool(NaN))\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/function.spec.ts",
    "content": "import test from 'ava'\n\n// @ts-expect-error\nimport bindings from '../index.node'\n\ntest('should call the function', (t) => {\n  bindings.testCallFunction((arg1: string, arg2: string) => {\n    t.is(`${arg1} ${arg2}`, 'hello world')\n  })\n})\n\ntest('should call function with ref args', (t) => {\n  bindings.testCallFunctionWithRefArguments((arg1: string, arg2: string) => {\n    t.is(`${arg1} ${arg2}`, 'hello world')\n  })\n})\n\ntest('should set \"this\" properly', (t) => {\n  const obj = {}\n  bindings.testCallFunctionWithThis.call(obj, function (this: typeof obj) {\n    t.is(this, obj)\n  })\n})\n\ntest('should handle errors', (t) => {\n  bindings.testCallFunctionError(\n    () => {\n      throw new Error('Testing')\n    },\n    (err: Error) => {\n      t.is(err.message, 'Testing')\n    },\n  )\n})\n\ntest('should be able to create function from closure', (t) => {\n  for (let i = 0; i < 100; i++) {\n    t.is(\n      bindings.testCreateFunctionFromClosure()(\n        ...Array.from({ length: i }, (_, i) => i),\n      ),\n      `arguments length: ${i}`,\n    )\n  }\n})\n\ntest('should be able to create nest function from closure', (t) => {\n  let callbackExecuted = false\n\n  const mockObject = {\n    on: (event: string, callback: Function) => {\n      t.is(event, 'on', 'Event name should be \"on\"')\n      callback()\n      callbackExecuted = true\n    },\n  }\n\n  const handle = bindings.testNestCreateFunctionFromClosure()\n  handle(mockObject)\n  t.true(callbackExecuted, 'Nested callback should have been executed')\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/get-napi-version.spec.ts",
    "content": "import test from 'ava'\n\n// @ts-expect-error\nimport bindings from '../index.node'\n\ntest('should get napi version', (t) => {\n  const napiVersion = bindings.getNapiVersion()\n  t.true(typeof napiVersion === 'number')\n  t.is(`${napiVersion}`, process.versions.napi!)\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/global.spec.ts",
    "content": "import test from 'ava'\nimport Sinon from 'sinon'\n\n// @ts-expect-error\nimport bindings from '../index.node'\n\nfunction wait(delay: number) {\n  return new Promise((resolve) => setTimeout(resolve, delay))\n}\n\nconst delay = 100\n\ntest('should setTimeout', async (t) => {\n  const handler = Sinon.spy()\n  bindings.setTimeout(handler, delay)\n  t.is(handler.callCount, 0)\n  await wait(delay + 10)\n  t.is(handler.callCount, 1)\n})\n\ntest('should clearTimeout', async (t) => {\n  const handler = Sinon.spy()\n  const timer = setTimeout(() => handler(), delay)\n  t.is(handler.callCount, 0)\n  bindings.clearTimeout(timer)\n  await wait(delay + 10)\n  t.is(handler.callCount, 0)\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/js-value.spec.ts",
    "content": "import test from 'ava'\n\n// @ts-expect-error\nimport bindings from '../index.node'\n\ntest('instanceof', (t) => {\n  const day = new Date()\n  t.true(bindings.instanceof(day, Date))\n  t.false(bindings.instanceof(day, Number))\n  t.false(bindings.instanceof(1, Date))\n})\n\ntest('is_error', (t) => {\n  t.true(bindings.isError(new Error()))\n  t.true(bindings.isError(new TypeError()))\n  t.true(bindings.isError(new SyntaxError()))\n  t.false(bindings.isError('111'))\n  t.false(bindings.isError(2))\n  t.false(bindings.isError(Symbol()))\n})\n\ntest('is_typedarray', (t) => {\n  t.true(bindings.isTypedarray(new Uint8Array()))\n  t.true(bindings.isTypedarray(new Uint16Array()))\n  t.true(bindings.isTypedarray(new Uint32Array()))\n  t.true(bindings.isTypedarray(new Int8Array()))\n  t.true(bindings.isTypedarray(new Int16Array()))\n  t.true(bindings.isTypedarray(new Int32Array()))\n  t.true(bindings.isTypedarray(Buffer.from('123')))\n  t.false(bindings.isTypedarray(Buffer.from('123').buffer))\n  t.false(bindings.isTypedarray([]))\n})\n\ntest('is_dataview', (t) => {\n  const data = new Uint8Array(100)\n  t.true(bindings.isDataview(new DataView(data.buffer)))\n  t.false(bindings.isDataview(Buffer.from('123')))\n})\n\ntest('strict_equals', (t) => {\n  const a = {\n    foo: 'bar',\n  }\n  const b = { ...a }\n  t.false(bindings.strictEquals(a, b))\n  t.false(bindings.strictEquals(1, '1'))\n  t.false(bindings.strictEquals(null, undefined))\n  t.false(bindings.strictEquals(NaN, NaN))\n  t.true(bindings.strictEquals(a, a))\n})\n\ntest('cast_unknown', (t) => {\n  const f = {}\n  const r = bindings.castUnknown(f)\n  t.is(f, r)\n})\n\ntest('cast_unknown will not throw', (t) => {\n  const f = 1\n  t.notThrows(() => bindings.castUnknown(f))\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/napi-version.ts",
    "content": "export const napiVersion = parseInt(process.versions.napi ?? '1', 10)\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/napi4/deferred.spec.ts",
    "content": "import test from 'ava'\n\n// @ts-expect-error\nimport bindings from '../../index.node'\n\ntest('should resolve deferred from background thread', async (t) => {\n  const promise = bindings.testDeferred(false)\n  t.assert(promise instanceof Promise)\n\n  const result = await promise\n  t.is(result, 15)\n})\n\ntest('should reject deferred from background thread', async (t) => {\n  await t.throwsAsync(() => bindings.testDeferred(true), { message: 'Fail' })\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/napi4/example.txt",
    "content": "Hello world!\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/napi4/threadsafe_function.spec.ts",
    "content": "import { execSync } from 'node:child_process'\nimport { join, dirname } from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nimport test from 'ava'\n\nimport { napiVersion } from '../napi-version'\n\n// @ts-expect-error\nimport bindings from '../../index.node'\n\nconst __dirname = dirname(fileURLToPath(import.meta.url))\n\ntest('should get js function called from a thread', async (t) => {\n  let called = 0\n\n  if (napiVersion < 4) {\n    t.is(bindings.testThreadsafeFunction, undefined)\n    return\n  }\n\n  await new Promise<void>((resolve, reject) => {\n    bindings.testThreadsafeFunction((...args: any[]) => {\n      called += 1\n      try {\n        if (args[1][0] === 0) {\n          t.deepEqual(args, [null, [0, 1, 2, 3]])\n        } else {\n          t.deepEqual(args, [null, [3, 2, 1, 0]])\n        }\n      } catch (err) {\n        reject(err)\n      }\n\n      if (called === 2) {\n        resolve()\n      }\n    })\n  })\n})\n\ntest('should be able to throw error in tsfn', (t) => {\n  if (napiVersion < 4) {\n    t.is(bindings.testThreadsafeFunction, undefined)\n    return\n  }\n\n  t.throws(() => {\n    execSync(\n      `node --import @oxc-node/core/register ${join(__dirname, 'tsfn-throw.js')}`,\n    )\n  })\n})\n\ntest('tsfn dua instance', (t) => {\n  if (napiVersion < 4) {\n    t.is(bindings.A, undefined)\n    return\n  }\n  t.notThrows(() => {\n    execSync(\n      `node --import @oxc-node/core/register ${join(__dirname, 'tsfn-dua-instance.js')}`,\n    )\n  })\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/napi4/tokio_readfile.spec.ts",
    "content": "import fs from 'node:fs'\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nimport test from 'ava'\n\nimport { napiVersion } from '../napi-version'\n\n// @ts-expect-error\nimport bindings from '../../index.node'\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url))\n\nconst filepath = path.resolve(__dirname, './example.txt')\n\ntest('should read a file and return its a buffer', async (t) => {\n  if (napiVersion < 4) {\n    t.is(bindings.testTokioReadfile, undefined)\n    return\n  }\n  await new Promise<void>((resolve, reject) => {\n    bindings.testTokioReadfile(filepath, (err: Error | null, value: Buffer) => {\n      try {\n        t.is(err, null)\n        t.is(Buffer.isBuffer(value), true)\n        t.is(value.toString(), fs.readFileSync(filepath, 'utf8'))\n        resolve()\n      } catch (err) {\n        reject(err)\n      }\n    })\n  })\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/napi4/tokio_rt.spec.ts",
    "content": "import { readFileSync } from 'node:fs'\nimport { dirname, join } from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nimport test from 'ava'\n\nimport { napiVersion } from '../napi-version'\n\n// @ts-expect-error\nimport bindings from '../../index.node'\n\nconst __dirname = dirname(fileURLToPath(import.meta.url))\n\nconst filepath = join(__dirname, './example.txt')\n\ntest.serial('should execute future on tokio runtime', async (t) => {\n  if (napiVersion < 4) {\n    t.is(bindings.testExecuteTokioReadfile, undefined)\n    return\n  }\n  const fileContent = await bindings.testExecuteTokioReadfile(filepath)\n  t.true(Buffer.isBuffer(fileContent))\n  t.deepEqual(readFileSync(filepath), fileContent)\n})\n\ntest.serial('should reject error from tokio future', async (t) => {\n  if (napiVersion < 4) {\n    t.is(bindings.testTokioError, undefined)\n    return\n  }\n  try {\n    await bindings.testTokioError(filepath)\n    throw new TypeError('Unreachable')\n  } catch (e) {\n    t.is((e as Error).message, 'Error from tokio future')\n  }\n})\n\ntest.serial('should be able to execute future paralleled', async (t) => {\n  if (napiVersion < 4) {\n    t.is(bindings.testExecuteTokioReadfile, undefined)\n    return\n  }\n  const buffers = await Promise.all(\n    Array.from({ length: 50 }).map((_) =>\n      bindings.testExecuteTokioReadfile(filepath),\n    ),\n  )\n  for (const fileContent of buffers) {\n    t.true(Buffer.isBuffer(fileContent))\n    t.deepEqual(readFileSync(filepath), fileContent)\n  }\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/napi4/tsfn-dua-instance.js",
    "content": "// @ts-expect-error\nimport bindings from '../../index.node'\n\nasync function main() {\n  await Promise.resolve()\n  const a1 = new bindings.A((err, s) => {\n    console.info(s)\n  })\n  const a2 = new bindings.A((err, s) => {\n    console.info(s)\n  })\n  a1.call()\n  a2.call()\n}\n\nmain().catch((e) => {\n  console.error(e)\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/napi4/tsfn-throw.js",
    "content": "// @ts-expect-error\nimport bindings from '../../index.node'\n\nbindings.testThreadsafeFunction(() => {\n  throw Error('Throw in thread safe function')\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/napi4/tsfn_error.spec.ts",
    "content": "import test from 'ava'\n\nimport { napiVersion } from '../napi-version'\n\n// @ts-expect-error\nimport bindings from '../../index.node'\n\ntest('should call callback with the first arguments as an Error', async (t) => {\n  if (napiVersion < 4) {\n    t.is(bindings.testTsfnError, undefined)\n    return\n  }\n  await new Promise<void>((resolve, reject) => {\n    bindings.testTsfnError((err: Error) => {\n      try {\n        t.is(err instanceof Error, true)\n        t.is(err.message, 'invalid')\n        resolve()\n      } catch (err) {\n        reject(err)\n      }\n    })\n  })\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/napi5/date.spec.ts",
    "content": "import test from 'ava'\n\nimport { napiVersion } from '../napi-version'\n\n// @ts-expect-error\nimport bindings from '../../index.node'\n\ntest('should return false if value is not date', (t) => {\n  if (napiVersion >= 5) {\n    t.false(bindings.testObjectIsDate({}))\n    t.false(bindings.testObjectIsDate(null))\n    t.false(bindings.testObjectIsDate())\n    t.false(bindings.testObjectIsDate(10249892))\n  } else {\n    t.is(bindings.testObjectIsDate, undefined)\n  }\n})\n\ntest('should return true if value is date', (t) => {\n  if (napiVersion >= 5) {\n    t.true(bindings.testObjectIsDate(new Date()))\n  } else {\n    t.is(bindings.testObjectIsDate, undefined)\n  }\n})\n\ntest('should create date', (t) => {\n  if (napiVersion >= 5) {\n    const timestamp = new Date().valueOf()\n    t.deepEqual(bindings.testCreateDate(timestamp), new Date(timestamp))\n  } else {\n    t.is(bindings.testObjectIsDate, undefined)\n  }\n})\n\ntest('should get date value', (t) => {\n  if (napiVersion >= 5) {\n    const date = new Date()\n    t.is(bindings.testGetDateValue(date), date.valueOf())\n  } else {\n    t.is(bindings.testObjectIsDate, undefined)\n  }\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/napi6/bigint.spec.ts",
    "content": "import test from 'ava'\n\nimport { napiVersion } from '../napi-version'\n\n// @ts-expect-error\nimport bindings from '../../index.node'\n\ntest('should create bigints', (t) => {\n  if (napiVersion >= 6) {\n    t.is(bindings.testCreateBigintFromI64(), BigInt('9223372036854775807'))\n    t.is(bindings.testCreateBigintFromMinI64(), BigInt('-9223372036854775808'))\n    t.is(bindings.testCreateBigintFromNegativeI64(), BigInt('-10'))\n    t.is(bindings.testCreateBigintFromU64(), BigInt('18446744073709551615'))\n    t.is(\n      bindings.testCreateBigintFromI128(),\n      BigInt('170141183460469231731687303715884105727'),\n    )\n    t.is(\n      bindings.testCreateBigintFromMinI128(),\n      BigInt('-170141183460469231731687303715884105728'),\n    )\n    t.is(bindings.testCreateBigintFromNegativeI128(), BigInt('-10'))\n    t.is(\n      bindings.testCreateBigintFromU128(),\n      BigInt('340282366920938463463374607431768211455'),\n    )\n    t.is(\n      bindings.testCreateBigintFromWords(),\n      BigInt('-340282366920938463463374607431768211455'),\n    )\n  } else {\n    t.is(bindings.testCreateBigintFromI64, undefined)\n  }\n})\n\ntest('should get integers from bigints', (t) => {\n  if (napiVersion >= 6) {\n    t.is(bindings.testGetBigintI64(BigInt('-123')), -123)\n    t.is(bindings.testGetBigintU64(BigInt(123)), 123)\n    t.deepEqual(bindings.testGetBigintWords(), [\n      BigInt('9223372036854775807'),\n      BigInt('9223372036854775807'),\n    ])\n  } else {\n    t.is(bindings.testGetBigintI64, undefined)\n  }\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/napi6/instance-data.spec.ts",
    "content": "import test from 'ava'\n\nimport { napiVersion } from '../napi-version'\n\n// @ts-expect-error\nimport bindings from '../../index.node'\n\ntest('should set and get instance data', (t) => {\n  if (napiVersion >= 6) {\n    t.is(bindings.getInstanceData(), undefined)\n    bindings.setInstanceData()\n    t.is(bindings.getInstanceData(), 1024)\n  } else {\n    t.is(bindings.getInstanceData, undefined)\n    t.is(bindings.setInstanceData, undefined)\n  }\n})\n\ntest('should throw if get instance data type mismatched', (t) => {\n  if (napiVersion >= 6) {\n    t.throws(bindings.getWrongTypeInstanceData)\n  } else {\n    t.is(bindings.getWrongTypeInstanceData, undefined)\n  }\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/napi7/arraybuffer.spec.ts",
    "content": "import ava from 'ava'\n\nimport { napiVersion } from '../napi-version'\n\n// @ts-expect-error\nimport bindings from '../../index.node'\n\nconst test = napiVersion >= 7 ? ava : ava.skip\n\ntest('should be able to detach ArrayBuffer', (t) => {\n  const buf = Buffer.from('hello world')\n  const ab = buf.buffer.slice(0, buf.length)\n  try {\n    bindings.testDetachArrayBuffer(ab)\n    t.is(ab.byteLength, 0)\n  } catch (e) {\n    t.is((e as any).code, 'DetachableArraybufferExpected')\n  }\n})\n\ntest('is detached arraybuffer should work fine', (t) => {\n  const buf = Buffer.from('hello world')\n  const ab = buf.buffer.slice(0, buf.length)\n  try {\n    bindings.testDetachArrayBuffer(ab)\n    const nonDetachedArrayBuffer = new ArrayBuffer(10)\n    t.true(bindings.testIsDetachedArrayBuffer(ab))\n    t.false(bindings.testIsDetachedArrayBuffer(nonDetachedArrayBuffer))\n  } catch (e) {\n    t.is((e as any).code, 'DetachableArraybufferExpected')\n  }\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/napi8/async-cleanup.spec.ts",
    "content": "import { execSync } from 'node:child_process'\nimport { join, dirname } from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nimport ava from 'ava'\n\nimport { napiVersion } from '../napi-version'\n\n// @ts-expect-error\nimport bindings from '../../index.node'\n\nconst __dirname = dirname(fileURLToPath(import.meta.url))\n\nconst test = napiVersion >= 8 ? ava : ava.skip\n\ntest('should be able to add async cleanup hook', (t) => {\n  const output = execSync(\n    `node --import @oxc-node/core/register ${join(__dirname, 'sub-process.js')}`,\n  ).toString()\n  t.is(output.trim(), 'Exit from sub process')\n})\n\ntest('should be able to add removable async cleanup hook', (t) => {\n  const output = execSync(\n    `node --import @oxc-node/core/register ${join(__dirname, 'sub-process-removable.js')}`,\n  ).toString()\n  t.is(output.trim(), 'Exit from sub process')\n})\n\ntest('should be able to remove cleanup hook after added', (t) => {\n  t.notThrows(() => bindings.testRemoveAsyncCleanupHook())\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/napi8/object.spec.ts",
    "content": "import ava from 'ava'\n\nimport { napiVersion } from '../napi-version'\n\n// @ts-expect-error\nimport bindings from '../../index.node'\n\nconst test = napiVersion >= 8 ? ava : ava.skip\n\ntest('should be able to freeze object', (t) => {\n  const obj: any = {}\n  bindings.testFreezeObject(obj)\n  t.true(Object.isFrozen(obj))\n  t.throws(() => {\n    obj.a = 1\n  })\n})\n\ntest('should be able to seal object', (t) => {\n  const obj: any = {}\n  bindings.testSealObject(obj)\n  t.true(Object.isSealed(obj))\n  t.throws(() => {\n    obj.a = 1\n  })\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/napi8/sub-process-removable.js",
    "content": "// @ts-expect-error\nimport bindings from '../../index.node'\n\nbindings.testAddRemovableAsyncCleanupHook()\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/napi8/sub-process.js",
    "content": "// @ts-expect-error\nimport bindings from '../../index.node'\n\nbindings.testAddAsyncCleanupHook()\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/object.spec.ts",
    "content": "import test from 'ava'\n\n// @ts-expect-error\nimport bindings from '../index.node'\n\ntest('setProperty', (t) => {\n  const obj = {}\n  const key = 'jsPropertyKey'\n  bindings.testSetProperty(obj, key)\n  // @ts-expect-error\n  t.snapshot(obj[key])\n})\n\ntest('testGetProperty', (t) => {\n  const name = Symbol('JsSymbol')\n  const value = Symbol('JsValue')\n  const obj = {\n    [name]: value,\n  }\n  t.is(bindings.testGetProperty(obj, name), value)\n})\n\ntest('setNamedProperty', (t) => {\n  const obj = {}\n  const property = Symbol('JsSymbol')\n  bindings.testSetNamedProperty(obj, property)\n  const keys = Object.keys(obj)\n  const [key] = keys\n  t.is(keys.length, 1)\n  t.snapshot(key)\n  // @ts-expect-error\n  t.is(obj[key], property)\n})\n\ntest('testGetNamedProperty', (t) => {\n  const obj = {\n    p: Symbol('JsSymbol'),\n  }\n  t.is(bindings.testGetNamedProperty(obj), obj.p)\n})\n\ntest('testHasNamedProperty', (t) => {\n  const obj = {\n    a: 1,\n    b: undefined,\n  }\n\n  t.true(bindings.testHasNamedProperty(obj, 'a'))\n  t.true(bindings.testHasNamedProperty(obj, 'b'))\n  t.false(bindings.testHasNamedProperty(obj, 'c'))\n})\n\ntest('testHasOwnProperty', (t) => {\n  const obj = {\n    a: '1',\n    b: undefined,\n  }\n\n  const child = Object.create(obj, {\n    d: {\n      value: 1,\n      enumerable: true,\n      configurable: true,\n    },\n  })\n\n  t.false(bindings.testHasOwnProperty(child, 'a'))\n  t.false(bindings.testHasOwnProperty(child, 'b'))\n  t.true(bindings.testHasOwnProperty(child, 'd'))\n})\n\ntest('testHasOwnPropertyJs', (t) => {\n  const obj = {\n    a: '1',\n    b: undefined,\n  }\n\n  const child = Object.create(obj)\n\n  child.c = 'k1'\n\n  t.false(bindings.testHasOwnPropertyJs(child, 'a'))\n  t.false(bindings.testHasOwnPropertyJs(child, 'b'))\n  t.true(bindings.testHasOwnPropertyJs(child, 'c'))\n})\n\ntest('testHasProperty', (t) => {\n  const obj = {\n    a: '1',\n    b: undefined,\n  }\n\n  const child = Object.create(obj)\n\n  child.c = 'k1'\n\n  t.true(bindings.testHasProperty(child, 'a'))\n  t.true(bindings.testHasProperty(child, 'b'))\n  t.true(bindings.testHasProperty(child, 'c'))\n  t.false(bindings.testHasProperty(child, '__NOT_EXISTED__'))\n})\n\ntest('testHasPropertJs', (t) => {\n  const key = Symbol('JsString')\n  const obj = {\n    [key]: 1,\n    a: 0,\n    b: undefined,\n    2: 'c',\n  }\n  t.true(bindings.testHasPropertyJs(obj, key))\n  t.true(bindings.testHasPropertyJs(obj, 'a'))\n  t.true(bindings.testHasPropertyJs(obj, 'b'))\n  t.true(bindings.testHasPropertyJs(obj, 2))\n  t.false(bindings.testHasPropertyJs(obj, {}))\n  t.false(bindings.testHasPropertyJs(obj, Symbol('JsString')))\n})\n\ntest('testDeleteProperty', (t) => {\n  const k1 = Symbol()\n  const k2 = 2\n  const k3 = 'foo'\n  const obj = {\n    [k1]: 1,\n    [k2]: 2,\n    k4: 4,\n  }\n  Object.defineProperty(obj, k3, {\n    configurable: false,\n    enumerable: true,\n    value: 'k3',\n  })\n  t.true(bindings.testDeleteProperty(obj, k1))\n  t.true(bindings.testDeleteProperty(obj, k2))\n  t.false(bindings.testDeleteProperty(obj, k3))\n  t.true(bindings.testDeleteProperty(obj, 'k4'))\n  t.true(bindings.testDeleteProperty(obj, '__NOT_EXISTED__'))\n  t.true(bindings.testDeleteProperty(obj, k1))\n  t.deepEqual(obj, { [k3]: 'k3' })\n})\n\ntest('testDeleteNamedProperty', (t) => {\n  const k1 = 'k1'\n  const k2 = 'k2'\n  const k3 = 'foo'\n  const obj = {\n    [k1]: 1,\n    [k2]: 2,\n    k4: 4,\n  }\n  Object.defineProperty(obj, k3, {\n    configurable: false,\n    enumerable: true,\n    value: 'k3',\n  })\n  t.true(bindings.testDeleteNamedProperty(obj, k1))\n  t.true(bindings.testDeleteNamedProperty(obj, k2))\n  t.false(bindings.testDeleteNamedProperty(obj, k3))\n  t.true(bindings.testDeleteNamedProperty(obj, 'k4'))\n  t.true(bindings.testDeleteNamedProperty(obj, '__NOT_EXISTED__'))\n  t.true(bindings.testDeleteNamedProperty(obj, k1))\n  t.deepEqual(obj, { [k3]: 'k3' })\n})\n\ntest('testGetPropertyNames', (t) => {\n  const k1 = Symbol()\n  const k2 = 2\n  const k3 = 'k3'\n  const obj = {\n    [k1]: 1,\n    [k2]: 1,\n    [k3]: 1,\n  }\n  t.snapshot(\n    bindings\n      .testGetPropertyNames(obj)\n      .map((v: string | number) => v.toString()),\n  )\n})\n\ntest('testGetPrototype', (t) => {\n  class A {}\n  class B extends A {}\n  const obj = new B()\n  t.is(bindings.testGetPrototype(obj), Object.getPrototypeOf(obj))\n})\n\ntest('testSetElement', (t) => {\n  const arr: any[] = []\n  bindings.testSetElement(arr, 1, 1)\n  bindings.testSetElement(arr, 5, 'foo')\n  t.snapshot(arr)\n})\n\ntest('testHasElement', (t) => {\n  const arr: number[] = []\n  arr[1] = 1\n  arr[4] = 0\n  t.false(bindings.testHasElement(arr, 0))\n  t.true(bindings.testHasElement(arr, 1))\n  t.false(bindings.testHasElement(arr, 2))\n  t.false(bindings.testHasElement(arr, 3))\n  t.true(bindings.testHasElement(arr, 4))\n})\n\ntest('testGetElement', (t) => {\n  const arr = [Symbol(), Symbol()]\n  t.is(bindings.testGetElement(arr, 0), arr[0])\n  t.is(bindings.testGetElement(arr, 1), arr[1])\n})\n\ntest('testDeleteElement', (t) => {\n  const arr = [0, 1, 2, 3]\n  bindings.testDeleteElement(arr, 1)\n  bindings.testDeleteElement(arr, 2)\n  t.snapshot(arr)\n})\n\ntest('testDefineProperties', (t) => {\n  const obj: any = {}\n  bindings.testDefineProperties(obj)\n  t.is(obj.count, 0)\n  obj.add(10)\n  t.is(obj.count, 10)\n  const descriptor = Object.getOwnPropertyDescriptor(obj, 'ro')\n  t.is(descriptor?.value ?? descriptor?.get?.(), 'readonly')\n})\n\ntest('is promise', (t) => {\n  t.false(bindings.testIsPromise(1))\n  t.false(bindings.testIsPromise('hello'))\n  t.false(bindings.testIsPromise({}))\n  t.false(bindings.testIsPromise(new Date()))\n  t.false(bindings.testIsPromise(Symbol()))\n\n  t.true(bindings.testIsPromise(Promise.resolve()))\n  t.true(bindings.testIsPromise(Promise.reject().catch(() => {})))\n  t.true(\n    bindings.testIsPromise(\n      new Promise<void>((resolve) => {\n        resolve()\n      }),\n    ),\n  )\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/serde/__snapshots__/ser.spec.ts.md",
    "content": "# Snapshot report for `__tests__/serde/ser.spec.ts`\n\nThe actual snapshot is saved in `ser.spec.ts.snap`.\n\nGenerated by [AVA](https://avajs.dev).\n\n## serialize make_num_77 from bindings\n\n> Snapshot 1\n\n    77\n\n## serialize make_num_32 from bindings\n\n> Snapshot 1\n\n    32\n\n## serialize make_str_hello from bindings\n\n> Snapshot 1\n\n    'Hello World'\n\n## serialize make_num_array from bindings\n\n> Snapshot 1\n\n    [\n      0,\n      1,\n      2,\n      3,\n      4,\n      5,\n      6,\n      7,\n      8,\n      9,\n    ]\n\n## serialize make_buff from bindings\n\n> Snapshot 1\n\n    Buffer @Uint8Array [\n      fffefd\n    ]\n\n## serialize make_obj from bindings\n\n> Snapshot 1\n\n    {\n      a: 1,\n      b: [\n        0.1,\n        1.1,\n        2.2,\n        3.3,\n      ],\n      c: 'Hi',\n    }\n\n## serialize make_map from bindings\n\n> Snapshot 1\n\n    {\n      a: 1,\n      b: 2,\n      c: 3,\n    }\n\n## serialize make_bytes_struct from bindings\n\n> Snapshot 1\n\n    {\n      code: Buffer @Uint8Array [\n        00010203\n      ],\n      map: 'source map',\n    }\n\n## serialize make_object from bindings\n\n> Snapshot 1\n\n    {\n      a: 1,\n      b: [\n        1,\n        2,\n      ],\n      c: 'abc',\n      d: false,\n      e: null,\n      f: null,\n      g: [\n        9,\n        false,\n        'efg',\n      ],\n      h: '🤷',\n      i: 'Empty',\n      j: [\n        27,\n        'hij',\n      ],\n      k: {\n        a: 128,\n        b: [\n          9,\n          8,\n          7,\n        ],\n      },\n      l: 'jkl',\n      m: [\n        0,\n        1,\n        2,\n        3,\n        4,\n      ],\n      o: {\n        Value: [\n          'z',\n          'y',\n          'x',\n        ],\n      },\n      p: [\n        1,\n        2,\n        3.5,\n      ],\n      q: 9998881288248882845242411222333n,\n      r: -3332323888900001232323022221345n,\n    }\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/serde/de.spec.ts",
    "content": "import test from 'ava'\n\nimport { napiVersion } from '../napi-version'\n\n// @ts-expect-error\nimport bindings from '../../index.node'\n\ntest('deserialize string', (t) => {\n  t.notThrows(() => bindings.expect_hello_world('hello world'))\n})\n\ntest('deserialize object', (t) => {\n  if (napiVersion < 6) {\n    t.throws(() => {\n      bindings.expect_obj({})\n    })\n  } else {\n    t.notThrows(() =>\n      bindings.expect_obj({\n        a: 1,\n        b: [1, 2],\n        c: 'abc',\n        d: false,\n        e: null,\n        f: null,\n        g: [9, false, 'efg'],\n        h: '🤷',\n        i: 'Empty',\n        j: { Tuple: [27, 'hij'] },\n        k: { Struct: { a: 128, b: [9, 8, 7] } },\n        l: 'jkl',\n        m: [0, 1, 2, 3, 4],\n        o: { Value: ['z', 'y', 'x'] },\n        p: [1, 2, 3.5],\n        q: BigInt('9998881288248882845242411222333'),\n        r: BigInt('-3332323888900001232323022221345'),\n      }),\n    )\n  }\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/serde/ser.spec.ts",
    "content": "import test from 'ava'\n\nimport { napiVersion } from '../napi-version'\n\n// @ts-expect-error\nimport bindings from '../../index.node'\n\nconst testFunc = [\n  'make_num_77',\n  'make_num_32',\n  'make_str_hello',\n  'make_num_array',\n  'make_buff',\n  'make_obj',\n  'make_map',\n  'make_bytes_struct',\n]\n\nif (napiVersion >= 6) {\n  // bigint inside\n  testFunc.push('make_object')\n}\n\nfor (const func of testFunc) {\n  test(`serialize ${func} from bindings`, (t) => {\n    t.snapshot(bindings[func]())\n  })\n}\n\ntest('serialize make_bytes_struct', (t) => {\n  t.deepEqual(bindings.make_bytes_struct(), {\n    code: Buffer.from([0, 1, 2, 3]),\n    map: 'source map',\n  })\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/serde/ser.spec.ts.md",
    "content": "# Snapshot report for `examples/napi-compat-mode/__test__/serde/ser.spec.ts`\n\nThe actual snapshot is saved in `ser.spec.ts.snap`.\n\nGenerated by [AVA](https://avajs.dev).\n\n## serialize make_num_77 from bindings\n\n> Snapshot 1\n\n    77\n\n## serialize make_num_32 from bindings\n\n> Snapshot 1\n\n    32\n\n## serialize make_str_hello from bindings\n\n> Snapshot 1\n\n    'Hello World'\n\n## serialize make_num_array from bindings\n\n> Snapshot 1\n\n    [\n      0,\n      1,\n      2,\n      3,\n      4,\n      5,\n      6,\n      7,\n      8,\n      9,\n    ]\n\n## serialize make_buff from bindings\n\n> Snapshot 1\n\n    Buffer @Uint8Array [\n      fffefd\n    ]\n\n## serialize make_obj from bindings\n\n> Snapshot 1\n\n    {\n      a: 1,\n      b: [\n        0.1,\n        1.1,\n        2.2,\n        3.3,\n      ],\n      c: 'Hi',\n    }\n\n## serialize make_map from bindings\n\n> Snapshot 1\n\n    {\n      a: 1,\n      b: 2,\n      c: 3,\n    }\n\n## serialize make_bytes_struct from bindings\n\n> Snapshot 1\n\n    {\n      code: Buffer @Uint8Array [\n        00010203\n      ],\n      map: 'source map',\n    }\n\n## serialize make_object from bindings\n\n> Snapshot 1\n\n    {\n      a: 1,\n      b: [\n        1,\n        2,\n      ],\n      c: 'abc',\n      d: false,\n      e: null,\n      f: null,\n      g: [\n        9,\n        false,\n        'efg',\n      ],\n      h: '🤷',\n      i: 'Empty',\n      j: [\n        27,\n        'hij',\n      ],\n      k: {\n        a: 128,\n        b: [\n          9,\n          8,\n          7,\n        ],\n      },\n      l: 'jkl',\n      m: [\n        0,\n        1,\n        2,\n        3,\n        4,\n      ],\n      o: {\n        Value: [\n          'z',\n          'y',\n          'x',\n        ],\n      },\n      p: [\n        1,\n        2,\n        3.5,\n      ],\n      q: 9998881288248882845242411222333n,\n      r: -340282363588614574563373375108745990111n,\n    }\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/serde/serde-json.spec.ts",
    "content": "import test from 'ava'\n\n// @ts-expect-error\nimport bindings from '../../index.node'\n\nconst ValidObject = {\n  a: 1,\n  b: [-1.2, 1.1, 2.2, 3.3],\n  c: 'Hi',\n}\n\nconst InValidObject = {\n  a: -1,\n  b: [-1, 1.1, 2.2, 3.3],\n  c: 'Hello',\n}\n\ntest('should from json string', (t) => {\n  t.throws(() => bindings.from_json_string(JSON.stringify(InValidObject)))\n  t.deepEqual(\n    ValidObject,\n    bindings.from_json_string(JSON.stringify(ValidObject)),\n  )\n})\n\ntest('should convert to json string', (t) => {\n  t.throws(() => bindings.json_to_string(InValidObject))\n  t.deepEqual(JSON.stringify(ValidObject), bindings.json_to_string(ValidObject))\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/string.spec.ts",
    "content": "import test from 'ava'\n\n// @ts-expect-error\nimport bindings from '../index.node'\n\ntest('should be able to concat string', (t) => {\n  const fixture = 'JavaScript 🌳 你好 napi'\n  t.snapshot(bindings.concatString(fixture))\n})\n\ntest('should be able to concat string with char \\0', (t) => {\n  const fixture = 'JavaScript \\0 🌳 你好 \\0 napi'\n  t.snapshot(fixture)\n  t.snapshot(bindings.concatString(fixture))\n})\n\ntest('should be able to concat utf16 string', (t) => {\n  const fixture = 'JavaScript 🌳 你好 napi'\n  t.snapshot(bindings.concatUTF16String(fixture))\n})\n\ntest('should be able to concat latin1 string', (t) => {\n  const fixture = 'æ¶½¾DEL'\n  t.snapshot(bindings.concatLatin1String(fixture))\n})\n\ntest('should be able to crate latin1 string', (t) => {\n  t.snapshot(bindings.createLatin1())\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/symbol.spec.ts",
    "content": "import test from 'ava'\n\n// @ts-expect-error\nimport bindings from '../index.node'\n\ntest('should create named symbol', (t) => {\n  const symbol = bindings.createNamedSymbol()\n  t.true(typeof symbol === 'symbol')\n  t.is(symbol.toString(), 'Symbol(native)')\n})\n\ntest('should create unnamed symbol', (t) => {\n  const symbol = bindings.createUnnamedSymbol()\n  t.true(typeof symbol === 'symbol')\n  t.is(symbol.toString(), 'Symbol()')\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/__tests__/throw.spec.ts",
    "content": "import test from 'ava'\n\n// @ts-expect-error\nimport bindings from '../index.node'\n\ntest('should be able to throw error from native', (t) => {\n  t.throws(bindings.testThrow)\n})\n\ntest('should be able to throw error from native with reason', (t) => {\n  const reason = 'Fatal'\n  t.throws(() => bindings.testThrowWithReason(reason), void 0, reason)\n})\n\ntest('should throw if argument type is not match', (t) => {\n  t.throws(() => bindings.testThrowWithReason(2))\n})\n\ntest('should throw if Rust code panic', (t) => {\n  t.throws(() => bindings.testThrowWithPanic())\n})\n"
  },
  {
    "path": "examples/napi-compat-mode/browser.js",
    "content": "export * from '@examples/compat-mode-wasm32-wasi'\n"
  },
  {
    "path": "examples/napi-compat-mode/build.rs",
    "content": "extern crate napi_build;\n\nfn main() {\n  napi_build::setup();\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/index.wasi-browser.js",
    "content": "import {\n  createOnMessage as __wasmCreateOnMessageForFsProxy,\n  getDefaultContext as __emnapiGetDefaultContext,\n  instantiateNapiModuleSync as __emnapiInstantiateNapiModuleSync,\n  WASI as __WASI,\n} from '@napi-rs/wasm-runtime'\n\nimport __wasmUrl from './index.wasm?url'\n\nconst __wasi = new __WASI({\n  version: 'preview1',\n})\n\nconst __emnapiContext = __emnapiGetDefaultContext()\n\nconst __sharedMemory = new WebAssembly.Memory({\n  initial: 4000,\n  maximum: 65536,\n  shared: true,\n})\n\nconst __wasmFile = await fetch(__wasmUrl).then((res) => res.arrayBuffer())\n\nconst {\n  instance: __napiInstance,\n  module: __wasiModule,\n  napiModule: __napiModule,\n} = __emnapiInstantiateNapiModuleSync(__wasmFile, {\n  context: __emnapiContext,\n  asyncWorkPoolSize: 4,\n  wasi: __wasi,\n  onCreateWorker() {\n    const worker = new Worker(\n      new URL('./wasi-worker-browser.mjs', import.meta.url),\n      {\n        type: 'module',\n      },\n    )\n\n    return worker\n  },\n  overwriteImports(importObject) {\n    importObject.env = {\n      ...importObject.env,\n      ...importObject.napi,\n      ...importObject.emnapi,\n      memory: __sharedMemory,\n    }\n    return importObject\n  },\n  beforeInit({ instance }) {\n    for (const name of Object.keys(instance.exports)) {\n      if (name.startsWith('__napi_register__')) {\n        instance.exports[name]()\n      }\n    }\n  },\n})\nexport default __napiModule.exports\n"
  },
  {
    "path": "examples/napi-compat-mode/index.wasi.cjs",
    "content": "/* eslint-disable */\n/* prettier-ignore */\n\n/* auto-generated by NAPI-RS */\n\nconst __nodeFs = require('node:fs')\nconst __nodePath = require('node:path')\nconst { WASI: __nodeWASI } = require('node:wasi')\nconst { Worker } = require('node:worker_threads')\n\nconst {\n  createOnMessage: __wasmCreateOnMessageForFsProxy,\n  getDefaultContext: __emnapiGetDefaultContext,\n  instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync,\n} = require('@napi-rs/wasm-runtime')\n\nconst __rootDir = __nodePath.parse(process.cwd()).root\n\nconst __wasi = new __nodeWASI({\n  version: 'preview1',\n  env: process.env,\n  preopens: {\n    [__rootDir]: __rootDir,\n  },\n})\n\nconst __emnapiContext = __emnapiGetDefaultContext()\n\nconst __sharedMemory = new WebAssembly.Memory({\n  initial: 4000,\n  maximum: 65536,\n  shared: true,\n})\n\nlet __wasmFilePath = __nodePath.join(__dirname, 'index.wasm')\nconst __wasmDebugFilePath = __nodePath.join(__dirname, 'index.debug.wasm')\n\nif (__nodeFs.existsSync(__wasmDebugFilePath)) {\n  __wasmFilePath = __wasmDebugFilePath\n} else if (!__nodeFs.existsSync(__wasmFilePath)) {\n  try {\n    __wasmFilePath = __nodePath.resolve('@examples/compat-mode-wasm32-wasi')\n  } catch {\n    throw new Error(\n      'Cannot find index.wasm file, and @examples/compat-mode-wasm32-wasi package is not installed.',\n    )\n  }\n}\n\nconst {\n  instance: __napiInstance,\n  module: __wasiModule,\n  napiModule: __napiModule,\n} = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__wasmFilePath), {\n  context: __emnapiContext,\n  asyncWorkPoolSize: (function () {\n    const threadsSizeFromEnv = Number(\n      process.env.NAPI_RS_ASYNC_WORK_POOL_SIZE ??\n        process.env.UV_THREADPOOL_SIZE,\n    )\n    // NaN > 0 is false\n    if (threadsSizeFromEnv > 0) {\n      return threadsSizeFromEnv\n    } else {\n      return 4\n    }\n  })(),\n  reuseWorker: true,\n  wasi: __wasi,\n  onCreateWorker() {\n    const worker = new Worker(__nodePath.join(__dirname, 'wasi-worker.mjs'), {\n      env: process.env,\n    })\n    worker.onmessage = ({ data }) => {\n      __wasmCreateOnMessageForFsProxy(__nodeFs)(data)\n    }\n    return worker\n  },\n  overwriteImports(importObject) {\n    importObject.env = {\n      ...importObject.env,\n      ...importObject.napi,\n      ...importObject.emnapi,\n      memory: __sharedMemory,\n    }\n    return importObject\n  },\n  beforeInit({ instance }) {\n    for (const name of Object.keys(instance.exports)) {\n      if (name.startsWith('__napi_register__')) {\n        instance.exports[name]()\n      }\n    }\n  },\n})\nmodule.exports = __napiModule.exports\n"
  },
  {
    "path": "examples/napi-compat-mode/package.json",
    "content": "{\n  \"name\": \"@examples/compat-mode\",\n  \"version\": \"1.0.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"build\": \"napi-raw build --no-js --features latest\",\n    \"test\": \"ava reset-cache && ava\"\n  },\n  \"devDependencies\": {\n    \"@napi-rs/cli\": \"workspace:*\",\n    \"ava\": \"^7.0.0\",\n    \"sinon\": \"^21.0.0\"\n  },\n  \"ava\": {\n    \"extensions\": {\n      \"ts\": \"module\"\n    },\n    \"require\": [\n      \"@oxc-node/core/register\"\n    ],\n    \"files\": [\n      \"__tests__/**/*.spec.ts\"\n    ],\n    \"environmentVariables\": {\n      \"TS_NODE_PROJECT\": \"./tsconfig.json\"\n    },\n    \"workerThreads\": false,\n    \"cache\": false,\n    \"timeout\": \"5m\"\n  }\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/array.rs",
    "content": "use std::convert::TryInto;\n\nuse napi::{CallContext, ContextlessResult, Env, JsBoolean, JsNumber, JsObject, Result, Unknown};\n\n#[contextless_function]\nfn test_create_array(env: Env) -> ContextlessResult<JsObject> {\n  env.create_empty_array().map(Some)\n}\n\n#[js_function(1)]\nfn test_create_array_with_length(ctx: CallContext) -> Result<JsObject> {\n  let length: u32 = ctx.get::<JsNumber>(0)?.try_into()?;\n  ctx.env.create_array_with_length(length as usize)\n}\n\n#[js_function(3)]\nfn test_set_element(ctx: CallContext) -> Result<()> {\n  let mut arr = ctx.get::<JsObject>(0)?;\n  let index = ctx.get::<JsNumber>(1)?;\n  let ele = ctx.get::<Unknown>(2)?;\n  arr.set_element(index.try_into()?, ele)?;\n\n  Ok(())\n}\n\n#[js_function(2)]\nfn test_has_element(ctx: CallContext) -> Result<JsBoolean> {\n  let arr = ctx.get::<JsObject>(0)?;\n  let index = ctx.get::<JsNumber>(1)?;\n\n  ctx.env.get_boolean(arr.has_element(index.try_into()?)?)\n}\n\n#[js_function(2)]\nfn test_delete_element(ctx: CallContext) -> Result<JsBoolean> {\n  let mut arr = ctx.get::<JsObject>(0)?;\n  let index = ctx.get::<JsNumber>(1)?;\n\n  ctx.env.get_boolean(arr.delete_element(index.try_into()?)?)\n}\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"testCreateArray\", test_create_array)?;\n  exports.create_named_method(\"testCreateArrayWithLength\", test_create_array_with_length)?;\n  exports.create_named_method(\"testSetElement\", test_set_element)?;\n  exports.create_named_method(\"testHasElement\", test_has_element)?;\n  exports.create_named_method(\"testDeleteElement\", test_delete_element)?;\n\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/arraybuffer.rs",
    "content": "use std::f64::consts::PI;\nuse std::str;\n\nuse napi::{\n  bindgen_prelude::Uint8Array, CallContext, JsArrayBuffer, JsNumber, JsObject, JsTypedArray, Result,\n};\n\n#[js_function(1)]\npub fn get_arraybuffer_length(ctx: CallContext) -> Result<JsNumber> {\n  let buffer = ctx.get::<JsArrayBuffer>(0)?.into_value()?;\n  ctx.env.create_uint32(buffer.len() as u32)\n}\n\n#[js_function(1)]\npub fn mutate_uint8_array(ctx: CallContext) -> Result<()> {\n  let mut buffer = ctx.get::<Uint8Array>(0)?;\n  let buffer_mut_ref: &mut [u8] = unsafe { buffer.as_mut() };\n  buffer_mut_ref[0] = 42;\n  Ok(())\n}\n\n#[js_function(1)]\npub fn mutate_uint16_array(ctx: CallContext) -> Result<()> {\n  let mut buffer = ctx.get::<JsTypedArray>(0)?.into_value()?;\n  let buffer_mut_ref: &mut [u16] = buffer.as_mut();\n  buffer_mut_ref[0] = 65535;\n  Ok(())\n}\n\n#[js_function(1)]\npub fn mutate_int16_array(ctx: CallContext) -> Result<()> {\n  let mut buffer = ctx.get::<JsTypedArray>(0)?.into_value()?;\n  let buffer_mut_ref: &mut [i16] = buffer.as_mut();\n  buffer_mut_ref[0] = 32767;\n  Ok(())\n}\n\n#[js_function(1)]\npub fn mutate_float32_array(ctx: CallContext) -> Result<()> {\n  let mut buffer = ctx.get::<JsTypedArray>(0)?.into_value()?;\n  let buffer_mut_ref: &mut [f32] = buffer.as_mut();\n  buffer_mut_ref[0] = 3.33;\n  Ok(())\n}\n\n#[js_function(1)]\npub fn mutate_float64_array(ctx: CallContext) -> Result<()> {\n  let mut buffer = ctx.get::<JsTypedArray>(0)?.into_value()?;\n  let buffer_mut_ref: &mut [f64] = buffer.as_mut();\n  buffer_mut_ref[0] = PI;\n  Ok(())\n}\n\n#[js_function(1)]\n#[cfg(feature = \"latest\")]\npub fn mutate_i64_array(ctx: CallContext) -> Result<()> {\n  let mut buffer = ctx.get::<JsTypedArray>(0)?.into_value()?;\n  let buffer_mut_ref: &mut [i64] = buffer.as_mut();\n  buffer_mut_ref[0] = 9223372036854775807;\n  Ok(())\n}\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"getArraybufferLength\", get_arraybuffer_length)?;\n  exports.create_named_method(\"mutateUint8Array\", mutate_uint8_array)?;\n  exports.create_named_method(\"mutateUint16Array\", mutate_uint16_array)?;\n  exports.create_named_method(\"mutateInt16Array\", mutate_int16_array)?;\n  exports.create_named_method(\"mutateFloat32Array\", mutate_float32_array)?;\n  exports.create_named_method(\"mutateFloat64Array\", mutate_float64_array)?;\n  #[cfg(feature = \"latest\")]\n  exports.create_named_method(\"mutateI64Array\", mutate_i64_array)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/buffer.rs",
    "content": "use std::mem::ManuallyDrop;\nuse std::str;\n\nuse napi::{\n  bindgen_prelude::BufferSlice, noop_finalize, CallContext, ContextlessResult, Env, Error,\n  JsNumber, JsObject, JsString, Result, Status,\n};\n\n#[js_function(1)]\npub fn get_buffer_length(ctx: CallContext) -> Result<JsNumber> {\n  let buffer = ctx.get::<BufferSlice>(0)?;\n  ctx.env.create_uint32(buffer.len() as u32)\n}\n\n#[js_function(1)]\npub fn buffer_to_string(ctx: CallContext) -> Result<JsString> {\n  let buffer = ctx.get::<BufferSlice>(0)?;\n  ctx.env.create_string(\n    str::from_utf8(&buffer).map_err(|e| Error::new(Status::StringExpected, format!(\"{}\", e)))?,\n  )\n}\n\n#[js_function(1)]\npub fn copy_buffer(ctx: CallContext) -> Result<BufferSlice> {\n  let buffer = ctx.get::<BufferSlice>(0)?;\n  BufferSlice::copy_from(ctx.env, buffer)\n}\n\n#[contextless_function]\npub fn create_borrowed_buffer_with_noop_finalize(\n  env: Env,\n) -> ContextlessResult<BufferSlice<'static>> {\n  let mut data = vec![1, 2, 3];\n  let data_ptr = data.as_mut_ptr();\n  let length = data.len();\n  let manually_drop = ManuallyDrop::new(data);\n\n  let ret =\n    unsafe { BufferSlice::from_external(&env, data_ptr, length, manually_drop, noop_finalize) }?;\n\n  Ok(Some(ret))\n}\n\n#[contextless_function]\npub fn create_borrowed_buffer_with_finalize(env: Env) -> ContextlessResult<BufferSlice<'static>> {\n  let mut data = vec![1, 2, 3];\n  let data_ptr = data.as_mut_ptr();\n  let length = data.len();\n  let manually_drop = ManuallyDrop::new(data);\n\n  let ret = unsafe {\n    BufferSlice::from_external(\n      &env,\n      data_ptr,\n      length,\n      manually_drop,\n      |_, mut hint: ManuallyDrop<Vec<u8>>| {\n        ManuallyDrop::drop(&mut hint);\n      },\n    )\n  }?;\n\n  Ok(Some(ret))\n}\n\n#[contextless_function]\npub fn create_empty_borrowed_buffer_with_finalize(\n  env: Env,\n) -> ContextlessResult<BufferSlice<'static>> {\n  let mut data = vec![];\n  let data_ptr = data.as_mut_ptr();\n  let length = data.len();\n  let manually_drop = ManuallyDrop::new(data);\n\n  let ret = unsafe {\n    BufferSlice::from_external(\n      &env,\n      data_ptr,\n      length,\n      manually_drop,\n      |_, mut hint: ManuallyDrop<Vec<u8>>| {\n        ManuallyDrop::drop(&mut hint);\n      },\n    )\n  }?;\n\n  Ok(Some(ret))\n}\n\n#[contextless_function]\npub fn create_empty_buffer(env: Env) -> ContextlessResult<BufferSlice<'static>> {\n  let data = vec![];\n\n  let ret = BufferSlice::from_data(&env, data)?;\n\n  Ok(Some(ret))\n}\n\n#[js_function(1)]\nfn mutate_buffer(ctx: CallContext) -> Result<()> {\n  let buffer = &mut ctx.get::<BufferSlice>(0)?;\n  buffer[1] = 42;\n  Ok(())\n}\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"getBufferLength\", get_buffer_length)?;\n  exports.create_named_method(\"bufferToString\", buffer_to_string)?;\n  exports.create_named_method(\"copyBuffer\", copy_buffer)?;\n  exports.create_named_method(\n    \"createBorrowedBufferWithNoopFinalize\",\n    create_borrowed_buffer_with_noop_finalize,\n  )?;\n  exports.create_named_method(\n    \"createBorrowedBufferWithFinalize\",\n    create_borrowed_buffer_with_finalize,\n  )?;\n  exports.create_named_method(\n    \"createEmptyBorrowedBufferWithFinalize\",\n    create_empty_borrowed_buffer_with_finalize,\n  )?;\n  exports.create_named_method(\"createEmptyBuffer\", create_empty_buffer)?;\n  exports.create_named_method(\"mutateBuffer\", mutate_buffer)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/class.rs",
    "content": "use std::convert::TryInto;\n\nuse napi::{\n  bindgen_prelude::{Function, Unknown},\n  CallContext, JsNumber, JsObject, Property, Result,\n};\n\nstruct NativeClass {\n  value: i32,\n}\n\n#[js_function(1)]\nfn create_test_class(ctx: CallContext) -> Result<Function<Unknown, Unknown>> {\n  let add_count_method = Property::new()\n    .with_utf8_name(\"addCount\")?\n    .with_method(add_count);\n  let add_native_count = Property::new()\n    .with_utf8_name(\"addNativeCount\")?\n    .with_method(add_native_count);\n  let renew_wrapped = Property::new()\n    .with_utf8_name(\"renewWrapped\")?\n    .with_method(renew_wrapped);\n  ctx.env.define_class(\n    \"TestClass\",\n    test_class_constructor,\n    &[add_count_method, add_native_count, renew_wrapped],\n  )\n}\n\n#[js_function(1)]\nfn test_class_constructor(ctx: CallContext) -> Result<()> {\n  let count: i32 = ctx.get::<JsNumber>(0)?.try_into()?;\n  let mut this: JsObject = ctx.this_unchecked();\n  ctx\n    .env\n    .wrap(&mut this, NativeClass { value: count + 100 }, None)?;\n  this.set_named_property(\"count\", ctx.env.create_int32(count)?)?;\n  Ok(())\n}\n\n#[js_function(1)]\nfn add_count(ctx: CallContext) -> Result<()> {\n  let add: i32 = ctx.get::<JsNumber>(0)?.try_into()?;\n  let mut this: JsObject = ctx.this_unchecked();\n  let count: i32 = this.get_named_property::<JsNumber>(\"count\")?.try_into()?;\n  this.set_named_property(\"count\", ctx.env.create_int32(count + add)?)?;\n  Ok(())\n}\n\n#[js_function(1)]\nfn add_native_count(ctx: CallContext) -> Result<JsNumber> {\n  let add: i32 = ctx.get::<JsNumber>(0)?.try_into()?;\n  let this: JsObject = ctx.this_unchecked();\n  let native_class: &mut NativeClass = ctx.env.unwrap(&this)?;\n  native_class.value += add;\n  ctx.env.create_int32(native_class.value)\n}\n\n#[js_function]\nfn renew_wrapped(ctx: CallContext) -> Result<()> {\n  let mut this: JsObject = ctx.this_unchecked();\n  ctx.env.drop_wrapped::<NativeClass>(&this)?;\n  ctx.env.wrap(&mut this, NativeClass { value: 42 }, None)?;\n  Ok(())\n}\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"createTestClass\", create_test_class)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/cleanup_env.rs",
    "content": "use napi::{\n  bindgen_prelude::External, CallContext, CleanupEnvHook, ContextlessResult, Env, JsObject, Result,\n};\n\n#[contextless_function]\nfn add_cleanup_hook(env: Env) -> ContextlessResult<External<CleanupEnvHook<()>>> {\n  let hook = env.add_env_cleanup_hook((), |_| {\n    println!(\"cleanup hook executed\");\n  })?;\n  Ok(Some(External::new(hook)))\n}\n\n#[js_function(1)]\nfn remove_cleanup_hook(ctx: CallContext) -> Result<()> {\n  let hook = ctx.get::<&External<CleanupEnvHook<()>>>(0)?;\n  ctx.env.remove_env_cleanup_hook(**hook)?;\n  Ok(())\n}\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"addCleanupHook\", add_cleanup_hook)?;\n  exports.create_named_method(\"removeCleanupHook\", remove_cleanup_hook)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/either.rs",
    "content": "use std::convert::TryInto;\n\nuse napi::{CallContext, Either, JsNumber, JsObject, JsString, Result};\n\n#[js_function(1)]\npub fn either_number_string(ctx: CallContext) -> Result<Either<JsNumber, JsString>> {\n  let arg = ctx.get::<Either<JsNumber, JsString>>(0)?;\n  match arg {\n    Either::A(n) => {\n      let n: u32 = n.try_into()?;\n      ctx.env.create_uint32(n + 100).map(Either::A)\n    }\n    Either::B(s) => {\n      let content = format!(\"Either::B({})\", s.into_utf8()?.as_str()?);\n      ctx.env.create_string_from_std(content).map(Either::B)\n    }\n  }\n}\n\n#[js_function(1)]\npub fn dynamic_argument_length(ctx: CallContext) -> Result<JsNumber> {\n  let value = ctx.try_get::<JsNumber>(0)?;\n  if let Either::A(n) = value {\n    let n: u32 = n.try_into()?;\n    ctx.env.create_uint32(n + 100)\n  } else {\n    ctx.env.create_uint32(42)\n  }\n}\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"eitherNumberString\", either_number_string)?;\n  exports.create_named_method(\"dynamicArgumentLength\", dynamic_argument_length)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/env.rs",
    "content": "use napi::{\n  bindgen_prelude::{Function, JsObjectValue},\n  CallContext, ContextlessResult, Env, JsBoolean, JsObject, JsString, JsValue, Result, Unknown,\n};\n\n#[js_function(2)]\npub fn instanceof(ctx: CallContext) -> Result<JsBoolean> {\n  let object = ctx.get::<Unknown>(0)?;\n  let constructor = ctx.get::<Unknown>(1)?;\n  ctx.env.get_boolean(object.instanceof(constructor)?)\n}\n\n#[js_function(1)]\npub fn is_typedarray(ctx: CallContext) -> Result<JsBoolean> {\n  let js_value = ctx.get::<Unknown>(0)?;\n  ctx.env.get_boolean(js_value.is_typedarray()?)\n}\n\n#[js_function(1)]\npub fn is_dataview(ctx: CallContext) -> Result<JsBoolean> {\n  let js_value = ctx.get::<Unknown>(0)?;\n  ctx.env.get_boolean(js_value.is_dataview()?)\n}\n\n#[js_function(2)]\npub fn strict_equals(ctx: CallContext) -> Result<JsBoolean> {\n  let a: Unknown = ctx.get(0)?;\n  let b: Unknown = ctx.get(1)?;\n  ctx.env.get_boolean(ctx.env.strict_equals(a, b)?)\n}\n\n#[js_function(1)]\npub fn cast_unknown(ctx: CallContext) -> Result<JsObject> {\n  let arg: Unknown = ctx.get(0)?;\n  Ok(unsafe { arg.cast::<JsObject>()? })\n}\n\n#[contextless_function]\nfn get_env_variable(env: Env) -> ContextlessResult<JsString<'static>> {\n  env\n    .create_string_from_std(std::env::var(\"npm_package_name\").unwrap())\n    .map(Some)\n}\n\n#[js_function(1)]\npub fn throw_syntax_error(ctx: CallContext) -> Result<()> {\n  let message: JsString = ctx.get(0)?;\n  let syntax_error = ctx\n    .env\n    .get_global()?\n    .get_named_property::<Function<JsString>>(\"SyntaxError\")?;\n  ctx.env.throw(syntax_error.new_instance(message)?)?;\n  Ok(())\n}\n\n#[js_function(1)]\nfn coerce_to_bool(ctx: CallContext) -> Result<bool> {\n  let arg: Unknown = ctx.get(0)?;\n  arg.coerce_to_bool()\n}\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"instanceof\", instanceof)?;\n  exports.create_named_method(\"isTypedarray\", is_typedarray)?;\n  exports.create_named_method(\"isDataview\", is_dataview)?;\n  exports.create_named_method(\"strictEquals\", strict_equals)?;\n  exports.create_named_method(\"castUnknown\", cast_unknown)?;\n  exports.create_named_method(\"getEnvVariable\", get_env_variable)?;\n  exports.create_named_method(\"throwSyntaxError\", throw_syntax_error)?;\n  exports.create_named_method(\"coerceToBool\", coerce_to_bool)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/error.rs",
    "content": "use napi::{CallContext, Error, JsBoolean, JsObject, JsString, JsValue, Result, Status, Unknown};\n\n#[js_function]\nfn test_throw(_ctx: CallContext) -> Result<Unknown> {\n  Err(Error::from_status(Status::GenericFailure))\n}\n\n#[js_function(1)]\nfn test_throw_with_reason(ctx: CallContext) -> Result<Unknown> {\n  let reason = ctx.get::<JsString>(0)?;\n  Err(Error::new(\n    Status::GenericFailure,\n    reason.into_utf8()?.into_owned()?,\n  ))\n}\n\n#[js_function]\npub fn test_throw_with_panic(_ctx: CallContext) -> Result<Unknown> {\n  panic!(\"don't panic.\");\n}\n\n#[js_function(1)]\npub fn is_error(ctx: CallContext) -> Result<JsBoolean> {\n  let js_value = ctx.get::<Unknown>(0)?;\n  ctx.env.get_boolean(js_value.is_error()?)\n}\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"testThrow\", test_throw)?;\n  exports.create_named_method(\"testThrowWithReason\", test_throw_with_reason)?;\n  exports.create_named_method(\"isError\", is_error)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/external.rs",
    "content": "use std::convert::TryInto;\n\nuse napi::{bindgen_prelude::External, CallContext, JsNumber, JsObject, Result};\n\nstruct NativeObject {\n  count: i32,\n}\n\n#[js_function(1)]\npub fn create_external(ctx: CallContext) -> Result<External<NativeObject>> {\n  let count = ctx.get::<JsNumber>(0)?.try_into()?;\n  let native = NativeObject { count };\n  Ok(External::new(native))\n}\n\n#[js_function(1)]\npub fn create_external_with_hint(ctx: CallContext) -> Result<External<NativeObject>> {\n  let count = ctx.get::<JsNumber>(0)?.try_into()?;\n  let native = NativeObject { count };\n  Ok(External::new_with_size_hint(native, 5))\n}\n\n#[js_function(1)]\npub fn get_external_count(ctx: CallContext) -> Result<JsNumber> {\n  let attached_obj = ctx.get::<&External<NativeObject>>(0)?;\n  ctx.env.create_int32(attached_obj.count)\n}\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"createExternal\", create_external)?;\n  exports.create_named_method(\"createExternalWithHint\", create_external_with_hint)?;\n  exports.create_named_method(\"getExternalCount\", get_external_count)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/function.rs",
    "content": "use napi::{\n  bindgen_prelude::{FnArgs, Function, Null},\n  CallContext, JsError, JsObject, JsString, JsValue, Result, Unknown,\n};\n\n#[js_function(1)]\npub fn call_function(ctx: CallContext) -> Result<Null> {\n  let js_func = ctx.get::<Function<FnArgs<(Unknown, Unknown)>>>(0)?;\n  let js_string_hello = ctx.env.create_string(\"hello\")?.to_unknown();\n  let js_string_world = ctx.env.create_string(\"world\")?.to_unknown();\n\n  js_func.call((js_string_hello, js_string_world).into())?;\n\n  Ok(Null)\n}\n\n#[js_function(1)]\npub fn call_function_with_ref_arguments(ctx: CallContext) -> Result<Null> {\n  let js_func = ctx.get::<Function<FnArgs<(JsString, JsString)>>>(0)?;\n  let js_string_hello = ctx.env.create_string(\"hello\")?;\n  let js_string_world = ctx.env.create_string(\"world\")?;\n\n  js_func.call((js_string_hello, js_string_world).into())?;\n\n  Ok(Null)\n}\n\n#[js_function(1)]\npub fn call_function_with_this(ctx: CallContext) -> Result<Null> {\n  let js_this: JsObject = ctx.this_unchecked();\n  let js_func = ctx.get::<Function<()>>(0)?;\n\n  js_func.apply(js_this, ())?;\n\n  Ok(Null)\n}\n\n#[js_function(2)]\npub fn call_function_error(ctx: CallContext) -> Result<Unknown> {\n  let js_func = ctx.get::<Function<()>>(0)?;\n  let error_func = ctx.get::<Function>(1)?;\n\n  match js_func.call(()) {\n    Ok(v) => Ok(v),\n    Err(e) => error_func.call(JsError::from(e).into_unknown(*ctx.env)),\n  }\n}\n\n#[js_function(0)]\npub fn test_create_function_from_closure(ctx: CallContext) -> Result<Function<u32, String>> {\n  ctx\n    .env\n    .create_function_from_closure(\"functionFromClosure\", move |ctx| {\n      if ctx.length() != 0 {\n        let args = ctx.arguments::<u32>()?;\n        let max = args.last().unwrap();\n        assert_eq!(*max, ctx.length() as u32 - 1);\n      }\n      Ok(format!(\"arguments length: {}\", ctx.length()))\n    })\n}\n\n#[js_function(0)]\npub fn test_nest_create_function_from_closure(ctx: CallContext) -> Result<Function<(), ()>> {\n  ctx\n    .env\n    .create_function_from_closure(\"functionFromClosure\", move |ctx| {\n      let obj = ctx.first_arg::<JsObject>()?;\n      let nest_func: Function<'_, (), ()> =\n        ctx\n          .env\n          .create_function_from_closure(\"nestFunctionFromClosure\", move |_ctx| {\n            println!(\"nest function\");\n            Ok(())\n          })?;\n\n      let on_handle =\n        obj.get_named_property::<Function<FnArgs<(String, Function<(), ()>)>, ()>>(\"on\")?;\n      let handle_name = String::from(\"on\");\n      on_handle.call((handle_name, nest_func).into())?;\n      Ok(())\n    })\n}\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"testCallFunction\", call_function)?;\n  exports.create_named_method(\n    \"testCallFunctionWithRefArguments\",\n    call_function_with_ref_arguments,\n  )?;\n  exports.create_named_method(\"testCallFunctionWithThis\", call_function_with_this)?;\n  exports.create_named_method(\"testCallFunctionError\", call_function_error)?;\n  exports.create_named_method(\n    \"testCreateFunctionFromClosure\",\n    test_create_function_from_closure,\n  )?;\n  exports.create_named_method(\n    \"testNestCreateFunctionFromClosure\",\n    test_nest_create_function_from_closure,\n  )?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/global.rs",
    "content": "use std::convert::TryInto;\n\nuse napi::{CallContext, JsNumber, JsObject, JsTimeout, Result};\n\n#[js_function(2)]\npub fn set_timeout(ctx: CallContext) -> Result<JsTimeout> {\n  let handler = ctx.get(0)?;\n  let timeout: JsNumber = ctx.get(1)?;\n  ctx\n    .env\n    .get_global()?\n    .set_timeout(handler, timeout.try_into()?)\n}\n\n#[js_function(1)]\npub fn clear_timeout(ctx: CallContext) -> Result<()> {\n  let timer: JsTimeout = ctx.get(0)?;\n  ctx.env.get_global()?.clear_timeout(timer)\n}\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"setTimeout\", set_timeout)?;\n  exports.create_named_method(\"clearTimeout\", clear_timeout)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/lib.rs",
    "content": "#![allow(unused_variables)]\n#![allow(clippy::uninlined_format_args)]\n#![allow(clippy::zero_repeat_side_effects)]\n#![allow(deprecated)]\n\n#[macro_use]\nextern crate napi_derive;\n#[macro_use]\nextern crate serde_derive;\n\nuse napi::{Env, JsObject, Result};\n\nmod cleanup_env;\n#[cfg(feature = \"latest\")]\nmod napi4;\n#[cfg(feature = \"latest\")]\nmod napi5;\n#[cfg(feature = \"latest\")]\nmod napi6;\n#[cfg(feature = \"latest\")]\nmod napi7;\n#[cfg(feature = \"latest\")]\nmod napi8;\n#[cfg(feature = \"latest\")]\nmod tokio_rt;\n\nmod array;\nmod arraybuffer;\nmod buffer;\nmod class;\nmod either;\nmod env;\nmod error;\nmod external;\nmod function;\nmod global;\nmod napi_version;\nmod object;\nmod serde;\nmod string;\nmod symbol;\n\nuse napi_version::get_napi_version;\n\n#[module_exports]\nfn init(mut exports: JsObject, env: Env) -> Result<()> {\n  exports.create_named_method(\"getNapiVersion\", get_napi_version)?;\n  array::register_js(&mut exports)?;\n  error::register_js(&mut exports)?;\n  string::register_js(&mut exports)?;\n  serde::register_js(&mut exports)?;\n  external::register_js(&mut exports)?;\n  arraybuffer::register_js(&mut exports)?;\n  buffer::register_js(&mut exports)?;\n  either::register_js(&mut exports)?;\n  symbol::register_js(&mut exports)?;\n  function::register_js(&mut exports)?;\n  class::register_js(&mut exports)?;\n  env::register_js(&mut exports)?;\n  object::register_js(&mut exports)?;\n  global::register_js(&mut exports)?;\n  cleanup_env::register_js(&mut exports)?;\n  #[cfg(feature = \"latest\")]\n  napi4::register_js(&mut exports, &env)?;\n  #[cfg(feature = \"latest\")]\n  tokio_rt::register_js(&mut exports)?;\n  #[cfg(feature = \"latest\")]\n  napi5::register_js(&mut exports)?;\n  #[cfg(feature = \"latest\")]\n  napi6::register_js(&mut exports)?;\n  #[cfg(feature = \"latest\")]\n  napi7::register_js(&mut exports)?;\n  #[cfg(feature = \"latest\")]\n  napi8::register_js(&mut exports)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/napi4/deferred.rs",
    "content": "use std::thread;\n\nuse napi::{bindgen_prelude::Object, CallContext, Error, Result};\n\n#[js_function(1)]\npub fn test_deferred(ctx: CallContext) -> Result<Object> {\n  let reject: bool = ctx.get(0)?;\n  let (deferred, promise) = ctx.env.create_deferred()?;\n\n  thread::spawn(move || {\n    thread::sleep(std::time::Duration::from_millis(10));\n    if reject {\n      deferred.reject(Error::from_reason(\"Fail\"));\n    } else {\n      deferred.resolve(|_| Ok(15));\n    }\n  });\n\n  Ok(promise)\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/napi4/mod.rs",
    "content": "use napi::{bindgen_prelude::Unknown, Env, JsObject, Property, Result};\n\nmod deferred;\nmod tsfn;\nmod tsfn_dua_instance;\n\nuse tsfn::*;\nuse tsfn_dua_instance::*;\n\npub fn register_js(exports: &mut JsObject, env: &Env) -> Result<()> {\n  exports.create_named_method(\"testThreadsafeFunction\", test_threadsafe_function)?;\n  exports.create_named_method(\"testTsfnError\", test_tsfn_error)?;\n  exports.create_named_method(\"testTokioReadfile\", test_tokio_readfile)?;\n  exports.create_named_method(\"testTsfnWithRef\", test_tsfn_with_ref)?;\n  exports.create_named_method(\"testDeferred\", deferred::test_deferred)?;\n\n  let obj = env.define_class::<Unknown>(\n    \"A\",\n    constructor,\n    &[Property::new().with_utf8_name(\"call\")?.with_method(call)],\n  )?;\n\n  exports.set_named_property(\"A\", obj)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/napi4/tsfn.rs",
    "content": "use std::path::Path;\nuse std::sync::Arc;\nuse std::thread;\n\nuse napi::{\n  bindgen_prelude::{BufferSlice, Function, Object},\n  threadsafe_function::ThreadsafeFunctionCallMode,\n  CallContext, Error, JsString, Ref, Result, Status,\n};\n\n#[js_function(1)]\npub fn test_threadsafe_function(ctx: CallContext) -> Result<()> {\n  let func = ctx.get::<Function<Vec<u32>>>(0)?;\n\n  let tsfn = Arc::new(\n    func\n      .build_threadsafe_function()\n      .callee_handled::<true>()\n      .build()?,\n  );\n\n  let tsfn_cloned = tsfn.clone();\n\n  thread::spawn(move || {\n    let output: Vec<u32> = vec![0, 1, 2, 3];\n    // It's okay to call a threadsafe function multiple times.\n    tsfn.call(Ok(output), ThreadsafeFunctionCallMode::Blocking);\n  });\n\n  thread::spawn(move || {\n    let output: Vec<u32> = vec![3, 2, 1, 0];\n    // It's okay to call a threadsafe function multiple times.\n    tsfn_cloned.call(Ok(output), ThreadsafeFunctionCallMode::NonBlocking);\n  });\n\n  Ok(())\n}\n\n#[js_function(1)]\npub fn test_tsfn_error(ctx: CallContext) -> Result<()> {\n  let func = ctx.get::<Function<Option<Error>>>(0)?;\n  let tsfn = Arc::new(\n    func\n      .build_threadsafe_function()\n      .callee_handled::<true>()\n      .build()?,\n  );\n  thread::spawn(move || {\n    tsfn.call(\n      Err(Error::new(Status::GenericFailure, \"invalid\".to_owned())),\n      ThreadsafeFunctionCallMode::Blocking,\n    );\n  });\n\n  Ok(())\n}\n\nasync fn read_file_content(filepath: &Path) -> Result<Vec<u8>> {\n  tokio::fs::read(filepath)\n    .await\n    .map_err(|e| Error::new(Status::GenericFailure, format!(\"{}\", e)))\n}\n\n#[js_function(2)]\npub fn test_tokio_readfile(ctx: CallContext) -> Result<()> {\n  let js_filepath = ctx.get::<JsString>(0)?;\n  let js_func = ctx.get::<Function<Vec<u8>>>(1)?;\n  let path_str = js_filepath.into_utf8()?.into_owned()?;\n\n  let tsfn = js_func\n    .build_threadsafe_function()\n    .callee_handled::<true>()\n    .build_callback(move |ctx| BufferSlice::from_data(&ctx.env, ctx.value))?;\n  let rt = tokio::runtime::Runtime::new()\n    .map_err(|e| Error::from_reason(format!(\"Create tokio runtime failed {}\", e)))?;\n\n  rt.block_on(async move {\n    let ret = read_file_content(Path::new(&path_str)).await;\n    tsfn.call(ret, ThreadsafeFunctionCallMode::Blocking);\n  });\n\n  Ok(())\n}\n\n#[js_function(3)]\npub fn test_tsfn_with_ref(ctx: CallContext) -> Result<()> {\n  let callback: Function<Ref<Object>, napi::Unknown> = ctx.get(0)?;\n  let options = ctx.get::<Object>(1)?;\n  let option_ref = Ref::new(ctx.env, &options);\n  let tsfn = callback\n    .build_threadsafe_function::<Ref<Object>>()\n    .callee_handled::<true>()\n    .build_callback(move |mut ctx| {\n      ctx\n        .env\n        .get_reference_value_unchecked::<Object>(&ctx.value)\n        .and_then(|obj| ctx.value.unref(&ctx.env).map(|_| obj))\n    })?;\n\n  thread::spawn(move || {\n    tsfn.call(option_ref, ThreadsafeFunctionCallMode::Blocking);\n  });\n\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/napi4/tsfn_dua_instance.rs",
    "content": "use std::sync::Arc;\n\nuse napi::{\n  bindgen_prelude::Function, threadsafe_function::ThreadsafeFunction, CallContext, JsObject, Status,\n};\nuse napi_derive::js_function;\n\n#[derive(Clone)]\npub struct A {\n  pub cb: Arc<ThreadsafeFunction<String, napi::Unknown<'static>, String, Status, false, true>>,\n}\n\n#[js_function(1)]\npub fn constructor(ctx: CallContext) -> napi::Result<()> {\n  let callback = ctx.get::<Function<String>>(0)?;\n\n  let cb: Arc<ThreadsafeFunction<String, napi::Unknown, String, Status, false, true>> = Arc::new(\n    callback\n      .build_threadsafe_function()\n      .weak::<true>()\n      .build()?,\n  );\n\n  let mut this: JsObject = ctx.this_unchecked();\n  let obj = A { cb };\n\n  ctx.env.wrap(&mut this, obj, None)?;\n  Ok(())\n}\n\n#[js_function]\npub fn call(ctx: CallContext) -> napi::Result<()> {\n  let this = ctx.this_unchecked();\n  let obj = ctx.env.unwrap::<A>(&this)?;\n  obj.cb.call(\n    \"ThreadsafeFunction NonBlocking Call\".to_owned(),\n    napi::threadsafe_function::ThreadsafeFunctionCallMode::NonBlocking,\n  );\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/napi5/date.rs",
    "content": "use std::convert::TryInto;\n\nuse napi::{CallContext, JsDate, JsNumber, JsValue, Result, Unknown};\n\n#[js_function(1)]\npub fn test_object_is_date(ctx: CallContext) -> Result<bool> {\n  let obj = ctx.get::<Unknown>(0)?;\n  obj.is_date()\n}\n\n#[js_function(1)]\npub fn test_create_date(ctx: CallContext) -> Result<JsDate> {\n  let timestamp: f64 = ctx.get::<JsNumber>(0)?.try_into()?;\n  ctx.env.create_date(timestamp)\n}\n\n#[js_function(1)]\npub fn test_get_date_value(ctx: CallContext) -> Result<JsNumber> {\n  let date = ctx.get::<JsDate>(0)?;\n  ctx.env.create_double(date.value_of()?)\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/napi5/mod.rs",
    "content": "use napi::{JsObject, Result};\n\nmod date;\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"testObjectIsDate\", date::test_object_is_date)?;\n  exports.create_named_method(\"testCreateDate\", date::test_create_date)?;\n  exports.create_named_method(\"testGetDateValue\", date::test_get_date_value)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/napi6/bigint.rs",
    "content": "use napi::{CallContext, JsBigInt, JsNumber, JsObject, Result};\nuse std::convert::TryFrom;\n\n#[js_function]\npub fn test_create_bigint_from_i64(ctx: CallContext) -> Result<JsBigInt> {\n  ctx.env.create_bigint_from_i64(i64::MAX)\n}\n\n#[js_function]\npub fn test_create_bigint_from_min_i64(ctx: CallContext) -> Result<JsBigInt> {\n  ctx.env.create_bigint_from_i64(i64::MIN)\n}\n\n#[js_function]\npub fn test_create_bigint_from_negative_i64(ctx: CallContext) -> Result<JsBigInt> {\n  ctx.env.create_bigint_from_i64(-10_i64)\n}\n\n#[js_function]\npub fn test_create_bigint_from_u64(ctx: CallContext) -> Result<JsBigInt> {\n  ctx.env.create_bigint_from_u64(u64::MAX)\n}\n\n#[js_function]\npub fn test_create_bigint_from_i128(ctx: CallContext) -> Result<JsBigInt> {\n  ctx.env.create_bigint_from_i128(i128::MAX)\n}\n\n#[js_function]\npub fn test_create_bigint_from_min_i128(ctx: CallContext) -> Result<JsBigInt> {\n  ctx.env.create_bigint_from_i128(i128::MIN)\n}\n\n#[js_function]\npub fn test_create_bigint_from_negative_i128(ctx: CallContext) -> Result<JsBigInt> {\n  ctx.env.create_bigint_from_i128(-10_i128)\n}\n\n#[js_function]\npub fn test_create_bigint_from_u128(ctx: CallContext) -> Result<JsBigInt> {\n  ctx.env.create_bigint_from_u128(u128::MAX)\n}\n\n#[js_function]\npub fn test_create_bigint_from_words(ctx: CallContext) -> Result<JsBigInt> {\n  ctx\n    .env\n    .create_bigint_from_words(true, vec![u64::MAX, u64::MAX])\n}\n\n#[js_function(1)]\npub fn test_get_bigint_i64(ctx: CallContext) -> Result<JsNumber> {\n  let js_bigint = ctx.get::<JsBigInt>(0)?;\n  let val = i64::try_from(js_bigint)?;\n  ctx.env.create_int32(val as i32)\n}\n\n#[js_function(1)]\npub fn test_get_bigint_u64(ctx: CallContext) -> Result<JsNumber> {\n  let js_bigint = ctx.get::<JsBigInt>(0)?;\n  let val = u64::try_from(js_bigint)?;\n  ctx.env.create_int32(val as i32)\n}\n\n#[js_function(0)]\npub fn test_get_bigint_words(ctx: CallContext) -> Result<JsObject> {\n  let mut js_bigint = ctx\n    .env\n    .create_bigint_from_words(true, vec![i64::MAX as u64, i64::MAX as u64])?;\n  let mut js_arr = ctx.env.create_array_with_length(2)?;\n  let (_signed, words) = js_bigint.get_words()?;\n  js_arr.set_element(0, ctx.env.create_bigint_from_u64(words[0])?)?;\n  js_arr.set_element(1, ctx.env.create_bigint_from_u64(words[1])?)?;\n  Ok(js_arr)\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/napi6/instance.rs",
    "content": "use napi::*;\n\nstruct NativeObject {\n  count: i64,\n}\n\n#[contextless_function]\npub fn set_instance_data(env: Env) -> ContextlessResult<()> {\n  env.set_instance_data(NativeObject { count: 1024 }, 0, |_ctx| {})?;\n  Ok(Some(()))\n}\n\n#[contextless_function]\npub fn get_instance_data(env: Env) -> ContextlessResult<i64> {\n  if let Some(obj) = env.get_instance_data::<NativeObject>()? {\n    Ok(Some(obj.count))\n  } else {\n    Ok(None)\n  }\n}\n\n#[contextless_function]\npub fn get_wrong_type_instance_data(env: Env) -> ContextlessResult<i64> {\n  if let Some(count) = env.get_instance_data::<i32>()? {\n    Ok(Some(*count as i64))\n  } else {\n    Ok(None)\n  }\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/napi6/mod.rs",
    "content": "use napi::{JsObject, Result};\n\nmod bigint;\nmod instance;\n\nuse bigint::*;\nuse instance::*;\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"testCreateBigintFromI64\", test_create_bigint_from_i64)?;\n  exports.create_named_method(\n    \"testCreateBigintFromMinI64\",\n    test_create_bigint_from_min_i64,\n  )?;\n  exports.create_named_method(\n    \"testCreateBigintFromNegativeI64\",\n    test_create_bigint_from_negative_i64,\n  )?;\n  exports.create_named_method(\"testCreateBigintFromU64\", test_create_bigint_from_u64)?;\n  exports.create_named_method(\"testCreateBigintFromI128\", test_create_bigint_from_i128)?;\n  exports.create_named_method(\n    \"testCreateBigintFromMinI128\",\n    test_create_bigint_from_min_i128,\n  )?;\n  exports.create_named_method(\n    \"testCreateBigintFromNegativeI128\",\n    test_create_bigint_from_negative_i128,\n  )?;\n  exports.create_named_method(\"testCreateBigintFromU128\", test_create_bigint_from_u128)?;\n  exports.create_named_method(\"testCreateBigintFromWords\", test_create_bigint_from_words)?;\n  exports.create_named_method(\"testGetBigintI64\", test_get_bigint_i64)?;\n  exports.create_named_method(\"testGetBigintU64\", test_get_bigint_u64)?;\n  exports.create_named_method(\"testGetBigintWords\", test_get_bigint_words)?;\n\n  exports.create_named_method(\"setInstanceData\", set_instance_data)?;\n  exports.create_named_method(\"getInstanceData\", get_instance_data)?;\n  exports.create_named_method(\"getWrongTypeInstanceData\", get_wrong_type_instance_data)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/napi7/buffer.rs",
    "content": "use napi::*;\n\n#[js_function(1)]\npub fn detach_arraybuffer(ctx: CallContext) -> Result<()> {\n  let input = ctx.get::<JsArrayBuffer>(0)?;\n  input.detach()?;\n  Ok(())\n}\n\n#[js_function(1)]\npub fn is_detach_arraybuffer(ctx: CallContext) -> Result<JsBoolean> {\n  let input = ctx.get::<JsArrayBuffer>(0)?;\n  ctx.env.get_boolean(input.is_detached()?)\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/napi7/mod.rs",
    "content": "use napi::{JsObject, Result};\n\nmod buffer;\n\nuse buffer::*;\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"testDetachArrayBuffer\", detach_arraybuffer)?;\n  exports.create_named_method(\"testIsDetachedArrayBuffer\", is_detach_arraybuffer)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/napi8/async_cleanup.rs",
    "content": "use napi::*;\n\n#[js_function]\npub fn add_removable_async_cleanup_hook(ctx: CallContext) -> Result<()> {\n  let cleanup_hook = ctx\n    .env\n    .add_removable_async_cleanup_hook(1u32, |_arg: u32| {\n      println!(\"Exit from sub process\");\n    })?;\n  cleanup_hook.forget();\n  Ok(())\n}\n\n#[js_function]\npub fn add_async_cleanup_hook(ctx: CallContext) -> Result<()> {\n  ctx.env.add_async_cleanup_hook(1u32, |_arg: u32| {\n    println!(\"Exit from sub process\");\n  })?;\n  Ok(())\n}\n\n#[js_function]\npub fn remove_async_cleanup_hook(ctx: CallContext) -> Result<()> {\n  ctx\n    .env\n    .add_removable_async_cleanup_hook(1u32, |_arg: u32| {\n      println!(\"Exit from sub process\");\n    })?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/napi8/mod.rs",
    "content": "use napi::{JsObject, Result};\n\nmod async_cleanup;\nmod object;\n\nuse async_cleanup::*;\nuse object::*;\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"testSealObject\", seal_object)?;\n  exports.create_named_method(\"testFreezeObject\", freeze_object)?;\n  exports.create_named_method(\n    \"testAddRemovableAsyncCleanupHook\",\n    add_removable_async_cleanup_hook,\n  )?;\n  exports.create_named_method(\"testRemoveAsyncCleanupHook\", remove_async_cleanup_hook)?;\n  exports.create_named_method(\"testAddAsyncCleanupHook\", add_async_cleanup_hook)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/napi8/object.rs",
    "content": "use napi::*;\n\n#[js_function(1)]\npub fn seal_object(ctx: CallContext) -> Result<()> {\n  let mut obj: JsObject = ctx.get(0)?;\n  obj.seal()?;\n  Ok(())\n}\n\n#[js_function(1)]\npub fn freeze_object(ctx: CallContext) -> Result<()> {\n  let mut obj: JsObject = ctx.get(0)?;\n  obj.freeze()?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/napi_version.rs",
    "content": "use napi::{CallContext, JsNumber, Result};\n\n#[js_function]\npub fn get_napi_version(ctx: CallContext) -> Result<JsNumber> {\n  ctx.env.create_uint32(ctx.env.get_napi_version()?)\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/object.rs",
    "content": "use std::convert::TryInto;\n\nuse napi::{CallContext, JsBoolean, JsNumber, JsObject, JsString, Property, Result, Unknown};\n\n#[js_function(2)]\nfn test_set_property(ctx: CallContext) -> Result<()> {\n  let mut obj = ctx.get::<JsObject>(0)?;\n  let key = ctx.get::<JsString>(1)?;\n  obj.set_property(key, ctx.env.create_string(\"Rust object property\")?)?;\n  Ok(())\n}\n\n#[js_function(2)]\nfn test_set_named_property(ctx: CallContext) -> Result<()> {\n  let mut obj = ctx.get::<JsObject>(0)?;\n  let property = ctx.get::<Unknown>(1)?;\n  obj.set_named_property(\"RustPropertyKey\", property)?;\n  Ok(())\n}\n\n#[js_function(1)]\nfn test_get_named_property(ctx: CallContext) -> Result<Unknown> {\n  let obj = ctx.get::<JsObject>(0)?;\n  obj.get_named_property(\"p\")\n}\n\n#[js_function(2)]\nfn test_has_named_property(ctx: CallContext) -> Result<JsBoolean> {\n  let obj = ctx.get::<JsObject>(0)?;\n  let key = ctx.get::<JsString>(1)?;\n  ctx\n    .env\n    .get_boolean(obj.has_named_property(key.into_utf8()?.as_str()?)?)\n}\n\n#[js_function(2)]\nfn test_has_own_property(ctx: CallContext) -> Result<JsBoolean> {\n  let obj = ctx.get::<JsObject>(0)?;\n  let key = ctx.get::<JsString>(1)?;\n  ctx\n    .env\n    .get_boolean(obj.has_own_property(key.into_utf8()?.as_str()?)?)\n}\n\n#[js_function(2)]\nfn test_has_own_property_js(ctx: CallContext) -> Result<JsBoolean> {\n  let obj = ctx.get::<JsObject>(0)?;\n  let key = ctx.get::<Unknown>(1)?;\n  ctx.env.get_boolean(obj.has_own_property_js(key)?)\n}\n\n#[js_function(2)]\nfn test_has_property(ctx: CallContext) -> Result<JsBoolean> {\n  let obj = ctx.get::<JsObject>(0)?;\n  let key = ctx.get::<JsString>(1)?;\n  ctx\n    .env\n    .get_boolean(obj.has_property(key.into_utf8()?.as_str()?)?)\n}\n\n#[js_function(2)]\nfn test_has_property_js(ctx: CallContext) -> Result<JsBoolean> {\n  let obj = ctx.get::<JsObject>(0)?;\n  let key = ctx.get::<Unknown>(1)?;\n  ctx.env.get_boolean(obj.has_property_js(key)?)\n}\n\n#[js_function(2)]\nfn test_delete_property(ctx: CallContext) -> Result<JsBoolean> {\n  let mut obj = ctx.get::<JsObject>(0)?;\n  let key = ctx.get::<Unknown>(1)?;\n  ctx.env.get_boolean(obj.delete_property(key)?)\n}\n\n#[js_function(2)]\nfn test_delete_named_property(ctx: CallContext) -> Result<JsBoolean> {\n  let mut obj = ctx.get::<JsObject>(0)?;\n  let key = ctx.get::<JsString>(1)?;\n  ctx\n    .env\n    .get_boolean(obj.delete_named_property(key.into_utf8()?.as_str()?)?)\n}\n\n#[js_function(2)]\nfn test_get_property(ctx: CallContext) -> Result<Unknown> {\n  let obj = ctx.get::<JsObject>(0)?;\n  let key = ctx.get::<Unknown>(1)?;\n  obj.get_property(key)\n}\n\n#[js_function(1)]\nfn test_get_property_names(ctx: CallContext) -> Result<JsObject> {\n  let obj = ctx.get::<JsObject>(0)?;\n  obj.get_property_names()\n}\n\n#[js_function(1)]\nfn test_get_prototype(ctx: CallContext) -> Result<JsObject> {\n  let obj = ctx.get::<JsObject>(0)?;\n  obj.get_prototype()\n}\n\n#[js_function(3)]\nfn test_set_element(ctx: CallContext) -> Result<()> {\n  let mut obj = ctx.get::<JsObject>(0)?;\n  let index = ctx.get::<JsNumber>(1)?;\n  let js_value = ctx.get::<Unknown>(2)?;\n  obj.set_element(index.try_into()?, js_value)?;\n  Ok(())\n}\n\n#[js_function(2)]\nfn test_has_element(ctx: CallContext) -> Result<JsBoolean> {\n  let obj = ctx.get::<JsObject>(0)?;\n  let index = ctx.get::<JsNumber>(1)?;\n  ctx.env.get_boolean(obj.has_element(index.try_into()?)?)\n}\n\n#[js_function(2)]\nfn test_get_element(ctx: CallContext) -> Result<Unknown> {\n  let obj = ctx.get::<JsObject>(0)?;\n  let index = ctx.get::<JsNumber>(1)?;\n  obj.get_element(index.try_into()?)\n}\n\n#[js_function(2)]\nfn test_delete_element(ctx: CallContext) -> Result<JsBoolean> {\n  let mut obj: JsObject = ctx.get(0)?;\n  let index = ctx.get::<JsNumber>(1)?;\n  ctx.env.get_boolean(obj.delete_element(index.try_into()?)?)\n}\n\n#[js_function(1)]\nfn test_define_properties(ctx: CallContext) -> Result<()> {\n  let mut obj = ctx.get::<JsObject>(0)?;\n  let add_method = Property::new().with_utf8_name(\"add\")?.with_method(add);\n  let readonly_property = Property::new()\n    .with_utf8_name(\"ro\")?\n    .with_getter(readonly_getter);\n  let properties = vec![add_method, readonly_property];\n  obj.define_properties(&properties)?;\n  obj.set_named_property(\"count\", ctx.env.create_int32(0)?)?;\n  Ok(())\n}\n\n#[js_function(1)]\nfn add(ctx: CallContext) -> Result<()> {\n  let mut this: JsObject = ctx.this_unchecked();\n  let count: i32 = this.get_named_property::<JsNumber>(\"count\")?.try_into()?;\n  let value_to_add: i32 = ctx.get::<JsNumber>(0)?.try_into()?;\n  this.set_named_property(\"count\", ctx.env.create_int32(count + value_to_add)?)?;\n  Ok(())\n}\n\n#[js_function]\nfn readonly_getter(ctx: CallContext) -> Result<JsString> {\n  ctx.env.create_string(\"readonly\")\n}\n\n#[js_function(1)]\nfn test_is_promise(ctx: CallContext) -> Result<JsBoolean> {\n  let obj = ctx.get::<JsObject>(0)?;\n  ctx.env.get_boolean(obj.is_promise()?)\n}\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"testSetProperty\", test_set_property)?;\n  exports.create_named_method(\"testGetProperty\", test_get_property)?;\n\n  exports.create_named_method(\"testSetNamedProperty\", test_set_named_property)?;\n  exports.create_named_method(\"testGetNamedProperty\", test_get_named_property)?;\n  exports.create_named_method(\"testHasNamedProperty\", test_has_named_property)?;\n\n  exports.create_named_method(\"testHasOwnProperty\", test_has_own_property)?;\n  exports.create_named_method(\"testHasOwnPropertyJs\", test_has_own_property_js)?;\n  exports.create_named_method(\"testHasProperty\", test_has_property)?;\n  exports.create_named_method(\"testHasPropertyJs\", test_has_property_js)?;\n  exports.create_named_method(\"testDeleteProperty\", test_delete_property)?;\n  exports.create_named_method(\"testDeleteNamedProperty\", test_delete_named_property)?;\n  exports.create_named_method(\"testGetPropertyNames\", test_get_property_names)?;\n  exports.create_named_method(\"testGetPrototype\", test_get_prototype)?;\n  exports.create_named_method(\"testSetElement\", test_set_element)?;\n  exports.create_named_method(\"testHasElement\", test_has_element)?;\n  exports.create_named_method(\"testGetElement\", test_get_element)?;\n  exports.create_named_method(\"testDeleteElement\", test_delete_element)?;\n  exports.create_named_method(\"testDefineProperties\", test_define_properties)?;\n\n  exports.create_named_method(\"testIsPromise\", test_is_promise)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/serde.rs",
    "content": "use napi::{bindgen_prelude::Object, CallContext, JsObject, JsString, Result, Unknown};\n\nuse serde_json::{from_str, to_string};\n\n#[derive(Serialize, Debug, Deserialize)]\nstruct AnObject {\n  a: u32,\n  b: Vec<f64>,\n  c: String,\n}\n\n#[derive(Serialize, Debug, Deserialize, Eq, PartialEq)]\nstruct Inner;\n\n#[derive(Serialize, Debug, Deserialize, Eq, PartialEq)]\nstruct Inner2(i32, bool, String);\n\n#[derive(Serialize, Debug, Deserialize, Eq, PartialEq)]\nenum TypeEnum {\n  Empty,\n  Tuple(u32, String),\n  Struct { a: u8, b: Vec<u8> },\n  Value(Vec<char>),\n}\n\n#[derive(Serialize, Debug, Deserialize, PartialEq)]\nstruct AnObjectTwo {\n  a: u32,\n  b: Vec<i64>,\n  c: String,\n  d: Option<bool>,\n  e: Option<bool>,\n  f: Inner,\n  g: Inner2,\n  h: char,\n  i: TypeEnum,\n  j: TypeEnum,\n  k: TypeEnum,\n  l: String,\n  m: Vec<u8>,\n  o: TypeEnum,\n  p: Vec<f64>,\n  q: u128,\n  r: i128,\n}\n\n#[derive(Serialize, Debug, Deserialize)]\nstruct BytesObject<'a> {\n  #[serde(with = \"serde_bytes\")]\n  code: &'a [u8],\n  map: String,\n}\n\nmacro_rules! make_test {\n  ($name:ident, $val:expr) => {\n    #[js_function]\n    fn $name(ctx: CallContext) -> Result<Unknown> {\n      let value = $val;\n      ctx.env.to_js_value(&value)\n    }\n  };\n}\n\nmake_test!(make_num_77, 77i32);\nmake_test!(make_num_32, 32u8);\nmake_test!(make_str_hello, \"Hello World\");\nmake_test!(make_num_array, vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);\nmake_test!(\n  make_obj,\n  AnObject {\n    a: 1,\n    b: vec![0.1f64, 1.1, 2.2, 3.3],\n    c: \"Hi\".into(),\n  }\n);\nmake_test!(make_map, {\n  use std::collections::HashMap;\n  let mut map = HashMap::new();\n  map.insert(\"a\", 1);\n  map.insert(\"b\", 2);\n  map.insert(\"c\", 3);\n  map\n});\n\nmake_test!(make_object, {\n  AnObjectTwo {\n    a: 1,\n    b: vec![1, 2],\n    c: \"abc\".into(),\n    d: Some(false),\n    e: None,\n    f: Inner,\n    g: Inner2(9, false, \"efg\".into()),\n    h: '🤷',\n    i: TypeEnum::Empty,\n    j: TypeEnum::Tuple(27, \"hij\".into()),\n    k: TypeEnum::Struct {\n      a: 128,\n      b: vec![9, 8, 7],\n    },\n    l: \"jkl\".into(),\n    m: vec![0, 1, 2, 3, 4],\n    o: TypeEnum::Value(vec!['z', 'y', 'x']),\n    p: vec![1., 2., 3.5],\n    q: 9998881288248882845242411222333,\n    r: -3332323888900001232323022221345,\n  }\n});\n\nconst NUMBER_BYTES: &[u8] = &[255u8, 254, 253];\n\nmake_test!(make_buff, { serde_bytes::Bytes::new(NUMBER_BYTES) });\n\nmake_test!(make_bytes_struct, {\n  BytesObject {\n    code: &[0, 1, 2, 3],\n    map: \"source map\".to_owned(),\n  }\n});\n\nmacro_rules! make_expect {\n  ($name:ident, $val:expr, $val_type:ty) => {\n    #[js_function(1)]\n    fn $name(ctx: CallContext) -> Result<()> {\n      let value = $val;\n      let arg0 = ctx.get::<Unknown>(0)?;\n\n      let de_serialized: $val_type = ctx.env.from_js_value(arg0)?;\n      assert_eq!(value, de_serialized);\n      Ok(())\n    }\n  };\n}\n\nmake_expect!(expect_hello_world, \"hello world\", String);\n\nmake_expect!(\n  expect_obj,\n  AnObjectTwo {\n    a: 1,\n    b: vec![1, 2],\n    c: \"abc\".into(),\n    d: Some(false),\n    e: None,\n    f: Inner,\n    g: Inner2(9, false, \"efg\".into()),\n    h: '🤷',\n    i: TypeEnum::Empty,\n    j: TypeEnum::Tuple(27, \"hij\".into()),\n    k: TypeEnum::Struct {\n      a: 128,\n      b: vec![9, 8, 7],\n    },\n    l: \"jkl\".into(),\n    m: vec![0, 1, 2, 3, 4],\n    o: TypeEnum::Value(vec!['z', 'y', 'x']),\n    p: vec![1., 2., 3.5],\n    q: 9998881288248882845242411222333,\n    r: -3332323888900001232323022221345,\n  },\n  AnObjectTwo\n);\n\nmake_expect!(expect_num_array, vec![0, 1, 2, 3], Vec<i32>);\n\nmake_expect!(\n  expect_buffer,\n  serde_bytes::ByteBuf::from(vec![252u8, 251, 250]),\n  serde_bytes::ByteBuf\n);\n\n#[js_function(1)]\nfn roundtrip_object(ctx: CallContext) -> Result<Unknown> {\n  let arg0 = ctx.get::<Object>(0)?;\n\n  let de_serialized: AnObjectTwo = ctx.env.from_js_value(arg0)?;\n  ctx.env.to_js_value(&de_serialized)\n}\n\n#[js_function(1)]\nfn from_json_string(ctx: CallContext) -> Result<Unknown> {\n  let arg0 = ctx.get::<JsString>(0)?.into_utf8()?;\n\n  let de_serialized: AnObject = from_str(arg0.as_str()?)?;\n  ctx.env.to_js_value(&de_serialized)\n}\n\n#[js_function(1)]\nfn json_to_string(ctx: CallContext) -> Result<JsString> {\n  let arg0 = ctx.get::<Object>(0)?;\n\n  let de_serialized: AnObject = ctx.env.from_js_value(arg0)?;\n  let json_string = to_string(&de_serialized)?;\n  ctx.env.create_string_from_std(json_string)\n}\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"make_num_77\", make_num_77)?;\n  exports.create_named_method(\"make_num_32\", make_num_32)?;\n  exports.create_named_method(\"make_str_hello\", make_str_hello)?;\n  exports.create_named_method(\"make_num_array\", make_num_array)?;\n  exports.create_named_method(\"make_buff\", make_buff)?;\n  exports.create_named_method(\"make_obj\", make_obj)?;\n  exports.create_named_method(\"make_object\", make_object)?;\n  exports.create_named_method(\"make_map\", make_map)?;\n  exports.create_named_method(\"make_bytes_struct\", make_bytes_struct)?;\n\n  exports.create_named_method(\"expect_hello_world\", expect_hello_world)?;\n  exports.create_named_method(\"expect_obj\", expect_obj)?;\n  exports.create_named_method(\"expect_num_array\", expect_num_array)?;\n  exports.create_named_method(\"expect_buffer\", expect_buffer)?;\n\n  exports.create_named_method(\"roundtrip_object\", roundtrip_object)?;\n  exports.create_named_method(\"from_json_string\", from_json_string)?;\n  exports.create_named_method(\"json_to_string\", json_to_string)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/string.rs",
    "content": "use napi::{CallContext, JsObject, JsString, Result};\n\n#[js_function(1)]\nfn concat_string(ctx: CallContext) -> Result<JsString> {\n  let in_string = ctx.get::<JsString>(0)?;\n  let out_string = format!(\"{} + Rust 🦀 string!\", in_string.into_utf8()?.as_str()?);\n  ctx.env.create_string_from_std(out_string)\n}\n\n#[js_function(1)]\nfn concat_utf16_string(ctx: CallContext) -> Result<JsString> {\n  let in_string = ctx.get::<JsString>(0)?;\n  let out_string = format!(\"{} + Rust 🦀 string!\", in_string.into_utf16()?.as_str()?);\n  ctx.env.create_string_from_std(out_string)\n}\n\n#[js_function(1)]\nfn concat_latin1_string(ctx: CallContext) -> Result<JsString> {\n  let in_string = ctx.get::<JsString>(0)?;\n  let out_string = format!(\n    \"{} + Rust 🦀 string!\",\n    in_string.into_latin1()?.into_latin1_string()?\n  );\n  ctx.env.create_string_from_std(out_string)\n}\n\n#[js_function]\nfn create_latin1(ctx: CallContext) -> Result<JsString> {\n  let bytes = vec![169, 191];\n  ctx.env.create_string_latin1(bytes.as_slice())\n}\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"concatString\", concat_string)?;\n  exports.create_named_method(\"concatUTF16String\", concat_utf16_string)?;\n  exports.create_named_method(\"concatLatin1String\", concat_latin1_string)?;\n  exports.create_named_method(\"createLatin1\", create_latin1)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/symbol.rs",
    "content": "use napi::{CallContext, JsObject, JsSymbol, Result};\n\n#[js_function]\npub fn create_named_symbol(ctx: CallContext) -> Result<JsSymbol> {\n  ctx.env.create_symbol(Some(\"native\"))\n}\n\n#[js_function]\npub fn create_unnamed_symbol(ctx: CallContext) -> Result<JsSymbol> {\n  ctx.env.create_symbol(None)\n}\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"createNamedSymbol\", create_named_symbol)?;\n  exports.create_named_method(\"createUnnamedSymbol\", create_unnamed_symbol)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/tokio_rt/mod.rs",
    "content": "use napi::{JsObject, Result};\n\nmod read_file;\n\nuse read_file::*;\n\npub fn register_js(exports: &mut JsObject) -> Result<()> {\n  exports.create_named_method(\"testExecuteTokioReadfile\", test_execute_tokio_readfile)?;\n  exports.create_named_method(\"testTokioError\", error_from_tokio_future)?;\n  Ok(())\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/src/tokio_rt/read_file.rs",
    "content": "use futures::prelude::*;\nuse napi::{CallContext, Error, JsObject, JsString, Result, Status};\n\n#[js_function(1)]\npub fn test_execute_tokio_readfile(ctx: CallContext) -> Result<JsObject> {\n  let js_filepath = ctx.get::<JsString>(0)?;\n  let path_str = js_filepath.into_utf8()?.into_owned()?;\n  ctx.env.execute_tokio_future(\n    tokio::fs::read(path_str).map(|v| {\n      v.map_err(|e| {\n        Error::new(\n          Status::GenericFailure,\n          format!(\"failed to read file, {}\", e),\n        )\n      })\n    }),\n    |&mut env, data| env.create_buffer_with_data(data).map(|v| v.into_raw()),\n  )\n}\n\n#[js_function(1)]\npub fn error_from_tokio_future(ctx: CallContext) -> Result<JsObject> {\n  let js_filepath = ctx.get::<JsString>(0)?;\n  let path_str = js_filepath.into_utf8()?.into_owned()?;\n  ctx.env.execute_tokio_future(\n    tokio::fs::read(path_str)\n      .map_err(Error::from)\n      .and_then(|_| async move {\n        Err::<Vec<u8>, Error>(Error::new(\n          Status::GenericFailure,\n          \"Error from tokio future\".to_owned(),\n        ))\n      }),\n    |&mut env, data| env.create_buffer_with_data(data).map(|v| v.into_raw()),\n  )\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.json\",\n  \"include\": [\".\"],\n  \"compilerOptions\": {\n    \"moduleResolution\": \"bundler\",\n    \"outDir\": \"./dist\",\n    \"rootDir\": \".\",\n    \"target\": \"ESNext\",\n    \"module\": \"ESNext\",\n    \"skipLibCheck\": true,\n    \"noEmit\": true,\n    \"importHelpers\": false,\n    \"noEmitHelpers\": false\n  },\n  \"exclude\": [\"dist\"]\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/wasi-worker-browser.mjs",
    "content": "import {\n  instantiateNapiModuleSync,\n  MessageHandler,\n  WASI,\n} from '@napi-rs/wasm-runtime'\n\nconst handler = new MessageHandler({\n  onLoad({ wasmModule, wasmMemory }) {\n    const wasi = new WASI({\n      print: function () {\n        // eslint-disable-next-line no-console\n        console.log.apply(console, arguments)\n      },\n      printErr: function () {\n        // eslint-disable-next-line no-console\n        console.error.apply(console, arguments)\n      },\n    })\n    return instantiateNapiModuleSync(wasmModule, {\n      childThread: true,\n      wasi,\n      overwriteImports(importObject) {\n        importObject.env = {\n          ...importObject.env,\n          ...importObject.napi,\n          ...importObject.emnapi,\n          memory: wasmMemory,\n        }\n      },\n    })\n  },\n})\n\nglobalThis.onmessage = function (e) {\n  handler.handle(e)\n}\n"
  },
  {
    "path": "examples/napi-compat-mode/wasi-worker.mjs",
    "content": "import fs from 'node:fs'\nimport { createRequire } from 'node:module'\nimport { parse } from 'node:path'\nimport { WASI } from 'node:wasi'\nimport { parentPort, Worker } from 'node:worker_threads'\n\nconst require = createRequire(import.meta.url)\n\nconst {\n  instantiateNapiModuleSync,\n  MessageHandler,\n  getDefaultContext,\n} = require('@napi-rs/wasm-runtime')\n\nif (parentPort) {\n  parentPort.on('message', (data) => {\n    globalThis.onmessage({ data })\n  })\n}\n\nObject.assign(globalThis, {\n  self: globalThis,\n  require,\n  Worker,\n  importScripts: function (f) {\n    ;(0, eval)(fs.readFileSync(f, 'utf8') + '//# sourceURL=' + f)\n  },\n  postMessage: function (msg) {\n    if (parentPort) {\n      parentPort.postMessage(msg)\n    }\n  },\n})\n\nconst emnapiContext = getDefaultContext()\n\nconst __rootDir = parse(process.cwd()).root\n\nconst handler = new MessageHandler({\n  onLoad({ wasmModule, wasmMemory }) {\n    const wasi = new WASI({\n      version: 'preview1',\n      env: process.env,\n      preopens: {\n        [__rootDir]: __rootDir,\n      },\n    })\n\n    return instantiateNapiModuleSync(wasmModule, {\n      childThread: true,\n      wasi,\n      context: emnapiContext,\n      overwriteImports(importObject) {\n        importObject.env = {\n          ...importObject.env,\n          ...importObject.napi,\n          ...importObject.emnapi,\n          memory: wasmMemory,\n        }\n      },\n    })\n  },\n})\n\nglobalThis.onmessage = function (e) {\n  handler.handle(e)\n}\n"
  },
  {
    "path": "examples/napi-shared/Cargo.toml",
    "content": "[package]\nauthors = [\"LongYinan <lynweklm@gmail.com>\"]\nedition = \"2021\"\nname = \"napi-shared\"\npublish = false\nversion = \"0.1.0\"\n\n[lib]\ncrate-type = [\"cdylib\", \"lib\"]\n\n[dependencies]\nnapi = { path = \"../../crates/napi\", default-features = false, features = [\n  \"napi8\",\n  \"serde-json\",\n  \"async\",\n  \"experimental\",\n  \"latin1\",\n  \"chrono_date\",\n] }\nnapi-derive = { path = \"../../crates/macro\", features = [\"type-def\"] }\n\n[build-dependencies]\nnapi-build = { path = \"../../crates/build\" }\n"
  },
  {
    "path": "examples/napi-shared/build.rs",
    "content": "fn main() {\n  napi_build::setup();\n}\n"
  },
  {
    "path": "examples/napi-shared/src/lib.rs",
    "content": "use napi::{bindgen_prelude::ClassInstance, Either};\nuse napi_derive::napi;\n\n#[napi(object)]\npub struct Shared {\n  pub value: u32,\n}\n\n// Test fixture for GitHub issue #2722: Complex struct with constructor and multiple methods\n#[napi]\npub struct ComplexClass {\n  pub value: String,\n  pub number: i32,\n}\n\nimpl From<(String, i32)> for ComplexClass {\n  fn from(value: (String, i32)) -> Self {\n    ComplexClass {\n      value: value.0,\n      number: value.1,\n    }\n  }\n}\n\nimpl<'env> From<Either<ClassInstance<'env, ComplexClass>, String>> for ComplexClass {\n  fn from(value: Either<ClassInstance<'env, ComplexClass>, String>) -> Self {\n    match value {\n      Either::A(instance) => ComplexClass {\n        value: (*instance).value.clone(),\n        number: instance.number,\n      },\n      Either::B(value) => ComplexClass { value, number: 0 },\n    }\n  }\n}\n\n#[napi]\nimpl ComplexClass {\n  #[napi(constructor)]\n  pub fn new(value: Either<String, ClassInstance<ComplexClass>>, number: i32) -> Self {\n    let value_str = match value {\n      Either::A(s) => s,\n      Either::B(instance) => format!(\"cloned:{}\", (*instance).value),\n    };\n    ComplexClass {\n      value: value_str,\n      number,\n    }\n  }\n\n  #[napi]\n  pub fn method_one(&self) -> String {\n    format!(\"method_one: {}\", self.value)\n  }\n\n  #[napi]\n  pub fn method_two(&self) -> i32 {\n    self.number * 2\n  }\n\n  #[napi]\n  pub fn method_three(&self) -> String {\n    format!(\"method_three: {} - {}\", self.value, self.number)\n  }\n\n  #[napi]\n  pub fn method_four(&self) -> bool {\n    self.number > 0\n  }\n\n  #[napi]\n  pub fn method_five(&self) -> String {\n    self.value.to_uppercase()\n  }\n}\n"
  },
  {
    "path": "lerna.json",
    "content": "{\n  \"version\": \"independent\",\n  \"message\": \"chore(release): publish\"\n}\n"
  },
  {
    "path": "memory-testing/Cargo.toml",
    "content": "[package]\nauthors = [\"LongYinan <lynweklm@gmail.com>\"]\nedition = \"2021\"\nname = \"memory-testing\"\npublish = false\nversion = \"0.1.0\"\n\n[lib]\ncrate-type = [\"cdylib\"]\n\n[dependencies]\nfutures = \"0.3\"\nnapi = { path = \"../crates/napi\", features = [\n  \"tokio_rt\",\n  \"serde-json\",\n  \"latin1\",\n  \"compat-mode\",\n] }\nnapi-derive = { path = \"../crates/macro\", default-features = false, features = [\n  \"compat-mode\",\n] }\nserde = \"1\"\nserde_bytes = \"0.11\"\nserde_derive = \"1\"\nserde_json = \"1\"\ntokio = { version = \"1\", features = [\"default\", \"fs\"] }\n\n[build-dependencies]\nnapi-build = { path = \"../crates/build\" }\n"
  },
  {
    "path": "memory-testing/buffer.mjs",
    "content": "import { createRequire } from 'module'\nimport { setTimeout } from 'timers/promises'\n\nimport { displayMemoryUsageFromNode } from './util.mjs'\n\nconst initialMemoryUsage = process.memoryUsage()\n\nconst require = createRequire(import.meta.url)\n\nconst api = require(`./index.node`)\n\nlet i = 1\nconst FIXTURE = Buffer.allocUnsafe(1000 * 1000 * 20)\n// eslint-disable-next-line no-constant-condition\nwhile (true) {\n  api.bufferLen()\n  api.arrayBufferLen()\n  api.bufferConvert(Buffer.from(FIXTURE))\n  api.arrayBufferConvert(Uint8Array.from(FIXTURE))\n  api.arrayBufferCreateFromVecWithSpareCapacity()\n  api.bufferPassThrough(Buffer.from(FIXTURE))\n  api.arrayBufferPassThrough(Uint8Array.from(FIXTURE))\n  if (i % 10 === 0) {\n    await setTimeout(1000)\n    global?.gc?.()\n    displayMemoryUsageFromNode(initialMemoryUsage)\n  }\n  i++\n}\n"
  },
  {
    "path": "memory-testing/build.rs",
    "content": "extern crate napi_build;\n\nfn main() {\n  napi_build::setup();\n}\n"
  },
  {
    "path": "memory-testing/index.mjs",
    "content": "import { createSuite } from './test-util.mjs'\n\nawait createSuite('reference')\nawait createSuite('tokio-future')\nawait createSuite('serde')\nawait createSuite('tsfn')\nawait createSuite('buffer')\nawait createSuite('returns-future')\n"
  },
  {
    "path": "memory-testing/package.json",
    "content": "{\n  \"name\": \"memory-testing\",\n  \"version\": \"1.0.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"build\": \"napi-raw build --release --no-js\"\n  },\n  \"dependencies\": {\n    \"colorette\": \"^2.0.20\",\n    \"dockerode\": \"^4.0.9\",\n    \"pretty-bytes\": \"^7.1.0\",\n    \"table\": \"^6.9.0\"\n  },\n  \"devDependencies\": {\n    \"@napi-rs/cli\": \"workspace:*\",\n    \"@types/dockerode\": \"^4.0.0\"\n  }\n}\n"
  },
  {
    "path": "memory-testing/reference.mjs",
    "content": "import { createRequire } from 'node:module'\n\nimport { displayMemoryUsageFromNode } from './util.mjs'\n\nconst initialMemoryUsage = process.memoryUsage()\n\nconst require = createRequire(import.meta.url)\n\nconst { MemoryHolder } = require(`./index.node`)\n\nconst sleep = () =>\n  new Promise((resolve) => {\n    setTimeout(() => {\n      resolve()\n    }, 1000)\n  })\n\nlet i = 1\n// eslint-disable-next-line no-constant-condition\nwhile (true) {\n  const holder = new MemoryHolder(1024 * 1024)\n  for (const _ of Array.from({ length: 100 })) {\n    const child = holder.createReference()\n    child.count()\n  }\n  if (i % 100 === 0) {\n    displayMemoryUsageFromNode(initialMemoryUsage)\n    await sleep()\n    global.gc()\n  }\n  i++\n}\n"
  },
  {
    "path": "memory-testing/returns-future.mjs",
    "content": "import { createRequire } from 'node:module'\n\nimport { displayMemoryUsageFromNode } from './util.mjs'\n\nconst initialMemoryUsage = process.memoryUsage()\n\nconst require = createRequire(import.meta.url)\n\nconst api = require(`./index.node`)\n\nasync function main() {\n  let i = 1\n  // eslint-disable-next-line no-constant-condition\n  while (true) {\n    await api.returnsFuture()\n    if (i % 100000 === 0) {\n      displayMemoryUsageFromNode(initialMemoryUsage)\n    }\n    i++\n  }\n}\n\nmain().catch((e) => {\n  console.error(e)\n  process.exit(1)\n})\n"
  },
  {
    "path": "memory-testing/serde.mjs",
    "content": "import { createRequire } from 'node:module'\n\nimport { displayMemoryUsageFromNode } from './util.mjs'\n\nconst initialMemoryUsage = process.memoryUsage()\n\nconst require = createRequire(import.meta.url)\n\nconst api = require(`./index.node`)\n\nconst data = {\n  id: 'ckovh15xa104945sj64rdk8oas',\n  name: '1883da9ff9152',\n  forename: '221c99bedc6a4',\n  description: '8bf86b62ce6a',\n  email: '9d57a869661cc',\n  phone: '7e0c58d147215',\n  arrivalDate: -92229669,\n  departureDate: 202138795,\n  price: -1592700387,\n  advance: -369294193,\n  advanceDueDate: 925000428,\n  kids: 520124290,\n  adults: 1160258464,\n  status: 'NO_PAYMENT',\n  nourishment: 'BB',\n  createdAt: '2021-05-19T12:58:37.246Z',\n  room: { id: 'ckovh15xa104955sj6r2tqaw1c', name: '38683b87f2664' },\n}\n\nlet i = 1\n// eslint-disable-next-line no-constant-condition\nwhile (true) {\n  api.fromJs(data)\n  if (i % 100000 === 0) {\n    displayMemoryUsageFromNode(initialMemoryUsage)\n  }\n  i++\n}\n"
  },
  {
    "path": "memory-testing/src/lib.rs",
    "content": "use std::thread::spawn;\n\nuse napi::{\n  bindgen_prelude::*,\n  threadsafe_function::{ThreadsafeCallContext, ThreadsafeFunctionCallMode},\n};\n\n#[macro_use]\nextern crate napi_derive;\n#[macro_use]\nextern crate serde_derive;\n\n#[derive(Serialize, Deserialize)]\npub struct Welcome {\n  id: String,\n  name: String,\n  forename: String,\n  description: String,\n  email: String,\n  phone: String,\n  #[serde(rename = \"arrivalDate\")]\n  arrival_date: i64,\n  #[serde(rename = \"departureDate\")]\n  departure_date: i64,\n  price: i64,\n  advance: i64,\n  #[serde(rename = \"advanceDueDate\")]\n  advance_due_date: i64,\n  kids: i64,\n  adults: i64,\n  status: String,\n  nourishment: String,\n  #[serde(rename = \"createdAt\")]\n  created_at: String,\n  room: Room,\n}\n\n#[derive(Serialize, Deserialize)]\npub struct Room {\n  id: String,\n  name: String,\n}\n\n#[napi]\npub fn test_async(env: &Env) -> napi::Result<napi::bindgen_prelude::PromiseRaw<'_, ()>> {\n  let data = serde_json::json!({\n      \"findFirstBooking\": {\n          \"id\": \"ckovh15xa104945sj64rdk8oas\",\n          \"name\": \"1883da9ff9152\",\n          \"forename\": \"221c99bedc6a4\",\n          \"description\": \"8bf86b62ce6a\",\n          \"email\": \"9d57a869661cc\",\n          \"phone\": \"7e0c58d147215\",\n          \"arrivalDate\": -92229669,\n          \"departureDate\": 202138795,\n          \"price\": -1592700387,\n          \"advance\": -369294193,\n          \"advanceDueDate\": 925000428,\n          \"kids\": 520124290,\n          \"adults\": 1160258464,\n          \"status\": \"NO_PAYMENT\",\n          \"nourishment\": \"BB\",\n          \"createdAt\": \"2021-05-19T12:58:37.246Z\",\n          \"room\": { \"id\": \"ckovh15xa104955sj6r2tqaw1c\", \"name\": \"38683b87f2664\" }\n      }\n  });\n  env.spawn_future_with_callback(\n    async move { Ok(serde_json::to_string(&data).unwrap()) },\n    |env, res| {\n      env.adjust_external_memory(res.len() as i64)?;\n      Ok(())\n    },\n  )\n}\n\n#[napi]\npub fn from_js(env: Env, input_object: Object) -> napi::Result<String> {\n  let a: Welcome = env.from_js_value(input_object)?;\n  Ok(serde_json::to_string(&a)?)\n}\n\npub struct ChildHolder {\n  inner: &'static MemoryHolder,\n}\n\nimpl ChildHolder {\n  fn count(&self) -> usize {\n    self.inner.0.len()\n  }\n}\n\n#[napi]\npub struct MemoryHolder(Vec<u8>);\n\n#[napi]\nimpl MemoryHolder {\n  #[napi(constructor)]\n  pub fn new(env: Env, len: u32) -> Result<Self> {\n    env.adjust_external_memory(len as i64)?;\n    Ok(Self(vec![42; len as usize]))\n  }\n\n  #[napi]\n  pub fn create_reference(\n    &self,\n    env: Env,\n    holder_ref: Reference<MemoryHolder>,\n  ) -> Result<ChildReference> {\n    let child_holder =\n      holder_ref.share_with(env, |holder_ref| Ok(ChildHolder { inner: holder_ref }))?;\n    Ok(ChildReference(child_holder))\n  }\n}\n\n#[napi]\npub struct ChildReference(SharedReference<MemoryHolder, ChildHolder>);\n\n#[napi]\nimpl ChildReference {\n  #[napi]\n  pub fn count(&self) -> u32 {\n    self.0.count() as u32\n  }\n}\n\n#[napi]\npub fn leaking_func(func: Function<String, String>) -> napi::Result<()> {\n  let tsfn = func\n    .build_threadsafe_function()\n    .weak::<true>()\n    .build_callback(|ctx: ThreadsafeCallContext<String>| {\n      ctx.env.adjust_external_memory(ctx.value.len() as i64)?;\n      Ok(ctx.value)\n    })?;\n\n  spawn(move || {\n    tsfn.call(\"foo\".into(), ThreadsafeFunctionCallMode::Blocking);\n  });\n\n  Ok(())\n}\n\n#[napi]\npub fn buffer_convert(buffer: Buffer) -> Buffer {\n  Buffer::from(vec![0; buffer.len()])\n}\n\n#[napi]\npub fn buffer_len() -> u32 {\n  Buffer::from(vec![0; 1024 * 10240]).len() as u32\n}\n\n#[napi]\npub fn array_buffer_convert(array_buffer: Uint8Array) -> Uint8Array {\n  Uint8Array::new(vec![1; array_buffer.len()])\n}\n\n#[napi]\npub fn array_buffer_create_from_vec_with_spare_capacity() -> Uint8Array {\n  let mut v = vec![1; 1024 * 10240];\n  v.truncate(1);\n  Uint8Array::new(v)\n}\n\n#[napi]\npub fn array_buffer_len() -> u32 {\n  Uint8Array::new(vec![1; 1024 * 10240]).len() as u32\n}\n\n#[napi]\npub fn buffer_pass_through(buffer: Buffer) -> Buffer {\n  buffer\n}\n\n#[napi]\npub fn array_buffer_pass_through(array_buffer: Uint8Array) -> Uint8Array {\n  array_buffer\n}\n\n#[napi]\npub async fn returns_future() {}\n"
  },
  {
    "path": "memory-testing/test-util.mjs",
    "content": "import { setTimeout } from 'node:timers/promises'\n\nimport * as colors from 'colorette'\nimport Dockerode from 'dockerode'\nimport prettyBytes from 'pretty-bytes'\n\nconst client = new Dockerode()\n\nexport async function createSuite(testFile, maxMemoryUsage = 256 * 1024 * 1024) {\n  console.info(colors.cyanBright(`Create container to test ${testFile}`))\n\n  const container = await client.createContainer({\n    Image: 'node:22-slim',\n    Cmd: ['/bin/bash', '-c', `node --expose-gc memory-testing/${testFile}.mjs`],\n    AttachStdout: true,\n    AttachStderr: true,\n    Tty: true,\n    WorkingDir: '/napi-rs',\n    Env: ['MAX_OLD_SPACE_SIZE=256', 'FORCE_COLOR=1'],\n    HostConfig: {\n      Binds: [`${process.cwd()}:/napi-rs:rw`],\n      Memory: 256 * 1024 * 1024,\n    },\n  })\n\n  console.info(colors.cyanBright('Container created, starting ...'))\n\n  await container.start()\n\n  container.attach(\n    { stream: true, stdout: true, stderr: true },\n    function (err, stream) {\n      if (err) {\n        console.error(err)\n        process.exit(1)\n      }\n      stream.pipe(process.stdout)\n    },\n  )\n\n  const stats = await container.stats()\n\n  let shouldAssertMemoryUsage = false\n  let initialMemoryUsage\n  await new Promise((resolve, reject) => {\n    const initialDate = Date.now()\n    stats.on('data', (d) => {\n      const { memory_stats } = JSON.parse(d.toString('utf8'))\n      if (Date.now() - initialDate > 10000 && !shouldAssertMemoryUsage) {\n        initialMemoryUsage = memory_stats.usage\n        shouldAssertMemoryUsage = true\n        resolve()\n      }\n      if (shouldAssertMemoryUsage && memory_stats?.usage) {\n        const memoryGrowth = memory_stats.usage - initialMemoryUsage\n        if (memoryGrowth > maxMemoryUsage) {\n          console.info(\n            colors.redBright(\n              `Potential memory leak, memory growth: ${prettyBytes(\n                memoryGrowth,\n              )}, test file: ${testFile}`,\n            ),\n          )\n          process.exit(1)\n        }\n      }\n    })\n    stats.on('error', reject)\n  })\n\n  console.info(\n    colors.red(`Initial memory usage: ${prettyBytes(initialMemoryUsage ?? 0)}`),\n  )\n\n  await setTimeout(60000)\n\n  try {\n    await container.stop()\n    await container.remove()\n  } catch (e) {\n    console.error(e)\n    process.exit(1)\n  }\n}\n"
  },
  {
    "path": "memory-testing/tokio-future.mjs",
    "content": "import { createRequire } from 'node:module'\n\nimport { displayMemoryUsageFromNode } from './util.mjs'\n\nconst initialMemoryUsage = process.memoryUsage()\n\nconst require = createRequire(import.meta.url)\n\nconst api = require(`./index.node`)\n\nasync function main() {\n  let i = 1\n  // eslint-disable-next-line no-constant-condition\n  while (true) {\n    await api.testAsync()\n    if (i % 100000 === 0) {\n      displayMemoryUsageFromNode(initialMemoryUsage)\n    }\n    i++\n  }\n}\n\nmain().catch((e) => {\n  console.error(e)\n  process.exit(1)\n})\n"
  },
  {
    "path": "memory-testing/tsconfig.json",
    "content": "{\n  \"extends\": \"../tsconfig.json\",\n  \"compilerOptions\": {\n    \"allowJs\": true,\n    \"outDir\": \"./dist\"\n  },\n  \"include\": [\"./*.mjs\"],\n  \"exclude\": [\"./dist\"]\n}\n"
  },
  {
    "path": "memory-testing/tsfn.mjs",
    "content": "import { createRequire } from 'node:module'\nimport { setTimeout } from 'node:timers/promises'\n\nimport { displayMemoryUsageFromNode } from './util.mjs'\n\nconst initialMemoryUsage = process.memoryUsage()\n\nconst require = createRequire(import.meta.url)\n\nconst api = require(`./index.node`)\n\nlet i = 1\n// eslint-disable-next-line no-constant-condition\nwhile (true) {\n  api.leakingFunc(() => {})\n  if (i % 100000 === 0) {\n    await setTimeout(100)\n    global.gc?.()\n    displayMemoryUsageFromNode(initialMemoryUsage)\n  }\n  i++\n}\n"
  },
  {
    "path": "memory-testing/util.mjs",
    "content": "import { whiteBright, red, green, gray } from 'colorette'\nimport prettyBytes from 'pretty-bytes'\nimport { table } from 'table'\n\nexport function displayMemoryUsageFromNode(initialMemoryUsage) {\n  const finalMemoryUsage = process.memoryUsage()\n  const titles = Object.keys(initialMemoryUsage).map((k) => whiteBright(k))\n  const tableData = [titles]\n  const diffColumn = []\n  for (const [key, value] of Object.entries(initialMemoryUsage)) {\n    const diff = finalMemoryUsage[key] - value\n    const prettyDiff = prettyBytes(diff, { signed: true })\n    if (diff > 0) {\n      diffColumn.push(red(prettyDiff))\n    } else if (diff < 0) {\n      diffColumn.push(green(prettyDiff))\n    } else {\n      diffColumn.push(gray(prettyDiff))\n    }\n  }\n  tableData.push(diffColumn)\n  console.info(table(tableData))\n}\n"
  },
  {
    "path": "oxlint.json",
    "content": "{\n  \"rules\": {\n    \"no-unused-vars\": \"warn\",\n    \"import/named\": \"allow\",\n    \"import/no-export\": \"allow\"\n  }\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"napi-rs\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"description\": \"A minimal library for building compiled Node add-ons in Rust.\",\n  \"workspaces\": [\n    \"bench\",\n    \"cli\",\n    \"wasm-runtime\",\n    \"triples\",\n    \"memory-testing\",\n    \"examples/napi\",\n    \"examples/napi-compat-mode\",\n    \"examples/binary\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git@github.com:napi-rs/napi-rs.git\"\n  },\n  \"license\": \"MIT\",\n  \"scripts\": {\n    \"bench\": \"yarn workspace bench bench\",\n    \"build\": \"lerna run build --scope '@napi-rs/*'\",\n    \"build:bench\": \"yarn workspace bench build\",\n    \"build:memory\": \"yarn workspace memory-testing build\",\n    \"build:test\": \"lerna run build --stream --concurrency 1 --scope=\\\"@examples/*\\\"\",\n    \"format\": \"run-p format:prettier format:rs format:toml\",\n    \"format:prettier\": \"prettier . -w\",\n    \"format:rs\": \"cargo fmt\",\n    \"format:toml\": \"taplo format\",\n    \"lint\": \"oxlint --import-plugin --ignore-path=./.oxlintignore --deny-warnings -c oxlint.json\",\n    \"test\": \"yarn workspaces foreach -j 1 -A --exclude \\\"{cli,napi-rs}\\\" run test\",\n    \"test:bun\": \"bun test examples/napi/__tests__/values.spec.ts\",\n    \"test:cli\": \"yarn workspace @napi-rs/cli test\",\n    \"test:electron\": \"electron examples/napi/electron.cjs\",\n    \"test:macro\": \"cargo test -p napi-examples\",\n    \"test:memory\": \"node memory-testing/index.mjs\",\n    \"postinstall\": \"husky install\",\n    \"prepare\": \"husky\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/napi-rs/napi-rs/issues\"\n  },\n  \"homepage\": \"https://github.com/napi-rs/napi-rs#readme\",\n  \"prettier\": {\n    \"printWidth\": 80,\n    \"semi\": false,\n    \"singleQuote\": true,\n    \"trailingComma\": \"all\",\n    \"arrowParens\": \"always\"\n  },\n  \"lint-staged\": {\n    \"*.@(js|ts)\": [\n      \"oxlint --import-plugin --ignore-path=./.oxlintignore --deny-warnings -D correctness --fix\"\n    ],\n    \"*.@(js||ts|json|md|yml|yaml)\": [\n      \"prettier --write\"\n    ],\n    \"*.toml\": [\n      \"taplo format\"\n    ],\n    \"*.rs\": [\n      \"cargo fmt --\"\n    ]\n  },\n  \"devDependencies\": {\n    \"@napi-rs/cli\": \"workspace:*\",\n    \"@oxc-node/core\": \"^0.0.35\",\n    \"@taplo/cli\": \"^0.7.0\",\n    \"@types/debug\": \"^4.1.12\",\n    \"@types/node\": \"^24.10.0\",\n    \"@types/sinon\": \"^21.0.0\",\n    \"ava\": \"^7.0.0\",\n    \"bun-types\": \"^1.3.2\",\n    \"c8\": \"^11.0.0\",\n    \"cross-env\": \"^10.1.0\",\n    \"electron\": \"^41.0.0\",\n    \"esbuild\": \"^0.27.0\",\n    \"husky\": \"^9.1.7\",\n    \"lerna\": \"^9.0.0\",\n    \"lint-staged\": \"^16.2.6\",\n    \"npm-run-all2\": \"^8.0.4\",\n    \"oxlint\": \"^1.26.0\",\n    \"prettier\": \"^3.6.2\",\n    \"rollup\": \"^4.53.1\",\n    \"shx\": \"^0.4.0\",\n    \"sinon\": \"^21.0.0\",\n    \"source-map-support\": \"^0.5.21\",\n    \"tslib\": \"^2.8.1\",\n    \"typescript\": \"^5.9.3\"\n  },\n  \"packageManager\": \"yarn@4.13.0\",\n  \"resolutions\": {\n    \"node-inspect-extracted\": \"patch:node-inspect-extracted@npm%3A3.0.0#~/.yarn/patches/node-inspect-extracted-npm-3.0.0-f661b6c334.patch\",\n    \"buffer@npm:^6.0.3\": \"patch:buffer@npm%3A6.0.3#~/.yarn/patches/buffer-npm-6.0.3-cd90dfedfe.patch\"\n  }\n}\n"
  },
  {
    "path": "rustfmt.toml",
    "content": "tab_spaces = 2\nedition = \"2021\"\n"
  },
  {
    "path": "triples/CHANGELOG.md",
    "content": "# Change Log\n\nAll notable changes to this project will be documented in this file.\nSee [Conventional Commits](https://conventionalcommits.org) for commit guidelines.\n\n## [2.1.6](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.1.5...@napi-rs/triples@2.1.6) (2025-12-30)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n## [2.1.5](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.1.4...@napi-rs/triples@2.1.5) (2025-12-02)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n## [2.1.4](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.1.3...@napi-rs/triples@2.1.4) (2025-10-24)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n## [2.1.3](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.1.2...@napi-rs/triples@2.1.3) (2025-10-23)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n## [2.1.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.1.1...@napi-rs/triples@2.1.2) (2025-10-10)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n## [2.1.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.1.0...@napi-rs/triples@2.1.1) (2025-10-03)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.1.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.9...@napi-rs/triples@2.1.0) (2025-09-11)\n\n### Features\n\n- **cli:** add support for loongarch64-unknown-linux-gnu ([#2887](https://github.com/napi-rs/napi-rs/issues/2887)) ([807f579](https://github.com/napi-rs/napi-rs/commit/807f5797960e80de6cc291d90f5fc34575e011fe))\n\n## [2.0.9](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.8...@napi-rs/triples@2.0.9) (2025-08-16)\n\n### Bug Fixes\n\n- **triples:** include index.cjs in package files for proper CJS support ([#2878](https://github.com/napi-rs/napi-rs/issues/2878)) ([b106ef2](https://github.com/napi-rs/napi-rs/commit/b106ef21ae9c52ad49c7065f175b4c866d51b523))\n\n## [2.0.8](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.7...@napi-rs/triples@2.0.8) (2025-08-13)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n## [2.0.7](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.6...@napi-rs/triples@2.0.7) (2025-08-10)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n## [2.0.6](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.5...@napi-rs/triples@2.0.6) (2025-08-08)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n## [2.0.5](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.4...@napi-rs/triples@2.0.5) (2025-08-08)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n## [2.0.4](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.3...@napi-rs/triples@2.0.4) (2025-08-07)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n## [2.0.3](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.2...@napi-rs/triples@2.0.3) (2025-07-24)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n## [2.0.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.1...@napi-rs/triples@2.0.2) (2025-07-23)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n## [2.0.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0...@napi-rs/triples@2.0.1) (2025-07-23)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.62](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.61...@napi-rs/triples@2.0.0-alpha.62) (2025-07-17)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.61](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.60...@napi-rs/triples@2.0.0-alpha.61) (2025-07-12)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.60](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.59...@napi-rs/triples@2.0.0-alpha.60) (2025-07-12)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.59](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.58...@napi-rs/triples@2.0.0-alpha.59) (2025-07-12)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.58](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.57...@napi-rs/triples@2.0.0-alpha.58) (2025-07-12)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.57](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.56...@napi-rs/triples@2.0.0-alpha.57) (2025-07-12)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.56](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.55...@napi-rs/triples@2.0.0-alpha.56) (2025-07-12)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.55](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.54...@napi-rs/triples@2.0.0-alpha.55) (2025-07-10)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.54](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.53...@napi-rs/triples@2.0.0-alpha.54) (2025-07-04)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.53](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.52...@napi-rs/triples@2.0.0-alpha.53) (2025-06-24)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.52](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.51...@napi-rs/triples@2.0.0-alpha.52) (2025-06-24)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.51](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.50...@napi-rs/triples@2.0.0-alpha.51) (2025-06-13)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.50](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.49...@napi-rs/triples@2.0.0-alpha.50) (2025-06-08)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.49](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.48...@napi-rs/triples@2.0.0-alpha.49) (2025-06-05)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.48](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.47...@napi-rs/triples@2.0.0-alpha.48) (2025-06-04)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.47](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.46...@napi-rs/triples@2.0.0-alpha.47) (2025-06-04)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.46](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.45...@napi-rs/triples@2.0.0-alpha.46) (2025-06-03)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.45](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.44...@napi-rs/triples@2.0.0-alpha.45) (2025-06-03)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.44](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.43...@napi-rs/triples@2.0.0-alpha.44) (2025-06-03)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.43](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.42...@napi-rs/triples@2.0.0-alpha.43) (2025-05-29)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.42](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.41...@napi-rs/triples@2.0.0-alpha.42) (2025-05-20)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.41](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.40...@napi-rs/triples@2.0.0-alpha.41) (2025-05-16)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.40](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.39...@napi-rs/triples@2.0.0-alpha.40) (2025-04-16)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.39](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.38...@napi-rs/triples@2.0.0-alpha.39) (2025-04-01)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.38](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.36...@napi-rs/triples@2.0.0-alpha.38) (2025-03-22)\n\n### Features\n\n- **napi:** tokio multi-thread mode on wasi ([#2501](https://github.com/napi-rs/napi-rs/issues/2501)) ([1fe6ad0](https://github.com/napi-rs/napi-rs/commit/1fe6ad0430545b6e37eba6ffd0e8337cbb467fbe))\n\n# [2.0.0-alpha.37](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.36...@napi-rs/triples@2.0.0-alpha.37) (2025-03-14)\n\n### Features\n\n- **napi:** tokio multi-thread mode on wasi ([#2501](https://github.com/napi-rs/napi-rs/issues/2501)) ([1fe6ad0](https://github.com/napi-rs/napi-rs/commit/1fe6ad0430545b6e37eba6ffd0e8337cbb467fbe))\n\n# [2.0.0-alpha.36](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.35...@napi-rs/triples@2.0.0-alpha.36) (2025-03-13)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.35](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.34...@napi-rs/triples@2.0.0-alpha.35) (2025-03-03)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.34](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.33...@napi-rs/triples@2.0.0-alpha.34) (2025-02-25)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.33](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.32...@napi-rs/triples@2.0.0-alpha.33) (2025-02-21)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.32](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.31...@napi-rs/triples@2.0.0-alpha.32) (2025-01-29)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.31](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.30...@napi-rs/triples@2.0.0-alpha.31) (2025-01-26)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.30](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.29...@napi-rs/triples@2.0.0-alpha.30) (2025-01-20)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.29](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.28...@napi-rs/triples@2.0.0-alpha.29) (2025-01-19)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.28](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.27...@napi-rs/triples@2.0.0-alpha.28) (2025-01-19)\n\n### Bug Fixes\n\n- **triples:** file style ([75eaff8](https://github.com/napi-rs/napi-rs/commit/75eaff85ae9760aaa0b888d1609e756c2d85b718))\n\n# [2.0.0-alpha.27](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.26...@napi-rs/triples@2.0.0-alpha.27) (2024-12-18)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.26](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.25...@napi-rs/triples@2.0.0-alpha.26) (2024-10-21)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.25](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.24...@napi-rs/triples@2.0.0-alpha.25) (2024-10-02)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.24](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.23...@napi-rs/triples@2.0.0-alpha.24) (2024-07-21)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.23](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.22...@napi-rs/triples@2.0.0-alpha.23) (2024-07-18)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.22](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.21...@napi-rs/triples@2.0.0-alpha.22) (2024-07-16)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.21](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.20...@napi-rs/triples@2.0.0-alpha.21) (2024-07-15)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.20](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.19...@napi-rs/triples@2.0.0-alpha.20) (2024-07-11)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.19](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.18...@napi-rs/triples@2.0.0-alpha.19) (2024-07-09)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.18](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.17...@napi-rs/triples@2.0.0-alpha.18) (2024-07-05)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.17](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.16...@napi-rs/triples@2.0.0-alpha.17) (2024-05-12)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.16](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.15...@napi-rs/triples@2.0.0-alpha.16) (2024-04-23)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.14](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.13...@napi-rs/triples@2.0.0-alpha.14) (2024-04-22)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.13](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.12...@napi-rs/triples@2.0.0-alpha.13) (2024-04-19)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.12](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.11...@napi-rs/triples@2.0.0-alpha.12) (2024-04-17)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.11](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.10...@napi-rs/triples@2.0.0-alpha.11) (2024-04-16)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.10](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.9...@napi-rs/triples@2.0.0-alpha.10) (2024-04-15)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.9](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.5...@napi-rs/triples@2.0.0-alpha.9) (2024-04-13)\n\n### Bug Fixes\n\n- **cli:** also load wasm file from packages ([#1876](https://github.com/napi-rs/napi-rs/issues/1876)) ([b0ba466](https://github.com/napi-rs/napi-rs/commit/b0ba466f9521b02eeb94b88aacad01558bfa12bc))\n\n### Features\n\n- **target:** add support for powerpc64le-unknown-linux-gnu ([#2023](https://github.com/napi-rs/napi-rs/issues/2023)) ([0fa755d](https://github.com/napi-rs/napi-rs/commit/0fa755d30ac5d7abb16dfa59b58d61deaaa7984c))\n\n# [2.0.0-alpha.8](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.5...@napi-rs/triples@2.0.0-alpha.8) (2024-04-10)\n\n### Bug Fixes\n\n- **cli:** also load wasm file from packages ([#1876](https://github.com/napi-rs/napi-rs/issues/1876)) ([b0ba466](https://github.com/napi-rs/napi-rs/commit/b0ba466f9521b02eeb94b88aacad01558bfa12bc))\n\n### Features\n\n- **target:** add support for powerpc64le-unknown-linux-gnu ([#2023](https://github.com/napi-rs/napi-rs/issues/2023)) ([0fa755d](https://github.com/napi-rs/napi-rs/commit/0fa755d30ac5d7abb16dfa59b58d61deaaa7984c))\n\n# [2.0.0-alpha.7](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.5...@napi-rs/triples@2.0.0-alpha.7) (2023-12-29)\n\n### Bug Fixes\n\n- **cli:** also load wasm file from packages ([#1876](https://github.com/napi-rs/napi-rs/issues/1876)) ([b0ba466](https://github.com/napi-rs/napi-rs/commit/b0ba466f9521b02eeb94b88aacad01558bfa12bc))\n\n# [2.0.0-alpha.6](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.5...@napi-rs/triples@2.0.0-alpha.6) (2023-12-07)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.5](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.4...@napi-rs/triples@2.0.0-alpha.5) (2023-11-20)\n\n**Note:** Version bump only for package @napi-rs/triples\n\n# [2.0.0-alpha.4](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.1...@napi-rs/triples@2.0.0-alpha.4) (2023-11-07)\n\n### Bug Fixes\n\n- **cli:** created template missing macOS testing ([#1659](https://github.com/napi-rs/napi-rs/issues/1659)) ([4e0c9b1](https://github.com/napi-rs/napi-rs/commit/4e0c9b14e449beb8aa6872b8b85db922535a3eca))\n\n### Features\n\n- integrate with emnapi ([#1669](https://github.com/napi-rs/napi-rs/issues/1669)) ([13d0ce0](https://github.com/napi-rs/napi-rs/commit/13d0ce075e8b10702d675db2f45a721eac0dd30d))\n- **target:** riscv64gc-unknown-linux-gnu ([72fcd03](https://github.com/napi-rs/napi-rs/commit/72fcd03d982e2926bcc623061bbf287e2990f1e1))\n\n# [2.0.0-alpha.3](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.1...@napi-rs/triples@2.0.0-alpha.3) (2023-07-18)\n\n### Bug Fixes\n\n- **cli:** created template missing macOS testing ([#1659](https://github.com/napi-rs/napi-rs/issues/1659)) ([4e0c9b1](https://github.com/napi-rs/napi-rs/commit/4e0c9b14e449beb8aa6872b8b85db922535a3eca))\n\n### Features\n\n- **target:** riscv64gc-unknown-linux-gnu ([72fcd03](https://github.com/napi-rs/napi-rs/commit/72fcd03d982e2926bcc623061bbf287e2990f1e1))\n\n# [2.0.0-alpha.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@2.0.0-alpha.0...@napi-rs/triples@2.0.0-alpha.1) (2023-04-06)\n\n### Bug Fixes\n\n- **triples:** wrong raw triple in some eabi targets ([7c9a4ba](https://github.com/napi-rs/napi-rs/commit/7c9a4bae2da98752dbf683b1d8c9add81f30a61e))\n\n# [2.0.0-alpha.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@1.1.0...@napi-rs/triples@2.0.0-alpha.0) (2023-04-06)\n\n### Features\n\n- **cli:** brand new cli tool with both cli and programmatical usage ([#1492](https://github.com/napi-rs/napi-rs/issues/1492)) ([a781a4f](https://github.com/napi-rs/napi-rs/commit/a781a4f27e19ffaf3e42a470a6d4a990c34c9e3b))\n\n### BREAKING CHANGES\n\n- **cli:** requires node >= 16 and some cli options have been renamed\n\n# [1.1.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/triples@1.0.3...@napi-rs/triples@1.1.0) (2021-12-02)\n\n### Features\n\n- **triples:** support android armv7 ([809350b](https://github.com/napi-rs/napi-rs/commit/809350b42ff4b3abca421c421a4049053d2e60cb))\n\n## 1.0.3 (2021-07-22)\n\n### Chore\n\n- Reduce publish size [0c3918d](https://github.com/napi-rs/napi-rs/commit/0c3918df24805c8e90cca26e6cbc2492cad23306)\n"
  },
  {
    "path": "triples/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2020 LongYinan\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "triples/README.md",
    "content": "# `@napi-rs/triples`\n\n[![install size](https://packagephobia.com/badge?p=@napi-rs/triples)](https://packagephobia.com/result?p=@napi-rs/triples)\n[![Downloads](https://img.shields.io/npm/dm/@napi-rs/triples.svg?sanitize=true)](https://npmcharts.com/compare/@napi-rs/triples?minimal=true)\n\n> Rust build triples definitions\n\n## Usage\n\n```js\nconst triples = require('@napi-rs/triples');\n\nconsole.log(triples)\n\n[\n  ...\n  'aarch64-apple-ios': {\n    platform: 'ios',\n    arch: 'arm64',\n    abi: null,\n    platformArchABI: 'ios-arm64',\n    raw: 'aarch64-apple-ios',\n  },\n  'aarch64-fuchsia': {\n    platform: 'fuchsia',\n    arch: 'arm64',\n    abi: null,\n    platformArchABI: 'fuchsia-arm64',\n    raw: 'aarch64-fuchsia',\n  },\n  'aarch64-linux-android': {\n    platform: 'android',\n    arch: 'arm64',\n    abi: null,\n    platformArchABI: 'android-arm64',\n    raw: 'aarch64-linux-android',\n  },\n  'aarch64-pc-windows-msvc': {\n    platform: 'win32',\n    arch: 'arm64',\n    abi: 'msvc',\n    platformArchABI: 'win32-arm64-msvc',\n    raw: 'aarch64-pc-windows-msvc',\n  },\n  'aarch64-unknown-linux-gnu': {\n    platform: 'linux',\n    arch: 'arm64',\n    abi: 'gnu',\n    platformArchABI: 'linux-arm64-gnu',\n    raw: 'aarch64-unknown-linux-gnu',\n  },\n  'aarch64-unknown-linux-musl': {\n    platform: 'linux',\n    arch: 'arm64',\n    abi: 'musl',\n    platformArchABI: 'linux-arm64-musl',\n    raw: 'aarch64-unknown-linux-musl',\n  },\n  'aarch64-unknown-none': {\n    platform: 'none',\n    arch: 'arm64',\n    abi: null,\n    platformArchABI: 'none-arm64',\n    raw: 'aarch64-unknown-none',\n  },\n  'aarch64-unknown-none-softfloat': {\n    platform: 'none',\n    arch: 'arm64',\n    abi: 'softfloat',\n    platformArchABI: 'none-arm64-softfloat',\n    raw: 'aarch64-unknown-none-softfloat',\n  }\n  ...\n]\n```\n"
  },
  {
    "path": "triples/generate-triple-list.ts",
    "content": "import { readFileSync, writeFileSync } from 'node:fs'\nimport { join, resolve } from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nimport { groupBy, mapValues } from 'es-toolkit'\n\nimport { parseTriple } from '@napi-rs/cli'\n\nconst __dirname = resolve(fileURLToPath(import.meta.url), '..')\n\nconst RAW_LIST = readFileSync(join(__dirname, 'target-list'), 'utf8')\n\nconst SUPPORTED_PLATFORM = new Set([\n  'darwin',\n  'ios',\n  'android',\n  'openharmony',\n  'win32',\n  'linux',\n  'freebsd',\n])\n\nconst tripleLists = RAW_LIST.trim()\n  .split('\\n')\n  .filter((line) => !line.startsWith('wasm') && line.trim().length > 0)\n  .map(parseTriple)\n  .reduce((acc: Record<string, { platform: string; arch: string }>, cur) => {\n    acc[cur.triple] = cur\n    return acc\n  }, {})\n\nconst platformArchTriples = mapValues(\n  groupBy(\n    Object.values(tripleLists).filter((k) =>\n      SUPPORTED_PLATFORM.has(k.platform),\n    ),\n    (x) => x.platform,\n  ),\n  (v) => groupBy(v, (v) => v.arch),\n)\n\nconst mjsContent = `\nexport const platformArchTriples = ${JSON.stringify(\n  platformArchTriples,\n  null,\n  2,\n)}\n`\nconst cjsContent = `\nmodule.exports.platformArchTriples = ${JSON.stringify(\n  platformArchTriples,\n  null,\n  2,\n)}\n`\n\nwriteFileSync(join(__dirname, 'index.js'), mjsContent)\n\nwriteFileSync(join(__dirname, 'index.cjs'), cjsContent)\n"
  },
  {
    "path": "triples/index.cjs",
    "content": "module.exports.platformArchTriples = {\n  darwin: {\n    arm64: [\n      {\n        triple: 'aarch64-apple-darwin',\n        platformArchABI: 'darwin-arm64',\n        platform: 'darwin',\n        arch: 'arm64',\n        abi: null,\n      },\n    ],\n    x64: [\n      {\n        triple: 'x86_64-apple-darwin',\n        platformArchABI: 'darwin-x64',\n        platform: 'darwin',\n        arch: 'x64',\n        abi: null,\n      },\n    ],\n  },\n  ios: {\n    arm64: [\n      {\n        triple: 'aarch64-apple-ios',\n        platformArchABI: 'ios-arm64',\n        platform: 'ios',\n        arch: 'arm64',\n        abi: null,\n      },\n      {\n        triple: 'aarch64-apple-ios-macabi',\n        platformArchABI: 'ios-arm64-macabi',\n        platform: 'ios',\n        arch: 'arm64',\n        abi: 'macabi',\n      },\n      {\n        triple: 'aarch64-apple-ios-sim',\n        platformArchABI: 'ios-arm64-sim',\n        platform: 'ios',\n        arch: 'arm64',\n        abi: 'sim',\n      },\n    ],\n    x64: [\n      {\n        triple: 'x86_64-apple-ios',\n        platformArchABI: 'ios-x64',\n        platform: 'ios',\n        arch: 'x64',\n        abi: null,\n      },\n      {\n        triple: 'x86_64-apple-ios-macabi',\n        platformArchABI: 'ios-x64-macabi',\n        platform: 'ios',\n        arch: 'x64',\n        abi: 'macabi',\n      },\n    ],\n  },\n  android: {\n    arm64: [\n      {\n        triple: 'aarch64-linux-android',\n        platformArchABI: 'android-arm64',\n        platform: 'android',\n        arch: 'arm64',\n        abi: null,\n      },\n    ],\n    arm: [\n      {\n        triple: 'arm-linux-androideabi',\n        platformArchABI: 'android-arm-eabi',\n        platform: 'android',\n        arch: 'arm',\n        abi: 'eabi',\n      },\n      {\n        triple: 'armv7-linux-androideabi',\n        platformArchABI: 'android-arm-eabi',\n        platform: 'android',\n        arch: 'arm',\n        abi: 'eabi',\n      },\n    ],\n    ia32: [\n      {\n        triple: 'i686-linux-android',\n        platformArchABI: 'android-ia32',\n        platform: 'android',\n        arch: 'ia32',\n        abi: null,\n      },\n    ],\n    thumbv7neon: [\n      {\n        triple: 'thumbv7neon-linux-androideabi',\n        platformArchABI: 'android-thumbv7neon-eabi',\n        platform: 'android',\n        arch: 'thumbv7neon',\n        abi: 'eabi',\n      },\n    ],\n    x64: [\n      {\n        triple: 'x86_64-linux-android',\n        platformArchABI: 'android-x64',\n        platform: 'android',\n        arch: 'x64',\n        abi: null,\n      },\n    ],\n  },\n  win32: {\n    arm64: [\n      {\n        triple: 'aarch64-pc-windows-gnullvm',\n        platformArchABI: 'win32-arm64-gnullvm',\n        platform: 'win32',\n        arch: 'arm64',\n        abi: 'gnullvm',\n      },\n      {\n        triple: 'aarch64-pc-windows-msvc',\n        platformArchABI: 'win32-arm64-msvc',\n        platform: 'win32',\n        arch: 'arm64',\n        abi: 'msvc',\n      },\n    ],\n    arm64ec: [\n      {\n        triple: 'arm64ec-pc-windows-msvc',\n        platformArchABI: 'win32-arm64ec-msvc',\n        platform: 'win32',\n        arch: 'arm64ec',\n        abi: 'msvc',\n      },\n    ],\n    ia32: [\n      {\n        triple: 'i686-pc-windows-gnu',\n        platformArchABI: 'win32-ia32-gnu',\n        platform: 'win32',\n        arch: 'ia32',\n        abi: 'gnu',\n      },\n      {\n        triple: 'i686-pc-windows-gnullvm',\n        platformArchABI: 'win32-ia32-gnullvm',\n        platform: 'win32',\n        arch: 'ia32',\n        abi: 'gnullvm',\n      },\n      {\n        triple: 'i686-pc-windows-msvc',\n        platformArchABI: 'win32-ia32-msvc',\n        platform: 'win32',\n        arch: 'ia32',\n        abi: 'msvc',\n      },\n    ],\n    x64: [\n      {\n        triple: 'x86_64-pc-windows-gnu',\n        platformArchABI: 'win32-x64-gnu',\n        platform: 'win32',\n        arch: 'x64',\n        abi: 'gnu',\n      },\n      {\n        triple: 'x86_64-pc-windows-gnullvm',\n        platformArchABI: 'win32-x64-gnullvm',\n        platform: 'win32',\n        arch: 'x64',\n        abi: 'gnullvm',\n      },\n      {\n        triple: 'x86_64-pc-windows-msvc',\n        platformArchABI: 'win32-x64-msvc',\n        platform: 'win32',\n        arch: 'x64',\n        abi: 'msvc',\n      },\n    ],\n  },\n  linux: {\n    arm64: [\n      {\n        triple: 'aarch64-unknown-linux-gnu',\n        platformArchABI: 'linux-arm64-gnu',\n        platform: 'linux',\n        arch: 'arm64',\n        abi: 'gnu',\n      },\n      {\n        triple: 'aarch64-unknown-linux-musl',\n        platformArchABI: 'linux-arm64-musl',\n        platform: 'linux',\n        arch: 'arm64',\n        abi: 'musl',\n      },\n    ],\n    arm: [\n      {\n        triple: 'arm-unknown-linux-gnueabi',\n        platformArchABI: 'linux-arm-gnu',\n        platform: 'linux',\n        arch: 'arm',\n        abi: 'gnu',\n      },\n      {\n        triple: 'arm-unknown-linux-gnueabihf',\n        platformArchABI: 'linux-arm-gnueabihf',\n        platform: 'linux',\n        arch: 'arm',\n        abi: 'gnueabihf',\n      },\n      {\n        triple: 'arm-unknown-linux-musleabi',\n        platformArchABI: 'linux-arm-musl',\n        platform: 'linux',\n        arch: 'arm',\n        abi: 'musl',\n      },\n      {\n        triple: 'arm-unknown-linux-musleabihf',\n        platformArchABI: 'linux-arm-musleabihf',\n        platform: 'linux',\n        arch: 'arm',\n        abi: 'musleabihf',\n      },\n      {\n        triple: 'armv7-unknown-linux-gnueabi',\n        platformArchABI: 'linux-arm-gnu',\n        platform: 'linux',\n        arch: 'arm',\n        abi: 'gnu',\n      },\n      {\n        triple: 'armv7-unknown-linux-gnueabihf',\n        platformArchABI: 'linux-arm-gnueabihf',\n        platform: 'linux',\n        arch: 'arm',\n        abi: 'gnueabihf',\n      },\n      {\n        triple: 'armv7-unknown-linux-musleabi',\n        platformArchABI: 'linux-arm-musl',\n        platform: 'linux',\n        arch: 'arm',\n        abi: 'musl',\n      },\n      {\n        triple: 'armv7-unknown-linux-musleabihf',\n        platformArchABI: 'linux-arm-musleabihf',\n        platform: 'linux',\n        arch: 'arm',\n        abi: 'musleabihf',\n      },\n    ],\n    armv5te: [\n      {\n        triple: 'armv5te-unknown-linux-gnueabi',\n        platformArchABI: 'linux-armv5te-gnu',\n        platform: 'linux',\n        arch: 'armv5te',\n        abi: 'gnu',\n      },\n      {\n        triple: 'armv5te-unknown-linux-musleabi',\n        platformArchABI: 'linux-armv5te-musl',\n        platform: 'linux',\n        arch: 'armv5te',\n        abi: 'musl',\n      },\n    ],\n    i586: [\n      {\n        triple: 'i586-unknown-linux-gnu',\n        platformArchABI: 'linux-i586-gnu',\n        platform: 'linux',\n        arch: 'i586',\n        abi: 'gnu',\n      },\n      {\n        triple: 'i586-unknown-linux-musl',\n        platformArchABI: 'linux-i586-musl',\n        platform: 'linux',\n        arch: 'i586',\n        abi: 'musl',\n      },\n    ],\n    ia32: [\n      {\n        triple: 'i686-unknown-linux-gnu',\n        platformArchABI: 'linux-ia32-gnu',\n        platform: 'linux',\n        arch: 'ia32',\n        abi: 'gnu',\n      },\n      {\n        triple: 'i686-unknown-linux-musl',\n        platformArchABI: 'linux-ia32-musl',\n        platform: 'linux',\n        arch: 'ia32',\n        abi: 'musl',\n      },\n    ],\n    loong64: [\n      {\n        triple: 'loongarch64-unknown-linux-gnu',\n        platformArchABI: 'linux-loong64-gnu',\n        platform: 'linux',\n        arch: 'loong64',\n        abi: 'gnu',\n      },\n      {\n        triple: 'loongarch64-unknown-linux-musl',\n        platformArchABI: 'linux-loong64-musl',\n        platform: 'linux',\n        arch: 'loong64',\n        abi: 'musl',\n      },\n    ],\n    powerpc: [\n      {\n        triple: 'powerpc-unknown-linux-gnu',\n        platformArchABI: 'linux-powerpc-gnu',\n        platform: 'linux',\n        arch: 'powerpc',\n        abi: 'gnu',\n      },\n    ],\n    powerpc64: [\n      {\n        triple: 'powerpc64-unknown-linux-gnu',\n        platformArchABI: 'linux-powerpc64-gnu',\n        platform: 'linux',\n        arch: 'powerpc64',\n        abi: 'gnu',\n      },\n    ],\n    ppc64: [\n      {\n        triple: 'powerpc64le-unknown-linux-gnu',\n        platformArchABI: 'linux-ppc64-gnu',\n        platform: 'linux',\n        arch: 'ppc64',\n        abi: 'gnu',\n      },\n      {\n        triple: 'powerpc64le-unknown-linux-musl',\n        platformArchABI: 'linux-ppc64-musl',\n        platform: 'linux',\n        arch: 'ppc64',\n        abi: 'musl',\n      },\n    ],\n    riscv64: [\n      {\n        triple: 'riscv64gc-unknown-linux-gnu',\n        platformArchABI: 'linux-riscv64-gnu',\n        platform: 'linux',\n        arch: 'riscv64',\n        abi: 'gnu',\n      },\n      {\n        triple: 'riscv64gc-unknown-linux-musl',\n        platformArchABI: 'linux-riscv64-musl',\n        platform: 'linux',\n        arch: 'riscv64',\n        abi: 'musl',\n      },\n    ],\n    s390x: [\n      {\n        triple: 's390x-unknown-linux-gnu',\n        platformArchABI: 'linux-s390x-gnu',\n        platform: 'linux',\n        arch: 's390x',\n        abi: 'gnu',\n      },\n    ],\n    sparc64: [\n      {\n        triple: 'sparc64-unknown-linux-gnu',\n        platformArchABI: 'linux-sparc64-gnu',\n        platform: 'linux',\n        arch: 'sparc64',\n        abi: 'gnu',\n      },\n    ],\n    thumbv7neon: [\n      {\n        triple: 'thumbv7neon-unknown-linux-gnueabihf',\n        platformArchABI: 'linux-thumbv7neon-gnueabihf',\n        platform: 'linux',\n        arch: 'thumbv7neon',\n        abi: 'gnueabihf',\n      },\n    ],\n    x64: [\n      {\n        triple: 'x86_64-unknown-linux-gnu',\n        platformArchABI: 'linux-x64-gnu',\n        platform: 'linux',\n        arch: 'x64',\n        abi: 'gnu',\n      },\n      {\n        triple: 'x86_64-unknown-linux-gnux32',\n        platformArchABI: 'linux-x64-gnux32',\n        platform: 'linux',\n        arch: 'x64',\n        abi: 'gnux32',\n      },\n      {\n        triple: 'x86_64-unknown-linux-musl',\n        platformArchABI: 'linux-x64-musl',\n        platform: 'linux',\n        arch: 'x64',\n        abi: 'musl',\n      },\n    ],\n  },\n  openharmony: {\n    arm64: [\n      {\n        triple: 'aarch64-unknown-linux-ohos',\n        platformArchABI: 'openharmony-arm64',\n        platform: 'openharmony',\n        arch: 'arm64',\n        abi: null,\n      },\n    ],\n    arm: [\n      {\n        triple: 'armv7-unknown-linux-ohos',\n        platformArchABI: 'openharmony-arm',\n        platform: 'openharmony',\n        arch: 'arm',\n        abi: null,\n      },\n    ],\n    x64: [\n      {\n        triple: 'x86_64-unknown-linux-ohos',\n        platformArchABI: 'openharmony-x64',\n        platform: 'openharmony',\n        arch: 'x64',\n        abi: null,\n      },\n    ],\n  },\n  freebsd: {\n    ia32: [\n      {\n        triple: 'i686-unknown-freebsd',\n        platformArchABI: 'freebsd-ia32',\n        platform: 'freebsd',\n        arch: 'ia32',\n        abi: null,\n      },\n    ],\n    x64: [\n      {\n        triple: 'x86_64-unknown-freebsd',\n        platformArchABI: 'freebsd-x64',\n        platform: 'freebsd',\n        arch: 'x64',\n        abi: null,\n      },\n    ],\n  },\n}\n"
  },
  {
    "path": "triples/index.d.ts",
    "content": "interface Triple {\n  platform: string\n  arch: string\n  abi: string | null\n  platformArchABI: string\n  raw: string\n}\n\nexport const platformArchTriples: {\n  [index: string]: {\n    [index: string]: Triple[]\n  }\n}\n"
  },
  {
    "path": "triples/index.js",
    "content": "\nexport const platformArchTriples = {\n  \"darwin\": {\n    \"arm64\": [\n      {\n        \"triple\": \"aarch64-apple-darwin\",\n        \"platformArchABI\": \"darwin-arm64\",\n        \"platform\": \"darwin\",\n        \"arch\": \"arm64\",\n        \"abi\": null\n      }\n    ],\n    \"x64\": [\n      {\n        \"triple\": \"x86_64-apple-darwin\",\n        \"platformArchABI\": \"darwin-x64\",\n        \"platform\": \"darwin\",\n        \"arch\": \"x64\",\n        \"abi\": null\n      }\n    ]\n  },\n  \"ios\": {\n    \"arm64\": [\n      {\n        \"triple\": \"aarch64-apple-ios\",\n        \"platformArchABI\": \"ios-arm64\",\n        \"platform\": \"ios\",\n        \"arch\": \"arm64\",\n        \"abi\": null\n      },\n      {\n        \"triple\": \"aarch64-apple-ios-macabi\",\n        \"platformArchABI\": \"ios-arm64-macabi\",\n        \"platform\": \"ios\",\n        \"arch\": \"arm64\",\n        \"abi\": \"macabi\"\n      },\n      {\n        \"triple\": \"aarch64-apple-ios-sim\",\n        \"platformArchABI\": \"ios-arm64-sim\",\n        \"platform\": \"ios\",\n        \"arch\": \"arm64\",\n        \"abi\": \"sim\"\n      }\n    ],\n    \"x64\": [\n      {\n        \"triple\": \"x86_64-apple-ios\",\n        \"platformArchABI\": \"ios-x64\",\n        \"platform\": \"ios\",\n        \"arch\": \"x64\",\n        \"abi\": null\n      },\n      {\n        \"triple\": \"x86_64-apple-ios-macabi\",\n        \"platformArchABI\": \"ios-x64-macabi\",\n        \"platform\": \"ios\",\n        \"arch\": \"x64\",\n        \"abi\": \"macabi\"\n      }\n    ]\n  },\n  \"android\": {\n    \"arm64\": [\n      {\n        \"triple\": \"aarch64-linux-android\",\n        \"platformArchABI\": \"android-arm64\",\n        \"platform\": \"android\",\n        \"arch\": \"arm64\",\n        \"abi\": null\n      }\n    ],\n    \"arm\": [\n      {\n        \"triple\": \"arm-linux-androideabi\",\n        \"platformArchABI\": \"android-arm-eabi\",\n        \"platform\": \"android\",\n        \"arch\": \"arm\",\n        \"abi\": \"eabi\"\n      },\n      {\n        \"triple\": \"armv7-linux-androideabi\",\n        \"platformArchABI\": \"android-arm-eabi\",\n        \"platform\": \"android\",\n        \"arch\": \"arm\",\n        \"abi\": \"eabi\"\n      }\n    ],\n    \"ia32\": [\n      {\n        \"triple\": \"i686-linux-android\",\n        \"platformArchABI\": \"android-ia32\",\n        \"platform\": \"android\",\n        \"arch\": \"ia32\",\n        \"abi\": null\n      }\n    ],\n    \"thumbv7neon\": [\n      {\n        \"triple\": \"thumbv7neon-linux-androideabi\",\n        \"platformArchABI\": \"android-thumbv7neon-eabi\",\n        \"platform\": \"android\",\n        \"arch\": \"thumbv7neon\",\n        \"abi\": \"eabi\"\n      }\n    ],\n    \"x64\": [\n      {\n        \"triple\": \"x86_64-linux-android\",\n        \"platformArchABI\": \"android-x64\",\n        \"platform\": \"android\",\n        \"arch\": \"x64\",\n        \"abi\": null\n      }\n    ]\n  },\n  \"win32\": {\n    \"arm64\": [\n      {\n        \"triple\": \"aarch64-pc-windows-gnullvm\",\n        \"platformArchABI\": \"win32-arm64-gnullvm\",\n        \"platform\": \"win32\",\n        \"arch\": \"arm64\",\n        \"abi\": \"gnullvm\"\n      },\n      {\n        \"triple\": \"aarch64-pc-windows-msvc\",\n        \"platformArchABI\": \"win32-arm64-msvc\",\n        \"platform\": \"win32\",\n        \"arch\": \"arm64\",\n        \"abi\": \"msvc\"\n      }\n    ],\n    \"arm64ec\": [\n      {\n        \"triple\": \"arm64ec-pc-windows-msvc\",\n        \"platformArchABI\": \"win32-arm64ec-msvc\",\n        \"platform\": \"win32\",\n        \"arch\": \"arm64ec\",\n        \"abi\": \"msvc\"\n      }\n    ],\n    \"ia32\": [\n      {\n        \"triple\": \"i686-pc-windows-gnu\",\n        \"platformArchABI\": \"win32-ia32-gnu\",\n        \"platform\": \"win32\",\n        \"arch\": \"ia32\",\n        \"abi\": \"gnu\"\n      },\n      {\n        \"triple\": \"i686-pc-windows-gnullvm\",\n        \"platformArchABI\": \"win32-ia32-gnullvm\",\n        \"platform\": \"win32\",\n        \"arch\": \"ia32\",\n        \"abi\": \"gnullvm\"\n      },\n      {\n        \"triple\": \"i686-pc-windows-msvc\",\n        \"platformArchABI\": \"win32-ia32-msvc\",\n        \"platform\": \"win32\",\n        \"arch\": \"ia32\",\n        \"abi\": \"msvc\"\n      }\n    ],\n    \"x64\": [\n      {\n        \"triple\": \"x86_64-pc-windows-gnu\",\n        \"platformArchABI\": \"win32-x64-gnu\",\n        \"platform\": \"win32\",\n        \"arch\": \"x64\",\n        \"abi\": \"gnu\"\n      },\n      {\n        \"triple\": \"x86_64-pc-windows-gnullvm\",\n        \"platformArchABI\": \"win32-x64-gnullvm\",\n        \"platform\": \"win32\",\n        \"arch\": \"x64\",\n        \"abi\": \"gnullvm\"\n      },\n      {\n        \"triple\": \"x86_64-pc-windows-msvc\",\n        \"platformArchABI\": \"win32-x64-msvc\",\n        \"platform\": \"win32\",\n        \"arch\": \"x64\",\n        \"abi\": \"msvc\"\n      }\n    ]\n  },\n  \"linux\": {\n    \"arm64\": [\n      {\n        \"triple\": \"aarch64-unknown-linux-gnu\",\n        \"platformArchABI\": \"linux-arm64-gnu\",\n        \"platform\": \"linux\",\n        \"arch\": \"arm64\",\n        \"abi\": \"gnu\"\n      },\n      {\n        \"triple\": \"aarch64-unknown-linux-musl\",\n        \"platformArchABI\": \"linux-arm64-musl\",\n        \"platform\": \"linux\",\n        \"arch\": \"arm64\",\n        \"abi\": \"musl\"\n      }\n    ],\n    \"arm\": [\n      {\n        \"triple\": \"arm-unknown-linux-gnueabi\",\n        \"platformArchABI\": \"linux-arm-gnu\",\n        \"platform\": \"linux\",\n        \"arch\": \"arm\",\n        \"abi\": \"gnu\"\n      },\n      {\n        \"triple\": \"arm-unknown-linux-gnueabihf\",\n        \"platformArchABI\": \"linux-arm-gnueabihf\",\n        \"platform\": \"linux\",\n        \"arch\": \"arm\",\n        \"abi\": \"gnueabihf\"\n      },\n      {\n        \"triple\": \"arm-unknown-linux-musleabi\",\n        \"platformArchABI\": \"linux-arm-musl\",\n        \"platform\": \"linux\",\n        \"arch\": \"arm\",\n        \"abi\": \"musl\"\n      },\n      {\n        \"triple\": \"arm-unknown-linux-musleabihf\",\n        \"platformArchABI\": \"linux-arm-musleabihf\",\n        \"platform\": \"linux\",\n        \"arch\": \"arm\",\n        \"abi\": \"musleabihf\"\n      },\n      {\n        \"triple\": \"armv7-unknown-linux-gnueabi\",\n        \"platformArchABI\": \"linux-arm-gnu\",\n        \"platform\": \"linux\",\n        \"arch\": \"arm\",\n        \"abi\": \"gnu\"\n      },\n      {\n        \"triple\": \"armv7-unknown-linux-gnueabihf\",\n        \"platformArchABI\": \"linux-arm-gnueabihf\",\n        \"platform\": \"linux\",\n        \"arch\": \"arm\",\n        \"abi\": \"gnueabihf\"\n      },\n      {\n        \"triple\": \"armv7-unknown-linux-musleabi\",\n        \"platformArchABI\": \"linux-arm-musl\",\n        \"platform\": \"linux\",\n        \"arch\": \"arm\",\n        \"abi\": \"musl\"\n      },\n      {\n        \"triple\": \"armv7-unknown-linux-musleabihf\",\n        \"platformArchABI\": \"linux-arm-musleabihf\",\n        \"platform\": \"linux\",\n        \"arch\": \"arm\",\n        \"abi\": \"musleabihf\"\n      }\n    ],\n    \"armv5te\": [\n      {\n        \"triple\": \"armv5te-unknown-linux-gnueabi\",\n        \"platformArchABI\": \"linux-armv5te-gnu\",\n        \"platform\": \"linux\",\n        \"arch\": \"armv5te\",\n        \"abi\": \"gnu\"\n      },\n      {\n        \"triple\": \"armv5te-unknown-linux-musleabi\",\n        \"platformArchABI\": \"linux-armv5te-musl\",\n        \"platform\": \"linux\",\n        \"arch\": \"armv5te\",\n        \"abi\": \"musl\"\n      }\n    ],\n    \"i586\": [\n      {\n        \"triple\": \"i586-unknown-linux-gnu\",\n        \"platformArchABI\": \"linux-i586-gnu\",\n        \"platform\": \"linux\",\n        \"arch\": \"i586\",\n        \"abi\": \"gnu\"\n      },\n      {\n        \"triple\": \"i586-unknown-linux-musl\",\n        \"platformArchABI\": \"linux-i586-musl\",\n        \"platform\": \"linux\",\n        \"arch\": \"i586\",\n        \"abi\": \"musl\"\n      }\n    ],\n    \"ia32\": [\n      {\n        \"triple\": \"i686-unknown-linux-gnu\",\n        \"platformArchABI\": \"linux-ia32-gnu\",\n        \"platform\": \"linux\",\n        \"arch\": \"ia32\",\n        \"abi\": \"gnu\"\n      },\n      {\n        \"triple\": \"i686-unknown-linux-musl\",\n        \"platformArchABI\": \"linux-ia32-musl\",\n        \"platform\": \"linux\",\n        \"arch\": \"ia32\",\n        \"abi\": \"musl\"\n      }\n    ],\n    \"loong64\": [\n      {\n        \"triple\": \"loongarch64-unknown-linux-gnu\",\n        \"platformArchABI\": \"linux-loong64-gnu\",\n        \"platform\": \"linux\",\n        \"arch\": \"loong64\",\n        \"abi\": \"gnu\"\n      },\n      {\n        \"triple\": \"loongarch64-unknown-linux-musl\",\n        \"platformArchABI\": \"linux-loong64-musl\",\n        \"platform\": \"linux\",\n        \"arch\": \"loong64\",\n        \"abi\": \"musl\"\n      }\n    ],\n    \"powerpc\": [\n      {\n        \"triple\": \"powerpc-unknown-linux-gnu\",\n        \"platformArchABI\": \"linux-powerpc-gnu\",\n        \"platform\": \"linux\",\n        \"arch\": \"powerpc\",\n        \"abi\": \"gnu\"\n      }\n    ],\n    \"powerpc64\": [\n      {\n        \"triple\": \"powerpc64-unknown-linux-gnu\",\n        \"platformArchABI\": \"linux-powerpc64-gnu\",\n        \"platform\": \"linux\",\n        \"arch\": \"powerpc64\",\n        \"abi\": \"gnu\"\n      }\n    ],\n    \"ppc64\": [\n      {\n        \"triple\": \"powerpc64le-unknown-linux-gnu\",\n        \"platformArchABI\": \"linux-ppc64-gnu\",\n        \"platform\": \"linux\",\n        \"arch\": \"ppc64\",\n        \"abi\": \"gnu\"\n      },\n      {\n        \"triple\": \"powerpc64le-unknown-linux-musl\",\n        \"platformArchABI\": \"linux-ppc64-musl\",\n        \"platform\": \"linux\",\n        \"arch\": \"ppc64\",\n        \"abi\": \"musl\"\n      }\n    ],\n    \"riscv64\": [\n      {\n        \"triple\": \"riscv64gc-unknown-linux-gnu\",\n        \"platformArchABI\": \"linux-riscv64-gnu\",\n        \"platform\": \"linux\",\n        \"arch\": \"riscv64\",\n        \"abi\": \"gnu\"\n      },\n      {\n        \"triple\": \"riscv64gc-unknown-linux-musl\",\n        \"platformArchABI\": \"linux-riscv64-musl\",\n        \"platform\": \"linux\",\n        \"arch\": \"riscv64\",\n        \"abi\": \"musl\"\n      }\n    ],\n    \"s390x\": [\n      {\n        \"triple\": \"s390x-unknown-linux-gnu\",\n        \"platformArchABI\": \"linux-s390x-gnu\",\n        \"platform\": \"linux\",\n        \"arch\": \"s390x\",\n        \"abi\": \"gnu\"\n      }\n    ],\n    \"sparc64\": [\n      {\n        \"triple\": \"sparc64-unknown-linux-gnu\",\n        \"platformArchABI\": \"linux-sparc64-gnu\",\n        \"platform\": \"linux\",\n        \"arch\": \"sparc64\",\n        \"abi\": \"gnu\"\n      }\n    ],\n    \"thumbv7neon\": [\n      {\n        \"triple\": \"thumbv7neon-unknown-linux-gnueabihf\",\n        \"platformArchABI\": \"linux-thumbv7neon-gnueabihf\",\n        \"platform\": \"linux\",\n        \"arch\": \"thumbv7neon\",\n        \"abi\": \"gnueabihf\"\n      }\n    ],\n    \"x64\": [\n      {\n        \"triple\": \"x86_64-unknown-linux-gnu\",\n        \"platformArchABI\": \"linux-x64-gnu\",\n        \"platform\": \"linux\",\n        \"arch\": \"x64\",\n        \"abi\": \"gnu\"\n      },\n      {\n        \"triple\": \"x86_64-unknown-linux-gnux32\",\n        \"platformArchABI\": \"linux-x64-gnux32\",\n        \"platform\": \"linux\",\n        \"arch\": \"x64\",\n        \"abi\": \"gnux32\"\n      },\n      {\n        \"triple\": \"x86_64-unknown-linux-musl\",\n        \"platformArchABI\": \"linux-x64-musl\",\n        \"platform\": \"linux\",\n        \"arch\": \"x64\",\n        \"abi\": \"musl\"\n      }\n    ]\n  },\n  \"openharmony\": {\n    \"arm64\": [\n      {\n        \"triple\": \"aarch64-unknown-linux-ohos\",\n        \"platformArchABI\": \"openharmony-arm64\",\n        \"platform\": \"openharmony\",\n        \"arch\": \"arm64\",\n        \"abi\": null\n      }\n    ],\n    \"arm\": [\n      {\n        \"triple\": \"armv7-unknown-linux-ohos\",\n        \"platformArchABI\": \"openharmony-arm\",\n        \"platform\": \"openharmony\",\n        \"arch\": \"arm\",\n        \"abi\": null\n      }\n    ],\n    \"x64\": [\n      {\n        \"triple\": \"x86_64-unknown-linux-ohos\",\n        \"platformArchABI\": \"openharmony-x64\",\n        \"platform\": \"openharmony\",\n        \"arch\": \"x64\",\n        \"abi\": null\n      }\n    ]\n  },\n  \"freebsd\": {\n    \"ia32\": [\n      {\n        \"triple\": \"i686-unknown-freebsd\",\n        \"platformArchABI\": \"freebsd-ia32\",\n        \"platform\": \"freebsd\",\n        \"arch\": \"ia32\",\n        \"abi\": null\n      }\n    ],\n    \"x64\": [\n      {\n        \"triple\": \"x86_64-unknown-freebsd\",\n        \"platformArchABI\": \"freebsd-x64\",\n        \"platform\": \"freebsd\",\n        \"arch\": \"x64\",\n        \"abi\": null\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "triples/package.json",
    "content": "{\n  \"name\": \"@napi-rs/triples\",\n  \"version\": \"2.1.6\",\n  \"description\": \"Rust target triples objects\",\n  \"keywords\": [\n    \"Rust\",\n    \"cross-compile\",\n    \"napi\",\n    \"n-api\",\n    \"node-rs\",\n    \"napi-rs\"\n  ],\n  \"author\": \"LongYinan <lynweklm@gmail.com>\",\n  \"homepage\": \"https://napi.rs/\",\n  \"license\": \"MIT\",\n  \"type\": \"module\",\n  \"main\": \"./index.js\",\n  \"types\": \"./index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": {\n        \"default\": \"./index.js\",\n        \"types\": \"./index.d.ts\"\n      },\n      \"require\": {\n        \"default\": \"./index.cjs\",\n        \"types\": \"./index.d.ts\"\n      }\n    }\n  },\n  \"publishConfig\": {\n    \"registry\": \"https://registry.npmjs.org/\",\n    \"access\": \"public\"\n  },\n  \"files\": [\n    \"index.js\",\n    \"index.cjs\",\n    \"index.d.ts\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/napi-rs/napi-rs.git\",\n    \"directory\": \"triples\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/napi-rs/napi-rs/issues\"\n  },\n  \"scripts\": {\n    \"build\": \"node --import @oxc-node/core/register ./generate-triple-list.ts && ../node_modules/.bin/prettier --write ./index.cjs\"\n  },\n  \"devDependencies\": {\n    \"@napi-rs/cli\": \"workspace:*\",\n    \"@oxc-node/core\": \"^0.0.35\",\n    \"@types/node\": \"^24.10.0\",\n    \"es-toolkit\": \"^1.41.0\"\n  }\n}\n"
  },
  {
    "path": "triples/target-list",
    "content": "aarch64-apple-darwin\naarch64-apple-ios\naarch64-apple-ios-macabi\naarch64-apple-ios-sim\naarch64-linux-android\naarch64-pc-windows-gnullvm\naarch64-pc-windows-msvc\naarch64-unknown-fuchsia\naarch64-unknown-linux-gnu\naarch64-unknown-linux-musl\naarch64-unknown-linux-ohos\naarch64-unknown-none\naarch64-unknown-none-softfloat\naarch64-unknown-uefi\narm-linux-androideabi\narm-unknown-linux-gnueabi\narm-unknown-linux-gnueabihf\narm-unknown-linux-musleabi\narm-unknown-linux-musleabihf\narm64ec-pc-windows-msvc\narmebv7r-none-eabi\narmebv7r-none-eabihf\narmv5te-unknown-linux-gnueabi\narmv5te-unknown-linux-musleabi\narmv7-linux-androideabi\narmv7-unknown-linux-gnueabi\narmv7-unknown-linux-gnueabihf\narmv7-unknown-linux-musleabi\narmv7-unknown-linux-musleabihf\narmv7-unknown-linux-ohos\narmv7a-none-eabi\narmv7r-none-eabi\narmv7r-none-eabihf\ni586-unknown-linux-gnu\ni586-unknown-linux-musl\ni686-linux-android\ni686-pc-windows-gnu\ni686-pc-windows-gnullvm\ni686-pc-windows-msvc\ni686-unknown-freebsd\ni686-unknown-linux-gnu\ni686-unknown-linux-musl\ni686-unknown-uefi\nloongarch64-unknown-linux-gnu\nloongarch64-unknown-linux-musl\nloongarch64-unknown-none\nloongarch64-unknown-none-softfloat\nnvptx64-nvidia-cuda\npowerpc-unknown-linux-gnu\npowerpc64-unknown-linux-gnu\npowerpc64le-unknown-linux-gnu\npowerpc64le-unknown-linux-musl\nriscv32i-unknown-none-elf\nriscv32im-unknown-none-elf\nriscv32imac-unknown-none-elf\nriscv32imafc-unknown-none-elf\nriscv32imc-unknown-none-elf\nriscv64gc-unknown-linux-gnu\nriscv64gc-unknown-linux-musl\nriscv64gc-unknown-none-elf\nriscv64imac-unknown-none-elf\ns390x-unknown-linux-gnu\nsparc64-unknown-linux-gnu\nsparcv9-sun-solaris\nthumbv6m-none-eabi\nthumbv7em-none-eabi\nthumbv7em-none-eabihf\nthumbv7m-none-eabi\nthumbv7neon-linux-androideabi\nthumbv7neon-unknown-linux-gnueabihf\nthumbv8m.base-none-eabi\nthumbv8m.main-none-eabi\nthumbv8m.main-none-eabihf\nwasm32-unknown-emscripten\nwasm32-unknown-unknown\nwasm32-wasip1\nwasm32-wasip1-threads\nwasm32-wasip2\nwasm32v1-none\nx86_64-apple-darwin\nx86_64-apple-ios\nx86_64-apple-ios-macabi\nx86_64-fortanix-unknown-sgx\nx86_64-linux-android\nx86_64-pc-solaris\nx86_64-pc-windows-gnu\nx86_64-pc-windows-gnullvm\nx86_64-pc-windows-msvc\nx86_64-unknown-freebsd\nx86_64-unknown-fuchsia\nx86_64-unknown-illumos\nx86_64-unknown-linux-gnu\nx86_64-unknown-linux-gnux32\nx86_64-unknown-linux-musl\nx86_64-unknown-linux-ohos\nx86_64-unknown-netbsd\nx86_64-unknown-none\nx86_64-unknown-redox\nx86_64-unknown-uefi\n"
  },
  {
    "path": "triples/tsconfig.json",
    "content": "{\n  \"extends\": \"../tsconfig.json\",\n  \"compilerOptions\": {\n    \"composite\": true,\n    \"noEmit\": true\n  },\n  \"include\": [\".\"]\n}\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"allowSyntheticDefaultImports\": true,\n    \"declaration\": true,\n    \"downlevelIteration\": true,\n    \"importHelpers\": true,\n    \"allowJs\": true,\n    \"module\": \"NodeNext\",\n    \"moduleResolution\": \"nodenext\",\n    \"newLine\": \"LF\",\n    \"noEmitHelpers\": true,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"strict\": true,\n    \"skipLibCheck\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"preserveSymlinks\": true,\n    \"target\": \"ES2024\",\n    \"sourceMap\": true,\n    \"esModuleInterop\": true,\n    \"stripInternal\": true,\n    \"resolveJsonModule\": true,\n    \"importsNotUsedAsValues\": \"remove\",\n    \"outDir\": \"scripts\",\n    \"lib\": [\"ESNext\"]\n  },\n  \"include\": [],\n  \"references\": [\n    { \"path\": \"./examples/napi-compat-mode/tsconfig.json\" },\n    { \"path\": \"./examples/napi/tsconfig.json\" },\n    { \"path\": \"./cli/tsconfig.json\" }\n  ],\n  \"exclude\": [\"node_modules\", \"bench\", \"cli/scripts\", \"scripts\", \"target\"]\n}\n"
  },
  {
    "path": "wasm-runtime/CHANGELOG.md",
    "content": "# Change Log\n\nAll notable changes to this project will be documented in this file.\nSee [Conventional Commits](https://conventionalcommits.org) for commit guidelines.\n\n## [1.1.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.1.0...@napi-rs/wasm-runtime@1.1.1) (2025-12-30)\n\n**Note:** Version bump only for package @napi-rs/wasm-runtime\n\n# [1.1.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.0.7...@napi-rs/wasm-runtime@1.1.0) (2025-12-02)\n\n### Features\n\n- **napi:** add node_api_create_object_with_properties support for enum creation ([#2990](https://github.com/napi-rs/napi-rs/issues/2990)) ([e4f5360](https://github.com/napi-rs/napi-rs/commit/e4f5360dcd7cfc5241c3bae3b46b9ae844ebf147))\n\n## [1.0.7](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.0.6...@napi-rs/wasm-runtime@1.0.7) (2025-10-10)\n\n### Bug Fixes\n\n- **wasm-runtime:** node:events polyfill on browser ([#2954](https://github.com/napi-rs/napi-rs/issues/2954)) ([69b8f09](https://github.com/napi-rs/napi-rs/commit/69b8f096fd8aae18d4970a0b053f052ed880181a))\n\n## [1.0.6](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.0.5...@napi-rs/wasm-runtime@1.0.6) (2025-10-03)\n\n**Note:** Version bump only for package @napi-rs/wasm-runtime\n\n## [1.0.5](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.0.4...@napi-rs/wasm-runtime@1.0.5) (2025-09-13)\n\n**Note:** Version bump only for package @napi-rs/wasm-runtime\n\n## [1.0.4](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.0.3...@napi-rs/wasm-runtime@1.0.4) (2025-09-11)\n\n**Note:** Version bump only for package @napi-rs/wasm-runtime\n\n## [1.0.3](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.0.2...@napi-rs/wasm-runtime@1.0.3) (2025-08-08)\n\n### Bug Fixes\n\n- **wasm-runtime:** publish `dist/*.cjs` ([#2845](https://github.com/napi-rs/napi-rs/issues/2845)) ([991dbf3](https://github.com/napi-rs/napi-rs/commit/991dbf3d902e23a48c828e501ecdff92ee95bff4))\n\n## [1.0.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@1.0.1...@napi-rs/wasm-runtime@1.0.2) (2025-08-07)\n\n### Bug Fixes\n\n- **wasm-runtime:** add constructors for nested values in objects ([#2827](https://github.com/napi-rs/napi-rs/issues/2827)) ([946f892](https://github.com/napi-rs/napi-rs/commit/946f8929fc37cb0fac586f459e83f761159ab3b9))\n- **wasm-runtime:** avoid wasm-util from tree shaking by rollup ([#2810](https://github.com/napi-rs/napi-rs/issues/2810)) ([1e30088](https://github.com/napi-rs/napi-rs/commit/1e30088198611f63a91c5328b3a1ad9aad46c90d))\n\n## [0.2.12](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@0.2.11...@napi-rs/wasm-runtime@0.2.12) (2025-07-10)\n\n### Bug Fixes\n\n- **deps:** update dependency @tybys/wasm-util to ^0.10.0 ([#2769](https://github.com/napi-rs/napi-rs/issues/2769)) ([1f6cb6c](https://github.com/napi-rs/napi-rs/commit/1f6cb6c453aca6bc1a9d1d9169ce41a2f01da7db))\n\n## [0.2.11](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@0.2.10...@napi-rs/wasm-runtime@0.2.11) (2025-06-08)\n\n### Bug Fixes\n\n- (wasm-runtime) fix race condition ([#2698](https://github.com/napi-rs/napi-rs/issues/2698)) ([193b0e0](https://github.com/napi-rs/napi-rs/commit/193b0e00439b123e7404f1326253138963deb7be))\n\n## [0.2.10](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@0.2.9...@napi-rs/wasm-runtime@0.2.10) (2025-05-16)\n\n### Bug Fixes\n\n- **wasm-runtime:** fs-proxy test failed on s390x platform ([#2629](https://github.com/napi-rs/napi-rs/issues/2629)) ([6200358](https://github.com/napi-rs/napi-rs/commit/620035804b71de091e8879a81b35d7e459a0e0dd))\n- **wasm-runtime:** upgrade emnapi ([#2568](https://github.com/napi-rs/napi-rs/issues/2568)) ([2eb2ab6](https://github.com/napi-rs/napi-rs/commit/2eb2ab619f9fb924453e21d2198fe67ea21b9680))\n\n## [0.2.9](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@0.2.8...@napi-rs/wasm-runtime@0.2.9) (2025-04-16)\n\n### Bug Fixes\n\n- **wasm-runtime:** remove `_isBuffer` patch ([#2560](https://github.com/napi-rs/napi-rs/issues/2560)) ([2f88639](https://github.com/napi-rs/napi-rs/commit/2f88639191bea91dbf1f23b8a252a5111651be58)), closes [#2559](https://github.com/napi-rs/napi-rs/issues/2559)\n- **wasm-runtime:** wasm fs proxy serialization ([#2564](https://github.com/napi-rs/napi-rs/issues/2564)) ([d28d842](https://github.com/napi-rs/napi-rs/commit/d28d8420d348e47829ed622e807f5cb3e56a8a2a))\n\n## [0.2.8](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@0.2.7...@napi-rs/wasm-runtime@0.2.8) (2025-04-01)\n\n**Note:** Version bump only for package @napi-rs/wasm-runtime\n\n## [0.2.7](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@0.2.6...@napi-rs/wasm-runtime@0.2.7) (2025-02-21)\n\n**Note:** Version bump only for package @napi-rs/wasm-runtime\n\n## [0.2.6](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@0.2.5...@napi-rs/wasm-runtime@0.2.6) (2024-12-18)\n\n**Note:** Version bump only for package @napi-rs/wasm-runtime\n\n## [0.2.5](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@0.2.4...@napi-rs/wasm-runtime@0.2.5) (2024-10-02)\n\n**Note:** Version bump only for package @napi-rs/wasm-runtime\n\n## [0.2.4](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@0.2.3...@napi-rs/wasm-runtime@0.2.4) (2024-05-12)\n\n### Bug Fixes\n\n- **deps:** update dependency @tybys/wasm-util to ^0.9.0 ([#2096](https://github.com/napi-rs/napi-rs/issues/2096)) ([ec39912](https://github.com/napi-rs/napi-rs/commit/ec3991252710870c621edb4825bd4bf076ad45b0))\n\n## [0.2.3](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@0.2.2...@napi-rs/wasm-runtime@0.2.3) (2024-04-23)\n\n### Bug Fixes\n\n- **wasm-runtime:** missing fs-proxy.cjs ([521bc12](https://github.com/napi-rs/napi-rs/commit/521bc12e43aa718a66fdab3c9b8045a118e073d5))\n\n## [0.2.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@0.2.0...@napi-rs/wasm-runtime@0.2.1) (2024-04-22)\n\n### Bug Fixes\n\n- **cli:** pass fs to browser worker binding ([#2062](https://github.com/napi-rs/napi-rs/issues/2062)) ([12aec3c](https://github.com/napi-rs/napi-rs/commit/12aec3c1354d3b2c722787de38325477c750e988))\n\n# [0.2.0](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@0.1.2...@napi-rs/wasm-runtime@0.2.0) (2024-04-19)\n\n### Features\n\n- **cli:** improve the browser binding ([#2056](https://github.com/napi-rs/napi-rs/issues/2056)) ([4ccbb61](https://github.com/napi-rs/napi-rs/commit/4ccbb6117943d5aa06f985eced1555ecf4c6fb05))\n\n## [0.1.2](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@0.1.1...@napi-rs/wasm-runtime@0.1.2) (2024-03-21)\n\n**Note:** Version bump only for package @napi-rs/wasm-runtime\n\n## [0.1.1](https://github.com/napi-rs/napi-rs/compare/@napi-rs/wasm-runtime@0.1.0...@napi-rs/wasm-runtime@0.1.1) (2024-01-16)\n\n### Bug Fixes\n\n- **cli,wasm-runtime:** dependencies ([#1905](https://github.com/napi-rs/napi-rs/issues/1905)) ([44dc39f](https://github.com/napi-rs/napi-rs/commit/44dc39f1f0d073f8a768e84c8d5aa4783d90b247))\n\n# 0.1.0 (2024-01-16)\n\n### Features\n\n- add wasm runtime package ([#1904](https://github.com/napi-rs/napi-rs/issues/1904)) ([120accd](https://github.com/napi-rs/napi-rs/commit/120accd965f03e1de89d0d9a2fba69b97d70b95c))\n"
  },
  {
    "path": "wasm-runtime/assert.cjs",
    "content": "function assert(condition, message) {\n  if (!condition) {\n    throw new Error(message || 'Assertion failed')\n  }\n}\n\nmodule.exports = assert\n\nmodule.exports.strictEqual = function strictEqual(a, b) {\n  if (a !== b) {\n    throw new Error(`Expected ${a} to strict equal ${b}`)\n  }\n}\n"
  },
  {
    "path": "wasm-runtime/fs-proxy.js",
    "content": "// @ts-check\n\n/**\n * @param {unknown} value\n */\nconst getType = (value) => {\n  if (value === undefined) return 0\n  if (value === null) return 1\n  const t = typeof value\n  if (t === 'boolean') return 2\n  if (t === 'number') return 3\n  if (t === 'string') return 4\n  if (t === 'object') return 6\n  if (t === 'bigint') return 9\n  return -1\n}\n\n/**\n * @param {import('memfs').IFs} memfs\n * @param {any} value\n * @param {ReturnType<typeof getType>} type\n * @returns {Uint8Array}\n */\nconst encodeValue = (memfs, value, type) => {\n  switch (type) {\n    case 0:\n    case 1:\n      return new Uint8Array(0)\n    case 2: {\n      const view = new Int32Array(1)\n      view[0] = value ? 1 : 0\n      return new Uint8Array(view.buffer)\n    }\n    case 3: {\n      const view = new Float64Array(1)\n      view[0] = value\n      return new Uint8Array(view.buffer)\n    }\n    case 4: {\n      const view = new TextEncoder().encode(value)\n      return view\n    }\n    case 6: {\n      function storeConstructor(obj, memfs, processed = new WeakSet()) {\n        if (!obj || typeof obj !== 'object') {\n          return\n        }\n\n        if (processed.has(obj)) {\n          return\n        }\n\n        processed.add(obj)\n\n        const [entry] =\n          Object.entries(memfs).filter(([_, v]) => v === obj.constructor)[0] ??\n          []\n        if (entry) {\n          Object.defineProperty(obj, '__constructor__', {\n            configurable: true,\n            writable: true,\n            enumerable: true,\n            value: entry,\n          })\n        }\n\n        for (const value of Object.values(obj)) {\n          storeConstructor(value, memfs, processed)\n        }\n      }\n\n      storeConstructor(value, memfs)\n\n      const json = JSON.stringify(value, (_, value) => {\n        if (typeof value === 'bigint') {\n          return `BigInt(${String(value)})`\n        }\n        if (value instanceof Error) {\n          return {\n            ...value,\n            message: value.message,\n            stack: value.stack,\n            __error__: value.constructor.name,\n          }\n        }\n        return value\n      })\n      const view = new TextEncoder().encode(json)\n      return view\n    }\n    case 9: {\n      const view = new BigInt64Array(1)\n      view[0] = value\n      return new Uint8Array(view.buffer)\n    }\n    case -1:\n    default:\n      throw new Error('unsupported data')\n  }\n}\n\n/**\n * @param {typeof import('memfs')} memfs\n * @param {Uint8Array} payload\n * @param {number} type\n * @returns {any}\n */\nconst decodeValue = (memfs, payload, type) => {\n  if (type === 0) return undefined\n  if (type === 1) return null\n  if (type === 2)\n    return Boolean(new Int32Array(payload.buffer, payload.byteOffset, 1)[0])\n  if (type === 3)\n    return new Float64Array(payload.buffer, payload.byteOffset, 1)[0]\n  if (type === 4) return new TextDecoder().decode(payload.slice())\n  if (type === 6) {\n    const obj = JSON.parse(\n      new TextDecoder().decode(payload.slice()),\n      (_key, value) => {\n        if (typeof value === 'string') {\n          const matched = value.match(/^BigInt\\((-?\\d+)\\)$/)\n          if (matched && matched[1]) {\n            return BigInt(matched[1])\n          }\n        }\n        return value\n      },\n    )\n\n    function loadConstructor(obj, memfs, processed = new WeakSet()) {\n      if (!obj || typeof obj !== 'object') {\n        return\n      }\n\n      if (processed.has(obj)) {\n        return\n      }\n\n      processed.add(obj)\n\n      if (obj.__constructor__) {\n        const ctor = obj.__constructor__\n        delete obj.__constructor__\n        Object.setPrototypeOf(obj, memfs[ctor].prototype)\n      }\n\n      for (const value of Object.values(obj)) {\n        loadConstructor(value, memfs, processed)\n      }\n    }\n\n    loadConstructor(obj, memfs)\n\n    if (obj.__error__) {\n      const name = obj.__error__\n      const ErrorConstructor = globalThis[name] || Error\n      delete obj.__error__\n      const err = new ErrorConstructor(obj.message)\n      Object.defineProperty(err, 'stack', {\n        configurable: true,\n        enumerable: false,\n        writable: true,\n        value: err.stack,\n      })\n      Object.defineProperty(err, Symbol.toStringTag, {\n        configurable: true,\n        enumerable: false,\n        writable: true,\n        value: name,\n      })\n      for (const [k, v] of Object.entries(obj)) {\n        if (k === 'message' || k === 'stack') continue\n        err[k] = v\n      }\n      return err\n    }\n    return obj\n  }\n  if (type === 9)\n    return new BigInt64Array(payload.buffer, payload.byteOffset, 1)[0]\n  throw new Error('unsupported data')\n}\n\n/**\n * @param {import('memfs').IFs} fs\n * @returns {(e: { data: { __fs__: { sab: Int32Array, type: keyof import('memfs').IFs, payload: any[] } } }) => void}\n */\n// oxlint-disable-next-line no-unused-vars -- fixed in an upcoming release\nexport const createOnMessage = (fs) =>\n  function onMessage(e) {\n    if (e.data.__fs__) {\n      /**\n       * 0..4                    status(int32_t):        21(waiting) 0(success) 1(error)\n       * 5..8                    type(napi_valuetype):   0(undefined) 1(null) 2(boolean) 3(number) 4(string) 6(jsonstring) 9(bigint) -1(unsupported)\n       * 9..16                   payload_size(uint32_t)  <= 1024\n       * 16..16 + payload_size   payload_content\n       */\n      const { sab, type, payload } = e.data.__fs__\n      const fn = fs[type]\n      try {\n        const ret = fn.apply(fs, payload)\n        const t = getType(ret)\n        Atomics.store(sab, 1, t)\n        const v = encodeValue(fs, ret, t)\n        Atomics.store(sab, 2, v.length)\n        new Uint8Array(sab.buffer).set(v, 16)\n        Atomics.store(sab, 0, 0) // success\n      } catch (/** @type {any} */ err) {\n        const t = getType(err)\n        Atomics.store(sab, 1, t)\n        const v = encodeValue(fs, err, t)\n        Atomics.store(sab, 2, v.length)\n        new Uint8Array(sab.buffer).set(v, 16)\n        Atomics.store(sab, 0, 1) // error\n      } finally {\n        Atomics.notify(sab, 0)\n      }\n    }\n  }\n\n/**\n * @param {typeof import('memfs')} memfs\n */\nexport const createFsProxy = (memfs) =>\n  new Proxy(\n    {},\n    {\n      get(_target, p, _receiver) {\n        /**\n         * @param {any[]} args\n         */\n        return function (...args) {\n          const sab = new SharedArrayBuffer(16 + 10240)\n          const i32arr = new Int32Array(sab)\n          Atomics.store(i32arr, 0, 21)\n\n          postMessage({\n            __fs__: {\n              sab: i32arr,\n              type: p,\n              payload: args,\n            },\n          })\n\n          Atomics.wait(i32arr, 0, 21)\n\n          const status = Atomics.load(i32arr, 0)\n          const type = Atomics.load(i32arr, 1)\n          const size = Atomics.load(i32arr, 2)\n          const content = new Uint8Array(sab, 16, size)\n          const value = decodeValue(memfs, content, type)\n          if (status === 1) {\n            throw value\n          }\n          return value\n        }\n      },\n    },\n  )\n"
  },
  {
    "path": "wasm-runtime/fs-proxy.test.js",
    "content": "import assert from 'node:assert'\nimport { test } from 'node:test'\nimport { Worker, isMainThread, parentPort } from 'node:worker_threads'\nimport { fileURLToPath } from 'node:url'\n\nimport * as memfs from 'memfs'\n\nimport { createFsProxy, createOnMessage } from './fs-proxy.js'\n\nconst __filename = fileURLToPath(import.meta.url)\n\nawait test(`fs-proxy between main and worker (${isMainThread ? 'main' : 'worker'})`, async () => {\n  const fs = isMainThread\n    ? memfs.createFsFromVolume(\n        memfs.Volume.fromJSON({\n          '/test.txt': 'test',\n          '/test.json': JSON.stringify({ a: 'b' }),\n        }),\n      )\n    : createFsProxy(memfs)\n\n  if (isMainThread) {\n    fs.__custom1__ = () => {\n      throw null\n    }\n    fs.__custom2__ = (x) => x\n\n    const worker = new Worker(__filename)\n\n    const onMessage = createOnMessage(fs)\n    await new Promise((resolve, reject) => {\n      worker.on('message', (data) => {\n        if (data === 'pass') {\n          resolve()\n          return\n        }\n        onMessage({ data })\n      })\n      worker.on('error', (error) => {\n        reject(error)\n      })\n    })\n  } else {\n    Object.assign(globalThis, {\n      postMessage: (data) => {\n        parentPort.postMessage(data)\n      },\n    })\n    assert.strictEqual(fs.readFileSync('/test.txt', 'utf8'), 'test')\n    assert.strictEqual(fs.readFileSync('/test.json', 'utf8'), '{\"a\":\"b\"}')\n    assert.throws(() => fs.readFileSync('/notexist', 'utf8'), /ENOENT/)\n    assert.throws(\n      () => fs.__custom1__(),\n      (err) => {\n        return err === null\n      },\n    )\n    assert.throws(() => fs.__notexist__(), TypeError)\n\n    const primitives = [undefined, null, true, false, 1, 1.1, 1n, 'string']\n    primitives.forEach((primitive) => {\n      assert.strictEqual(fs.__custom2__(primitive), primitive)\n    })\n    postMessage('pass')\n  }\n})\n"
  },
  {
    "path": "wasm-runtime/fs.js",
    "content": "import * as memfsExported from 'memfs'\nimport { Buffer } from 'buffer'\n\nconst { createFsFromVolume, Volume, fs, memfs } = memfsExported\n\nexport { createFsFromVolume, Volume, fs, memfs, memfsExported, Buffer }\n"
  },
  {
    "path": "wasm-runtime/package.json",
    "content": "{\n  \"name\": \"@napi-rs/wasm-runtime\",\n  \"version\": \"1.1.1\",\n  \"type\": \"module\",\n  \"description\": \"Runtime and polyfill for wasm targets\",\n  \"homepage\": \"https://napi.rs/\",\n  \"author\": {\n    \"name\": \"LongYinan\",\n    \"url\": \"https://github.com/Brooooooklyn\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/napi-rs/napi-rs.git\",\n    \"directory\": \"wasi-runtime\"\n  },\n  \"license\": \"MIT\",\n  \"publishConfig\": {\n    \"registry\": \"https://registry.npmjs.org/\",\n    \"access\": \"public\"\n  },\n  \"files\": [\n    \"runtime.cjs\",\n    \"runtime.js\",\n    \"fs-proxy.js\",\n    \"dist/*.cjs\",\n    \"dist/*.js\"\n  ],\n  \"devDependencies\": {\n    \"@rollup/plugin-alias\": \"^6.0.0\",\n    \"@rollup/plugin-commonjs\": \"^29.0.0\",\n    \"@rollup/plugin-inject\": \"^5.0.5\",\n    \"@rollup/plugin-json\": \"^6.1.0\",\n    \"@rollup/plugin-node-resolve\": \"^16.0.3\",\n    \"@rollup/plugin-replace\": \"^6.0.3\",\n    \"buffer\": \"^6.0.3\",\n    \"events\": \"^3.3.0\",\n    \"memfs\": \"^4.50.0\",\n    \"node-inspect-extracted\": \"^3.2.2\",\n    \"path-browserify\": \"^1.0.1\",\n    \"process\": \"^0.11.10\",\n    \"readable-stream\": \"^4.7.0\",\n    \"rollup\": \"^4.53.1\",\n    \"rollup-plugin-polyfill-node\": \"^0.13.0\",\n    \"tslib\": \"^2.8.1\"\n  },\n  \"dependencies\": {\n    \"@emnapi/core\": \"^1.7.1\",\n    \"@emnapi/runtime\": \"^1.7.1\",\n    \"@tybys/wasm-util\": \"^0.10.1\"\n  },\n  \"scripts\": {\n    \"build\": \"rollup -c rollup.config.js\",\n    \"test\": \"node --test\"\n  },\n  \"funding\": {\n    \"type\": \"github\",\n    \"url\": \"https://github.com/sponsors/Brooooooklyn\"\n  },\n  \"exports\": {\n    \".\": {\n      \"import\": \"./runtime.js\",\n      \"require\": \"./runtime.cjs\"\n    },\n    \"./fs\": {\n      \"import\": \"./dist/fs.js\"\n    }\n  }\n}\n"
  },
  {
    "path": "wasm-runtime/rollup.config.js",
    "content": "import { join } from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nimport alias from '@rollup/plugin-alias'\nimport commonjs from '@rollup/plugin-commonjs'\nimport inject from '@rollup/plugin-inject'\nimport { nodeResolve } from '@rollup/plugin-node-resolve'\nimport replace from '@rollup/plugin-replace'\nimport { defineConfig } from 'rollup'\n\nconst dirname = join(fileURLToPath(import.meta.url), '..')\n\nexport default defineConfig([\n  {\n    input: './fs.js',\n    plugins: [\n      commonjs(),\n      alias({\n        entries: [\n          { find: 'node:events', replacement: 'events' },\n          { find: 'node:path', replacement: 'path-browserify' },\n          { find: 'node:stream', replacement: 'readable-stream' },\n          { find: 'assert', replacement: join(dirname, 'assert.cjs') },\n          { find: 'util', replacement: join(dirname, 'util') },\n          { find: 'node:buffer', replacement: 'buffer' },\n        ],\n      }),\n      inject({\n        process: ['process', 'default'],\n        Buffer: ['buffer', 'Buffer'],\n      }),\n      nodeResolve({\n        preferBuiltins: false,\n        mainFields: ['browser', 'module', 'main'],\n      }),\n      replace({\n        'process.env.NODE_ENV': '\"production\"',\n        'process.env.NODE_DEBUG': false,\n        global: undefined,\n        preventAssignment: false,\n      }),\n    ],\n    treeshake: true,\n    output: {\n      format: 'esm',\n      sourcemap: 'inline',\n      dir: './dist',\n    },\n  },\n  {\n    input: './fs-proxy.js',\n    output: {\n      format: 'commonjs',\n      file: './dist/fs-proxy.cjs',\n    },\n  },\n])\n"
  },
  {
    "path": "wasm-runtime/runtime.cjs",
    "content": "const { MessageHandler, instantiateNapiModuleSync, instantiateNapiModule } = require('@emnapi/core')\nconst { getDefaultContext } = require('@emnapi/runtime')\nconst { WASI } = require('@tybys/wasm-util')\n\nconst { createFsProxy, createOnMessage } = require('./dist/fs-proxy.cjs')\n\nmodule.exports = {\n  MessageHandler,\n  instantiateNapiModule,\n  instantiateNapiModuleSync,\n  getDefaultContext,\n  WASI,\n  createFsProxy,\n  createOnMessage,\n}\n"
  },
  {
    "path": "wasm-runtime/runtime.js",
    "content": "export {\n  instantiateNapiModuleSync,\n  instantiateNapiModule,\n  MessageHandler,\n} from '@emnapi/core'\nexport { getDefaultContext } from '@emnapi/runtime'\nexport * from '@tybys/wasm-util'\nexport { createOnMessage, createFsProxy } from './fs-proxy.js'\n"
  },
  {
    "path": "wasm-runtime/util.js",
    "content": "import { inspect, format } from 'node-inspect-extracted'\n\nfunction isBuffer(arg) {\n  return (\n    arg &&\n    typeof arg === 'object' &&\n    typeof arg.copy === 'function' &&\n    typeof arg.fill === 'function' &&\n    typeof arg.readUInt8 === 'function'\n  )\n}\n\n// borrow from https://github.com/isaacs/inherits\nfunction inherits(ctor, superCtor) {\n  if (superCtor) {\n    ctor.super_ = superCtor\n    ctor.prototype = Object.create(superCtor.prototype, {\n      constructor: {\n        value: ctor,\n        enumerable: false,\n        writable: true,\n        configurable: true,\n      },\n    })\n  }\n}\n\nexport { inherits, inspect, format, isBuffer }\n"
  }
]