From 08678dcacc15f7083e2d1bcdc92b59a840351e7d Mon Sep 17 00:00:00 2001 From: zhom <2717306+zhom@users.noreply.github.com> Date: Thu, 29 May 2025 10:17:16 +0400 Subject: [PATCH] init --- .github/dependabot.yml | 28 + .github/workflows/dependabot-automerge.yml | 34 + .github/workflows/lint-js.yml | 46 + .github/workflows/lint-rs.yml | 55 + .github/workflows/release.yml | 123 + .gitignore | 45 + .node-version | 2 + .vscode/settings.json | 19 + LICENSE | 660 ++ README.md | 3 + assets/preview.png | Bin 0 -> 166585 bytes biome.json | 53 + components.json | 21 + eslint.config.mjs | 133 + index.html | 14 + next-env.d.ts | 5 + next.config.ts | 12 + nodecar/eslint.config.mjs | 131 + nodecar/package.json | 33 + nodecar/pnpm-lock.yaml | 1304 ++++ nodecar/rename-binary.js | 14 + nodecar/src/index.ts | 94 + nodecar/src/proxy-runner.ts | 111 + nodecar/src/proxy-storage.ts | 149 + nodecar/src/proxy-worker.ts | 51 + nodecar/src/proxy.ts | 73 + nodecar/tsconfig.json | 22 + package.json | 62 + pnpm-lock.yaml | 5935 ++++++++++++++++ pnpm-workspace.yaml | 4 + postcss.config.mjs | 5 + public/favicon.ico | Bin 0 -> 25931 bytes public/file.svg | 1 + public/globe.svg | 1 + public/next.svg | 1 + public/tauri-nextjs-template-2_screenshot.png | Bin 0 -> 30877 bytes public/vercel.svg | 1 + public/window.svg | 1 + src-tauri/.gitignore | 10 + src-tauri/.rustfmt.toml | 2 + src-tauri/Cargo.lock | 6097 +++++++++++++++++ src-tauri/Cargo.toml | 49 + src-tauri/Info.plist | 48 + src-tauri/assets/template.pac | 14 + src-tauri/binaries/.gitkeep | 0 src-tauri/build.rs | 9 + src-tauri/capabilities/default.json | 18 + src-tauri/entitlements.plist | 16 + src-tauri/icons/128x128.png | Bin 0 -> 9861 bytes src-tauri/icons/128x128@2x.png | Bin 0 -> 23343 bytes src-tauri/icons/32x32.png | Bin 0 -> 1793 bytes src-tauri/icons/64x64.png | Bin 0 -> 4142 bytes src-tauri/icons/Square107x107Logo.png | Bin 0 -> 7979 bytes src-tauri/icons/Square142x142Logo.png | Bin 0 -> 11424 bytes src-tauri/icons/Square150x150Logo.png | Bin 0 -> 12057 bytes src-tauri/icons/Square284x284Logo.png | Bin 0 -> 26541 bytes src-tauri/icons/Square30x30Logo.png | Bin 0 -> 1680 bytes src-tauri/icons/Square310x310Logo.png | Bin 0 -> 29472 bytes src-tauri/icons/Square44x44Logo.png | Bin 0 -> 2559 bytes src-tauri/icons/Square71x71Logo.png | Bin 0 -> 4897 bytes src-tauri/icons/Square89x89Logo.png | Bin 0 -> 6463 bytes src-tauri/icons/StoreLogo.png | Bin 0 -> 3196 bytes .../icons/android/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3047 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 13184 bytes .../android/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 3047 bytes .../icons/android/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2996 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 8136 bytes .../android/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2996 bytes .../android/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 7049 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 18954 bytes .../mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7049 bytes .../android/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 11476 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 31176 bytes .../mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 11476 bytes .../android/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 16367 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 45517 bytes .../mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 16367 bytes src-tauri/icons/icon.icns | Bin 0 -> 319270 bytes src-tauri/icons/icon.ico | Bin 0 -> 39478 bytes src-tauri/icons/icon.png | Bin 0 -> 56917 bytes src-tauri/icons/ios/AppIcon-20x20@1x.png | Bin 0 -> 868 bytes src-tauri/icons/ios/AppIcon-20x20@2x-1.png | Bin 0 -> 2163 bytes src-tauri/icons/ios/AppIcon-20x20@2x.png | Bin 0 -> 2163 bytes src-tauri/icons/ios/AppIcon-20x20@3x.png | Bin 0 -> 3545 bytes src-tauri/icons/ios/AppIcon-29x29@1x.png | Bin 0 -> 1421 bytes src-tauri/icons/ios/AppIcon-29x29@2x-1.png | Bin 0 -> 3346 bytes src-tauri/icons/ios/AppIcon-29x29@2x.png | Bin 0 -> 3346 bytes src-tauri/icons/ios/AppIcon-29x29@3x.png | Bin 0 -> 5514 bytes src-tauri/icons/ios/AppIcon-40x40@1x.png | Bin 0 -> 2163 bytes src-tauri/icons/ios/AppIcon-40x40@2x-1.png | Bin 0 -> 4981 bytes src-tauri/icons/ios/AppIcon-40x40@2x.png | Bin 0 -> 4981 bytes src-tauri/icons/ios/AppIcon-40x40@3x.png | Bin 0 -> 8279 bytes src-tauri/icons/ios/AppIcon-512@2x.png | Bin 0 -> 128447 bytes src-tauri/icons/ios/AppIcon-60x60@2x.png | Bin 0 -> 8279 bytes src-tauri/icons/ios/AppIcon-60x60@3x.png | Bin 0 -> 13472 bytes src-tauri/icons/ios/AppIcon-76x76@1x.png | Bin 0 -> 4717 bytes src-tauri/icons/ios/AppIcon-76x76@2x.png | Bin 0 -> 10881 bytes src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png | Bin 0 -> 12189 bytes src-tauri/icons/logo.png | Bin 0 -> 161899 bytes src-tauri/src/api_client.rs | 1099 +++ src-tauri/src/auto_updater.rs | 778 +++ src-tauri/src/browser.rs | 557 ++ src-tauri/src/browser_runner.rs | 2261 ++++++ src-tauri/src/browser_version_service.rs | 669 ++ src-tauri/src/default_browser.rs | 169 + src-tauri/src/download.rs | 368 + src-tauri/src/downloaded_browsers.rs | 258 + src-tauri/src/extraction.rs | 374 + src-tauri/src/lib.rs | 225 + src-tauri/src/main.rs | 6 + src-tauri/src/proxy_manager.rs | 189 + src-tauri/src/settings_manager.rs | 214 + src-tauri/src/version_updater.rs | 535 ++ src-tauri/tauri.conf.json | 56 + src/app/layout.tsx | 35 + src/app/page.tsx | 563 ++ src/components/change-version-dialog.tsx | 196 + src/components/create-profile-dialog.tsx | 401 ++ src/components/custom-toast.tsx | 417 ++ src/components/loading-button.tsx | 17 + src/components/profile-data-table.tsx | 509 ++ src/components/profile-selector-dialog.tsx | 366 + src/components/proxy-settings-dialog.tsx | 240 + src/components/settings-dialog.tsx | 266 + src/components/theme-provider.tsx | 95 + src/components/ui/alert.tsx | 66 + src/components/ui/badge.tsx | 46 + src/components/ui/button.tsx | 61 + src/components/ui/card.tsx | 92 + src/components/ui/checkbox.tsx | 32 + src/components/ui/combobox.tsx | 94 + src/components/ui/command.tsx | 177 + src/components/ui/dialog.tsx | 135 + src/components/ui/dropdown-menu.tsx | 257 + src/components/ui/input.tsx | 21 + src/components/ui/label.tsx | 24 + src/components/ui/popover.tsx | 48 + src/components/ui/progress.tsx | 31 + src/components/ui/scroll-area.tsx | 58 + src/components/ui/select.tsx | 185 + src/components/ui/sonner.tsx | 25 + src/components/ui/table.tsx | 116 + src/components/ui/tooltip.tsx | 61 + src/components/update-notification.tsx | 305 + src/components/version-selector.tsx | 156 + src/components/version-update-settings.tsx | 130 + src/hooks/use-browser-download.ts | 372 + src/hooks/use-table-sorting.ts | 79 + src/hooks/use-version-updater.ts | 268 + src/lib/browser-utils.ts | 58 + src/lib/utils.ts | 6 + src/styles/globals.css | 125 + src/types.ts | 21 + tsconfig.json | 35 + 154 files changed, 29456 insertions(+) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/dependabot-automerge.yml create mode 100644 .github/workflows/lint-js.yml create mode 100644 .github/workflows/lint-rs.yml create mode 100644 .github/workflows/release.yml create mode 100644 .gitignore create mode 100644 .node-version create mode 100644 .vscode/settings.json create mode 100644 LICENSE create mode 100644 README.md create mode 100644 assets/preview.png create mode 100644 biome.json create mode 100644 components.json create mode 100644 eslint.config.mjs create mode 100644 index.html create mode 100644 next-env.d.ts create mode 100644 next.config.ts create mode 100644 nodecar/eslint.config.mjs create mode 100644 nodecar/package.json create mode 100644 nodecar/pnpm-lock.yaml create mode 100644 nodecar/rename-binary.js create mode 100644 nodecar/src/index.ts create mode 100644 nodecar/src/proxy-runner.ts create mode 100644 nodecar/src/proxy-storage.ts create mode 100644 nodecar/src/proxy-worker.ts create mode 100644 nodecar/src/proxy.ts create mode 100644 nodecar/tsconfig.json create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml create mode 100644 postcss.config.mjs create mode 100644 public/favicon.ico create mode 100644 public/file.svg create mode 100644 public/globe.svg create mode 100644 public/next.svg create mode 100644 public/tauri-nextjs-template-2_screenshot.png create mode 100644 public/vercel.svg create mode 100644 public/window.svg create mode 100644 src-tauri/.gitignore create mode 100644 src-tauri/.rustfmt.toml create mode 100644 src-tauri/Cargo.lock create mode 100644 src-tauri/Cargo.toml create mode 100644 src-tauri/Info.plist create mode 100644 src-tauri/assets/template.pac create mode 100644 src-tauri/binaries/.gitkeep create mode 100644 src-tauri/build.rs create mode 100644 src-tauri/capabilities/default.json create mode 100644 src-tauri/entitlements.plist create mode 100644 src-tauri/icons/128x128.png create mode 100644 src-tauri/icons/128x128@2x.png create mode 100644 src-tauri/icons/32x32.png create mode 100644 src-tauri/icons/64x64.png create mode 100644 src-tauri/icons/Square107x107Logo.png create mode 100644 src-tauri/icons/Square142x142Logo.png create mode 100644 src-tauri/icons/Square150x150Logo.png create mode 100644 src-tauri/icons/Square284x284Logo.png create mode 100644 src-tauri/icons/Square30x30Logo.png create mode 100644 src-tauri/icons/Square310x310Logo.png create mode 100644 src-tauri/icons/Square44x44Logo.png create mode 100644 src-tauri/icons/Square71x71Logo.png create mode 100644 src-tauri/icons/Square89x89Logo.png create mode 100644 src-tauri/icons/StoreLogo.png create mode 100644 src-tauri/icons/android/mipmap-hdpi/ic_launcher.png create mode 100644 src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png create mode 100644 src-tauri/icons/android/mipmap-mdpi/ic_launcher.png create mode 100644 src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png create mode 100644 src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png create mode 100644 src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png create mode 100644 src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png create mode 100644 src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 src-tauri/icons/icon.icns create mode 100644 src-tauri/icons/icon.ico create mode 100644 src-tauri/icons/icon.png create mode 100644 src-tauri/icons/ios/AppIcon-20x20@1x.png create mode 100644 src-tauri/icons/ios/AppIcon-20x20@2x-1.png create mode 100644 src-tauri/icons/ios/AppIcon-20x20@2x.png create mode 100644 src-tauri/icons/ios/AppIcon-20x20@3x.png create mode 100644 src-tauri/icons/ios/AppIcon-29x29@1x.png create mode 100644 src-tauri/icons/ios/AppIcon-29x29@2x-1.png create mode 100644 src-tauri/icons/ios/AppIcon-29x29@2x.png create mode 100644 src-tauri/icons/ios/AppIcon-29x29@3x.png create mode 100644 src-tauri/icons/ios/AppIcon-40x40@1x.png create mode 100644 src-tauri/icons/ios/AppIcon-40x40@2x-1.png create mode 100644 src-tauri/icons/ios/AppIcon-40x40@2x.png create mode 100644 src-tauri/icons/ios/AppIcon-40x40@3x.png create mode 100644 src-tauri/icons/ios/AppIcon-512@2x.png create mode 100644 src-tauri/icons/ios/AppIcon-60x60@2x.png create mode 100644 src-tauri/icons/ios/AppIcon-60x60@3x.png create mode 100644 src-tauri/icons/ios/AppIcon-76x76@1x.png create mode 100644 src-tauri/icons/ios/AppIcon-76x76@2x.png create mode 100644 src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png create mode 100644 src-tauri/icons/logo.png create mode 100644 src-tauri/src/api_client.rs create mode 100644 src-tauri/src/auto_updater.rs create mode 100644 src-tauri/src/browser.rs create mode 100644 src-tauri/src/browser_runner.rs create mode 100644 src-tauri/src/browser_version_service.rs create mode 100644 src-tauri/src/default_browser.rs create mode 100644 src-tauri/src/download.rs create mode 100644 src-tauri/src/downloaded_browsers.rs create mode 100644 src-tauri/src/extraction.rs create mode 100644 src-tauri/src/lib.rs create mode 100644 src-tauri/src/main.rs create mode 100644 src-tauri/src/proxy_manager.rs create mode 100644 src-tauri/src/settings_manager.rs create mode 100644 src-tauri/src/version_updater.rs create mode 100644 src-tauri/tauri.conf.json create mode 100644 src/app/layout.tsx create mode 100644 src/app/page.tsx create mode 100644 src/components/change-version-dialog.tsx create mode 100644 src/components/create-profile-dialog.tsx create mode 100644 src/components/custom-toast.tsx create mode 100644 src/components/loading-button.tsx create mode 100644 src/components/profile-data-table.tsx create mode 100644 src/components/profile-selector-dialog.tsx create mode 100644 src/components/proxy-settings-dialog.tsx create mode 100644 src/components/settings-dialog.tsx create mode 100644 src/components/theme-provider.tsx create mode 100644 src/components/ui/alert.tsx create mode 100644 src/components/ui/badge.tsx create mode 100644 src/components/ui/button.tsx create mode 100644 src/components/ui/card.tsx create mode 100644 src/components/ui/checkbox.tsx create mode 100644 src/components/ui/combobox.tsx create mode 100644 src/components/ui/command.tsx create mode 100644 src/components/ui/dialog.tsx create mode 100644 src/components/ui/dropdown-menu.tsx create mode 100644 src/components/ui/input.tsx create mode 100644 src/components/ui/label.tsx create mode 100644 src/components/ui/popover.tsx create mode 100644 src/components/ui/progress.tsx create mode 100644 src/components/ui/scroll-area.tsx create mode 100644 src/components/ui/select.tsx create mode 100644 src/components/ui/sonner.tsx create mode 100644 src/components/ui/table.tsx create mode 100644 src/components/ui/tooltip.tsx create mode 100644 src/components/update-notification.tsx create mode 100644 src/components/version-selector.tsx create mode 100644 src/components/version-update-settings.tsx create mode 100644 src/hooks/use-browser-download.ts create mode 100644 src/hooks/use-table-sorting.ts create mode 100644 src/hooks/use-version-updater.ts create mode 100644 src/lib/browser-utils.ts create mode 100644 src/lib/utils.ts create mode 100644 src/styles/globals.css create mode 100644 src/types.ts create mode 100644 tsconfig.json diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..9edd6e0 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,28 @@ +version: 2 +updates: + # Enable version updates for Node.js dependencies + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "weekly" + allow: + - dependency-type: "all" + groups: + all: + patterns: + - "*" + ignore: + - dependency-name: "eslint" + versions: ">= 9" + + # Enable version updates for rust + - package-ecosystem: "cargo" + directory: "/src-tauri" + schedule: + interval: "weekly" + allow: + - dependency-type: "all" + groups: + all: + patterns: + - "*" diff --git a/.github/workflows/dependabot-automerge.yml b/.github/workflows/dependabot-automerge.yml new file mode 100644 index 0000000..3c44231 --- /dev/null +++ b/.github/workflows/dependabot-automerge.yml @@ -0,0 +1,34 @@ +# Automatically squashes and merges Dependabot dependency upgrades if tests pass + +name: Dependabot Auto-merge + +on: pull_request_target + +permissions: + pull-requests: write + contents: write + +jobs: + dependabot: + runs-on: ubuntu-latest + + if: ${{ github.actor == 'dependabot[bot]' }} + steps: + - name: Fetch Dependabot metadata + id: dependabot-metadata + uses: dependabot/fetch-metadata@v2 + with: + github-token: "${{ secrets.GITHUB_TOKEN }}" + + - name: Approve Dependabot PR + run: gh pr review --approve "$PR_URL" + env: + PR_URL: ${{ github.event.pull_request.html_url }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Auto-merge (squash) Dependabot PR + if: ${{ steps.dependabot-metadata.outputs.update-type != 'version-update:semver-major' }} + run: gh pr merge --auto --squash "$PR_URL" + env: + PR_URL: ${{ github.event.pull_request.html_url }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/lint-js.yml b/.github/workflows/lint-js.yml new file mode 100644 index 0000000..90432cd --- /dev/null +++ b/.github/workflows/lint-js.yml @@ -0,0 +1,46 @@ +# Installs Node.js dependencies and pnpm, and checks formatting + linting + +name: Lint Node.js + +on: + push: + branches: + - main + pull_request: + paths-ignore: + - "src-tauri/**" + - "README.md" + +jobs: + build: + strategy: + fail-fast: true + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + + runs-on: ${{ matrix.os }} + + steps: + - name: Disable git core.autocrlf on Windows + if: matrix.os == 'windows-latest' + run: git config --global core.autocrlf false + + - name: Checkout repository code + uses: actions/checkout@v4 + + - name: Set up pnpm package manager + uses: pnpm/action-setup@v4 + with: + version: latest + + - name: Set up Node.js v22 + uses: actions/setup-node@v4 + with: + node-version-file: .node-version + cache: "pnpm" + + - name: Install dependencies from lockfile + run: pnpm install --frozen-lockfile + + - name: Run lint step + run: pnpm lint diff --git a/.github/workflows/lint-rs.yml b/.github/workflows/lint-rs.yml new file mode 100644 index 0000000..1491c2a --- /dev/null +++ b/.github/workflows/lint-rs.yml @@ -0,0 +1,55 @@ +# Installs Rust and checks formatting + linting + +name: Lint Rust + +on: + push: + branches: + - main + pull_request: + paths-ignore: + - "src/**" + - "package.json" + - "package-lock.json" + - "yarn.lock" + - "pnpm-lock.yaml" + - "README.md" + +jobs: + build: + strategy: + fail-fast: true + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + + runs-on: ${{ matrix.os }} + + steps: + - name: Disable git core.autocrlf on Windows + if: matrix.os == 'windows-latest' + run: git config --global core.autocrlf false + + - name: Checkout repository code + uses: actions/checkout@v4 + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt, clippy + + - name: Install Linux dependencies + if: matrix.os == 'ubuntu-latest' + run: | + sudo apt-get update + sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev + + - name: Create empty 'dist' directory + run: mkdir dist + + - name: Run rustfmt check + run: cargo fmt --all -- --check + working-directory: src-tauri + + - name: Run clippy check and deny warnings + run: cargo clippy --all-targets --all-features -- -D warnings + working-directory: src-tauri diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..b4081c2 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,123 @@ +name: Release + +on: + push: + tags: + - "v*" + +env: + TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} + TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} + +jobs: + release: + permissions: + contents: write + strategy: + fail-fast: false + matrix: + include: + - platform: "macos-latest" + args: "--target aarch64-apple-darwin" + arch: "aarch64" + target: "aarch64-apple-darwin" + pkg_target: "latest-macos-arm64" + nodecar_script: "build:aarch64" + - platform: "macos-latest" + args: "--target x86_64-apple-darwin" + arch: "x86_64" + target: "x86_64-apple-darwin" + pkg_target: "latest-macos-x64" + nodecar_script: "build:x86_64" + # Future platforms can be added here: + # - platform: "ubuntu-20.04" + # args: "--target x86_64-unknown-linux-gnu" + # arch: "x86_64" + # target: "x86_64-unknown-linux-gnu" + # pkg_target: "latest-linux-x64" + # nodecar_script: "build:linux-x64" + # - platform: "ubuntu-20.04" + # args: "--target aarch64-unknown-linux-gnu" + # arch: "aarch64" + # target: "aarch64-unknown-linux-gnu" + # pkg_target: "latest-linux-arm64" + # nodecar_script: "build:linux-arm64" + # - platform: "windows-latest" + # args: "--target x86_64-pc-windows-msvc" + # arch: "x86_64" + # target: "x86_64-pc-windows-msvc" + # pkg_target: "latest-win-x64" + # nodecar_script: "build:win-x64" + # - platform: "windows-latest" + # args: "--target aarch64-pc-windows-msvc" + # arch: "aarch64" + # target: "aarch64-pc-windows-msvc" + # pkg_target: "latest-win-arm64" + # nodecar_script: "build:win-arm64" + + runs-on: ${{ matrix.platform }} + steps: + - uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: latest + + - name: Setup Rust + uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.target }} + + - name: Install dependencies (Ubuntu only) + if: matrix.platform == 'ubuntu-20.04' + run: | + sudo apt-get update + sudo apt-get install -y libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev + + - name: Rust cache + uses: swatinem/rust-cache@v2 + with: + workdir: ./src-tauri + + - name: Install frontend dependencies + run: pnpm install --frozen-lockfile + + - name: Install nodecar dependencies + run: | + cd nodecar + pnpm install --frozen-lockfile + + - name: Build nodecar sidecar + run: | + cd nodecar + pnpm run ${{ matrix.nodecar_script }} + + - name: Copy nodecar binary to Tauri binaries + run: | + mkdir -p src-tauri/binaries + if [[ "${{ matrix.platform }}" == "windows-latest" ]]; then + cp nodecar/dist/nodecar.exe src-tauri/binaries/nodecar-${{ matrix.target }}.exe + else + cp nodecar/dist/nodecar src-tauri/binaries/nodecar-${{ matrix.target }} + fi + + - name: Build frontend + run: pnpm build + + - name: Build Tauri app + uses: tauri-apps/tauri-action@v0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tagName: ${{ github.ref_name }} + releaseName: "Donut Browser ${{ github.ref_name }}" + releaseBody: "See the assets to download this version and install." + releaseDraft: true + prerelease: false + args: ${{ matrix.args }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e07fab4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,45 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ +/dist/ + +# production +/build + +# misc +**/*.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# nodecar +nodecar/dist +nodecar/node_modules + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo + +!**/.gitkeep \ No newline at end of file diff --git a/.node-version b/.node-version new file mode 100644 index 0000000..eb08e72 --- /dev/null +++ b/.node-version @@ -0,0 +1,2 @@ +22 + diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..cfa1d38 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,19 @@ +{ + "cSpell.words": [ + "autologin", + "CFURL", + "donutbrowser", + "launchservices", + "mountpoint", + "nodecar", + "ntlm", + "propertylist", + "rlib", + "serde", + "signon", + "sspi", + "staticlib", + "sysinfo", + "systempreferences" + ] +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..92e8940 --- /dev/null +++ b/LICENSE @@ -0,0 +1,660 @@ +GNU AFFERO GENERAL PUBLIC LICENSE +Version 3, 19 November 2007 + +Copyright (C) 2025 zhom@github +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + Preamble + +The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + +The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + +Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + +A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + +The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + +An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + +The precise terms and conditions for copying, distribution and +modification follow. + +TERMS AND CONDITIONS + +0. Definitions. + +"This License" refers to version 3 of the GNU Affero General Public License. + +"Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + +To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based +on the Program. + +To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + +To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + +An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +1. Source Code. + +The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + +A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + +The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + +The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + +The Corresponding Source for a work in source code form is that +same work. + +2. Basic Permissions. + +All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + +3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + +4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + +5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + +a) The work must carry prominent notices stating that you modified +it, and giving a relevant date. + +b) The work must carry prominent notices stating that it is +released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to +"keep intact all notices". + +c) You must license the entire work, as a whole, under this +License to anyone who comes into possession of a copy. This +License will therefore apply, along with any applicable section 7 +additional terms, to the whole of the work, and all its parts, +regardless of how they are packaged. This License gives no +permission to license the work in any other way, but it does not +invalidate such permission if you have separately received it. + +d) If the work has interactive user interfaces, each must display +Appropriate Legal Notices; however, if the Program has interactive +interfaces that do not display Appropriate Legal Notices, your +work need not make them do so. + +A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + +6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + +a) Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by the +Corresponding Source fixed on a durable physical medium +customarily used for software interchange. + +b) Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by a +written offer, valid for at least three years and valid for as +long as you offer spare parts or customer support for that product +model, to give anyone who possesses the object code either (1) a +copy of the Corresponding Source for all the software in the +product that is covered by this License, on a durable physical +medium customarily used for software interchange, for a price no +more than your reasonable cost of physically performing this +conveying of source, or (2) access to copy the +Corresponding Source from a network server at no charge. + +c) Convey individual copies of the object code with a copy of the +written offer to provide the Corresponding Source. This +alternative is allowed only occasionally and noncommercially, and +only if you received the object code with such an offer, in accord +with subsection 6b. + +d) Convey the object code by offering access from a designated +place (gratis or for a charge), and offer equivalent access to the +Corresponding Source in the same way through the same place at no +further charge. You need not require recipients to copy the +Corresponding Source along with the object code. If the place to +copy the object code is a network server, the Corresponding Source +may be on a different server (operated by you or a third party) +that supports equivalent copying facilities, provided you maintain +clear directions next to the object code saying where to find the +Corresponding Source. Regardless of what server hosts the +Corresponding Source, you remain obligated to ensure that it is +available for as long as needed to satisfy these requirements. + +e) Convey the object code using peer-to-peer transmission, provided +you inform other peers where the object code and Corresponding +Source of the work are being offered to the general public at no +charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + +A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + +"Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + +If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + +7. Additional Terms. + +"Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + +a) Disclaiming warranty or limiting liability differently from the +terms of sections 15 and 16 of this License; or + +b) Requiring preservation of specified reasonable legal notices or +author attributions in that material or in the Appropriate Legal +Notices displayed by works containing it; or + +c) Prohibiting misrepresentation of the origin of that material, or +requiring that modified versions of such material be marked in +reasonable ways as different from the original version; or + +d) Limiting the use for publicity purposes of names of licensors or +authors of the material; or + +e) Declining to grant rights under trademark law for use of some +trade names, trademarks, or service marks; or + +f) Requiring indemnification of licensors and authors of that +material by anyone who conveys the material (or modified versions of +it) with contractual assumptions of liability to the recipient, for +any liability that these contractual assumptions directly impose on +those licensors and authors. + +All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + +8. Termination. + +You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + +However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + +9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + +10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + +An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + +11. Patents. + +A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + +In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + +If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + +A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + +12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + +13. Remote Network Interaction; Use with the GNU General Public License. + +Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + +Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + +14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + +Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + +15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + +17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + +Copyright (C) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published +by the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + +If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + +You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..53ec24e --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Donut Browser + +TODO diff --git a/assets/preview.png b/assets/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..36accf5d667556375355540204374f1315c7f26d GIT binary patch literal 166585 zcmeFZby$?$_6AIcNGJ-@At5pSrN|6SkVx`r8^d1CLi_g?E>_qsO$it>`Uw@7axAtB*POGzjpAz@G=A)y*z zVSpo2Ly8kfNVnxo#l;n+#l@)=ZLN$ ziN&@bM9oZtP4Mz7wpeozYyK?!Ia=rEe5HF6x7zf?wHypzZFm$Vf6x80uJ?A@52!yX4Dto{&{$4hUN_Vg=@twL$xJj35+cLb z-#>@IyIt-DDJVde7}s`GG&?W3tS4eikzz+e3i$X`>k;vS*x5rQ=NwVyPE7AdA8L+s z-Lvl&_^L``Q21562;h8E@g`vK&7b*XId@j#c}b*@;bV6-1|(9C5aat;94UAdFL2`N zo)w|#iG1?d-8I6Z(MBu6h56VGM4oKy7ua)LX2b}8Z(lYJdiRFa_X9a~l#Jc6-9@kc z*>+fT&V$4zQk4T%HK|+ zZj(9@WVs97)Irh2zi@-u+WfyLrw2z%?WO*H<2fHWe%5CaDe^~{0Iz}?sn8o`#Qrg= z0jiCpl`^D8`2Y=BIK)Sm8U;_h3-KwfkrKP6#pfA9K!TQ5bZ0BnA6s0-l#b}+;NOnX7=bM?!oUUCM@RIRpm6_EJx`^A$q^^t12fddyB zXgWeEGyZB6z59(3;}atEH3mvn+Qxs&-zdG~@lV$%0~tA9Tz_W%rf}cLL_=Slr@iSDFjzn6V;|}(B(Ipz0 z5Do)er2q?Yv(WQ4-32sTyj2NH+M`g)1%(Bn&natJcxHa;DZgLwbci+eIomVG2J}ea z^y}H9tNW;=R`;rw2&4O z{fUR@YpFsG@fhcC$A1uLxKI9`aTdj$p$Ul(6cBU> ztZ?iYKQ+I*&-ip1=LqJwCS|7lMkQ!NrC|(JO|{=-yBK=t*%>Vvw&*Dt9q&@zJ(Z>l z6K+pjko!!#BYm89ci_c<<-n5xdL`afHnl*DXO0Y*p~`J{ZSPdZYf1{gtdsD3b|KoI zrm7^!^y(gsA)X<dLj*J3|(0dS>XQKCZE@{wFWxHDEGSk+$<*K1E}IZ{KwPnJeEp^*KuI+wkwE>FvV{=InjB1A@6O zS|vJPQn7Xo|qR~ca5z56gQoaKL#zif4+I`$l1%YS zP?%FB%9qK<^iU??B?xOlwTP!ArpBw@R7u)be|s?axm|yW<1GjN!Sity`^IA6oRPFm%WywO=|_TR)>H$);?F|95JO5W{Uk zD#D_6{&0PUUezjAJeKG;jr`4PoZMWvPu_g9}&*^-jg0Y;+@^Z#W*Bs9V=l z(_Pd1^B3(;y~O9W&1^EC=_fckZG9I>I(bz_RHRj8@?vun)z{Vba&hw3^R~zOEZm_+ z@YfTXMfC7usGSAxgf>ikQ**O; zIaO@8+23|zwY9Kye=@D--tlMnckkEBjfJ&{by(BtA=)N(3gKr4nCzdy@gB8V%|&-Z zTBu&%uMdQAjCJ-!PIoFTY%1qEtOKpJ*5FGg?cGyyOCz%*zb)qym+IQj`8E70y0v?R z*ToQsBh{7uwVj^9ZqAuK?`0}&JZ(O02Wci{1E<-NK@)@0kkDQT+2*?#l`|e~>d?QdL zafY<9KH|(0&Vr0_J6j@l2%br)wylM%3qDNre%rZ@IX}MRl$PK9(i)tizGzXG1V$G+_xYQ zBtF3&#dedJ{?7fKkz|_0oFmc5)i}RA#NtK=Nt;~9 zRGegwOs4>Af7F7MeD~wTCvGn?hqTpcH)B`%?9RJ{)xKF|l7}ip@-DA8P@Ow|2%INt zK1WG<|Kojm$z5ZL_&jb6j%tsfsdz)X#CsU`FCG&ov3#50>9wDpcR5qTi>wuxN7j!ak->>k;D2(#xOIRx(kJt=*0*t$$@l;t_m zrOFw!wK$-Yhy7HOne{xqD?7Jl>gPa^G}voUUdu2(j9$6mBnG^%OACI zw|Utn_Kixc_tM!sHAu@yp==W;7j8R8yk+QC=DB4**k|M?wF}R8f__mLd%n9=tR8%4 zJl>;FO;=rIre`icTs1l}LNbzTNoSIIGyWPaFog|Risu{5?!g`!`m zc=yqP$xgqI{)g6+V42{f#5Td5La6J+W_Y-QHs5`_AHVI#R!c-M&)s)#FLxD{OdD(T zx+Dsm;haWi>{%|8O=wNvpRb*)r{I+bwcu^-p!w?NOY}T|A=TAjH~3;nP#pym^=I~;3tso#JwFg!&&q8JZ{svXi#jgeFP37gxJRvb5;v_kjk#o(HGjXf-ZS{I9SKYn& zR*|y{lkK?4(Q~Ck+u7d5f_*|_+yrYJFM8X7r-32e_WR!oM zjX{}=`mfKZ2H-m+F=cUSY4EPBZ)<31X=h?(kCK!34jjO?mQu4rLL#ESdLc_I(ILS7 zM@?U=+N;XR^6Ohc*>w%9^bFaZq1NDRBqTv+e((`$Xs=7{47ISd<98OK{p$>V@cHU6 zgqHfRQ|!%!XjSDDsl}~q4XJt9AG1HE6~0AHO)Y3^V8pK^@#3GCgTI7mP3-Nh`5_P| zCnt6%PIfC>W5^ReK0e4}4hRPa8#sf_&c)JR*O|@I?%_Xf@~`_y7~1LEnp)eNT3J$G z-B(x7%E4ZUmiFpF|M&Bcb{aaH{`*OmcK_@a=pf|k8^{y($B_TKH@H;r>L|aWsk5Pl znuIA7*bF>F_$kj*!N1P`uW$bS#Q(Tb_1{-M;pXA_&rAQ~tN-_MN${%_EPZxJh6uYz$THYjCE^fr4b5Li2GND`FO(w!)O+G*d>V z)1W(+yVw!>;h05-SKGXmU5i=qDaOtHjiF6$^s5m(@6_P!DgS+Pur8yk>qBhOXU~q9 zZE?i|jfq#z!=yYz_H7ewf|r^b9;|U6T6M=NL9jwU6D~iv*)9gv-Wd1SMj;UxxN8$4 zxbhXEzCly4#7wU$p5AH|RDAXo0ut*-5J+@bSY)y7;+kk-N;36K0~Z0s^0N6ahTg9S z5D`P_(tz%|J2x!?f=_QnJI6{jYil$$u++^nJ3BhM#m{q|w_5f!JWG9no0gUJDp_-i z%3JC=B1HuSpM5r&as53WUPhWhB=*zXT@*ZYbabMWtgMs|)}mi;evD|ct4{~!`P*^- zbMOd@c@tzTFN7H3un`jNst+cyJpz+lGyG*|bo7|X*Te{wQxiBWAR9$V$C%{i@fW2= zM&1;6Sshp`b3>g9EMp!@lYW(q&ESRfz3e@{G_Ifo4!?=tb5uNdv@agK|9Od#+-3kA z{Y?Dkwdj+EZQ^nkMlX{NgB4@=si5^C`IU(-fPSycwnz(9jK3N{!4DO~%v)4cS2s&# zfp0|^X`4UgG97ptb8M`0^H5R~Jb!n*d%x_fcIS4fh#^}lgq0P>O{0nQj911HLBr(Z zZz6^nm}L@)rPNi8A@k+*>4`7Ha=vw*3nsCl?Q#rCq~_$h{b6Q%=#W4E0S?j-Nh3$L5N+# z6#RF0Z6|8N992_DEGNqDb5j&=c08=V@n(EX$%e;v%j}Q4*&}1>C~sLL;U6C#`^<`S zs6&3(%r*`?_IdltoA>E9f4-Xk%;D{>3@d$bdzH|na0njbhZ}r4@RmHcOw=wWEBE9K z-`_GF%1Ys~oNS9)G;a_y7g-50L8QF6nv;D+Ijf55KhF7C%VP$FDM)!N-en&9-*{6b zl$eKwX2WI^%f3rlY9$OAhvF%?!WBl*_Aa!I{-l_cTr0Eqf~?v#Lx<~qY0{zXCd%E! zs5ko+EQ90*FcS@rckdEfw}mft$6=u0liCAM2Re?$Q}kLdR#hF!IhL;#=f@G@b76pe zqjUF(zuQ-Q!DqKLVR?^~+w5JeCUbEkChk)@_=1uqH>GBuSnEk9RLqp|-WOs>$sSix zgz_i_qwh^!4QWEjZ>PuQ;j+?Z1(KzgE{oDD0**$0LQVOn>LcQk!x$31au3Q%n zRK3~GVu1GMup~-~zSONjZ9Wna>lwE`p^i`LE(IGApY*}>f?|%Qz}U?PGt#kzhZG*- z`@i^`rR$6~lB@P`Z;1`oh~XtUNa}9wwX>lx_z_G#YcWg;^FYkJ%|b9sn3&WIU2E7w z%Agt(2Y>4fHtu{AaH@-lijscyO8jb?Ky9T@U97uVD{aO&KeHfa3pSI_1z6RJyY}}A zRn%c7MjS(rHl9fT-5epIRa7cgB4Sh5J8^0Y2P+LKay6;71O3(U1x=usxcn7HQL<2+ z)xMMj;^Q^~#$unFh5?wA1`RgQxG`=g`$bX@1z%2YOs9$ZD0g zrCcV8I_l+?B(&>vVt->l*?Zqayi#(tYg@QVhZ@SP(-LH>8+?~|6KBP z6XiuvAw$}GF3yOZgW0FGUlLIE2(oI94|dRJtHskKF@A{k-l4XqSxQ`rxwNQ zY$r1S{Sy}yKDK|LXkso@L5lCHqH8XcTON!_?A({^o3k^Eg72CvpMWKph59#cVw@Fm zy6pwu0AuCIp67#kK9~Zaf%!;osA1>J4IeB)Rg8<9L1D-+3OhnkQ>!>2pJy5kCD95mekb1ll_TP{}D-w51&*rpu$I^L@B`Jyt&T?rJ}hFzC1+>7eC|Q zWeHPa3Hqhb;oj{0##sO)cGD5C4Z3mmi?(1BIJZ?q``!MV?$x58Q5GMSK3x8rro{u; z`_)aljo^RH`EO$z{QuHAq6|2%U%xi6Jv56icRg4ecAkJwK7L!nIb6=8Er5bwn$jVB zJ(i-*MAMu*0w^B<$k!bJOjmS$Jt)w$cj3WxadA;n46(Ynl~!2TAWuw0^qGB>X6nO2 zkK0mL%x)tlRY$arC;ecCT=?o>X6Hb9r@`=#HzeItg}UOVaF{C3w6p%WMM<|oCtG<) zf+PG@mHn#TUV`NeyyYQ6apLC&)%D@OSf$~xp(`XS)Xf^S$xP`1QiU#}WJwk*Sz1J2+XwS_H8~HdgYhB7a z$;V?ksrvZ~*+hf*k6W$7C!;!Ek*$=c1%k&5s%jP1x@Fcak-brD8XdEZlI_@xA z-w_#E%D*qD0W-1mWpS-5z3**3ZB>6BB#3D6-5t@eTBfy%w1evhd)lsLXG+z3R!=yT zE@~_`FsTBcgx*Gua)Y788}7d^P*XNbtk5wyvCJwwr!qlyKR@{}ZgUrVNvU@VU2}JL zO}aCRt;SBlajs%7@v-jrNt@P$-Gk8?x^Jf&@EWIWZQG0E<#uo6b7)KWW*j>%3jS)? za>ez|E94bQK0!@QjpkCX&ZEUe^K{)NjEvb@mpq}(q*q9FU0KaPKYWp6?8$-p4?^Lv zh_kbfSju*0a;ItaLES$HvUSbAMjLa4?pUFW-H#S@WsHwF-Mmtj2# z0?QI1UmC=7-^MOp-xWn;G|j%NDO$$4dUhsgI#E{Y0k7|&mf(A}>F2sNd0ckr@5nQi zCT+_f?>K#VGHPA9oEZ8lNb`s&!C@rE_IR-=jC4{un%2kPzTHmq`uN?3h0KOFDkcz~ zDB|UleL!87;XC5|jzHtLn7ObCp^Q4})xsy+qNL2>e{1TihF1C%~G)`n9AT}M$C|xz-FL?3ccaK}kR}$M_cO=_4 z#=TkujkGlTQ^eg!cr9}+VEr$+cf0R#f)4Gz48gztiBgr`ELb{4-zB2hwdDN=hHFsr zQ&%(O;-r4JJm+S9;53~oDZ(V~udUSGzqa)w&ZsO2t zJD62)pWW}zWh`_sy5o2`Kdc2RB?enOO~x>W@iA|net-VOsOXD3?^p2iz zyVH%|BGtvk9D|bs?h{=~aXfi7jJr)3RAb>K`PTx zY)J3OIo&tBT7-9fFT&VnJ6JnAJG%#ua5lD>GIO=Z(JA3&P{UZwj-y!AAD%fKrJmb8 z3B0#Tq!Z*g%}2fh%V2kEF*Y|pS5j3qiG%EohG0(!68reey1r44h>m1=+p(PFMFX5e zSRn7TRF&fkri7JLoK@bP!{$eGbM8?9RRYY-2c^vA1}xY$d& z^W-RlSjHCv*CHa*^ZaB00fS>S0s_!b-n91Kbmr~?O@7m2hj*>p8scW zqRPSi_;8{CU`x(px-LYoDltQj_&LaU(`B|DL^@SRQ&RG$(h{CPU(sYRAYLkJq z0Kv;MyW-zL0=X0VMuB)j`_?g!b)R*~;*vjAO!Pcqsuq@21f=daO#SPrb8M_MP6Xoo zXr?pk6}~hW_669Wd?{P%O7^7JC93VT%W`MGBo#fr5LZXylr&=kt$xebP=W25ri|ea zC+`X~w2BP^;@x+p2l6y{J{c=Q_?oJMF1KJ6&bCKs#55bE3f-_4i>27}*rw zOqEaI33>j7$mO_Cw4HnOOxbY)`qr)_&iKUHgh9iqwp5FXA&Y<^(CIP5wXi|zyJ!^( zzE$l(6uHYne}>xb{X+}b%n(aK%}=g=Z5_+HW0i@_HPD~7*+$>Z6UId60WJ^EANE_5 zY9H}xRaFYK*+#XTY5~17mTxs#Q6zXU^k7^+SST!u(Bmx{<@ahjH$d{ee1(F)o}X*t z>pmDA87XaQn$1?@^*fMvv4zYk>;n$5N+o-e`z|)$N-}B=tHLtMra@*! zMa&BBIIbjxLz>_jLfn$)@x@N7>252P7h2T8db!)X#0GJ1-|J?h&%Ik|4-t>`TVw&S zEWqVA$-}^PSjiSPPEvcVhqP;B;ze#>VJ zD&gY={fQ(C>Q`aLwrq&x#`w%cSEa40bxW7|fG5%;KaRJs1Yg7NIIBA0KF1LRlgD}7 zILYI?wjo^n98X|_j?=j3cCN^JF6SaZSJ1~JKyu~P!Ih4&ur^LV| zee_T==&?^?^kNrhuRPD&z$3}ol(3+NrYf07(+$3s8N=T{;umZ@GMch9s6RjCCGj_F6KpKXa11zk@~K%$o4Jc&{YWMjFcg)h%=j(0l?EH>|SSF2mp zpF0i|>9;mq=y#jsg#(|%d3@Taq6J|748VvlS_%_3D>A(*0mah{HUa*$`eF4g~} zKuzJ}@3uw4M66|B#MHVD=@mYebtef5JprvMDP^#%Tr}c4-6+vZd)Winr*<378Er5T zZe2};^dUL~Vyk*PhOFDu#~eBVE$4odIlU9LS+%~!Vc2oc>S8UYAgr5rM)TuszJ8)Q zHE8b})J= z<9WOoy%si}{Pl&v>HexRlwajKX3`*2lph5j&a|(h0o9LFCFR{>8uS}z@I&lNpFa$G zI>1#qq*?c8p0gl)&CgN2y9JH%N2BySGYWp>H#Eu-t=HVxf|KrhY`eW)+JqIXAg1Uj zhtH{5sTs`90o+o`O%Vmr*-GyZ08uQ~C@v!|^N0+-h(p90q94RJg7#z@KkW;*vZf|$ z`IKYM%EeR&wvYemR<#a$<${u0iBVvuO4kkms8%`Irmdr)zU!YDZCyYu%X#j@a+=jl zT~Sye`8A=PTIOmMDgFq3xE+ZDscD00+J=B+YbDE-MJ3|fhlB3pwy;y%ZIcNkGfxT{ zWhcIdJFfhu0{OXNZ01Q@{U_6FLa`4yfz;bs-JvZ1g>5g9(ZfZ=n0_z@T{Np2EwPT^ z5E@;J^P(<1_XK2_UwG1oa@9&iPYC57&?<Z2r&!!sc#E33yK^u0Ven3$qm_rau$@H+cl~<4wYOZ&bWn8{2IUgF^-tM5fp|cRq{OW9i1ex)p9T z+aR`kII->A3I%ZpH{XO&0J!|%l3roSmOwYSOlm1b-RYKw>F|%p@{R1wmi7R~i|#n9 ziLyNRz3#X31tcj{JgpQ??^iE%Yog`5wcViKSH<<*tVjs2%iYEyA!`jyL)prUS0ut_ z`Hb!AH@wyA8Ja4&DM+HvZ>zqKy22RAQ>VK(-!(1PzE=6Jt(cU1Zq z!qEl+mVk(y@0XMda#+FRBYDghKLTbVR=$#PLcVf}gTj38HCU?ECUTgY73!x0k62mv z8FfjoTZ5QrO81>rtL(EktL^81)vGg%JB(_{sZGg*MMp17CpyAccmMoOg;oxM!z^&d z9K3?s!z!lC>JCAP(?BTgRbIMR*3Z#+en|Gf#H=Z>sozj&33ySLQM$qQpM7%w)Q zUW1m6w@AF3IanIJ2oY*nFK5sjGuY9K+`>3vTNWsPZ1JNiB$%4a+`)5$oEa^vj> z+NW#eO`sorP%&fU{%A8$msDF6x3~BlbX})aSjZRsfr9Teb51qkmCZv@*GlQuHtn`; zXwHA{-aY3Ec&7O2A%(@>%ipacETn=6d{Wrcg%I&g@isu(3-m3EtEt66aV4ncJ=XKe z4SVAGYzO6dW0&H4cD8Am2FHn<`(mkU-HtxHY=HzTFy6MKz04sNlk&lR&V;h3oG!bJ zhd$fi0>UcZH;B_S`1m^zzmY@5Cmko}G70(mz^2@!9yL@P*3h)SD)PofeFmC2T$*1o z|B~0dwO5d{M?&NXhjp*_3LNgve}TAu0d+JwV7;C1`KwrhCWBJyT3xsxt0^xPoUHLW z130duP&eA;3(R-(1J1JB-W4-4+~peZ!bcw$Fj+pgA3SbAdx+5nVx%@b(miv5sE5~- z$PALMEC#@47}Iapmz17=X!zE$9;QC?_%r990U7X+pvpKuS%=he@I|Y3!eAc=p^mG8 zyxN>{9B&SL*G8&$#)=f$XD%GWgn}p`ya1$ zJfE%r54}3brV!`-od6bny0}lwdxvdhYr3{N;70;2NF=1YaM(Ez$*1umUinZJCisiX zKdr~R4XF5NDjtX9nE-?opulOA1Qk4EV@?K0{&-Bo|iBLkDB z=N0@j`-tyo(yLZ!JI5UEAj(!71b+0#=SMGQtyzc`s ziSx=>QR-^%Z0omE!S&n{xssQ`7$d#kc1lbf@>QEaib^-C?WXna05BO_4i6Fl5(LA^ z>~(Q$Os%lfC7XB_3MK5V4|J^ZI2e8_xj8hE)FWqAI;@iM8BT^qMUJKa-*Jdq@@nB@ z@stkr9!^;UDh7>GMIM$-59M9}?BC->Rjd9XCGyebWHD63g|<7p12T{}%#hw7{Z6>t z%h{BHXfQbItZ#h$+b(cuA$#lj)!HBN>z@?nEUu{D>Ps7p->VUQx$|HY z)0d-vpy>8>=6Ablf7W?VI%Z5y`pn+!swO;DbsNpc|KRTMBcB`+09WWfeE7iAmNA73 z2^*(_3NyusgCt2dhT}Pd+)0CdhEThG*Li-fW+jL9 zCy>szWhPx15~{Xe$0vxY+)86c%vxv2Czy36!Ms#9gZD!vDa$~4^FStw^@#`X1}n%= zU|;s<^eJFEm=u6mr={|I+U};P8f^+(I^!FGS0nz$PUD8ggT1EsT5nit(YKr8$-h!DD&*XWe4M_X)EUT3;pn!VqiD7zlsJ{*}Y zT{p@=oP~?tXD|14n(^qh|3RKBot(fba=J0d9sn{m>x1FT2o1~1;Z9$9_nqeD@5^`j z1kd+5zl-@%3RT4&Xgxn|MBsx;eH6HL|Ct;oa-?Z-J40L>V9B=?^fI{b>i!-M1z?ij(9M;G-u2mHr>`Ma~|(Y!tn-TP1a`_%olfyAZCQ zR#P*%L@y$ugMlv$j|iV4$KqeeYSi25g`A@gQd z_X}HDNU-opGCap^yY?s)UljN${csy@V8o^GCwHTbd*O69z8Vw81m zX6Uc6DsDHLw^EWuB~0=XZhqlA(*r$thd#)b1dbLI-53-E8klotW) zKtNu~1Y&kK*tAkunQ5O5PlmCtk6JlZ?hnWqf}r+fbF|iK_r%JMJ(5>XtDs5C>0Cpe zZ*if6WbZOehMhZf=F)kOzi7&FqCGn^kro&?+J2=^Y^f)K1&rV)O}p+=AA93?o2p6A zQ>c&OwZYh+{3^#$zkm&^OnfS9CgO_JOu&15DE!Y7iZ{1Yt0J_FBD4D`x9I>~p%}lJpb3U2NM|Q* z55@D@p&Vyh8iAM{1(3s_qvrg;s+ZN9H z3@LD~V`+-tUZtdW9&Q!MG2uSwn-R1)l~qDq5mbY_t!NYX1_AF78R5|a2MLoZN4u6h z@SNdSo|AbH)YA8Aj;2o+KC|TK4(Qs#%6~p-yLH+B zq$Ay*v-hdrzC4}Tdjqc?v%QZ|o``b+A5yQiyZ${V{fkXniSsQL*+5t;AN;7pd z^>e>GKe~7`Z4b&=i#2-}G{y-I8Tal#w-V`<=|a1Xy8+%8kWY3?vV(6;b<~RVKHzeg zgv$^z$lm?~$bfth=`O?HzelOA$<6KJYPa_`wLPm9twKh{_{I%=-42U*3MJ?ef9&R!tqq{PQ@>M_83n=aKtI zr0x6sO%#NWU-vUK0wTIiFuD3ge)X2?go0oGXmXRXLSU%S;h4CwxkFoNgLs}EeW4v# zW6o%lcPl=P-Mc0d1JYLs5|ZEGo0whp>xtQrct#~+$rf&!>74Lv2GFY+^g(-a&`+sQ zW!c!nv~c;dQqrxOJ-qP4*IIP&r0l=QRqU7XbW>FhC7tG{R3NV<%AXVgIRhpNes<;b z(_7b!BADNF($ooHRb?jUxm%QLQJIeBCrsK82J(ypW|$lv0R1TeB-g<9S@3h=Qmj3Wm%?{M$A|dyE{BtV} z+8%j;_sl(B)fb1F_ z3!<;o+(`|1yEBq3R1GeRF-6a_o$89X;to1er-Z&%P-DDK=(iC1hog_*wGpV>{+J4ZQZ|Pg3&1nX!FAW~hv!mUWzQKM+XlFi{c?Zee zY%#Y8xXSM>rn9rK@OHCybBbXUb+ej6{XwywblAD?D#zqpSV_g~1ohY#eCktLLs#`! z&L!z_=ihF*S@7F*f>4t6N@RQjQT{%RgrcNnzuP?CiqK# z;V6;IG%ViZaK>=%=kuKnTI0boi}7bKzE)^}9MITYgK$Q+5#VE{0<_~B%A656CSn!! zk2OzS9|5gq;?v&nE3GEVY=kkhFJ2aMOr_m&94U=?I#8XDmiw~Y!`GN-Oi)TY0+dZh z?a}nM%INA2DBd$Pebgew;{UZC$K;Jh$*~woO?90&2l_%=%#??`Rycpg88wWm8xyYMa+crZ{{0~}l; z#|o{O`=~8h;_keX;=e9iBBS0kmll3ORGK0Fy{?B(3nZF< zuabE@iB4&+E%0XK{U1;#cXJtj|EHt=nbn3FvU323`_JLEzS++sTUq4ME|r#Jg+912 zU{;()^Hl6)lj*Cfb$@D7h|TZBC{USmIc`r60OViW9Z7O_Kwy0Z6~M|7_d(Mavor}O zpRK=I<*a>N;&TG&E#DDpH4$eAlFe@nydVB>kpNfv)XSfg@OviI{r&%73j! zq9 zApUrYihm(0;o?%cdigF7TRvif^o}~qPiXWjMrAo8F6ZP@l6?pSGJ{5H&p$I_fxslC z72uaw>1#CXu3UW@d(;)fx%fMnvGc8t2b;*{SxFbjWPt&U%#vU8U@jhpn_ksfUfS3c zS-@Tqj~j%`8GK=Lm6@sYNRx?Xe}#(IGaSgd=|10$59;#GQo+{;Qa&~UwFg_bnjf}) zo*gh^`NXm^V&mZD>d6i*?j0t1aq^;P-9`&;u$)qMxZL%lEeyRR1+`+xu1{i>O`V#5J-1D^Zv za|qS-p1bWS@>@h6$sX8t)LYTj+7`lc=9qK7cVSvC9I0PlV5B%_XkKfe1iRN;m@V)cW;)?dW${)JKJ<4q;A{>0Ps%=Am#k@XzyI_bpB!;{O(ZyuQAt-#Q!XF4dea4 zIrG2O^xxCse}3jV2KVaN|19(WA~h7TzGtKT)8qx44vZZAt}IR&;oKRCL%9w z`9p*FfV8hbZdO)^VW&zPP+&=9t`8GJI^F=yW~vr{K1*nRGM?QHcNE>ieqH9SY^G7m z#Fj^H&hj+l(^$lv(QvShK*q*KUm(HF81ig3g-GX3Z3q#&rUisuNEU3GvwLzsu0h;V zvcxPjLhHW@oD=Q$+W+;x0R9OJ)tD4jR4gf#bd1!S)eQFvZMD zOXsZ?x*m{TaSVYf!#`=p=x+i=qER>tW@;Qh{&YIu-~sy}<+LbR05ah3gDZ5W#RAvk zJW=YmXfVRHN;~3jBX%9>rh|GDbN1}6 zS?5#V6N_878kLXJ>!8=JUtz-`IhmTP9xkK%^7a z68I$z2-?-WqR=SA_V1cSeiONjH#Qf5nUB7>b*or}Ig*al@kRit7$~Y1QzT=` zhvJ}sBrc;e{kV+83)&;{&xc<8`K>Tm?<>_Bv}qxrDGg`)n>(PQ+|Ten2Dz^*66Gsh5c ze?J4e8wMsh=+?qZz7hd^Uw~=wi|NmlSQ4^ozz2#0I4rT}> z;|3iT1;2mK z4#U-d&5oh420{fvrp$O-v!UA2oVN;VqXkx%q+BM{SIPoVl5I21Oknmn*$=3a<0qDn zfBLFN0RHBD}o!sgIh&Llo zx9fZ3j8S|v@AMu0gqeyo3sQJ&U+w0r+tw(zWCMhC7-)ppArO7G_x1)?Qm_De!Y3BX z{dBXu`25ggGXrRpqJl*(9_LTFpC614ly3()#x?o|N4-j={Azysno+yXy%N-2rzsDC z&?wA2|Je9PNyCm3t0G{{K?$+&E0xGJ8hPD)4=D!QG5bL|gO$FN@1xe=dezVCs$CDv z#(|FSp;P40F~AxfWL7maK%=Xmbkx~HAXVCsEOy!nGomrw4F zpgF`;HSpxBNEZ7j$Gb`Tc6JU(EkiLWD@1Iax*mocpseEv{^D;0Y87p5*VX5y18Fw7 zbbm>Y&FBgzEYBB!lCgBcbGO~#G+BI%Ld&*2-S%kevZ$R=KAsxLiDbs)27xSFTzzcN zvCptGs{P`W>d{rLHcQZceMC;%eFuFNXo!dQfu6N3uY8*M^5RH~r_HgA22)Zl`s)WO zkNr?h=eg!$vti~K4tmXta2w4-A5kb)E(Afa`K`IR8B{Tpi-CCTg+@0ApxJ%@J;|Og z{Ckp#0@+w>f~@PyZLmQj0&LpkOCG9qbIJzD3MlB*Dcuo(I6U*W82L7hQ-HiW3LTGsg}`OAbabA-14s(!3Tk$3BYWY*I_}co zPxo!HSg^-{SHXZ0RCVlEmE7Wim>=%G?qr67Z&T|>*CUGTH9H5Cmz5G6Am%^?S=2UO&@nR%XMV@@hDI_2cMJxZAAwV*ltjqlucMh za`p-~#f=6KDxAd~p(`zOKj;Ta-~^bsfwIhyvo*(8J2`3&#AA~_>T$CiwoTL68BKjmxd0&jTC=XH9xK=@HqM)qKKPYvV=4GX(F{>~S7;dDFm z9C*8#rdM=w;&6t0>_N9`9lw!Fda3K;8Kh&+>SB=g04IkFPf1 zl(hu$kStOCOY462MK)yaaev11DMbw*e*jF6fD?BWqzTT=d_9M3b zDk$Xf**P=8F%(pUr!*XZ=sn=#$yHv^e(&ifY;bX>RdPbB?qp2@>}X6Ftv&_1^B&=t zALj$IafiOE0x6rW@{;J8~Al7#-o20|EMY?Ct6I4uo*`0Z_p7x&{ak+B+gyYB!Qx*RnGL#|1WOgi8;aiM_aO`f6No z2G7I{Mc>W;dTY2d-@KGvP^*uD20I_)opDz->iT9XFf{>+XmXilLYvAe>eaNiefw~l zbUa@S3Tjevnp#4Ke1aoYmb74qy^GWY70sW zfhc|p&kBe10NeC3d3X`Xx;U*u>mcQm#lfot4Ka!s zcb~ku(lPQsu&^+H>9AQ9vr*WD$F5fTJ9ZM{3BrWv<5J0B%0tfsAW-Q9G01A7e#Ya- zlVob<<20E=pSPpjM~U)+_9x>EwI~;vO_zt|_3fYTIK7RdsUnC;Ew5 zVcPX%?gzu8-xb0kYQ+*jqGni6EHTY_Mz&U(nQ%!&%zNLXz#Qo?JzAS%yWQpR|6%Vf zqpIxIwqfaJ(SoEPpdd(yNH?f}fOJSmcXxM(B2rQ!UDC~>B&55$yPE~?MEBnJxA(j6 z=lk*f`o?(1Si>I(*SfB2&Uwahp2u;zQ(mZMw|jz@vI7&{BblsJINP1sK8vN3PB?co z&nm~+0=;IHLqLNg_H7ck;_Gyb_%UszJjOW)HYd4Zseq zTp!)$77qbN-q8g6Q04`2B%&#efQKO|diCC_r9AU>3E%0uq2UQT^C3^Rrs*VP5~M{^ zM^dFbXWC4HBR4ds)3%Vk+LEc1E8Z0D6CN(uG1LUx5^!J-fu|bRyW3DQpo@ucR^4Ye=pYbxKSvbO5jPpUxa_?Q=5 z-*S)d>|#y6u6Mdz@gB@Pr)4$Kk-eP$LA)Jh*OVpHTn)kK8ECzgjd3-rJF|mb-?ba? ziRbSX*9@lI-|>{&+q;}mM1jrLGz1=GN?&!ly?9zY$F5t?xzl?dC>VhHJH(6xjop_* z8avtzmko0CAnQ9soi-V@1D8*hxj9pwR7#y2yHfSuOjeX`pA zLAyRNp4Zt%tS`A9!FZQ&4lDbZ?tF1=cx>9WIry-zce zJPfE!$b*sOR|-__xpP;mDDS8Q5RkX;cSQEa30DXveEUX6m`PRqhP!^P`pgo*4~$Z9 z>C)+Ib_YL27=Z%MN`d3Xv&TCMh)M~krVZHaBJaP5@j%8t^_?AI0*P2Fc4;%`aiVinoq0v-@yEY}~G|Tjq z6jZ{z?jY0qWcTGIOaiJdik+$YkntA-y>hk>1_7By|SeekZ4-TRdwkv04imtmXM; zMAG<{4yt)d<_w^CxLfjG-^_=IFjFZ|`l=F|q@d4-fzu)SCnri{y%&yTBqgYe@PH=h z=~eEoJxBs+;686^>Ww~(>VZE%q&TJf-wX|%$zN$*K{9>fJ3z(swU4}1Y z&V8|W%c;(zdWwwnXWus^yGrL_@YWr)k$N{f);ILXx54=-K+jI*r_4%|&iIFYAWR)c zzsU@i^*l1S^%6q~YLed1T_OjBpxa`|sx$o5?VAV3Lw(~r)VH)Y&>&1+qbSb9akahd2|s7%X?}^bqPzVXcAwno2y}6ZaETgu18h^vd8*P z`|xN!3rtV}5M!TY;uw-zI*%33FdWy4E(4t)&;cqljDq!?IL&vp$a?8RtpL{N^(zI+ z!u26Tls)3hh7qbvPZh2CCQ8`>*KWYc)H^Di%LDP<&d$_x>6N*Hq|>>`K&;ws$+^5S zqSJ;z6* zb&c{_3HyNbZTKwH*}Ian4wo0TF>6Et(I;O3yjjwmhVqtT_Vot zM#9F9HfHM$vwbWp`IgR+z9B`-lxOI=XRm=Iy0R$r7DPuMrJ@68O;_he1$In$*UO1i zL&u*Nt5}~-cov;s&E4Xb(}im~a)b8KsIWc_s3M*8*fM(o-IU%Sm!Xa3A{OttC%pv! z_5y@={Yn;!!4KqH2p>G|_bSYr_`J^do=;kUb@pn`&S?kNwCC~JmD1eN<;6U5J)}wr zrR-EQUucgn!4qpf5Y4A;64HhHD&wzgZ)AxIe;Ny*LV`?a=TO;=SZvrJo7;K#sZ7fA zk=#VkS#1#G^F}()Kk9})g~oH+!j%f;-Dr+PhZdi_Fc z=}cV-_|)le-W`p;t}+UoqdqJ{H!j)&7Ifr$?nArI^EYWo3>N)@#(G1KT`bhz&j=jv z2{cYgd_*HMIU?c~<*z1kF3QfoY>@UJEgSc^YB+tpoZ@jg0W~EJJ9cezg$4n_RI|AI z18LucN!~6%e1vcBZjEnX3s zOqp7Yd_Ax)hr}?x<`?B;=((+mcd2JS4P7f`N-m4H@tF7w@thZ$i&c~Fz0K;m+E@!l zPB^Kt6SAsr)AEF!H0FpSQ&5l9wg%4**$Z4IpLiPDw+|YG&s;q#Q7W=nn^nJb{&o>g zR`z3v*rR8_MQC98MkyZhsI>cZB$Uw5yDDTEl{EgkDl4S+f2oiCwdaU`H zYV47Ebfd54nA!|)iGeqF=2rb)GTmt1Mzoqme}w~VPvo}Dv``v4f8i->lGZ>vJ)~v9 zWByIdm-!}B<_|w6JLF->zsOmtQP4TqMrtGmCM_!E~o>590Hvy;)C)#0HHJ zhR$>g;zt>q%@%wM^`UBmZcL-5LdLqt>%v6{uc*hEHP7%FG|xH*N%C^pcsaE_h^Q=x z&}n~85++kFzN@@ezQ^d8eA5{0Nm;vHqFyGwQ*y@!n@V2g_`pVM?yvcbbH>hgIJL@^ z9Hv{KpKi`4fvp1%sR`F~6}aV{d4Y0zRg(a{aW}>iygi_Bv-<2=Zcfn$ZFqqI3HDe; zW=l?E*Wq7k{@&R?)Rka%0ot3kT-}F2wxAPZdkl0otH{jv=ORsAWE`(XQfu-$zn5=| zhhJ{N@fUOwnD^fc;o+=blfVX0+8BQsEgUjpiP&E#?=RaZwA}!Jcc*?qG{FO?23?tf z@bdhv%}T>^-NmZ<$Ik6Khx6^hssjL0re}_j7MqHw4iUwt2HtM)&t%^%pVo5 zR+$h_$#GVw(koK)S}9c`x*s@n(wSc&7eUN-a7i=g`_-GW4J@p}>a5i3v9gBSYmV4s z)D4$C38LOD`511a_9EuK$?hPiw4HKLwoGu%bM8@xm6=qa*(1`@OEbobH?4iGiEw3Sh(ZtVzw9GN+b*nZ}>E{A{>9?-?oPP~ryEO(xHZW}#)J zPW1vmFKzv0KS~>&BR~LeS#^1#-r4+SV1}{`VGV$BEvFZYMOd4(r_!zHyl%$>60D3`gQE{vlLG!z9*eEP#h;3KJK@!IcYog3%J1KLeps95$~XOz zjVe?BQ^A895rUl#Boic0sYBopp z_n+v$AD!l#^E6lHERZ%eS#U3FqIBxt3m6E{n;wE)ji}vzych}e(O_@8DdR4H>j3cX zl=-nYv_lB0zIk&xu3OZh2vEm?zhKPRL|-W@&O1mRfGr?QKyp+!FE8I&6Y{JQCA}7K zn2G(SBJEvwd-J{VK0WL}aVAxUz1Ds697r-?KZ?9Q__Ce(g&Je3Tu=nVl;)N?(Q#m> zL_dhPee;k)X3~u7w&rtR2N1dH%{Y1e-u;&cfM3w+Zp$v%J%{MPs+tbb-dy=$1nrjg zHO$($qf1R$Ic{h~OBG&LtM5)$j&2F2Xp9=fPuHmEN`vNo3H|}Hi<|6D7>FxUkrF2O zMHy9sE1pjEMPJiP2wuq#oN0bUbJ&bdz7e`gAFv0MQk|FtiAf2C{4=xsl}mC745Miv z(zqVkq~goZl2(pReU=9?GGaolrx#m&e@4i-zYoacE>|HVWl3G3M9*`=DW*ITcO2Ep<&PCR~ZF?{x1!z}IY;15j!yeUmd(6&x@ACrt0RPc9rmp>=j>&Cs zaMgI;CL)~P8W-GiXA#rF$I?*d1Y5D#WQTq!nIazL>>_JV61IH_;xy`L#8p`NJy_3~ zbP9iqtCmR*D07y){_Egw{yz>bHMnwP(GJnpoDUMlcI1*uPq3&#=dJD-OeOdPu}$>I zE=e+dsiR_y=8Sye=@20DP`-LM1@u6_lnM0dWR}lAA`R&9d6%R$CmU@(S}8M{B~E2F z-?WnX{d=n^`^@{Z8*HVa6M#TQUhl!+5Ki+{ia&^@Y7v_sDPi1dGyoz8hN}iXV-4@2 zu_2$Od4h1tJ=-ZoPLTAv!~3UnR%rpG&Mu{zMU?1=k(ThT%or=xJmPcW^;t(XmStq~ zSal3_yCjDyFl4O8SlN=N(mk#i8r2Cj1h^_ruw42E=Jm=$we`LAAe-2zkW2?9ZjbQEq|v>BOR5NgM)I8?nK(7(n+FXpd^13z z!uz`p;6PVx_NU1Yo4&j94021AFg?6L0iLvI?FUe$_U1M}?1mPBAcTVRW1og+L#a+e zU(<2@o0~@8*;;&(Ywti%VtBGy_{mx(a=I9b_F+diqejiSrT`f_PjCfH-~fFIn)hrashD2 zPTxy&l+pPRo&%pnz@}BLKu$xR^w{=j~}u? z^+bmY@M5>!G&Pg20q=WtZ>$k!uszOdGb|_Jx@I$>-van;%x9}G{7igP=gSR4y=K4Q z)!FkTPepCD$}!k_RM?fjv&&m4p(w|&&BJxtU!TzAQT6#?6XYzZP&1&ebt5K4Lj^Es zEh((m8xy5jZik)iO0Bo5FaT=l9rbWRUIDS8EU9E()f)RL4FHKIHP&nzJm9q0cGqI% z$j}?kmU|~FO9fhg3oS|;Yc_@qJ4}n}4Q@1JLAShwRMVHr8&I8y8hV>|-B9j!VZ+Mt zXs0IhS;MQs>eUp7$=jrDfEax8fH|C1M1EzFDGfEA?PR84TSg?|DmnC6fKoz89db0B zR|r2QPCEBwZMaRny(7-9x;A=cZ>Xr)!VNu&yD;N>eOx{`cLnO-_%M&$6zO7Q7=Pwm z*R&N-bo>Rqbq`F85y9q?>TcngynlJ>ouC2&C);^|8>6$7AY+b3Lb1mI8P9 zxIREz2;^lMGF62wVE}ZbyJJ>z7M&S`mfOU!z3Iyt9vc>K4t0lxFI$Edc}fM-`Q)Da zO@SZak7rAyIcHk0vCjt+&t!&|*~g&n6;elBammVW=I#TrsS3XH>kC^zWXNtKVRa7( zHpc6>@C2B2Cv7ZdK}pe_r{m#}=IrFZI=(MIG^!3FkoWq7-_P>+ViB-k%1UYRFWx52 z)t-G>^*AmC+61_#wWXCJbT}QLK6zKemjkTqOCBYthd)1676$p-EYb7=P}}OAMveU(R}P9IB$J;_x3iD9ZSb6R>ZxwvW-!-O*`AQ%7<` zLl_cKtz?9ZU4ITBn-BiX7%1lF%ia;VLb;XiOQ4&OW-@LMzu}Fe+`4HoJUIrEURz1( zaS7NT>9>k5Qm;OAxOqF7@~)o|jLp`#Qm*4SS-e_vy#)(?TBy~N_yTS1Fk4!5BXzF4 z>@`v4bc%RvykIs@j7j?>Yx!tu|7r0_uw118xoH6k=c6SLT-7C^lASh92C4?%A|~#5<2#3GWUxn>#DY<>MH=J zgy@weJY;sO(3tw_3*XIzyl{WE;i$G_ z*;8Nit-gK6f&26fOUK8R@Mg8ItnU%Xj1|^hwo=dX$R#4N-_KGVHMsk{k{a9IXT) zCRNitQJ zho}1H7i)FY=qF<-bSyi&+l6#95%@$eV_bf}m~3BIPo^rl>(v$uqOGWv zdX=wFS8i1l74b`4tgl}pF~Wp%!o5);FN;8hS1;*mm6OMG)C?ndrr#gNdNCDf-6xO8 zV!l0hi3M3 zQ)|%=Y&>|3c|QRC*zA`L?OST}{LE3*8xQ5f} z2jt``-DCBu!aGI=L2;fqKnRruu}KD6q>v^|JClq;*=U&d9oc-&Ik4q4u#WjhK{%RYnm#$ERIfAls97=B8ZPFUmbaDl zuV%tkWV|4M#IPoQq8Ci5bnzatPN=Br=iSJ9=X}$`@Q-jvQKuyr-~uGCBq3jPs^;ol zBRxMzlkLQs-i0GAsSgJ{vcKd%GwTuwB}^qDT4JAYJOCRgQf-@ zoE9Pu6$P}oM4xgjy`&hE758~eJ!4`o{-)o8grrAmZNY?_}nce=H@u|xUlsqEbv`jS?-mK+|m z%NOhoxfR8;>7)4`>;YwURQ2Ky`oz1z#Cl6lxPz|V1(!Qa6wENG)vYU0?#i&Jq*AcA zpd1i)7w;PjKp$2;j4O8+_yS6GOAcg+Y2|B87XefiET5+g(Ufu(elk&hC|S4`Z?+s} zMohTeZWj5mTWt}(hK_blg)`KQkg#x^5W&qdHG1u_?`Dj*C^gUR?e64I-p;`0+?`b& z`yo{djJmLoufhxMKlV;}q>btqk~DGb+w6N`kbZ6~C|>+B^y57=QFd?FC%mbqV2({C z#rJLmLVlg`vZBNlpwi<^i-+HgpjkG*+F6E_;^f>a@>D}%qEeS6K%EXRC>)X3AEnQh zv*ZM*$5z{SS*#0BboikVV2@f-+D~LfC02->w|rKN#u*>lF7^EIpw19Dez&T+IK_eN zfg_zhfw@OdO-HvauB_|vptTkwFY7gBovd0qW1OV4>w8wZXd+AO&VUHnn0}AIS18Ub?^Y9cD zVFB)B+_NY%S#Ym9lkfVGcM$3{#zNBu2l=iqZF1xdld#b#!Ts&M!#La(#sz*O53N;O z0LV9#*z%yYn!u-hFnj?^-JjpLW2YilYFT_F2tOd&c=N+2FiN}4X}|qEDAv+bvtxhI z=f2TZHb2j&I2;PAx{*BPKvv}g(6GxY7$oMjIa%!FteYiCQW!Hh&r5q7%k3MjaMG$?t|(QcL^i042Cqz|%C$ z%o{g|Xr-K6==7g`*%tn4=v;MA)F%x{tW1wqFUCWF>{*4jfFFF{GKoy{uzZ18cw6RwYR(R=1_FPkG>!ziv_3QW>0sJlF5S}Z>H ziJOZnn%hQ3vW2tDsoMm>*(Dk${mGWVl2RKP!dDiA=3Sd+by~T*^RX`;J+;W_jfPLB z25o7lU|i!2pq2b$?W`mDJx%e^tta$I(9_Q z@W%^WL(FDryyC)B?sY)Dvb{&!I0BB7adrBD;8?aTIf9G}PpRGotMUlahr;4Fi9an= zzb}lziHp6{a_=6#7B%?B6QreNQ_K6YuN$Kq>+vZ1BeFGy+9Ol6VK@7vM==rPJO(|V zeeX3G_GuQWN`yZ!9|@eWlX`@sjP~1TwdCwa-P8IWLZwrAfiET>T>PfD;^I`Anv4~`-)s%WXOM^>V~|PaWe^J?5Xz$@430}})sJpa`u;jvyffP( zhW7#?BGUV;1$G6=o~d=r0ayBEE5{$hsw>`pQsUz(A!q>YsJ0O$=eCng61c5=6U$uS z0z~~3KT?Y=J0E&LAJ83;4FfV~#bXB4 z9=!2A(*LN?YN46o^`}RgrAx%rZF#0+g?S+2x#(Ui|6#5R97qL2^(*+|fX4c|%+M|Y zU_&fpo~p7{7i}x%$Y(`xXpH0Fq5Azf2JbT61m|vb&U~1j2>Bq6rU+;}<^?-&jaP>P zj|%R;e^9yM;+yjIh(4K&=I11EpDd-0^`XC}%0wmhbF^p$UVH7DSG~U{HsDwN~vdbSO&@d2=WGv=!AhF6<#8+Pb z{qrrU5lDh4g2ww1AS*xe`3YqRX_;y6ho9&s2a93@9%d9?h~J|BI`it7uh1dbLM7nT z-}~<$QQ=g*&UbioMwKy)plQqGXNZ;}Agt$`YfyPty`oas?#`qnpdd^3M}7qEkxKRN z?~VFlf89l>$!wi7w-J*DBNjQgs84rn*mnZQXu)lI90mu2AqcpcJ}!h$&AuX0Pv61= zukc?#9yl)@cfY>*^eE@eN9tUe*|MPzT;V)jH3#92Abl0<+1pEvH0Y#hoC0?--r0`d;EV_f-L!ex6|LA?fM;SwlqLO+ix(4r%2nAw2GC*NSa;DB%{(X&|;(ZLlDC>Gk zT=&3fiT`f%{&962cf{^{XH^y;e4YAdY>l-z}~Tl zp1=N|zY6uA)(CZZ>g>~)*Z2K-By3KQK>eMs06!P~m(8Pw{i5mB2455uhky3zfBYk- ze_8)os3ElS0kC}6;%#C7!wUuf_2QpNg!Yw9dWq597oqcgdH8oO_V>^KMd9qeMua&C0JFP_TA>)>!ao*I6h06(o^k{auhG7>1()Cj2A_cs8h&tsB~J zj~5ej(LwOY;DKPUJm8lo$nc$f4#J5<$$B>mFeMPr;4uCRlxP|Hb$6z49)(8#U&lj~ z(Hp4lXOplu$byMea#=Dd!K1pxpdt~)s*5~QW{f}bP0Th1{K`5XvFV?WC(dUN>Jaa9kVkD*W!^ z19-ZBMvibP@ViKN@$9ZfmH7W<*{m$l$hhrP>JQrPmFsm5x=!Ix@QI^>a?Jbsqh4(= zgQb_4ivseGHPZO&xv&5JxrJz1^g3iYET;WZM>~Ig;Pl>|sm=9(X-3Y3>uvoxU3LG8 z8H=<^Z%MH_T$yIcbnkz@4Vmw;0f=;_w3<_bT{ zifR^beXIz2xg6cMXnwn7+dfrhoDqQO%*juqJ$D!SQoY3sdd*{N2hVng%|w;Jkt8+y zz89=2_Jr2doXXfs!~4Q&JyU9|_fs$T2K5OYmTFp(TZgyVj{#2cZyOOO5Oo`*s&^@~{rUdKm%}D6I8+dAR=d*-dcUR} zu5{hcXHbRw_A`Q*I6-JUwwQJzcL=T3t0}KA?1d)gml`+jF*RjIA8X3=f@|ypMy|mpCJ^4w-v{I0zFZLA+N%-tbB!<-9Y-KA>Eow|HgsBi7G0m+k{;TbyRI*~rx!GLx z%0m9F%RT7rFxY{^pq^U*2!HwfKy?qOk0rXTM(*%zjuxcT$s|8c=ZMS!1GCyrS1--9 zfE?C{>mJrYbqdd)jrM`kd%c9c-A?8=mh;F`5Lw=d>Vry>$pgF0F&@Ki&?jbgBm|zyuTrg}CzHJ9%}?$L}ZWc`DahSJa*MEi# zf_Au%d53*mCRMymaxnpV z=?jPLr&#{zeBS}R;ybfuU3Ob!3eHsGR;fFXGsQpHfTUbi`~F$-Q(V-FqzlcH{yW6D z#j?>0GXN}iU>Bou_E1Y;9%-!uw;6dTim%|OK=hn2_p4k2LPj|^RAkvvq5s(41&Aev zeK{6$*aAEc8BoHdoPLad3Or^zJ2DPNBB4X~vjP=|a#y(6Zs;-NS~) z6wgA%KEAQ>+$=DCnhj%-&-^>kK8z@zdD{2`Y8Yuc>RF&Blbgijxbgmuveo^SII976 z%5&1oBQo3?yfl&?`DGN@RnLonJcz<9b`@CSL|)#L#=glzOf z&0rGzT8AAa2%ka}sLCw(A#f5XHYKux_Fr# z=duzLONhC1dwmp{t5gt>c=a%=83EgEz5n6KVrT&Y{Ck=Ocg(`1&0*(vwa;8Yhxjmv z-j4Zcc(rMx?w&h)&le(|YrRCL!u}LT#kKdVDthS)@vw8j({PCwNr2gt0p_2l0$}VL zP|q-AtpSwWiJ<4Hy2Ofu7)KjrRAn7%%fFFWc(R@v4RK>0DnTx zY5z?i>F@By1J~+WfOF(0S1EZ#z)xKt!A&}8#Vg*Kj7EkE1kBI-nw%pvkdAQy1TqSp5PPjcmFtkb;c<*<>%mn=U%2j#^I~&PWE}Gp0 z930KW4F#u{uBTsH-#HDN&eS@XD|ddPm6uL<9!-L5YDYoCi>SuTwy*$(DkuP5c0LUr zZu`rW&9Oau|8x9s(%NbIlU-QI=0JMw^Led^=X!3`7VrC(F0Aku+a~b2hgWzOPm6Nht3z*kYIb(!CieptNiEn`Iasu_a~^`QPNK-TGp$O7Blt7(;oe+!HfTKpfQ z1b`OB1-Mf3{mNP+Tw09ZcPdP!Bdln(<-o-I=(B!}S_tkYFY3R)Rj(Ap4{A<=rO4QB z@;(fe159Mx$9zBpo}hA+|H=%(`pNS*ca{|RjUIDKrC%|w8a?ssl9mv{g|yevZ6>Wj zI-BPQ__=NuAq%aeE{9SipVWIhr z58q2Otk8B;xC28qt0`=B2rGOd%70)ZsGl3_aVT(>oeviMK|N=h`<`7-f=sSRAhxPB zC$m3zkC~t}gWpR&B>BufmKe8a{W^`B_dEFh51@VdfW_r_J?G9rhN2J+X35aQRTtmF zfg-bB)$b(gAo|aqH2CM9L}uWnN`3x`V=3*`!$2lrDIUpMUA>ibYP1Fhj&9>f1w7Az zcVmWR>`1de#t0Y#mwRVUB_wVDldfhf=Uv92c=(5(A)P^;47qQU=oLcFDR094?5tVs|sm-@u=u{O0)CAvwZSli_<{lVW&8YZIGFN_80bYz<@NPI@Ij2#$R;t+FdFFwyR;l{nRsP)>Zxb!jyNp z61&3SdTKUFMfs)~!N8|+2G2)|X5j+a6T*Llt>ai@hu+h zo9qY*KC-Y}6_npwSr8L9C^v~KAYtuH=gw}Phj+V*-&JTF`O|7*nnkibO1JN$MK#t_ z->by9Q@VH{;NepPRI5KHSOYEmuApvjjtb~ACkq8LG-d3)F3Z{Hf!=y40xe^9NUn$ELDKC&L34ts=akF-B zm7&`RlXjuW4UI|dxiW`|!u_<2xEkvvE!+n$-gJi+=enHG4}-SsTxxVd^G(!ceCpoG za!cKSL)Wb*yb|HR9sBzATrdu*|E$c_HBH(ukABkc*nB#t%1U};qYs1PSEHqW&2zPNS#OwCG*nYOhwJUXfD z!SAor+4P)bf!ljqZZseada8O2Z_cX_(p%XKy7Oyivt%qejQShTgS_1%(h)&U`yG%L zQ)igYhy20e-umbrH}J!-kK%x^UOb84om*odjD-DH*J2Avgz9iS!6giAx_W ztoflWDS+UfrhCbJ4Gef1rcZHWpgtf&Iv^Q4SniBAz0c#+y9GQtEb&*bn#PY?@j0jo$@go42*Y<5Fo;V5v>!~1w}Pxxgkst- z2Q+K>=bF*DEGhR0Bg2qq-g&i?e#`hF zvx@lxu0!{Dxyk1$BgM%oZ>c^kJak*KehV1kYNWgJ8E;7Vea(V*nniXdM-+D^Wt_}w zi^3fi7B;fBf*7kp8cM{c9MB;H0WTggL;#yzVSi`U0Fu$>6~+kcKlid$mC8)Yljz-x z5&Ny-i+HVUPYC(D%HAZ!U_CwOMKUf$HD{7nayccv2$hn7YLyDgqxsh9NDGT;Bg`ou zvt}tlu{<1G`I=VyJ_R^5G!Oy(>5#>T*C4q+w5gHD41%t!3U{z*Hc(TdQ(8VK@P-oGS9EDRlAYx_YI2Y3>88OWw^b?|&Jz zAsDf?Gz30hQgSO!VgNZ!4T@2R%i=wm}?O4M8v0O314m|;{7`dR9m zG4Fi`<}yymKVE^3i;w~&ao>rU)V{yVctbl@zL=?2lp>$y@wCaS)OBXfoJMqvK{5A9 zw}XgJ-<486}W-I=uSKTFl-pfl_xV`I?`2s7)u zLqTPp(u23H9VKC99o;$*&`MbSu#boB$MHCt{c;DZbCCm5ibT{A1>X%lyMA=y_UPL6 zMd&h@OSvW`x1C^q;(_2o(`9ZIjxgdk6T=8|)IX_@0cJ-PH81ZuG=f1srJ-ibP~hfO zQi%2ghZ>@1xlb*zhMkMdXY)@vP1eOjn?;1XdhlQaHAxTP3da2dJ2WfqKUJZkfuG6& zBi|%s@Mo%RYeC*)E7-1U0D_uvp;T!17g7!ryYJ!Np+10jmJ51$g0E6HHUaPLSQS~E zC!0;rAk@~u29LmzU%HDvw_#C&PVt4_C@JI2?l$M z#VKGM#8L^|_6gWe&390ng%e*C5EyW>{iK9W4Iw0bpscXCB`H?*>sBLxa?qCdLx zNb=(u<7`Z`v9UW}peGE@g1k2z=ID<6&grh7axFa+1w^oo0NZ{SO)oQ`&-x3SCM_O> zU5i9;sE8SF_;P=$*LFP|!U#+L`S=*1GC@KGWx%a@6Q?CBFe>FMNGHyckC+}#30$4J zD~3}FG&Q`2I+>6EU^Ys>3EPj-5?|-Pwvs!Uahx-Dd4gOf!L^6Fp9K|mx>+Y*31I(DY9K1O`m9t-A^TC5H!=(xB9I(U+Q#MN%@OL&gxT0a zeaRU8Ms>B+mxCFlHDzWwv&s2R);nLGj19{iUtW+5jrcp;o*devRiT|poqiU)R;D9d zlKOOgVNbQ0*dDp1JZ4ci7RP^JJ?tcgG_{ar@3UCWR^~b%5!JvYKWpWrWw|tnPx3wP7xC9aw`D6g z=%K{JF|GdfiMG^X1U{uH8Eu#22JoeJOo`=XLkSsk=aZ2vUhob9zjJJ7RK@Z{AvLjnC>U5w*5hUN%-{X1Nj(fAGB8;Y1T&L$3hSP%RXztR7x4=KKD1 z84bL5Ldt0|oXCpMx=REGZqc|r*8_2x|7)Qnly(>h>&g=mj*Im=@p4~%q^_w?ws$SO zn@1CI5?j}pJh%g9?UlGJ6Jgo`>Dm4X9jV6b4|j}(RLR)FO+dgMTH_DXSnEx)P0YA= zMsa(kg@Uw1;(k(F5nxWb~tLo4?h-nZL`RVIVZB|Gwi@4k115uaJgTGxo99eYWr0f`a}h69fRMs_u3}oD%rZ~27})7 z=WjZb_gw{X%)i6q#bQ8F`uxWEYaObum#(;Fw&$1{0x?P0suX=)ySc5a(OT|nd|cpZ zuKvv9Soq4*uxd4(w|4}*u2)tIPw_hH<4~;^u5_^A{J2j@v)x#?~H+LubVX(BG~hav$XxZE$#pdFEIWX0Zs zXS?t1y-vsbi7Fnhq9QWzrs}(%ZpV79%G=YF>UZVhtdA!%YgA>YG!-)$zTLAp0n=~k znP(z?9bG%aEE2hF#hpERsQP3V=4yBBbxHb=4ST=F7(O1OoDFB!dsRf?#!??-M^eup z>4Z=5W2ZljW|8@*>P<9VIqD_XGWnuV(F#KFfma2&fX6!xxa2Qu#h(w8lf-s)m4deqv2Y3vgvw?`G%ue1?nyj1CyuffbMo4HR3+<^=Aq?# zxmgqV%uI$14Ub+4E&7pM!(ZC6=RI!OLQ`{VuVrC$hCKHu+fv^~kxOPFu5LEIHlYY;M++FKh-C zVi8dINW73;(1}Cj5$zZG9!@$I$_jg!$I4=}(z$e~TO$Sk>uthw)h5T1*ZXNTTD|vm zQ+*||>cXVIzI-ik9Ot%LD&&i70+7AKd0S4LE89K}B{1tbnz#S^$G{+w1@X-$V&4~E ziN;V~0o!}Lc~vDIp0HTyRE{`WkO?x^CbD-Zoj*fgXplK&65yrlpYNY3fOg~=2QdPT z2Nq;>QgPW5ybCXZ0x9;|C|pca)fpI47;^A9PkqJ!DM0iyYzd;Qale#21@ty6gY@oW zU~8BQJ0=>-W0sFzobcx}3!FZ3WjF``w8-@IbZYWCz(>0|J=+tYV&>-`ZtLcEcj*%G zAhI0sp90mXqFjp^mxYQJjLqv~P!XOf!w-t4dyT-xh+_ z19d2>Gd=~?8zKe;(aL+wcy35uH;bY1i+CLzc+Q{^_NT1oq=`MKsG$=+y9s(h4dNm} zQI#?GvE1&8dmk$Vy#tTK!of_^yt7$SlO6w#VAIxT(5ICZ6ZiLLPPfi#b|IP!^|Tsu zprJZr>2mx`1Qo#Iq>7~m<`>w%^VZIC_Xs}8?_G3lB6@{iWN{JKwzHZOd%2b`xWD_j@iepVL&o;n@e^}?{ zJoZ?T1=+L@q|ualv6?p3*T$fef zq0~sOq9U02`ct~KVr`<*5(;VtNj^9`@l+Oo>MHlpAleZ9m|{njUtv_57x~%%1?xd} z3c~631fy`iWZAK@Q=@xzUH6-|6TCCaZcND-hVZs!;N>lG#^|o!$|P~)z9qK3-W#~u+)@GVdIlP(O@52XR z3;rHrco~jW7I$UjNZ$Y9>n)?IT*J0qX^;jWsPVTf?*=K1!}yb)cy_iz=ES&0tU}2tHO$7JGkb15_#N}kUM89M4i^X!o7Kx zu1#ftwj;U)#lD?9LVEs2!{KS50FHay`(_+aN}GxfV@>(DTuXzjuZ~MDuT+p_)7!^1 zV(xqdp<&O3LeDaj1#nQm*K0x3@n}D!MfP^T$w<^aY_RVdaw+aW-)_oNK0CML;u7d< z7I9HwA=s`B8K`3`dx2*(_&YL)imHW-X4J1{;g4R?x&2z*$pRZhJ#tv*WuCIKPFkRr zW`+D*xQo^9Y7CPJ6}5B-VgSFrVytqZRUS>P5+ejL%nYn(39s?ovkY>-?*9Q zrs|%Tbm>B&rb-+x(d=5E(O)u(F13WOWb?w~Ab`pVtHj{d^^1$2U5(~TK%T&_Q%neV zht_Py+daM00uZW$fXlwI?m4m7+6KVrihVx|{!Z9v!J-(#ZZ*}*2q4S?4!dz7p^p8L ztp^xvV!FYH9B!AWuMYC3r8&Qs&DY_ENaur|819eeJ+xtcoKt?gs6} z&exM|Uu(nB^GoN=u2sz|r^7mn z!Kfp0DOC98kX|^1>(LH*RFA5AyO+7G2=MRO)y@+I+k@G8BBl;I3fivl$gKwB-&p6W zXKVP|2O^Si8xB#o?$6!i$HU^r(Ar#T?e@!-gswNaoqM!gTwRAS-n9I^z%rQVPs{ z=?Nfi-&MK-hh9gxwMw0=%Rz(AbOVyan%*fhdEs7<#ouNJ;t|eP(4*m+=7ngcfd)%j zu-(?kCydpUZ39H?j=;NiuC^{(n75}FCi?})NRi4(9r>N3Dk4wFcqij9$j7#X6p&NW zCBq{0&Z~G@w2|6k1p1Q&B*O^(hLO3cLrfpbFs6<&9Gal~M==h=i0;4$1Sdsb+knng zvN|Gu$n59ByfaBBjxI?plpfTN#OL80#{_Hy+V#Q-5a&o@IRmA?NxmLRh3a3PV=ZYp z$024M&^C!iE!rR=ODd4hyo3<*-JVLMs#WcSGM`L2dOYAYey&?S`Z?H$i9AW9Wk$Cj zJKcwxUU$LnN?sPC@+1y(krlYjB$kCjPAZvG%^z=wHqeFH;sfQNrLm6buQdw|=hHj7 zvQTM^`j2Pb_miN(FXqb#k6UUw!3G+7OPbEYihje-T332w3W*f;^A&TxH%c_e%%zE= zx7LWMlo|f0t~LGhV}!%_V6IM0lZ~P{6i%dE#K-824`T{Aa7qoemPiqoOyXev96dpY zp0R2n_f^@&#Sf<+LA5#iG{4NU$)4o8&TfmP4Ce1=D{AD6qJXj-3XthanjGw=zY)tQ z!zpVa_fBu^zaZ;T#%+d>qy+OPab?9dCRZ5`%h&O@c7pRzTHr#Rrh$U3224`*BWo$% z^XAYz=cGZf$dUGri&0Ci+s*k}B3a&-JI?jdV!8dug$R*-g%pFEmCw%Dl0c;4jZD9D z(9Onk%h`q$4bau`jat5LguD10Sf+nL5qg6r)&W|5TYP(EEX7peuH|EYoJw*29C|Lo zP)9;G0_=D06?4|!zWLhf<4ow4$P3XTUJ1L)^9)3`MjI44H)3!lXXs0p`0=xLVd%@^ z6wV;4^Z*(dVe&p%p{tjBhJGWa#Q&>gs#uVuzLF01mpTV0QR945mgmn{5!09;`Ko6D z7=c%sRXIQ^oanR88c|3)a@*~vaW&q4 zN3BMK(eL1w5ft{GUO@?2|3a(G*(;UkRY3W@oBQVDnI|z0$Ec2FL+y5_;6%rirsO+L z$g{84!G-AD^yhzbb^03*pOIr#Smv=kT<0}ZYkp>y_><4&jk4uiznhY>Hn*6;jkrbO z7eMJ1{cX3^N2sE;`1oWnm_@IlAtYN4L85<~OQDl{>W(Ne!aLcy*aCV~Q3uIUJwp?? z#%`>SWmQ{NItArx({%J(6H!`EIqkt@4GU-OxRyVbbw^lbZ*5ks1j?I-{8TWLO~&)5 zTq=>WK8HQ$9pJjWWQHgfs()ZruWl|=6{u^w^z#53iHhMt{nn4)+Wgr>`+0~KK-T;u3RH8+!nw_Np%0<% ztTC3LcHU=KSeHXk_ToQBc2#pApd+MXS6Pb@9Z)j zb1&_R3s&b@5`WbWPn`RDnMU3D&%`$jtv)&Ir82PI=3NZS9yW+}E{VU3!mh-oQqiQ1fFn z<8N{=Uh8E<=Pe6^wJAU|xNTJD^j{yiQ$;cA8i-w+!e)bUB(5GV`7AXW5f@RomxqvJ zqW-?;j;GVd^MG3E1j_k=?0@`-1txf6(pwj*^$uOJJ8bnpVEQjXiXZ|mIXGwO7L3RQ zo-7AYSXn5J{_&=Q2-EgOzYI=}2$G`0QOf@+*TveRjn?iH&+nK___mm$#K}qk)v(om zvu1;I$BP2!G-=CTD%YS{wm_8J^3k~|fbx}ku&AlMYd^p&#hR?SnX-=fMQM^jmm6MS zF0j1cr+93a{#Gndm8*m2LOB8gQ{t~RHa{9=>hBzcoO#}Bf8Ue|#BK`+i)kU6&@YzL zBsm>wpB6Ic&Bn|A7Dm{Qg0YET$ik&tDbnO|5Ey8!mK^nTM+H3#9$*{vx_FL5VitBQ z1)*04nJ_H-h8rHs`LBj1waE1nv=CS#uNE>(AtATQyP%f8B5MO=^9J!-&vji529rM} z7x1a2btVhktg4tKSct|j5tRSYeZ4u*3M!=?8e7CQVGr3=Kp8;0+6WxL4Si>Knpx!ATS_Dn6Oo3Ef%)9csPWqzJOX#}2iA2KAJsaOdkKxH+jv_9iLj^gacp zqThI~(wV$-_c9@j*%D!j8%8isJ9D0$L14$OGq%#%SGP`Iy;~zAh<`HvRdBW@-CK>0 z)|D*oWy!+;qj1CMIeW|9MV|Mv&{bndeEH0u6|Q&ewfKGki?~>dPR$W{ia9Kej0?m5 zuC5;eC@|11=3;B*yQ?Rz>!DFHyOyTw>v67-AmX{8;bxA=maqQ4a{e4?zi)@r1I|S8 zD`}u$+nzB|kUd?V5=Ke$CHA5;^!wE;)z+j8rQU$E6HP=;(n zGVbiwx+S3rEtI{#Vuon{3@nn9<#^R>{9TV-uw09?)4!a}l^9bI7_ z`^BV@20BNt`)F4Gv^kltI(OnzgI$x(5cc->TM4YdTQE2+@cevb4ReA5^&{{&hdZIn z|A<4)P|y9FeoaaY@Ddm&aa893yt_SRao#xTheEvGP;*f0bd**d(3=$u`swOj(!~=x zTK=3A67Cu7O}}W$hPJneECPqC*_uw}u?3h1qn$72sBExbPy?*jw-pwQ3M==M9)?09 zjny_760Er8!plkQaz1>w3HJsA9puPD)o|@K-()7w7kx-7(EUJ*T0Ufut*QMSVtCbt zts(Nary(Df$SaxXk!^cDZ zEPQ(W42DD7V7-zxO+efpD9$CD18l}h{J&U)yW3f$)v-DH@Ze+Je}+fZs+_aIRTs6r zCgHZyd87Be4so#+schdWr3J>9b@_=hx3z5`$#wPZngV8#+f|p?ZGolNDIJ7GrBr?P zsAir-tXK33%?G}!BH z3M8t+-aPujVTlUJnp7!^9i|BnJ?_qDXij0HKz`6`YslO%5qs!)-grJOeAgIyi3y5J z&^R9Zui<{2p+P0bzZk^4^)f`lHIN5%sEO&NC#q)u$miuqIqx zlQdH3y!yUQ=5~5!bivjzZ>4hUe3B^Q@KCrXl4&ruFm@yzw84TkZ}AhaqgMN~kJ(l8 zm1Tll1Im{1DZp*;E1p9$DO6jGU|EUMqr;vgA}DogIO#EWF9w4ByzjO4DRz0c=X($3 zOGxY=gzn0lpBkd+t$-O21(Hkg@BoYfuSU(|Q>EB+&wb2Qr?}RisBAvBUAyGk7hvA$ z$S-l1^ww4?%y6>CHk-#&=Yb_&2Xtr)Z3kc(o^`myL^^if#GDqhUpb{}$$xUlmngAL z02s~AL~g5}hPAvbk;EmH)oZ+M&m%O!)I4QqE7$Q>68Xa|0XdJwY^uAn>$8bG4t+Bq zpt>>Z+%%1PZ1=K$Ef%f|1(W0are5rio|5r1LVVlWFnQpCaA;KGOBtGf9uVv^!77h< zsXq6@;>+4E-zwLso6gtQ{Hn|R0+LGuo`{PDfo=bf;pjvIH?G7fSM_Mvmr08k-o6V` zA8N1@Ub$5>`@>7nCTJg*d~y;NUaNOL>3e_CRDr8EU7nM5rTRh`23PHNLTEPCyIJx? z@3r@KOB@hyn#Id4k$&}zSB~@YD|b8)B%3Aevzi;tkGE7-y*eTK`>q&&i3(_QbW@vV zcwZ200WqQ~4zRfgS8rdxYs%2&5A{14wFs<2$4*{&-Ag%TL=jXA_=&plQ*u!S?6gEDPeO$&pnhRS7y`hY|dFm2+w=-cGeiOTM0kK^tS~grH zF>^>f!WkA&H3~I){5o*{KJV1Ere?o1|2BqW_4GVgKIZ}|FgEB3fk1_q%B!DM~g%m+(4-$~{35AtRT~pDW93?`0 zf%T~y^@6~q89|-Ves6j{x0em#RBK(zHK)QM{iri!yLH(r0I;IK7dZUkpw^I^t7I>b zw~a~u0H7T7WnJnBf~r*>BFP36<8KXNm-3)>`5_b7LP9rOl1~_Ol_&C57<@jhZy7wr zo=2UVQ>wKiAzL}wC(JZwEY6%%`2V?e?Uz~#5|2lMs?p;$oyFh2zRRwm_<@xDYlmpkTh4~g|1Bb>RFehh#6^Hq}Z4q3;Dy(AK`sNNt1?DpM zPqB>#lO0a-EQ%0lUT}^K@86@{oUAdY{`dhb1301w7_PWg26ab3#{ZnO&|Dj07i|WdvU0 z$+|o9y{+0N%lTfiL9u2A{t_HF2@W?^nr|fl8Ks>?u8`bxg2NKxtUfqT5JtZ{01gMmHh_ONB=b4KgpF~F@1Sgz>bUYcS{RRwwshnMlbB}M&2Ck9U_P@}i^#YD2XzO+u%KB3V zfq;RQW=Ng=`hGtBE{FH;@g)tUS)2yUN2hNF!qzm6v8lI+qQDhIG-YG$tlSLJ?AF~h zW&O4Ky@&V6I7`>IYVA_h>TS|#*(n~qYDyNt$nZD`i-cHZ6O@pptMla!s91OdA*Q5W zj2E78K1E1Er>l$?JW@GhAW1LBDOZGNk|$@W-b}F$!r5JG(lcdSDTm2MH{X8Dhu8G`^a<194)RD>`N_zCv9cPf#W-4d8`OX%sVVr?BLH| zk`cAC{dD?SMFDO;2C|DYZS<%2;~Vqe<1~VSJjqavqta5h#P}dfritY z+a|2-5%xYerHBve8xW^1zqbAFYh(Qi*>3BYok0HFlDe5ogR|7~V(e0?t9B06koVi< z9C5tOrLT4bpS`NNl@~4rdlfF7>#qO+i0Nr-?Bk_X|JocQ&StGpsTY816e+zpR-)I{ z{TJr&^CNw=<6FB;Px24nym@rX8J8uT=r5Il0@$1Q%1CM`S0K6WEYLi}M*NN*M6c?N zw_$@QLYA!vA;j89hQxj$a&?W7NdkT-TG7>Hh`WV9cg3`EG>aD{c^4ke?;==5qeHs; z@p>h*^XUFA=Yvkbh3KwO^m8{Pz^tV5iN2z(21n7JD)(g-|vvjUwJJ(>tW+)HXrwdv)tZusDilo zbTxrNML|XL6sIh{Kqa|S!n-^sN&b=wxuRj(PeZ>I;ah1}l~*1SvCAi}$I$iR*0#mW z;l_98ZFQ=s_eY`XhhWB*AGn1N4su9kGKa2SoDRLwJM!4z_H(#QVwHgj z?61YO6$LSH;a%3>rNGW@k;47Gu8XS)xi@~@T@r6WbXpMwqHtORjJziWOvj11Y}te7 z&%hwPEn?B+D{3`K*C96A8~4@;0lw1fclJ>5XzdyA{GOWX;3G@^LQh8X;jXpcDdg32 z7_%L$NuKJ9WvAG>0#taR9ROYvLtLS-SGvuz!o+^HbOql8RmYCtn87ck=fn>P`q%!) z@yHPqytDg>5ojw=1)5hX$pWQnD4~Gtm4$$U^&!7>Y}wE*yIyOdyf+@Ho!)FTOQl+b zROr6?Ypm#@(V*{!eKlVz3=Xm&Mhhu7y-0(VGp?%mRou@x3iWW$GBpV5cRyjZxB+#h zOTC76zF(#>XO3`ir77;?uSd%)wW`0>zT_^Y`03HKSoVFTOD3>DyM7+f8X4#tXeQaB zZwuI$mBbI`K|YvX^~Gz#0*ElFtQ;)pfR>9AB8>5#riBK-M-+@kvj1B!>Os7LPp^nw zaI4XBhUfkHz$qhc>;dfISD2)^W;E)ff3YgfeiwE#l4`w_+kTZhRD0%fv7iOb3~jnk z(5ytqp7eKbly?CB((8C+my2_1KgGEEKuM!CP#&%YuAdO7X}NASD^6LH#E$?9wk*kI zr9ZNo>QI)@V(tc)8gCP7d<+Z2N;vP6vBEtY^okF<;Q$Y%8uG)rBEqBZXFs1syFcdh z_Jb1BQ-oQ4$f2-}GY3;{Se2p}&|Fb_l*~6hcw(JDy`XK9(mrEeKAEINw7pG1wRt~G z2T9!zAZKE^ZwcGfwhwL(D=R7o=BFM7@q?_x#bCTDA5Ywx`r&5OoE!zAkwS#}y#>&( zl>T@xALjeoW95@z$X{Pql6IM+7zk!}>@@CiKkV- z;aY52LGB$cIfp5H8AE+0kf;aA%#gcGd?#p3&aLLs04t55e;O zE>f4sW=a%!h8zY34I4aOrKUQP4S~{2bxe?bzt@71HZ$l(XdC)`0Q@;CB;*!k@JAkh zrKOz*Wl%8!k9>UN7~)9u@VrqU&S#z;NgeX!) zGDO;mgM<@DccIaT&-j(ZNeZ9+^zO)@T%e=&tkOHXueGPj4HWw!KxxmSiB!7v1`V(r zMwXvABoJfcqG3n$J6+zMOt~l_?aTR~TugLqgiv#kGN95Ekhx z=|SSY80G*N+umx~CMeRZIa}ub&sIa=KFX5TvDylJ*)h=2skyJ{lWkQ%f86ke9vhtEH*o2gxH_e4A>4vr6+ zc5EIr>If?}2UOpe- z(Dz=mfyLriKIDxM?SRj`pvCNEG2rZNuc_A@Z`yYCZg#s;O?m@*4ulS7Eds}Az6Wh9JT3&4cEx$%R3%@lW%E-VS4@Gq^!20O(u z@3UrYYrALuMUdL-2ASE2O?zCGx#QmV&|shHw`J!+Lq_Idn|$=#kbE~FC@JgJ6Y+kt zOy?~1=vClk3C4xkmPo_6Ir>&i`5IX4p8`jD-l`n&9RKV92LSkxup&m}6 zs|37e9wiRJB{S3akATy?c|t3)cWPD|Sg+y_;3mwWc*)8@e4QS~fUH$T{pjeOY3Wvu zB*s>1(y#O^GIO~BgHa6D&g%W2TTpv%-be)D(b;QSuj!8k-Jn-5diZSMuXbFo_9)~- z?%4n$geD&VD3n~qPKU&SPDR`N`5UY7rm>o}lMC`aCC23Z#VP|2qxodN!x;izd))gT z4Dq~BfH_ogrs03s4UDL=-6+)Is_Wj1?@I1s34WgwwlP>1{Zda*+z!=rXi+7v0jM>w z`CZTRr}}07^&>Ij#J#cpHrdC1F$#4eKV;}Jdjb~9RvSSC3BtHX{lj%)`&>9=Fs!l{ zAS|?q8i3!-Y^SJ7@4*k9$XyB4!d{Q zDFW$}`GT}>l9`7%;&5x4sMt4&JS78drfOCG=IpAp@-zY=4-Y|9NL$mD<`!3uf=Zpa z2dg(Uv*&w^8cfpp5-tyGUzq34ok_0;-Rv$TY>ELWvq;0Ky4Ja@Vy^7AP>P`SzRp%p z;9>1W$`z#VtxDK7b|-u%Qn0Y1FA52#c|$(dd`y;D}^jg0pwro7SijF;wyk+M%wT zM&JKm7C=MDLLQ9RioYEEQYUX)x=c!=g~2ZK@_KtOk@ON=7ca6jY8{7gngHI=q=%EK ziXn9K4o96DkC#ribWD>(z%mAfD9AGP;)D7N)4C0KjAb0p;hz8}LddRZR#EjSvC^Xd zNYd#I^uB&HJbW}6|^Bg*ZCExw{5&&N1!MOW%edY=9ki6N^m|-$j1L-%b4&ETu z?n+p8z}^CMXu8a5Nj`7xd{4=rA3epLXXbyt+#fB1g;9@Yti{8`SCj|^>tJDXlxxjZ zw|v{KAe(7(P%c^@l?@}ojPxBX}-`ueUyR~D+##ES)%}jt^kST56ZVOLA+n!{y z#up|(9eSjZ0^5z&N&&^@ULzv%;s@F62bG)Mw3e&4jxkpVteS@jUCBbkeb2}be;_g- zQA3)IM~bwdI|gI6&l;N~Fs)6r8#sWwP!wWY)Bbvpyx~+{X6Gw0(r*0vKvMQa+aFXK z8qGA2?63U%1W&)cN5Z9F8d{^>0$&CB+VV&K1P@qlMy+o8{ehQb+bu3gTi)&|_Me%M zMK-nbqhi}*K*j}ygwp9y!N-0^yFEYLFNMw_vjGsFgv?_7#qqlZDW)|)(cal|99Yis zVy$glB>k45=su)B=_t*r+WL6mIXA80(#r zEO7O06$sB^sBVD-fQEjUfHHwfLz>#pVK#%0s5S}^@+uY!2CRuZR9b+r4iE$5yPpzw z%g~1?p}r`qWfy(1xI{ElqnWO<7ebPu>Y4|Vk5c%H=Mi1DS(u@I@pi^VHJYLs=RY~r zu&xf>g^5poQu-z~&iMHN0kF3D#p}f7k<7mFw_dhgg5T#BT+6F?{H`lObAR!MXF;G{ z!ZKaW`Ulqp&o2-ObEOs;ZH;7(b6N>ryC9?gkvF9Omp+Cr<}_KNS2Yvj3xY{kx=m1o z>_o#CY}9*mz>YxHicZ)K@WNPq)fOR#Kz&hJ*`IWSQ0n&)7@x3j7Jbl^1X*UHfR1Aq z?M0Vbf}ne7A;PjxwMS_wXkCYcW+tI(mqtnJ&65sL_45UIO{onZS+DarJ5c4oWuO0h z(;4>Ao#$k|I~i0AbUST)Sbiv?VJZHPs`e~5v#VEkR!k6D;Q;DmdcV1K8FEE?VP)s$ zXyY?w`x0S28Zo^`8FH&(jW z)i$~(*0Q$jM6R-@MiR388F}UMc`jD4VZhP+gx-G9&yY#_wj?21*lmhnzE*=SeDV7O zxj@?I#=FYvgXu5!U)&n{)O^|07B@1PeqZiN)ZhbeQ0uH^G^|K&Sy(pn&sRBv=REJI zln_UTV_p6PFQZJ+f^gal-|HP2G`;D1qw7k_e>%q(ubAt^^iFX)>yv#1l#oqUvbOG4 zERip5CyEnjV#mo>9-RVssWoQRz1ID2td}#ebWtgW-yc42&~A|do@*PWd*NG2FoIN= zt}xh6rQIct%iy~=yAAE-3>b_&@ysofhJamD9fk0{~k2JWr1Q0cj1g~473jaUMvhMk7j)uy@3gJI&simZUuW* zL*#Y4&nwh!=ZvB#?bYmr4O8OlcX4#&f%LSqkDN|$K&`I^I3U(vi#~bY@q}e>CJUkm zNqtI!#>T1nG;r{wuF)KqrNUya)|;=U5296$#;7|4yo4CYAUvn;qsoZRia+po3X?m@d}HO^p&E6FKEx%%&dvC z3B*10hA71OzQKF_?eE`~9NZ96POL{-hC3Y1pF)_tf|eWSsJ`Q~6*!MzE%z~dfik9O zBy}J0dimvZsV>E4K6$`)p!<5FYynqs2V~f#)e?lv=Yfc+_mVfv;NlC#b6oMjY|~$k1vJlHM@!bn^TE2gXQe7w{27OdGqH==MU)G z-Pw1D40)966`HA5GNgviL7UlG@PnB-H+rKkBwwRWZduB`po}URPM1}`H@fB7s7Q9U z%!7QFX4}m{sz}kxc0@kM{d$*+xrj)1X`v0r%^~@+JOmP{X0 z1e3NGnqpPPj=GRBoF-Hy-TVyuNqe}Jamh?Ye9<+!YVDufCx0jC`*66Coqr4dZ%PE> zhKqSdvTQg`cEHJCfqt=5vrZ8=LvGK;p%R}^2KLn;*DsRniBQz<0(zaXE`Sl@o$#qQ z`sL~M{+#QXpc^(lXQvNUi;O4;B@Gn>E8P-2GNi9OD@~WGzAq3IB7qt6mGVw+)}Lk( z12vsn4)*&ey}Rk1e{SfEQ-#pd+Lo~P#tKe0+6)HortD&XD!OX#CfQk4EM(6`tv7c} zv2uwj1MsgicPL~5iIxeH!+u8WbAiY8QphdOkSB_V8)r*|x-H<* zrKveJb7o6l$p&LPEgnmA;I;j^8Q?EOX$CE|D>A3QWo(6A*zh>3QZY;gluR!4kZ`w~ zJ@qSA$WjgS$Qd|)a=Iwk4+sOv{3sPICW|#u+{4Q8gt$PRE43Q!Nyr*Nd>f~`FSqZr z+k!lNSxHLM=9^S%Q{9CI;=KQpAVePyjLzltPemwdPM%KG9y4^Qr8^{DvDUaKLO@p= zIVG!F+`&gq4TRyDg}n_fz|wO~hbPhHg|Hwm;8LG~l1iz~18+2gA2Jm~D=dJK_|H0(v3r#SU9YS*9u@?|X75sD2?AyIVh^LkWzHg1;uPt`zD)X|?F!FOHMe-`T>I<|zE9mD;TD{LM;ecSuaT^i zYEO9pm=a-(XA?%G7CXC%obs9fz)}-hqYK-|oml1BrnRl^nl&0xoyl@v^`Q zQ9`L07sZGB67z@qhU=@ReR9t0qBU11(4m%*5}4S()srMo4X4B8Hh1RzrH){tFF@FP z%EU)m1%lQa!~SatWHYnov<$@K`e=D<`4&&~c(|OZEU6gzdHlp+r(dE)D=9E0S-`7m zRh3-a037tb)PR-o8;c;kjm%-Gl;id?ObEzx-+wf8Sj&n|vVZ6B~3AkHO4K(p$v>e)5; zV%%q)&V+m9nY`3DBSOE6EG=U%B(k`yixQG(B)=02^yL~El9JDEhsqi;e3Dllzc(@G zK?fe{kP!KX(rd>U`)*gJ5@Ov?-a}TJn$2{K6*FcSWkR)rz_cD_rqBMHJwts)9h8QAX*yAaSw1--jm-L%;AxO1&BR#s^&!ka-?}YAeIfJYFs&4;%_`+=Ss^u7ae{<|aWHlsG9cqLG8RQ2i>gOLKw=G~9|`T5CkK$y=*l553am%2C)tcE>+%K z6QF|4aC59$p2wK8Ac0p8l6C@Wsu=JWm4y}dJLBJ$+Yh-}sqx5Vaggso@YKh6yii_3 zKBHaE2843)xEvoecO&~)3T`J~oRVPwv2FI`?f4UjYa%tsmM5QCs(F5nowk)%)R^1e zA3b9chyoUGL~Mu1v{RT0W_76c`rm;hE>I|w7mawyBqysq+2U}~Z{03ar5Faa&V5OqE_=vYdPg{wVUQlh9NMt$r=MP!^3u|P z2|hUn^g2j@>`C0;rbdR-d?)~LNE1Ja4Ug9V5o8~&p`&>2T^Qf1nIn=I*YXB8M)ofH zCAeRlQTT&cZT^@O+zuG7zo5Wm61$NcyLvI%Yld~P_0h@cq`&Gfn3;pa2GxHK`d$)& zH;*6^;hvMFS0u$t33BT{P?GJfQh*~S1`=$bu+|$hyfc5CU=9vd;y=_Pk!x26yd*3q zRWH+otn=%gZF4qKpb~~FnILaeNol$}uY(-0PLzE**q5e!XD=b(lPdcgzLtFxUp|U{ z@Vk-kh|3fk1n7X@4c7m9d-B{g9ED2+_D8iMGPxubed-<%!YG;B9ZofL-+t8%%z+=& z21u0%FWyYIMl~AtY8I_V`9UsDgO)U%HkYSmZzMv0rSbxflHH}rBNxJ~x9g|Ozf31w z1g=6f>~o6+hV;!KMAQVQI>c&PlB|cm%KUo zd5Mbe&-@G@CzmL^T`&5%xHC@QONle@r4V|~sdvN<93Ph-EvN0TW`SUisgl0>(lZY` zV*#p_GuPTaURkP9;`7AtQ1~!Xd)orD6(b$=kE+el^~K!=O(z7iq)T)=%Ja%IY@orx zX!}qg{bN~fGyhU+_p%CCt)xIGj;aLu0LLlukS;m%kkWADX`5zD@#cOg_%!q{f*dXm z0s2S@<+iE#OD1n5+?Rx6NN_RA&G3O~luARfh9Y7m!HObCxZ%`mPsCjgQk$X4H4nbC z8vE}{YiMF`&rjY)?(Xjnxbe~^I%gSsQW;oL#X(FDP`C%ZG0VkV<9%L+%}7Fx^9H{Y zK;s6_(kcmRo_lxhMa73DP+(et#p*Kp-7>bpkn|0z!LVllatJV`nz|x?!+uln%PfPU-LDp*tN!vD`h{qu}zUml;#m^q9Y#S0}&xl;ts z=@6BK@~v0E6UO{^lu<}_o6#o&bh(_6-0N5Xcai$iee(%u7KZ2X2e1JeHFkzf^i7^*LAs;%HA$A>om1}45M z^EbhbkA)lR23H}HFROV!U3u#ZlD%3l4H6^T?hc}f zh}Pb*#JA|ONFfH8ulDoWz8wEr$lVghP7Yv#^Y*+vZmd>tvqc=$x+OySGWDd zZ95QYlEv?KSxlm8lS@lq$Zf(qeJAykh3W_C827{;yf=eKlFhW`Q zn?rPcn8^5MUlK4y^KX$nI$+rwFTd|DKq=>%eUKR>evld=GrysCK3t5$3#ux+0BSy-h12kYm5c_|rstH*S7(Fe$C3G=~aW`2!WUZ>qON#@va3uq8XJokpt)nS`VKW^!V zGQ&^cPVsXEb_g~4J*3|;w*sz$)K|xApDv^U%05!){;SEwhrF&whNHn^bL_6V;&kG& z(1VGE2fiVR+elDK1P<2n0U=zC73ra-)eDxHsQzRuq$~USD-q_ z600uXMYn?ccso#{qx-52zAzVeSfe~#JnDVZEsKEdqS_E)WeYL$ST~sx(5dg54To?e zKCSx3nwjDC9Z)AX`k$Mnv;!UEum5R8X^SjIK?#$7k z-&2Stx=0+1lDt06!gnGP3pcnX8=L zpKjNE6Xw_7e(lW^dXZr^{<4-J;AWo|Xgs?X^PvSuF#Qc#)8S>89IXeug>yf2XzXx$ zSA6ORLFdz9wyapOW2(CV@wwBG&(1F-z6as+-M7-rH-eGO%51I! z@4>+?%$GlOGT5X`I#2f6mRm!|m0=P;4q7gftTelm)ng)!6!~~7TPuUaX>-Og6_aJw z?Zkd0Rb&ny|g20*H>mvIhF!4|6G%$g`TnC=4Pt+_vY>p@qg}Q)j*C_ zph^dI+@*Z5m|WzPq#bg7thJ6 zVCRe&U_%Zo3d0l^MZ$KN7V{K8gtKYvk9~0%UW(InHpplMLB0Fp~c#+E^xwFVlok){Xjx&p@o$vroWd;V{h2zy(<2`>4bjR7(HE+@j-V}~Le za5o?_7fiv|9c>if-UFx8u`4bjA2I`*h_kQ#ODB@7>D-)=sFN-2ss_* zImE5;?;Fz*saxrK?@@Tf85|#Ff>#HJnH2So$S6%z!Tw;rL;9WjSEV9Ny@ztgK&&9Z zv9#yMi2Bql^v{vNNwt`n{5Ii<`aky)*eM?uTh3f2d0i{bJeE1%*1FeqsYgI)5N+au zTBU?8yr2Ei5>l~5fyXBK-Oq{ppVPTHSh&~=g{*S3Vq%^rik^ZqX6p57VV%WE5>KR8 z0AMoq1>zn|>fK<6Wkm4|CRQ~U3V~b8o#4Dt8qp~YpQq{ecqb=xttk&n^b|}5+|7+X zVcQfNY71zh$&`xWAh=1|86c!={hfs9((KtRN_zn2sU&+`JG%-db*1Tc z95?O)wc+Q^kSp2p4KbkD$Pf$C<&pg@K=x{AxYGRN+q=`!#ybt{XzoEs8&*?>z)R5X zSeq%70oS~lzfSEK>?l0kOo09WbH@ygnp&a|xlQtIicg(cjP%EK;3GK|C(@t5SAWq$<(!}%tKNDjyw||0!I)V;?CA?Oq|9lHW6#t$$j}bPxl5s1^u;p=kl)bkd zy*7Hg2_ap83JDl+)hzj&W>~LW_l(P=+^5G|>VDsBpG%Nw5X5{w9>rxK6@*0vBw#WQ z@4hABi!xvV^r2YkY5hN6eRsk?TPUZ!@C70{M3Vr8Rd3B09vl*(+6)Hs&qie}ic;sb(Z{@3)$OJM^jV`r&=1 z6hY)3c~7&?bHVpAIL4dl`V3gh9Wp}wu|N_uEifoh<)2hv^RSbe z_?-?@%Ppaan}W5*?5KN~5jK%Kr|{TiMh~Q(LrsnPQ&O7e4!1HRZB@k_3HgxFV1r$h$p;*5pNjKBst2 zLoAmUE|W&ySTiWtku=QrhjILolJ6)l;*CBW?T1Oh;kylKVv(AqR*BN;zeWD<3(}7U zclT<4;)K%Yn-m7g&|L@bRgl_EjvpJPX!JwN4xDKbuunGFU$tSnYlq$aRR~M`?fvv> z0DnK~LsV9G2#Kxq@k$R?gb>t&U+46X+{!MFxGHB6!Rg7ygJA$ z`a`E_tww;Hl(afC8d^+->BNnh3-5(bqw!2-%qEWF%UEDt?tN|iVg}AStyG+=f61etL`$(J4*~GM_aHigaeTUiUl(=#3b~k-tt&7Zl!P4x z_l;yiyVWckj7W^? z_+ZbcMvjWPp#thi;Rh8AHy~z^4XO}6>fuzO*tE@(8@*a z9y2euSWPCsnF`+j!`@qlRlRL*!%Bmss0c`dC@Ecwl5PRFDBUR~-2xIycS%T!(p`&2 zx;v!17QN{8PVhPZz0dQU^L}_gzSr|*Z}xSu7r!-sbIviwJ??Sef@CC5w>IY0zgM;Q z^bxIz{aXxIe2Q=Bjcz$vDCz^urV=reYrisGq*Q{8REu*UoJLBKn71g5c*ry<0j~E} zx*dwRuC=5Tqi@_DhoJ&B!C6#(@1r6;>(joRL)M#`OXzIbjw8Vyb7ORCfwTX2sfjQ^ zHjAvKpE)rp3^aIIcgC^mG?tOP9n>ZSnzrGfwnLu@h`9|!@1!X2gJbea{m;wy|8q=C zi<-bpcCEePZ~n=v1(Znvv&bjY<=wk2!o-Z>zk|QM+xtbDwU?hy>y#ynLdG7OlySS0 z{#SJ_f`%ckI^X2=mNL0}K2mPenW6aFc&wW6WcN4y+E=?bB~(!}-VW3z$&BAVtb8$k zn-yxzzN*EIF<+764ve=dH@J#L0YqisZzP+T`VGuwtsD(^PiYe>37zHP;LbRV@2LD7 z<9i+zv^Dsxg?HmCcFpDa7WLU2;^~CJ32d%?nM31;y?QLLrjZOKzfzl-!3Q^VL{93M zNV_eE;cGWc&IfOXg!-qoA0wk3u|@f=$vV7$^XJlF_Ld&yNZnMq!7=un>HfTEF<-pr z2u=LO#u>g6Sd#T}Bc5=_prwZ3YT~jt%7^G@&(D&$V~~0iWv*-D&R0L!v@o0rqsjL3 z|1%7UP^zP(gS_S8G6<~(^vWziM(=3j@OwTJd@-{j>Eei(5*_!+3qr=ZrF##m3^rlw zpo`K4#4=a1ldfrSNVPY)v(DmYpWr2$9xSsO0rLjq$2m6@-q!2(LA_Y}s;r*{H8Yo5 z#+4U%4M&a0@I=fULX|8qF6mcywrX0d?Mn!1tMYya&o2@|o^khBAv#vIJF%}f0BB%& zaO8K24qEH2e=t8LI{Z%8Rn>PkfA)lrZ?O2hXz3yn-uVnF*$lr2q{KMn$ya#L6YUc5 z>vvJl5b@*$?I$}?OW7Jv<@S&!luXX58ff}or?1&Z(;_}!pcMu4m3 z{vw@my?--MIS!j}p&Q~4)$l55^j%e@|1zeHk*_iL9vO*c2PB8gsyTh(U<)RFl*Zdn z?OxcaoQnfmMf@(^!Mh+x3{(mYSk0D zE$62zfbfs8{>GqVJ(fa-*}FeEO}$9wR)SJY;GZg>QB;y)56o$ja>3Ur?DxEOE2hbM zg;_$}dJWEzNW^V|+;)-fd6PTnRHn+c)BM{);pZbIJaop$z65g7F(3^!3y_elZg`X4 z0O+u_HDUpdxk!Z1;ZB7P@mWCgimQcrhs)bfb9KUG>P|~n%xA~szMz5J;omCtmm4fH zHDUB1C0GQw#GCpHt3;RB-V^O-s@Y}h?${)>0}i025)GQ7;}GFuQz0E!vrm|<+a*nL zvN2uL5TMDcYLCG{rY{qgK`6e~8FeB4@{q~wG#l1ix@4RZxM*DenZppiEBN#`R@Cly zOH2D{HO%G@OKHtiWU5^z#eVd< z(=w)Nt zY68?ds@U}?M7onutO5ljPt+k{a&=Ux}(c`#?-Vcml_aj3c z&783nDOVIy5Eh8FCbAId?f3XU|KUA=%AS$Jcckf;(hR+^n)1zN!YvZv zPQxb+azHAX(0>9B|M)*!b4Bt-IBxI!Q%T2gkW;^meDa^413ysJ`)#htA0#Mb8}tU8 zKhg62+rIq!>*D7i6|3}b-y+ncledt)%!hxA3V-haN<~!ttdz;yqL`<|mljB{NB*~O zC-N1mRaUU{b}6h40o2|^L)-b!s_^fRz2nXMFfhi|`1UHF>%ff!ds8~{pV9iCYhufQ z&v@K(TUFFYkkNupLpZI}KR)cAYqI$I9}6t-e;4?s%=rKN0=q)6|Jy#hi?XOm`IE=S z>39X4AFz8e+grl_+aVI6>_f$X&_eH)knza5!cc#2UjyCRr@#rh5a{&^mpH-hCNaIC zEOq4@s`Y>W@5%GucLII~@7?i6!Jp&c=ngD3ExEOc8Xxm~l0y5h`y1oa^M7sdW_Ow@ z!<*wkxNr;d{-<3|`QTq?9lvW7uc#25O8h$kfBoa;_`4r<^Ar9595s6A@&;@k+zy$r z);Is<#NY95{MYqBwda8Ant${0oWugue_tT~{?jSuzfOHa5NV(4O^fY`;Q!ti`}>Lh z^~+%}v;TWV{C~NFA*0>_U~1lt3A0lvO9b?E6jwI*c>eQU|MjJ}X|BnM?EGzD%e)P2 z-<$ki!Qs-P2b8EUao9m%44>5H`Oljn@V<9Xo=IN^^=%OPzD>yi&?pL#w@`j%K+IDK~$pQ-L9J z`s@!f|L^;V@}r16rlF*uo$<%p=KJ>@N)Br9=WOD+EGpy^*d^+(&q*iC%z%DE6oe6& z^Qfv9)ci=$blWKh__&8oEav~q2V)o-f)7Ue^TE56G-S>;q5;4^uj>L9cH1=tc970J z%$=p_B7jqodDAzo*x6C3{$Qkm;)C~YUpDgp=*r)oc%*xVuLbSqOO0m!l&T?Qh5&M5 zS$|D*#ZXaGlA+aDBoaiJp`Rg zGV^@`(_J6$_RE4ss%7!UF}{*oYRP|kz}7Dx$H52M+T4EN7hY*rZ*&}?Jk4s^sS2nn z(Dj41KZ$^(pfJ3C#tICiQeOXbM1ztqZZxa@^QNYzOlyz;hBORQ_$(W+s;XbM1iX-d zz>gofS-MlS5GB(MPxwAe%y|;V6-QHmL<>^8#ExS){oGvFHbQK)-%Ff zK%aFpE-S!lGH>sgrN02>0gasVG|fxU?S!3qy#1z+yQG|EIXw;frFZMe@vti&gu#%y zg8$C&8aq*sD%U^iQPwh1<;=#v`=fHX)6J7kZ&U5wv@Y^V?H{FTTQp3xX z+gwmx;ARbX_HBk0m=a8hZ;@%cZTSFgjyDG zbD$#V98t=~ebFeuw3)zobR@WbF0q_*O+ue?{aLCnzDFd^-!&>z02YWAR!!vs!HQ;d zs_99-pz#iHt~>p=Po+fRoUmE$5C%XorK3q4)6=v=Vc=01G%xn3*2<6w{C(-?H&4G( zthi$F=ktAh0irqobYE8bySaMGlf!t@$o348&?l2dy@{jTducphkDLSBo$ea_qtixN zbVoFxk)^mIc3vz`OS#MU4$}U!+n!C`|MYAu=D(?AF$5QH?5nq0e8Az%(}Qg7#~=TdzWWxBs%k=Wb4QH{V=qyP?7hymf7`}2aMp_s{w%V#L>1oBS5)| z{TKnTL`(ZRR=wO@25|pZHh(6`0W}c)jQMD!+o$rzz*^sv1-=MMC}ADn(zPhn3N#%j zvP}Ew&u$YfY33VV)+SBz6xW~j0{Z{T9t1G~Ce|vY51yIYd-Nxv(cV1OK@&Pf2e4oA z>3Vm=f-&m8Wx;^(6O%SnMEECE7PF*@F_~GTkFPV2b<3SaqLdLNp1A6kn9UM^`#@xj z5Ti1MZ%X#IB)lQ=+?HQ6QFpx2mE371?|47M=e1uChg`h(BIe#6wbw9Cahx(M@j_gG zesN{zt{&hNO-P<-@W+z#f*FRLHv8IN)SZ}EG?s_%31f`o}bEI9}Rn~?AF3c{J>nu z52)23HRyr4`fgmO(^-F81_DgT3v6!sKK+par z=>QyGh1J%3C?$zEEVgAZ_zTDj6(}*st*xUf0H+fu43R4Wgt3j`wdWl4t#MW{lR42q z0$!#MsKw6l7b*!M+`kYH<;LWI*l;LZy^&2SNY-Mp2>b?LO;swL3*EEN+ny|yi=dXs z1PC7Bk;HY8In7WVZ)%a4s*O>76#0b0@8BvT8RprK&BY@PnmfYF8M|{{jhDjt^uVpA zM6e;n>$*BTY~j9qs*spJuE!))9==~b?%xSy5mI)Aytx6Frs3chsdX3Pn&;QDOIAK* z;k(l8tGsGpangG!7=lD+poM{Cp4Y-;G;#y!0L`(OXcjF=VC@vY?Z%hU*J&$8IIs{4 z?C6QrsZaV!kZ2_941|=_av~7#7hRhGE2kA(LH%7Krx_)fkCrt+WR3zB-*X@cSi-99 zUaa#PdoF9v3AE}fUCd`Mv4C!=S&fl&we4D;*1;U2-c$|H;zq})R)mPJTxaW0Z}}&j zziXXhKdih&koT@bK3uBa5G4T9&?txb zNRe-_6gCL4e~&Vim;i!GS-MR=qB|580%oX|08L$vQhM4MN;a*Z?;K4Zic*%-Vic!E zU_a0_xE{7{KH3*D=^yRpk4 zyU+^I9m+BrehLgz)=pgNu7>lc#SX?atP^CG4&rC!rkCNHor!k{n zPM4MMo~@-4*))(^*D3e$Z}ohfX1B=l3PaCdt~y-|icCJ=TWH~SE(HUQ0$*clN4JJ^ zD$nvfsVD1iI?dKdKm$8s#;zZl-VkArNx%2PsOv%X@fabrxDJinswUSDFp$PiQt}*k zj@&|^S0@@O_3meB1V>J~hpXcgT_#tT^{{%}r|U!7z=G5QnV?_jA`dVQhsmvh4d}su z7#^C(dq;Vew7F8iCX%ZkYWb<-nPB2NY#(De9l0wQ^x*k>*IzM_p!=DChLYs5WsET&A7vwid(P09lz5eE2A31ggOt0G4 zkk3@Nfg+?a#+Mv)k%N7)xjsg+Q$|gSF%K?L9oj5WJuPR)h~e zcmolA%K-ghDstdspC#7~W`tHE2l(3%BI$S+R&62a2UPMdd(G>_~U^t`A^+x1^pFcS4l`RQz?+|=ALW2>a}H| z-3ynOq|HFW<43W+zTD?Bk;j^7{ z%VDr{ZO#oQIDD~YsX>swWq-d7NVDqu;_+{*fULox{A%HNtMIVbx#F+wt>9DoH^_MA zE5Z*_Dy+uF^1%Az*EhCPD3u`!0i)9#FCB+vEMLPUHGl*V!wBsaQIeBHiEfG(-Pd_< zC&{G(1U3On`U0YYn6YUIIRJ|$1Exn662>#l9~Q3dcx zV`eGZ=rW0S0N_ zh;0oa;rQvvu#8g~<2>km7#(kBzJY-;wm5zVmT(fTzKG*3MC_awLJLS_NxX^@-U>?r zCS21ji&GD6f7b}_#AjKIKfO9VOrC&XK5%}fR`B(!leXpXVosu^pRm`pJ7|bxc$LVz zq{Pt2fsCj#`~DX9)&qIJ*po*?6s^F?gopW(rA&}^=;hd>8g;&07}pN-H?e|s@zQf4 zY{#?xcD~ieL55(?&G?{h=;Ue^h*rI3mbPEN^IIvdw2yzff+bM^PA||Z2iVigK<=eT zxLGBICmLeD)dJ3ZN1CYEG8nNcM@ZEpt~K1G$-0H2KVg^jN`PWI3%E775MJHWA4b0`w_x9USmluZM&A4;?)z=SL*J-x;xmFCa5-TwkNL=p z_`Ih-NA6`us;)&<1GDb!V%0a|{uh%uskvZYD2Ys6qV{@gtyCMRS}|rb_xs zF{LdH6GWbf^;Zlc(O>0*;inpFb@V~3`!0+ptWv%p(p0`|dD6d2?hxv{E1 zT^%@%MDA8jFxDpD?^BWe@U*SsPSa(o zJ>6($0)^|ko&fRXSH99-H*T|fQdaK(Adt}Ib!`U~Y%4QU?S1uL=Iq1T(K#JXTdK2_sK6(nqCxmCHhQQ%*H)&&>@6AXb(%(bZrd8Vzto=KcFfNm#lJm#0Ymink)=0GONNmfja&G7M+bS5Z&`PN&rRxIls&nA z6R?6+whj-t<{ns(Iz~igkIwm=e{WE|5?;F+4oK=lJa*N-dNMv2#$R3GS(q84gs?w% zbLdSJkE&ETsnr|?=Y?p|r3&e$zJoBTJ?#o4u%1>m*9ua!-)`8RDxW@bRY(-b*KccV z*#v&#TGy9$&@+$v7PKg!nr^h)A}hPU*mjBcaIbn+3P60lGu=BT zO{?5>t3$O4>f^iMn8$t~I7si+Ej<$1&; zMfN{xK7RD$VB}Josue#}15M$`@K>EjxG&*AyN3Oy>Re(o{Mqn$r(yEjkN`?#z!5Vz3oWKu>rbcP$z4hDlJl6rDgy~0m+ zU?-LzVi4-z+@>v^;vaFbb}8`CT{$1_7^Yl;+%UUbjYs3%cEhZo@J`uq&qRht5AQtB z8AIVr1*niFW!%aci#%Ow+LASNEM^_Hhqx^jgLAe{G^%VO&b;k&^4A@=*w5J*(aFp1 z=c{C)Tx2ZNY!yUd68=h#wg9s%*~fimxdq8`--S^CJvJWmk)T0)iT&1Z17KmavJw}7 zmRI-T0*pFWI%0eRDx)=j)l21v59w(fT`fIIe$Ptv?T1Hh)TDV3D_P|vGk=Pu{-U|g z&kUP`)4GIpW%{FgWzM;V81|4cs&Hi_by3ag4-YQ{@pt)vxu>PSmW8Rm{bPN`M`h_5 zX2abc5Bq^RG?rQy&o;q!Z^sz8B!Tf44N8S4_YA#r2qEBCcPMX8;>DoHH|Kx*!bj zv|=Hr^J0!MxOQ1BT3MQ&r+SHO7hzgAMwp#habxBEpgK0$KA-w#q>??D)&h7WCc6?- zIWvYj0f+B)aUbMvZG^TPjN#iHvW?`bw&P0JO&TdEwDmI#cX66&$Ln4znah+%C;*Fv zUgzKFmUIQPcti}ZTdAF^=?AFx$|Bz}-VE2p8&h)9lm~!<4twP=Q?QM~iz!1-B7PzQ z8&U_RoK8wL7*Bz1A9)d5NO!g;eAA-_?ITxF+S~;wJG`g2-FhNu0$eCq520hQ0KFFN zaxv~|J|+7MPcNrU`-WsZ@!?a}-b5}Q`1t3i7>ES-qrrAyRsL3oRoe1(_Tl3VO)6Jx z1l^3iD>gL8`RX{rQ4#G*Ve1idDcXHl{YAmYyBIiC!q=yS*|x1=ET8i`wnu-);gsE^ zpM2y;;z!PVw(XZupi2J&2-f)1-<48@59O7H8&|}AgTUMbC(efP##2Jdt+@B0=vTpm z3yFYPZdE~Ed2xzR%~$_RRcELf4e4^ccFk_}k_l9k5BGpQTt<^`EVFgV!z-2$p-q>I zqYZ1djaPCc%a3_>mtMnTa#FR&W*W+iMX?b_O(^8{EJ-6|{kuNC zwbm<}E)UM|beEyVOhhEJhU4(*y!j!5JvEpt>9tx~6M4RYfoLNp7Hg3Lq^zC@HRl@!{dRo}9_?A9qL9bU1{^(CG+6K}MlbY;msx zu!`bYQ?4r7GDG#=mKx*Ch0H!0)-U$FlFY5|D2rDV4u3>=!m0Rdaca*w>1?*$LP|~&= z#c8UXuQ7jFV14^BG#^Ua$Cp!+JnuUCBQu42>IbklWXq-(Q~4=^=&G!+gcar2T!u~N zz2ivWG)vcdXhrUzX_&8h0os(7KTUdlNj=kyx;2pB{5o6nUc(Ug{fM>bIO(j9sfOLEy4NH@{w>sfDl&q(X&P(tHu z3*MGK(A0t03@gBR_KMGA8vT)Mw02T; z(8VYpRw&~rjPN?Tm{QoyZy96KsA%;n^|+oe2n(7`T8F>XUu1A=c;Rwjl1h8Ch1vvubVeiC5-1N**mt)klH@a=U1A-&fRF$pj zw4I1BLNdg4e70SZdT#)*z$?_EPwLMXgZfthRFi}zC_GKx0dCwE@bmKCE8A{Egs=zd z=SIThk?Vu*!ZP?+x%ntNT-%P?X5F8|=dKr`by)kpb-ofRJkrI|GtSras0R+fF_eV^%;`9tL5tUdSF!dEhiV+2?6u zX0v_QKCyTglju2M_1I8751FO==M&?83f%*Bp z1?!}X@ysv4eh-aq$IYYd%jhbinaT~a)AsY>7XPLn;$Sr?qZc}bRr}-Bx0kC3Wz=ax zUHC4v0{&@ie?7gauinFr_MXoLh>9kk&@hi?8(#W-SS2sa-1)W#pCf(misL!!0Vgva z@j45pA3ypPiw>o~%%>vGbBi@QmivfhUi z=eZ2k?MxJRUwY|SHxzP}{b#Y(B+7J3IDknh|8K z+sT-93V&U+tC3vCNN2OR(Io`X9_C@o(8b)pPr_OEa8zRzO^ltZ17Bh_JX5}t3Cl0M z=hGKSk|XY~h(k9;i^+=_yIsMxSvyufWg`>36k4(R4^6SFO+1P{8hAgB{OoGiel8%M0cxaNL0%5lf%f^(lsC*_2V7|kCl6x%|beh zA|NLs1BqXo1z$8ATfJ{1C(Xdv)13eP8 zr5lc$&STuY5MaNo+G2|XK-7b_GXM*MMzVJLLdO~)Op=6J9BF&Kd|BLRQ5b^xex{0T zuZyt-8DLHhXPGA?H~G0BQ9)EF$`C0iW1I)z`OXbVrYF{Q`%j;19M(brqnYr=D?)#L z>X>b9E<;M`*bP9t$rOFbZ+3xG#?*SZ57~pgS(;2y8p5fR8vbqNh5c={_3s)twHbJq{`E4FmIZ6hD&j6 z4)hJ0Nr+Y!Ks%On!0EMUc z6);gFI|bV$S=bRDwit9+U1w_z`Y8KtO`?+}D_pn*Ej5e<-!nadKbgXjo9+6*H<8cx zvpAouTooHMOc>TESiU1KT-&I9MxH5$G+ha^fx&(jhDx81yPj-k?JJ{8CX?XKd0!P! zcwK%rJPdr$(J6)jz*1Reyoo8NPXL|G5&EA6?bY$FhU*c67 z{V|Gs0f#BEJa37j{K#(uK@3PTye%rSm;>+r<$QLM6)rXj=UXohu>W*W6ZO)VM4U zS9xf^z}GXhxbi-%{1}S8=phQ_x9^NJ;;hqYxLaQYhR^{%GjKSEjd4`){aK*QI>SwB!r)@0qmFLfREf~ZpI;?Vm0p9G^_jD zB-Qf6wKUA3NXGqi;RBJ7^(?iujqcVMtJXwM0_+D_3+ck?zA#c0eZP(E%RHT|_38|`{K4m>)ALO*Fr4g5VEnzHIi*1bV8@h$tgG+okUgsO$pAXuqrGlM* zXU##~3Rwklfx7g!1z@EWU1D3#dYNR6i++AWwmr0Tj`xIjJ*WlwzI1N#nLUjO45*OS z=SNR5D}3O2WUkxZ38b3J<`1#hzngvyZWzJ9139CUZ3IdNz|nGdmsa+1TmPK+o|c4|MU?NqQ@6Eh;g@#9RRqL%_NPkn#_b zP*N*X0=8KoAUor-7wSxg?Q-($NjN-ulZ}0;MLJkaT3detgSG z_>GU+n$24BPRlB4Kd`l{aRxrkcKbr7^T=yqb#+$9o1-LX%Dg)DY0r*-kuKFKBk6cn z|ISL~u}<;#0H|gk44~)xZI$S!(2pHKbCj1S8bo0w5bge9ZNkcpI1whG^!^I~OsIXr z2qd;`CPyAJyoCj@M{&~JOIAc#2xOI0Ng&RFo=K;UrAD;_eq#9Y`C@JzSfM9%_{Pda zIdWv)&cp@KGk{+_dsS(5Rb=@Dqx^eD^E^z!08Rr;Vs_={jH`$W|O>W-1l{*yFUew?5hncFn=LZ-ZKe7 z{?;@*2XrC{v%p-`79hJch1x$LSAqALoQyobb-&rhUce`*V~O0m({xAjaQAm=)cLyb zENx9#3DgVm%^PS@qt3e9{a|%p?%?6HOcm-6PzdV4uh6S%2bP}6^KxM@oa+-XG(uKy z<90{6>DRkTE8pYT(2@vXWHx_qfsx8%3##U7U5bZwZz!Q5vA1D<0H z8|vZ3#)J$V6J65k)~YlRT~5*N*h*PoXkr~Ly3UnBWr>66O`2P0P!A*mwrM~{uf7gC zt|z4hiY%#mUeHXk9ryQ-<_U3XFlevMg7<~rag|8t!E3H-ZV`mf5V0}4&Msc7MaA*h*T?#XBy+!icRINV1QV%8vfe`PY=@~fnRVF95*nty?Z%m zS}FMxco^^_2FN&j21`k3h+m}N?Xz(A^=62a+u@?t!NQAJ9}*VCe|BVz=L+K?>#m1N z1>ynwoL9&beni^KuCr5@dQZe!?%;SO2{#XQ(a}TF)JmYCwXk~n&Tf$~6Vh?UP*h**EeKq#z$X7{}evL8<=>? zQdslDoYL#sXZP}SmIl)&mruu7)*@uVtQa)Qp@GURnU>CScQOp>EJ@3fDX;xgcp`5) zJDdt(eFopmw%I(pcU*wVULwVC5y;~yp7*Dk{C=N^u-|Kg_K;5sGJM71)HrYOIx9}n&DZ_n`TQg6o|6U{>dyX^_< z#2+Hwa*@&==jddRQ-v?PE$mH?G&6l1RjhzgS6jB}APNl{zH0p?kg#1#Fi9~3Tzk`k zx&y3XVA!f!X+_qn5nN+@yvel-@kMXYwW?k*rlHZ12f_EN*LvTNzq%E^z4Yr@Y?G4* zu~X9~RR}5{fa|njdv&gs1YS+`3s|2I>Y;qD3SBRVSs{;$wFbT`)5rq|I{M5gE@l8e zi2Ag2NziFHdprTO;y)>{*{#~!js6wW3+!n*LP&XVNa<%&K+3=dwD8$XzS{a<1i|?f z9X<6QvjY#uDNy0bU&oTNITN!{*K`9pq=2(|U({^*1VUKEyTPwuHU!)YVFD&!FKlwYQDA|Z#og4k?>EP-zk33dkPYPQNvtz&l+eQvd8hQ79Tf~bxPo?r^qPao1m3{a^3|zq zRZaw0()}(g(7faX?ALX{T*znmk;>RL&2gE5r0X%G4zXGG0&w4rDY5hi;4@eW%SorJ zW1e`4Afae}Y2{Lv!>4gVGm5p2PKf~dP6SxM+!MZo{ObZL?Ido?-f8Rpp$}d=Q(;;v z1UO(I*rF#*l=X4$L?T#L#gq#=WB6_|iz0Z7o7R|{&!V0x*j$6f_&KwrDcG05kyE`} zW4xMZQNRY;2ro{PKQAvT$F^^|NY+T6=TIOGB{WOtphD-He9;s7l41AU_JOe=r)rL3 z6u&)YE=~T>d1y!=cWm&JffjTM_eSg|r*$}ATp1-vN)6g^X#~qwT)Ql^Ae#EbT!yXl zd7|T*cI63z7s)n*=?7v07!Gf@2CS+85gVsVv}!GtLYLfi9YD#J*eIS?TobdQR5D-E z(=AzjqFoSI)y7k0X6K}lblt?O`IWQmAWye(>Eiq(`AOfBULk>f@~qp`g(lfW9^_5E zr~B5t;8rgCIdCF&Ri{;3K{E4Qneh3RQ@8cf5o>`9;=^fooYBOfERYX*$r@G4k_(954D@hKob5If*63$)q(fLQ?XP zj6iuVs49q{qPesEiN}|(*P5`0(C;Q7Nq6mOxfX+0Mc-Lb1bQQd+7{VLc(F_1=^|m7 z1@}DRzg>(shGJYVoA32Mp75B*eZp%9nqdVOr)rtfdbz1FFX&_+5Y@i&T%*{+eSZhQ zlLn5vGc=aR578Rr+P=_9lhsCbV;O1mr+6G!DQBQ%%S6pP?NB>AGDQJ6I1$Y1nsKs7iL{hOG^`TNy7`Pvr}@_VB#KXf`W+p^UXBCX>~X@o2xIM81v!& z{F!hr^1vpeGlntlE9+Y?IIUeRP@j)t{}4;=v~&LP`76qm9?fiGd#P-lhtpF;^|g$D z{fM3j@Yx|G#fLd_wGfE@R=riIE{89ah{`b?cX*8XL9gtOX zd@<+G_v59K?e7bA_tWmxf?6N{YFds{ zo&gJYxgSlbQx>foKr-)8{PCJSUHCgc^n_T2;Lq?agLh@?$i8!f(zqdj_;g^}j`LVe zGW5weWvKtAbv+-g%Sk1af1_b1l!S`iIm5dPvEP zbu8pYE_Eq6@S3VrAxv=^NJkpt>+p0`i&$e{#%0t5ETD-P!RJ zRUS}E$Ofb+lJH3TQ|3>B`1xYf#h@QX9eu>jo<7ZK;h2A;`Jopj_C9XV{Q-IN&^MDZ zl)MPCeFFmWSvPBM`%}$=9JBFV?lX_)Yl_4&&LW=xvq)Adf=@;5a=NWu5pe3oDOp)g z;t%v$8CIt@>!m+@WS5l`3Vd;zA5o5%S=vcpwwAiCYq&&D2LUT7ms^M`ur+ZyyA%DK zqj#!2b(8BO=B87`C-j7p&W;WY>x1tnNn938`U*u$JB{9~oly5AX(r6x4mTDoyl?iG z?fZ`&r1$oFJ*0#Y%35{`2G)^=aA>ob%3AhbI8)baiH{3EB!XhC zT023)NF$m3ldB(u`*=`b|N4pmDkuuOGu2t`v$aF_s>`!efiHda{x8z>zHSS5v6f%c z0|&;DQx@Xd56J7pt5at&I$j>=ho7>v#aT*0D8qo{{trDY8e#x;NTS*#31crk{{0ax zSpHk~T8mRCOpsag0}VOQU7m#;_LRDA;*bidE(qmr0ZpnxtQm00MQNK3bN=9Zy)+A^ zqMzq3%lNlZLneX;3?9(*&+m~2Dc`jjjQ03`*kS*c0k<(w*z=NCfpjA^Z-)}v>T0^T zIr=km&7r8B3B?qm6YNO}%)3a!4H+1Qe~enLf;5&Jz$Qb=q^)79(|N2g2pH!?kN%W+S`VCtn7x-jp<}!U z^;IPMj>!g>)^B1ZC=YhT9$=cP6r$m5CM8+dzk^$he2;kVveZjIbp;3;bkvI%Bv5t~XsObF zF`QK@;CD}lA^FToY2@AN6`aVt29T9fLpCeE7sjz@y_CXD6N-!88z?r=C{~EEHxqL* z?oVN)(N@cKYVZ_v$ke4>SXc@h@BW@&DOM_dQuQX^eCRWsDIyXzKSm7n>zC_&9sO*G zpYR`*k1*>DQexpPU?lIkZ5Puo1OGQd@{)jv2mnnUowW(1upUOahl4~~roP8e$>gRY zEcqT8sw?{Ihj^CM!d>Xqtcyu@XA)20OHhm^12$zju3Pf}{kwHJzmI^imb-{TEpeax zh00x;N7U8FTfz~!YzMS_qbe%D5a3`{*%o$(kDsHptTVg`&I=Bx1*dl5duAUDfU=Tf zQvL12qM|uI?q7Ie zM3`;m6BPH2pRQR9V6WKM^JrZUSRPNJ5?M~FWy|xKece@V89=9C8Yzpo?wmRP&`-nl zczD%CinK$WP^G@`Mdhq(&||yV@B@VMM)FBwsD7g<8gH;}ys%gOW&I2#&C1i~PJ8Vz zgd41PkT>FbXBH}zy?-Hc{iw6HL_TM|#5MqjltIwNxBtbThyoR|8fFD&DFBe?WUP1R zIdO|;jq+%CGkWI~Kl`5#FSN`hIxDR$?qDM=z^*R@q}kE5Gb3m!yB3dSu z^f<%!O#$`^1A^zrbechPlC>hRObN81r$bSphKQ8yj#~##NtGCOQmf)SaKsZd)_^O5 z6i>AP;9_c$-*>_jC>*7)_KI*+2EUo~x6kk(4=%Le`C2;2|9n^R{yFh)^~U9Xug~rR zM73rpY&!(o+%lMWogvQQe)$fsQ9UzKJSu9nRcRNR1h4>Lp&?)WVL?i{n)Jd6J>%K7 z^gM7_(-xn~V5gC$DpvcH%1zMexIMw_@LLxe1CknL1Y7pUCtRCc39c5O(MAe&bod|r zX67h-0G9}Mg6OQ$pHXHxu12{hbf)ypN}2niW7jGT$%tkL33To0XxXT_#-JKrYrT85 zYH=mUZp)7$zv1!eLzBJ={gP5PVsMQTZ7#kaaCb~AU)TW#FHJUVFe5H#T;);5$?W(i zOhPW~ASu@?=mkJ9qWvm82b~?+SV(uZ=J~v?=U?h^_teHj5G8s7pQ`#p=V1fA7uF=O z>ln2+n7RwnOe|Ujni3&v3P~f?#T_ZHzc`4pS*Ms)haE1EUVxho*|~BksD-P$jIrkJ zE2?)#58DT;zz|wBs=pyWZk%}b{3|aeh9D=VH)~p#z+_Ha=4sq7RS|51yJnwEAuyz$ zL&J>vQzP0m?2im$X6YveBSc(j_8O7#YGCj>FCw-OBe$gx9+`x%b1PJ;_dE65n%Y*| zbayTR)SGLn?Yd#K7GReX6E*u~7xIkaWpdtrxM3B~HK>aGbjxyN*uyHe*-$`UMiOp8`aevDz%-Y+#rJldoa*Qf6(__odMYl$B!Oqa2n|3&0k zs8Q)TAHp+RG^%0cOM*~zJ@w=}?EhSbo3l(&B>;J6(p0u*V>1Yc)J<~IVLahg@P zSpUN9inRfvISf!5-j9Bo`CcI; z<%r(W+{04631Dd_-tzOWp9}YtWNLob!qJLsxOXj&*4gSWxB2Fr4eIAd;Q#&rvi3j#1%)rY8S}Q{p!nLg~)MA$F2R<_}Dg=i>C?1jsCqsS1Afhz)-v zWHf9$GXQesyDVt{F~Hr;u)WMjx}KZ4CY;*qNJCAK8ncOXiKYtY^m~YLgNY&n5d7DBnl{DAk$5Rvf` z(A^6OBD7vu_)MQ-?;>YCS+v&f&|#xbRA}7GPZHKFHub<@Tzi^n)qh1*$-&MH43`Ny z>GcZ>51eJ_Q*?@^dEebgv>-v%{eD#QlKNv>ghrNZc_20JP{v(vXLgT(r(t8KkHRdX z3GiI49uu!iQ$h*CXHRwo$|bX+t?WLp-=X0LmSoe&V|%e+l(KOx)%uNB!khkNyfsBo zxb5Av5K(l2pbxi&qgG_x0`t-%X7%O8U)`^g?=Rf-r@idBRY=Tjy9j94B=gXVEU z_UL3ZhKbJw6C9s}J5}YnIG*S{X$Q-08B6rVAnAQe?kI#)B;HN=bgAC64o6z-;6tDr^82&ZzHm zn9CLhvVC=Jzz!1(II_aM0oHYK&M`6DkhaD=HU$t>w$|oJKkPR?m`5LJYs9gHnY{%q zQRGzjlCe14v)E_KvMp|K&nY6~{(zI|MsHttJurER*>V1o`Xv!|PyBubD^u1+ipwe= z6n8mj>tGhy)9wAmqXy>LA|a2IF?(<&+4`U~XRSHRUtds+yqE#_-yV$JBZCJ2=iW!B zB8^HDL9{)w&x#Keolk+_`b}dA1Dp83Tz4q5!@(lKvvcKYA)uQJrjS&@D;!83@ip&k zei3@QD6PY($yuZvLl=@OLd8UQ=B{Hb#5lM&_5 zGkaW~zcB9kbVpofYqcLSpp`T}=Rdu3y05AQ!NQBhs*L@}H8H((R8tO*P+#y4k~2wf z%Zg)qN82*e*9F>DtYCz&q-`DsAk4 zyo>B0q(t;gU@gV1Ac5bZgz1@+pR1goa?Ws(ZF=(Vv!T~=@#8LM2Xy>+JK#n!9PA*q zFEC9KuBh?{uWY?86AX?-`n~YoLKk=2-O$vW3gVdbVEd5(G(?q`^y2jaE~x-s(`NX( z&F7qs#q@afB_IUJ{)D4pvc{p5v@6)DM6();#1V9LH#r#>{IA1Ec@+J(g}+Z4BtDfN zHzZpn{8iU%10bmgi+g?JrY*%W+Rp5Cti1LIy*%yRkS^wo6f0Wt@zXhkkXfcwq4xc3 zo~n7DyxHz0A;gH~fRBtWuI8{|3~e^;Nd*3$FXw(pU~aqx)Ts%EtyL z4-#t#TUxiiyBf)cWuZm?_AGQ5XD)Pn1X3(tj^YS4)RWJvy`u)CleN}Iwe8AOnLoeP zV^FJ?&FO4xo;qCXw}TrUHjgPLf4U;le*8=x)?Uy*DY0-f-EgA`-!R^0I29C9&+FX& zYIe0JLDhc)L3#W|_H%YsIKdZ5aZ`nHpwyo*&U5+oH#H<4pp!k7FB~CV2hM^@b0LS6 zTKA=`eq@pKubGZZIk5(wNyY4x}pR2SgGS?RC?$tP?isupeXRqvIBJC%dcdkB5 z9*_ro$gKB*`cQk>M`eZLpBz1jx)TLJe@njXDdkY*dtyyDlr4&{Kn$M!;qd+BYw6(o z>_*z)tQZE2ZGqUrpc?Za7PZHzi^PYb+rIwpaDkS_nc(I|pKr2cNMbygUrGYgvFnLS zpcxjC8^aKPD^HDbEj{jVau+@q*6lNB+50Pm^f)ecr9g;niyMSIULLIl4tV+$yvh{flVhbh zmJO+T{EqJl9g_n9E;r;rU1G?mnr-JMosHd}aVC*yj_Ez?S5a(*JZ6pI04#KcbBP*$ z7%jXrNw#!_dp0ZZJfn%vygn}}u<(DLzT41XkUm!^7EsRyP=Ywc8HDNBSM%r5FT!>n zNE9n>c-2Id-XeB2W8~SiEzwrrk*69=3lf^e{vY<8e(jg(;-H6gkcSuQ>(x7xVQr}$O_kP~z+26kR_y0HEF&GX+TkpP1zkINr1vxy~Z` zTT`MdY+lN|`=h#ayj*|Mwvw$EqB;vCeKg5 zRW~b=S1VU2ggT2pZBU?hd*5x{)mjNP=cY%Wl~}ZePZ%!7vpe>DL1a9h+WjcMgxsF> z%~*Zkp|}Y$uy5cwI2iB`*s$l0UM+r=L5$c+zvt`pPsWV`X zt$LqflTJlCS9ByZtBgPwU^L%|d+fD2-=OfE(Iy*dWz9qOEkSTpLa2xT<~48nPFi?79lNV-8KQ{sr1lUaxCmgSidXJUypq@bbZxe=%&cE(Mbc~Xw~Kmyu&8EZ&+el9_VHbW_<0K*h@VE`H? zUk+71|n${`Xe6Tp}z~cX;HhyJk4~-bd^wX`a?>yD5%mYve z3Y%^;Uh(m1R!{Mb=-(Mgn~~LacYG(wepv|X@sX(6&=QUI-v4dAzmxA@&a7gO?dj3|J(uj+KtzMNDt-Jgo3w{Pce_Wg+I)IAH*TtE02^34VZpm0EOP6T90b_Ib~J{Jpw$mK z9UivuX?Xvcx=73?=xJZg>To_QJ$XWvMRQM1ie=>QHQkj*ABKK)vgv-o-E%lONTTsw zG^F>zRPxkSYM@zzK1Bid929bzyj;^VzJu3D>f-@G06D1@2(S9~tP&_rju>zC2I7 zVQ|WK#?kaj+B?3OoHfF&Bn-K?R2QG5f8k>gP(7J}34C2#4AsW1*qS$*j?Vz$~w&*l1R7dJ0%V^jSSwNYvc`lgSmN$ zLfQ9-NCmBfX3dZh$1ayhz0A<^G$!uY3y(z zBy^aDqqct9AEET!&vy`bR{=d}XO?-hMM=zo!w-s}9Mf$S`|`Ea8Snbg$VE#( zdCdqqY~j{fHTgdHps7tkIhpN8_1R~0V)bcvEa$W)`ynk@3JtTmE|Aav zaon5`ebP@Vam=cbE|bF87Mok&Ri-Qa;iF7I`17UrY`8;@`wu*MN#-PSrGswr%v^1j# z}Ls>a9ex>P;X8z02;mgalGGWYJQCH+VH7mf`N0RaHx>m|+^`kh-kRXTzOgoiJ z->m11k=y&a^nTx~mBXafrj>JLDwwnzrLP(*acZx>ZL`oN)p%_!Eri1T6Z8z0E|_{y zY~*+rB7SUAI~LUwPK}-Xdb8w_L#{#XI~=?s_O!aU{j#?+ZPpG4R0*P8c}~k;j(29Y zDn`H?Zjh^3yR=bjgQ>kzGpMME?X)X~o8`@?@dx~k#iJdON_@|)i+4TOB^D}1#jU|v z9zRARHeiiINI+_T&MGn6cyaZfL%U298p0K7UHQD302HVbL|I_(2?>!cw% z+SOoahPgwn5Jn^_0-li+5 zxsw|IY|eQ9hM3sMqtHcCIuqOj%t9huqMm2ULlkN!y?nLZx7oB_eI&Y*t`tJ7h>%vJ6(ZYwrYg_VP#(Xs%0wXNPTA9lIK#`23DeK6WWYq zcdG)!(9L^=*1hUaA5ii?NK1~V#gK&*_t{c)mRgiZ-D}1%=d2@}fwRV+lRtR75xgnTGt-pAJ zI4@riwhBL8CHE#TR^o~K4hqkjye_u0PC2ZmYJLpTO1Je{1A5~g^DCzK30yLc)LE7WTYE9Rr;S zubwGoQ5som>VHrLtu)7DB%R~eWX!-;wSqJG{Nb%qAu4`BP@DRGOMy0Kns)>ZH+nUG zF*+Cr;|GZ~DuDF0b9Ga#Y&0UiMC6AJ4+1+;8I>brOXbCMoqlKEt|?8@JKo{6^vZ|b z>xA2cqBBe+25!f{KK9C>alI3wit;g+<||Rka}OP`T@Gf=?ztURpT8VTStw|V-p7Pq ziaJ9$NGB=MpgGZTJ5n7^^Iq>Lv`UGV*EBzLWZ_eWa8B?%&;YA}E4^NGYj7*!A#0%i zYI)?fQQ4~_GI#D{A0Dlj`9s)VN3iG4q=?8!&W_pi108vU;LK! z2ge;`Pjq&_OWC95eKXI?vn9)($+FPYT0-okvy3u)cf^GwLy=bs;{57Ke@?1xN^XNI zq6P2d5^l|hUBV89F9}~p_seliJIx%i>iTytdq-v~snI>5YUNjoy^|7xt^j@N7|)0x zNB{OA8G=LPXc`NVM1o3&P{n?e90~tMfG+Uz#}(-hRzW&0W3|pPTsi?^1S4Q-e30F< zx=s=9D=y<_KkX_{nN_x3!TP5kHls(k3}c2``4BipsN-ssC~61_wu#nDRm`i*cE#!E zUd3k(&T?+i{CV#;@Ls3g93pT7>WM{!S#eg_wH(BD=#Qu%6s4Wt9yK0*d;ew-pTuNi2YFN6pPn~ zLHz`=Pq8hs`~JEincT=X>p(<#0|vn!bUMRlFps16jsT zflA|f^6C0(9Gx0GG{_fEXp!qKjTXZhwv2%f`sIqqUjcc zxIQ9Gf(*S! zHxZ%tTA*`i&(J5`QGivn=vg;jUS3>q$olI_u2_>`OV~EFW7;}obXB1DVdJyV3$@;F zb8V}+Ny6w6qz22=1+|8Qf5g_kPdX|#OMOg#U&zj4FS7Tm>?{+`!yu_YEm0-@{u3T) zt6$LB5T~%o+G1BV3kpfQ2n>^>lv_T2LfC|Gba*jR_;@p?i-pABvjHqi=1;%HOa4zU z6m_Y^59+OfgIuOXl$TiOdc;nyhuF3o_C}RU!)?0#=Qi2n5OR_s+=+Kz{^O3X$+N(MZ587#s#L(QO!=!S5ES3bmLF$Z1? zOPWzFdEzMy6iCsUe;6zrWDGUN^Dr&npu6_-W!0HU#t&JakzawQ{Gv z^}H;F@4W&eo`>^h?N{5?gG^F-o;`|?CTS|IJ?8(q&+v%;Gkp zgvP|NkPLcWXlM5_noECy{TmC(77=)h3LJkgPq8sEHDVLKY4KvGu}Ag*{fDms6cil7 zb3d6`CW0okP$zj&Xu>%Gs~u=RcLx`Uv9Ua$|JRCwpRnDEP`^h8{n7J(eZ2qvjl}Oi z(din8NalTqOR9I~8db~DiH*)rFE2zr@=ZV*YXWvTG)OsgzXUmg@SuquQlVxkJ&?cJQf_TO&ezy9iBtBhO$X4M`1y|yl8649=W+*u!h7De6Qg6Ib9U^m2Y zxv!3(-*kK2F0&07pb|ztSqXyA=0K&;q!pw3o1Te7`F~8i|5_%HKMdu?LhhvUe^xqo z@;T|H6mll9-%Bhv?KfOX&H9;lVdFhh^N^^~YRJpj_nXeEz_x!{1o$izb7yDK$VwKd_9p zXd3aKbL9U#a(6!%jD&dKv$lwy&7wFk@r-?XWV^L7ZXL{V@q)&=`{i%u8FHdEu`glg z*7gDhzpFG1Zv5j!36`Wk|;Wv zdYO5)_xf#(>VHm*e?3$9#v>ECa_+($k!wQZarQy4W~jmsUVJMea#s!gV}rZJmyTQl@*2E3MG|FZ z8{bd8l?iL?WvQiC*Hf@k3mR4WkA3OiN8vULEWW+rP0i-au$tk%|EG!n*UtxVkrRtu zcGd$XL+}joKi?B%1gDG~aIe%IkU<)Y!(Z*f|9#N^`}aho$VaO8U!mOJLEt|OrxqEQ zj0}`Mm~b(Ip7Q_xdH&zu^Af}RfBpaeB_BO<*fO5|-yaEtigKx7FECQFj&J>fdiTqV z#RTXsH=YPOTsCl5E(G1|v3}dH$A`SN{Wa`C5MBKHQ~Gb;hvLCQlawGs2o2xoOTqE_ zr}g-+!4uAGD35c`0qcJH7DN$wn?6tex7U_H?LbENm@@x&tifIXztiL2hTeb8=vjVZ z1geMoMaLG0KC#ez(9MD2{T-wKWf0EEBO^anAHN6=k(R4mEi}^?W{!~$(T&Kdje=7i zj(&6bU;gueFKl7Rvo5=&!xjz}B*_Fo{>}?7eLhgo@K@V!3P9+3^Xq$tLvdklofulX3*M#x0GHTI%);WQ=q;8~nUS4KV=Z`2+lGzty$Yu~;jjN7?2 zqw-I&f{DbRV<+g^5`8fJ3622JSO*gCm~W8z+F*y+O(hka3=3fL^#*V)D1o0$YE}f3W~k1l}u1U;%csb8o315~Ap> zm~|xo!yWu<7>1tzIdMt<3D?&4?m}Emobj5w)THCSxH%%s-B04|_r6S`Q`?m*S8}=K z#T;g={~UGx$K7>+8o8-r${}NFFLL^#Rs}!MTOD)m`lB}yElnI7&>tJhVpijmMj8C$ z1xcXh{1x*`|A~2J{GiiX?8WIKu?_Sr5;uh-GZiZI_~qrUo+&(V7QsdZ-Q%sZ-=fbz5}95sw8Dg~h4)X9C!@z; zB=Ricm9|BMIg2va41E@0aIJTPadnFnP7PNi!8q>;BT-OgdoJeHkTgjm)qe{YLSrxe zNPl~ARxT-DG4r@#tmjpL@!+B+k;G!jb?vPf*$aSjD!)8QdS@|v`>#nn5RII#V7AO7 zLcH)HAg_UBQ`}dCbCX(({1u|h9)RqOAGfqk7*n>rzHgRv(3_F#Mi5IoF*?qCRN zTXVOgSglBdbdU9g;LJlHPFc zPVjF2$*28m(EJrV_j5wtV>Z%oQ4z-Lfd8eIV{oOKJneBA2OY{?p9fe3euNAH$n7NQ zv+eT00uY3G>?iGF8si0R|FsTCqQ)9wXVAX@3R(vpGHsQCs2Hf3STX{P@!Dqkncqt0#rhNdKXa~I&Eyk-^uBs*Gn@)QigCD03qxY&9otPvre?d#K?Krw1+wFj=uo3Mq{iT)HIKtDfbPt8ET{ey{sXYdIH z)xI_8Tsw37Zw|~3?}j7S55`>*P+v% z1EqqVvKNjK=Hp*f#_X>58TQ5$y0ba2pTXdF82r%QkE6bc)+=kJ==@ zZxOvzf=;lWLm`^F;?O>hjmOb~xapP_I5IQ!< zT{UG^frlhGPd&q_B6knYo(jGai#>-4+w;@>AQR$Cx-%W4yf)@#{EcCC1xoghN5>!| zTUb!2QDi9T^?D5e9k)ge5}aNgCfPqtfGsVSyKd|$lD>FD4Jp0J7`?YB_nlz{(3H;F z^EpLMhp_WPdP~!c3~`}!$x|d-`|dTrXJ2d+lzSfg$W@dVZ@T{iTD%{Hjj;cF6d_CAu_w4Y9T1_`e`OaRMvoAbJk zLY|Xt{j|S{2?BvC_b$UlkABciAXHJU#Fc ze(8w5k-#nHsutT z0_!)lbF#ghvV69PEY2a!QEM6Zu)Gp?sI%?{yG1tum@T;~81whvIR!4iwX8oQ01;A+ zzxfBvJm%F?Wi|fE7y&hi|aR6VKkp*+Rnv9N}?5F^OvpjHzf<;{Ab_(SwX4!r6IT zf8z}n8?!(A`MwjlwnG!;SQhoLl4YezgqBw+NbczT- zJ4^tIN?frmfYo~ahaIvk6yDF-I6X#pn=6vo%JCa_{izYy`bLsg55}zq_oJnpe^^b| zO{QiL3lo5m`gXL&v!e>6Ibr4YHYEb;FG}g^>C}j)Y;}@_TbH~KE@3+rxgdv z%{HdZ5MU=Bp!0m20a|>tL7jc)5VJJPflI3nJ}7_#s?u(nc52?5)4mj&4(hVc0Z!k3 zY?V!@CJHIa=}qM4G}ytGD}_EhV{2{hIOXtbog5K<(>Hx_N8jFV=$3F%?5{5`bt~KL zYY^zW9iiw&Zr|qLi!)(p)jtufw7Q`~#o58&y8zrnqXRDF zZv9qj4I5qZ5@e@!$ub7Hs@GnVU*+|*n{7G{=(LYa;1Hi>9FZ#f90CRKu+szBrtCef zcZwrIJi`3J`Sl=YqRGt1ax!^H6-|J=iC1N==t;Atd&PXn2p?bid;F0bGAE14tJjV- zv$tkgjFok;38~H;&yTks-(>r_hG5}J(Nop}7kjazFFgMgk3YLPi7+eC=_@fT43GyM=V z^8+8W#NlCt_Di>X&YL6O0IoF4>8tQ0vD}wQ7aQxV2>(uS){5{u)3ZJ-HnP4u29BPU zA7TO|phsXnz7b@z{hBBSNgAUM#w*4Sr0}z0kqe6KL6`n%emgI-qQeahSq+_!LaUFb_ItnEeMgl8&A8TD$&SLqGEilm!N~ z>Y7fcFV0d_C|(6RniW^vpb(v?wlBQ?RI3k~cRZZ>%(qap+jNL%;zxl9H~OyIL$Avu zuWHRwjm5?xuE=|Z1bt$NVmIGTw1EwdMia_@Nlq((gVEG$C5DV&{-Q@+GZ zGN)S>xb_gh9j&_y`p_qZTGiP@b=}=+0cL1FBIJ>tdOssRO;ATAwEx0M!FMWv`c%in z$pde7rrJd{aeS^+-7+(Eug#zk^cr-}RlEn0=KS&0%4j5(Dwr*PT9^769|~H};NE{K zz8;?TbrkOC-kEK(d4-p{w%y7QFSJr9O$O$ff$Hl?v`A6~uj$rLy7i$uOer6mHMu%U z*ruj!gy@QK2uq*VvII7L>Hk<%*9Mm4`4XQ?rO^8_VM+`!EVQ0e@k8&7z{u4^OGjbsoiLZwaU!GsK%{^t~G5QNfU~iK`Yp6 zwGH{XkDvSa4gGxonI5R1Iitm}fos$pnLg=A>+S@vw|yQQs1E}KxJzcOol#z>i;1-p^d!%a(SAj?a_AD&#*x6{KeymHbaQq5iVvzPmP7tef3Uo1f$T=`t?8GyO^l zbc@g^RN}s|g#Y>kioR9{o8pY?y9{L;wjHdFrv1kv_e0pHlV#4ffKQaEN_r|ic}*=@ zZ-+KQNv>zXZe7cs?>jcTNCWJ#g_-m&3UVv@9MdLD5rS45Ma#z8^C+Wlmih$mBj}^w zI0_Iy-c_vKpSvO-;ZR6E>fO&;Q3sHo1aI#q9n1w9LW8>#gsc!%s(Cj_vymaTynsz2 zp;7u&d={9SY2=R8wXFPZ=#&J|6s=8}acF;M!Afc)S8nyT zX~`t`g6ClwQl&doW2jSxB`{SJ*C25+<8=|n;6KwRX+?GLBywr8ItNC7wL;-3A~kQ`Pp|ys_majh5A~=Gm5+MtT}jtxNQrC=iCqoO(i%v|yhW6omLt zkzyPU>bbo{wf?nSnhp~4xi81x1Wci20yOo>Kz>G&V5QYt$RsWle??HT%sfmHCt!TT zBs!IH&(EB+s19{Ox(#*ghECZ~Tah552cn~-66^WhfGP1!(e7kXC440~o}?`4UR9ra zy?o>Ror~YC8tqlL%+{=0M~JV~t|^1?Enio#`Khc_n_#>OFK@XHwFG@_zThKkqyxNE#X+>XZ(-PsAr zEO8V+{`uC_L{`l?_Ngw`JRGY@8+UL;G3x?i3}`5}T_9~7ZS^T5XiY1Dg8+|>MZWGs zpo%X>+p06cw^3)he2An-DCm7o)=KyJo;hR3(6{t~?9izO%m(H^Lp1w4&XO? zc>9_6Mn4RH`d#g57a~RPL=6nShoe^;?@WBuw$ayZZkvy%iI(|2CdFU%EBc|4OYQxf z^hSOu$cdAM<)=?c{8=anB}u2hrb+viMaX6HQTm>HUiO+}K$pV`?iaT0<4{kJl#|z= z2M0L&-KwYGXpYZ4Gj!Qi6KC?Rd~gVtetP7^F+OzAhx`PT+ap?z^oCZG@($)XMUdG5 z9k%9%dZX5oBB^4Zz^a=+bSNLY6o&*g&=3I&2*zQcU2NSc-;pl1TI7jVFTRGrlf861 zWFlaB;#kbF$DaM_C~zd0>*=dygOZFvlWYze^N;Ch1L+#nBkU`qg@shVPixOL;t7uD z?oi);9a+%fF7U~&;u%%|z3>G2mpack%Wp4EGL@^3!c@|IyMc?J*T?r<^K{gqAz*Fu z!yQh0zUv;5ScLBV<(ow7Lw;v)q`E6CoVcVAHZ(WDVa%gH7=2^>is_{e*8+!aBO`9} zJSlhXnQ5=#d~x2*x;x@8YO&NA5fe@pxVQG42j^>`*WLqeu!@BlcSgnqtOPE#57wQn zUo~?mw&KX8!T?@vs?QZ-yK+S#Bd^9;n#ZRN zlsRAwnPU}cxaZ?5@2YJ`C2Cr(sHQ-b10J;bt4?M@!ymQT`w6L?9s_Yr#TkDtKC~B1 z)1N&9PoZE^o2~P?YBK8(hY-3#3=>oETuBua!J8F21ooZ(^(?I~w;hz8`kPf3@WLu3ylsB6So^PTr9J9XUx~EaK+Et)vCk zJrSaB2*;o5`)$?qbieND$cv`>)xVth@^V~`hW^~(@k56Og;c0|$_Kw6tN*={|4Zjw z0D26i32=qprl^7T=W#!7witLFBA}U+@cQsOdlF`xDc+iscC^FG9+x&>Lrn7W^`sn& z2$K5n!?39~Ri4V}`D|_Lq2VMhHy%Hsh;_Z_&<%>{7Xv?aC<$wsc%@L~a3V3=3*~}W zo|j3Z!img91oTu+2kCUOmBGoXvvk= ze`Zivu{kd|8*=BzyQQO$1^g%08xw~~4kS)eK}Rb?%a&*K(rPM^&H#uVP*;L>95!vg zfDlT~d#e5TwUu_*z~=XuC$U~y-k6c}JU=C@IhivqffHk`tN)rv>Y7aNqe3Lgl2zFj(b75ek3 zAGz*lhK8UY9WNRSJ2i#)`i_0iADyrJj#1Mj4G1CIMrRjTp2-ys`LT~@* zq8Ba;dn4(YjC%nhbWq@?r(deGH|_~_dLl{h>e0_Y_5I1_CrK}1KBwy9uF;K|Qz}`b zE<-)if^|S4hi{&_f0^e7XjQZZGW-gkAAu~aq2g(El-!$e)u2HX^P0<!>to$W{T0$2uZDl8Xb)5jFEYvuE5}zK%qY5|?V;eN!}}hBvRy zcT?o`Vnx3~D`Nc$Do#{rwP*M09VIt4mAIQHE(5=rKQ69ldC)s7IOH_?u-qsZHPAiW z5Y>+rwbyz1O4Y^qXk^PWOOV|+!JWzpbulSs_zX5E5o>T7UCvflH)^76~fF>>~4!`*!&4mXNDOPdai9R&#WNOBpssoJWm*L8jf&y_Gu#GX-x*vmV`RhEH2etTQ8!e54lz<0p-dsb`DRIM`_k}16W z>cYXz_R0*a`!wOEJ&ifT<|r6s(J1vJuk{tp-kQ1|K1nHUHD=Rp`>Z2dMa3HseoH-p zR;2Zx!xE_~&@SVU4IKGb1A_RmCU3#zg6e|GE;Xl_lO~N5(G$KvYxm7ju@pFrV}hG` z?j*u|7S)I!8}DCqZPRk)yhslD$aw+o7p6ZYXFiX%p|?m-g@)juL|Tm4ZJfFXUR#wz zulYqaH{bNOh?#A8)L@E}`%#3%3UwWQA>H|@&v#j#JQSzCBB3Rks-?H0o#g4Ws8vL zAp%RF#^Yo&b}*qUHk*3;b1Qob?_2fF(ByG%+CX$J+*ju+k1t(kKRMjt)4KZI^rwB| z;Q~9Ol*A0Y@iN02T7Om4wb2UOK#HW?_e^I%J=dpN!yj=y_|CTYe$N0ip~a7Z%YJru z;l>UI<`>Je0iSP)#|4F-Lj0L$E}QVX2a-Ce90{zs8UgTlx}hhj+I6vEUvyiBAz09` zfhQ$cCi}AeGW5nCt?z%h`R~ka*_l_%_M20ycewuzx!wQxZ475Zrh(8{*4O>6J&S;y zRQUxqBtvRh?%Nb5|0Ne)&d<6=PLWsib3N$UGq#BOJbSOTXGTd1^G^eFo3Ct|dbrxw zvHL-&R4?y~u|O_FknGf!0}dfitkdq7liVVm`3oq>9M5S|X5`{avyNnMTQV`G68ktH zl>um0lEI7Qh`t6+&0K}_J@RV?)b5SA=2`3(>DHT$a{#-^0#T$7mR1)(T3y=}n#cpf zCw%dYjDuk^*KKNiE1(1xK*TTpLXXPrMI9gENA3{3_0b|+u6D%OmzN3L-H3+VD}&PJ zB2>MZ_R07-;9LXw?d`Xl1j#YC?x$^U*iAV%+>+wJUTh0-ot#7qvNxdo1fml9nq}xD zgNP{~b;nAM*5&3U@V4Q>`uWW{AP|(ZbXnc&EzXVsHf`2bz*swm!ye;|JehVoc0Pwx2Z;;K`(v?)V7?nm8p zpR$(5jd`|2Frb^9TkVka$iZxE>-n_vOz_vUJtfBECJ7;&?M?<}ST+P~Hdk5#BASx8 zu8O-nI&l8HSvNU1jx5DAFU+4Ih{f+~&ymwGaXgiyLP-(-%`j;f;{0+d)~T|MZHHU&{chi)xV@fRK~5#(k3sMJDR{p`%Hg zyFPxv)x9GvqWv;(P z7zA$gyq~6}+ISTLB?bp>#d@Zr@p?F7A2qF`$Xupaj_`?5&CK z7-mZpZ7e~`Sat@|bU}7ubW_p^IUiZ((j5nzkCG#$-^(QUjVk;kM^JF-QSsu|s0q|U zRkGGsq3JT8tm#Ly{w{vPpbuMB;K&Wq^Z#jrcy0fZ!L4FU*7@N3;t)eEX}|8BaA`t4 zXDc!UvwCOEIatl@HvL@HnqHb-eSZmE!aGgRztvHe&uWTA?ns`hHT>EAS5ReQWwvv( zf80S`$w=0$5Nr`)XBgh8BX~VHNLw>>6%#=|N9Z$a)VhExf@kM^1vsQxWc#H z&M++xoV3Z4>lPnmg!N0#i53m9+5~;XgLE1cp4%=Ixh=&4_<1~FX9tInXpZ?dl_zfr z`7tZ&Z`r#k#HXKlMQ(h7a|j_GHJ|bi-|{6aDl2DoQ3Z`7s&~ha-rzQ3m~)7jcyn(KO-e)H8@JO=-3VLUdbI}-{Q!9P%ABW) zF%g$tff0eXPAlMoINIsj^7Qz&3I*Rjo0+;Ag6ZH}KkD}e%&bDK7}ia(Sp4re?Fms* zC^|Iki=8`g2XkvkRvyj1`Tt;jH~b^(8*S8~-NZt~ySwZc0dM*9M$gNp1Pj+pcqb|N z%AeBXH`8E4J>}Il##i%K<|bP8=flE<`CSvGp!X9=dTZXc+N-qw0r#NbjSG4eyGSfP^4tmH@&C3pZjOzB@Vv>jTSmIYq#aZGYj zNfMTw3R|e+)}ZNdCfDOeu_>K$J9#-}Qs;WT=(>hg?lc^vS!`~;>36MeLtBW0HYb}b zJ?mT=p36Td6!?wXbQgYD6b|oAIXi&1!PN2uvBI#Cf@dXYWEge%1?`htSn;QFqOY$D_TC5$wo8Q$46_N3^yNsZTC;fl zZn<4+t^}M><8__AG^7UfdyS(;1xHU|Qg>-^t4y)k60FrUA0wDphD{0%J87PEMs_Ut z(t4VP-G~A83#XkQ{cl~5>A0B3ZXJ*;mz)Pg`Q6Uy8NJ%o(ZVPv8EX_h^mkzoC=1%e zb}E3@EiC_5I&PY_UOp_*f2?YZbAhVOXyi@tp7pkF7Y)gg>s9@#vTla+fIy>B2Y1X) zgKitum|`sdOBCg;S=bWOJqHTNnQZhAx(Y!^B0>zE5-jSo92>;@3&+FN!h=L^crPaf_v%)%Ij==8v0=M>xm)`Iu9HF_&dXVP4EvM)tblW|L`6` z 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

* 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

E!T}R-ovHQWVy{sq#;wx+qRd3a=l3!a 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 + + + + + + Tauri + React + Typescript + + + +

+ + + diff --git a/next-env.d.ts b/next-env.d.ts new file mode 100644 index 0000000..1b3be08 --- /dev/null +++ b/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/next.config.ts b/next.config.ts new file mode 100644 index 0000000..68dbb10 --- /dev/null +++ b/next.config.ts @@ -0,0 +1,12 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + reactStrictMode: true, + output: "export", + images: { + unoptimized: true, + }, + distDir: "dist", +}; + +export default nextConfig; diff --git a/nodecar/eslint.config.mjs b/nodecar/eslint.config.mjs new file mode 100644 index 0000000..ad226f2 --- /dev/null +++ b/nodecar/eslint.config.mjs @@ -0,0 +1,131 @@ +import { FlatCompat } from "@eslint/eslintrc"; +import eslint from "@eslint/js"; +import tseslint from "typescript-eslint"; + +const compat = new FlatCompat({ + baseDirectory: import.meta.dirname, +}); + +const eslintConfig = tseslint.config( + eslint.configs.recommended, + ...compat.extends("next/core-web-vitals"), + { + // Disabled rules taken from https://biomejs.dev/linter/rules-sources for ones that + // are already handled by Biome + rules: { + // eslint-plugin-jsx-a11y rules replaced by Biome + "jsx-a11y/alt-text": "off", + "jsx-a11y/anchor-has-content": "off", + "jsx-a11y/anchor-is-valid": "off", + "jsx-a11y/aria-activedescendant-has-tabindex": "off", + "jsx-a11y/aria-props": "off", + "jsx-a11y/aria-proptypes": "off", + "jsx-a11y/aria-role": "off", + "jsx-a11y/aria-unsupported-elements": "off", + "jsx-a11y/autocomplete-valid": "off", + "jsx-a11y/click-events-have-key-events": "off", + "jsx-a11y/heading-has-content": "off", + "jsx-a11y/html-has-lang": "off", + "jsx-a11y/iframe-has-title": "off", + "jsx-a11y/img-redundant-alt": "off", + "jsx-a11y/interactive-supports-focus": "off", + "jsx-a11y/label-has-associated-control": "off", + "jsx-a11y/lang": "off", + "jsx-a11y/media-has-caption": "off", + "jsx-a11y/mouse-events-have-key-events": "off", + "jsx-a11y/no-access-key": "off", + "jsx-a11y/no-aria-hidden-on-focusable": "off", + "jsx-a11y/no-autofocus": "off", + "jsx-a11y/no-distracting-elements": "off", + "jsx-a11y/no-interactive-element-to-noninteractive-role": "off", + "jsx-a11y/no-noninteractive-element-to-interactive-role": "off", + "jsx-a11y/no-noninteractive-tabindex": "off", + "jsx-a11y/no-redundant-roles": "off", + "jsx-a11y/no-static-element-interactions": "off", + "jsx-a11y/prefer-tag-over-role": "off", + "jsx-a11y/role-has-required-aria-props": "off", + "jsx-a11y/role-supports-aria-props": "off", + "jsx-a11y/scope": "off", + "jsx-a11y/tabindex-no-positive": "off", + // eslint-plugin-react rules replaced by Biome + "react/button-has-type": "off", + "react/jsx-boolean-value": "off", + "react/jsx-curly-brace-presence": "off", + "react/jsx-fragments": "off", + "react/jsx-key": "off", + "react/jsx-no-comment-textnodes": "off", + "react/jsx-no-duplicate-props": "off", + "react/jsx-no-target-blank": "off", + "react/jsx-no-useless-fragment": "off", + "react/no-array-index-key": "off", + "react/no-children-prop": "off", + "react/no-danger": "off", + "react/no-danger-with-children": "off", + "react/void-dom-elements-no-children": "off", + // eslint-plugin-react-hooks rules replaced by Biome + "react-hooks/exhaustive-deps": "off", + "react-hooks/rules-of-hooks": "off", + // typescript-eslint rules replaced by Biome + "@typescript-eslint/adjacent-overload-signatures": "off", + "@typescript-eslint/array-type": "off", + "@typescript-eslint/ban-types": "off", + "@typescript-eslint/consistent-type-exports": "off", + "@typescript-eslint/consistent-type-imports": "off", + "@typescript-eslint/default-param-last": "off", + "@typescript-eslint/dot-notation": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-member-accessibility": "off", + "@typescript-eslint/naming-convention": "off", + "@typescript-eslint/no-dupe-class-members": "off", + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-empty-interface": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-extra-non-null-assertion": "off", + "@typescript-eslint/no-extraneous-class": "off", + "@typescript-eslint/no-inferrable-types": "off", + "@typescript-eslint/no-invalid-void-type": "off", + "@typescript-eslint/no-loss-of-precision": "off", + "@typescript-eslint/no-misused-new": "off", + "@typescript-eslint/no-namespace": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-redeclare": "off", + "@typescript-eslint/no-require-imports": "off", + "@typescript-eslint/no-restricted-imports": "off", + "@typescript-eslint/no-restricted-types": "off", + "@typescript-eslint/no-this-alias": "off", + "@typescript-eslint/no-unnecessary-type-constraint": "off", + "@typescript-eslint/no-unsafe-declaration-merging": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-useless-constructor": "off", + "@typescript-eslint/no-useless-empty-export": "off", + "@typescript-eslint/only-throw-error": "off", + "@typescript-eslint/parameter-properties": "off", + "@typescript-eslint/prefer-as-const": "off", + "@typescript-eslint/prefer-enum-initializers": "off", + "@typescript-eslint/prefer-for-of": "off", + "@typescript-eslint/prefer-function-type": "off", + "@typescript-eslint/prefer-literal-enum-member": "off", + "@typescript-eslint/prefer-namespace-keyword": "off", + "@typescript-eslint/prefer-optional-chain": "off", + "@typescript-eslint/require-await": "off", + // Custom rules + "@typescript-eslint/restrict-template-expressions": [ + "error", + { + allowNumber: true, + allowBoolean: true, + allowNever: true, + }, + ], + }, + languageOptions: { + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + }, + }, + } +); + +export default eslintConfig; diff --git a/nodecar/package.json b/nodecar/package.json new file mode 100644 index 0000000..5498452 --- /dev/null +++ b/nodecar/package.json @@ -0,0 +1,33 @@ +{ + "name": "nodecar", + "version": "1.0.0", + "description": "", + "main": "src/index.ts", + "scripts": { + "watch": "nodemon --exec ts-node --esm ./src/index.ts --watch src", + "dev": "node --loader ts-node/esm ./src/index.ts", + "start": "node --loader ts-node/esm ./src/index.ts", + "build": "tsc && pkg ./dist/index.js --targets latest-macos-arm64 --output dist/nodecar", + "build:aarch64": "tsc && pkg ./dist/index.js --targets latest-macos-arm64 --output dist/nodecar", + "build:x86_64": "tsc && pkg ./dist/index.js --targets latest-macos-x64 --output dist/nodecar", + "build:linux-x64": "tsc && pkg ./dist/index.js --targets latest-linux-x64 --output dist/nodecar", + "build:linux-arm64": "tsc && pkg ./dist/index.js --targets latest-linux-arm64 --output dist/nodecar", + "build:win-x64": "tsc && pkg ./dist/index.js --targets latest-win-x64 --output dist/nodecar", + "build:win-arm64": "tsc && pkg ./dist/index.js --targets latest-win-arm64 --output dist/nodecar" + }, + "keywords": [], + "author": "", + "license": "ISC", + "packageManager": "pnpm@10.6.1", + "dependencies": { + "@types/node": "^22.15.17", + "@yao-pkg/pkg": "^6.4.1", + "commander": "^13.1.0", + "dotenv": "^16.5.0", + "get-port": "^7.1.0", + "nodemon": "^3.1.10", + "proxy-chain": "^2.5.8", + "ts-node": "^10.9.2", + "typescript": "^5.8.3" + } +} diff --git a/nodecar/pnpm-lock.yaml b/nodecar/pnpm-lock.yaml new file mode 100644 index 0000000..2995e9b --- /dev/null +++ b/nodecar/pnpm-lock.yaml @@ -0,0 +1,1304 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@types/node': + specifier: ^22.15.17 + version: 22.15.17 + '@yao-pkg/pkg': + specifier: ^6.4.1 + version: 6.4.1 + commander: + specifier: ^13.1.0 + version: 13.1.0 + dotenv: + specifier: ^16.5.0 + version: 16.5.0 + get-port: + specifier: ^7.1.0 + version: 7.1.0 + nodemon: + specifier: ^3.1.10 + version: 3.1.10 + proxy-chain: + specifier: ^2.5.8 + version: 2.5.8 + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@22.15.17)(typescript@5.8.3) + typescript: + specifier: ^5.8.3 + version: 5.8.3 + +packages: + + '@babel/generator@7.27.1': + resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.2': + resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/types@7.27.1': + resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} + engines: {node: '>=6.9.0'} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@types/node@22.15.17': + resolution: {integrity: sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==} + + '@yao-pkg/pkg-fetch@3.5.21': + resolution: {integrity: sha512-nlJ+rXersw70CQVSph7OfIN8lN6nCStjU7koXzh0WXiPvztZGqkoQTScHQCe1K8/tuKpeL0bEOYW0rP4QqMJ9A==} + hasBin: true + + '@yao-pkg/pkg@6.4.1': + resolution: {integrity: sha512-pjePVt+DQP+HaJI5DfEZDX1pGsMMFjv1wuqfy/BwXlnffVIRk8lXjw7yVYvLQRcomf8Eaz2chDE5B6gR2SSaQw==} + engines: {node: '>=18.0.0'} + hasBin: true + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + commander@13.1.0: + resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} + engines: {node: '>=18'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + dotenv@16.5.0: + resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} + engines: {node: '>=12'} + + duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + + fdir@6.4.4: + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + from2@2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-extra@11.3.0: + resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} + engines: {node: '>=14.14'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-port@7.1.0: + resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} + engines: {node: '>=16'} + + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore-by-default@1.0.1: + resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + into-stream@6.0.0: + resolution: {integrity: sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==} + engines: {node: '>=10'} + + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + multistream@4.1.0: + resolution: {integrity: sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==} + + napi-build-utils@2.0.0: + resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} + + node-abi@3.75.0: + resolution: {integrity: sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==} + engines: {node: '>=10'} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + nodemon@3.1.10: + resolution: {integrity: sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==} + engines: {node: '>=10'} + hasBin: true + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + p-is-promise@3.0.0: + resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + prebuild-install@7.1.3: + resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} + engines: {node: '>=10'} + hasBin: true + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + proxy-chain@2.5.8: + resolution: {integrity: sha512-TqKOYRD/1Gga/JhiwmdYHJoj0zMJkKGofQ9bHQuSm+vexczatt81fkUHTVMyci+2mWczXiTNv1Eom+2v3Da5og==} + engines: {node: '>=14'} + + pstree.remy@1.1.8: + resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} + + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + + simple-update-notifier@2.0.0: + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} + engines: {node: '>=10'} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} + engines: {node: '>= 14'} + + socks@2.8.4: + resolution: {integrity: sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + + stream-meter@1.0.4: + resolution: {integrity: sha512-4sOEtrbgFotXwnEuzzsQBYEV1elAeFSO8rSGeTwabuX1RRn/kEq9JVH7I0MRBhKVRR0sJkr0M0QCH7yOLf9fhQ==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tar-fs@2.1.2: + resolution: {integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + + tinyglobby@0.2.13: + resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + engines: {node: '>=12.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + touch@3.1.1: + resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==} + hasBin: true + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + undefsafe@2.0.5: + resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unzipper@0.12.3: + resolution: {integrity: sha512-PZ8hTS+AqcGxsaQntl3IRBw65QrBI6lxzqDEL7IAo/XCEqRTKGfOX56Vea5TH9SZczRVxuzk1re04z/YjuYCJA==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + +snapshots: + + '@babel/generator@7.27.1': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/parser@7.27.2': + dependencies: + '@babel/types': 7.27.1 + + '@babel/types@7.27.1': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@types/node@22.15.17': + dependencies: + undici-types: 6.21.0 + + '@yao-pkg/pkg-fetch@3.5.21': + dependencies: + https-proxy-agent: 5.0.1 + node-fetch: 2.7.0 + picocolors: 1.1.1 + progress: 2.0.3 + semver: 7.7.2 + tar-fs: 2.1.2 + yargs: 16.2.0 + transitivePeerDependencies: + - encoding + - supports-color + + '@yao-pkg/pkg@6.4.1': + dependencies: + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@yao-pkg/pkg-fetch': 3.5.21 + into-stream: 6.0.0 + minimist: 1.2.8 + multistream: 4.1.0 + picocolors: 1.1.1 + picomatch: 4.0.2 + prebuild-install: 7.1.3 + resolve: 1.22.10 + stream-meter: 1.0.4 + tar: 7.4.3 + tinyglobby: 0.2.13 + unzipper: 0.12.3 + transitivePeerDependencies: + - encoding + - supports-color + + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.1 + + acorn@8.14.1: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.0(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + + agent-base@7.1.3: {} + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@4.1.3: {} + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + binary-extensions@2.3.0: {} + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bluebird@3.7.2: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chownr@1.1.4: {} + + chownr@3.0.0: {} + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + commander@13.1.0: {} + + concat-map@0.0.1: {} + + core-util-is@1.0.3: {} + + create-require@1.1.1: {} + + debug@4.4.0(supports-color@5.5.0): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 5.5.0 + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + deep-extend@0.6.0: {} + + detect-libc@2.0.4: {} + + diff@4.0.2: {} + + dotenv@16.5.0: {} + + duplexer2@0.1.4: + dependencies: + readable-stream: 2.3.8 + + emoji-regex@8.0.0: {} + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + escalade@3.2.0: {} + + expand-template@2.0.3: {} + + fdir@6.4.4(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + from2@2.3.0: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + + fs-constants@1.0.0: {} + + fs-extra@11.3.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + get-caller-file@2.0.5: {} + + get-port@7.1.0: {} + + github-from-package@0.0.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + graceful-fs@4.2.11: {} + + has-flag@3.0.0: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.0(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + + ieee754@1.2.1: {} + + ignore-by-default@1.0.1: {} + + inherits@2.0.4: {} + + ini@1.3.8: {} + + into-stream@6.0.0: + dependencies: + from2: 2.3.0 + p-is-promise: 3.0.0 + + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + isarray@1.0.0: {} + + jsbn@1.1.0: {} + + jsesc@3.1.0: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + make-error@1.3.6: {} + + mimic-response@3.1.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + minizlib@3.0.2: + dependencies: + minipass: 7.1.2 + + mkdirp-classic@0.5.3: {} + + mkdirp@3.0.1: {} + + ms@2.1.3: {} + + multistream@4.1.0: + dependencies: + once: 1.4.0 + readable-stream: 3.6.2 + + napi-build-utils@2.0.0: {} + + node-abi@3.75.0: + dependencies: + semver: 7.7.2 + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-int64@0.4.0: {} + + nodemon@3.1.10: + dependencies: + chokidar: 3.6.0 + debug: 4.4.0(supports-color@5.5.0) + ignore-by-default: 1.0.1 + minimatch: 3.1.2 + pstree.remy: 1.1.8 + semver: 7.7.2 + simple-update-notifier: 2.0.0 + supports-color: 5.5.0 + touch: 3.1.1 + undefsafe: 2.0.5 + + normalize-path@3.0.0: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + p-is-promise@3.0.0: {} + + path-parse@1.0.7: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + prebuild-install@7.1.3: + dependencies: + detect-libc: 2.0.4 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 2.0.0 + node-abi: 3.75.0 + pump: 3.0.2 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.2 + tunnel-agent: 0.6.0 + + process-nextick-args@2.0.1: {} + + progress@2.0.3: {} + + proxy-chain@2.5.8: + dependencies: + socks: 2.8.4 + socks-proxy-agent: 8.0.5 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + pstree.remy@1.1.8: {} + + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + require-directory@2.1.1: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + semver@7.7.2: {} + + simple-concat@1.0.1: {} + + simple-get@4.0.1: + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + + simple-update-notifier@2.0.0: + dependencies: + semver: 7.7.2 + + smart-buffer@4.2.0: {} + + socks-proxy-agent@8.0.5: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0(supports-color@5.5.0) + socks: 2.8.4 + transitivePeerDependencies: + - supports-color + + socks@2.8.4: + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + + sprintf-js@1.1.3: {} + + stream-meter@1.0.4: + dependencies: + readable-stream: 2.3.8 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-json-comments@2.0.1: {} + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tar-fs@2.1.2: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.2 + tar-stream: 2.2.0 + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + + tar@7.4.3: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.2 + mkdirp: 3.0.1 + yallist: 5.0.0 + + tinyglobby@0.2.13: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + touch@3.1.1: {} + + tr46@0.0.3: {} + + ts-node@10.9.2(@types/node@22.15.17)(typescript@5.8.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.15.17 + acorn: 8.14.1 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.8.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + tslib@2.8.1: {} + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + typescript@5.8.3: {} + + undefsafe@2.0.5: {} + + undici-types@6.21.0: {} + + universalify@2.0.1: {} + + unzipper@0.12.3: + dependencies: + bluebird: 3.7.2 + duplexer2: 0.1.4 + fs-extra: 11.3.0 + graceful-fs: 4.2.11 + node-int64: 0.4.0 + + util-deprecate@1.0.2: {} + + v8-compile-cache-lib@3.0.1: {} + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + y18n@5.0.8: {} + + yallist@5.0.0: {} + + yargs-parser@20.2.9: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yn@3.1.1: {} diff --git a/nodecar/rename-binary.js b/nodecar/rename-binary.js new file mode 100644 index 0000000..4edd193 --- /dev/null +++ b/nodecar/rename-binary.js @@ -0,0 +1,14 @@ +import { execSync } from "child_process"; +import fs from "fs"; + +const ext = process.platform === "win32" ? ".exe" : ""; + +const rustInfo = execSync("rustc -vV"); +const targetTriple = /host: (\S+)/g.exec(rustInfo)[1]; +if (!targetTriple) { + console.error("Failed to determine platform target triple"); +} +fs.renameSync( + `dist/nodecar${ext}`, + `../src-tauri/binaries/nodecar-${targetTriple}${ext}` +); diff --git a/nodecar/src/index.ts b/nodecar/src/index.ts new file mode 100644 index 0000000..9d63750 --- /dev/null +++ b/nodecar/src/index.ts @@ -0,0 +1,94 @@ +import { program } from "commander"; +import { + startProxyProcess, + stopProxyProcess, + stopAllProxyProcesses, +} from "./proxy-runner"; +import { listProxyConfigs } from "./proxy-storage"; +import { runProxyWorker } from "./proxy-worker"; + +// Command for proxy management +program + .command("proxy") + .argument("", "start, stop, or list proxies") + .option( + "-u, --upstream ", + "upstream proxy URL (protocol://[username:password@]host:port)" + ) + .option( + "-p, --port ", + "local port to use (random if not specified)", + parseInt + ) + .option("--ignore-certificate", "ignore certificate errors for HTTPS proxies") + .option("--id ", "proxy ID for stop command") + .description("manage proxy servers") + .action(async (action, options) => { + if (action === "start") { + if (!options.upstream) { + console.error("Error: Upstream proxy URL is required"); + console.log( + "Example: proxy start -u http://username:password@proxy.example.com:8080" + ); + return; + } + + try { + const config = await startProxyProcess(options.upstream, { + port: options.port, + ignoreProxyCertificate: options.ignoreCertificate, + }); + console.log(JSON.stringify(config)); + } catch (error: any) { + console.error(`Failed to start proxy: ${error.message}`); + } + } else if (action === "stop") { + if (options.id) { + const stopped = await stopProxyProcess(options.id); + console.log(`{ + "success": ${stopped}}`); + } else if (options.upstream) { + // Find proxies with this upstream URL + const configs = listProxyConfigs().filter( + (config) => config.upstreamUrl === options.upstream + ); + + if (configs.length === 0) { + console.error(`No proxies found for ${options.upstream}`); + return; + } + + for (const config of configs) { + const stopped = await stopProxyProcess(config.id); + console.log(`{ + "success": ${stopped}}`); + } + } else { + await stopAllProxyProcesses(); + console.log(`{ + "success": true}`); + } + } else if (action === "list") { + const configs = listProxyConfigs(); + console.log(JSON.stringify(configs)); + } else { + console.error("Invalid action. Use 'start', 'stop', or 'list'"); + } + }); + +// Command for proxy worker (internal use) +program + .command("proxy-worker") + .argument("", "start a proxy worker") + .requiredOption("--id ", "proxy configuration ID") + .description("run a proxy worker process") + .action(async (action, options) => { + if (action === "start") { + await runProxyWorker(options.id); + } else { + console.error("Invalid action for proxy-worker. Use 'start'"); + process.exit(1); + } + }); + +program.parse(); diff --git a/nodecar/src/proxy-runner.ts b/nodecar/src/proxy-runner.ts new file mode 100644 index 0000000..57b0b46 --- /dev/null +++ b/nodecar/src/proxy-runner.ts @@ -0,0 +1,111 @@ +import { spawn } from "child_process"; +import path from "path"; +import getPort from "get-port"; +import { + ProxyConfig, + saveProxyConfig, + getProxyConfig, + deleteProxyConfig, + isProcessRunning, + generateProxyId, +} from "./proxy-storage"; + +/** + * Start a proxy in a separate process + * @param upstreamUrl The upstream proxy URL + * @param options Optional configuration + * @returns Promise resolving to the proxy configuration + */ +export async function startProxyProcess( + upstreamUrl: string, + options: { port?: number; ignoreProxyCertificate?: boolean } = {} +): Promise { + // Generate a unique ID for this proxy + const id = generateProxyId(); + + // Get a random available port if not specified + const port = options.port || (await getPort()); + + // Create the proxy configuration + const config: ProxyConfig = { + id, + upstreamUrl, + localPort: port, + ignoreProxyCertificate: options.ignoreProxyCertificate || false, + }; + + // Save the configuration before starting the process + saveProxyConfig(config); + + // Build the command arguments + const args = ["proxy-worker", "start", "--id", id]; + + // Spawn the process + const child = spawn( + process.execPath, + [path.join(__dirname, "index.js"), ...args], + { + detached: true, + stdio: "ignore", + } + ); + + // Unref the child to allow the parent to exit independently + child.unref(); + + // Store the process ID + config.pid = child.pid; + config.localUrl = `http://localhost:${port}`; + + // Update the configuration with the process ID + saveProxyConfig(config); + + // Wait a bit to ensure the proxy has started + await new Promise((resolve) => setTimeout(resolve, 500)); + + return config; +} + +/** + * Stop a proxy process + * @param id The proxy ID to stop + * @returns Promise resolving to true if stopped, false if not found + */ +export async function stopProxyProcess(id: string): Promise { + const config = getProxyConfig(id); + + if (!config || !config.pid) { + return false; + } + + try { + // Check if the process is running + if (isProcessRunning(config.pid)) { + // Send SIGTERM to the process + process.kill(config.pid); + + // Wait a bit to ensure the process has terminated + await new Promise((resolve) => setTimeout(resolve, 300)); + } + + // Delete the configuration + deleteProxyConfig(id); + + return true; + } catch (error) { + console.error(`Error stopping proxy ${id}:`, error); + return false; + } +} + +/** + * Stop all proxy processes + * @returns Promise resolving when all proxies are stopped + */ +export async function stopAllProxyProcesses(): Promise { + const configs = require("./proxy-storage").listProxyConfigs(); + + for (const config of configs) { + await stopProxyProcess(config.id); + } +} diff --git a/nodecar/src/proxy-storage.ts b/nodecar/src/proxy-storage.ts new file mode 100644 index 0000000..117d081 --- /dev/null +++ b/nodecar/src/proxy-storage.ts @@ -0,0 +1,149 @@ +import fs from "fs"; +import path from "path"; +import os from "os"; + +// Define the proxy configuration type +export interface ProxyConfig { + id: string; + upstreamUrl: string; + localPort?: number; + ignoreProxyCertificate?: boolean; + localUrl?: string; + pid?: number; +} + +// Path to store proxy configurations +const STORAGE_DIR = path.join(os.tmpdir(), "donutbrowser", "proxies"); + +// Ensure storage directory exists +if (!fs.existsSync(STORAGE_DIR)) { + fs.mkdirSync(STORAGE_DIR, { recursive: true }); +} + +/** + * Save a proxy configuration to disk + * @param config The proxy configuration to save + */ +export function saveProxyConfig(config: ProxyConfig): void { + const filePath = path.join(STORAGE_DIR, `${config.id}.json`); + fs.writeFileSync(filePath, JSON.stringify(config, null, 2)); +} + +/** + * Get a proxy configuration by ID + * @param id The proxy ID + * @returns The proxy configuration or null if not found + */ +export function getProxyConfig(id: string): ProxyConfig | null { + const filePath = path.join(STORAGE_DIR, `${id}.json`); + + if (!fs.existsSync(filePath)) { + return null; + } + + try { + const content = fs.readFileSync(filePath, "utf-8"); + return JSON.parse(content) as ProxyConfig; + } catch (error) { + console.error(`Error reading proxy config ${id}:`, error); + return null; + } +} + +/** + * Delete a proxy configuration + * @param id The proxy ID to delete + * @returns True if deleted, false if not found + */ +export function deleteProxyConfig(id: string): boolean { + const filePath = path.join(STORAGE_DIR, `${id}.json`); + + if (!fs.existsSync(filePath)) { + return false; + } + + try { + fs.unlinkSync(filePath); + return true; + } catch (error) { + console.error(`Error deleting proxy config ${id}:`, error); + return false; + } +} + +/** + * List all saved proxy configurations + * @returns Array of proxy configurations + */ +export function listProxyConfigs(): ProxyConfig[] { + if (!fs.existsSync(STORAGE_DIR)) { + return []; + } + + try { + return fs + .readdirSync(STORAGE_DIR) + .filter((file) => file.endsWith(".json")) + .map((file) => { + try { + const content = fs.readFileSync( + path.join(STORAGE_DIR, file), + "utf-8" + ); + return JSON.parse(content) as ProxyConfig; + } catch (error) { + console.error(`Error reading proxy config ${file}:`, error); + return null; + } + }) + .filter((config): config is ProxyConfig => config !== null); + } catch (error) { + console.error("Error listing proxy configs:", error); + return []; + } +} + +/** + * Update a proxy configuration + * @param config The proxy configuration to update + * @returns True if updated, false if not found + */ +export function updateProxyConfig(config: ProxyConfig): boolean { + const filePath = path.join(STORAGE_DIR, `${config.id}.json`); + + if (!fs.existsSync(filePath)) { + return false; + } + + try { + fs.writeFileSync(filePath, JSON.stringify(config, null, 2)); + return true; + } catch (error) { + console.error(`Error updating proxy config ${config.id}:`, error); + return false; + } +} + +/** + * Check if a proxy process is running + * @param pid The process ID to check + * @returns True if running, false otherwise + */ +export function isProcessRunning(pid: number): boolean { + try { + // The kill method with signal 0 doesn't actually kill the process + // but checks if it exists + process.kill(pid, 0); + return true; + } catch (error) { + return false; + } +} + +/** + * Generate a unique ID for a proxy + * @returns A unique ID string + */ +export function generateProxyId(): string { + return `proxy_${Date.now()}_${Math.floor(Math.random() * 10000)}`; +} diff --git a/nodecar/src/proxy-worker.ts b/nodecar/src/proxy-worker.ts new file mode 100644 index 0000000..32bb7d7 --- /dev/null +++ b/nodecar/src/proxy-worker.ts @@ -0,0 +1,51 @@ +import { Server } from "proxy-chain"; +import { getProxyConfig } from "./proxy-storage"; + +/** + * Run a proxy server as a worker process + * @param id The proxy configuration ID + */ +export async function runProxyWorker(id: string): Promise { + // Get the proxy configuration + const config = getProxyConfig(id); + + if (!config) { + console.error(`Proxy configuration ${id} not found`); + process.exit(1); + } + + // Create a new proxy server + const server = new Server({ + port: config.localPort, + host: "localhost", + prepareRequestFunction: () => { + return { + upstreamProxyUrl: config.upstreamUrl, + ignoreUpstreamProxyCertificate: config.ignoreProxyCertificate || false, + }; + }, + }); + + // Handle process termination + process.on("SIGTERM", async () => { + console.log(`Proxy worker ${id} received SIGTERM, shutting down...`); + await server.close(true); + process.exit(0); + }); + + process.on("SIGINT", async () => { + console.log(`Proxy worker ${id} received SIGINT, shutting down...`); + await server.close(true); + process.exit(0); + }); + + // Start the server + try { + await server.listen(); + console.log(`Proxy worker ${id} started on port ${server.port}`); + console.log(`Forwarding to upstream proxy: ${config.upstreamUrl}`); + } catch (error) { + console.error(`Failed to start proxy worker ${id}:`, error); + process.exit(1); + } +} \ No newline at end of file diff --git a/nodecar/src/proxy.ts b/nodecar/src/proxy.ts new file mode 100644 index 0000000..b05dc8b --- /dev/null +++ b/nodecar/src/proxy.ts @@ -0,0 +1,73 @@ +import { + startProxyProcess, + stopProxyProcess, + stopAllProxyProcesses +} from "./proxy-runner"; +import { listProxyConfigs } from "./proxy-storage"; + +// Type definitions +interface ProxyOptions { + port?: number; + ignoreProxyCertificate?: boolean; +} + +/** + * Start a local proxy server that forwards to an upstream proxy + * @param upstreamProxyUrl The upstream proxy URL (protocol://[username:password@]host:port) + * @param options Optional configuration + * @returns Promise resolving to the local proxy URL + */ +export async function startProxy( + upstreamProxyUrl: string, + options: ProxyOptions = {} +): Promise { + const config = await startProxyProcess(upstreamProxyUrl, { + port: options.port, + ignoreProxyCertificate: options.ignoreProxyCertificate, + }); + + return config.localUrl || `http://localhost:${config.localPort}`; +} + +/** + * Stop a specific proxy by its upstream URL + * @param upstreamProxyUrl The upstream proxy URL to stop + * @returns Promise resolving to true if proxy was found and stopped, false otherwise + */ +export async function stopProxy(upstreamProxyUrl: string): Promise { + // Find all proxies with this upstream URL + const configs = listProxyConfigs().filter( + config => config.upstreamUrl === upstreamProxyUrl + ); + + if (configs.length === 0) { + return false; + } + + // Stop all matching proxies + let success = true; + for (const config of configs) { + const stopped = await stopProxyProcess(config.id); + if (!stopped) { + success = false; + } + } + + return success; +} + +/** + * Get a list of all active proxy upstream URLs + * @returns Array of upstream proxy URLs + */ +export function getActiveProxies(): string[] { + return listProxyConfigs().map(config => config.upstreamUrl); +} + +/** + * Stop all active proxies + * @returns Promise that resolves when all proxies are stopped + */ +export async function stopAllProxies(): Promise { + await stopAllProxyProcesses(); +} diff --git a/nodecar/tsconfig.json b/nodecar/tsconfig.json new file mode 100644 index 0000000..4f86f47 --- /dev/null +++ b/nodecar/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "CommonJS", + "lib": ["dom", "es6", "es2017", "esnext.asynciterable"], + "sourceMap": false, + "outDir": "dist", + "rootDir": "src", + "strict": true, + "types": ["node"], + "esModuleInterop": true, + "moduleResolution": "node", + "resolveJsonModule": true, + "baseUrl": ".", + "allowSyntheticDefaultImports": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "removeComments": true + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..160dfe2 --- /dev/null +++ b/package.json @@ -0,0 +1,62 @@ +{ + "name": "donutbrowser", + "private": true, + "version": "0.1.0", + "type": "module", + "scripts": { + "dev": "next dev --turbopack", + "build": "next build", + "start": "next start", + "lint": "biome check src/ && next lint", + "tauri": "tauri", + "shadcn:add": "pnpm dlx shadcn@latest add" + }, + "dependencies": { + "@radix-ui/react-checkbox": "^1.3.2", + "@radix-ui/react-dialog": "^1.1.14", + "@radix-ui/react-dropdown-menu": "^2.1.15", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-popover": "^1.1.14", + "@radix-ui/react-progress": "^1.1.7", + "@radix-ui/react-scroll-area": "^1.2.9", + "@radix-ui/react-select": "^2.2.5", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-tooltip": "^1.2.7", + "@tanstack/react-table": "^8.21.3", + "@tauri-apps/api": "^2.5.0", + "@tauri-apps/plugin-fs": "~2.3.0", + "@tauri-apps/plugin-opener": "^2.2.7", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.1.1", + "next": "^15.3.2", + "next-themes": "^0.4.6", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "react-icons": "^5.5.0", + "sonner": "^2.0.3", + "tailwind-merge": "^3.3.0" + }, + "devDependencies": { + "@biomejs/biome": "^1.9.4", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "^9.27.0", + "@next/eslint-plugin-next": "^15.3.2", + "@tailwindcss/postcss": "^4.1.7", + "@tauri-apps/cli": "^2.5.0", + "@types/node": "^22.15.21", + "@types/react": "^19.1.5", + "@types/react-dom": "^19.1.5", + "@typescript-eslint/eslint-plugin": "^8.32.1", + "@typescript-eslint/parser": "^8.32.1", + "@vitejs/plugin-react": "^4.5.0", + "eslint": "^9.27.0", + "eslint-config-next": "^15.3.2", + "eslint-plugin-react-hooks": "^5.2.0", + "tailwindcss": "^4.1.7", + "tw-animate-css": "^1.3.0", + "typescript": "~5.8.3", + "typescript-eslint": "^8.32.1" + }, + "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977" +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..96ae5c3 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,5935 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@radix-ui/react-checkbox': + specifier: ^1.3.2 + version: 1.3.2(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-dialog': + specifier: ^1.1.14 + version: 1.1.14(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-dropdown-menu': + specifier: ^2.1.15 + version: 2.1.15(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-label': + specifier: ^2.1.7 + version: 2.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-popover': + specifier: ^1.1.14 + version: 1.1.14(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-progress': + specifier: ^1.1.7 + version: 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-scroll-area': + specifier: ^1.2.9 + version: 1.2.9(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-select': + specifier: ^2.2.5 + version: 2.2.5(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': + specifier: ^1.2.3 + version: 1.2.3(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-tooltip': + specifier: ^1.2.7 + version: 1.2.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tanstack/react-table': + specifier: ^8.21.3 + version: 8.21.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tauri-apps/api': + specifier: ^2.5.0 + version: 2.5.0 + '@tauri-apps/plugin-fs': + specifier: ~2.3.0 + version: 2.3.0 + '@tauri-apps/plugin-opener': + specifier: ^2.2.7 + version: 2.2.7 + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + cmdk: + specifier: ^1.1.1 + version: 1.1.1(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: + specifier: ^15.3.2 + version: 15.3.2(@babel/core@7.27.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next-themes: + specifier: ^0.4.6 + version: 0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: + specifier: ^19.1.0 + version: 19.1.0 + react-dom: + specifier: ^19.1.0 + version: 19.1.0(react@19.1.0) + react-icons: + specifier: ^5.5.0 + version: 5.5.0(react@19.1.0) + sonner: + specifier: ^2.0.3 + version: 2.0.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + tailwind-merge: + specifier: ^3.3.0 + version: 3.3.0 + devDependencies: + '@biomejs/biome': + specifier: ^1.9.4 + version: 1.9.4 + '@eslint/eslintrc': + specifier: ^3.3.1 + version: 3.3.1 + '@eslint/js': + specifier: ^9.27.0 + version: 9.27.0 + '@next/eslint-plugin-next': + specifier: ^15.3.2 + version: 15.3.2 + '@tailwindcss/postcss': + specifier: ^4.1.7 + version: 4.1.7 + '@tauri-apps/cli': + specifier: ^2.5.0 + version: 2.5.0 + '@types/node': + specifier: ^22.15.21 + version: 22.15.21 + '@types/react': + specifier: ^19.1.5 + version: 19.1.5 + '@types/react-dom': + specifier: ^19.1.5 + version: 19.1.5(@types/react@19.1.5) + '@typescript-eslint/eslint-plugin': + specifier: ^8.32.1 + version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': + specifier: ^8.32.1 + version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@vitejs/plugin-react': + specifier: ^4.5.0 + version: 4.5.0(vite@6.2.0(@types/node@22.15.21)(jiti@2.4.2)(lightningcss@1.30.1)) + eslint: + specifier: ^9.27.0 + version: 9.27.0(jiti@2.4.2) + eslint-config-next: + specifier: ^15.3.2 + version: 15.3.2(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint-plugin-react-hooks: + specifier: ^5.2.0 + version: 5.2.0(eslint@9.27.0(jiti@2.4.2)) + tailwindcss: + specifier: ^4.1.7 + version: 4.1.7 + tw-animate-css: + specifier: ^1.3.0 + version: 1.3.0 + typescript: + specifier: ~5.8.3 + version: 5.8.3 + typescript-eslint: + specifier: ^8.32.1 + version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + +packages: + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.27.2': + resolution: {integrity: sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.27.1': + resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.27.1': + resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.27.1': + resolution: {integrity: sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.27.1': + resolution: {integrity: sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.2': + resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-transform-react-jsx-self@7.27.1': + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.27.1': + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.1': + resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.1': + resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} + engines: {node: '>=6.9.0'} + + '@biomejs/biome@1.9.4': + resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} + engines: {node: '>=14.21.3'} + hasBin: true + + '@biomejs/cli-darwin-arm64@1.9.4': + resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [darwin] + + '@biomejs/cli-darwin-x64@1.9.4': + resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [darwin] + + '@biomejs/cli-linux-arm64-musl@1.9.4': + resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-arm64@1.9.4': + resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-x64-musl@1.9.4': + resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-linux-x64@1.9.4': + resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-win32-arm64@1.9.4': + resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [win32] + + '@biomejs/cli-win32-x64@1.9.4': + resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [win32] + + '@emnapi/core@1.4.3': + resolution: {integrity: sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==} + + '@emnapi/runtime@1.4.3': + resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + + '@emnapi/wasi-threads@1.0.2': + resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} + + '@esbuild/aix-ppc64@0.25.4': + resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.4': + resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.4': + resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.4': + resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.4': + resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.4': + resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.4': + resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.4': + resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.4': + resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.4': + resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.4': + resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.4': + resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.4': + resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.4': + resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.4': + resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.4': + resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.4': + resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.4': + resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.4': + resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.4': + resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.4': + resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.25.4': + resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.4': + resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.4': + resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.4': + resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.20.0': + resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.2.2': + resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.14.0': + resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.27.0': + resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.3.1': + resolution: {integrity: sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@floating-ui/core@1.7.0': + resolution: {integrity: sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==} + + '@floating-ui/dom@1.7.0': + resolution: {integrity: sha512-lGTor4VlXcesUMh1cupTUTDoCxMb0V6bm3CnxHzQcw8Eaf1jQbgQX4i02fYgT0vJ82tb5MZ4CZk1LRGkktJCzg==} + + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.9': + resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@img/sharp-darwin-arm64@0.34.2': + resolution: {integrity: sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.34.2': + resolution: {integrity: sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.1.0': + resolution: {integrity: sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.1.0': + resolution: {integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.1.0': + resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.1.0': + resolution: {integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-ppc64@1.1.0': + resolution: {integrity: sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==} + cpu: [ppc64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.1.0': + resolution: {integrity: sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.1.0': + resolution: {integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.1.0': + resolution: {integrity: sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.1.0': + resolution: {integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.34.2': + resolution: {integrity: sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.34.2': + resolution: {integrity: sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.34.2': + resolution: {integrity: sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.34.2': + resolution: {integrity: sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.34.2': + resolution: {integrity: sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.34.2': + resolution: {integrity: sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.34.2': + resolution: {integrity: sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.2': + resolution: {integrity: sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.2': + resolution: {integrity: sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.34.2': + resolution: {integrity: sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@napi-rs/wasm-runtime@0.2.10': + resolution: {integrity: sha512-bCsCyeZEwVErsGmyPNSzwfwFn4OdxBj0mmv6hOFucB/k81Ojdu68RbZdxYsRQUPc9l6SU5F/cG+bXgWs3oUgsQ==} + + '@next/env@15.3.2': + resolution: {integrity: sha512-xURk++7P7qR9JG1jJtLzPzf0qEvqCN0A/T3DXf8IPMKo9/6FfjxtEffRJIIew/bIL4T3C2jLLqBor8B/zVlx6g==} + + '@next/eslint-plugin-next@15.3.2': + resolution: {integrity: sha512-ijVRTXBgnHT33aWnDtmlG+LJD+5vhc9AKTJPquGG5NKXjpKNjc62woIhFtrAcWdBobt8kqjCoaJ0q6sDQoX7aQ==} + + '@next/swc-darwin-arm64@15.3.2': + resolution: {integrity: sha512-2DR6kY/OGcokbnCsjHpNeQblqCZ85/1j6njYSkzRdpLn5At7OkSdmk7WyAmB9G0k25+VgqVZ/u356OSoQZ3z0g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@15.3.2': + resolution: {integrity: sha512-ro/fdqaZWL6k1S/5CLv1I0DaZfDVJkWNaUU3un8Lg6m0YENWlDulmIWzV96Iou2wEYyEsZq51mwV8+XQXqMp3w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@15.3.2': + resolution: {integrity: sha512-covwwtZYhlbRWK2HlYX9835qXum4xYZ3E2Mra1mdQ+0ICGoMiw1+nVAn4d9Bo7R3JqSmK1grMq/va+0cdh7bJA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@15.3.2': + resolution: {integrity: sha512-KQkMEillvlW5Qk5mtGA/3Yz0/tzpNlSw6/3/ttsV1lNtMuOHcGii3zVeXZyi4EJmmLDKYcTcByV2wVsOhDt/zg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-x64-gnu@15.3.2': + resolution: {integrity: sha512-uRBo6THWei0chz+Y5j37qzx+BtoDRFIkDzZjlpCItBRXyMPIg079eIkOCl3aqr2tkxL4HFyJ4GHDes7W8HuAUg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@15.3.2': + resolution: {integrity: sha512-+uxFlPuCNx/T9PdMClOqeE8USKzj8tVz37KflT3Kdbx/LOlZBRI2yxuIcmx1mPNK8DwSOMNCr4ureSet7eyC0w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-win32-arm64-msvc@15.3.2': + resolution: {integrity: sha512-LLTKmaI5cfD8dVzh5Vt7+OMo+AIOClEdIU/TSKbXXT2iScUTSxOGoBhfuv+FU8R9MLmrkIL1e2fBMkEEjYAtPQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-x64-msvc@15.3.2': + resolution: {integrity: sha512-aW5B8wOPioJ4mBdMDXkt5f3j8pUr9W8AnlX0Df35uRWNT1Y6RIybxjnSUe+PhM+M1bwgyY8PHLmXZC6zT1o5tA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + + '@radix-ui/number@1.1.1': + resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} + + '@radix-ui/primitive@1.1.2': + resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} + + '@radix-ui/react-arrow@1.1.7': + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-checkbox@1.3.2': + resolution: {integrity: sha512-yd+dI56KZqawxKZrJ31eENUwqc1QSqg4OZ15rybGjF2ZNwMO+wCyHzAVLRp9qoYJf7kYy0YpZ2b0JCzJ42HZpA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.7': + resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.14': + resolution: {integrity: sha512-+CpweKjqpzTmwRwcYECQcNYbI8V9VSQt0SNFKeEBLgfucbsLssU6Ppq7wUdNXEGb573bMjFhVjKVll8rmV6zMw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-direction@1.1.1': + resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.10': + resolution: {integrity: sha512-IM1zzRV4W3HtVgftdQiiOmA0AdJlCtMLe00FXaHwgt3rAnNsIyDqshvkIW3hj/iu5hu8ERP7KIYki6NkqDxAwQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dropdown-menu@2.1.15': + resolution: {integrity: sha512-mIBnOjgwo9AH3FyKaSWoSu/dYj6VdhJ7frEPiGTeXCdUFHjl9h3mFh2wwhEtINOmYXWhdpf1rY2minFsmaNgVQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.2': + resolution: {integrity: sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.7': + resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.1.1': + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-label@2.1.7': + resolution: {integrity: sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-menu@2.1.15': + resolution: {integrity: sha512-tVlmA3Vb9n8SZSd+YSbuFR66l87Wiy4du+YE+0hzKQEANA+7cWKH1WgqcEX4pXqxUFQKrWQGHdvEfw00TjFiew==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popover@1.1.14': + resolution: {integrity: sha512-ODz16+1iIbGUfFEfKx2HTPKizg2MN39uIOV8MXeHnmdd3i/N9Wt7vU46wbHsqA0xoaQyXVcs0KIlBdOA2Y95bw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.7': + resolution: {integrity: sha512-IUFAccz1JyKcf/RjB552PlWwxjeCJB8/4KxT7EhBHOJM+mN7LdW+B3kacJXILm32xawcMMjb2i0cIZpo+f9kiQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.9': + resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.4': + resolution: {integrity: sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.1.3': + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-progress@1.1.7': + resolution: {integrity: sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.1.10': + resolution: {integrity: sha512-dT9aOXUen9JSsxnMPv/0VqySQf5eDQ6LCk5Sw28kamz8wSOW2bJdlX2Bg5VUIIcV+6XlHpWTIuTPCf/UNIyq8Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-scroll-area@1.2.9': + resolution: {integrity: sha512-YSjEfBXnhUELsO2VzjdtYYD4CfQjvao+lhhrX5XsHD7/cyUNzljF1FHEbgTPN7LH2MClfwRMIsYlqTYpKTTe2A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-select@2.2.5': + resolution: {integrity: sha512-HnMTdXEVuuyzx63ME0ut4+sEMYW6oouHWNGUZc7ddvUWIcfCva/AMoqEW/3wnEllriMWBa0RHspCYnfCWJQYmA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.2.3': + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-tooltip@1.2.7': + resolution: {integrity: sha512-Ap+fNYwKTYJ9pzqW+Xe2HtMRbQ/EeWkj2qykZ6SuEV4iS/o1bZI5ssJbk4D2r8XuDuOBVz/tIx2JObtuqU+5Zw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.2.2': + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-effect-event@0.0.2': + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.1': + resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.2.3': + resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + + '@rolldown/pluginutils@1.0.0-beta.9': + resolution: {integrity: sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==} + + '@rollup/rollup-android-arm-eabi@4.41.0': + resolution: {integrity: sha512-KxN+zCjOYHGwCl4UCtSfZ6jrq/qi88JDUtiEFk8LELEHq2Egfc/FgW+jItZiOLRuQfb/3xJSgFuNPC9jzggX+A==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.41.0': + resolution: {integrity: sha512-yDvqx3lWlcugozax3DItKJI5j05B0d4Kvnjx+5mwiUpWramVvmAByYigMplaoAQ3pvdprGCTCE03eduqE/8mPQ==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.41.0': + resolution: {integrity: sha512-2KOU574vD3gzcPSjxO0eyR5iWlnxxtmW1F5CkNOHmMlueKNCQkxR6+ekgWyVnz6zaZihpUNkGxjsYrkTJKhkaw==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.41.0': + resolution: {integrity: sha512-gE5ACNSxHcEZyP2BA9TuTakfZvULEW4YAOtxl/A/YDbIir/wPKukde0BNPlnBiP88ecaN4BJI2TtAd+HKuZPQQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.41.0': + resolution: {integrity: sha512-GSxU6r5HnWij7FoSo7cZg3l5GPg4HFLkzsFFh0N/b16q5buW1NAWuCJ+HMtIdUEi6XF0qH+hN0TEd78laRp7Dg==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.41.0': + resolution: {integrity: sha512-KGiGKGDg8qLRyOWmk6IeiHJzsN/OYxO6nSbT0Vj4MwjS2XQy/5emsmtoqLAabqrohbgLWJ5GV3s/ljdrIr8Qjg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.41.0': + resolution: {integrity: sha512-46OzWeqEVQyX3N2/QdiU/CMXYDH/lSHpgfBkuhl3igpZiaB3ZIfSjKuOnybFVBQzjsLwkus2mjaESy8H41SzvA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.41.0': + resolution: {integrity: sha512-lfgW3KtQP4YauqdPpcUZHPcqQXmTmH4nYU0cplNeW583CMkAGjtImw4PKli09NFi2iQgChk4e9erkwlfYem6Lg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.41.0': + resolution: {integrity: sha512-nn8mEyzMbdEJzT7cwxgObuwviMx6kPRxzYiOl6o/o+ChQq23gfdlZcUNnt89lPhhz3BYsZ72rp0rxNqBSfqlqw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.41.0': + resolution: {integrity: sha512-l+QK99je2zUKGd31Gh+45c4pGDAqZSuWQiuRFCdHYC2CSiO47qUWsCcenrI6p22hvHZrDje9QjwSMAFL3iwXwQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.41.0': + resolution: {integrity: sha512-WbnJaxPv1gPIm6S8O/Wg+wfE/OzGSXlBMbOe4ie+zMyykMOeqmgD1BhPxZQuDqwUN+0T/xOFtL2RUWBspnZj3w==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.41.0': + resolution: {integrity: sha512-eRDWR5t67/b2g8Q/S8XPi0YdbKcCs4WQ8vklNnUYLaSWF+Cbv2axZsp4jni6/j7eKvMLYCYdcsv8dcU+a6QNFg==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.41.0': + resolution: {integrity: sha512-TWrZb6GF5jsEKG7T1IHwlLMDRy2f3DPqYldmIhnA2DVqvvhY2Ai184vZGgahRrg8k9UBWoSlHv+suRfTN7Ua4A==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.41.0': + resolution: {integrity: sha512-ieQljaZKuJpmWvd8gW87ZmSFwid6AxMDk5bhONJ57U8zT77zpZ/TPKkU9HpnnFrM4zsgr4kiGuzbIbZTGi7u9A==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.41.0': + resolution: {integrity: sha512-/L3pW48SxrWAlVsKCN0dGLB2bi8Nv8pr5S5ocSM+S0XCn5RCVCXqi8GVtHFsOBBCSeR+u9brV2zno5+mg3S4Aw==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.41.0': + resolution: {integrity: sha512-XMLeKjyH8NsEDCRptf6LO8lJk23o9wvB+dJwcXMaH6ZQbbkHu2dbGIUindbMtRN6ux1xKi16iXWu6q9mu7gDhQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.41.0': + resolution: {integrity: sha512-m/P7LycHZTvSQeXhFmgmdqEiTqSV80zn6xHaQ1JSqwCtD1YGtwEK515Qmy9DcB2HK4dOUVypQxvhVSy06cJPEg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.41.0': + resolution: {integrity: sha512-4yodtcOrFHpbomJGVEqZ8fzD4kfBeCbpsUy5Pqk4RluXOdsWdjLnjhiKy2w3qzcASWd04fp52Xz7JKarVJ5BTg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.41.0': + resolution: {integrity: sha512-tmazCrAsKzdkXssEc65zIE1oC6xPHwfy9d5Ta25SRCDOZS+I6RypVVShWALNuU9bxIfGA0aqrmzlzoM5wO5SPQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.41.0': + resolution: {integrity: sha512-h1J+Yzjo/X+0EAvR2kIXJDuTuyT7drc+t2ALY0nIcGPbTatNOf0VWdhEA2Z4AAjv6X1NJV7SYo5oCTYRJhSlVA==} + cpu: [x64] + os: [win32] + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@rushstack/eslint-patch@1.11.0': + resolution: {integrity: sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==} + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + + '@tailwindcss/node@4.1.7': + resolution: {integrity: sha512-9rsOpdY9idRI2NH6CL4wORFY0+Q6fnx9XP9Ju+iq/0wJwGD5IByIgFmwVbyy4ymuyprj8Qh4ErxMKTUL4uNh3g==} + + '@tailwindcss/oxide-android-arm64@4.1.7': + resolution: {integrity: sha512-IWA410JZ8fF7kACus6BrUwY2Z1t1hm0+ZWNEzykKmMNM09wQooOcN/VXr0p/WJdtHZ90PvJf2AIBS/Ceqx1emg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.7': + resolution: {integrity: sha512-81jUw9To7fimGGkuJ2W5h3/oGonTOZKZ8C2ghm/TTxbwvfSiFSDPd6/A/KE2N7Jp4mv3Ps9OFqg2fEKgZFfsvg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.7': + resolution: {integrity: sha512-q77rWjEyGHV4PdDBtrzO0tgBBPlQWKY7wZK0cUok/HaGgbNKecegNxCGikuPJn5wFAlIywC3v+WMBt0PEBtwGw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.7': + resolution: {integrity: sha512-RfmdbbK6G6ptgF4qqbzoxmH+PKfP4KSVs7SRlTwcbRgBwezJkAO3Qta/7gDy10Q2DcUVkKxFLXUQO6J3CRvBGw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.7': + resolution: {integrity: sha512-OZqsGvpwOa13lVd1z6JVwQXadEobmesxQ4AxhrwRiPuE04quvZHWn/LnihMg7/XkN+dTioXp/VMu/p6A5eZP3g==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.7': + resolution: {integrity: sha512-voMvBTnJSfKecJxGkoeAyW/2XRToLZ227LxswLAwKY7YslG/Xkw9/tJNH+3IVh5bdYzYE7DfiaPbRkSHFxY1xA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.7': + resolution: {integrity: sha512-PjGuNNmJeKHnP58M7XyjJyla8LPo+RmwHQpBI+W/OxqrwojyuCQ+GUtygu7jUqTEexejZHr/z3nBc/gTiXBj4A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.7': + resolution: {integrity: sha512-HMs+Va+ZR3gC3mLZE00gXxtBo3JoSQxtu9lobbZd+DmfkIxR54NO7Z+UQNPsa0P/ITn1TevtFxXTpsRU7qEvWg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.7': + resolution: {integrity: sha512-MHZ6jyNlutdHH8rd+YTdr3QbXrHXqwIhHw9e7yXEBcQdluGwhpQY2Eku8UZK6ReLaWtQ4gijIv5QoM5eE+qlsA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.7': + resolution: {integrity: sha512-ANaSKt74ZRzE2TvJmUcbFQ8zS201cIPxUDm5qez5rLEwWkie2SkGtA4P+GPTj+u8N6JbPrC8MtY8RmJA35Oo+A==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.7': + resolution: {integrity: sha512-HUiSiXQ9gLJBAPCMVRk2RT1ZrBjto7WvqsPBwUrNK2BcdSxMnk19h4pjZjI7zgPhDxlAbJSumTC4ljeA9y0tEw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.7': + resolution: {integrity: sha512-rYHGmvoHiLJ8hWucSfSOEmdCBIGZIq7SpkPRSqLsH2Ab2YUNgKeAPT1Fi2cx3+hnYOrAb0jp9cRyode3bBW4mQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.7': + resolution: {integrity: sha512-5SF95Ctm9DFiUyjUPnDGkoKItPX/k+xifcQhcqX5RA85m50jw1pT/KzjdvlqxRja45Y52nR4MR9fD1JYd7f8NQ==} + engines: {node: '>= 10'} + + '@tailwindcss/postcss@4.1.7': + resolution: {integrity: sha512-88g3qmNZn7jDgrrcp3ZXEQfp9CVox7xjP1HN2TFKI03CltPVd/c61ydn5qJJL8FYunn0OqBaW5HNUga0kmPVvw==} + + '@tanstack/react-table@8.21.3': + resolution: {integrity: sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww==} + engines: {node: '>=12'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + '@tanstack/table-core@8.21.3': + resolution: {integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==} + engines: {node: '>=12'} + + '@tauri-apps/api@2.5.0': + resolution: {integrity: sha512-Ldux4ip+HGAcPUmuLT8EIkk6yafl5vK0P0c0byzAKzxJh7vxelVtdPONjfgTm96PbN24yjZNESY8CKo8qniluA==} + + '@tauri-apps/cli-darwin-arm64@2.5.0': + resolution: {integrity: sha512-VuVAeTFq86dfpoBDNYAdtQVLbP0+2EKCHIIhkaxjeoPARR0sLpFHz2zs0PcFU76e+KAaxtEtAJAXGNUc8E1PzQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tauri-apps/cli-darwin-x64@2.5.0': + resolution: {integrity: sha512-hUF01sC06cZVa8+I0/VtsHOk9BbO75rd+YdtHJ48xTdcYaQ5QIwL4yZz9OR1AKBTaUYhBam8UX9Pvd5V2/4Dpw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tauri-apps/cli-linux-arm-gnueabihf@2.5.0': + resolution: {integrity: sha512-LQKqttsK252LlqYyX8R02MinUsfFcy3+NZiJwHFgi5Y3+ZUIAED9cSxJkyNtuY5KMnR4RlpgWyLv4P6akN1xhg==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tauri-apps/cli-linux-arm64-gnu@2.5.0': + resolution: {integrity: sha512-mTQufsPcpdHg5RW0zypazMo4L55EfeE5snTzrPqbLX4yCK2qalN7+rnP8O8GT06xhp6ElSP/Ku1M2MR297SByQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tauri-apps/cli-linux-arm64-musl@2.5.0': + resolution: {integrity: sha512-rQO1HhRUQqyEaal5dUVOQruTRda/TD36s9kv1hTxZiFuSq3558lsTjAcUEnMAtBcBkps20sbyTJNMT0AwYIk8Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tauri-apps/cli-linux-riscv64-gnu@2.5.0': + resolution: {integrity: sha512-7oS18FN46yDxyw1zX/AxhLAd7T3GrLj3Ai6s8hZKd9qFVzrAn36ESL7d3G05s8wEtsJf26qjXnVF4qleS3dYsA==} + engines: {node: '>= 10'} + cpu: [riscv64] + os: [linux] + + '@tauri-apps/cli-linux-x64-gnu@2.5.0': + resolution: {integrity: sha512-SG5sFNL7VMmDBdIg3nO3EzNRT306HsiEQ0N90ILe3ZABYAVoPDO/ttpCO37ApLInTzrq/DLN+gOlC/mgZvLw1w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tauri-apps/cli-linux-x64-musl@2.5.0': + resolution: {integrity: sha512-QXDM8zp/6v05PNWju5ELsVwF0VH1n6b5pk2E6W/jFbbiwz80Vs1lACl9pv5kEHkrxBj+aWU/03JzGuIj2g3SkQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tauri-apps/cli-win32-arm64-msvc@2.5.0': + resolution: {integrity: sha512-pFSHFK6b+o9y4Un8w0gGLwVyFTZaC3P0kQ7umRt/BLDkzD5RnQ4vBM7CF8BCU5nkwmEBUCZd7Wt3TWZxe41o6Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tauri-apps/cli-win32-ia32-msvc@2.5.0': + resolution: {integrity: sha512-EArv1IaRlogdLAQyGlKmEqZqm5RfHCUMhJoedWu7GtdbOMUfSAz6FMX2boE1PtEmNO4An+g188flLeVErrxEKg==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@tauri-apps/cli-win32-x64-msvc@2.5.0': + resolution: {integrity: sha512-lj43EFYbnAta8pd9JnUq87o+xRUR0odz+4rixBtTUwUgdRdwQ2V9CzFtsMu6FQKpFQ6mujRK6P1IEwhL6ADRsQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tauri-apps/cli@2.5.0': + resolution: {integrity: sha512-rAtHqG0Gh/IWLjN2zTf3nZqYqbo81oMbqop56rGTjrlWk9pTTAjkqOjSL9XQLIMZ3RbeVjveCqqCA0s8RnLdMg==} + engines: {node: '>= 10'} + hasBin: true + + '@tauri-apps/plugin-fs@2.3.0': + resolution: {integrity: sha512-G9gEyYVUaaxhdRJBgQTTLmzAe0vtHYxYyN1oTQzU3zwvb8T+tVLcAqCdFMWHq0qGeGbmynI5whvYpcXo5LvZ1w==} + + '@tauri-apps/plugin-opener@2.2.7': + resolution: {integrity: sha512-uduEyvOdjpPOEeDRrhwlCspG/f9EQalHumWBtLBnp3fRp++fKGLqDOyUhSIn7PzX45b/rKep//ZQSAQoIxobLA==} + + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/node@22.15.21': + resolution: {integrity: sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==} + + '@types/react-dom@19.1.5': + resolution: {integrity: sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg==} + peerDependencies: + '@types/react': ^19.0.0 + + '@types/react@19.1.5': + resolution: {integrity: sha512-piErsCVVbpMMT2r7wbawdZsq4xMvIAhQuac2gedQHysu1TZYEigE6pnFfgZT+/jQnrRuF5r+SHzuehFjfRjr4g==} + + '@typescript-eslint/eslint-plugin@8.32.1': + resolution: {integrity: sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/parser@8.32.1': + resolution: {integrity: sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.32.1': + resolution: {integrity: sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.32.1': + resolution: {integrity: sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/types@8.32.1': + resolution: {integrity: sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.32.1': + resolution: {integrity: sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.32.1': + resolution: {integrity: sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@8.32.1': + resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@unrs/resolver-binding-darwin-arm64@1.7.2': + resolution: {integrity: sha512-vxtBno4xvowwNmO/ASL0Y45TpHqmNkAaDtz4Jqb+clmcVSSl8XCG/PNFFkGsXXXS6AMjP+ja/TtNCFFa1QwLRg==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.7.2': + resolution: {integrity: sha512-qhVa8ozu92C23Hsmv0BF4+5Dyyd5STT1FolV4whNgbY6mj3kA0qsrGPe35zNR3wAN7eFict3s4Rc2dDTPBTuFQ==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.7.2': + resolution: {integrity: sha512-zKKdm2uMXqLFX6Ac7K5ElnnG5VIXbDlFWzg4WJ8CGUedJryM5A3cTgHuGMw1+P5ziV8CRhnSEgOnurTI4vpHpg==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.2': + resolution: {integrity: sha512-8N1z1TbPnHH+iDS/42GJ0bMPLiGK+cUqOhNbMKtWJ4oFGzqSJk/zoXFzcQkgtI63qMcUI7wW1tq2usZQSb2jxw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.7.2': + resolution: {integrity: sha512-tjYzI9LcAXR9MYd9rO45m1s0B/6bJNuZ6jeOxo1pq1K6OBuRMMmfyvJYval3s9FPPGmrldYA3mi4gWDlWuTFGA==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.7.2': + resolution: {integrity: sha512-jon9M7DKRLGZ9VYSkFMflvNqu9hDtOCEnO2QAryFWgT6o6AXU8du56V7YqnaLKr6rAbZBWYsYpikF226v423QA==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-musl@1.7.2': + resolution: {integrity: sha512-c8Cg4/h+kQ63pL43wBNaVMmOjXI/X62wQmru51qjfTvI7kmCy5uHTJvK/9LrF0G8Jdx8r34d019P1DVJmhXQpA==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.7.2': + resolution: {integrity: sha512-A+lcwRFyrjeJmv3JJvhz5NbcCkLQL6Mk16kHTNm6/aGNc4FwPHPE4DR9DwuCvCnVHvF5IAd9U4VIs/VvVir5lg==} + cpu: [ppc64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.7.2': + resolution: {integrity: sha512-hQQ4TJQrSQW8JlPm7tRpXN8OCNP9ez7PajJNjRD1ZTHQAy685OYqPrKjfaMw/8LiHCt8AZ74rfUVHP9vn0N69Q==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-musl@1.7.2': + resolution: {integrity: sha512-NoAGbiqrxtY8kVooZ24i70CjLDlUFI7nDj3I9y54U94p+3kPxwd2L692YsdLa+cqQ0VoqMWoehDFp21PKRUoIQ==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-s390x-gnu@1.7.2': + resolution: {integrity: sha512-KaZByo8xuQZbUhhreBTW+yUnOIHUsv04P8lKjQ5otiGoSJ17ISGYArc+4vKdLEpGaLbemGzr4ZeUbYQQsLWFjA==} + cpu: [s390x] + os: [linux] + + '@unrs/resolver-binding-linux-x64-gnu@1.7.2': + resolution: {integrity: sha512-dEidzJDubxxhUCBJ/SHSMJD/9q7JkyfBMT77Px1npl4xpg9t0POLvnWywSk66BgZS/b2Hy9Y1yFaoMTFJUe9yg==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-linux-x64-musl@1.7.2': + resolution: {integrity: sha512-RvP+Ux3wDjmnZDT4XWFfNBRVG0fMsc+yVzNFUqOflnDfZ9OYujv6nkh+GOr+watwrW4wdp6ASfG/e7bkDradsw==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-wasm32-wasi@1.7.2': + resolution: {integrity: sha512-y797JBmO9IsvXVRCKDXOxjyAE4+CcZpla2GSoBQ33TVb3ILXuFnMrbR/QQZoauBYeOFuu4w3ifWLw52sdHGz6g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.7.2': + resolution: {integrity: sha512-gtYTh4/VREVSLA+gHrfbWxaMO/00y+34htY7XpioBTy56YN2eBjkPrY1ML1Zys89X3RJDKVaogzwxlM1qU7egg==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.7.2': + resolution: {integrity: sha512-Ywv20XHvHTDRQs12jd3MY8X5C8KLjDbg/jyaal/QLKx3fAShhJyD4blEANInsjxW3P7isHx1Blt56iUDDJO3jg==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.7.2': + resolution: {integrity: sha512-friS8NEQfHaDbkThxopGk+LuE5v3iY0StruifjQEt7SLbA46OnfgMO15sOTkbpJkol6RB+1l1TYPXh0sCddpvA==} + cpu: [x64] + os: [win32] + + '@vitejs/plugin-react@4.5.0': + resolution: {integrity: sha512-JuLWaEqypaJmOJPLWwO335Ig6jSgC1FTONCWAxnqcQthLTK/Yc9aH6hr9z/87xciejbQcnP3GnA1FWUSWeXaeg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.10.3: + resolution: {integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==} + engines: {node: '>=4'} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.24.5: + resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001718: + resolution: {integrity: sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + cmdk@1.1.1: + resolution: {integrity: sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + react-dom: ^18 || ^19 || ^19.0.0-rc + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + electron-to-chromium@1.5.157: + resolution: {integrity: sha512-/0ybgsQd1muo8QlnuTpKwtl0oX5YMlUGbm8xyqgDU00motRkKFFbUJySAQBWcY79rVqNLWIWa87BGVGClwAB2w==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + + es-abstract@1.23.10: + resolution: {integrity: sha512-MtUbM072wlJNyeYAe0mhzrD+M6DIJa96CZAOBBrhDbgKnB4MApIKefcyAB1eOdYn8cUNZgvwBvEzdoAYsxgEIw==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + esbuild@0.25.4: + resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-next@15.3.2: + resolution: {integrity: sha512-FerU4DYccO4FgeYFFglz0SnaKRe1ejXQrDb8kWUkTAg036YWi+jUsgg4sIGNCDhAsDITsZaL4MzBWKB6f4G1Dg==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@3.10.1: + resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + + eslint-module-utils@2.12.0: + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.31.0: + resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jsx-a11y@6.10.2: + resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + + eslint-plugin-react-hooks@5.2.0: + resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.27.0: + resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fdir@6.4.4: + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.10.1: + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.4: + resolution: {integrity: sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-bun-module@2.0.0: + resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + engines: {node: '>= 12.0.0'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + napi-postinstall@0.2.4: + resolution: {integrity: sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + next-themes@0.4.6: + resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} + peerDependencies: + react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + + next@15.3.2: + resolution: {integrity: sha512-CA3BatMyHkxZ48sgOCLdVHjFU36N7TF1HhqAHLFOkV6buwZnvMI84Cug8xD56B9mCuKrqXnLn94417GrZ/jjCQ==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-dom@19.1.0: + resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} + peerDependencies: + react: ^19.1.0 + + react-icons@5.5.0: + resolution: {integrity: sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==} + peerDependencies: + react: '*' + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.7.0: + resolution: {integrity: sha512-sGsQtcjMqdQyijAHytfGEELB8FufGbfXIsvUTe+NLx1GDRJCXtCFLBLUI1eyZCKXXvbEU2C6gai0PZKoIE9Vbg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react@19.1.0: + resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} + engines: {node: '>=0.10.0'} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup@4.41.0: + resolution: {integrity: sha512-HqMFpUbWlf/tvcxBFNKnJyzc7Lk+XO3FGc3pbNBLqEbOz0gPLRgcrlS3UF4MfUrVlstOaP/q0kM6GVvi+LrLRg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + scheduler@0.26.0: + resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + sharp@0.34.2: + resolution: {integrity: sha512-lszvBmB9QURERtyKT2bNmsgxXK0ShJrL/fvqlonCo7e6xBF8nT8xU6pW+PMIbLsz0RxQk3rgH9kd8UmvOzlMJg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + sonner@2.0.3: + resolution: {integrity: sha512-njQ4Hht92m0sMqqHVDL32V2Oun9W1+PHO9NDv9FHfJjT3JT22IG4Jpo3FPQy+mouRKCXFWO+r67v6MrHX2zeIA==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + stable-hash@0.0.5: + resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + string.prototype.includes@2.0.1: + resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} + engines: {node: '>= 0.4'} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tailwind-merge@3.3.0: + resolution: {integrity: sha512-fyW/pEfcQSiigd5SNn0nApUOxx0zB/dm6UDU/rEwc2c3sX2smWUNbapHv+QRqLGVp9GWX3THIa7MUGPo+YkDzQ==} + + tailwindcss@4.1.7: + resolution: {integrity: sha512-kr1o/ErIdNhTz8uzAYL7TpaUuzKIE6QPQ4qmSdxnoX/lo+5wmUHQA6h3L5yIqEImSRnAAURDirLu/BgiXGPAhg==} + + tapable@2.2.2: + resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + engines: {node: '>=6'} + + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + + tinyglobby@0.2.13: + resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + engines: {node: '>=12.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tw-animate-css@1.3.0: + resolution: {integrity: sha512-jrJ0XenzS9KVuDThJDvnhalbl4IYiMQ/XvpA0a2FL8KmlK+6CSMviO7ROY/I7z1NnUs5NnDhlM6fXmF40xPxzw==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typescript-eslint@8.32.1: + resolution: {integrity: sha512-D7el+eaDHAmXvrZBy1zpzSNIRqnCOrkwTgZxTu3MUqRWk8k0q9m9Ho4+vPf7iHtgUfrK/o8IZaEApsxPlHTFCg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + unrs-resolver@1.7.2: + resolution: {integrity: sha512-BBKpaylOW8KbHsu378Zky/dGh4ckT/4NW/0SHRABdqRLcQJ2dAOjDo9g97p04sWflm0kqPqpUatxReNV/dqI5A==} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + vite@6.2.0: + resolution: {integrity: sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.27.2': {} + + '@babel/core@7.27.1': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/helpers': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + convert-source-map: 2.0.0 + debug: 4.4.1 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.27.1': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.27.2 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.24.5 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.27.1': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + + '@babel/parser@7.27.2': + dependencies: + '@babel/types': 7.27.1 + + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + + '@babel/traverse@7.27.1': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + debug: 4.4.1 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.27.1': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@biomejs/biome@1.9.4': + optionalDependencies: + '@biomejs/cli-darwin-arm64': 1.9.4 + '@biomejs/cli-darwin-x64': 1.9.4 + '@biomejs/cli-linux-arm64': 1.9.4 + '@biomejs/cli-linux-arm64-musl': 1.9.4 + '@biomejs/cli-linux-x64': 1.9.4 + '@biomejs/cli-linux-x64-musl': 1.9.4 + '@biomejs/cli-win32-arm64': 1.9.4 + '@biomejs/cli-win32-x64': 1.9.4 + + '@biomejs/cli-darwin-arm64@1.9.4': + optional: true + + '@biomejs/cli-darwin-x64@1.9.4': + optional: true + + '@biomejs/cli-linux-arm64-musl@1.9.4': + optional: true + + '@biomejs/cli-linux-arm64@1.9.4': + optional: true + + '@biomejs/cli-linux-x64-musl@1.9.4': + optional: true + + '@biomejs/cli-linux-x64@1.9.4': + optional: true + + '@biomejs/cli-win32-arm64@1.9.4': + optional: true + + '@biomejs/cli-win32-x64@1.9.4': + optional: true + + '@emnapi/core@1.4.3': + dependencies: + '@emnapi/wasi-threads': 1.0.2 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.4.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.0.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@esbuild/aix-ppc64@0.25.4': + optional: true + + '@esbuild/android-arm64@0.25.4': + optional: true + + '@esbuild/android-arm@0.25.4': + optional: true + + '@esbuild/android-x64@0.25.4': + optional: true + + '@esbuild/darwin-arm64@0.25.4': + optional: true + + '@esbuild/darwin-x64@0.25.4': + optional: true + + '@esbuild/freebsd-arm64@0.25.4': + optional: true + + '@esbuild/freebsd-x64@0.25.4': + optional: true + + '@esbuild/linux-arm64@0.25.4': + optional: true + + '@esbuild/linux-arm@0.25.4': + optional: true + + '@esbuild/linux-ia32@0.25.4': + optional: true + + '@esbuild/linux-loong64@0.25.4': + optional: true + + '@esbuild/linux-mips64el@0.25.4': + optional: true + + '@esbuild/linux-ppc64@0.25.4': + optional: true + + '@esbuild/linux-riscv64@0.25.4': + optional: true + + '@esbuild/linux-s390x@0.25.4': + optional: true + + '@esbuild/linux-x64@0.25.4': + optional: true + + '@esbuild/netbsd-arm64@0.25.4': + optional: true + + '@esbuild/netbsd-x64@0.25.4': + optional: true + + '@esbuild/openbsd-arm64@0.25.4': + optional: true + + '@esbuild/openbsd-x64@0.25.4': + optional: true + + '@esbuild/sunos-x64@0.25.4': + optional: true + + '@esbuild/win32-arm64@0.25.4': + optional: true + + '@esbuild/win32-ia32@0.25.4': + optional: true + + '@esbuild/win32-x64@0.25.4': + optional: true + + '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0(jiti@2.4.2))': + dependencies: + eslint: 9.27.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.20.0': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.1 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.2.2': {} + + '@eslint/core@0.14.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.1 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.27.0': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.3.1': + dependencies: + '@eslint/core': 0.14.0 + levn: 0.4.1 + + '@floating-ui/core@1.7.0': + dependencies: + '@floating-ui/utils': 0.2.9 + + '@floating-ui/dom@1.7.0': + dependencies: + '@floating-ui/core': 1.7.0 + '@floating-ui/utils': 0.2.9 + + '@floating-ui/react-dom@2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@floating-ui/dom': 1.7.0 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + + '@floating-ui/utils@0.2.9': {} + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@img/sharp-darwin-arm64@0.34.2': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.1.0 + optional: true + + '@img/sharp-darwin-x64@0.34.2': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.1.0 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.1.0': + optional: true + + '@img/sharp-libvips-darwin-x64@1.1.0': + optional: true + + '@img/sharp-libvips-linux-arm64@1.1.0': + optional: true + + '@img/sharp-libvips-linux-arm@1.1.0': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.1.0': + optional: true + + '@img/sharp-libvips-linux-s390x@1.1.0': + optional: true + + '@img/sharp-libvips-linux-x64@1.1.0': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.1.0': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.1.0': + optional: true + + '@img/sharp-linux-arm64@0.34.2': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.1.0 + optional: true + + '@img/sharp-linux-arm@0.34.2': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.1.0 + optional: true + + '@img/sharp-linux-s390x@0.34.2': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.1.0 + optional: true + + '@img/sharp-linux-x64@0.34.2': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.1.0 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.2': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.2': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.1.0 + optional: true + + '@img/sharp-wasm32@0.34.2': + dependencies: + '@emnapi/runtime': 1.4.3 + optional: true + + '@img/sharp-win32-arm64@0.34.2': + optional: true + + '@img/sharp-win32-ia32@0.34.2': + optional: true + + '@img/sharp-win32-x64@0.34.2': + optional: true + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@napi-rs/wasm-runtime@0.2.10': + dependencies: + '@emnapi/core': 1.4.3 + '@emnapi/runtime': 1.4.3 + '@tybys/wasm-util': 0.9.0 + optional: true + + '@next/env@15.3.2': {} + + '@next/eslint-plugin-next@15.3.2': + dependencies: + fast-glob: 3.3.1 + + '@next/swc-darwin-arm64@15.3.2': + optional: true + + '@next/swc-darwin-x64@15.3.2': + optional: true + + '@next/swc-linux-arm64-gnu@15.3.2': + optional: true + + '@next/swc-linux-arm64-musl@15.3.2': + optional: true + + '@next/swc-linux-x64-gnu@15.3.2': + optional: true + + '@next/swc-linux-x64-musl@15.3.2': + optional: true + + '@next/swc-win32-arm64-msvc@15.3.2': + optional: true + + '@next/swc-win32-x64-msvc@15.3.2': + optional: true + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@nolyfill/is-core-module@1.0.39': {} + + '@radix-ui/number@1.1.1': {} + + '@radix-ui/primitive@1.1.2': {} + + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-checkbox@1.3.2(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.5)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.5)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.5)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.5 + + '@radix-ui/react-context@1.1.2(@types/react@19.1.5)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.5 + + '@radix-ui/react-dialog@1.1.14(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.5)(react@19.1.0) + aria-hidden: 1.2.6 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-remove-scroll: 2.7.0(@types/react@19.1.5)(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-direction@1.1.1(@types/react@19.1.5)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.5 + + '@radix-ui/react-dismissable-layer@1.1.10(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.5)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-dropdown-menu@2.1.15(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-menu': 2.1.15(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.5)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-focus-guards@1.1.2(@types/react@19.1.5)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.5 + + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.5)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-id@1.1.1(@types/react@19.1.5)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.5)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.5 + + '@radix-ui/react-label@2.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-menu@2.1.15(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-popper': 1.2.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-roving-focus': 1.1.10(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.5)(react@19.1.0) + aria-hidden: 1.2.6 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-remove-scroll: 2.7.0(@types/react@19.1.5)(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-popover@1.1.14(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-popper': 1.2.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.5)(react@19.1.0) + aria-hidden: 1.2.6 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-remove-scroll: 2.7.0(@types/react@19.1.5)(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-popper@1.2.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/rect': 1.1.1 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.5)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-presence@1.1.4(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.5)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.5)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-progress@1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-roving-focus@1.1.10(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.5)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-scroll-area@1.2.9(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.5)(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-select@2.2.5(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-popper': 1.2.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + aria-hidden: 1.2.6 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-remove-scroll: 2.7.0(@types/react@19.1.5)(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-slot@1.2.3(@types/react@19.1.5)(react@19.1.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.5 + + '@radix-ui/react-tooltip@1.2.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-popper': 1.2.7(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.5)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.5 + + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.5)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.5)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.5 + + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.5)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.5)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.5 + + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.5)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.5)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.5 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.5)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.5 + + '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.5)(react@19.1.0)': + dependencies: + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.5 + + '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.5)(react@19.1.0)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.5 + + '@radix-ui/react-use-size@1.1.1(@types/react@19.1.5)(react@19.1.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.5)(react@19.1.0) + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.5 + + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@radix-ui/rect@1.1.1': {} + + '@rolldown/pluginutils@1.0.0-beta.9': {} + + '@rollup/rollup-android-arm-eabi@4.41.0': + optional: true + + '@rollup/rollup-android-arm64@4.41.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.41.0': + optional: true + + '@rollup/rollup-darwin-x64@4.41.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.41.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.41.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.41.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.41.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.41.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.41.0': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.41.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.41.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.41.0': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.41.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.41.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.41.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.41.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.41.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.41.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.41.0': + optional: true + + '@rtsao/scc@1.1.0': {} + + '@rushstack/eslint-patch@1.11.0': {} + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + + '@tailwindcss/node@4.1.7': + dependencies: + '@ampproject/remapping': 2.3.0 + enhanced-resolve: 5.18.1 + jiti: 2.4.2 + lightningcss: 1.30.1 + magic-string: 0.30.17 + source-map-js: 1.2.1 + tailwindcss: 4.1.7 + + '@tailwindcss/oxide-android-arm64@4.1.7': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.7': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.7': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.7': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.7': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.7': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.7': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.7': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.7': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.7': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.7': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.7': + optional: true + + '@tailwindcss/oxide@4.1.7': + dependencies: + detect-libc: 2.0.4 + tar: 7.4.3 + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.7 + '@tailwindcss/oxide-darwin-arm64': 4.1.7 + '@tailwindcss/oxide-darwin-x64': 4.1.7 + '@tailwindcss/oxide-freebsd-x64': 4.1.7 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.7 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.7 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.7 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.7 + '@tailwindcss/oxide-linux-x64-musl': 4.1.7 + '@tailwindcss/oxide-wasm32-wasi': 4.1.7 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.7 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.7 + + '@tailwindcss/postcss@4.1.7': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.1.7 + '@tailwindcss/oxide': 4.1.7 + postcss: 8.5.3 + tailwindcss: 4.1.7 + + '@tanstack/react-table@8.21.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@tanstack/table-core': 8.21.3 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + + '@tanstack/table-core@8.21.3': {} + + '@tauri-apps/api@2.5.0': {} + + '@tauri-apps/cli-darwin-arm64@2.5.0': + optional: true + + '@tauri-apps/cli-darwin-x64@2.5.0': + optional: true + + '@tauri-apps/cli-linux-arm-gnueabihf@2.5.0': + optional: true + + '@tauri-apps/cli-linux-arm64-gnu@2.5.0': + optional: true + + '@tauri-apps/cli-linux-arm64-musl@2.5.0': + optional: true + + '@tauri-apps/cli-linux-riscv64-gnu@2.5.0': + optional: true + + '@tauri-apps/cli-linux-x64-gnu@2.5.0': + optional: true + + '@tauri-apps/cli-linux-x64-musl@2.5.0': + optional: true + + '@tauri-apps/cli-win32-arm64-msvc@2.5.0': + optional: true + + '@tauri-apps/cli-win32-ia32-msvc@2.5.0': + optional: true + + '@tauri-apps/cli-win32-x64-msvc@2.5.0': + optional: true + + '@tauri-apps/cli@2.5.0': + optionalDependencies: + '@tauri-apps/cli-darwin-arm64': 2.5.0 + '@tauri-apps/cli-darwin-x64': 2.5.0 + '@tauri-apps/cli-linux-arm-gnueabihf': 2.5.0 + '@tauri-apps/cli-linux-arm64-gnu': 2.5.0 + '@tauri-apps/cli-linux-arm64-musl': 2.5.0 + '@tauri-apps/cli-linux-riscv64-gnu': 2.5.0 + '@tauri-apps/cli-linux-x64-gnu': 2.5.0 + '@tauri-apps/cli-linux-x64-musl': 2.5.0 + '@tauri-apps/cli-win32-arm64-msvc': 2.5.0 + '@tauri-apps/cli-win32-ia32-msvc': 2.5.0 + '@tauri-apps/cli-win32-x64-msvc': 2.5.0 + + '@tauri-apps/plugin-fs@2.3.0': + dependencies: + '@tauri-apps/api': 2.5.0 + + '@tauri-apps/plugin-opener@2.2.7': + dependencies: + '@tauri-apps/api': 2.5.0 + + '@tybys/wasm-util@0.9.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.7 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.27.1 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + + '@types/babel__traverse@7.20.7': + dependencies: + '@babel/types': 7.27.1 + + '@types/estree@1.0.7': {} + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/node@22.15.21': + dependencies: + undici-types: 6.21.0 + + '@types/react-dom@19.1.5(@types/react@19.1.5)': + dependencies: + '@types/react': 19.1.5 + + '@types/react@19.1.5': + dependencies: + csstype: 3.1.3 + + '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.1 + eslint: 9.27.0(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 7.0.4 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.1 + debug: 4.4.1 + eslint: 9.27.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.32.1': + dependencies: + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/visitor-keys': 8.32.1 + + '@typescript-eslint/type-utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + debug: 4.4.1 + eslint: 9.27.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.32.1': {} + + '@typescript-eslint/typescript-estree@8.32.1(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/visitor-keys': 8.32.1 + debug: 4.4.1 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.32.1': + dependencies: + '@typescript-eslint/types': 8.32.1 + eslint-visitor-keys: 4.2.0 + + '@unrs/resolver-binding-darwin-arm64@1.7.2': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.7.2': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-riscv64-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-riscv64-musl@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.7.2': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.7.2': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.7.2': + dependencies: + '@napi-rs/wasm-runtime': 0.2.10 + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.7.2': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.7.2': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.7.2': + optional: true + + '@vitejs/plugin-react@4.5.0(vite@6.2.0(@types/node@22.15.21)(jiti@2.4.2)(lightningcss@1.30.1))': + dependencies: + '@babel/core': 7.27.1 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.27.1) + '@rolldown/pluginutils': 1.0.0-beta.9 + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 6.2.0(@types/node@22.15.21)(jiti@2.4.2)(lightningcss@1.30.1) + transitivePeerDependencies: + - supports-color + + acorn-jsx@5.3.2(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + + acorn@8.14.1: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + argparse@2.0.1: {} + + aria-hidden@1.2.6: + dependencies: + tslib: 2.8.1 + + aria-query@5.3.2: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-includes@3.1.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.10 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.10 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.findlastindex@1.2.6: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.23.10 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.10 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.10 + es-shim-unscopables: 1.1.0 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.10 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.10 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + ast-types-flow@0.0.8: {} + + async-function@1.0.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + axe-core@4.10.3: {} + + axobject-query@4.1.0: {} + + balanced-match@1.0.2: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.5: + dependencies: + caniuse-lite: 1.0.30001718 + electron-to-chromium: 1.5.157 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.5) + + busboy@1.6.0: + dependencies: + streamsearch: 1.1.0 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001718: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chownr@3.0.0: {} + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + + client-only@0.0.1: {} + + clsx@2.1.1: {} + + cmdk@1.1.1(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-dialog': 1.1.14(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.5)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + optional: true + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + optional: true + + concat-map@0.0.1: {} + + convert-source-map@2.0.0: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + csstype@3.1.3: {} + + damerau-levenshtein@1.0.8: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.4.1: + dependencies: + ms: 2.1.3 + + deep-is@0.1.4: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + detect-libc@2.0.4: {} + + detect-node-es@1.1.0: {} + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + electron-to-chromium@1.5.157: {} + + emoji-regex@9.2.2: {} + + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.2 + + es-abstract@1.23.10: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-iterator-helpers@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.23.10 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + safe-array-concat: 1.1.3 + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + esbuild@0.25.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.4 + '@esbuild/android-arm': 0.25.4 + '@esbuild/android-arm64': 0.25.4 + '@esbuild/android-x64': 0.25.4 + '@esbuild/darwin-arm64': 0.25.4 + '@esbuild/darwin-x64': 0.25.4 + '@esbuild/freebsd-arm64': 0.25.4 + '@esbuild/freebsd-x64': 0.25.4 + '@esbuild/linux-arm': 0.25.4 + '@esbuild/linux-arm64': 0.25.4 + '@esbuild/linux-ia32': 0.25.4 + '@esbuild/linux-loong64': 0.25.4 + '@esbuild/linux-mips64el': 0.25.4 + '@esbuild/linux-ppc64': 0.25.4 + '@esbuild/linux-riscv64': 0.25.4 + '@esbuild/linux-s390x': 0.25.4 + '@esbuild/linux-x64': 0.25.4 + '@esbuild/netbsd-arm64': 0.25.4 + '@esbuild/netbsd-x64': 0.25.4 + '@esbuild/openbsd-arm64': 0.25.4 + '@esbuild/openbsd-x64': 0.25.4 + '@esbuild/sunos-x64': 0.25.4 + '@esbuild/win32-arm64': 0.25.4 + '@esbuild/win32-ia32': 0.25.4 + '@esbuild/win32-x64': 0.25.4 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-next@15.3.2(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@next/eslint-plugin-next': 15.3.2 + '@rushstack/eslint-patch': 1.11.0 + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-react: 7.37.5(eslint@9.27.0(jiti@2.4.2)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.27.0(jiti@2.4.2)) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - eslint-plugin-import-x + - supports-color + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.1 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.27.0(jiti@2.4.2)): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.1 + eslint: 9.27.0(jiti@2.4.2) + get-tsconfig: 4.10.1 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.13 + unrs-resolver: 1.7.2 + optionalDependencies: + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.27.0(jiti@2.4.2)) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.27.0(jiti@2.4.2)): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@9.27.0(jiti@2.4.2)) + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.27.0(jiti@2.4.2)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.27.0(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.27.0(jiti@2.4.2)) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jsx-a11y@6.10.2(eslint@9.27.0(jiti@2.4.2)): + dependencies: + aria-query: 5.3.2 + array-includes: 3.1.8 + array.prototype.flatmap: 1.3.3 + ast-types-flow: 0.0.8 + axe-core: 4.10.3 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 9.27.0(jiti@2.4.2) + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + + eslint-plugin-react-hooks@5.2.0(eslint@9.27.0(jiti@2.4.2)): + dependencies: + eslint: 9.27.0(jiti@2.4.2) + + eslint-plugin-react@7.37.5(eslint@9.27.0(jiti@2.4.2)): + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.2.1 + eslint: 9.27.0(jiti@2.4.2) + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + + eslint-scope@8.3.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.27.0(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.20.0 + '@eslint/config-helpers': 0.2.2 + '@eslint/core': 0.14.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.27.0 + '@eslint/plugin-kit': 0.3.1 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.1 + escape-string-regexp: 4.0.0 + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 4.2.0 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.1: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fdir@6.4.4(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + gensync@1.0.0-beta.2: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-nonce@1.0.1: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-tsconfig@4.10.1: + dependencies: + resolve-pkg-maps: 1.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + globals@11.12.0: {} + + globals@14.0.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + has-bigints@1.1.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + ignore@5.3.2: {} + + ignore@7.0.4: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-arrayish@0.3.2: + optional: true + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-bun-module@2.0.0: + dependencies: + semver: 7.7.2 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-map@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + + jiti@2.4.2: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + language-subtag-registry@0.3.23: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.23 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-darwin-arm64@1.30.1: + optional: true + + lightningcss-darwin-x64@1.30.1: + optional: true + + lightningcss-freebsd-x64@1.30.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.1: + optional: true + + lightningcss-linux-arm64-gnu@1.30.1: + optional: true + + lightningcss-linux-arm64-musl@1.30.1: + optional: true + + lightningcss-linux-x64-gnu@1.30.1: + optional: true + + lightningcss-linux-x64-musl@1.30.1: + optional: true + + lightningcss-win32-arm64-msvc@1.30.1: + optional: true + + lightningcss-win32-x64-msvc@1.30.1: + optional: true + + lightningcss@1.30.1: + dependencies: + detect-libc: 2.0.4 + optionalDependencies: + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + math-intrinsics@1.1.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + minizlib@3.0.2: + dependencies: + minipass: 7.1.2 + + mkdirp@3.0.1: {} + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + napi-postinstall@0.2.4: {} + + natural-compare@1.4.0: {} + + next-themes@0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + + next@15.3.2(@babel/core@7.27.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + '@next/env': 15.3.2 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.15 + busboy: 1.6.0 + caniuse-lite: 1.0.30001718 + postcss: 8.4.31 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + styled-jsx: 5.1.6(@babel/core@7.27.1)(react@19.1.0) + optionalDependencies: + '@next/swc-darwin-arm64': 15.3.2 + '@next/swc-darwin-x64': 15.3.2 + '@next/swc-linux-arm64-gnu': 15.3.2 + '@next/swc-linux-arm64-musl': 15.3.2 + '@next/swc-linux-x64-gnu': 15.3.2 + '@next/swc-linux-x64-musl': 15.3.2 + '@next/swc-win32-arm64-msvc': 15.3.2 + '@next/swc-win32-x64-msvc': 15.3.2 + sharp: 0.34.2 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + node-releases@2.0.19: {} + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.10 + es-object-atoms: 1.1.1 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.10 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + possible-typed-array-names@1.1.0: {} + + postcss@8.4.31: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.5.3: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + react-dom@19.1.0(react@19.1.0): + dependencies: + react: 19.1.0 + scheduler: 0.26.0 + + react-icons@5.5.0(react@19.1.0): + dependencies: + react: 19.1.0 + + react-is@16.13.1: {} + + react-refresh@0.17.0: {} + + react-remove-scroll-bar@2.3.8(@types/react@19.1.5)(react@19.1.0): + dependencies: + react: 19.1.0 + react-style-singleton: 2.2.3(@types/react@19.1.5)(react@19.1.0) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.5 + + react-remove-scroll@2.7.0(@types/react@19.1.5)(react@19.1.0): + dependencies: + react: 19.1.0 + react-remove-scroll-bar: 2.3.8(@types/react@19.1.5)(react@19.1.0) + react-style-singleton: 2.2.3(@types/react@19.1.5)(react@19.1.0) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.1.5)(react@19.1.0) + use-sidecar: 1.1.3(@types/react@19.1.5)(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.5 + + react-style-singleton@2.2.3(@types/react@19.1.5)(react@19.1.0): + dependencies: + get-nonce: 1.0.1 + react: 19.1.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.5 + + react@19.1.0: {} + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.10 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + resolve-from@4.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.1.0: {} + + rollup@4.41.0: + dependencies: + '@types/estree': 1.0.7 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.41.0 + '@rollup/rollup-android-arm64': 4.41.0 + '@rollup/rollup-darwin-arm64': 4.41.0 + '@rollup/rollup-darwin-x64': 4.41.0 + '@rollup/rollup-freebsd-arm64': 4.41.0 + '@rollup/rollup-freebsd-x64': 4.41.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.41.0 + '@rollup/rollup-linux-arm-musleabihf': 4.41.0 + '@rollup/rollup-linux-arm64-gnu': 4.41.0 + '@rollup/rollup-linux-arm64-musl': 4.41.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.41.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.41.0 + '@rollup/rollup-linux-riscv64-gnu': 4.41.0 + '@rollup/rollup-linux-riscv64-musl': 4.41.0 + '@rollup/rollup-linux-s390x-gnu': 4.41.0 + '@rollup/rollup-linux-x64-gnu': 4.41.0 + '@rollup/rollup-linux-x64-musl': 4.41.0 + '@rollup/rollup-win32-arm64-msvc': 4.41.0 + '@rollup/rollup-win32-ia32-msvc': 4.41.0 + '@rollup/rollup-win32-x64-msvc': 4.41.0 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + scheduler@0.26.0: {} + + semver@6.3.1: {} + + semver@7.7.2: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + sharp@0.34.2: + dependencies: + color: 4.2.3 + detect-libc: 2.0.4 + semver: 7.7.2 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.2 + '@img/sharp-darwin-x64': 0.34.2 + '@img/sharp-libvips-darwin-arm64': 1.1.0 + '@img/sharp-libvips-darwin-x64': 1.1.0 + '@img/sharp-libvips-linux-arm': 1.1.0 + '@img/sharp-libvips-linux-arm64': 1.1.0 + '@img/sharp-libvips-linux-ppc64': 1.1.0 + '@img/sharp-libvips-linux-s390x': 1.1.0 + '@img/sharp-libvips-linux-x64': 1.1.0 + '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 + '@img/sharp-libvips-linuxmusl-x64': 1.1.0 + '@img/sharp-linux-arm': 0.34.2 + '@img/sharp-linux-arm64': 0.34.2 + '@img/sharp-linux-s390x': 0.34.2 + '@img/sharp-linux-x64': 0.34.2 + '@img/sharp-linuxmusl-arm64': 0.34.2 + '@img/sharp-linuxmusl-x64': 0.34.2 + '@img/sharp-wasm32': 0.34.2 + '@img/sharp-win32-arm64': 0.34.2 + '@img/sharp-win32-ia32': 0.34.2 + '@img/sharp-win32-x64': 0.34.2 + optional: true + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + optional: true + + sonner@2.0.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + + source-map-js@1.2.1: {} + + stable-hash@0.0.5: {} + + streamsearch@1.1.0: {} + + string.prototype.includes@2.0.1: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.10 + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.23.10 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.10 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.23.10 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + strip-bom@3.0.0: {} + + strip-json-comments@3.1.1: {} + + styled-jsx@5.1.6(@babel/core@7.27.1)(react@19.1.0): + dependencies: + client-only: 0.0.1 + react: 19.1.0 + optionalDependencies: + '@babel/core': 7.27.1 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tailwind-merge@3.3.0: {} + + tailwindcss@4.1.7: {} + + tapable@2.2.2: {} + + tar@7.4.3: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.2 + mkdirp: 3.0.1 + yallist: 5.0.0 + + tinyglobby@0.2.13: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + ts-api-utils@2.1.0(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.8.1: {} + + tw-animate-css@1.3.0: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript-eslint@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + typescript@5.8.3: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + undici-types@6.21.0: {} + + unrs-resolver@1.7.2: + dependencies: + napi-postinstall: 0.2.4 + optionalDependencies: + '@unrs/resolver-binding-darwin-arm64': 1.7.2 + '@unrs/resolver-binding-darwin-x64': 1.7.2 + '@unrs/resolver-binding-freebsd-x64': 1.7.2 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.7.2 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.7.2 + '@unrs/resolver-binding-linux-arm64-gnu': 1.7.2 + '@unrs/resolver-binding-linux-arm64-musl': 1.7.2 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.7.2 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.7.2 + '@unrs/resolver-binding-linux-riscv64-musl': 1.7.2 + '@unrs/resolver-binding-linux-s390x-gnu': 1.7.2 + '@unrs/resolver-binding-linux-x64-gnu': 1.7.2 + '@unrs/resolver-binding-linux-x64-musl': 1.7.2 + '@unrs/resolver-binding-wasm32-wasi': 1.7.2 + '@unrs/resolver-binding-win32-arm64-msvc': 1.7.2 + '@unrs/resolver-binding-win32-ia32-msvc': 1.7.2 + '@unrs/resolver-binding-win32-x64-msvc': 1.7.2 + + update-browserslist-db@1.1.3(browserslist@4.24.5): + dependencies: + browserslist: 4.24.5 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + use-callback-ref@1.3.3(@types/react@19.1.5)(react@19.1.0): + dependencies: + react: 19.1.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.5 + + use-sidecar@1.1.3(@types/react@19.1.5)(react@19.1.0): + dependencies: + detect-node-es: 1.1.0 + react: 19.1.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.1.5 + + vite@6.2.0(@types/node@22.15.21)(jiti@2.4.2)(lightningcss@1.30.1): + dependencies: + esbuild: 0.25.4 + postcss: 8.5.3 + rollup: 4.41.0 + optionalDependencies: + '@types/node': 22.15.21 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.30.1 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + yallist@3.1.1: {} + + yallist@5.0.0: {} + + yocto-queue@0.1.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..0261394 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +onlyBuiltDependencies: + - '@tailwindcss/oxide' + - esbuild + - sharp diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000..c7bcb4b --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,5 @@ +const config = { + plugins: ["@tailwindcss/postcss"], +}; + +export default config; diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/public/file.svg b/public/file.svg new file mode 100644 index 0000000..004145c --- /dev/null +++ b/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/globe.svg b/public/globe.svg new file mode 100644 index 0000000..567f17b --- /dev/null +++ b/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/next.svg b/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/tauri-nextjs-template-2_screenshot.png b/public/tauri-nextjs-template-2_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..37f8b0374e43100eae8c9b394d18077614dcc52d GIT binary patch literal 30877 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Öq9G&QKDi$M&zX-%NZdkJ()N1C z;4QsX-C4SZ2 z;HRJoG(&&E9P!-1Qa97N0@p@h()AZ$%av5l4~sPL{%CpT_|k7+ zO!Y{R#QARwaXq|tN!P@MMH;s%7*ig)StyzvBZnuBvB&G{Z1xuMmS+O<3?kRIP6zgy z>w4=mRL#fg#=Ohqpet-cgv`8@QyVff%(pg+F!sP?V=V3tWtDoskxN4FU70@GI%)OoXtLcD^L{tz=?UPRq>FKrmR0TulM%s zvRxmW@@uIqKw2F^6GNO7PmA@>#dwh$3WjSRr!XOACY9bik;>Wmb7LK1`iV9OcWyh- zVzklu;cndblNW{Z*B&ne#B12jzjDt(ZWAzg$J*5urON9p@8Lu63AM($cIcxKKt!-@ zH`DapJ$Oc0B86N5U2-ku64q0L9d(GK%BatG;pZzXX|C#>*k$!f!4O*rH#mhXS={V5 zJjbs89!2qBgrZckuAp@@skWVNzHi461i(^4<*#E?Gt@3BLvdqV45B?j+3=bTUvjmhc% zIMk0$dHs#tP>uQ2U9PkD1=#L*;8u-Q#y~|$c#U2n$c`|f*hP%}jcyf?|2;qEQ@Nk8 zizac8_M5zlk0N@$9pbt{M!JNauDPV{ zG9%JKkUT7b`?F%q<)PNB$3oY6XJDv);V#!2K~$DrD7ysMeC&<sCJr__h;u1m{Qbi-hJFGDAs-S? zKhb?EC6eu-r*Rp;NtHR@EHPPC0BByW>dUM$#`anov>Okkls>;G?uFZY;m&7gzYH+R z5x??dL?n@aBG4<$<8e49ms^~51oFfC0g~^6A2dGpb*&q!=GdlM$bDOmwoC`aJXt2P ziqs!6Bu=-91Yp}61lRP<64%3qu;lO@zBlB}*%YE^&WtJ+JX1nEx48y&Z z8ors%WXyn$3Ojs-)S0UtaGG@Z8%=ZSwTvfj($>JH;{5#F)3sq0~J;?+J zS5(ps%sQ`#4xHr}GU2{MS+1zR)pYz?&zww%#Jpq!29km!qMfWG`mB z^A$i@=Oyoc&G7{f_<|~gr(^b)Z4XaV>Qkl#$3nTUQD*mT9 zPsiU3U5RAQ7@!as%|FU|4yvYqW<|JkrJU|KI!d+OW{-~$V?27h&#-1#nx1+<0Y{$i@BGVy5 zb8x?cypO@ImURND=p~2?lBMbM`Am(Dl4C>I&uFi~;z*5viH6;Prrr4!2_O-|0n))h zBkykO0bcZ^kfa;BU<)!EiR4lU5_nlGeShFfSmep zC<}ZL8sDgyJ*m0N`a;pN=dTiMITyRDj4dDj%d|{1QS0D)$hLMv)|0eE;YV$Qhl6o> zIrS#gh2TvM&}JW$C%aI}T)r?J$=nXq5riYAB_s4s$r9D_Z4SSUsEjJc)E_uyPrjkF zhe8!Kkv!NJiwjd$8JX4dMP zqo)>Cpriez1zqaeOJS_{~xQ-{}v%}WKTy) W^5TP4(17EK%fj@Q$=fUN=>Gt{kcWc+ literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..7171fe2f7f7831efe99c3996d484644aa9aea13c GIT binary patch literal 7049 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..2c606be8d9648ba47c213a2a9680234e0c320ded GIT binary patch literal 11476 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..ac3f9813eff45241503d3aca303abc8c99bc42b3 GIT binary patch literal 31176 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..9a2dfbc4ad8c9c38f7f43dcaa39b916833367488 GIT binary patch literal 16367 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..27ce75aead1a3925578a913916bb2c7506eaa425 GIT binary patch literal 45517 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

TB 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/icon.icns b/src-tauri/icons/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..a4e747efb9455ac01607d6d8288833682585cda6 GIT binary patch literal 319270 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%0AyfV;q?N8VaX%W_SQdeS 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

jfe}J933y? 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

)7d>xAiv@=ux5L-O}c=(f$we{d*xdsamn@%{&v* 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⋙4TKxEyd(-@MYRp!I;9B&r$eA(kjo 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 M7>gSYARm_v09SfJ-2eap literal 0 HcmV?d00001 diff --git a/src-tauri/icons/icon.png b/src-tauri/icons/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..24f5656d134b752f9ac28cc359fc1e8b16c9a910 GIT binary patch literal 56917 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

uh+!s#tvQc9L=Q%Dzpd>l_|- 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-20x20@1x.png b/src-tauri/icons/ios/AppIcon-20x20@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..f76dbf583dc7ce4fe04616f2222e488e6eed55d9 GIT binary patch literal 868 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-29x29@2x-1.png b/src-tauri/icons/ios/AppIcon-29x29@2x-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f471de0a7a204aba71819a4e2b0835f938fd905f GIT binary patch literal 3346 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-29x29@2x.png b/src-tauri/icons/ios/AppIcon-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f471de0a7a204aba71819a4e2b0835f938fd905f GIT binary patch literal 3346 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-29x29@3x.png b/src-tauri/icons/ios/AppIcon-29x29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6c8d187788b363f2bc163c9dcf2bc43dd974044e GIT binary patch literal 5514 zcmV;56?N)~P)F5~Of<_W}~Eum~;*?hq0nhLf=We$6}c z_q(jj&g^?6Rj;eIHoI?j=H7F=Ps{C@v@ezgTT7S&b7|BZ3VGsOf!e#x6tnP;9kOrer2B0vN9bkj}uuX(l#xU8zQ^@}gQ z2%S53w!xvHXoJ(zTADXmfGTa)_>s>)|2!`|rOWmRf45X5Y1_dNmD^ch7+>={Wto-g)Pp zukXE_T+RAXGJ+g*MAbLkx>)5PXEXsJ}jW@#b%P(ISz^T9$sekgx zCt=Y=7uAJ}rO7m8CW<=b!OLC$mtTGfZ|53fB4}C1D2=+nQ5k( zjPK{0Z$9J06<1s_the5Jrdf>+rvO%9&N9m^7HV>hn4&UiuFT-Y7heo(t+kd-umo~$ zQ2nBf9XmGMb=O_tw%cwqQ29IHVI{oq+Qgw;m*4&V`|siV@4pXUe)(ni^wUr6#iY^b z%{JRC?6JolVT&!cXeh{#x7w09|vsZW}h(V1v-LYu6;!tR=*zaN@%cKO7!<=ph4p-g)N@M;&!kIN*Q- z40Nw3S;x-2u^`5Z7T3a}D!3ZVE3do~R$qPfT!ZsG_3gLchNF)@+O&1nS!WGL9C1Y0 zd+)tXL(6G+r6E>wV$jJYmt11!#{y12{q%6yVTYMH=h5QWifiFf)zxbNrNI>a=PZK~ zuoqr

qz*2QMUk~Of)*v0b)Lr<`2V*kW4$;+4rZHBv1RS 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ύFD)^}v?N+%8MF{LYP}@$kektZsA(*a;J(nc< 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

&NEr9^)2{pgGfr13mp^O`p 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 X?$#r8-E!o>00000NkvXXu0mjfMKsa( literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png b/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bd17f3933983a730eab276e653b8268095bd3f28 GIT binary patch literal 12189 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 Uoe$doZ1(_&G89~^XdU{00PR9GGXMYp literal 0 HcmV?d00001 diff --git a/src-tauri/icons/logo.png b/src-tauri/icons/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9ac1c48112c9a614178cee6314cc23420835a195 GIT binary patch literal 161899 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¹qM9qfU})&z=r~B)@4e^Wb4z=a_1w+Q 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, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +struct PreRelease { + kind: PreReleaseKind, + number: Option, +} + +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] +enum PreReleaseKind { + Alpha, + Beta, + RC, + Dev, + Pre, +} + +impl VersionComponent { + fn parse(version: &str) -> Self { + let version = version.trim(); + + // Handle special case for Zen Browser twilight releases + if version.to_lowercase().contains("twilight") { + return VersionComponent { + major: u32::MAX, + minor: u32::MAX, + patch: u32::MAX, + pre_release: None, + }; + } + + // Split version into numeric and pre-release parts + let (numeric_part, pre_release_part) = Self::split_version(version); + + // Parse numeric parts (major.minor.patch) + let parts: Vec = numeric_part + .split('.') + .filter_map(|part| part.parse().ok()) + .collect(); + + let major = parts.get(0).copied().unwrap_or(0); + let minor = parts.get(1).copied().unwrap_or(0); + let patch = parts.get(2).copied().unwrap_or(0); + + // Parse pre-release part + let pre_release = pre_release_part.as_deref().and_then(Self::parse_pre_release); + + VersionComponent { + major, + minor, + patch, + pre_release, + } + } + + fn split_version(version: &str) -> (String, Option) { + let version = version.to_lowercase(); + + // Look for pre-release indicators + for (i, ch) in version.char_indices() { + if ch.is_alphabetic() && i > 0 { + // Check if this is a pre-release indicator + let remaining = &version[i..]; + if remaining.starts_with('a') || remaining.starts_with('b') || + remaining.starts_with("alpha") || remaining.starts_with("beta") || + remaining.starts_with("rc") || remaining.starts_with("dev") || + remaining.starts_with("pre") { + return (version[..i].to_string(), Some(remaining.to_string())); + } + } + } + + (version, None) + } + + fn parse_pre_release(pre_release: &str) -> Option { + let pre_release = pre_release.trim().to_lowercase(); + + if pre_release.is_empty() { + return None; + } + + // Extract kind and number + let (kind, number) = if pre_release.starts_with("alpha") { + (PreReleaseKind::Alpha, Self::extract_number(&pre_release[5..])) + } else if pre_release.starts_with("beta") { + (PreReleaseKind::Beta, Self::extract_number(&pre_release[4..])) + } else if pre_release.starts_with("rc") { + (PreReleaseKind::RC, Self::extract_number(&pre_release[2..])) + } else if pre_release.starts_with("dev") { + (PreReleaseKind::Dev, Self::extract_number(&pre_release[3..])) + } else if pre_release.starts_with("pre") { + (PreReleaseKind::Pre, Self::extract_number(&pre_release[3..])) + } else if pre_release.starts_with('a') { + (PreReleaseKind::Alpha, Self::extract_number(&pre_release[1..])) + } else if pre_release.starts_with('b') { + (PreReleaseKind::Beta, Self::extract_number(&pre_release[1..])) + } else { + return None; + }; + + Some(PreRelease { kind, number }) + } + + fn extract_number(s: &str) -> Option { + let numeric_part: String = s.chars().filter(|c| c.is_ascii_digit()).collect(); + numeric_part.parse().ok() + } +} + +impl PartialOrd for VersionComponent { + fn partial_cmp(&self, other: &Self) -> Option { + Some(self.cmp(other)) + } +} + +impl Ord for VersionComponent { + fn cmp(&self, other: &Self) -> std::cmp::Ordering { + use std::cmp::Ordering; + + // Compare major.minor.patch first + match (self.major, self.minor, self.patch).cmp(&(other.major, other.minor, other.patch)) { + Ordering::Equal => { + // If numeric parts are equal, compare pre-release + match (&self.pre_release, &other.pre_release) { + (None, None) => Ordering::Equal, + (None, Some(_)) => Ordering::Greater, // Stable > pre-release + (Some(_), None) => Ordering::Less, // Pre-release < stable + (Some(a), Some(b)) => { + // Compare pre-release kinds first + match a.kind.cmp(&b.kind) { + Ordering::Equal => { + // Same kind, compare numbers + match (&a.number, &b.number) { + (None, None) => Ordering::Equal, + (None, Some(_)) => Ordering::Less, + (Some(_), None) => Ordering::Greater, + (Some(a_num), Some(b_num)) => a_num.cmp(b_num), + } + } + other => other, + } + } + } + } + other => other, + } + } +} + +// Helper function to sort versions properly +pub fn sort_versions(versions: &mut [String]) { + versions.sort_by(|a, b| { + let version_a = VersionComponent::parse(a); + let version_b = VersionComponent::parse(b); + version_b.cmp(&version_a) // Descending order (newest first) + }); +} + +// Helper function to sort GitHub releases +pub fn sort_github_releases(releases: &mut [GithubRelease]) { + releases.sort_by(|a, b| { + let version_a = VersionComponent::parse(&a.tag_name); + let version_b = VersionComponent::parse(&b.tag_name); + version_b.cmp(&version_a) // Descending order (newest first) + }); +} + + + +pub fn is_alpha_version(version: &str) -> bool { + let version_comp = VersionComponent::parse(version); + version_comp.pre_release.is_some() +} + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct FirefoxRelease { + pub build_number: u32, + pub category: String, + pub date: String, + pub description: Option, + pub is_security_driven: bool, + pub product: String, + pub version: String, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct FirefoxApiResponse { + pub releases: HashMap, +} + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct BrowserRelease { + pub version: String, + pub date: String, + pub is_prerelease: bool, + pub download_url: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +struct CachedVersionData { + versions: Vec, + timestamp: u64, +} + +#[derive(Debug, Serialize, Deserialize)] +struct CachedGithubData { + releases: Vec, + timestamp: u64, +} + +pub struct ApiClient { + client: Client, +} + +impl ApiClient { + pub fn new() -> Self { + Self { + client: Client::new(), + } + } + + fn get_cache_dir() -> Result> { + let base_dirs = BaseDirs::new().ok_or("Failed to get base directories")?; + let app_name = if cfg!(debug_assertions) { + "DonutBrowserDev" + } else { + "DonutBrowser" + }; + let cache_dir = base_dirs.cache_dir().join(app_name).join("version_cache"); + fs::create_dir_all(&cache_dir)?; + Ok(cache_dir) + } + + fn get_current_timestamp() -> u64 { + SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap_or_default() + .as_secs() + } + + fn is_cache_valid(timestamp: u64) -> bool { + let current_time = Self::get_current_timestamp(); + let cache_duration = 10 * 60; // 10 minutes in seconds + current_time - timestamp < cache_duration + } + + pub fn load_cached_versions(&self, browser: &str) -> Option> { + let cache_dir = Self::get_cache_dir().ok()?; + let cache_file = cache_dir.join(format!("{}_versions.json", browser)); + + if !cache_file.exists() { + return None; + } + + let content = fs::read_to_string(&cache_file).ok()?; + let cached_data: CachedVersionData = serde_json::from_str(&content).ok()?; + + // Always return cached versions regardless of age - they're always valid + println!("Using cached versions for {}", browser); + Some(cached_data.versions) + } + + pub fn is_cache_expired(&self, browser: &str) -> bool { + let cache_dir = match Self::get_cache_dir() { + Ok(dir) => dir, + Err(_) => return true, // If we can't get cache dir, consider expired + }; + let cache_file = cache_dir.join(format!("{}_versions.json", browser)); + + if !cache_file.exists() { + return true; // No cache file means expired + } + + let content = match fs::read_to_string(&cache_file) { + Ok(content) => content, + Err(_) => return true, // Can't read cache, consider expired + }; + + let cached_data: CachedVersionData = match serde_json::from_str(&content) { + Ok(data) => data, + Err(_) => return true, // Can't parse cache, consider expired + }; + + // Check if cache is older than 10 minutes + !Self::is_cache_valid(cached_data.timestamp) + } + + pub fn save_cached_versions(&self, browser: &str, versions: &[String]) -> Result<(), Box> { + let cache_dir = Self::get_cache_dir()?; + let cache_file = cache_dir.join(format!("{}_versions.json", browser)); + + let cached_data = CachedVersionData { + versions: versions.to_vec(), + timestamp: Self::get_current_timestamp(), + }; + + let content = serde_json::to_string_pretty(&cached_data)?; + fs::write(&cache_file, content)?; + println!("Cached {} versions for {}", versions.len(), browser); + Ok(()) + } + + fn load_cached_github_releases(&self, browser: &str) -> Option> { + let cache_dir = Self::get_cache_dir().ok()?; + let cache_file = cache_dir.join(format!("{}_github.json", browser)); + + if !cache_file.exists() { + return None; + } + + let content = fs::read_to_string(&cache_file).ok()?; + let cached_data: CachedGithubData = serde_json::from_str(&content).ok()?; + + // Always use cached GitHub releases - cache never expires, only gets updated with new versions + println!("Using cached GitHub releases for {}", browser); + Some(cached_data.releases) + } + + fn save_cached_github_releases(&self, browser: &str, releases: &[GithubRelease]) -> Result<(), Box> { + let cache_dir = Self::get_cache_dir()?; + let cache_file = cache_dir.join(format!("{}_github.json", browser)); + + let cached_data = CachedGithubData { + releases: releases.to_vec(), + timestamp: Self::get_current_timestamp(), + }; + + let content = serde_json::to_string_pretty(&cached_data)?; + fs::write(&cache_file, content)?; + println!("Cached {} GitHub releases for {}", releases.len(), browser); + Ok(()) + } + + pub async fn fetch_firefox_releases_with_caching(&self, no_caching: bool) -> Result, Box> { + // Check cache first (unless bypassing) + if !no_caching { + if let Some(cached_versions) = self.load_cached_versions("firefox") { + return Ok(cached_versions.into_iter().map(|version| { + BrowserRelease { + version: version.clone(), + date: "".to_string(), // Cache doesn't store dates + is_prerelease: is_alpha_version(&version), + download_url: Some(format!( + "https://download.mozilla.org/?product=firefox-{}&os=osx&lang=en-US", + version + )), + } + }).collect()); + } + } + + println!("Fetching Firefox releases from Mozilla API..."); + let url = "https://product-details.mozilla.org/1.0/firefox.json"; + + let response = self.client + .get(url) + .header("User-Agent", "donutbrowser") + .send() + .await?; + + if !response.status().is_success() { + return Err(format!("Failed to fetch Firefox versions: {}", response.status()).into()); + } + + let firefox_response: FirefoxApiResponse = response.json().await?; + + // Extract releases and filter for stable versions + let mut releases: Vec = firefox_response + .releases + .into_iter() + .filter_map(|(key, release)| { + // Only include releases that start with "firefox-" and have proper version format + if key.starts_with("firefox-") && !release.version.is_empty() { + let is_stable = matches!(release.category.as_str(), "major" | "stability"); + Some(BrowserRelease { + version: release.version.clone(), + date: release.date, + is_prerelease: !is_stable, + download_url: Some(format!( + "https://download.mozilla.org/?product=firefox-{}&os=osx&lang=en-US", + release.version + )), + }) + } else { + None + } + }) + .collect(); + + // Sort by version number in descending order (newest first) + releases.sort_by(|a, b| { + let version_a = VersionComponent::parse(&a.version); + let version_b = VersionComponent::parse(&b.version); + version_b.cmp(&version_a) + }); + + // Extract versions for caching + let versions: Vec = releases.iter().map(|r| r.version.clone()).collect(); + + // Cache the results (unless bypassing cache) + if !no_caching { + if let Err(e) = self.save_cached_versions("firefox", &versions) { + eprintln!("Failed to cache Firefox versions: {}", e); + } + } + + Ok(releases) + } + + pub async fn fetch_firefox_developer_releases_with_caching(&self, no_caching: bool) -> Result, Box> { + // Check cache first (unless bypassing) + if !no_caching { + if let Some(cached_versions) = self.load_cached_versions("firefox-developer") { + return Ok(cached_versions.into_iter().map(|version| { + BrowserRelease { + version: version.clone(), + date: "".to_string(), // Cache doesn't store dates + is_prerelease: is_alpha_version(&version), + download_url: Some(format!( + "https://download.mozilla.org/?product=devedition-{}&os=osx&lang=en-US", + version + )), + } + }).collect()); + } + } + + println!("Fetching Firefox Developer Edition releases from Mozilla API..."); + let url = "https://product-details.mozilla.org/1.0/devedition.json"; + + let response = self.client + .get(url) + .header("User-Agent", "donutbrowser") + .send() + .await?; + + if !response.status().is_success() { + return Err(format!("Failed to fetch Firefox Developer Edition versions: {}", response.status()).into()); + } + + let firefox_response: FirefoxApiResponse = response.json().await?; + + // Extract releases and filter for developer edition versions + let mut releases: Vec = firefox_response + .releases + .into_iter() + .filter_map(|(key, release)| { + // Only include releases that start with "devedition-" and have proper version format + if key.starts_with("devedition-") && !release.version.is_empty() { + let is_stable = matches!(release.category.as_str(), "major" | "stability"); + Some(BrowserRelease { + version: release.version.clone(), + date: release.date, + is_prerelease: !is_stable, + download_url: Some(format!( + "https://download.mozilla.org/?product=devedition-{}&os=osx&lang=en-US", + release.version + )), + }) + } else { + None + } + }) + .collect(); + + // Sort by version number in descending order (newest first) + releases.sort_by(|a, b| { + let version_a = VersionComponent::parse(&a.version); + let version_b = VersionComponent::parse(&b.version); + version_b.cmp(&version_a) + }); + + // Extract versions for caching + let versions: Vec = releases.iter().map(|r| r.version.clone()).collect(); + + // Cache the results (unless bypassing cache) + if !no_caching { + if let Err(e) = self.save_cached_versions("firefox-developer", &versions) { + eprintln!("Failed to cache Firefox Developer versions: {}", e); + } + } + + Ok(releases) + } + + pub async fn fetch_mullvad_releases(&self) -> Result, Box> { + self.fetch_mullvad_releases_with_caching(false).await + } + + pub async fn fetch_mullvad_releases_with_caching(&self, no_caching: bool) -> Result, Box> { + // Check cache first (unless bypassing) + if !no_caching { + if let Some(cached_releases) = self.load_cached_github_releases("mullvad") { + return Ok(cached_releases); + } + } + + println!("Fetching Mullvad releases from GitHub API..."); + let url = "https://api.github.com/repos/mullvad/mullvad-browser/releases"; + let releases = self + .client + .get(url) + .header("User-Agent", "donutbrowser") + .send() + .await? + .json::>() + .await?; + + let mut releases: Vec = releases + .into_iter() + .map(|mut release| { + release.is_alpha = release.prerelease; + release + }) + .collect(); + + // Sort releases using the new version sorting system + sort_github_releases(&mut releases); + + // Cache the results (unless bypassing cache) + if !no_caching { + if let Err(e) = self.save_cached_github_releases("mullvad", &releases) { + eprintln!("Failed to cache Mullvad releases: {}", e); + } + } + + Ok(releases) + } + + pub async fn fetch_zen_releases(&self) -> Result, Box> { + self.fetch_zen_releases_with_caching(false).await + } + + pub async fn fetch_zen_releases_with_caching(&self, no_caching: bool) -> Result, Box> { + // Check cache first (unless bypassing) + if !no_caching { + if let Some(cached_releases) = self.load_cached_github_releases("zen") { + return Ok(cached_releases); + } + } + + println!("Fetching Zen releases from GitHub API..."); + let url = "https://api.github.com/repos/zen-browser/desktop/releases"; + let mut releases = self + .client + .get(url) + .header("User-Agent", "donutbrowser") + .send() + .await? + .json::>() + .await?; + + // Sort releases using the new version sorting system (twilight releases will be at top) + sort_github_releases(&mut releases); + + // Cache the results (unless bypassing cache) + if !no_caching { + if let Err(e) = self.save_cached_github_releases("zen", &releases) { + eprintln!("Failed to cache Zen releases: {}", e); + } + } + + Ok(releases) + } + + pub async fn fetch_brave_releases(&self) -> Result, Box> { + self.fetch_brave_releases_with_caching(false).await + } + + pub async fn fetch_brave_releases_with_caching(&self, no_caching: bool) -> Result, Box> { + // Check cache first (unless bypassing) + if !no_caching { + if let Some(cached_releases) = self.load_cached_github_releases("brave") { + return Ok(cached_releases); + } + } + + println!("Fetching Brave releases from GitHub API..."); + let url = "https://api.github.com/repos/brave/brave-browser/releases"; + let releases = self + .client + .get(url) + .header("User-Agent", "donutbrowser") + .send() + .await? + .json::>() + .await?; + + // Filter releases that have universal macOS DMG assets + let mut filtered_releases: Vec = releases + .into_iter() + .filter_map(|mut release| { + // Check if this release has a universal DMG asset + let has_universal_dmg = release.assets.iter().any(|asset| { + asset.name.contains(".dmg") && asset.name.contains("universal") + }); + + if has_universal_dmg { + // Set is_alpha based on the release name + // Nightly releases contain "Nightly", stable contain "Release" + release.is_alpha = release.name.to_lowercase().contains("nightly"); + Some(release) + } else { + None + } + }) + .collect(); + + // Sort releases using the new version sorting system + sort_github_releases(&mut filtered_releases); + + // Cache the results (unless bypassing cache) + if !no_caching { + if let Err(e) = self.save_cached_github_releases("brave", &filtered_releases) { + eprintln!("Failed to cache Brave releases: {}", e); + } + } + + Ok(filtered_releases) + } + + pub async fn fetch_chromium_latest_version(&self) -> Result> { + // Use architecture-aware URL for Chromium + let arch = if cfg!(target_arch = "aarch64") { "Mac_Arm" } else { "Mac" }; + let url = format!("https://commondatastorage.googleapis.com/chromium-browser-snapshots/{}/LAST_CHANGE", arch); + let version = self + .client + .get(&url) + .header("User-Agent", "donutbrowser") + .send() + .await? + .text() + .await? + .trim() + .to_string(); + + Ok(version) + } + + pub async fn fetch_chromium_releases_with_caching(&self, no_caching: bool) -> Result, Box> { + // Check cache first (unless bypassing) + if !no_caching { + if let Some(cached_versions) = self.load_cached_versions("chromium") { + return Ok(cached_versions.into_iter().map(|version| { + BrowserRelease { + version: version.clone(), + date: "".to_string(), // Cache doesn't store dates + is_prerelease: false, // Chromium versions are generally stable builds + download_url: None, + } + }).collect()); + } + } + + println!("Fetching Chromium releases..."); + + // Get the latest version first + let latest_version = self.fetch_chromium_latest_version().await?; + let latest_num: u32 = latest_version.parse().unwrap_or(0); + + // Generate a list of recent versions (last 20 builds, going back by 1000 each time) + let mut versions = Vec::new(); + for i in 0..20 { + let version_num = latest_num.saturating_sub(i * 1000); + if version_num > 0 { + versions.push(version_num.to_string()); + } + } + + // Cache the results (unless bypassing cache) + if !no_caching { + if let Err(e) = self.save_cached_versions("chromium", &versions) { + eprintln!("Failed to cache Chromium versions: {}", e); + } + } + + Ok(versions.into_iter().map(|version| { + BrowserRelease { + version: version.clone(), + date: "".to_string(), + is_prerelease: false, + download_url: None, + } + }).collect()) + } + + pub async fn fetch_tor_releases_with_caching(&self, no_caching: bool) -> Result, Box> { + // Check cache first (unless bypassing) + if !no_caching { + if let Some(cached_versions) = self.load_cached_versions("tor-browser") { + return Ok(cached_versions.into_iter().map(|version| { + BrowserRelease { + version: version.clone(), + date: "".to_string(), // Cache doesn't store dates + is_prerelease: false, // Assume all archived versions are stable + download_url: Some(format!( + "https://archive.torproject.org/tor-package-archive/torbrowser/{}/tor-browser-macos-{}.dmg", + version, version + )), + } + }).collect()); + } + } + + println!("Fetching TOR releases from archive..."); + let url = "https://archive.torproject.org/tor-package-archive/torbrowser/"; + let html = self + .client + .get(url) + .header("User-Agent", "donutbrowser") + .send() + .await? + .text() + .await?; + + // Parse HTML to extract version directories + let mut version_candidates = Vec::new(); + + // Look for directory links in the HTML + for line in html.lines() { + if line.contains("") { + // Extract the directory name from the href attribute + if let Some(start) = line.find("") { + let version = &line[start..start + end]; + + // Skip parent directory and non-version entries + if version != ".." && !version.is_empty() && version.chars().next().unwrap_or('a').is_ascii_digit() { + version_candidates.push(version.to_string()); + } + } + } + } + } + + // Sort version candidates using the new version sorting system + sort_versions(&mut version_candidates); + + // Only check the first 10 versions to avoid being too slow + let mut version_strings = Vec::new(); + for version in version_candidates.into_iter().take(10) { + // Check if this version has a macOS DMG file + if let Ok(has_macos) = self.check_tor_version_has_macos(&version).await { + if has_macos { + version_strings.push(version); + } + } + + // Add a small delay to avoid overwhelming the server + tokio::time::sleep(tokio::time::Duration::from_millis(100)).await; + } + + // Cache the results (unless bypassing cache) + if !no_caching { + if let Err(e) = self.save_cached_versions("tor-browser", &version_strings) { + eprintln!("Failed to cache TOR versions: {}", e); + } + } + + Ok(version_strings.into_iter().map(|version| { + BrowserRelease { + version: version.clone(), + date: "".to_string(), // TOR archive doesn't provide structured dates + is_prerelease: false, // Assume all archived versions are stable + download_url: Some(format!( + "https://archive.torproject.org/tor-package-archive/torbrowser/{}/tor-browser-macos-{}.dmg", + version, version + )), + } + }).collect()) + } + + async fn check_tor_version_has_macos(&self, version: &str) -> Result> { + let url = format!("https://archive.torproject.org/tor-package-archive/torbrowser/{}/", version); + let html = self + .client + .get(&url) + .header("User-Agent", "donutbrowser") + .send() + .await? + .text() + .await?; + + // Check if there's a macOS DMG file in this version directory + Ok(html.contains("tor-browser-macos-") && html.contains(".dmg")) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use tokio; + + #[test] + fn test_version_parsing() { + // Test basic version parsing + let v1 = VersionComponent::parse("1.2.3"); + assert_eq!(v1.major, 1); + assert_eq!(v1.minor, 2); + assert_eq!(v1.patch, 3); + assert!(v1.pre_release.is_none()); + + // Test alpha version + let v2 = VersionComponent::parse("1.2.3a1"); + assert_eq!(v2.major, 1); + assert_eq!(v2.minor, 2); + assert_eq!(v2.patch, 3); + assert!(v2.pre_release.is_some()); + let pre = v2.pre_release.unwrap(); + assert_eq!(pre.kind, PreReleaseKind::Alpha); + assert_eq!(pre.number, Some(1)); + + // Test beta version + let v3 = VersionComponent::parse("137.0b5"); + assert_eq!(v3.major, 137); + assert_eq!(v3.minor, 0); + assert_eq!(v3.patch, 0); + assert!(v3.pre_release.is_some()); + let pre = v3.pre_release.unwrap(); + assert_eq!(pre.kind, PreReleaseKind::Beta); + assert_eq!(pre.number, Some(5)); + + // Test twilight version (Zen Browser) + let v4 = VersionComponent::parse("1.0.0-twilight"); + assert_eq!(v4.major, u32::MAX); + assert_eq!(v4.minor, u32::MAX); + assert_eq!(v4.patch, u32::MAX); + } + + #[test] + fn test_version_comparison() { + // Test basic version comparison + let v1 = VersionComponent::parse("1.2.3"); + let v2 = VersionComponent::parse("1.2.4"); + assert!(v2 > v1); + + // Test major version difference + let v3 = VersionComponent::parse("2.0.0"); + let v4 = VersionComponent::parse("1.9.9"); + assert!(v3 > v4); + + // Test stable vs pre-release + let v5 = VersionComponent::parse("1.2.3"); + let v6 = VersionComponent::parse("1.2.3b1"); + assert!(v5 > v6); // Stable > beta + + // Test different pre-release types + let v7 = VersionComponent::parse("1.2.3a1"); + let v8 = VersionComponent::parse("1.2.3b1"); + assert!(v8 > v7); // Beta > alpha + + // Test pre-release numbers + let v9 = VersionComponent::parse("137.0b4"); + let v10 = VersionComponent::parse("137.0b5"); + assert!(v10 > v9); // b5 > b4 + + // Test twilight version (should be highest) + let v11 = VersionComponent::parse("1.0.0-twilight"); + let v12 = VersionComponent::parse("999.999.999"); + assert!(v11 > v12); + } + + #[test] + fn test_version_sorting() { + let mut versions = vec![ + "1.9.9b".to_string(), + "1.12.6b".to_string(), + "1.10.0".to_string(), + "137.0b4".to_string(), + "137.0b5".to_string(), + "137.0".to_string(), + "1.0.0-twilight".to_string(), + "2.0.0a1".to_string(), + ]; + + sort_versions(&mut versions); + + // Expected order: twilight, 137.0, 137.0b5, 137.0b4, 2.0.0a1, 1.12.6b, 1.10.0, 1.9.9b + assert_eq!(versions[0], "1.0.0-twilight"); + assert_eq!(versions[1], "137.0"); + assert_eq!(versions[2], "137.0b5"); + assert_eq!(versions[3], "137.0b4"); + assert_eq!(versions[4], "2.0.0a1"); + assert_eq!(versions[5], "1.12.6b"); + assert_eq!(versions[6], "1.10.0"); + assert_eq!(versions[7], "1.9.9b"); + } + + #[tokio::test] + async fn test_firefox_api() { + let client = ApiClient::new(); + let result = client.fetch_firefox_releases_with_caching(false).await; + + match result { + Ok(releases) => { + assert!(!releases.is_empty(), "Should have Firefox releases"); + + // Check that releases have required fields + let first_release = &releases[0]; + assert!(!first_release.version.is_empty(), "Version should not be empty"); + assert!(first_release.download_url.is_some(), "Should have download URL"); + + println!("Firefox API test passed. Found {} releases", releases.len()); + println!("Latest version: {}", first_release.version); + } + Err(e) => { + println!("Firefox API test failed: {}", e); + panic!("Firefox API should work"); + } + } + } + + #[tokio::test] + async fn test_firefox_developer_api() { + tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; // Rate limiting + + let client = ApiClient::new(); + let result = client.fetch_firefox_developer_releases_with_caching(false).await; + + match result { + Ok(releases) => { + assert!(!releases.is_empty(), "Should have Firefox Developer releases"); + + let first_release = &releases[0]; + assert!(!first_release.version.is_empty(), "Version should not be empty"); + assert!(first_release.download_url.is_some(), "Should have download URL"); + + println!("Firefox Developer API test passed. Found {} releases", releases.len()); + println!("Latest version: {}", first_release.version); + } + Err(e) => { + println!("Firefox Developer API test failed: {}", e); + panic!("Firefox Developer API should work"); + } + } + } + + #[tokio::test] + async fn test_mullvad_api() { + tokio::time::sleep(tokio::time::Duration::from_millis(1000)).await; // Rate limiting + + let client = ApiClient::new(); + let result = client.fetch_mullvad_releases().await; + + match result { + Ok(releases) => { + assert!(!releases.is_empty(), "Should have Mullvad releases"); + + let first_release = &releases[0]; + assert!(!first_release.tag_name.is_empty(), "Tag name should not be empty"); + + println!("Mullvad API test passed. Found {} releases", releases.len()); + println!("Latest version: {}", first_release.tag_name); + } + Err(e) => { + println!("Mullvad API test failed: {}", e); + panic!("Mullvad API should work"); + } + } + } + + #[tokio::test] + async fn test_zen_api() { + tokio::time::sleep(tokio::time::Duration::from_millis(1500)).await; // Rate limiting + + let client = ApiClient::new(); + let result = client.fetch_zen_releases().await; + + match result { + Ok(releases) => { + assert!(!releases.is_empty(), "Should have Zen releases"); + + let first_release = &releases[0]; + assert!(!first_release.tag_name.is_empty(), "Tag name should not be empty"); + + println!("Zen API test passed. Found {} releases", releases.len()); + println!("Latest version: {}", first_release.tag_name); + } + Err(e) => { + println!("Zen API test failed: {}", e); + panic!("Zen API should work"); + } + } + } + + #[tokio::test] + async fn test_brave_api() { + tokio::time::sleep(tokio::time::Duration::from_millis(2000)).await; // Rate limiting + + let client = ApiClient::new(); + let result = client.fetch_brave_releases().await; + + match result { + Ok(releases) => { + // Note: Brave might not always have macOS releases, so we don't assert non-empty + println!("Brave API test passed. Found {} releases with macOS assets", releases.len()); + if !releases.is_empty() { + println!("Latest version: {}", releases[0].tag_name); + } + } + Err(e) => { + println!("Brave API test failed: {}", e); + panic!("Brave API should work"); + } + } + } + + #[tokio::test] + async fn test_chromium_api() { + tokio::time::sleep(tokio::time::Duration::from_millis(2500)).await; // Rate limiting + + let client = ApiClient::new(); + let result = client.fetch_chromium_latest_version().await; + + match result { + Ok(version) => { + assert!(!version.is_empty(), "Version should not be empty"); + assert!(version.chars().all(|c| c.is_ascii_digit()), "Version should be numeric"); + + println!("Chromium API test passed. Latest version: {}", version); + } + Err(e) => { + println!("Chromium API test failed: {}", e); + panic!("Chromium API should work"); + } + } + } + + #[tokio::test] + async fn test_tor_api() { + tokio::time::sleep(tokio::time::Duration::from_millis(3000)).await; // Rate limiting + + let client = ApiClient::new(); + + // Use a timeout for this test since TOR API can be slow + let timeout_duration = tokio::time::Duration::from_secs(30); + let result = tokio::time::timeout(timeout_duration, client.fetch_tor_releases_with_caching(false)).await; + + match result { + Ok(Ok(releases)) => { + assert!(!releases.is_empty(), "Should have TOR releases"); + + let first_release = &releases[0]; + assert!(!first_release.version.is_empty(), "Version should not be empty"); + assert!(first_release.download_url.is_some(), "Should have download URL"); + + println!("TOR API test passed. Found {} releases", releases.len()); + println!("Latest version: {}", first_release.version); + } + Ok(Err(e)) => { + println!("TOR API test failed: {}", e); + // Don't panic for TOR API since it can be unreliable + println!("TOR API test skipped due to network issues"); + } + Err(_) => { + println!("TOR API test timed out after 30 seconds"); + // Don't panic for timeout, just skip + println!("TOR API test skipped due to timeout"); + } + } + } + + #[tokio::test] + async fn test_tor_version_check() { + tokio::time::sleep(tokio::time::Duration::from_millis(3500)).await; // Rate limiting + + let client = ApiClient::new(); + let result = client.check_tor_version_has_macos("14.0.4").await; + + match result { + Ok(has_macos) => { + assert!(has_macos, "Version 14.0.4 should have macOS support"); + println!("TOR version check test passed. Version 14.0.4 has macOS: {}", has_macos); + } + Err(e) => { + println!("TOR version check test failed: {}", e); + panic!("TOR version check should work"); + } + } + } +} \ No newline at end of file diff --git a/src-tauri/src/auto_updater.rs b/src-tauri/src/auto_updater.rs new file mode 100644 index 0000000..89904b5 --- /dev/null +++ b/src-tauri/src/auto_updater.rs @@ -0,0 +1,778 @@ +use crate::browser_version_service::{BrowserVersionService, BrowserVersionInfo}; +use crate::browser_runner::{BrowserProfile, BrowserRunner}; +use crate::settings_manager::SettingsManager; +use serde::{Deserialize, Serialize}; +use std::collections::{HashMap, HashSet}; +use std::path::PathBuf; +use std::fs; + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct UpdateNotification { + pub id: String, + pub browser: String, + pub current_version: String, + pub new_version: String, + pub affected_profiles: Vec, + pub is_stable_update: bool, + pub timestamp: u64, +} + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct AutoUpdateState { + pub pending_updates: Vec, + pub disabled_browsers: HashSet, // browsers disabled during update + #[serde(default)] + pub auto_update_downloads: HashSet, // track auto-update downloads for toast suppression + pub last_check_timestamp: u64, +} + +impl Default for AutoUpdateState { + fn default() -> Self { + Self { + pending_updates: Vec::new(), + disabled_browsers: HashSet::new(), + auto_update_downloads: HashSet::new(), + last_check_timestamp: 0, + } + } +} + +pub struct AutoUpdater { + version_service: BrowserVersionService, + browser_runner: BrowserRunner, + settings_manager: SettingsManager, +} + +impl AutoUpdater { + pub fn new() -> Self { + Self { + version_service: BrowserVersionService::new(), + browser_runner: BrowserRunner::new(), + settings_manager: SettingsManager::new(), + } + } + + /// Check for updates for all profiles + pub async fn check_for_updates(&self) -> Result, Box> { + // Check if auto-updates are enabled + let settings = self.settings_manager.load_settings() + .map_err(|e| format!("Failed to load settings: {}", e))?; + if !settings.auto_updates_enabled { + return Ok(Vec::new()); + } + + let profiles = self.browser_runner.list_profiles() + .map_err(|e| format!("Failed to list profiles: {}", e))?; + let mut notifications = Vec::new(); + let mut browser_versions: HashMap> = HashMap::new(); + + // Group profiles by browser type + let mut browser_profiles: HashMap> = HashMap::new(); + for profile in profiles { + browser_profiles + .entry(profile.browser.clone()) + .or_insert_with(Vec::new) + .push(profile); + } + + // Check each browser type + for (browser, profiles) in browser_profiles { + // Get cached versions first, then try to fetch if needed + let versions = if let Some(cached) = self.version_service.get_cached_browser_versions_detailed(&browser) { + cached + } else if self.version_service.should_update_cache(&browser) { + // Try to fetch fresh versions + match self.version_service.fetch_browser_versions_detailed(&browser, false).await { + Ok(versions) => versions, + Err(_) => continue, // Skip this browser if fetch fails + } + } else { + continue; // No cached versions and cache doesn't need update + }; + + browser_versions.insert(browser.clone(), versions.clone()); + + // Check each profile for updates + for profile in profiles { + if let Some(update) = self.check_profile_update(&profile, &versions)? { + notifications.push(update); + } + } + } + + Ok(notifications) + } + + /// Check if a specific profile has an available update + fn check_profile_update( + &self, + profile: &BrowserProfile, + available_versions: &[BrowserVersionInfo], + ) -> Result, Box> { + let current_version = &profile.version; + let is_current_stable = !self.is_alpha_version(current_version); + + // Find the best available update + let best_update = available_versions + .iter() + .filter(|v| { + // Only consider versions newer than current + self.is_version_newer(&v.version, current_version) && + // Respect version type preference + (is_current_stable == !v.is_prerelease || !is_current_stable) + }) + .max_by(|a, b| self.compare_versions(&a.version, &b.version)); + + if let Some(update_version) = best_update { + let notification = UpdateNotification { + id: format!("{}_{}_to_{}", profile.browser, current_version, update_version.version), + browser: profile.browser.clone(), + current_version: current_version.clone(), + new_version: update_version.version.clone(), + affected_profiles: vec![profile.name.clone()], + is_stable_update: !update_version.is_prerelease, + timestamp: std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap() + .as_secs(), + }; + Ok(Some(notification)) + } else { + Ok(None) + } + } + + /// Group update notifications by browser and version + pub fn group_update_notifications(&self, notifications: Vec) -> Vec { + let mut grouped: HashMap = HashMap::new(); + + for notification in notifications { + let key = format!("{}_{}", notification.browser, notification.new_version); + + if let Some(existing) = grouped.get_mut(&key) { + // Merge affected profiles + existing.affected_profiles.extend(notification.affected_profiles); + existing.affected_profiles.sort(); + existing.affected_profiles.dedup(); + } else { + grouped.insert(key, notification); + } + } + + let mut result: Vec = grouped.into_values().collect(); + + // Sort by priority: stable updates first, then by timestamp + result.sort_by(|a, b| { + match (a.is_stable_update, b.is_stable_update) { + (true, false) => std::cmp::Ordering::Less, + (false, true) => std::cmp::Ordering::Greater, + _ => b.timestamp.cmp(&a.timestamp), + } + }); + + result + } + + /// Mark download as auto-update + pub fn mark_auto_update_download( + &self, + browser: &str, + version: &str, + ) -> Result<(), Box> { + let mut state = self.load_auto_update_state()?; + let download_key = format!("{}-{}", browser, version); + state.auto_update_downloads.insert(download_key); + self.save_auto_update_state(&state)?; + Ok(()) + } + + /// Remove auto-update download tracking + pub fn remove_auto_update_download( + &self, + browser: &str, + version: &str, + ) -> Result<(), Box> { + let mut state = self.load_auto_update_state()?; + let download_key = format!("{}-{}", browser, version); + state.auto_update_downloads.remove(&download_key); + self.save_auto_update_state(&state)?; + Ok(()) + } + + /// Check if download is marked as auto-update + pub fn is_auto_update_download( + &self, + browser: &str, + version: &str, + ) -> Result> { + let state = self.load_auto_update_state()?; + let download_key = format!("{}-{}", browser, version); + Ok(state.auto_update_downloads.contains(&download_key)) + } + + /// Start browser update process + pub async fn start_browser_update( + &self, + browser: &str, + new_version: &str, + ) -> Result<(), Box> { + // Add browser to disabled list to prevent conflicts during update + let mut state = self.load_auto_update_state()?; + state.disabled_browsers.insert(browser.to_string()); + + // Mark this download as auto-update for toast suppression + let download_key = format!("{}-{}", browser, new_version); + state.auto_update_downloads.insert(download_key); + + self.save_auto_update_state(&state)?; + + // The actual download will be triggered by the frontend + // This function now just marks the browser as updating to prevent conflicts + Ok(()) + } + + /// Complete browser update process + pub async fn complete_browser_update( + &self, + browser: &str, + ) -> Result<(), Box> { + // Remove browser from disabled list + let mut state = self.load_auto_update_state()?; + state.disabled_browsers.remove(browser); + self.save_auto_update_state(&state)?; + + Ok(()) + } + + /// Automatically update all affected profile versions after browser download + pub async fn auto_update_profile_versions( + &self, + browser: &str, + new_version: &str, + ) -> Result, Box> { + let profiles = self.browser_runner.list_profiles() + .map_err(|e| format!("Failed to list profiles: {}", e))?; + + let mut updated_profiles = Vec::new(); + + // Find all profiles for this browser that should be updated + for profile in profiles { + if profile.browser == browser { + // Check if profile is currently running + if profile.process_id.is_some() { + continue; // Skip running profiles + } + + // Check if this is an update (newer version) + if self.is_version_newer(new_version, &profile.version) { + // Update the profile version + match self.browser_runner.update_profile_version(&profile.name, new_version) { + Ok(_) => { + updated_profiles.push(profile.name); + } + Err(e) => { + eprintln!("Failed to update profile {}: {}", profile.name, e); + } + } + } + } + } + + Ok(updated_profiles) + } + + /// Complete browser update process with auto-update of profile versions + pub async fn complete_browser_update_with_auto_update( + &self, + browser: &str, + new_version: &str, + ) -> Result, Box> { + // Auto-update profile versions first + let updated_profiles = self.auto_update_profile_versions(browser, new_version).await?; + + // Remove browser from disabled list and clean up auto-update tracking + let mut state = self.load_auto_update_state()?; + state.disabled_browsers.remove(browser); + let download_key = format!("{}-{}", browser, new_version); + state.auto_update_downloads.remove(&download_key); + self.save_auto_update_state(&state)?; + + Ok(updated_profiles) + } + + /// Check if browser is disabled due to ongoing update + pub fn is_browser_disabled(&self, browser: &str) -> Result> { + let state = self.load_auto_update_state()?; + Ok(state.disabled_browsers.contains(browser)) + } + + /// Dismiss update notification + pub fn dismiss_update_notification(&self, notification_id: &str) -> Result<(), Box> { + let mut state = self.load_auto_update_state()?; + state.pending_updates.retain(|n| n.id != notification_id); + self.save_auto_update_state(&state)?; + Ok(()) + } + + // Helper methods + + fn is_alpha_version(&self, version: &str) -> bool { + version.contains("alpha") || version.contains("beta") || version.contains("rc") || + version.contains("a") || version.contains("b") || version.contains("dev") + } + + fn is_version_newer(&self, version1: &str, version2: &str) -> bool { + self.compare_versions(version1, version2) == std::cmp::Ordering::Greater + } + + fn compare_versions(&self, version1: &str, version2: &str) -> std::cmp::Ordering { + // Basic semantic version comparison + let v1_parts = self.parse_version(version1); + let v2_parts = self.parse_version(version2); + + v1_parts.cmp(&v2_parts) + } + + fn parse_version(&self, version: &str) -> Vec { + version + .split(&['.', 'a', 'b', '-', '_'][..]) + .filter_map(|part| part.parse::().ok()) + .collect() + } + + fn get_auto_update_state_file(&self) -> PathBuf { + self.settings_manager.get_settings_dir().join("auto_update_state.json") + } + + fn load_auto_update_state(&self) -> Result> { + let state_file = self.get_auto_update_state_file(); + + if !state_file.exists() { + return Ok(AutoUpdateState::default()); + } + + let content = fs::read_to_string(state_file)?; + let state: AutoUpdateState = serde_json::from_str(&content)?; + Ok(state) + } + + fn save_auto_update_state(&self, state: &AutoUpdateState) -> Result<(), Box> { + let settings_dir = self.settings_manager.get_settings_dir(); + std::fs::create_dir_all(&settings_dir)?; + + let state_file = self.get_auto_update_state_file(); + let json = serde_json::to_string_pretty(state)?; + fs::write(state_file, json)?; + + Ok(()) + } +} + +// Tauri commands + +#[tauri::command] +pub async fn check_for_browser_updates() -> Result, String> { + let updater = AutoUpdater::new(); + let notifications = updater.check_for_updates().await + .map_err(|e| format!("Failed to check for updates: {}", e))?; + let grouped = updater.group_update_notifications(notifications); + Ok(grouped) +} + +#[tauri::command] +pub async fn start_browser_update(browser: String, new_version: String) -> Result<(), String> { + let updater = AutoUpdater::new(); + updater.start_browser_update(&browser, &new_version).await + .map_err(|e| format!("Failed to start browser update: {}", e)) +} + +#[tauri::command] +pub async fn complete_browser_update(browser: String) -> Result<(), String> { + let updater = AutoUpdater::new(); + updater.complete_browser_update(&browser).await + .map_err(|e| format!("Failed to complete browser update: {}", e)) +} + +#[tauri::command] +pub async fn is_browser_disabled_for_update(browser: String) -> Result { + let updater = AutoUpdater::new(); + updater.is_browser_disabled(&browser) + .map_err(|e| format!("Failed to check browser status: {}", e)) +} + +#[tauri::command] +pub async fn dismiss_update_notification(notification_id: String) -> Result<(), String> { + let updater = AutoUpdater::new(); + updater.dismiss_update_notification(¬ification_id) + .map_err(|e| format!("Failed to dismiss notification: {}", e)) +} + +#[tauri::command] +pub async fn complete_browser_update_with_auto_update(browser: String, new_version: String) -> Result, String> { + let updater = AutoUpdater::new(); + updater.complete_browser_update_with_auto_update(&browser, &new_version).await + .map_err(|e| format!("Failed to complete browser update: {}", e)) +} + +#[tauri::command] +pub async fn mark_auto_update_download(browser: String, version: String) -> Result<(), String> { + let updater = AutoUpdater::new(); + updater.mark_auto_update_download(&browser, &version) + .map_err(|e| format!("Failed to mark auto-update download: {}", e)) +} + +#[tauri::command] +pub async fn remove_auto_update_download(browser: String, version: String) -> Result<(), String> { + let updater = AutoUpdater::new(); + updater.remove_auto_update_download(&browser, &version) + .map_err(|e| format!("Failed to remove auto-update download: {}", e)) +} + +#[tauri::command] +pub async fn is_auto_update_download(browser: String, version: String) -> Result { + let updater = AutoUpdater::new(); + updater.is_auto_update_download(&browser, &version) + .map_err(|e| format!("Failed to check auto-update download: {}", e)) +} + +#[cfg(test)] +mod tests { + use super::*; + + fn create_test_profile(name: &str, browser: &str, version: &str) -> BrowserProfile { + BrowserProfile { + name: name.to_string(), + browser: browser.to_string(), + version: version.to_string(), + profile_path: format!("/tmp/{}", name), + process_id: None, + proxy: None, + last_launch: None, + } + } + + fn create_test_version_info(version: &str, is_prerelease: bool) -> BrowserVersionInfo { + BrowserVersionInfo { + version: version.to_string(), + is_prerelease, + date: "2024-01-01".to_string(), + } + } + + #[test] + fn test_is_alpha_version() { + let updater = AutoUpdater::new(); + + assert!(updater.is_alpha_version("1.0.0-alpha")); + assert!(updater.is_alpha_version("1.0.0-beta")); + assert!(updater.is_alpha_version("1.0.0-rc")); + assert!(updater.is_alpha_version("1.0.0a1")); + assert!(updater.is_alpha_version("1.0.0b1")); + assert!(updater.is_alpha_version("1.0.0-dev")); + + assert!(!updater.is_alpha_version("1.0.0")); + assert!(!updater.is_alpha_version("1.2.3")); + } + + #[test] + fn test_compare_versions() { + let updater = AutoUpdater::new(); + + assert_eq!(updater.compare_versions("1.0.0", "1.0.0"), std::cmp::Ordering::Equal); + assert_eq!(updater.compare_versions("1.0.1", "1.0.0"), std::cmp::Ordering::Greater); + assert_eq!(updater.compare_versions("1.0.0", "1.0.1"), std::cmp::Ordering::Less); + assert_eq!(updater.compare_versions("2.0.0", "1.9.9"), std::cmp::Ordering::Greater); + assert_eq!(updater.compare_versions("1.10.0", "1.9.0"), std::cmp::Ordering::Greater); + } + + #[test] + fn test_is_version_newer() { + let updater = AutoUpdater::new(); + + assert!(updater.is_version_newer("1.0.1", "1.0.0")); + assert!(updater.is_version_newer("2.0.0", "1.9.9")); + assert!(!updater.is_version_newer("1.0.0", "1.0.1")); + assert!(!updater.is_version_newer("1.0.0", "1.0.0")); + } + + #[test] + fn test_check_profile_update_stable_to_stable() { + let updater = AutoUpdater::new(); + let profile = create_test_profile("test", "firefox", "1.0.0"); + let versions = vec![ + create_test_version_info("1.0.1", false), // stable, newer + create_test_version_info("1.1.0-alpha", true), // alpha, should be ignored + create_test_version_info("0.9.0", false), // stable, older + ]; + + let result = updater.check_profile_update(&profile, &versions).unwrap(); + assert!(result.is_some()); + + let update = result.unwrap(); + assert_eq!(update.new_version, "1.0.1"); + assert!(update.is_stable_update); + } + + #[test] + fn test_check_profile_update_alpha_to_alpha() { + let updater = AutoUpdater::new(); + let profile = create_test_profile("test", "firefox", "1.0.0-alpha"); + let versions = vec![ + create_test_version_info("1.0.1", false), // stable, should be included + create_test_version_info("1.1.0-alpha", true), // alpha, newer + create_test_version_info("0.9.0-alpha", true), // alpha, older + ]; + + let result = updater.check_profile_update(&profile, &versions).unwrap(); + assert!(result.is_some()); + + let update = result.unwrap(); + // Should pick the newest version (alpha user can upgrade to stable or newer alpha) + assert_eq!(update.new_version, "1.1.0-alpha"); + assert!(!update.is_stable_update); + } + + #[test] + fn test_check_profile_update_no_update_available() { + let updater = AutoUpdater::new(); + let profile = create_test_profile("test", "firefox", "1.0.0"); + let versions = vec![ + create_test_version_info("0.9.0", false), // older + create_test_version_info("1.0.0", false), // same version + ]; + + let result = updater.check_profile_update(&profile, &versions).unwrap(); + assert!(result.is_none()); + } + + #[test] + fn test_group_update_notifications() { + let updater = AutoUpdater::new(); + let notifications = vec![ + UpdateNotification { + id: "firefox_1.0.0_to_1.1.0_profile1".to_string(), + browser: "firefox".to_string(), + current_version: "1.0.0".to_string(), + new_version: "1.1.0".to_string(), + affected_profiles: vec!["profile1".to_string()], + is_stable_update: true, + timestamp: 1000, + }, + UpdateNotification { + id: "firefox_1.0.0_to_1.1.0_profile2".to_string(), + browser: "firefox".to_string(), + current_version: "1.0.0".to_string(), + new_version: "1.1.0".to_string(), + affected_profiles: vec!["profile2".to_string()], + is_stable_update: true, + timestamp: 1001, + }, + UpdateNotification { + id: "chrome_1.0.0_to_1.1.0-alpha".to_string(), + browser: "chrome".to_string(), + current_version: "1.0.0".to_string(), + new_version: "1.1.0-alpha".to_string(), + affected_profiles: vec!["profile3".to_string()], + is_stable_update: false, + timestamp: 1002, + }, + ]; + + let grouped = updater.group_update_notifications(notifications); + + assert_eq!(grouped.len(), 2); + + // Find the Firefox notification + let firefox_notification = grouped.iter().find(|n| n.browser == "firefox").unwrap(); + assert_eq!(firefox_notification.affected_profiles.len(), 2); + assert!(firefox_notification.affected_profiles.contains(&"profile1".to_string())); + assert!(firefox_notification.affected_profiles.contains(&"profile2".to_string())); + + // Stable updates should come first + assert!(grouped[0].is_stable_update); + } + + #[test] + fn test_auto_update_state_persistence() { + use tempfile::TempDir; + use std::sync::Once; + + static INIT: Once = Once::new(); + INIT.call_once(|| { + // Initialize any required static data + }); + + // Create a temporary directory for testing + let temp_dir = TempDir::new().unwrap(); + + // Create a mock settings manager that uses the temp directory + struct TestSettingsManager { + settings_dir: std::path::PathBuf, + } + + impl TestSettingsManager { + fn new(settings_dir: std::path::PathBuf) -> Self { + Self { settings_dir } + } + + fn get_settings_dir(&self) -> std::path::PathBuf { + self.settings_dir.clone() + } + } + + let test_settings_manager = TestSettingsManager::new(temp_dir.path().to_path_buf()); + + let mut state = AutoUpdateState::default(); + state.disabled_browsers.insert("firefox".to_string()); + state.auto_update_downloads.insert("firefox-1.1.0".to_string()); + state.pending_updates.push(UpdateNotification { + id: "test".to_string(), + browser: "firefox".to_string(), + current_version: "1.0.0".to_string(), + new_version: "1.1.0".to_string(), + affected_profiles: vec!["profile1".to_string()], + is_stable_update: true, + timestamp: 1000, + }); + + // Test save and load + let state_file = test_settings_manager.get_settings_dir().join("auto_update_state.json"); + std::fs::create_dir_all(test_settings_manager.get_settings_dir()).unwrap(); + let json = serde_json::to_string_pretty(&state).unwrap(); + std::fs::write(&state_file, json).unwrap(); + + // Load state + let content = std::fs::read_to_string(&state_file).unwrap(); + let loaded_state: AutoUpdateState = serde_json::from_str(&content).unwrap(); + + assert_eq!(loaded_state.disabled_browsers.len(), 1); + assert!(loaded_state.disabled_browsers.contains("firefox")); + assert_eq!(loaded_state.auto_update_downloads.len(), 1); + assert!(loaded_state.auto_update_downloads.contains("firefox-1.1.0")); + assert_eq!(loaded_state.pending_updates.len(), 1); + assert_eq!(loaded_state.pending_updates[0].id, "test"); + } + + #[tokio::test] + async fn test_browser_disable_enable_cycle() { + use tempfile::TempDir; + + // Create a temporary directory for testing + let temp_dir = TempDir::new().unwrap(); + + // Create a mock settings manager that uses the temp directory + struct TestSettingsManager { + settings_dir: std::path::PathBuf, + } + + impl TestSettingsManager { + fn new(settings_dir: std::path::PathBuf) -> Self { + Self { settings_dir } + } + + fn get_settings_dir(&self) -> std::path::PathBuf { + self.settings_dir.clone() + } + } + + let test_settings_manager = TestSettingsManager::new(temp_dir.path().to_path_buf()); + + // Test browser disable/enable cycle with manual state management + let state_file = test_settings_manager.get_settings_dir().join("auto_update_state.json"); + std::fs::create_dir_all(test_settings_manager.get_settings_dir()).unwrap(); + + // Initially not disabled (empty state file means default state) + let state = AutoUpdateState::default(); + assert!(!state.disabled_browsers.contains("firefox")); + + // Start update (should disable) + let mut state = AutoUpdateState::default(); + state.disabled_browsers.insert("firefox".to_string()); + state.auto_update_downloads.insert("firefox-1.1.0".to_string()); + let json = serde_json::to_string_pretty(&state).unwrap(); + std::fs::write(&state_file, json).unwrap(); + + // Check that it's disabled + let content = std::fs::read_to_string(&state_file).unwrap(); + let loaded_state: AutoUpdateState = serde_json::from_str(&content).unwrap(); + assert!(loaded_state.disabled_browsers.contains("firefox")); + assert!(loaded_state.auto_update_downloads.contains("firefox-1.1.0")); + + // Complete update (should enable) + let mut state = loaded_state; + state.disabled_browsers.remove("firefox"); + state.auto_update_downloads.remove("firefox-1.1.0"); + let json = serde_json::to_string_pretty(&state).unwrap(); + std::fs::write(&state_file, json).unwrap(); + + // Check that it's enabled again + let content = std::fs::read_to_string(&state_file).unwrap(); + let final_state: AutoUpdateState = serde_json::from_str(&content).unwrap(); + assert!(!final_state.disabled_browsers.contains("firefox")); + assert!(!final_state.auto_update_downloads.contains("firefox-1.1.0")); + } + + #[test] + fn test_dismiss_update_notification() { + use tempfile::TempDir; + + // Create a temporary directory for testing + let temp_dir = TempDir::new().unwrap(); + + // Create a mock settings manager that uses the temp directory + struct TestSettingsManager { + settings_dir: std::path::PathBuf, + } + + impl TestSettingsManager { + fn new(settings_dir: std::path::PathBuf) -> Self { + Self { settings_dir } + } + + fn get_settings_dir(&self) -> std::path::PathBuf { + self.settings_dir.clone() + } + } + + let test_settings_manager = TestSettingsManager::new(temp_dir.path().to_path_buf()); + + let mut state = AutoUpdateState::default(); + state.pending_updates.push(UpdateNotification { + id: "test_notification".to_string(), + browser: "firefox".to_string(), + current_version: "1.0.0".to_string(), + new_version: "1.1.0".to_string(), + affected_profiles: vec!["profile1".to_string()], + is_stable_update: true, + timestamp: 1000, + }); + + // Save initial state + let state_file = test_settings_manager.get_settings_dir().join("auto_update_state.json"); + std::fs::create_dir_all(test_settings_manager.get_settings_dir()).unwrap(); + let json = serde_json::to_string_pretty(&state).unwrap(); + std::fs::write(&state_file, json).unwrap(); + + // Dismiss notification (remove from pending updates) + let mut state = state; + state.pending_updates.retain(|n| n.id != "test_notification"); + let json = serde_json::to_string_pretty(&state).unwrap(); + std::fs::write(&state_file, json).unwrap(); + + // Check that it's removed + let content = std::fs::read_to_string(&state_file).unwrap(); + let loaded_state: AutoUpdateState = serde_json::from_str(&content).unwrap(); + assert_eq!(loaded_state.pending_updates.len(), 0); + } + + #[test] + fn test_parse_version() { + let updater = AutoUpdater::new(); + + assert_eq!(updater.parse_version("1.2.3"), vec![1, 2, 3]); + assert_eq!(updater.parse_version("1.2.3-alpha"), vec![1, 2, 3]); + assert_eq!(updater.parse_version("1.2.3a1"), vec![1, 2, 3, 1]); + assert_eq!(updater.parse_version("1.2.3b2"), vec![1, 2, 3, 2]); + assert_eq!(updater.parse_version("10.0.0"), vec![10, 0, 0]); + } +} \ No newline at end of file diff --git a/src-tauri/src/browser.rs b/src-tauri/src/browser.rs new file mode 100644 index 0000000..8451d96 --- /dev/null +++ b/src-tauri/src/browser.rs @@ -0,0 +1,557 @@ +use base64::{engine::general_purpose, Engine as _}; +use serde::{Deserialize, Serialize}; +use std::fs; +use std::path::{Path, PathBuf}; + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct ProxySettings { + pub enabled: bool, + pub proxy_type: String, // "http", "https", "socks4", or "socks5" + pub host: String, + pub port: u16, +} + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +pub enum BrowserType { + MullvadBrowser, + Chromium, + Firefox, + FirefoxDeveloper, + Brave, + Zen, + TorBrowser, +} + +impl BrowserType { + pub fn as_str(&self) -> &'static str { + match self { + BrowserType::MullvadBrowser => "mullvad-browser", + BrowserType::Chromium => "chromium", + BrowserType::Firefox => "firefox", + BrowserType::FirefoxDeveloper => "firefox-developer", + BrowserType::Brave => "brave", + BrowserType::Zen => "zen", + BrowserType::TorBrowser => "tor-browser", + } + } + + pub fn from_str(s: &str) -> Result { + match s { + "mullvad-browser" => Ok(BrowserType::MullvadBrowser), + "chromium" => Ok(BrowserType::Chromium), + "firefox" => Ok(BrowserType::Firefox), + "firefox-developer" => Ok(BrowserType::FirefoxDeveloper), + "brave" => Ok(BrowserType::Brave), + "zen" => Ok(BrowserType::Zen), + "tor-browser" => Ok(BrowserType::TorBrowser), + _ => Err(format!("Unknown browser type: {}", s)), + } + } +} + +pub trait Browser: Send + Sync { + fn browser_type(&self) -> BrowserType; + fn get_executable_path(&self, install_dir: &Path) -> Result>; + fn create_launch_args( + &self, + profile_path: &str, + _proxy_settings: Option<&ProxySettings>, + url: Option, + ) -> Result, Box>; + fn is_version_downloaded(&self, version: &str, binaries_dir: &Path) -> bool; +} + + + +pub struct FirefoxBrowser { + browser_type: BrowserType, +} + +impl FirefoxBrowser { + pub fn new(browser_type: BrowserType) -> Self { + Self { browser_type } + } + +} + +impl Browser for FirefoxBrowser { + fn browser_type(&self) -> BrowserType { + self.browser_type.clone() + } + + + + fn get_executable_path(&self, install_dir: &Path) -> Result> { + // Find the .app directory + let app_path = std::fs::read_dir(install_dir)? + .filter_map(Result::ok) + .find(|entry| entry.path().extension().map_or(false, |ext| ext == "app")) + .ok_or("Browser app not found")?; + + // Construct the browser executable path + let mut executable_dir = app_path.path(); + executable_dir.push("Contents"); + executable_dir.push("MacOS"); + + // Find the first executable in the MacOS directory + let executable_path = std::fs::read_dir(&executable_dir)? + .filter_map(Result::ok) + .find(|entry| { + let binding = entry.file_name(); + let name = binding.to_string_lossy(); + name.starts_with("firefox") || name.starts_with("mullvad") || name.starts_with("zen") || name.starts_with("tor") || name.contains("Browser") + }) + .map(|entry| entry.path()) + .ok_or("No executable found in MacOS directory")?; + + Ok(executable_path) + } + + fn create_launch_args( + &self, + profile_path: &str, + _proxy_settings: Option<&ProxySettings>, + url: Option, + ) -> Result, Box> { + let mut args = vec![ + "-profile".to_string(), + profile_path.to_string(), + ]; + + // Only use -no-remote for browsers that require it for security (Mullvad, Tor) + // Regular Firefox browsers can use remote commands for better URL handling + match self.browser_type { + BrowserType::MullvadBrowser | BrowserType::TorBrowser => { + args.push("-no-remote".to_string()); + } + BrowserType::Firefox | BrowserType::FirefoxDeveloper | BrowserType::Zen => { + // Don't use -no-remote so we can communicate with existing instances + } + _ => {} + } + + // Firefox-based browsers use profile directory and user.js for proxy configuration + if let Some(url) = url { + args.push(url); + } + + Ok(args) + } + + fn is_version_downloaded(&self, version: &str, binaries_dir: &Path) -> bool { + let browser_dir = binaries_dir + .join(self.browser_type().as_str()) + .join(version); + + println!("Firefox browser checking version {} in directory: {:?}", version, browser_dir); + + // Only check if directory exists and contains a .app file + if browser_dir.exists() { + println!("Directory exists, checking for .app files..."); + if let Ok(entries) = std::fs::read_dir(&browser_dir) { + for entry in entries { + if let Ok(entry) = entry { + println!(" Found entry: {:?}", entry.path()); + if entry.path().extension().map_or(false, |ext| ext == "app") { + println!(" Found .app file: {:?}", entry.path()); + return true; + } + } + } + } + println!("No .app files found in directory"); + } else { + println!("Directory does not exist: {:?}", browser_dir); + } + false + } +} + +// Chromium-based browsers (Chromium, Brave) +pub struct ChromiumBrowser { + browser_type: BrowserType, +} + +impl ChromiumBrowser { + pub fn new(browser_type: BrowserType) -> Self { + Self { browser_type } + } +} + +impl Browser for ChromiumBrowser { + fn browser_type(&self) -> BrowserType { + self.browser_type.clone() + } + + + fn get_executable_path(&self, install_dir: &Path) -> Result> { + // Find the .app directory + let app_path = std::fs::read_dir(install_dir)? + .filter_map(Result::ok) + .find(|entry| entry.path().extension().map_or(false, |ext| ext == "app")) + .ok_or("Browser app not found")?; + + // Construct the browser executable path + let mut executable_dir = app_path.path(); + executable_dir.push("Contents"); + executable_dir.push("MacOS"); + + // Find the first executable in the MacOS directory + let executable_path = std::fs::read_dir(&executable_dir)? + .filter_map(Result::ok) + .find(|entry| { + let binding = entry.file_name(); + let name = binding.to_string_lossy(); + name.contains("Chromium") || name.contains("Brave") || name.contains("Google Chrome") + }) + .map(|entry| entry.path()) + .ok_or("No executable found in MacOS directory")?; + + Ok(executable_path) + } + + fn create_launch_args( + &self, + profile_path: &str, + proxy_settings: Option<&ProxySettings>, + url: Option, + ) -> Result, Box> { + let mut args = vec![ + format!("--user-data-dir={}", profile_path), + "--no-default-browser-check".to_string(), + "--disable-background-mode".to_string(), + "--disable-component-update".to_string(), + "--disable-background-timer-throttling".to_string(), + "--crash-server-url=".to_string(), + ]; + + // Add proxy configuration if provided + if let Some(proxy) = proxy_settings { + if proxy.enabled { + // Read PAC file and encode it as base64 + let pac_path = Path::new(profile_path).join("proxy.pac"); + if pac_path.exists() { + let pac_content = fs::read(&pac_path)?; + let pac_base64 = general_purpose::STANDARD.encode(&pac_content); + args.push(format!( + "--proxy-pac-url=data:application/x-javascript-config;base64,{}", + pac_base64 + )); + } + } + } + + if let Some(url) = url { + args.push(url); + } + + Ok(args) + } + + fn is_version_downloaded(&self, version: &str, binaries_dir: &Path) -> bool { + let browser_dir = binaries_dir + .join(self.browser_type().as_str()) + .join(version); + + println!("Chromium browser checking version {} in directory: {:?}", version, browser_dir); + + // Check if directory exists and contains at least one .app file + if browser_dir.exists() { + println!("Directory exists, checking for .app files..."); + if let Ok(entries) = std::fs::read_dir(&browser_dir) { + for entry in entries { + if let Ok(entry) = entry { + println!(" Found entry: {:?}", entry.path()); + if entry.path().extension().map_or(false, |ext| ext == "app") { + println!(" Found .app file: {:?}", entry.path()); + // Try to get the executable path as a final verification + if self.get_executable_path(&browser_dir).is_ok() { + println!(" Executable path verification successful"); + return true; + } else { + println!(" Executable path verification failed"); + } + } + } + } + } + println!("No valid .app files found in directory"); + } else { + println!("Directory does not exist: {:?}", browser_dir); + } + false + } +} + +// Factory function to create browser instances +pub fn create_browser(browser_type: BrowserType) -> Box { + match browser_type { + BrowserType::MullvadBrowser | BrowserType::Firefox | BrowserType::FirefoxDeveloper | BrowserType::Zen | BrowserType::TorBrowser => { + Box::new(FirefoxBrowser::new(browser_type)) + } + BrowserType::Chromium | BrowserType::Brave => Box::new(ChromiumBrowser::new(browser_type)), + } +} + +// Add GithubRelease and GithubAsset structs to browser.rs if they don't already exist +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct GithubRelease { + pub tag_name: String, + #[serde(default)] + pub name: String, + pub assets: Vec, + #[serde(default)] + pub published_at: String, + #[serde(default)] + pub is_alpha: bool, + #[serde(default)] + pub prerelease: bool, +} + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct GithubAsset { + pub name: String, + pub browser_download_url: String, +} + +#[cfg(test)] +mod tests { + use super::*; + use std::fs; + use tempfile::TempDir; + + #[test] + fn test_browser_type_conversions() { + // Test as_str + assert_eq!(BrowserType::MullvadBrowser.as_str(), "mullvad-browser"); + assert_eq!(BrowserType::Firefox.as_str(), "firefox"); + assert_eq!(BrowserType::FirefoxDeveloper.as_str(), "firefox-developer"); + assert_eq!(BrowserType::Chromium.as_str(), "chromium"); + assert_eq!(BrowserType::Brave.as_str(), "brave"); + assert_eq!(BrowserType::Zen.as_str(), "zen"); + assert_eq!(BrowserType::TorBrowser.as_str(), "tor-browser"); + + // Test from_str + assert_eq!(BrowserType::from_str("mullvad-browser").unwrap(), BrowserType::MullvadBrowser); + assert_eq!(BrowserType::from_str("firefox").unwrap(), BrowserType::Firefox); + assert_eq!(BrowserType::from_str("firefox-developer").unwrap(), BrowserType::FirefoxDeveloper); + assert_eq!(BrowserType::from_str("chromium").unwrap(), BrowserType::Chromium); + assert_eq!(BrowserType::from_str("brave").unwrap(), BrowserType::Brave); + assert_eq!(BrowserType::from_str("zen").unwrap(), BrowserType::Zen); + assert_eq!(BrowserType::from_str("tor-browser").unwrap(), BrowserType::TorBrowser); + + // Test invalid browser type + assert!(BrowserType::from_str("invalid").is_err()); + assert!(BrowserType::from_str("").is_err()); + assert!(BrowserType::from_str("Firefox").is_err()); // Case sensitive + } + + #[test] + fn test_firefox_browser_creation() { + let browser = FirefoxBrowser::new(BrowserType::Firefox); + assert_eq!(browser.browser_type(), BrowserType::Firefox); + + let browser = FirefoxBrowser::new(BrowserType::MullvadBrowser); + assert_eq!(browser.browser_type(), BrowserType::MullvadBrowser); + + let browser = FirefoxBrowser::new(BrowserType::TorBrowser); + assert_eq!(browser.browser_type(), BrowserType::TorBrowser); + + let browser = FirefoxBrowser::new(BrowserType::Zen); + assert_eq!(browser.browser_type(), BrowserType::Zen); + } + + #[test] + fn test_chromium_browser_creation() { + let browser = ChromiumBrowser::new(BrowserType::Chromium); + assert_eq!(browser.browser_type(), BrowserType::Chromium); + + let browser = ChromiumBrowser::new(BrowserType::Brave); + assert_eq!(browser.browser_type(), BrowserType::Brave); + } + + #[test] + fn test_browser_factory() { + // Test Firefox-based browsers + let browser = create_browser(BrowserType::Firefox); + assert_eq!(browser.browser_type(), BrowserType::Firefox); + + let browser = create_browser(BrowserType::MullvadBrowser); + assert_eq!(browser.browser_type(), BrowserType::MullvadBrowser); + + let browser = create_browser(BrowserType::Zen); + assert_eq!(browser.browser_type(), BrowserType::Zen); + + let browser = create_browser(BrowserType::TorBrowser); + assert_eq!(browser.browser_type(), BrowserType::TorBrowser); + + let browser = create_browser(BrowserType::FirefoxDeveloper); + assert_eq!(browser.browser_type(), BrowserType::FirefoxDeveloper); + + // Test Chromium-based browsers + let browser = create_browser(BrowserType::Chromium); + assert_eq!(browser.browser_type(), BrowserType::Chromium); + + let browser = create_browser(BrowserType::Brave); + assert_eq!(browser.browser_type(), BrowserType::Brave); + } + + #[test] + fn test_firefox_launch_args() { + // Test regular Firefox (should not use -no-remote) + let browser = FirefoxBrowser::new(BrowserType::Firefox); + let args = browser.create_launch_args("/path/to/profile", None, None).unwrap(); + assert_eq!(args, vec!["-profile", "/path/to/profile"]); + assert!(!args.contains(&"-no-remote".to_string())); + + let args = browser.create_launch_args("/path/to/profile", None, Some("https://example.com".to_string())).unwrap(); + assert_eq!(args, vec!["-profile", "/path/to/profile", "https://example.com"]); + + // Test Mullvad Browser (should use -no-remote) + let browser = FirefoxBrowser::new(BrowserType::MullvadBrowser); + let args = browser.create_launch_args("/path/to/profile", None, None).unwrap(); + assert_eq!(args, vec!["-profile", "/path/to/profile", "-no-remote"]); + + // Test Tor Browser (should use -no-remote) + let browser = FirefoxBrowser::new(BrowserType::TorBrowser); + let args = browser.create_launch_args("/path/to/profile", None, None).unwrap(); + assert_eq!(args, vec!["-profile", "/path/to/profile", "-no-remote"]); + + // Test Zen Browser (should not use -no-remote) + let browser = FirefoxBrowser::new(BrowserType::Zen); + let args = browser.create_launch_args("/path/to/profile", None, None).unwrap(); + assert_eq!(args, vec!["-profile", "/path/to/profile"]); + assert!(!args.contains(&"-no-remote".to_string())); + } + + + #[test] + fn test_chromium_launch_args() { + let browser = ChromiumBrowser::new(BrowserType::Chromium); + let args = browser.create_launch_args("/path/to/profile", None, None).unwrap(); + + // Test that basic required arguments are present + assert!(args.contains(&"--user-data-dir=/path/to/profile".to_string())); + assert!(args.contains(&"--no-default-browser-check".to_string())); + + // Test that automatic update disabling arguments are present + assert!(args.contains(&"--disable-background-mode".to_string())); + assert!(args.contains(&"--disable-component-update".to_string())); + + let args_with_url = browser.create_launch_args("/path/to/profile", None, Some("https://example.com".to_string())).unwrap(); + assert!(args_with_url.contains(&"https://example.com".to_string())); + + // Verify URL is at the end + assert_eq!(args_with_url.last().unwrap(), "https://example.com"); + } + + #[test] + fn test_proxy_settings_creation() { + let proxy = ProxySettings { + enabled: true, + proxy_type: "http".to_string(), + host: "127.0.0.1".to_string(), + port: 8080, + }; + + assert!(proxy.enabled); + assert_eq!(proxy.proxy_type, "http"); + assert_eq!(proxy.host, "127.0.0.1"); + assert_eq!(proxy.port, 8080); + + // Test different proxy types + let socks_proxy = ProxySettings { + enabled: true, + proxy_type: "socks5".to_string(), + host: "proxy.example.com".to_string(), + port: 1080, + }; + + assert_eq!(socks_proxy.proxy_type, "socks5"); + assert_eq!(socks_proxy.host, "proxy.example.com"); + assert_eq!(socks_proxy.port, 1080); + } + + + #[test] + fn test_version_downloaded_check() { + let temp_dir = TempDir::new().unwrap(); + let binaries_dir = temp_dir.path(); + + // Create a mock Firefox browser installation + let browser_dir = binaries_dir.join("firefox").join("139.0"); + fs::create_dir_all(&browser_dir).unwrap(); + + // Create a mock .app directory + let app_dir = browser_dir.join("Firefox.app"); + fs::create_dir_all(&app_dir).unwrap(); + + let browser = FirefoxBrowser::new(BrowserType::Firefox); + assert!(browser.is_version_downloaded("139.0", binaries_dir)); + assert!(!browser.is_version_downloaded("140.0", binaries_dir)); + + // Test with Chromium browser + let chromium_dir = binaries_dir.join("chromium").join("1465660"); + fs::create_dir_all(&chromium_dir).unwrap(); + let chromium_app_dir = chromium_dir.join("Chromium.app"); + fs::create_dir_all(&chromium_app_dir.join("Contents").join("MacOS")).unwrap(); + + // Create a mock executable + let executable_path = chromium_app_dir.join("Contents").join("MacOS").join("Chromium"); + fs::write(&executable_path, "mock executable").unwrap(); + + let chromium_browser = ChromiumBrowser::new(BrowserType::Chromium); + assert!(chromium_browser.is_version_downloaded("1465660", binaries_dir)); + assert!(!chromium_browser.is_version_downloaded("1465661", binaries_dir)); + } + + #[test] + fn test_version_downloaded_no_app_directory() { + let temp_dir = TempDir::new().unwrap(); + let binaries_dir = temp_dir.path(); + + // Create browser directory but no .app directory + let browser_dir = binaries_dir.join("firefox").join("139.0"); + fs::create_dir_all(&browser_dir).unwrap(); + + // Create some other files but no .app + fs::write(browser_dir.join("readme.txt"), "Some content").unwrap(); + + let browser = FirefoxBrowser::new(BrowserType::Firefox); + assert!(!browser.is_version_downloaded("139.0", binaries_dir)); + } + + #[test] + fn test_browser_type_clone_and_debug() { + let browser_type = BrowserType::Firefox; + let cloned = browser_type.clone(); + assert_eq!(browser_type, cloned); + + // Test Debug trait + let debug_str = format!("{:?}", browser_type); + assert!(debug_str.contains("Firefox")); + } + + #[test] + fn test_proxy_settings_serialization() { + let proxy = ProxySettings { + enabled: true, + proxy_type: "http".to_string(), + host: "127.0.0.1".to_string(), + port: 8080, + }; + + // Test that it can be serialized (implements Serialize) + let json = serde_json::to_string(&proxy).unwrap(); + assert!(json.contains("127.0.0.1")); + assert!(json.contains("8080")); + assert!(json.contains("http")); + + // Test that it can be deserialized (implements Deserialize) + let deserialized: ProxySettings = serde_json::from_str(&json).unwrap(); + assert_eq!(deserialized.enabled, proxy.enabled); + assert_eq!(deserialized.proxy_type, proxy.proxy_type); + assert_eq!(deserialized.host, proxy.host); + assert_eq!(deserialized.port, proxy.port); + } +} diff --git a/src-tauri/src/browser_runner.rs b/src-tauri/src/browser_runner.rs new file mode 100644 index 0000000..705551b --- /dev/null +++ b/src-tauri/src/browser_runner.rs @@ -0,0 +1,2261 @@ +use crate::proxy_manager::PROXY_MANAGER; +use directories::BaseDirs; +use serde::{Deserialize, Serialize}; +use std::fs::{self, create_dir_all}; +use std::path::{Path, PathBuf}; +use std::process::Command; +use std::time::{SystemTime, UNIX_EPOCH}; +use sysinfo::{Pid, System}; +use tauri::Emitter; + +use crate::browser::{create_browser, BrowserType, ProxySettings}; +use crate::browser_version_service::{BrowserVersionService, BrowserVersionInfo, BrowserVersionsResult}; +use crate::download::{Downloader, DownloadProgress}; +use crate::downloaded_browsers::DownloadedBrowsersRegistry; +use crate::extraction::Extractor; + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct BrowserProfile { + pub name: String, + pub browser: String, + pub version: String, + pub profile_path: String, + #[serde(default)] + pub proxy: Option, + #[serde(default)] + pub process_id: Option, + #[serde(default)] + pub last_launch: Option, +} + +pub struct BrowserRunner { + base_dirs: BaseDirs, +} +impl BrowserRunner { + pub fn new() -> Self { + Self { + base_dirs: BaseDirs::new().expect("Failed to get base directories"), + } + } + + // Helper function to check if a process matches TOR/Mullvad browser + fn is_tor_or_mullvad_browser(&self, exe_name: &str, cmd: &[std::ffi::OsString], browser_type: &str) -> bool { + match browser_type { + "mullvad-browser" => { + // More specific detection for Mullvad Browser + let has_mullvad_in_exe = exe_name.contains("mullvad"); + let has_firefox_exe = exe_name == "firefox" || exe_name.contains("firefox-bin"); + let has_mullvad_in_cmd = cmd.iter().any(|arg| { + let arg_str = arg.to_str().unwrap_or(""); + arg_str.contains("Mullvad Browser.app") || + arg_str.contains("mullvad") || + arg_str.contains("Mullvad") || + arg_str.contains("/Applications/Mullvad Browser.app/") || + arg_str.contains("MullvadBrowser") + }); + + has_mullvad_in_exe || (has_firefox_exe && has_mullvad_in_cmd) + }, + "tor-browser" => { + // More specific detection for TOR Browser + let has_tor_in_exe = exe_name.contains("tor"); + let has_firefox_exe = exe_name == "firefox" || exe_name.contains("firefox-bin"); + let has_tor_in_cmd = cmd.iter().any(|arg| { + let arg_str = arg.to_str().unwrap_or(""); + arg_str.contains("Tor Browser.app") || + arg_str.contains("tor-browser") || + arg_str.contains("TorBrowser") || + arg_str.contains("/Applications/Tor Browser.app/") || + arg_str.contains("TorBrowser-Data") + }); + + has_tor_in_exe || (has_firefox_exe && has_tor_in_cmd) + }, + _ => false, + } + } + + // Helper function to validate PID for TOR/Mullvad browsers + fn validate_tor_mullvad_pid(&self, profile: &BrowserProfile, pid: u32) -> bool { + let system = System::new_all(); + + if let Some(process) = system.process(Pid::from(pid as usize)) { + let exe_name = process.name().to_string_lossy().to_lowercase(); + let cmd = process.cmd(); + + // Check if this is the correct browser type + let is_correct_browser = match profile.browser.as_str() { + "mullvad-browser" => self.is_tor_or_mullvad_browser(&exe_name, &cmd, "mullvad-browser"), + "tor-browser" => self.is_tor_or_mullvad_browser(&exe_name, &cmd, "tor-browser"), + _ => return false, + }; + + if !is_correct_browser { + println!("PID {} is not the correct browser type for {}", pid, profile.browser); + return false; + } + + // Check profile path match + let profile_path_match = cmd.iter().any(|s| { + let arg = s.to_str().unwrap_or(""); + arg == &profile.profile_path || + arg == format!("-profile={}", profile.profile_path) || + (arg == "-profile" && cmd.iter().any(|s2| s2.to_str().unwrap_or("") == &profile.profile_path)) + }); + + if !profile_path_match { + println!("PID {} does not match profile path for {}", pid, profile.name); + return false; + } + + println!("PID {} validated successfully for {} profile {}", pid, profile.browser, profile.name); + return true; + } else { + println!("PID {} does not exist", pid); + return false; + } + } + pub fn get_binaries_dir(&self) -> PathBuf { + let mut path = self.base_dirs.data_local_dir().to_path_buf(); + path.push(if cfg!(debug_assertions) { "DonutBrowserDev" } else { "DonutBrowser" }); + path.push("binaries"); + path + } + + pub fn get_profiles_dir(&self) -> PathBuf { + let mut path = self.base_dirs.data_local_dir().to_path_buf(); + path.push(if cfg!(debug_assertions) { "DonutBrowserDev" } else { "DonutBrowser" }); + path.push("profiles"); + path + } + + pub fn create_profile( + &self, + name: &str, + browser: &str, + version: &str, + proxy: Option, + ) -> Result> { + // Check if a profile with this name already exists (case insensitive) + let existing_profiles = self.list_profiles()?; + if existing_profiles + .iter() + .any(|p| p.name.to_lowercase() == name.to_lowercase()) + { + return Err(format!("Profile with name '{}' already exists", name).into()); + } + + let snake_case_name = name.to_lowercase().replace(" ", "_"); + + // Create profile directory + let mut profile_path = self.get_profiles_dir(); + profile_path.push(&snake_case_name); + create_dir_all(&profile_path)?; + + let profile = BrowserProfile { + name: name.to_string(), + browser: browser.to_string(), + version: version.to_string(), + profile_path: profile_path.to_string_lossy().to_string(), + proxy: proxy.clone(), + process_id: None, + last_launch: None, + }; + + // Save profile info + self.save_profile(&profile)?; + + // Create user.js with common Firefox preferences and apply proxy settings if provided + if let Some(proxy_settings) = &proxy { + self.apply_proxy_settings_to_profile(&profile_path, proxy_settings, None)?; + } else { + // Create user.js with common Firefox preferences but no proxy + self.disable_proxy_settings_in_profile(&profile_path)?; + } + + Ok(profile) + } + + pub fn update_profile_proxy( + &self, + profile_name: &str, + proxy: Option, + ) -> Result> { + let profiles_dir = self.get_profiles_dir(); + let profile_file = profiles_dir.join(format!( + "{}.json", + profile_name.to_lowercase().replace(" ", "_") + )); + let profile_path = profiles_dir.join(profile_name.to_lowercase().replace(" ", "_")); + + if !profile_file.exists() { + return Err(format!("Profile {} not found", profile_name).into()); + } + + // Read the profile + let content = fs::read_to_string(&profile_file)?; + let mut profile: BrowserProfile = serde_json::from_str(&content)?; + + // Update proxy settings + profile.proxy = proxy.clone(); + + // Save the updated profile + self.save_profile(&profile)?; + + // Get internal proxy if the browser is running + let internal_proxy = if let Some(pid) = profile.process_id { + PROXY_MANAGER.get_proxy_settings(pid) + } else { + None + }; + + // Apply proxy settings if provided + if let Some(proxy_settings) = &proxy { + self.apply_proxy_settings_to_profile( + &profile_path, + proxy_settings, + internal_proxy.as_ref(), + )?; + } else { + self.disable_proxy_settings_in_profile(&profile_path)?; + } + + Ok(profile) + } + + pub fn update_profile_version( + &self, + profile_name: &str, + version: &str, + ) -> Result> { + let profiles_dir = self.get_profiles_dir(); + let profile_file = profiles_dir.join(format!( + "{}.json", + profile_name.to_lowercase().replace(" ", "_") + )); + + if !profile_file.exists() { + return Err(format!("Profile {} not found", profile_name).into()); + } + + // Read the profile + let content = fs::read_to_string(&profile_file)?; + let mut profile: BrowserProfile = serde_json::from_str(&content)?; + + // Check if the browser is currently running + if profile.process_id.is_some() { + return Err("Cannot update version while browser is running. Please stop the browser first.".into()); + } + + // Verify the new version is downloaded + let browser_type = BrowserType::from_str(&profile.browser) + .map_err(|_| format!("Invalid browser type: {}", profile.browser))?; + let browser = create_browser(browser_type.clone()); + let binaries_dir = self.get_binaries_dir(); + + if !browser.is_version_downloaded(version, &binaries_dir) { + return Err(format!("Browser version {} is not downloaded", version).into()); + } + + // Update version + profile.version = version.to_string(); + + // Save the updated profile + self.save_profile(&profile)?; + + Ok(profile) + } + + fn get_common_firefox_preferences(&self) -> Vec { + vec![ + // Disable default browser check + "user_pref(\"browser.shell.checkDefaultBrowser\", false);".to_string(), + + // Disable automatic updates + "user_pref(\"app.update.enabled\", false);".to_string(), + "user_pref(\"app.update.auto\", false);".to_string(), + "user_pref(\"app.update.mode\", 0);".to_string(), + "user_pref(\"app.update.service.enabled\", false);".to_string(), + "user_pref(\"app.update.silent\", false);".to_string(), + + // Disable update checking entirely + "user_pref(\"app.update.checkInstallTime\", false);".to_string(), + "user_pref(\"app.update.url\", \"\");".to_string(), + "user_pref(\"app.update.url.manual\", \"\");".to_string(), + "user_pref(\"app.update.url.details\", \"\");".to_string(), + + // Disable background update downloads + "user_pref(\"app.update.download.attemptOnce\", false);".to_string(), + "user_pref(\"app.update.idletime\", -1);".to_string(), + + // Additional update-related preferences for completeness + "user_pref(\"security.tls.insecure_fallback_hosts\", \"\");".to_string(), + "user_pref(\"app.update.staging.enabled\", false);".to_string(), + ] + } + + fn apply_proxy_settings_to_profile( + &self, + profile_path: &Path, + proxy: &ProxySettings, + internal_proxy: Option<&ProxySettings>, + ) -> Result<(), Box> { + let user_js_path = profile_path.join("user.js"); + let mut preferences = Vec::new(); + + // Add common Firefox preferences (like disabling default browser check) + preferences.extend(self.get_common_firefox_preferences()); + + if proxy.enabled { + // Create PAC file from template + let template_path = Path::new("assets/template.pac"); + let pac_content = fs::read_to_string(template_path)?; + + // Format proxy URL based on type and whether we have an internal proxy + let proxy_url = if let Some(internal) = internal_proxy { + // Use internal proxy as the primary proxy + format!("HTTP {}:{}", internal.host, internal.port) + } else { + // Use user-configured proxy directly + match proxy.proxy_type.as_str() { + "http" => format!("HTTP {}:{}", proxy.host, proxy.port), + "https" => format!("HTTPS {}:{}", proxy.host, proxy.port), + "socks4" => format!("SOCKS4 {}:{}", proxy.host, proxy.port), + "socks5" => format!("SOCKS5 {}:{}", proxy.host, proxy.port), + _ => return Err(format!("Unsupported proxy type: {}", proxy.proxy_type).into()), + } + }; + + // Replace placeholders in PAC file + let pac_content = pac_content + .replace("{{proxy_url}}", &proxy_url) + .replace("{{proxy_credentials}}", ""); // Credentials are now handled by the PAC file + + // Save PAC file in profile directory + let pac_path = profile_path.join("proxy.pac"); + fs::write(&pac_path, pac_content)?; + + // Configure Firefox to use the PAC file + preferences.extend([ + "user_pref(\"network.proxy.type\", 2);".to_string(), + format!( + "user_pref(\"network.proxy.autoconfig_url\", \"file://{}\");", + pac_path.to_string_lossy() + ), + "user_pref(\"network.proxy.failover_direct\", false);".to_string(), + "user_pref(\"network.proxy.socks_remote_dns\", true);".to_string(), + "user_pref(\"network.proxy.no_proxies_on\", \"\");".to_string(), + "user_pref(\"signon.autologin.proxy\", true);".to_string(), + "user_pref(\"network.proxy.share_proxy_settings\", false);".to_string(), + "user_pref(\"network.automatic-ntlm-auth.allow-proxies\", false);".to_string(), + "user_pref(\"network.auth-use-sspi\", false);".to_string(), + ]); + } else { + preferences.push("user_pref(\"network.proxy.type\", 0);".to_string()); + preferences.push("user_pref(\"network.proxy.failover_direct\", true);".to_string()); + + let pac_content = "function FindProxyForURL(url, host) { return 'DIRECT'; }"; + let pac_path = profile_path.join("proxy.pac"); + fs::write(&pac_path, pac_content)?; + preferences.push(format!( + "user_pref(\"network.proxy.autoconfig_url\", \"file://{}\");", + pac_path.to_string_lossy() + )); + } + + // Write settings to user.js file + fs::write(user_js_path, preferences.join("\n"))?; + + Ok(()) + } + + pub fn disable_proxy_settings_in_profile( + &self, + profile_path: &Path, + ) -> Result<(), Box> { + let user_js_path = profile_path.join("user.js"); + let mut preferences = Vec::new(); + + // Add common Firefox preferences (like disabling default browser check) + preferences.extend(self.get_common_firefox_preferences()); + + preferences.push("user_pref(\"network.proxy.type\", 0);".to_string()); + preferences.push("user_pref(\"network.proxy.failover_direct\", true);".to_string()); + + fs::write(user_js_path, preferences.join("\n"))?; + + Ok(()) + } + + pub fn save_profile(&self, profile: &BrowserProfile) -> Result<(), Box> { + let profiles_dir = self.get_profiles_dir(); + let profile_file = profiles_dir.join(format!( + "{}.json", + profile.name.to_lowercase().replace(" ", "_") + )); + + let json = serde_json::to_string_pretty(profile)?; + fs::write(profile_file, json)?; + + Ok(()) + } + + pub fn list_profiles(&self) -> Result, Box> { + let profiles_dir = self.get_profiles_dir(); + if !profiles_dir.exists() { + return Ok(vec![]); + } + + let mut profiles = Vec::new(); + for entry in fs::read_dir(profiles_dir)? { + let entry = entry?; + let path = entry.path(); + + if path.extension().map_or(false, |ext| ext == "json") { + let content = fs::read_to_string(path)?; + let profile: BrowserProfile = serde_json::from_str(&content)?; + profiles.push(profile); + } + } + + Ok(profiles) + } + + pub async fn launch_browser( + &self, + profile: &BrowserProfile, + url: Option, + ) -> Result> { + // Create browser instance + let browser_type = BrowserType::from_str(&profile.browser) + .map_err(|_| format!("Invalid browser type: {}", profile.browser))?; + let browser = create_browser(browser_type.clone()); + + // Get executable path + let mut browser_dir = self.get_binaries_dir(); + browser_dir.push(&profile.browser); + browser_dir.push(&profile.version); + + let executable_path = browser.get_executable_path(&browser_dir).expect("Failed to get executable path"); + + // Get launch arguments + let browser_args = + browser.create_launch_args(&profile.profile_path, profile.proxy.as_ref(), url).expect("Failed to create launch arguments"); + + // Launch browser + let child = Command::new(executable_path).args(&browser_args).spawn()?; + let launcher_pid = child.id(); + + println!("Launched browser with launcher PID: {} for profile: {}", launcher_pid, profile.name); + + // For TOR and Mullvad browsers, we need to find the actual browser process + // because they use launcher scripts that spawn the real browser process + let actual_pid = if matches!(browser_type, BrowserType::TorBrowser | BrowserType::MullvadBrowser) { + println!("Waiting for TOR/Mullvad browser to fully start..."); + + // Wait a bit for the browser to fully start + tokio::time::sleep(tokio::time::Duration::from_millis(3000)).await; + + // Search for the actual browser process + let system = System::new_all(); + let mut found_pid: Option = None; + + // Try multiple times to find the process as it might take time to start + for attempt in 1..=5 { + println!("Attempt {} to find actual browser process...", attempt); + + for (pid, process) in system.processes() { + let cmd = process.cmd(); + if cmd.len() >= 2 { + // Check if this is the right browser executable + let exe_name = process.name().to_string_lossy().to_lowercase(); + let is_correct_browser = match profile.browser.as_str() { + "mullvad-browser" => self.is_tor_or_mullvad_browser(&exe_name, &cmd, "mullvad-browser"), + "tor-browser" => self.is_tor_or_mullvad_browser(&exe_name, &cmd, "tor-browser"), + _ => false, + }; + + if !is_correct_browser { + continue; + } + + // Check for profile path match + let profile_path_match = cmd.iter().any(|s| { + let arg = s.to_str().unwrap_or(""); + arg == &profile.profile_path || + arg == format!("-profile={}", profile.profile_path) || + (arg == "-profile" && cmd.iter().any(|s2| s2.to_str().unwrap_or("") == &profile.profile_path)) + }); + + if profile_path_match { + found_pid = Some(pid.as_u32()); + println!("Found actual browser process with PID: {} for profile: {}", pid.as_u32(), profile.name); + break; + } + } + } + + if found_pid.is_some() { + break; + } + + // Wait before next attempt + tokio::time::sleep(tokio::time::Duration::from_millis(1000)).await; + } + + found_pid.unwrap_or(launcher_pid) + } else { + // For other browsers, the launcher PID is usually the actual browser PID + launcher_pid + }; + + // Update profile with process info + let mut updated_profile = profile.clone(); + updated_profile.process_id = Some(actual_pid); + updated_profile.last_launch = Some(SystemTime::now().duration_since(UNIX_EPOCH)?.as_secs()); + + // Save the updated profile + self.save_process_info(&updated_profile).expect("Failed to save process info"); + + println!("Browser launched successfully with PID: {} for profile: {}", actual_pid, profile.name); + Ok(updated_profile) + } + + pub async fn open_url_in_existing_browser( + &self, + app_handle: tauri::AppHandle, + profile: &BrowserProfile, + url: &str, + ) -> Result<(), Box> { + // Use the comprehensive browser status check + let is_running = self.check_browser_status(app_handle, profile).await?; + + if !is_running { + return Err("Browser is not running".into()); + } + + // Get the updated profile with current PID + let profiles = self.list_profiles().expect("Failed to list profiles"); + let updated_profile = profiles.into_iter() + .find(|p| p.name == profile.name) + .unwrap_or_else(|| profile.clone()); + + // Ensure we have a valid process ID + if updated_profile.process_id.is_none() { + return Err("No valid process ID found for the browser".into()); + } + + let browser_type = BrowserType::from_str(&updated_profile.browser) + .map_err(|_| format!("Invalid browser type: {}", updated_profile.browser))?; + + match browser_type { + BrowserType::Firefox | BrowserType::FirefoxDeveloper | BrowserType::Zen => { + // These browsers don't use -no-remote, so we can use Firefox remote commands + #[cfg(target_os = "macos")] + { + let pid = updated_profile.process_id.unwrap(); + + // First try: Use Firefox remote command (most reliable for these browsers) + println!("Trying Firefox remote command for PID: {}", pid); + let mut browser_dir = self.get_binaries_dir(); + browser_dir.push(&updated_profile.browser); + browser_dir.push(&updated_profile.version); + + let browser = create_browser(browser_type); + if let Ok(executable_path) = browser.get_executable_path(&browser_dir) { + let remote_args = vec![ + "-profile".to_string(), + updated_profile.profile_path.clone(), + "-new-tab".to_string(), + url.to_string(), + ]; + + let remote_output = Command::new(executable_path) + .args(&remote_args) + .output(); + + match remote_output { + Ok(output) if output.status.success() => { + println!("Firefox remote command succeeded"); + return Ok(()); + } + Ok(output) => { + let stderr = String::from_utf8_lossy(&output.stderr); + println!("Firefox remote command failed with stderr: {}, trying AppleScript fallback", stderr); + } + Err(e) => { + println!("Firefox remote command error: {}, trying AppleScript fallback", e); + } + } + } + + // Fallback: Use AppleScript if remote command fails + let escaped_url = url.replace("\"", "\\\"").replace("\\", "\\\\").replace("'", "\\'"); + + let script = format!( + r#" +try + tell application "System Events" + -- Find the exact process by PID + set targetProcess to (first application process whose unix id is {}) + + -- Verify the process exists + if not (exists targetProcess) then + error "No process found with PID {}" + end if + + -- Get the process name for verification + set processName to name of targetProcess + + -- Bring the process to the front first + set frontmost of targetProcess to true + delay 1.0 + + -- Check if the process has any visible windows + set windowList to windows of targetProcess + set hasVisibleWindow to false + repeat with w in windowList + if visible of w is true then + set hasVisibleWindow to true + exit repeat + end if + end repeat + + if not hasVisibleWindow then + -- No visible windows, create a new one + tell targetProcess + keystroke "n" using command down + delay 2.0 + end tell + end if + + -- Ensure the process is frontmost again + set frontmost of targetProcess to true + delay 0.5 + + -- Focus on the address bar and open URL + tell targetProcess + -- Open a new tab + keystroke "t" using command down + delay 1.5 + + -- Focus address bar (Cmd+L) + keystroke "l" using command down + delay 0.5 + + -- Type the URL + keystroke "{}" + delay 0.5 + + -- Press Enter to navigate + keystroke return + end tell + + return "Successfully opened URL in " & processName & " (PID: {})" + end tell +on error errMsg number errNum + return "AppleScript failed: " & errMsg & " (Error " & errNum & ")" +end try + "#, + pid, pid, escaped_url, pid + ); + + println!("Executing AppleScript fallback for Firefox-based browser (PID: {})...", pid); + let output = Command::new("osascript") + .args(["-e", &script]) + .output()?; + + if !output.status.success() { + let error_msg = String::from_utf8_lossy(&output.stderr); + println!("AppleScript failed: {}", error_msg); + return Err(format!( + "Both Firefox remote command and AppleScript failed. AppleScript error: {}", + error_msg + ).into()); + } else { + println!("AppleScript succeeded"); + } + } + + #[cfg(not(target_os = "macos"))] + { + // For non-macOS platforms, use Firefox remote command + let mut browser_dir = self.get_binaries_dir(); + browser_dir.push(&updated_profile.browser); + browser_dir.push(&updated_profile.version); + + let browser = create_browser(browser_type); + let executable_path = browser.get_executable_path(&browser_dir)?; + + let output = Command::new(executable_path) + .args([ + "-profile", + &updated_profile.profile_path, + "-new-tab", + url, + ]) + .output()?; + + if !output.status.success() { + return Err(format!( + "Failed to open URL in existing browser: {}", + String::from_utf8_lossy(&output.stderr) + ).into()); + } + } + } + BrowserType::MullvadBrowser | BrowserType::TorBrowser => { + // These browsers use -no-remote, so we need a different approach that doesn't require accessibility permissions + #[cfg(target_os = "macos")] + { + let pid = updated_profile.process_id.unwrap(); + + println!("Opening URL in TOR/Mullvad browser using file-based approach (PID: {})", pid); + + // Validate that we have the correct PID for this TOR/Mullvad browser + if !self.validate_tor_mullvad_pid(&updated_profile, pid) { + return Err(format!( + "PID {} is not valid for {} profile {}. The browser process may have changed.", + pid, updated_profile.browser, updated_profile.name + ).into()); + } + + // Method 1: Try using a temporary HTML file approach that doesn't require accessibility permissions + println!("Attempting file-based URL opening for TOR/Mullvad browser"); + + // Create a temporary HTML file that redirects to the target URL + let temp_dir = std::env::temp_dir(); + let temp_file_name = format!("donut_browser_url_{}.html", std::process::id()); + let temp_file_path = temp_dir.join(&temp_file_name); + + let html_content = format!( + r#" + + + + + Redirecting... + + + +

Redirecting to {}...

+ +"#, + url, url, url, url + ); + + // Write the HTML file + match std::fs::write(&temp_file_path, html_content) { + Ok(()) => { + println!("Created temporary HTML file: {:?}", temp_file_path); + + // Get the browser executable path to use with 'open' + let mut browser_dir = self.get_binaries_dir(); + browser_dir.push(&updated_profile.browser); + browser_dir.push(&updated_profile.version); + + let browser = create_browser(browser_type.clone()); + if let Ok(executable_path) = browser.get_executable_path(&browser_dir) { + // Use 'open' command to open the HTML file with the specific browser instance + // This approach works because it uses the existing browser process + let open_result = Command::new("open") + .args([ + "-a", + executable_path.to_str().unwrap(), + temp_file_path.to_str().unwrap(), + ]) + .output(); + + // Clean up the temporary file after a short delay + let temp_file_path_clone = temp_file_path.clone(); + tokio::spawn(async move { + tokio::time::sleep(tokio::time::Duration::from_secs(5)).await; + let _ = std::fs::remove_file(temp_file_path_clone); + }); + + match open_result { + Ok(output) if output.status.success() => { + println!("Successfully opened URL using file-based approach"); + return Ok(()); + } + Ok(output) => { + let stderr = String::from_utf8_lossy(&output.stderr); + println!("File-based approach failed: {}", stderr); + } + Err(e) => { + println!("File-based approach error: {}", e); + } + } + } + + // Clean up temp file if the approach failed + let _ = std::fs::remove_file(&temp_file_path); + } + Err(e) => { + println!("Failed to create temporary HTML file: {}", e); + } + } + + // Method 2: Try using the 'open' command directly with the URL + println!("Attempting direct URL opening with 'open' command"); + + // Get the browser executable path + let mut browser_dir = self.get_binaries_dir(); + browser_dir.push(&updated_profile.browser); + browser_dir.push(&updated_profile.version); + + let browser = create_browser(browser_type.clone()); + if let Ok(executable_path) = browser.get_executable_path(&browser_dir) { + // Try to open the URL directly with the browser + let direct_open_result = Command::new("open") + .args([ + "-a", + executable_path.to_str().unwrap(), + url, + ]) + .output(); + + match direct_open_result { + Ok(output) if output.status.success() => { + println!("Successfully opened URL using direct 'open' command"); + return Ok(()); + } + Ok(output) => { + let stderr = String::from_utf8_lossy(&output.stderr); + println!("Direct 'open' command failed: {}", stderr); + } + Err(e) => { + println!("Direct 'open' command error: {}", e); + } + } + } + + // Method 3: Try using osascript without accessibility features (just to bring window to front) + println!("Attempting minimal AppleScript approach without accessibility features"); + + let minimal_script = format!( + r#" +try + tell application "System Events" + set targetProcess to (first application process whose unix id is {}) + if not (exists targetProcess) then + error "No process found with PID {}" + end if + + -- Just bring the process to front without trying to control it + set frontmost of targetProcess to true + + return "Process brought to front successfully" + end tell +on error errMsg + return "Minimal AppleScript failed: " & errMsg +end try + "#, + pid, pid + ); + + let minimal_output = Command::new("osascript") + .args(["-e", &minimal_script]) + .output(); + + match minimal_output { + Ok(output) => { + let result = String::from_utf8_lossy(&output.stdout).trim().to_string(); + if output.status.success() && result.contains("successfully") { + println!("Successfully brought browser to front: {}", result); + + // Now try to use the system's default URL opening mechanism + let system_open_result = Command::new("open") + .args([url]) + .output(); + + match system_open_result { + Ok(output) if output.status.success() => { + println!("Successfully opened URL using system default handler"); + return Ok(()); + } + Ok(output) => { + let stderr = String::from_utf8_lossy(&output.stderr); + println!("System default URL opening failed: {}", stderr); + } + Err(e) => { + println!("System default URL opening error: {}", e); + } + } + } else { + println!("Minimal AppleScript failed: {}", result); + } + } + Err(e) => { + println!("Minimal AppleScript execution error: {}", e); + } + } + + // If all methods fail, return a more helpful error message + return Err(format!( + "Failed to open URL in existing TOR/Mullvad browser (PID: {}). All methods failed:\n\ + 1. File-based approach failed\n\ + 2. Direct 'open' command failed\n\ + 3. Minimal AppleScript approach failed\n\ + \n\ + This may be due to browser security restrictions or the browser process may have changed.\n\ + Try closing and reopening the browser, or manually paste the URL: {}", + pid, url + ).into()); + } + + #[cfg(not(target_os = "macos"))] + { + // For non-macOS platforms, we can't use AppleScript, so try a different approach + // This is a limitation - Firefox with -no-remote can't receive remote commands + return Err("Opening URLs in existing Firefox-based browsers is not supported on this platform when using -no-remote".into()); + } + } + BrowserType::Chromium | BrowserType::Brave => { + // For Chromium-based browsers, use a more targeted approach + #[cfg(target_os = "macos")] + { + let pid = updated_profile.process_id.unwrap(); + + // First, try using the browser's built-in URL opening capability + println!("Trying Chromium URL opening for PID: {}", pid); + let mut browser_dir = self.get_binaries_dir(); + browser_dir.push(&updated_profile.browser); + browser_dir.push(&updated_profile.version); + + let browser = create_browser(browser_type); + if let Ok(executable_path) = browser.get_executable_path(&browser_dir) { + // Try to open URL in existing instance using the same user data dir + let remote_output = Command::new(executable_path) + .args([ + &format!("--user-data-dir={}", updated_profile.profile_path), + url, + ]) + .output(); + + match remote_output { + Ok(output) if output.status.success() => { + println!("Chromium URL opening succeeded"); + return Ok(()); + } + Ok(output) => { + let stderr = String::from_utf8_lossy(&output.stderr); + println!("Chromium URL opening failed: {}, trying AppleScript", stderr); + } + Err(e) => { + println!("Chromium URL opening error: {}, trying AppleScript", e); + } + } + } + + // Fallback to AppleScript with more precise targeting + let escaped_url = url.replace("\"", "\\\"").replace("\\", "\\\\").replace("'", "\\'"); + + let script = format!( + r#" +try + tell application "System Events" + -- Find the exact process by PID + set targetProcess to (first application process whose unix id is {}) + + -- Verify the process exists + if not (exists targetProcess) then + error "No process found with PID {}" + end if + + -- Get the process name for verification + set processName to name of targetProcess + + -- Bring the process to the front first + set frontmost of targetProcess to true + delay 1.0 + + -- Check if the process has any visible windows + set windowList to windows of targetProcess + set hasVisibleWindow to false + repeat with w in windowList + if visible of w is true then + set hasVisibleWindow to true + exit repeat + end if + end repeat + + if not hasVisibleWindow then + -- No visible windows, create a new one + tell targetProcess + keystroke "n" using command down + delay 2.0 + end tell + end if + + -- Ensure the process is frontmost again + set frontmost of targetProcess to true + delay 0.5 + + -- Focus on the address bar and open URL + tell targetProcess + -- Open a new tab + keystroke "t" using command down + delay 1.5 + + -- Focus address bar (Cmd+L) + keystroke "l" using command down + delay 0.5 + + -- Type the URL + keystroke "{}" + delay 0.5 + + -- Press Enter to navigate + keystroke return + end tell + + return "Successfully opened URL in " & processName & " (PID: {})" + end tell +on error errMsg number errNum + return "AppleScript failed: " & errMsg & " (Error " & errNum & ")" +end try + "#, + pid, pid, escaped_url, pid + ); + + println!("Executing AppleScript for Chromium-based browser (PID: {})...", pid); + let output = Command::new("osascript") + .args(["-e", &script]) + .output()?; + + if !output.status.success() { + let error_msg = String::from_utf8_lossy(&output.stderr); + println!("AppleScript failed: {}", error_msg); + return Err(format!( + "Failed to open URL in existing Chromium-based browser: {}", + error_msg + ).into()); + } else { + println!("AppleScript succeeded"); + } + } + + #[cfg(not(target_os = "macos"))] + { + // For non-macOS platforms, try using the browser's remote opening capability + let mut browser_dir = self.get_binaries_dir(); + browser_dir.push(&updated_profile.browser); + browser_dir.push(&updated_profile.version); + + let browser = create_browser(browser_type); + let executable_path = browser.get_executable_path(&browser_dir)?; + + // Try to open in existing instance + let output = Command::new(executable_path) + .args([ + &format!("--user-data-dir={}", updated_profile.profile_path), + url, + ]) + .output()?; + + if !output.status.success() { + return Err(format!( + "Failed to open URL in existing Chromium-based browser: {}", + String::from_utf8_lossy(&output.stderr) + ).into()); + } + } + } + } + + Ok(()) + } + + pub async fn launch_or_open_url( + &self, + app_handle: tauri::AppHandle, + profile: &BrowserProfile, + url: Option, + ) -> Result> { + // Get the most up-to-date profile data + let profiles = self.list_profiles().expect("Failed to list profiles"); + let updated_profile = profiles.into_iter() + .find(|p| p.name == profile.name) + .unwrap_or_else(|| profile.clone()); + + // Check if browser is already running + let is_running = self.check_browser_status(app_handle.clone(), &updated_profile).await?; + + // Get the updated profile again after status check (PID might have been updated) + let profiles = self.list_profiles().expect("Failed to list profiles"); + let final_profile = profiles.into_iter() + .find(|p| p.name == profile.name) + .unwrap_or_else(|| updated_profile.clone()); + + println!("Browser status check - Profile: {}, Running: {}, URL: {:?}, PID: {:?}", + final_profile.name, is_running, url, final_profile.process_id); + + if is_running && url.is_some() { + // Browser is running and we have a URL to open + println!("Opening URL in existing browser: {}", url.as_ref().unwrap()); + + // For TOR/Mullvad browsers, add extra verification + if matches!(final_profile.browser.as_str(), "tor-browser" | "mullvad-browser") { + println!("TOR/Mullvad browser detected - ensuring we have correct PID"); + if final_profile.process_id.is_none() { + println!("ERROR: No PID found for running TOR/Mullvad browser - this should not happen"); + return Err("No PID found for running browser".into()); + } + } + match self.open_url_in_existing_browser(app_handle, &final_profile, url.as_ref().unwrap()).await { + Ok(()) => { + println!("Successfully opened URL in existing browser"); + Ok(final_profile) + } + Err(e) => { + println!("Failed to open URL in existing browser: {}", e); + + // For Mullvad and Tor browsers, don't fall back to new instance since they use -no-remote + // and can't have multiple instances with the same profile + match final_profile.browser.as_str() { + "mullvad-browser" | "tor-browser" => { + return Err(format!( + "Failed to open URL in existing {} browser. Cannot launch new instance due to profile conflict: {}", + final_profile.browser, e + ).into()); + } + _ => { + println!("Falling back to new instance for browser: {}", final_profile.browser); + // Fallback to launching a new instance for other browsers + self.launch_browser(&final_profile, url).await + } + } + } + } + } else { + // Browser is not running or no URL provided, launch new instance + if !is_running { + println!("Launching new browser instance - browser not running"); + } else { + println!("Launching new browser instance - no URL provided"); + } + self.launch_browser(&final_profile, url).await + } + } + + pub fn rename_profile( + &self, + old_name: &str, + new_name: &str, + ) -> Result> { + let profiles_dir = self.get_profiles_dir(); + let old_profile_file = profiles_dir.join(format!( + "{}.json", + old_name.to_lowercase().replace(" ", "_") + )); + let old_profile_path = profiles_dir.join(old_name.to_lowercase().replace(" ", "_")); + + // Check if new name already exists (case insensitive) + let existing_profiles = self.list_profiles()?; + if existing_profiles + .iter() + .any(|p| p.name.to_lowercase() == new_name.to_lowercase()) + { + return Err(format!("Profile with name '{}' already exists", new_name).into()); + } + + // Read the profile + let content = fs::read_to_string(&old_profile_file)?; + let mut profile: BrowserProfile = serde_json::from_str(&content)?; + + // Update profile name + profile.name = new_name.to_string(); + + // Create new paths + let _new_profile_file = profiles_dir.join(format!( + "{}.json", + new_name.to_lowercase().replace(" ", "_") + )); + let new_profile_path = profiles_dir.join(new_name.to_lowercase().replace(" ", "_")); + + // Rename directory + if old_profile_path.exists() { + fs::rename(&old_profile_path, &new_profile_path)?; + } + + // Update profile path + profile.profile_path = new_profile_path.to_string_lossy().to_string(); + + // Save profile with new name + self.save_profile(&profile)?; + + // Delete old profile file + if old_profile_file.exists() { + fs::remove_file(old_profile_file)?; + } + + Ok(profile) + } + + pub fn get_saved_mullvad_releases(&self) -> Result, Box> { + let mut data_path = self.base_dirs.data_local_dir().to_path_buf(); + data_path.push(if cfg!(debug_assertions) { "DonutBrowserDev" } else { "DonutBrowser" }); + data_path.push("data"); + let releases_file = data_path.join("mullvad_releases.json"); + + if !releases_file.exists() { + return Ok(vec![]); + } + + let mut versions = Vec::new(); + let mut browser_dir = self.base_dirs.data_local_dir().to_path_buf(); + browser_dir.push(if cfg!(debug_assertions) { "DonutBrowserDev" } else { "DonutBrowser" }); + browser_dir.push("binaries"); + browser_dir.push("mullvad-browser"); + for entry in fs::read_dir(browser_dir)? { + let entry = entry?; + if entry.path().is_dir() { + if let Some(version_str) = entry.file_name().to_str() { + versions.push(version_str.to_string()); + } + } + } + + // Sort versions in descending order (newest first) + versions.sort_by(|a, b| b.cmp(a)); + + Ok(versions) + } + + fn save_process_info(&self, profile: &BrowserProfile) -> Result<(), Box> { + let profiles_dir = self.get_profiles_dir(); + let profile_file = profiles_dir.join(format!( + "{}.json", + profile.name.to_lowercase().replace(" ", "_") + )); + let json = serde_json::to_string_pretty(&profile)?; + fs::write(profile_file, json)?; + Ok(()) + } + + pub fn delete_profile(&self, profile_name: &str) -> Result<(), Box> { + let profiles_dir = self.get_profiles_dir(); + let profile_file = profiles_dir.join(format!( + "{}.json", + profile_name.to_lowercase().replace(" ", "_") + )); + let profile_path = profiles_dir.join(profile_name.to_lowercase().replace(" ", "_")); + + // Delete profile directory + if profile_path.exists() { + fs::remove_dir_all(profile_path)? + } + + // Delete profile JSON file + if profile_file.exists() { + fs::remove_file(profile_file)? + } + + Ok(()) + } + + pub async fn check_browser_status( + &self, + app_handle: tauri::AppHandle, + profile: &BrowserProfile, + ) -> Result> { + let mut inner_profile = profile.clone(); + let system = System::new_all(); + let mut is_running = false; + let mut found_pid: Option = None; + + // First check if the stored PID is still valid + if let Some(pid) = profile.process_id { + if let Some(process) = system.process(Pid::from(pid as usize)) { + let cmd = process.cmd(); + // Verify this process is actually our browser with the correct profile + let profile_path_match = cmd.iter().any(|s| { + let arg = s.to_str().unwrap_or(""); + // For Firefox-based browsers, check for exact profile path match + if profile.browser == "tor-browser" || profile.browser == "firefox" || + profile.browser == "firefox-developer" || profile.browser == "mullvad-browser" || + profile.browser == "zen" { + arg == &profile.profile_path || + arg == format!("-profile={}", profile.profile_path) || + (arg == "-profile" && cmd.iter().any(|s2| s2.to_str().unwrap_or("") == &profile.profile_path)) + } else { + // For Chromium-based browsers, check for user-data-dir + arg.contains(&format!("--user-data-dir={}", profile.profile_path)) || + arg == &profile.profile_path + } + }); + + if profile_path_match { + is_running = true; + found_pid = Some(pid); + println!("Found existing browser process with PID: {} for profile: {}", pid, profile.name); + } else { + println!("PID {} exists but doesn't match our profile path exactly, searching for correct process...", pid); + } + } else { + println!("Stored PID {} no longer exists, searching for browser process...", pid); + } + } + + // If we didn't find the browser with the stored PID, search all processes + if !is_running { + for (pid, process) in system.processes() { + let cmd = process.cmd(); + if cmd.len() >= 2 { + // Check if this is the right browser executable first + let exe_name = process.name().to_string_lossy().to_lowercase(); + let is_correct_browser = match profile.browser.as_str() { + "firefox" => exe_name.contains("firefox") && !exe_name.contains("developer") && !exe_name.contains("tor") && !exe_name.contains("mullvad"), + "firefox-developer" => exe_name.contains("firefox") && exe_name.contains("developer"), + "mullvad-browser" => self.is_tor_or_mullvad_browser(&exe_name, &cmd, "mullvad-browser"), + "tor-browser" => self.is_tor_or_mullvad_browser(&exe_name, &cmd, "tor-browser"), + "zen" => exe_name.contains("zen"), + "chromium" => exe_name.contains("chromium"), + "brave" => exe_name.contains("brave"), + _ => false, + }; + + if !is_correct_browser { + continue; + } + + // Check for profile path match + let profile_path_match = cmd.iter().any(|s| { + let arg = s.to_str().unwrap_or(""); + // For Firefox-based browsers, check for exact profile path match + if profile.browser == "tor-browser" || profile.browser == "firefox" || + profile.browser == "firefox-developer" || profile.browser == "mullvad-browser" || + profile.browser == "zen" { + arg == &profile.profile_path || + arg == format!("-profile={}", profile.profile_path) || + (arg == "-profile" && cmd.iter().any(|s2| s2.to_str().unwrap_or("") == &profile.profile_path)) + } else { + // For Chromium-based browsers, check for user-data-dir + arg.contains(&format!("--user-data-dir={}", profile.profile_path)) || + arg == &profile.profile_path + } + }); + + if profile_path_match { + // Found a matching process + found_pid = Some(pid.as_u32()); + is_running = true; + println!("Found browser process with PID: {} for profile: {}", pid.as_u32(), profile.name); + break; + } + } + } + } + + // Update the process ID if we found a different one + if let Some(pid) = found_pid { + if inner_profile.process_id != Some(pid) { + inner_profile.process_id = Some(pid); + if let Err(e) = self.save_process_info(&inner_profile) { + println!("Warning: Failed to update process info: {}", e); + } else { + println!("Updated process ID for profile '{}' to: {}", inner_profile.name, pid); + } + } + } else if is_running { + println!("Browser is running but no PID found - this shouldn't happen"); + } else { + // Browser is not running, clear the PID if it was set + if inner_profile.process_id.is_some() { + inner_profile.process_id = None; + if let Err(e) = self.save_process_info(&inner_profile) { + println!("Warning: Failed to clear process info: {}", e); + } else { + println!("Cleared process ID for profile '{}'", inner_profile.name); + } + } + } + + // Handle proxy management based on browser status + if let Some(proxy) = &inner_profile.proxy { + if proxy.enabled { + if is_running { + // Browser is running, check if proxy is active + let proxy_active = PROXY_MANAGER + .get_proxy_settings(inner_profile.process_id.unwrap_or(0)) + .is_some(); + + if !proxy_active { + // Browser is running but proxy is not - restart the proxy + if let Some((upstream_url, _preferred_port)) = + PROXY_MANAGER.get_profile_proxy_info(&inner_profile.name) + { + // Restart the proxy with the same configuration + match PROXY_MANAGER + .start_proxy( + app_handle, + &upstream_url, + inner_profile.process_id.unwrap(), + Some(&inner_profile.name), + ) + .await + { + Ok(_) => { + println!("Restarted proxy for profile {}", inner_profile.name); + } + Err(e) => { + eprintln!( + "Failed to restart proxy for profile {}: {}", + inner_profile.name, e + ); + } + } + } + } + } else { + // Browser is not running, stop the proxy if it exists + if let Some(pid) = profile.process_id { + let _ = PROXY_MANAGER.stop_proxy(app_handle, pid).await; + } + } + } + } + + Ok(is_running) + } + + pub async fn kill_browser_process( + &self, + app_handle: tauri::AppHandle, + profile: &BrowserProfile, + ) -> Result<(), Box> { + // Get the current process ID + let pid = if let Some(pid) = profile.process_id { + pid + } else { + // Try to find the process by searching all processes + let system = System::new_all(); + let mut found_pid: Option = None; + + for (pid, process) in system.processes() { + let cmd = process.cmd(); + if cmd.len() >= 2 { + // Check if this is the right browser executable first + let exe_name = process.name().to_string_lossy().to_lowercase(); + let is_correct_browser = match profile.browser.as_str() { + "firefox" => exe_name.contains("firefox") && !exe_name.contains("developer") && !exe_name.contains("tor") && !exe_name.contains("mullvad"), + "firefox-developer" => exe_name.contains("firefox") && exe_name.contains("developer"), + "mullvad-browser" => self.is_tor_or_mullvad_browser(&exe_name, &cmd, "mullvad-browser"), + "tor-browser" => self.is_tor_or_mullvad_browser(&exe_name, &cmd, "tor-browser"), + "zen" => exe_name.contains("zen"), + "chromium" => exe_name.contains("chromium"), + "brave" => exe_name.contains("brave"), + _ => false, + }; + + if !is_correct_browser { + continue; + } + + // Check for profile path match + let profile_path_match = cmd.iter().any(|s| { + let arg = s.to_str().unwrap_or(""); + // For Firefox-based browsers, check for exact profile path match + if profile.browser == "tor-browser" || profile.browser == "firefox" || + profile.browser == "firefox-developer" || profile.browser == "mullvad-browser" || + profile.browser == "zen" { + arg == &profile.profile_path || arg == format!("-profile={}", profile.profile_path) + } else { + // For Chromium-based browsers, check for user-data-dir + arg.contains(&format!("--user-data-dir={}", profile.profile_path)) || + arg == &profile.profile_path + } + }); + + if profile_path_match { + found_pid = Some(pid.as_u32()); + break; + } + } + } + + found_pid.ok_or("Browser process not found")? + }; + + println!("Attempting to kill browser process with PID: {}", pid); + + // Stop any associated proxy first + if let Err(e) = PROXY_MANAGER.stop_proxy(app_handle, pid).await { + println!("Warning: Failed to stop proxy for PID {}: {}", pid, e); + } + + // Kill the process + #[cfg(target_os = "macos")] + { + use std::process::Command; + + // First try SIGTERM (graceful shutdown) + let output = Command::new("kill") + .args(["-TERM", &pid.to_string()]) + .output() + .map_err(|e| format!("Failed to execute kill command: {}", e))?; + + if !output.status.success() { + // If SIGTERM fails, try SIGKILL (force kill) + let output = Command::new("kill") + .args(["-KILL", &pid.to_string()]) + .output()?; + + if !output.status.success() { + return Err(format!("Failed to kill process {}: {}", pid, String::from_utf8_lossy(&output.stderr)).into()); + } + } + } + + #[cfg(not(target_os = "macos"))] + { + // For other platforms, use the sysinfo crate + let system = System::new_all(); + if let Some(process) = system.process(Pid::from(pid as usize)) { + if !process.kill() { + return Err(format!("Failed to kill process {}", pid).into()); + } + } else { + return Err(format!("Process {} not found", pid).into()); + } + } + + // Clear the process ID from the profile + let mut updated_profile = profile.clone(); + updated_profile.process_id = None; + self.save_process_info(&updated_profile) + .map_err(|e| format!("Failed to update profile: {}", e))?; + + println!("Successfully killed browser process with PID: {}", pid); + Ok(()) + } +} + +#[tauri::command] +pub fn create_browser_profile( + name: String, + browser: String, + version: String, + proxy: Option, +) -> Result { + let browser_runner = BrowserRunner::new(); + browser_runner + .create_profile(&name, &browser, &version, proxy) + .map_err(|e| format!("Failed to create profile: {}", e)) +} + +#[tauri::command] +pub fn list_browser_profiles() -> Result, String> { + let browser_runner = BrowserRunner::new(); + browser_runner + .list_profiles() + .map_err(|e| format!("Failed to list profiles: {}", e)) +} + +#[tauri::command] +pub async fn launch_browser_profile( + app_handle: tauri::AppHandle, + profile: BrowserProfile, + url: Option, +) -> Result { + let browser_runner = BrowserRunner::new(); + + // Launch browser or open URL in existing instance + let updated_profile = browser_runner + .launch_or_open_url(app_handle.clone(), &profile, url) + .await + .expect("Failed to launch browser or open URL"); + + // If the profile has proxy settings, start a proxy for it + if let Some(proxy) = &profile.proxy { + if proxy.enabled { + // Get the process ID + if let Some(pid) = updated_profile.process_id { + // Start a proxy for the upstream URL + let upstream_url = format!("{}://{}:{}", proxy.proxy_type, proxy.host, proxy.port); + + // Start the proxy + match PROXY_MANAGER + .start_proxy(app_handle.clone(), &upstream_url, pid, Some(&profile.name)) + .await + { + Ok(internal_proxy_settings) => { + let browser_runner = BrowserRunner::new(); + let profiles_dir = browser_runner.get_profiles_dir(); + let profile_path = profiles_dir.join(profile.name.to_lowercase().replace(" ", "_")); + + // Apply the proxy settings with the internal proxy + browser_runner + .apply_proxy_settings_to_profile(&profile_path, proxy, Some(&internal_proxy_settings)) + .map_err(|e| format!("Failed to update profile proxy: {}", e))?; + } + Err(e) => { + eprintln!("Failed to start proxy: {}", e); + // Continue without proxy + } + } + } + } + } + + Ok(updated_profile) +} + +// Add Tauri command to get saved releases +#[tauri::command] +pub fn get_saved_mullvad_releases() -> Result, String> { + let browser_runner = BrowserRunner::new(); + browser_runner + .get_saved_mullvad_releases() + .map_err(|e| e.to_string()) +} + +#[tauri::command] +pub fn update_profile_proxy( + profile_name: String, + proxy: Option, +) -> Result { + let browser_runner = BrowserRunner::new(); + browser_runner + .update_profile_proxy(&profile_name, proxy) + .map_err(|e| format!("Failed to update profile: {}", e)) +} + +#[tauri::command] +pub fn update_profile_version( + profile_name: String, + version: String, +) -> Result { + let browser_runner = BrowserRunner::new(); + browser_runner + .update_profile_version(&profile_name, &version) + .map_err(|e| format!("Failed to update profile version: {}", e)) +} + +#[tauri::command] +pub async fn check_browser_status( + app_handle: tauri::AppHandle, + profile: BrowserProfile, +) -> Result { + let browser_runner = BrowserRunner::new(); + browser_runner + .check_browser_status(app_handle, &profile) + .await + .map_err(|e| format!("Failed to check browser status: {}", e)) +} + +#[tauri::command] +pub fn rename_profile( + _app_handle: tauri::AppHandle, + old_name: &str, + new_name: &str, +) -> Result { + let browser_runner = BrowserRunner::new(); + browser_runner + .rename_profile(old_name, new_name) + .map_err(|e| format!("Failed to delete profile: {}", e)) +} + +#[tauri::command] +pub fn delete_profile(_app_handle: tauri::AppHandle, profile_name: String) -> Result<(), String> { + let browser_runner = BrowserRunner::new(); + browser_runner + .delete_profile(profile_name.as_str()) + .map_err(|e| format!("Failed to delete profile: {}", e)) +} + +#[tauri::command] +pub fn get_supported_browsers() -> Result, String> { + Ok(vec![ + BrowserType::MullvadBrowser.as_str(), + BrowserType::Firefox.as_str(), + BrowserType::FirefoxDeveloper.as_str(), + BrowserType::Chromium.as_str(), + BrowserType::Brave.as_str(), + BrowserType::Zen.as_str(), + BrowserType::TorBrowser.as_str(), + ]) +} + +#[tauri::command] +pub async fn fetch_browser_versions_detailed(browser_str: String) -> Result, String> { + let service = BrowserVersionService::new(); + service.fetch_browser_versions_detailed(&browser_str, false).await + .map_err(|e| format!("Failed to fetch detailed browser versions: {}", e)) +} + +#[tauri::command] +pub async fn fetch_browser_versions_cached_first(browser_str: String) -> Result, String> { + let service = BrowserVersionService::new(); + + // Get cached versions immediately if available + if let Some(cached_versions) = service.get_cached_browser_versions_detailed(&browser_str) { + // Check if we should update cache in background + if service.should_update_cache(&browser_str) { + // Start background update but return cached data immediately + let service_clone = BrowserVersionService::new(); + let browser_str_clone = browser_str.clone(); + tokio::spawn(async move { + if let Err(e) = service_clone.fetch_browser_versions_detailed(&browser_str_clone, false).await { + eprintln!("Background version update failed for {}: {}", browser_str_clone, e); + } + }); + } + Ok(cached_versions) + } else { + // No cache available, fetch fresh + service.fetch_browser_versions_detailed(&browser_str, false).await + .map_err(|e| format!("Failed to fetch detailed browser versions: {}", e)) + } +} + +#[tauri::command] +pub async fn fetch_browser_versions_with_count_cached_first(browser_str: String) -> Result { + let service = BrowserVersionService::new(); + + // Get cached versions immediately if available + if let Some(cached_versions) = service.get_cached_browser_versions(&browser_str) { + // Check if we should update cache in background + if service.should_update_cache(&browser_str) { + // Start background update but return cached data immediately + let service_clone = BrowserVersionService::new(); + let browser_str_clone = browser_str.clone(); + tokio::spawn(async move { + if let Err(e) = service_clone.fetch_browser_versions_with_count(&browser_str_clone, false).await { + eprintln!("Background version update failed for {}: {}", browser_str_clone, e); + } + }); + } + + // Return cached data in the expected format + Ok(BrowserVersionsResult { + versions: cached_versions.clone(), + new_versions_count: None, // No new versions when returning cached data + total_versions_count: cached_versions.len(), + }) + } else { + // No cache available, fetch fresh + service.fetch_browser_versions_with_count(&browser_str, false).await + .map_err(|e| format!("Failed to fetch browser versions: {}", e)) + } +} + +#[tauri::command] +pub fn get_cached_browser_versions_detailed(browser_str: String) -> Result>, String> { + let service = BrowserVersionService::new(); + Ok(service.get_cached_browser_versions_detailed(&browser_str)) +} + +#[tauri::command] +pub fn should_update_browser_cache(browser_str: String) -> Result { + let service = BrowserVersionService::new(); + Ok(service.should_update_cache(&browser_str)) +} + +#[tauri::command] +pub async fn download_browser( + app_handle: tauri::AppHandle, + browser_str: String, + version: String, +) -> Result { + let browser_runner = BrowserRunner::new(); + let browser_type = + BrowserType::from_str(&browser_str).map_err(|e| format!("Invalid browser type: {}", e))?; + let browser = create_browser(browser_type.clone()); + + // Load registry and check if already downloaded + let mut registry = DownloadedBrowsersRegistry::load() + .map_err(|e| format!("Failed to load browser registry: {}", e))?; + + if registry.is_browser_downloaded(&browser_str, &version) { + return Ok(version); + } + + // Use the centralized browser version service for download info + let version_service = BrowserVersionService::new(); + let download_info = version_service + .get_download_info(&browser_str, &version) + .map_err(|e| format!("Failed to get download info: {}", e))?; + + // Create browser directory + let mut browser_dir = browser_runner.get_binaries_dir(); + browser_dir.push(browser_type.as_str()); + browser_dir.push(&version); + + // Clean up any failed previous download + if let Err(e) = registry.cleanup_failed_download(&browser_str, &version) { + println!("Warning: Failed to cleanup previous download: {}", e); + } + + create_dir_all(&browser_dir).map_err(|e| format!("Failed to create browser directory: {}", e))?; + + // Mark download as started in registry + registry.mark_download_started(&browser_str, &version, browser_dir.clone()); + registry.save().map_err(|e| format!("Failed to save registry: {}", e))?; + + // Use the new download module + let downloader = Downloader::new(); + let download_path = match downloader + .download_browser(&app_handle, browser_type.clone(), &version, &download_info, &browser_dir) + .await + { + Ok(path) => path, + Err(e) => { + // Clean up failed download + let _ = registry.cleanup_failed_download(&browser_str, &version); + let _ = registry.save(); + return Err(format!("Failed to download browser: {}", e)); + } + }; + + // Use the new extraction module + if download_info.is_archive { + let extractor = Extractor::new(); + match extractor + .extract_browser(&app_handle, browser_type.clone(), &version, &download_path, &browser_dir) + .await + { + Ok(_) => { + // Clean up the downloaded archive + if let Err(e) = std::fs::remove_file(&download_path) { + println!("Warning: Could not delete archive file: {}", e); + } + } + Err(e) => { + // Clean up failed download + let _ = registry.cleanup_failed_download(&browser_str, &version); + let _ = registry.save(); + return Err(format!("Failed to extract browser: {}", e)); + } + } + + // Give filesystem a moment to settle after extraction + tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; + } + + // Emit verification progress + let progress = DownloadProgress { + browser: browser_str.clone(), + version: version.clone(), + downloaded_bytes: 0, + total_bytes: None, + percentage: 100.0, + speed_bytes_per_sec: 0.0, + eta_seconds: None, + stage: "verifying".to_string(), + }; + let _ = app_handle.emit("download-progress", &progress); + + // Verify the browser was downloaded correctly + println!("Verifying download for browser: {}, version: {}", browser_str, version); + + // Use the browser's own verification method + let binaries_dir = browser_runner.get_binaries_dir(); + if !browser.is_version_downloaded(&version, &binaries_dir) { + let _ = registry.cleanup_failed_download(&browser_str, &version); + let _ = registry.save(); + return Err("Browser download completed but verification failed".to_string()); + } + + // Mark download as completed in registry + let actual_version = if browser_str == "chromium" { + Some(version.clone()) + } else { + None + }; + + registry.mark_download_completed_with_actual_version(&browser_str, &version, actual_version) + .map_err(|e| format!("Failed to mark download as completed: {}", e))?; + registry.save().map_err(|e| format!("Failed to save registry: {}", e))?; + + // Emit completion + let progress = DownloadProgress { + browser: browser_str.clone(), + version: version.clone(), + downloaded_bytes: 0, + total_bytes: None, + percentage: 100.0, + speed_bytes_per_sec: 0.0, + eta_seconds: Some(0.0), + stage: "completed".to_string(), + }; + let _ = app_handle.emit("download-progress", &progress); + + Ok(version) +} + +#[tauri::command] +pub fn is_browser_downloaded(browser_str: String, version: String) -> bool { + if let Ok(registry) = DownloadedBrowsersRegistry::load() { + if registry.is_browser_downloaded(&browser_str, &version) { + return true; + } + } + let browser_type = BrowserType::from_str(&browser_str).expect("Invalid browser type"); + let browser_runner = BrowserRunner::new(); + let browser = create_browser(browser_type.clone()); + let binaries_dir = browser_runner.get_binaries_dir(); + browser.is_version_downloaded(&version, &binaries_dir) +} + +#[tauri::command] +pub fn check_browser_exists(browser_str: String, version: String) -> bool { + // This is an alias for is_browser_downloaded to provide clearer semantics for auto-updates + is_browser_downloaded(browser_str, version) +} + +#[tauri::command] +pub async fn kill_browser_profile( + app_handle: tauri::AppHandle, + profile: BrowserProfile, +) -> Result<(), String> { + let browser_runner = BrowserRunner::new(); + browser_runner.kill_browser_process(app_handle, &profile).await + .map_err(|e| format!("Failed to kill browser: {}", e)) +} + +#[tauri::command] +pub fn create_browser_profile_new( + name: String, + browser_str: String, + version: String, + proxy: Option, +) -> Result { + let browser_type = BrowserType::from_str(&browser_str) + .map_err(|e| format!("Invalid browser type: {}", e))?; + create_browser_profile(name, browser_type.as_str().to_string(), version, proxy) +} + +#[tauri::command] +pub async fn fetch_browser_versions(browser_str: String) -> Result, String> { + let service = BrowserVersionService::new(); + service.fetch_browser_versions(&browser_str, false).await + .map_err(|e| format!("Failed to fetch browser versions: {}", e)) +} + +#[tauri::command] +pub async fn fetch_browser_versions_with_count(browser_str: String) -> Result { + let service = BrowserVersionService::new(); + service.fetch_browser_versions_with_count(&browser_str, false).await + .map_err(|e| format!("Failed to fetch browser versions: {}", e)) +} + +#[tauri::command] +pub fn get_downloaded_browser_versions(browser_str: String) -> Result, String> { + let registry = DownloadedBrowsersRegistry::load() + .map_err(|e| format!("Failed to load browser registry: {}", e))?; + Ok(registry.get_downloaded_versions(&browser_str)) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::browser::ProxySettings; + use tempfile::TempDir; + + fn create_test_browser_runner() -> (BrowserRunner, TempDir) { + let temp_dir = TempDir::new().unwrap(); + + // Mock the base directories by setting environment variables + std::env::set_var("HOME", temp_dir.path()); + + let browser_runner = BrowserRunner::new(); + (browser_runner, temp_dir) + } + + #[test] + fn test_browser_runner_creation() { + let (_runner, _temp_dir) = create_test_browser_runner(); + // If we get here without panicking, the test passes + } + + #[test] + fn test_get_binaries_dir() { + let (runner, _temp_dir) = create_test_browser_runner(); + let binaries_dir = runner.get_binaries_dir(); + + assert!(binaries_dir.to_string_lossy().contains("DonutBrowser")); + assert!(binaries_dir.to_string_lossy().contains("binaries")); + } + + #[test] + fn test_get_profiles_dir() { + let (runner, _temp_dir) = create_test_browser_runner(); + let profiles_dir = runner.get_profiles_dir(); + + assert!(profiles_dir.to_string_lossy().contains("DonutBrowser")); + assert!(profiles_dir.to_string_lossy().contains("profiles")); + } + + #[test] + fn test_create_profile() { + let (runner, _temp_dir) = create_test_browser_runner(); + + let profile = runner.create_profile( + "Test Profile", + "firefox", + "139.0", + None + ).unwrap(); + + assert_eq!(profile.name, "Test Profile"); + assert_eq!(profile.browser, "firefox"); + assert_eq!(profile.version, "139.0"); + assert!(profile.proxy.is_none()); + assert!(profile.process_id.is_none()); + } + + #[test] + fn test_create_profile_with_proxy() { + let (runner, _temp_dir) = create_test_browser_runner(); + + let proxy = ProxySettings { + enabled: true, + proxy_type: "http".to_string(), + host: "127.0.0.1".to_string(), + port: 8080, + }; + + let profile = runner.create_profile( + "Test Profile with Proxy", + "firefox", + "139.0", + Some(proxy.clone()) + ).unwrap(); + + assert_eq!(profile.name, "Test Profile with Proxy"); + assert!(profile.proxy.is_some()); + let profile_proxy = profile.proxy.unwrap(); + assert_eq!(profile_proxy.proxy_type, "http"); + assert_eq!(profile_proxy.host, "127.0.0.1"); + assert_eq!(profile_proxy.port, 8080); + } + + #[test] + fn test_save_and_load_profile() { + let (runner, _temp_dir) = create_test_browser_runner(); + + let profile = runner.create_profile( + "Test Save Load", + "firefox", + "139.0", + None + ).unwrap(); + + // Save the profile + runner.save_profile(&profile).unwrap(); + + // Load profiles and verify + let profiles = runner.list_profiles().unwrap(); + assert_eq!(profiles.len(), 1); + assert_eq!(profiles[0].name, "Test Save Load"); + assert_eq!(profiles[0].browser, "firefox"); + assert_eq!(profiles[0].version, "139.0"); + } + + #[test] + fn test_update_profile_proxy() { + let (runner, _temp_dir) = create_test_browser_runner(); + + // Create profile without proxy + let profile = runner.create_profile( + "Test Update Proxy", + "firefox", + "139.0", + None + ).unwrap(); + + assert!(profile.proxy.is_none()); + + // Update with proxy + let proxy = ProxySettings { + enabled: true, + proxy_type: "socks5".to_string(), + host: "192.168.1.1".to_string(), + port: 1080, + }; + + let updated_profile = runner.update_profile_proxy( + "Test Update Proxy", + Some(proxy.clone()) + ).unwrap(); + + assert!(updated_profile.proxy.is_some()); + let profile_proxy = updated_profile.proxy.unwrap(); + assert_eq!(profile_proxy.proxy_type, "socks5"); + assert_eq!(profile_proxy.host, "192.168.1.1"); + assert_eq!(profile_proxy.port, 1080); + } + + #[test] + fn test_rename_profile() { + let (runner, _temp_dir) = create_test_browser_runner(); + + // Create profile + let _profile = runner.create_profile( + "Original Name", + "firefox", + "139.0", + None + ).unwrap(); + + // Rename profile + let renamed_profile = runner.rename_profile( + "Original Name", + "New Name" + ).unwrap(); + + assert_eq!(renamed_profile.name, "New Name"); + + // Verify old profile is gone and new one exists + let profiles = runner.list_profiles().unwrap(); + assert_eq!(profiles.len(), 1); + assert_eq!(profiles[0].name, "New Name"); + } + + #[test] + fn test_delete_profile() { + let (runner, _temp_dir) = create_test_browser_runner(); + + // Create profile + let _profile = runner.create_profile( + "To Delete", + "firefox", + "139.0", + None + ).unwrap(); + + // Verify profile exists + let profiles = runner.list_profiles().unwrap(); + assert_eq!(profiles.len(), 1); + + // Delete profile + runner.delete_profile("To Delete").unwrap(); + + // Verify profile is gone + let profiles = runner.list_profiles().unwrap(); + assert_eq!(profiles.len(), 0); + } + + #[test] + fn test_profile_name_sanitization() { + let (runner, _temp_dir) = create_test_browser_runner(); + + // Create profile with spaces and special characters + let profile = runner.create_profile( + "Test Profile With Spaces", + "firefox", + "139.0", + None + ).unwrap(); + + // Profile path should use snake_case + assert!(profile.profile_path.contains("test_profile_with_spaces")); + } + + #[test] + fn test_multiple_profiles() { + let (runner, _temp_dir) = create_test_browser_runner(); + + // Create multiple profiles + let _profile1 = runner.create_profile("Profile 1", "firefox", "139.0", None).unwrap(); + let _profile2 = runner.create_profile("Profile 2", "chromium", "1465660", None).unwrap(); + let _profile3 = runner.create_profile("Profile 3", "brave", "v1.81.9", None).unwrap(); + + // List profiles + let profiles = runner.list_profiles().unwrap(); + assert_eq!(profiles.len(), 3); + + let profile_names: Vec<&str> = profiles.iter().map(|p| p.name.as_str()).collect(); + assert!(profile_names.contains(&"Profile 1")); + assert!(profile_names.contains(&"Profile 2")); + assert!(profile_names.contains(&"Profile 3")); + } + + #[test] + fn test_profile_validation() { + let (runner, _temp_dir) = create_test_browser_runner(); + + // Test that we can't rename to an existing profile name + let _profile1 = runner.create_profile("Profile 1", "firefox", "139.0", None).unwrap(); + let _profile2 = runner.create_profile("Profile 2", "firefox", "139.0", None).unwrap(); + + // Try to rename profile2 to profile1's name (should fail) + let result = runner.rename_profile("Profile 2", "Profile 1"); + assert!(result.is_err()); + assert!(result.unwrap_err().to_string().contains("already exists")); + } + + #[test] + fn test_error_handling() { + let (runner, _temp_dir) = create_test_browser_runner(); + + // Test updating non-existent profile + let result = runner.update_profile_proxy("Non Existent", None); + assert!(result.is_err()); + assert!(result.unwrap_err().to_string().contains("not found")); + + // Test deleting non-existent profile + let result = runner.delete_profile("Non Existent"); + assert!(result.is_ok()); // Delete should be idempotent + + // Test renaming non-existent profile + let result = runner.rename_profile("Non Existent", "New Name"); + assert!(result.is_err()); + } + + #[test] + fn test_firefox_default_browser_preferences() { + let (runner, _temp_dir) = create_test_browser_runner(); + + // Create profile without proxy + let profile = runner.create_profile( + "Test Firefox Prefs", + "firefox", + "139.0", + None + ).unwrap(); + + // Check that user.js file was created with default browser preference + let user_js_path = std::path::Path::new(&profile.profile_path).join("user.js"); + assert!(user_js_path.exists()); + + let user_js_content = std::fs::read_to_string(user_js_path).unwrap(); + assert!(user_js_content.contains("browser.shell.checkDefaultBrowser")); + assert!(user_js_content.contains("false")); + + // Verify automatic update disabling preferences are present + assert!(user_js_content.contains("app.update.enabled")); + assert!(user_js_content.contains("app.update.auto")); + + // Create profile with proxy + let proxy = ProxySettings { + enabled: true, + proxy_type: "http".to_string(), + host: "127.0.0.1".to_string(), + port: 8080, + }; + + let profile_with_proxy = runner.create_profile( + "Test Firefox Prefs Proxy", + "firefox", + "139.0", + Some(proxy) + ).unwrap(); + + // Check that user.js file contains both proxy settings and default browser preference + let user_js_path_proxy = std::path::Path::new(&profile_with_proxy.profile_path).join("user.js"); + assert!(user_js_path_proxy.exists()); + + let user_js_content_proxy = std::fs::read_to_string(user_js_path_proxy).unwrap(); + assert!(user_js_content_proxy.contains("browser.shell.checkDefaultBrowser")); + assert!(user_js_content_proxy.contains("network.proxy.type")); + + // Verify automatic update disabling preferences are present even with proxy + assert!(user_js_content_proxy.contains("app.update.enabled")); + assert!(user_js_content_proxy.contains("app.update.auto")); + } +} diff --git a/src-tauri/src/browser_version_service.rs b/src-tauri/src/browser_version_service.rs new file mode 100644 index 0000000..a765a27 --- /dev/null +++ b/src-tauri/src/browser_version_service.rs @@ -0,0 +1,669 @@ +use crate::api_client::{ApiClient, BrowserRelease, sort_versions}; +use crate::browser::GithubRelease; +use serde::{Deserialize, Serialize}; +use std::collections::HashSet; + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct BrowserVersionInfo { + pub version: String, + pub is_prerelease: bool, + pub date: String, +} + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct BrowserVersionsResult { + pub versions: Vec, + pub new_versions_count: Option, + pub total_versions_count: usize, +} + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct DownloadInfo { + pub url: String, + pub filename: String, + pub is_archive: bool, // true for .dmg, .zip, etc. +} + +pub struct BrowserVersionService { + api_client: ApiClient, +} + +impl BrowserVersionService { + pub fn new() -> Self { + Self { + api_client: ApiClient::new(), + } + } + + /// Get cached browser versions immediately (returns None if no cache exists) + pub fn get_cached_browser_versions(&self, browser: &str) -> Option> { + self.api_client.load_cached_versions(browser) + } + + /// Get cached detailed browser version information immediately + pub fn get_cached_browser_versions_detailed(&self, browser: &str) -> Option> { + let cached_versions = self.api_client.load_cached_versions(browser)?; + + // Convert cached versions to detailed info (without dates since cache doesn't store them) + let detailed_info: Vec = cached_versions.into_iter().map(|version| { + BrowserVersionInfo { + version: version.clone(), + is_prerelease: crate::api_client::is_alpha_version(&version), + date: "".to_string(), // Cache doesn't store dates + } + }).collect(); + + Some(detailed_info) + } + + /// Check if cache should be updated (expired or doesn't exist) + pub fn should_update_cache(&self, browser: &str) -> bool { + self.api_client.is_cache_expired(browser) + } + + /// Fetch browser versions with optional caching + pub async fn fetch_browser_versions( + &self, + browser: &str, + no_caching: bool, + ) -> Result, Box> { + let result = self.fetch_browser_versions_with_count(browser, no_caching).await?; + Ok(result.versions) + } + + /// Fetch browser versions with new count information and optional caching + pub async fn fetch_browser_versions_with_count( + &self, + browser: &str, + no_caching: bool, + ) -> Result> { + // Get existing cached versions to compare and merge + let existing_versions = self.api_client.load_cached_versions(browser).unwrap_or_default(); + let existing_set: HashSet = existing_versions.into_iter().collect(); + + // Fetch fresh versions from API + let fresh_versions = match browser { + "firefox" => self.fetch_firefox_versions(true).await?, // Always fetch fresh for merging + "firefox-developer" => self.fetch_firefox_developer_versions(true).await?, + "mullvad-browser" => self.fetch_mullvad_versions(true).await?, + "zen" => self.fetch_zen_versions(true).await?, + "brave" => self.fetch_brave_versions(true).await?, + "chromium" => self.fetch_chromium_versions(true).await?, + "tor-browser" => self.fetch_tor_versions(true).await?, + _ => return Err(format!("Unsupported browser: {}", browser).into()), + }; + + let fresh_set: HashSet = fresh_versions.into_iter().collect(); + + // Find new versions (in fresh but not in existing cache) + let new_versions: Vec = fresh_set.difference(&existing_set).cloned().collect(); + let new_versions_count = if existing_set.is_empty() { None } else { Some(new_versions.len()) }; + + // Merge existing and fresh versions + let mut merged_versions: Vec = existing_set.union(&fresh_set).cloned().collect(); + + // Sort versions using the existing sorting logic + crate::api_client::sort_versions(&mut merged_versions); + + // Save the merged cache (unless explicitly bypassing cache) + if !no_caching { + if let Err(e) = self.api_client.save_cached_versions(browser, &merged_versions) { + eprintln!("Failed to save merged cache for {}: {}", browser, e); + } + } + + let total_versions_count = merged_versions.len(); + + Ok(BrowserVersionsResult { + versions: merged_versions, + new_versions_count, + total_versions_count, + }) + } + + /// Fetch detailed browser version information with optional caching + pub async fn fetch_browser_versions_detailed( + &self, + browser: &str, + no_caching: bool, + ) -> Result, Box> { + // For detailed versions, we'll use the merged versions from fetch_browser_versions_with_count + // to ensure consistency with the version list + let versions_result = self.fetch_browser_versions_with_count(browser, no_caching).await?; + let merged_versions = versions_result.versions; + + // Convert the version strings to BrowserVersionInfo + // Since we don't have detailed date/prerelease info for cached versions, + // we'll fetch fresh detailed info and map it to our merged versions + let detailed_info: Vec = match browser { + "firefox" => { + let releases = self.fetch_firefox_releases_detailed(true).await?; + merged_versions.into_iter().map(|version| { + // Try to find matching release info, otherwise create basic info + if let Some(release) = releases.iter().find(|r| r.version == version) { + BrowserVersionInfo { + version: release.version.clone(), + is_prerelease: release.is_prerelease, + date: release.date.clone(), + } + } else { + BrowserVersionInfo { + version: version.clone(), + is_prerelease: crate::api_client::is_alpha_version(&version), + date: "".to_string(), + } + } + }).collect() + } + "firefox-developer" => { + let releases = self.fetch_firefox_developer_releases_detailed(true).await?; + merged_versions.into_iter().map(|version| { + if let Some(release) = releases.iter().find(|r| r.version == version) { + BrowserVersionInfo { + version: release.version.clone(), + is_prerelease: release.is_prerelease, + date: release.date.clone(), + } + } else { + BrowserVersionInfo { + version: version.clone(), + is_prerelease: crate::api_client::is_alpha_version(&version), + date: "".to_string(), + } + } + }).collect() + } + "mullvad-browser" => { + let releases = self.fetch_mullvad_releases_detailed(true).await?; + merged_versions.into_iter().map(|version| { + if let Some(release) = releases.iter().find(|r| r.tag_name == version) { + BrowserVersionInfo { + version: release.tag_name.clone(), + is_prerelease: release.is_alpha, + date: release.published_at.clone(), + } + } else { + BrowserVersionInfo { + version: version.clone(), + is_prerelease: false, // Mullvad usually stable releases + date: "".to_string(), + } + } + }).collect() + } + "zen" => { + let releases = self.fetch_zen_releases_detailed(true).await?; + merged_versions.into_iter().map(|version| { + if let Some(release) = releases.iter().find(|r| r.tag_name == version) { + BrowserVersionInfo { + version: release.tag_name.clone(), + is_prerelease: release.prerelease, + date: release.published_at.clone(), + } + } else { + BrowserVersionInfo { + version: version.clone(), + is_prerelease: version.contains("alpha") || version.contains("beta"), + date: "".to_string(), + } + } + }).collect() + } + "brave" => { + let releases = self.fetch_brave_releases_detailed(true).await?; + merged_versions.into_iter().map(|version| { + if let Some(release) = releases.iter().find(|r| r.tag_name == version) { + BrowserVersionInfo { + version: release.tag_name.clone(), + is_prerelease: release.prerelease, + date: release.published_at.clone(), + } + } else { + BrowserVersionInfo { + version: version.clone(), + is_prerelease: version.contains("beta") || version.contains("dev"), + date: "".to_string(), + } + } + }).collect() + } + "chromium" => { + let releases = self.fetch_chromium_releases_detailed(true).await?; + merged_versions.into_iter().map(|version| { + if let Some(release) = releases.iter().find(|r| r.version == version) { + BrowserVersionInfo { + version: release.version.clone(), + is_prerelease: release.is_prerelease, + date: release.date.clone(), + } + } else { + BrowserVersionInfo { + version: version.clone(), + is_prerelease: false, // Chromium versions are usually stable + date: "".to_string(), + } + } + }).collect() + } + "tor-browser" => { + let releases = self.fetch_tor_releases_detailed(true).await?; + merged_versions.into_iter().map(|version| { + if let Some(release) = releases.iter().find(|r| r.version == version) { + BrowserVersionInfo { + version: release.version.clone(), + is_prerelease: release.is_prerelease, + date: release.date.clone(), + } + } else { + BrowserVersionInfo { + version: version.clone(), + is_prerelease: version.contains("alpha") || version.contains("rc"), + date: "".to_string(), + } + } + }).collect() + } + _ => return Err(format!("Unsupported browser: {}", browser).into()), + }; + + Ok(detailed_info) + } + + /// Update browser versions incrementally (for background updates) + pub async fn update_browser_versions_incrementally( + &self, + browser: &str, + ) -> Result> { + // Get existing cached versions + let existing_versions = self.api_client.load_cached_versions(browser) + .unwrap_or_default(); + let existing_set: HashSet = existing_versions.into_iter().collect(); + + // Fetch new versions (always bypass cache for background updates) + let new_versions = self.fetch_browser_versions(browser, true).await?; + let new_set: HashSet = new_versions.into_iter().collect(); + + // Find truly new versions (not in existing cache) + let really_new_versions: Vec = new_set.difference(&existing_set).cloned().collect(); + let new_versions_count = really_new_versions.len(); + + // Merge existing and new versions + let mut all_versions: Vec = existing_set.union(&new_set).cloned().collect(); + + // Sort versions using the existing sorting logic + sort_versions(&mut all_versions); + + // Save the updated cache + if let Err(e) = self.api_client.save_cached_versions(browser, &all_versions) { + eprintln!("Failed to save updated cache for {}: {}", browser, e); + } + + Ok(new_versions_count) + } + + /// Get download information for a specific browser and version + pub fn get_download_info(&self, browser: &str, version: &str) -> Result> { + match browser { + "firefox" => Ok(DownloadInfo { + url: format!("https://download.mozilla.org/?product=firefox-{}&os=osx&lang=en-US", version), + filename: format!("firefox-{}.dmg", version), + is_archive: true, + }), + "firefox-developer" => Ok(DownloadInfo { + url: format!("https://download.mozilla.org/?product=devedition-{}&os=osx&lang=en-US", version), + filename: format!("firefox-developer-{}.dmg", version), + is_archive: true, + }), + "mullvad-browser" => Ok(DownloadInfo { + url: format!( + "https://github.com/mullvad/mullvad-browser/releases/download/{}/mullvad-browser-macos-{}.dmg", + version, version + ), + filename: format!("mullvad-browser-{}.dmg", version), + is_archive: true, + }), + "zen" => Ok(DownloadInfo { + url: format!( + "https://github.com/zen-browser/desktop/releases/download/{}/zen.macos-universal.dmg", + version + ), + filename: format!("zen-{}.dmg", version), + is_archive: true, + }), + "brave" => { + // For Brave, we use a placeholder URL since we need to resolve the actual asset URL dynamically + // The actual URL will be resolved in the download service using the GitHub API + Ok(DownloadInfo { + url: format!( + "https://github.com/brave/brave-browser/releases/download/{}/Brave-Browser-universal.dmg", + version + ), + filename: format!("brave-{}.dmg", version), + is_archive: true, + }) + } + "chromium" => { + let arch = if cfg!(target_arch = "aarch64") { "Mac_Arm" } else { "Mac" }; + Ok(DownloadInfo { + url: format!( + "https://commondatastorage.googleapis.com/chromium-browser-snapshots/{}/{}/chrome-mac.zip", + arch, version + ), + filename: format!("chromium-{}.zip", version), + is_archive: true, + }) + } + "tor-browser" => Ok(DownloadInfo { + url: format!( + "https://archive.torproject.org/tor-package-archive/torbrowser/{}/tor-browser-macos-{}.dmg", + version, version + ), + filename: format!("tor-browser-{}.dmg", version), + is_archive: true, + }), + _ => Err(format!("Unsupported browser: {}", browser).into()), + } + } + + // Private helper methods for each browser type + + async fn fetch_firefox_versions(&self, no_caching: bool) -> Result, Box> { + let releases = self.fetch_firefox_releases_detailed(no_caching).await?; + Ok(releases.into_iter().map(|r| r.version).collect()) + } + + async fn fetch_firefox_releases_detailed(&self, no_caching: bool) -> Result, Box> { + self.api_client.fetch_firefox_releases_with_caching(no_caching).await + } + + async fn fetch_firefox_developer_versions(&self, no_caching: bool) -> Result, Box> { + let releases = self.fetch_firefox_developer_releases_detailed(no_caching).await?; + Ok(releases.into_iter().map(|r| r.version).collect()) + } + + async fn fetch_firefox_developer_releases_detailed(&self, no_caching: bool) -> Result, Box> { + self.api_client.fetch_firefox_developer_releases_with_caching(no_caching).await + } + + async fn fetch_mullvad_versions(&self, no_caching: bool) -> Result, Box> { + let releases = self.fetch_mullvad_releases_detailed(no_caching).await?; + Ok(releases.into_iter().map(|r| r.tag_name).collect()) + } + + async fn fetch_mullvad_releases_detailed(&self, no_caching: bool) -> Result, Box> { + self.api_client.fetch_mullvad_releases_with_caching(no_caching).await + } + + async fn fetch_zen_versions(&self, no_caching: bool) -> Result, Box> { + let releases = self.fetch_zen_releases_detailed(no_caching).await?; + Ok(releases.into_iter().map(|r| r.tag_name).collect()) + } + + async fn fetch_zen_releases_detailed(&self, no_caching: bool) -> Result, Box> { + self.api_client.fetch_zen_releases_with_caching(no_caching).await + } + + async fn fetch_brave_versions(&self, no_caching: bool) -> Result, Box> { + let releases = self.fetch_brave_releases_detailed(no_caching).await?; + Ok(releases.into_iter().map(|r| r.tag_name).collect()) + } + + async fn fetch_brave_releases_detailed(&self, no_caching: bool) -> Result, Box> { + self.api_client.fetch_brave_releases_with_caching(no_caching).await + } + + async fn fetch_chromium_versions(&self, no_caching: bool) -> Result, Box> { + let releases = self.fetch_chromium_releases_detailed(no_caching).await?; + Ok(releases.into_iter().map(|r| r.version).collect()) + } + + async fn fetch_chromium_releases_detailed(&self, no_caching: bool) -> Result, Box> { + self.api_client.fetch_chromium_releases_with_caching(no_caching).await + } + + async fn fetch_tor_versions(&self, no_caching: bool) -> Result, Box> { + let releases = self.fetch_tor_releases_detailed(no_caching).await?; + Ok(releases.into_iter().map(|r| r.version).collect()) + } + + async fn fetch_tor_releases_detailed(&self, no_caching: bool) -> Result, Box> { + self.api_client.fetch_tor_releases_with_caching(no_caching).await + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[tokio::test] + async fn test_browser_version_service_creation() { + let _service = BrowserVersionService::new(); + // Test passes if we can create the service without panicking + assert!(true); + } + + #[tokio::test] + async fn test_fetch_firefox_versions() { + let service = BrowserVersionService::new(); + + // Test with caching + let result_cached = service.fetch_browser_versions("firefox", false).await; + assert!(result_cached.is_ok(), "Should fetch Firefox versions with caching"); + + if let Ok(versions) = result_cached { + assert!(!versions.is_empty(), "Should have Firefox versions"); + println!("Firefox cached test passed. Found {} versions", versions.len()); + } + + // Small delay to avoid rate limiting + tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; + + // Test without caching + let result_no_cache = service.fetch_browser_versions("firefox", true).await; + assert!(result_no_cache.is_ok(), "Should fetch Firefox versions without caching"); + + if let Ok(versions) = result_no_cache { + assert!(!versions.is_empty(), "Should have Firefox versions without caching"); + println!("Firefox no-cache test passed. Found {} versions", versions.len()); + } + } + + #[tokio::test] + async fn test_fetch_browser_versions_with_count() { + let service = BrowserVersionService::new(); + + let result = service.fetch_browser_versions_with_count("firefox", false).await; + assert!(result.is_ok(), "Should fetch Firefox versions with count"); + + if let Ok(result) = result { + assert!(!result.versions.is_empty(), "Should have versions"); + assert_eq!(result.total_versions_count, result.versions.len(), "Total count should match versions length"); + println!("Firefox count test passed. Found {} versions, new: {:?}", + result.total_versions_count, result.new_versions_count); + } + } + + #[tokio::test] + async fn test_fetch_detailed_versions() { + let service = BrowserVersionService::new(); + + let result = service.fetch_browser_versions_detailed("firefox", false).await; + assert!(result.is_ok(), "Should fetch detailed Firefox versions"); + + if let Ok(versions) = result { + assert!(!versions.is_empty(), "Should have detailed versions"); + + // Check that the first version has all required fields + let first_version = &versions[0]; + assert!(!first_version.version.is_empty(), "Version should not be empty"); + println!("Firefox detailed test passed. Found {} detailed versions", versions.len()); + } + } + + #[tokio::test] + async fn test_unsupported_browser() { + let service = BrowserVersionService::new(); + + let result = service.fetch_browser_versions("unsupported", false).await; + assert!(result.is_err(), "Should return error for unsupported browser"); + + if let Err(e) = result { + assert!(e.to_string().contains("Unsupported browser"), "Error should mention unsupported browser"); + } + } + + #[tokio::test] + async fn test_incremental_update() { + let service = BrowserVersionService::new(); + + // This test might fail if there are no cached versions yet, which is fine + let result = service.update_browser_versions_incrementally("firefox").await; + + // The test should complete without panicking + match result { + Ok(count) => { + println!("Incremental update test passed. Found {} new versions", count); + } + Err(e) => { + println!("Incremental update test failed (expected for first run): {}", e); + // Don't fail the test, as this is expected behavior for first run + } + } + } + + #[tokio::test] + async fn test_all_supported_browsers() { + let service = BrowserVersionService::new(); + let browsers = vec![ + "firefox", "firefox-developer", "mullvad-browser", + "zen", "brave", "chromium", "tor-browser" + ]; + + for browser in browsers { + // Test that we can at least call the function without panicking + let result = service.fetch_browser_versions(browser, false).await; + + match result { + Ok(versions) => { + println!("{} test passed. Found {} versions", browser, versions.len()); + } + Err(e) => { + // Some browsers might fail due to network issues, but shouldn't panic + println!("{} test failed (network issue): {}", browser, e); + } + } + + // Small delay between requests to avoid rate limiting + tokio::time::sleep(tokio::time::Duration::from_millis(200)).await; + } + } + + #[tokio::test] + async fn test_no_caching_parameter() { + let service = BrowserVersionService::new(); + + // Test with caching enabled (default) + let result_cached = service.fetch_browser_versions("firefox", false).await; + assert!(result_cached.is_ok(), "Should fetch Firefox versions with caching"); + + // Small delay to avoid rate limiting + tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; + + // Test with caching disabled (no_caching = true) + let result_no_cache = service.fetch_browser_versions("firefox", true).await; + assert!(result_no_cache.is_ok(), "Should fetch Firefox versions without caching"); + + // Both should return versions + if let (Ok(cached_versions), Ok(no_cache_versions)) = (result_cached, result_no_cache) { + assert!(!cached_versions.is_empty(), "Cached versions should not be empty"); + assert!(!no_cache_versions.is_empty(), "No-cache versions should not be empty"); + println!("No-caching test passed. Cached: {} versions, No-cache: {} versions", + cached_versions.len(), no_cache_versions.len()); + } + } + + #[tokio::test] + async fn test_detailed_versions_with_no_caching() { + let service = BrowserVersionService::new(); + + // Test detailed versions with caching + let result_cached = service.fetch_browser_versions_detailed("firefox", false).await; + assert!(result_cached.is_ok(), "Should fetch detailed Firefox versions with caching"); + + // Small delay to avoid rate limiting + tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; + + // Test detailed versions without caching + let result_no_cache = service.fetch_browser_versions_detailed("firefox", true).await; + assert!(result_no_cache.is_ok(), "Should fetch detailed Firefox versions without caching"); + + // Both should return detailed version info + if let (Ok(cached_versions), Ok(no_cache_versions)) = (result_cached, result_no_cache) { + assert!(!cached_versions.is_empty(), "Cached detailed versions should not be empty"); + assert!(!no_cache_versions.is_empty(), "No-cache detailed versions should not be empty"); + + // Check that detailed versions have all required fields + let first_cached = &cached_versions[0]; + let first_no_cache = &no_cache_versions[0]; + + assert!(!first_cached.version.is_empty(), "Cached version should not be empty"); + assert!(!first_no_cache.version.is_empty(), "No-cache version should not be empty"); + + println!("Detailed no-caching test passed. Cached: {} versions, No-cache: {} versions", + cached_versions.len(), no_cache_versions.len()); + } + } + + #[test] + fn test_get_download_info() { + let service = BrowserVersionService::new(); + + // Test Firefox + let firefox_info = service.get_download_info("firefox", "139.0").unwrap(); + assert_eq!(firefox_info.filename, "firefox-139.0.dmg"); + assert!(firefox_info.url.contains("firefox-139.0")); + assert!(firefox_info.is_archive); + + // Test Firefox Developer + let firefox_dev_info = service.get_download_info("firefox-developer", "139.0b1").unwrap(); + assert_eq!(firefox_dev_info.filename, "firefox-developer-139.0b1.dmg"); + assert!(firefox_dev_info.url.contains("devedition-139.0b1")); + assert!(firefox_dev_info.is_archive); + + // Test Mullvad Browser + let mullvad_info = service.get_download_info("mullvad-browser", "14.5a6").unwrap(); + assert_eq!(mullvad_info.filename, "mullvad-browser-14.5a6.dmg"); + assert!(mullvad_info.url.contains("mullvad-browser-macos-14.5a6")); + assert!(mullvad_info.is_archive); + + // Test Zen Browser + let zen_info = service.get_download_info("zen", "1.11b").unwrap(); + assert_eq!(zen_info.filename, "zen-1.11b.dmg"); + assert!(zen_info.url.contains("zen.macos-universal.dmg")); + assert!(zen_info.is_archive); + + // Test Tor Browser + let tor_info = service.get_download_info("tor-browser", "14.0.4").unwrap(); + assert_eq!(tor_info.filename, "tor-browser-14.0.4.dmg"); + assert!(tor_info.url.contains("tor-browser-macos-14.0.4")); + assert!(tor_info.is_archive); + + // Test Chromium + let chromium_info = service.get_download_info("chromium", "1465660").unwrap(); + assert_eq!(chromium_info.filename, "chromium-1465660.zip"); + assert!(chromium_info.url.contains("chrome-mac.zip")); + assert!(chromium_info.is_archive); + + // Test Brave + let brave_info = service.get_download_info("brave", "v1.81.9").unwrap(); + assert_eq!(brave_info.filename, "brave-v1.81.9.dmg"); + assert!(brave_info.url.contains("Brave-Browser")); + assert!(brave_info.is_archive); + + // Test unsupported browser + let unsupported_result = service.get_download_info("unsupported", "1.0.0"); + assert!(unsupported_result.is_err()); + + println!("Download info test passed for all browsers"); + } +} \ No newline at end of file diff --git a/src-tauri/src/default_browser.rs b/src-tauri/src/default_browser.rs new file mode 100644 index 0000000..ab46787 --- /dev/null +++ b/src-tauri/src/default_browser.rs @@ -0,0 +1,169 @@ +use tauri::command; + +#[cfg(target_os = "macos")] +mod macos { + use core_foundation::base::OSStatus; + use core_foundation::string::CFStringRef; + use core_foundation::{ + base::TCFType, + string::CFString, + }; + + #[link(name = "CoreServices", kind = "framework")] + extern "C" { + fn LSSetDefaultHandlerForURLScheme(scheme: CFStringRef, bundle_id: CFStringRef) -> OSStatus; + fn LSCopyDefaultHandlerForURLScheme(scheme: CFStringRef) -> CFStringRef; + } + + pub fn is_default_browser() -> Result { + let schemes = ["http", "https"]; + let bundle_id = "com.donutbrowser"; + + for scheme in schemes { + let scheme_str = CFString::new(scheme); + unsafe { + let current_handler = LSCopyDefaultHandlerForURLScheme(scheme_str.as_concrete_TypeRef()); + if current_handler.is_null() { + return Ok(false); + } + + let current_handler_cf = CFString::wrap_under_create_rule(current_handler); + let current_handler_str = current_handler_cf.to_string(); + + if current_handler_str != bundle_id { + return Ok(false); + } + } + } + Ok(true) + } + + pub fn set_as_default_browser() -> Result<(), String> { + let bundle_id = CFString::new("com.donutbrowser"); + let schemes = ["http", "https"]; + + for scheme in schemes { + let scheme_str = CFString::new(scheme); + unsafe { + let status = LSSetDefaultHandlerForURLScheme( + scheme_str.as_concrete_TypeRef(), + bundle_id.as_concrete_TypeRef(), + ); + if status != 0 { + let error_msg = match status { + -54 => format!( + "Failed to set as default browser for scheme '{}'. The app is not properly registered as a browser. Please:\n1. Build and install the app properly\n2. Manually set Donut Browser as default in System Settings > General > Default web browser\n3. Make sure the app is in your Applications folder", + scheme + ), + _ => format!( + "Failed to set as default browser for scheme '{}'. Status code: {}. Please manually set Donut Browser as default in System Settings > General > Default web browser.", + scheme, status + ) + }; + return Err(error_msg); + } + } + } + Ok(()) + } +} + +#[cfg(target_os = "windows")] +mod windows { + pub fn is_default_browser() -> Result { + // Windows implementation would go here + Err("Windows support not implemented yet".to_string()) + } + + pub fn set_as_default_browser() -> Result<(), String> { + Err("Windows support not implemented yet".to_string()) + } +} + +#[cfg(target_os = "linux")] +mod linux { + pub fn is_default_browser() -> Result { + // Linux implementation would go here + Err("Linux support not implemented yet".to_string()) + } + + pub fn set_as_default_browser() -> Result<(), String> { + Err("Linux support not implemented yet".to_string()) + } +} + +#[command] +pub async fn is_default_browser() -> Result { + #[cfg(target_os = "macos")] + return macos::is_default_browser(); + + #[cfg(target_os = "windows")] + return windows::is_default_browser(); + + #[cfg(target_os = "linux")] + return linux::is_default_browser(); + + #[cfg(not(any(target_os = "macos", target_os = "windows", target_os = "linux")))] + Err("Unsupported platform".to_string()) +} + +#[command] +pub async fn set_as_default_browser() -> Result<(), String> { + #[cfg(target_os = "macos")] + return macos::set_as_default_browser(); + + #[cfg(target_os = "windows")] + return windows::set_as_default_browser(); + + #[cfg(target_os = "linux")] + return linux::set_as_default_browser(); + + #[cfg(not(any(target_os = "macos", target_os = "windows", target_os = "linux")))] + Err("Unsupported platform".to_string()) +} + +#[tauri::command] +pub async fn open_url_with_profile(app_handle: tauri::AppHandle, profile_name: String, url: String) -> Result<(), String> { + use crate::browser_runner::BrowserRunner; + + let runner = BrowserRunner::new(); + + // Get the profile by name + let profiles = runner.list_profiles().map_err(|e| format!("Failed to list profiles: {}", e))?; + let profile = profiles.into_iter() + .find(|p| p.name == profile_name) + .ok_or_else(|| format!("Profile '{}' not found", profile_name))?; + + println!("Opening URL '{}' with profile '{}'", url, profile_name); + + // Use launch_or_open_url which handles both launching new instances and opening in existing ones + runner + .launch_or_open_url(app_handle, &profile, Some(url.clone())) + .await + .map_err(|e| { + println!("Failed to open URL with profile '{}': {}", profile_name, e); + format!("Failed to open URL with profile: {}", e) + })?; + + println!("Successfully opened URL '{}' with profile '{}'", url, profile_name); + Ok(()) +} + +#[tauri::command] +pub async fn smart_open_url(_app_handle: tauri::AppHandle, _url: String, _is_startup: Option) -> Result { + use crate::browser_runner::BrowserRunner; + + let runner = BrowserRunner::new(); + + // Get all profiles + let profiles = runner.list_profiles().map_err(|e| format!("Failed to list profiles: {}", e))?; + + if profiles.is_empty() { + return Err("no_profiles".to_string()); + } + + println!("URL opening - Total profiles: {}, showing profile selector", profiles.len()); + + // Always show the profile selector so the user can choose + Err("show_selector".to_string()) +} diff --git a/src-tauri/src/download.rs b/src-tauri/src/download.rs new file mode 100644 index 0000000..9515dfb --- /dev/null +++ b/src-tauri/src/download.rs @@ -0,0 +1,368 @@ +use reqwest::Client; +use serde::{Deserialize, Serialize}; +use std::fs::File; +use std::io; +use std::path::{Path, PathBuf}; +use tauri::Emitter; + +use crate::api_client::ApiClient; +use crate::browser::BrowserType; +use crate::browser_version_service::DownloadInfo; + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct DownloadProgress { + pub browser: String, + pub version: String, + pub downloaded_bytes: u64, + pub total_bytes: Option, + pub percentage: f64, + pub speed_bytes_per_sec: f64, + pub eta_seconds: Option, + pub stage: String, // "downloading", "extracting", "verifying" +} + +pub struct Downloader { + client: Client, + api_client: ApiClient, +} + +impl Downloader { + pub fn new() -> Self { + Self { + client: Client::new(), + api_client: ApiClient::new(), + } + } + + /// Resolve the actual download URL for browsers that need dynamic asset resolution + pub async fn resolve_download_url( + &self, + browser_type: BrowserType, + version: &str, + download_info: &DownloadInfo, + ) -> Result> { + match browser_type { + BrowserType::Brave => { + // For Brave, we need to find the actual macOS asset + let releases = self.api_client.fetch_brave_releases().await?; + + // Find the release with the matching version + let release = releases + .iter() + .find(|r| r.tag_name == version || r.tag_name == format!("v{}", version.trim_start_matches('v'))) + .ok_or(format!("Brave version {} not found", version))?; + + // Find the universal macOS DMG asset + let asset = release + .assets + .iter() + .find(|asset| { + asset.name.contains(".dmg") && asset.name.contains("universal") + }) + .ok_or(format!("No universal macOS DMG asset found for Brave version {}", version))?; + + Ok(asset.browser_download_url.clone()) + } + BrowserType::Zen => { + // For Zen, verify the asset exists + let releases = self.api_client.fetch_zen_releases().await?; + + let release = releases + .iter() + .find(|r| r.tag_name == version) + .ok_or(format!("Zen version {} not found", version))?; + + // Find the macOS universal DMG asset + let asset = release + .assets + .iter() + .find(|asset| asset.name == "zen.macos-universal.dmg") + .ok_or(format!("No macOS universal asset found for Zen version {}", version))?; + + Ok(asset.browser_download_url.clone()) + } + BrowserType::MullvadBrowser => { + // For Mullvad, verify the asset exists + let releases = self.api_client.fetch_mullvad_releases().await?; + + let release = releases + .iter() + .find(|r| r.tag_name == version) + .ok_or(format!("Mullvad version {} not found", version))?; + + // Find the macOS DMG asset + let asset = release + .assets + .iter() + .find(|asset| { + asset.name.contains(".dmg") && asset.name.contains("mac") + }) + .ok_or(format!("No macOS asset found for Mullvad version {}", version))?; + + Ok(asset.browser_download_url.clone()) + } + _ => { + // For other browsers, use the provided URL + Ok(download_info.url.clone()) + } + } + } + + pub async fn download_browser( + &self, + app_handle: &tauri::AppHandle, + browser_type: BrowserType, + version: &str, + download_info: &DownloadInfo, + dest_path: &Path, + ) -> Result> { + let file_path = dest_path.join(&download_info.filename); + + // Resolve the actual download URL + let download_url = self.resolve_download_url(browser_type.clone(), version, download_info).await?; + + // Emit initial progress + let progress = DownloadProgress { + browser: browser_type.as_str().to_string(), + version: version.to_string(), + downloaded_bytes: 0, + total_bytes: None, + percentage: 0.0, + speed_bytes_per_sec: 0.0, + eta_seconds: None, + stage: "downloading".to_string(), + }; + + let _ = app_handle.emit("download-progress", &progress); + + // Start download + let response = self + .client + .get(&download_url) + .header("User-Agent", "donutbrowser") + .send() + .await?; + + let total_size = response.content_length(); + let mut downloaded = 0u64; + let start_time = std::time::Instant::now(); + let mut last_update = start_time; + + let mut file = File::create(&file_path)?; + let mut stream = response.bytes_stream(); + + use futures_util::StreamExt; + while let Some(chunk) = stream.next().await { + let chunk = chunk?; + io::copy(&mut chunk.as_ref(), &mut file)?; + downloaded += chunk.len() as u64; + + let now = std::time::Instant::now(); + // Update progress every 100ms to avoid too many events + if now.duration_since(last_update).as_millis() >= 100 { + let elapsed = start_time.elapsed().as_secs_f64(); + let speed = if elapsed > 0.0 { downloaded as f64 / elapsed } else { 0.0 }; + let percentage = if let Some(total) = total_size { + (downloaded as f64 / total as f64) * 100.0 + } else { + 0.0 + }; + let eta = if speed > 0.0 && total_size.is_some() { + Some((total_size.unwrap() - downloaded) as f64 / speed) + } else { + None + }; + + let progress = DownloadProgress { + browser: browser_type.as_str().to_string(), + version: version.to_string(), + downloaded_bytes: downloaded, + total_bytes: total_size, + percentage, + speed_bytes_per_sec: speed, + eta_seconds: eta, + stage: "downloading".to_string(), + }; + + let _ = app_handle.emit("download-progress", &progress); + last_update = now; + } + } + + Ok(file_path) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use tokio; + + #[tokio::test] + async fn test_resolve_brave_download_url() { + let downloader = Downloader::new(); + + // Test with a known Brave version + let download_info = DownloadInfo { + url: "placeholder".to_string(), + filename: "brave-test.dmg".to_string(), + is_archive: true, + }; + + let result = downloader.resolve_download_url( + BrowserType::Brave, + "v1.81.9", + &download_info + ).await; + + match result { + Ok(url) => { + assert!(url.contains("github.com/brave/brave-browser")); + assert!(url.contains(".dmg")); + assert!(url.contains("universal")); + println!("Brave download URL resolved: {}", url); + } + Err(e) => { + println!("Brave URL resolution failed (expected if version doesn't exist): {}", e); + // This might fail if the version doesn't exist, which is okay for testing + } + } + } + + #[tokio::test] + async fn test_resolve_zen_download_url() { + let downloader = Downloader::new(); + + let download_info = DownloadInfo { + url: "placeholder".to_string(), + filename: "zen-test.dmg".to_string(), + is_archive: true, + }; + + let result = downloader.resolve_download_url( + BrowserType::Zen, + "1.11b", + &download_info + ).await; + + match result { + Ok(url) => { + assert!(url.contains("github.com/zen-browser/desktop")); + assert!(url.contains("zen.macos-universal.dmg")); + println!("Zen download URL resolved: {}", url); + } + Err(e) => { + println!("Zen URL resolution failed (expected if version doesn't exist): {}", e); + } + } + } + + #[tokio::test] + async fn test_resolve_mullvad_download_url() { + let downloader = Downloader::new(); + + let download_info = DownloadInfo { + url: "placeholder".to_string(), + filename: "mullvad-test.dmg".to_string(), + is_archive: true, + }; + + let result = downloader.resolve_download_url( + BrowserType::MullvadBrowser, + "14.5a6", + &download_info + ).await; + + match result { + Ok(url) => { + assert!(url.contains("github.com/mullvad/mullvad-browser")); + assert!(url.contains(".dmg")); + println!("Mullvad download URL resolved: {}", url); + } + Err(e) => { + println!("Mullvad URL resolution failed (expected if version doesn't exist): {}", e); + } + } + } + + #[tokio::test] + async fn test_resolve_firefox_download_url() { + let downloader = Downloader::new(); + + let download_info = DownloadInfo { + url: "https://download.mozilla.org/?product=firefox-139.0&os=osx&lang=en-US".to_string(), + filename: "firefox-test.dmg".to_string(), + is_archive: true, + }; + + let result = downloader.resolve_download_url( + BrowserType::Firefox, + "139.0", + &download_info + ).await; + + match result { + Ok(url) => { + assert_eq!(url, download_info.url); + println!("Firefox download URL (passthrough): {}", url); + } + Err(e) => { + panic!("Firefox URL resolution should not fail: {}", e); + } + } + } + + #[tokio::test] + async fn test_resolve_chromium_download_url() { + let downloader = Downloader::new(); + + let download_info = DownloadInfo { + url: "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac/1465660/chrome-mac.zip".to_string(), + filename: "chromium-test.zip".to_string(), + is_archive: true, + }; + + let result = downloader.resolve_download_url( + BrowserType::Chromium, + "1465660", + &download_info + ).await; + + match result { + Ok(url) => { + assert_eq!(url, download_info.url); + println!("Chromium download URL (passthrough): {}", url); + } + Err(e) => { + panic!("Chromium URL resolution should not fail: {}", e); + } + } + } + + #[tokio::test] + async fn test_resolve_tor_download_url() { + let downloader = Downloader::new(); + + let download_info = DownloadInfo { + url: "https://archive.torproject.org/tor-package-archive/torbrowser/14.0.4/tor-browser-macos-14.0.4.dmg".to_string(), + filename: "tor-test.dmg".to_string(), + is_archive: true, + }; + + let result = downloader.resolve_download_url( + BrowserType::TorBrowser, + "14.0.4", + &download_info + ).await; + + match result { + Ok(url) => { + assert_eq!(url, download_info.url); + println!("TOR download URL (passthrough): {}", url); + } + Err(e) => { + panic!("TOR URL resolution should not fail: {}", e); + } + } + } +} \ No newline at end of file diff --git a/src-tauri/src/downloaded_browsers.rs b/src-tauri/src/downloaded_browsers.rs new file mode 100644 index 0000000..21fb855 --- /dev/null +++ b/src-tauri/src/downloaded_browsers.rs @@ -0,0 +1,258 @@ +use serde::{Deserialize, Serialize}; +use std::collections::HashMap; +use std::fs; +use std::path::PathBuf; +use directories::BaseDirs; + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct DownloadedBrowserInfo { + pub browser: String, + pub version: String, + pub download_date: u64, + pub file_path: PathBuf, + pub verified: bool, + pub actual_version: Option, // For browsers like Chromium where we track the actual version +} + +#[derive(Debug, Serialize, Deserialize, Default)] +pub struct DownloadedBrowsersRegistry { + pub browsers: HashMap>, // browser -> version -> info +} + +impl DownloadedBrowsersRegistry { + pub fn new() -> Self { + Self::default() + } + + pub fn load() -> Result> { + let registry_path = Self::get_registry_path()?; + + if !registry_path.exists() { + return Ok(Self::new()); + } + + let content = fs::read_to_string(®istry_path)?; + let registry: DownloadedBrowsersRegistry = serde_json::from_str(&content)?; + Ok(registry) + } + + pub fn save(&self) -> Result<(), Box> { + let registry_path = Self::get_registry_path()?; + + // Ensure parent directory exists + if let Some(parent) = registry_path.parent() { + fs::create_dir_all(parent)?; + } + + let content = serde_json::to_string_pretty(self)?; + fs::write(®istry_path, content)?; + Ok(()) + } + + fn get_registry_path() -> Result> { + let base_dirs = BaseDirs::new().ok_or("Failed to get base directories")?; + let mut path = base_dirs.data_local_dir().to_path_buf(); + path.push(if cfg!(debug_assertions) { "DonutBrowserDev" } else { "DonutBrowser" }); + path.push("data"); + path.push("downloaded_browsers.json"); + Ok(path) + } + + pub fn add_browser(&mut self, info: DownloadedBrowserInfo) { + self.browsers + .entry(info.browser.clone()) + .or_insert_with(HashMap::new) + .insert(info.version.clone(), info); + } + + pub fn remove_browser(&mut self, browser: &str, version: &str) -> Option { + self.browsers + .get_mut(browser)? + .remove(version) + } + + pub fn is_browser_downloaded(&self, browser: &str, version: &str) -> bool { + self.browsers + .get(browser) + .and_then(|versions| versions.get(version)) + .map(|info| info.verified) + .unwrap_or(false) + } + + pub fn get_downloaded_versions(&self, browser: &str) -> Vec { + self.browsers + .get(browser) + .map(|versions| { + versions + .iter() + .filter(|(_, info)| info.verified) + .map(|(version, _)| version.clone()) + .collect() + }) + .unwrap_or_default() + } + + pub fn mark_download_started(&mut self, browser: &str, version: &str, file_path: PathBuf) { + let info = DownloadedBrowserInfo { + browser: browser.to_string(), + version: version.to_string(), + download_date: std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap_or_default() + .as_secs(), + file_path, + verified: false, + actual_version: None, + }; + self.add_browser(info); + } + + pub fn mark_download_completed_with_actual_version(&mut self, browser: &str, version: &str, actual_version: Option) -> Result<(), String> { + if let Some(info) = self.browsers + .get_mut(browser) + .and_then(|versions| versions.get_mut(version)) + { + info.verified = true; + info.actual_version = actual_version; + Ok(()) + } else { + Err(format!("Browser {}:{} not found in registry", browser, version)) + } + } + + pub fn cleanup_failed_download(&mut self, browser: &str, version: &str) -> Result<(), Box> { + if let Some(info) = self.remove_browser(browser, version) { + // Clean up any files that might have been left behind + if info.file_path.exists() { + if info.file_path.is_dir() { + fs::remove_dir_all(&info.file_path)?; + } else { + fs::remove_file(&info.file_path)?; + } + } + + // Also clean up the browser directory if it exists + let base_dirs = BaseDirs::new().ok_or("Failed to get base directories")?; + let mut browser_dir = base_dirs.data_local_dir().to_path_buf(); + browser_dir.push(if cfg!(debug_assertions) { "DonutBrowserDev" } else { "DonutBrowser" }); + browser_dir.push("binaries"); + browser_dir.push(browser); + browser_dir.push(version); + + if browser_dir.exists() { + fs::remove_dir_all(&browser_dir)?; + } + } + Ok(()) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + + #[test] + fn test_registry_creation() { + let registry = DownloadedBrowsersRegistry::new(); + assert!(registry.browsers.is_empty()); + } + + #[test] + fn test_add_and_get_browser() { + let mut registry = DownloadedBrowsersRegistry::new(); + let info = DownloadedBrowserInfo { + browser: "firefox".to_string(), + version: "139.0".to_string(), + download_date: 1234567890, + file_path: PathBuf::from("/test/path"), + verified: true, + actual_version: None, + }; + + registry.add_browser(info.clone()); + + assert!(registry.is_browser_downloaded("firefox", "139.0")); + assert!(!registry.is_browser_downloaded("firefox", "140.0")); + assert!(!registry.is_browser_downloaded("chrome", "139.0")); + } + + #[test] + fn test_get_downloaded_versions() { + let mut registry = DownloadedBrowsersRegistry::new(); + + let info1 = DownloadedBrowserInfo { + browser: "firefox".to_string(), + version: "139.0".to_string(), + download_date: 1234567890, + file_path: PathBuf::from("/test/path1"), + verified: true, + actual_version: None, + }; + + let info2 = DownloadedBrowserInfo { + browser: "firefox".to_string(), + version: "140.0".to_string(), + download_date: 1234567891, + file_path: PathBuf::from("/test/path2"), + verified: false, // Not verified, should not be included + actual_version: None, + }; + + let info3 = DownloadedBrowserInfo { + browser: "firefox".to_string(), + version: "141.0".to_string(), + download_date: 1234567892, + file_path: PathBuf::from("/test/path3"), + verified: true, + actual_version: None, + }; + + registry.add_browser(info1); + registry.add_browser(info2); + registry.add_browser(info3); + + let versions = registry.get_downloaded_versions("firefox"); + assert_eq!(versions.len(), 2); + assert!(versions.contains(&"139.0".to_string())); + assert!(versions.contains(&"141.0".to_string())); + assert!(!versions.contains(&"140.0".to_string())); + } + + #[test] + fn test_mark_download_lifecycle() { + let mut registry = DownloadedBrowsersRegistry::new(); + + // Mark download started + registry.mark_download_started("firefox", "139.0", PathBuf::from("/test/path")); + + // Should not be considered downloaded yet + assert!(!registry.is_browser_downloaded("firefox", "139.0")); + + // Mark as completed + registry.mark_download_completed_with_actual_version("firefox", "139.0", Some("139.0".to_string())).unwrap(); + + // Now should be considered downloaded + assert!(registry.is_browser_downloaded("firefox", "139.0")); + } + + #[test] + fn test_remove_browser() { + let mut registry = DownloadedBrowsersRegistry::new(); + let info = DownloadedBrowserInfo { + browser: "firefox".to_string(), + version: "139.0".to_string(), + download_date: 1234567890, + file_path: PathBuf::from("/test/path"), + verified: true, + actual_version: None, + }; + + registry.add_browser(info); + assert!(registry.is_browser_downloaded("firefox", "139.0")); + + let removed = registry.remove_browser("firefox", "139.0"); + assert!(removed.is_some()); + assert!(!registry.is_browser_downloaded("firefox", "139.0")); + } +} \ No newline at end of file diff --git a/src-tauri/src/extraction.rs b/src-tauri/src/extraction.rs new file mode 100644 index 0000000..181eccc --- /dev/null +++ b/src-tauri/src/extraction.rs @@ -0,0 +1,374 @@ +use std::fs::{self, create_dir_all}; +use std::path::{Path, PathBuf}; +use std::process::Command; +use tauri::Emitter; + +use crate::download::DownloadProgress; +use crate::browser::BrowserType; + +pub struct Extractor; + +impl Extractor { + pub fn new() -> Self { + Self + } + + pub async fn extract_browser( + &self, + app_handle: &tauri::AppHandle, + browser_type: BrowserType, + version: &str, + archive_path: &Path, + dest_dir: &Path, + ) -> Result> { + // Emit extraction start progress + let progress = DownloadProgress { + browser: browser_type.as_str().to_string(), + version: version.to_string(), + downloaded_bytes: 0, + total_bytes: None, + percentage: 0.0, + speed_bytes_per_sec: 0.0, + eta_seconds: None, + stage: "extracting".to_string(), + }; + let _ = app_handle.emit("download-progress", &progress); + + let extension = archive_path + .extension() + .and_then(|ext| ext.to_str()) + .unwrap_or(""); + + match extension { + "dmg" => self.extract_dmg(archive_path, dest_dir).await, + "zip" => self.extract_zip(archive_path, dest_dir).await, + _ => Err(format!("Unsupported archive format: {}", extension).into()), + } + } + + async fn extract_dmg( + &self, + dmg_path: &Path, + dest_dir: &Path, + ) -> Result> { + // Create a temporary mount point + let mount_point = std::env::temp_dir().join(format!( + "donut_mount_{}", + std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap() + .as_secs() + )); + create_dir_all(&mount_point)?; + + // Mount the DMG + let output = Command::new("hdiutil") + .args([ + "attach", + "-nobrowse", + "-mountpoint", + mount_point.to_str().unwrap(), + dmg_path.to_str().unwrap(), + ]) + .output()?; + + if !output.status.success() { + return Err( + format!( + "Failed to mount DMG: {}", + String::from_utf8_lossy(&output.stderr) + ) + .into(), + ); + } + + // Find the .app directory in the mount point + let app_entry = fs::read_dir(&mount_point)? + .filter_map(Result::ok) + .find(|entry| entry.path().extension().map_or(false, |ext| ext == "app")) + .ok_or("No .app found in DMG")?; + + // Copy the .app to the destination + let app_path = dest_dir.join(app_entry.file_name()); + + let output = Command::new("cp") + .args([ + "-R", + app_entry.path().to_str().unwrap(), + app_path.to_str().unwrap(), + ]) + .output()?; + + if !output.status.success() { + return Err( + format!( + "Failed to copy app: {}", + String::from_utf8_lossy(&output.stderr) + ) + .into(), + ); + } + + // Remove quarantine attributes + let _ = Command::new("xattr") + .args(["-dr", "com.apple.quarantine", app_path.to_str().unwrap()]) + .output(); + + let _ = Command::new("xattr") + .args(["-cr", app_path.to_str().unwrap()]) + .output(); + + // Try to unmount the DMG with retries + let mut retry_count = 0; + let max_retries = 3; + let mut unmounted = false; + + while retry_count < max_retries && !unmounted { + // Wait a bit before trying to unmount + tokio::time::sleep(tokio::time::Duration::from_secs(1)).await; + + let output = Command::new("hdiutil") + .args(["detach", mount_point.to_str().unwrap()]) + .output()?; + + if output.status.success() { + unmounted = true; + } else if retry_count == max_retries - 1 { + // Force unmount on last retry + let _ = Command::new("hdiutil") + .args(["detach", "-force", mount_point.to_str().unwrap()]) + .output(); + unmounted = true; // Consider it unmounted even if force fails + } + retry_count += 1; + } + + // Clean up mount point directory + let _ = fs::remove_dir_all(&mount_point); + + Ok(app_path) + } + + async fn extract_zip( + &self, + zip_path: &Path, + dest_dir: &Path, + ) -> Result> { + // Use unzip command to extract + let output = Command::new("unzip") + .args([ + "-q", // quiet + zip_path.to_str().unwrap(), + "-d", + dest_dir.to_str().unwrap(), + ]) + .output()?; + + if !output.status.success() { + return Err( + format!( + "Failed to extract zip: {}", + String::from_utf8_lossy(&output.stderr) + ) + .into(), + ); + } + + // Find the extracted .app directory or Chromium.app specifically + let mut app_path: Option = None; + + // First, try to find any .app file in the destination directory + if let Ok(entries) = fs::read_dir(dest_dir) { + for entry in entries { + if let Ok(entry) = entry { + let path = entry.path(); + if path.extension().map_or(false, |ext| ext == "app") { + app_path = Some(path); + break; + } + // For Chromium, check subdirectories (chrome-mac folder) + if path.is_dir() { + if let Ok(sub_entries) = fs::read_dir(&path) { + for sub_entry in sub_entries { + if let Ok(sub_entry) = sub_entry { + let sub_path = sub_entry.path(); + if sub_path.extension().map_or(false, |ext| ext == "app") { + // Move the app to the root destination directory + let target_path = dest_dir.join(sub_path.file_name().unwrap()); + fs::rename(&sub_path, &target_path)?; + app_path = Some(target_path); + + // Clean up the now-empty subdirectory + let _ = fs::remove_dir_all(&path); + break; + } + } + } + if app_path.is_some() { + break; + } + } + } + } + } + } + + let app_path = app_path.ok_or("No .app found after extraction")?; + + // Remove quarantine attributes + let _ = Command::new("xattr") + .args(["-dr", "com.apple.quarantine", app_path.to_str().unwrap()]) + .output(); + + let _ = Command::new("xattr") + .args(["-cr", app_path.to_str().unwrap()]) + .output(); + + Ok(app_path) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use std::fs::File; + use tempfile::TempDir; + + #[test] + fn test_extractor_creation() { + let _extractor = Extractor::new(); + // Just verify we can create an extractor instance + assert!(true); + } + + #[test] + fn test_unsupported_archive_format() { + let _extractor = Extractor::new(); + let temp_dir = TempDir::new().unwrap(); + let fake_archive = temp_dir.path().join("test.rar"); + File::create(&fake_archive).unwrap(); + + // Create a mock app handle (this won't work in real tests without Tauri runtime) + // For now, we'll just test the logic without the actual extraction + + // Test that unsupported formats return an error + let extension = fake_archive + .extension() + .and_then(|ext| ext.to_str()) + .unwrap_or(""); + + assert_eq!(extension, "rar"); + // We know this would fail with "Unsupported archive format: rar" + } + + #[test] + fn test_dmg_path_validation() { + let temp_dir = TempDir::new().unwrap(); + let dmg_path = temp_dir.path().join("test.dmg"); + + // Test that we can identify DMG files correctly + let extension = dmg_path + .extension() + .and_then(|ext| ext.to_str()) + .unwrap_or(""); + + assert_eq!(extension, "dmg"); + } + + #[test] + fn test_zip_path_validation() { + let temp_dir = TempDir::new().unwrap(); + let zip_path = temp_dir.path().join("test.zip"); + + // Test that we can identify ZIP files correctly + let extension = zip_path + .extension() + .and_then(|ext| ext.to_str()) + .unwrap_or(""); + + assert_eq!(extension, "zip"); + } + + #[test] + fn test_mount_point_generation() { + // Test that mount point generation creates unique paths + let mount_point1 = std::env::temp_dir().join(format!( + "donut_mount_{}", + std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap() + .as_secs() + )); + + std::thread::sleep(std::time::Duration::from_millis(10)); + + let mount_point2 = std::env::temp_dir().join(format!( + "donut_mount_{}", + std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap() + .as_secs() + )); + + // They should be different (or at least have the potential to be) + assert!(mount_point1.to_string_lossy().contains("donut_mount_")); + assert!(mount_point2.to_string_lossy().contains("donut_mount_")); + } + + #[test] + fn test_app_path_detection() { + let temp_dir = TempDir::new().unwrap(); + + // Create a fake .app directory + let app_dir = temp_dir.path().join("TestApp.app"); + std::fs::create_dir_all(&app_dir).unwrap(); + + // Test finding .app directories + let entries: Vec<_> = fs::read_dir(temp_dir.path()) + .unwrap() + .filter_map(Result::ok) + .filter(|entry| entry.path().extension().map_or(false, |ext| ext == "app")) + .collect(); + + assert_eq!(entries.len(), 1); + assert_eq!(entries[0].file_name(), "TestApp.app"); + } + + #[test] + fn test_nested_app_detection() { + let temp_dir = TempDir::new().unwrap(); + + // Create a nested structure like Chromium + let chrome_dir = temp_dir.path().join("chrome-mac"); + std::fs::create_dir_all(&chrome_dir).unwrap(); + + let app_dir = chrome_dir.join("Chromium.app"); + std::fs::create_dir_all(&app_dir).unwrap(); + + // Test finding nested .app directories + let mut found_app = false; + + if let Ok(entries) = fs::read_dir(temp_dir.path()) { + for entry in entries { + if let Ok(entry) = entry { + let path = entry.path(); + if path.is_dir() { + if let Ok(sub_entries) = fs::read_dir(&path) { + for sub_entry in sub_entries { + if let Ok(sub_entry) = sub_entry { + let sub_path = sub_entry.path(); + if sub_path.extension().map_or(false, |ext| ext == "app") { + found_app = true; + break; + } + } + } + } + } + } + } + } + + assert!(found_app); + } +} \ No newline at end of file diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs new file mode 100644 index 0000000..469a9d7 --- /dev/null +++ b/src-tauri/src/lib.rs @@ -0,0 +1,225 @@ +// Learn more about Tauri commands at https://tauri.app/develop/calling-rust/ +use std::sync::Mutex; +use std::time::{SystemTime, UNIX_EPOCH}; +use tauri::{Manager, Emitter}; +use tauri_plugin_deep_link::DeepLinkExt; + +// Store pending URLs that need to be handled when the window is ready +static PENDING_URLS: Mutex> = Mutex::new(Vec::new()); + +mod api_client; +mod auto_updater; +mod browser; +mod browser_runner; +mod browser_version_service; +mod default_browser; +mod download; +mod downloaded_browsers; +mod extraction; +mod proxy_manager; +mod settings_manager; +mod version_updater; + +extern crate lazy_static; + +use browser_runner::{ + check_browser_status, create_browser_profile, create_browser_profile_new, delete_profile, + download_browser, fetch_browser_versions, fetch_browser_versions_cached_first, + fetch_browser_versions_detailed, fetch_browser_versions_with_count, fetch_browser_versions_with_count_cached_first, + get_cached_browser_versions_detailed, get_downloaded_browser_versions, get_saved_mullvad_releases, get_supported_browsers, is_browser_downloaded, check_browser_exists, + kill_browser_profile, launch_browser_profile, list_browser_profiles, rename_profile, should_update_browser_cache, update_profile_proxy, + update_profile_version, +}; + +use settings_manager::{ + disable_default_browser_prompt, get_app_settings, save_app_settings, + should_show_settings_on_startup, get_table_sorting_settings, save_table_sorting_settings, +}; + +use default_browser::{is_default_browser, open_url_with_profile, set_as_default_browser, smart_open_url}; + +use version_updater::{trigger_manual_version_update, get_version_update_status, get_version_updater, check_version_update_needed, force_version_update_check}; + +use auto_updater::{ + check_for_browser_updates, start_browser_update, complete_browser_update, + is_browser_disabled_for_update, dismiss_update_notification, + complete_browser_update_with_auto_update, + mark_auto_update_download, remove_auto_update_download, is_auto_update_download, +}; + +#[tauri::command] +fn greet() -> String { + let now = SystemTime::now(); + let epoch_ms = now.duration_since(UNIX_EPOCH).unwrap().as_millis(); + format!("Hello world from Rust! Current epoch: {}", epoch_ms) +} + +#[tauri::command] +async fn handle_url_open(app: tauri::AppHandle, url: String) -> Result<(), String> { + println!("handle_url_open called with URL: {}", url); + + // Check if the main window exists and is ready + if let Some(window) = app.get_webview_window("main") { + if window.is_visible().unwrap_or(false) { + // Window is visible, emit event directly + println!("Main window is visible, emitting show-profile-selector event"); + app.emit("show-profile-selector", url.clone()) + .map_err(|e| format!("Failed to emit URL open event: {}", e))?; + let _ = window.show(); + let _ = window.set_focus(); + } else { + // Window not visible yet - add to pending URLs + println!("Main window not visible, adding URL to pending list"); + let mut pending = PENDING_URLS.lock().unwrap(); + pending.push(url); + } + } else { + // Window doesn't exist yet - add to pending URLs + println!("Main window doesn't exist, adding URL to pending list"); + let mut pending = PENDING_URLS.lock().unwrap(); + pending.push(url); + } + + Ok(()) +} + +#[tauri::command] +async fn check_and_handle_startup_url(app_handle: tauri::AppHandle) -> Result { + let pending_urls = { + let mut pending = PENDING_URLS.lock().unwrap(); + let urls = pending.clone(); + pending.clear(); // Clear after getting them + urls + }; + + if !pending_urls.is_empty() { + println!("Handling {} pending URLs from frontend request", pending_urls.len()); + + for url in pending_urls { + println!("Emitting show-profile-selector event for URL: {}", url); + if let Err(e) = app_handle.emit("show-profile-selector", url.clone()) { + eprintln!("Failed to emit URL event: {}", e); + return Err(format!("Failed to emit URL event: {}", e)); + } + } + + return Ok(true); + } + + Ok(false) +} + +#[cfg_attr(mobile, tauri::mobile_entry_point)] +pub fn run() { + tauri::Builder::default() + .plugin(tauri_plugin_fs::init()) + .plugin(tauri_plugin_opener::init()) + .plugin(tauri_plugin_shell::init()) + .plugin(tauri_plugin_deep_link::init()) + .setup(|app| { + // Set up deep link handler + let handle = app.handle().clone(); + + #[cfg(any(windows, target_os = "linux"))] + { + // For Windows and Linux, register all deep links at runtime for development + app.deep_link().register_all()?; + } + + // Handle deep links - this works for both scenarios: + // 1. App is running and URL is opened + // 2. App is not running and URL causes app to launch + app.deep_link().on_open_url({ + let handle = handle.clone(); + move |event| { + let urls = event.urls(); + for url in urls { + let url_string = url.to_string(); + println!("Deep link received: {}", url_string); + + // Clone the handle for each async task + let handle_clone = handle.clone(); + + // Handle the URL asynchronously + tauri::async_runtime::spawn(async move { + if let Err(e) = handle_url_open(handle_clone, url_string.clone()).await { + eprintln!("Failed to handle deep link URL: {}", e); + } + }); + } + } + }); + + // Initialize and start background version updater + let app_handle = app.handle().clone(); + tauri::async_runtime::spawn(async move { + let version_updater = get_version_updater(); + let mut updater_guard = version_updater.lock().await; + + // Set the app handle + updater_guard.set_app_handle(app_handle).await; + + // Start the background updates + updater_guard.start_background_updates().await; + }); + + Ok(()) + }) + .invoke_handler(tauri::generate_handler![ + greet, + get_supported_browsers, + download_browser, + delete_profile, + is_browser_downloaded, + check_browser_exists, + create_browser_profile_new, + create_browser_profile, // Keep for backward compatibility + list_browser_profiles, + launch_browser_profile, + fetch_browser_versions, + fetch_browser_versions_detailed, + fetch_browser_versions_with_count, + fetch_browser_versions_cached_first, + fetch_browser_versions_with_count_cached_first, + get_cached_browser_versions_detailed, + should_update_browser_cache, + get_downloaded_browser_versions, + get_saved_mullvad_releases, + update_profile_proxy, + update_profile_version, + check_browser_status, + kill_browser_profile, + rename_profile, + // Settings commands + get_app_settings, + save_app_settings, + should_show_settings_on_startup, + disable_default_browser_prompt, + get_table_sorting_settings, + save_table_sorting_settings, + // Default browser commands + is_default_browser, + open_url_with_profile, + set_as_default_browser, + smart_open_url, + handle_url_open, + check_and_handle_startup_url, + // Version update commands + trigger_manual_version_update, + get_version_update_status, + check_version_update_needed, + force_version_update_check, + // Auto-update commands + check_for_browser_updates, + start_browser_update, + complete_browser_update, + is_browser_disabled_for_update, + dismiss_update_notification, + complete_browser_update_with_auto_update, + mark_auto_update_download, + remove_auto_update_download, + is_auto_update_download, + ]) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs new file mode 100644 index 0000000..29d4720 --- /dev/null +++ b/src-tauri/src/main.rs @@ -0,0 +1,6 @@ +// Prevents additional console window on Windows in release, DO NOT REMOVE!! +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +fn main() { + donutbrowser::run() +} diff --git a/src-tauri/src/proxy_manager.rs b/src-tauri/src/proxy_manager.rs new file mode 100644 index 0000000..6420f3f --- /dev/null +++ b/src-tauri/src/proxy_manager.rs @@ -0,0 +1,189 @@ +use serde::{Deserialize, Serialize}; +use serde_json::Value; +use std::collections::HashMap; +use std::sync::Mutex; +use tauri_plugin_shell::ShellExt; + +use crate::browser::ProxySettings; + +// Store active proxy information +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct ProxyInfo { + pub id: String, + pub local_url: String, + pub upstream_url: String, + pub local_port: u16, +} + +// Global proxy manager to track active proxies +pub struct ProxyManager { + active_proxies: Mutex>, // Maps browser process ID to proxy info + // Store proxy info by profile name for persistence across browser restarts + profile_proxies: Mutex>, // Maps profile name to (upstream_url, port) +} + +impl ProxyManager { + pub fn new() -> Self { + Self { + active_proxies: Mutex::new(HashMap::new()), + profile_proxies: Mutex::new(HashMap::new()), + } + } + + // Start a proxy for a given upstream URL and associate it with a browser process ID + pub async fn start_proxy( + &self, + app_handle: tauri::AppHandle, + upstream_url: &str, + browser_pid: u32, + profile_name: Option<&str>, + ) -> Result { + // Check if we already have a proxy for this browser + { + let proxies = self.active_proxies.lock().unwrap(); + if let Some(proxy) = proxies.get(&browser_pid) { + return Ok(ProxySettings { + enabled: true, + proxy_type: "http".to_string(), + host: "localhost".to_string(), + port: proxy.local_port, + }); + } + } + + // Check if we have a preferred port for this profile + let preferred_port = if let Some(name) = profile_name { + let profile_proxies = self.profile_proxies.lock().unwrap(); + profile_proxies.get(name).map(|(_, port)| *port) + } else { + None + }; + + // Start a new proxy using the nodecar binary + let mut nodecar = app_handle + .shell() + .sidecar("nodecar") + .unwrap() + .arg("proxy") + .arg("start") + .arg("-u") + .arg(upstream_url); + + // If we have a preferred port, use it + if let Some(port) = preferred_port { + nodecar = nodecar.arg("-p").arg(port.to_string()); + } + + let output = nodecar.output().await.unwrap(); + + if !output.status.success() { + let stderr = String::from_utf8_lossy(&output.stderr); + return Err(format!("Proxy start failed: {}", stderr)); + } + + let json_string = String::from_utf8(output.stdout) + .map_err(|e| format!("Failed to parse proxy output: {}", e))?; + + // Parse the JSON output + let json: Value = + serde_json::from_str(&json_string).map_err(|e| format!("Failed to parse JSON: {}", e))?; + + // Extract proxy information + let id = json["id"].as_str().ok_or("Missing proxy ID")?; + let local_port = json["localPort"].as_u64().ok_or("Missing local port")? as u16; + let local_url = json["localUrl"] + .as_str() + .ok_or("Missing local URL")? + .to_string(); + let upstream_url_str = json["upstreamUrl"] + .as_str() + .ok_or("Missing upstream URL")? + .to_string(); + + let proxy_info = ProxyInfo { + id: id.to_string(), + local_url, + upstream_url: upstream_url_str.clone(), + local_port, + }; + + // Store the proxy info + { + let mut proxies = self.active_proxies.lock().unwrap(); + proxies.insert(browser_pid, proxy_info.clone()); + } + + // Store the profile proxy info for persistence + if let Some(name) = profile_name { + let mut profile_proxies = self.profile_proxies.lock().unwrap(); + profile_proxies.insert(name.to_string(), (upstream_url_str, local_port)); + } + + // Return proxy settings for the browser + Ok(ProxySettings { + enabled: true, + proxy_type: "http".to_string(), + host: "localhost".to_string(), + port: proxy_info.local_port, + }) + } + + // Stop the proxy associated with a browser process ID + pub async fn stop_proxy( + &self, + app_handle: tauri::AppHandle, + browser_pid: u32, + ) -> Result<(), String> { + let proxy_id = { + let mut proxies = self.active_proxies.lock().unwrap(); + match proxies.remove(&browser_pid) { + Some(proxy) => proxy.id, + None => return Ok(()), // No proxy to stop + } + }; + + // Stop the proxy using the nodecar binary + let nodecar = app_handle + .shell() + .sidecar("nodecar") + .map_err(|e| format!("Failed to create sidecar: {}", e))? + .arg("proxy") + .arg("stop") + .arg("--id") + .arg(proxy_id); + + let output = nodecar.output().await.unwrap(); + + if !output.status.success() { + let stderr = String::from_utf8_lossy(&output.stderr); + eprintln!("Proxy stop error: {}", stderr); + // We still return Ok since we've already removed the proxy from our tracking + } + + Ok(()) + } + + // Get proxy settings for a browser process ID + pub fn get_proxy_settings(&self, browser_pid: u32) -> Option { + let proxies = self.active_proxies.lock().unwrap(); + proxies.get(&browser_pid).map(|proxy| ProxySettings { + enabled: true, + proxy_type: "http".to_string(), + host: "localhost".to_string(), + port: proxy.local_port, + }) + } + + + + // Get stored proxy info for a profile + pub fn get_profile_proxy_info(&self, profile_name: &str) -> Option<(String, u16)> { + let profile_proxies = self.profile_proxies.lock().unwrap(); + profile_proxies.get(profile_name).cloned() + } +} + +// Create a singleton instance of the proxy manager +lazy_static::lazy_static! { + pub static ref PROXY_MANAGER: ProxyManager = ProxyManager::new(); +} diff --git a/src-tauri/src/settings_manager.rs b/src-tauri/src/settings_manager.rs new file mode 100644 index 0000000..4b6e7f9 --- /dev/null +++ b/src-tauri/src/settings_manager.rs @@ -0,0 +1,214 @@ +use directories::BaseDirs; +use serde::{Deserialize, Serialize}; +use std::fs::{self, create_dir_all}; +use std::path::PathBuf; + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct TableSortingSettings { + pub column: String, // Column to sort by: "name", "browser", "status" + pub direction: String, // "asc" or "desc" +} + +impl Default for TableSortingSettings { + fn default() -> Self { + Self { + column: "name".to_string(), + direction: "asc".to_string(), + } + } +} + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct AppSettings { + #[serde(default)] + pub set_as_default_browser: bool, + #[serde(default = "default_show_settings_on_startup")] + pub show_settings_on_startup: bool, + #[serde(default = "default_theme")] + pub theme: String, // "light", "dark", or "system" + #[serde(default = "default_auto_updates_enabled")] + pub auto_updates_enabled: bool, +} + +fn default_show_settings_on_startup() -> bool { + true +} + +fn default_theme() -> String { + "system".to_string() +} + +fn default_auto_updates_enabled() -> bool { + true +} + +impl Default for AppSettings { + fn default() -> Self { + Self { + set_as_default_browser: false, + show_settings_on_startup: default_show_settings_on_startup(), + theme: default_theme(), + auto_updates_enabled: default_auto_updates_enabled(), + } + } +} + +pub struct SettingsManager { + base_dirs: BaseDirs, +} + +impl SettingsManager { + pub fn new() -> Self { + Self { + base_dirs: BaseDirs::new().expect("Failed to get base directories"), + } + } + + pub fn get_settings_dir(&self) -> PathBuf { + let mut path = self.base_dirs.data_local_dir().to_path_buf(); + path.push(if cfg!(debug_assertions) { "DonutBrowserDev" } else { "DonutBrowser" }); + path.push("settings"); + path + } + + pub fn get_settings_file(&self) -> PathBuf { + self.get_settings_dir().join("app_settings.json") + } + + pub fn get_table_sorting_file(&self) -> PathBuf { + self.get_settings_dir().join("table_sorting.json") + } + + pub fn load_settings(&self) -> Result> { + let settings_file = self.get_settings_file(); + + if !settings_file.exists() { + // Return default settings if file doesn't exist + return Ok(AppSettings::default()); + } + + let content = fs::read_to_string(&settings_file)?; + + // Parse the settings file - serde will use default values for missing fields + match serde_json::from_str::(&content) { + Ok(settings) => { + // Save the settings back to ensure any missing fields are written with defaults + if let Err(e) = self.save_settings(&settings) { + eprintln!("Warning: Failed to update settings file with defaults: {}", e); + } + Ok(settings) + } + Err(e) => { + eprintln!("Warning: Failed to parse settings file, using defaults: {}", e); + let default_settings = AppSettings::default(); + + // Try to save default settings to fix the corrupted file + if let Err(save_error) = self.save_settings(&default_settings) { + eprintln!("Warning: Failed to save default settings: {}", save_error); + } + + Ok(default_settings) + } + } + } + + pub fn save_settings(&self, settings: &AppSettings) -> Result<(), Box> { + let settings_dir = self.get_settings_dir(); + create_dir_all(&settings_dir)?; + + let settings_file = self.get_settings_file(); + let json = serde_json::to_string_pretty(settings)?; + fs::write(settings_file, json)?; + + Ok(()) + } + + pub fn load_table_sorting(&self) -> Result> { + let sorting_file = self.get_table_sorting_file(); + + if !sorting_file.exists() { + // Return default sorting if file doesn't exist + return Ok(TableSortingSettings::default()); + } + + let content = fs::read_to_string(sorting_file)?; + let sorting: TableSortingSettings = serde_json::from_str(&content)?; + Ok(sorting) + } + + pub fn save_table_sorting(&self, sorting: &TableSortingSettings) -> Result<(), Box> { + let settings_dir = self.get_settings_dir(); + create_dir_all(&settings_dir)?; + + let sorting_file = self.get_table_sorting_file(); + let json = serde_json::to_string_pretty(sorting)?; + fs::write(sorting_file, json)?; + + Ok(()) + } + + pub fn should_show_settings_on_startup(&self) -> Result> { + let settings = self.load_settings()?; + + // Show prompt if: + // 1. User wants to see the prompt + // 2. Donut Browser is not set as default + // 3. User hasn't explicitly disabled the default browser setting + Ok(settings.show_settings_on_startup && !settings.set_as_default_browser) + } + + pub fn disable_default_browser_prompt(&self) -> Result<(), Box> { + let mut settings = self.load_settings()?; + settings.show_settings_on_startup = false; + self.save_settings(&settings)?; + Ok(()) + } +} + +#[tauri::command] +pub async fn get_app_settings() -> Result { + let manager = SettingsManager::new(); + manager + .load_settings() + .map_err(|e| format!("Failed to load settings: {}", e)) +} + +#[tauri::command] +pub async fn save_app_settings(settings: AppSettings) -> Result<(), String> { + let manager = SettingsManager::new(); + manager + .save_settings(&settings) + .map_err(|e| format!("Failed to save settings: {}", e)) +} + +#[tauri::command] +pub async fn should_show_settings_on_startup() -> Result { + let manager = SettingsManager::new(); + manager + .should_show_settings_on_startup() + .map_err(|e| format!("Failed to check prompt setting: {}", e)) +} + +#[tauri::command] +pub async fn disable_default_browser_prompt() -> Result<(), String> { + let manager = SettingsManager::new(); + manager + .disable_default_browser_prompt() + .map_err(|e| format!("Failed to disable prompt: {}", e)) +} + +#[tauri::command] +pub async fn get_table_sorting_settings() -> Result { + let manager = SettingsManager::new(); + manager + .load_table_sorting() + .map_err(|e| format!("Failed to load table sorting settings: {}", e)) +} + +#[tauri::command] +pub async fn save_table_sorting_settings(sorting: TableSortingSettings) -> Result<(), String> { + let manager = SettingsManager::new(); + manager + .save_table_sorting(&sorting) + .map_err(|e| format!("Failed to save table sorting settings: {}", e)) +} diff --git a/src-tauri/src/version_updater.rs b/src-tauri/src/version_updater.rs new file mode 100644 index 0000000..d9aa9e3 --- /dev/null +++ b/src-tauri/src/version_updater.rs @@ -0,0 +1,535 @@ +use crate::browser_version_service::BrowserVersionService; +use serde::{Deserialize, Serialize}; +use std::sync::Arc; +use std::time::{Duration, SystemTime, UNIX_EPOCH}; +use tauri::Emitter; +use tokio::sync::Mutex; +use tokio::time::{interval, Interval}; +use std::path::PathBuf; +use std::fs; +use directories::BaseDirs; +use std::sync::OnceLock; + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct VersionUpdateProgress { + pub current_browser: String, + pub total_browsers: usize, + pub completed_browsers: usize, + pub new_versions_found: usize, + pub browser_new_versions: usize, // New versions found for current browser + pub status: String, // "updating", "completed", "error" +} + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct BackgroundUpdateResult { + pub browser: String, + pub new_versions_count: usize, + pub total_versions_count: usize, + pub updated_successfully: bool, + pub error: Option, +} + +#[derive(Debug, Serialize, Deserialize)] +struct BackgroundUpdateState { + last_update_time: u64, + update_interval_hours: u64, +} + +impl Default for BackgroundUpdateState { + fn default() -> Self { + Self { + last_update_time: 0, + update_interval_hours: 3, + } + } +} + +pub struct VersionUpdater { + version_service: BrowserVersionService, + app_handle: Arc>>, + update_interval: Interval, +} + +impl VersionUpdater { + pub fn new() -> Self { + let mut update_interval = interval(Duration::from_secs(5 * 60)); // Check every 5 minutes + update_interval.set_missed_tick_behavior(tokio::time::MissedTickBehavior::Skip); + + Self { + version_service: BrowserVersionService::new(), + app_handle: Arc::new(Mutex::new(None)), + update_interval, + } + } + + fn get_cache_dir() -> Result> { + let base_dirs = BaseDirs::new().ok_or("Failed to get base directories")?; + let app_name = if cfg!(debug_assertions) { + "DonutBrowserDev" + } else { + "DonutBrowser" + }; + let cache_dir = base_dirs.cache_dir().join(app_name).join("version_cache"); + fs::create_dir_all(&cache_dir)?; + Ok(cache_dir) + } + + fn get_background_update_state_file() -> Result> { + let cache_dir = Self::get_cache_dir()?; + Ok(cache_dir.join("background_update_state.json")) + } + + fn load_background_update_state() -> BackgroundUpdateState { + let state_file = match Self::get_background_update_state_file() { + Ok(file) => file, + Err(_) => return BackgroundUpdateState::default(), + }; + + if !state_file.exists() { + return BackgroundUpdateState::default(); + } + + let content = match fs::read_to_string(&state_file) { + Ok(content) => content, + Err(_) => return BackgroundUpdateState::default(), + }; + + serde_json::from_str(&content).unwrap_or_default() + } + + fn save_background_update_state(state: &BackgroundUpdateState) -> Result<(), Box> { + let state_file = Self::get_background_update_state_file()?; + let content = serde_json::to_string_pretty(state)?; + fs::write(&state_file, content)?; + Ok(()) + } + + fn get_current_timestamp() -> u64 { + SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap_or_default() + .as_secs() + } + + fn should_run_background_update() -> bool { + let state = Self::load_background_update_state(); + let current_time = Self::get_current_timestamp(); + let elapsed_secs = current_time.saturating_sub(state.last_update_time); + let update_interval_secs = state.update_interval_hours * 60 * 60; + + // Run update if: + // 1. Never updated before (last_update_time == 0) + // 2. More than 3 hours have passed since last update + let should_update = state.last_update_time == 0 || elapsed_secs >= update_interval_secs; + + if should_update { + println!( + "Background update needed: last_update={}, elapsed={}h, required={}h", + state.last_update_time, + elapsed_secs / 3600, + state.update_interval_hours + ); + } else { + println!( + "Background update not needed: last_update={}, elapsed={}h, required={}h", + state.last_update_time, + elapsed_secs / 3600, + state.update_interval_hours + ); + } + + should_update + } + + pub async fn set_app_handle(&self, app_handle: tauri::AppHandle) { + let mut handle = self.app_handle.lock().await; + *handle = Some(app_handle); + } + + pub async fn check_and_run_startup_update(&self) -> Result<(), Box> { + // Only run if an update is actually needed + if !Self::should_run_background_update() { + println!("No startup version update needed"); + return Ok(()); + } + + let app_handle = { + let handle_guard = self.app_handle.lock().await; + handle_guard.clone() + }; + + if let Some(handle) = app_handle { + println!("Running startup version update..."); + + match self.update_all_browser_versions(&handle).await { + Ok(_) => { + // Update the persistent state after successful update + let state = BackgroundUpdateState { + last_update_time: Self::get_current_timestamp(), + update_interval_hours: 3, + }; + + if let Err(e) = Self::save_background_update_state(&state) { + eprintln!("Failed to save background update state: {}", e); + } else { + println!("Startup version update completed successfully"); + } + } + Err(e) => { + eprintln!("Startup version update failed: {}", e); + return Err(e); + } + } + } else { + return Err("App handle not available for startup update".into()); + } + + Ok(()) + } + + pub async fn start_background_updates(&mut self) { + println!("Starting background version update service (checking every 5 minutes for 3-hour intervals)"); + + // Run initial startup check + if let Err(e) = self.check_and_run_startup_update().await { + eprintln!("Startup version update failed: {}", e); + } + + loop { + self.update_interval.tick().await; + + // Check if we should run an update based on persistent state + if !Self::should_run_background_update() { + continue; + } + + // Check if we have an app handle + let app_handle = { + let handle_guard = self.app_handle.lock().await; + handle_guard.clone() + }; + + if let Some(handle) = app_handle { + println!("Starting background version update..."); + + match self.update_all_browser_versions(&handle).await { + Ok(_) => { + // Update the persistent state after successful update + let state = BackgroundUpdateState { + last_update_time: Self::get_current_timestamp(), + update_interval_hours: 3, + }; + + if let Err(e) = Self::save_background_update_state(&state) { + eprintln!("Failed to save background update state: {}", e); + } else { + println!("Background version update completed successfully"); + } + } + Err(e) => { + eprintln!("Background version update failed: {}", e); + + // Emit error event + let progress = VersionUpdateProgress { + current_browser: "".to_string(), + total_browsers: 0, + completed_browsers: 0, + new_versions_found: 0, + browser_new_versions: 0, + status: "error".to_string(), + }; + let _ = handle.emit("version-update-progress", &progress); + } + } + } else { + println!("App handle not available, skipping background update"); + } + } + } + + async fn update_all_browser_versions(&self, app_handle: &tauri::AppHandle) -> Result, Box> { + println!("Starting background version update for all browsers"); + + let browsers = vec![ + "firefox", + "firefox-developer", + "mullvad-browser", + "zen", + "brave", + "chromium", + "tor-browser", + ]; + + let total_browsers = browsers.len(); + let mut results = Vec::new(); + let mut total_new_versions = 0; + + // Emit start event + let progress = VersionUpdateProgress { + current_browser: "".to_string(), + total_browsers, + completed_browsers: 0, + new_versions_found: 0, + browser_new_versions: 0, + status: "updating".to_string(), + }; + let _ = app_handle.emit("version-update-progress", &progress); + + for (index, browser) in browsers.iter().enumerate() { + // Check if individual browser cache is expired before updating + if !self.version_service.should_update_cache(browser) { + println!("Skipping {} - cache is still fresh", browser); + + let browser_result = BackgroundUpdateResult { + browser: browser.to_string(), + new_versions_count: 0, + total_versions_count: 0, + updated_successfully: true, + error: None, + }; + results.push(browser_result); + continue; + } + + println!("Updating versions for browser: {}", browser); + + // Emit progress for current browser + let progress = VersionUpdateProgress { + current_browser: browser.to_string(), + total_browsers, + completed_browsers: index, + new_versions_found: total_new_versions, + browser_new_versions: 0, + status: "updating".to_string(), + }; + let _ = app_handle.emit("version-update-progress", &progress); + + let result = self.update_browser_versions(browser).await; + + match result { + Ok(new_count) => { + total_new_versions += new_count; + let browser_result = BackgroundUpdateResult { + browser: browser.to_string(), + new_versions_count: new_count, + total_versions_count: 0, // We'll update this if needed + updated_successfully: true, + error: None, + }; + results.push(browser_result); + + println!("Found {} new versions for {}", new_count, browser); + } + Err(e) => { + eprintln!("Failed to update versions for {}: {}", browser, e); + let browser_result = BackgroundUpdateResult { + browser: browser.to_string(), + new_versions_count: 0, + total_versions_count: 0, + updated_successfully: false, + error: Some(e.to_string()), + }; + results.push(browser_result); + } + } + + // Small delay between browsers to avoid overwhelming APIs + tokio::time::sleep(Duration::from_millis(500)).await; + } + + // Emit completion event + let progress = VersionUpdateProgress { + current_browser: "".to_string(), + total_browsers, + completed_browsers: total_browsers, + new_versions_found: total_new_versions, + browser_new_versions: 0, + status: "completed".to_string(), + }; + let _ = app_handle.emit("version-update-progress", &progress); + + println!("Background version update completed. Found {} new versions total", total_new_versions); + + Ok(results) + } + + async fn update_browser_versions(&self, browser: &str) -> Result> { + self.version_service.update_browser_versions_incrementally(browser).await + } + + pub async fn trigger_manual_update(&self, app_handle: &tauri::AppHandle) -> Result, Box> { + let results = self.update_all_browser_versions(app_handle).await?; + + // Update the persistent state after successful manual update + let state = BackgroundUpdateState { + last_update_time: Self::get_current_timestamp(), + update_interval_hours: 3, + }; + + if let Err(e) = Self::save_background_update_state(&state) { + eprintln!("Failed to save background update state after manual update: {}", e); + } + + Ok(results) + } + + pub async fn get_last_update_time(&self) -> Option { + let state = Self::load_background_update_state(); + if state.last_update_time == 0 { + None + } else { + Some(state.last_update_time) + } + } + + pub async fn get_time_until_next_update(&self) -> u64 { + let state = Self::load_background_update_state(); + let current_time = Self::get_current_timestamp(); + + if state.last_update_time == 0 { + 0 // No previous update, should update now + } else { + let elapsed = current_time.saturating_sub(state.last_update_time); + let update_interval_secs = state.update_interval_hours * 60 * 60; + + if elapsed >= update_interval_secs { + 0 // Update overdue + } else { + update_interval_secs - elapsed + } + } + } +} + +// Global instance +static VERSION_UPDATER: OnceLock>> = OnceLock::new(); + +pub fn get_version_updater() -> Arc> { + VERSION_UPDATER.get_or_init(|| { + Arc::new(Mutex::new(VersionUpdater::new())) + }).clone() +} + +#[tauri::command] +pub async fn trigger_manual_version_update(app_handle: tauri::AppHandle) -> Result, String> { + let updater = get_version_updater(); + let updater_guard = updater.lock().await; + + updater_guard.trigger_manual_update(&app_handle) + .await + .map_err(|e| format!("Failed to trigger manual update: {}", e)) +} + +#[tauri::command] +pub async fn get_version_update_status() -> Result<(Option, u64), String> { + let updater = get_version_updater(); + let updater_guard = updater.lock().await; + + let last_update = updater_guard.get_last_update_time().await; + let time_until_next = updater_guard.get_time_until_next_update().await; + + Ok((last_update, time_until_next)) +} + +#[tauri::command] +pub async fn check_version_update_needed() -> Result { + Ok(VersionUpdater::should_run_background_update()) +} + +#[tauri::command] +pub async fn force_version_update_check(_app_handle: tauri::AppHandle) -> Result { + let updater = get_version_updater(); + let updater_guard = updater.lock().await; + + match updater_guard.check_and_run_startup_update().await { + Ok(_) => Ok(true), + Err(e) => Err(format!("Failed to run version update check: {}", e)) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + // Helper function to create a unique test state file + fn get_test_state_file(test_name: &str) -> PathBuf { + let cache_dir = VersionUpdater::get_cache_dir().unwrap(); + cache_dir.join(format!("test_{}_state.json", test_name)) + } + + fn save_test_state(test_name: &str, state: &BackgroundUpdateState) -> Result<(), Box> { + let state_file = get_test_state_file(test_name); + let content = serde_json::to_string_pretty(state)?; + fs::write(&state_file, content)?; + Ok(()) + } + + fn load_test_state(test_name: &str) -> BackgroundUpdateState { + let state_file = get_test_state_file(test_name); + + if !state_file.exists() { + return BackgroundUpdateState::default(); + } + + let content = match fs::read_to_string(&state_file) { + Ok(content) => content, + Err(_) => return BackgroundUpdateState::default(), + }; + + serde_json::from_str(&content).unwrap_or_default() + } + + #[test] + fn test_background_update_state_persistence() { + let test_name = "persistence"; + + // Create a test state + let test_state = BackgroundUpdateState { + last_update_time: 1609459200, // 2021-01-01 00:00:00 UTC + update_interval_hours: 3, + }; + + // Save the state + save_test_state(test_name, &test_state).unwrap(); + + // Load the state back + let loaded_state = load_test_state(test_name); + + // Verify the values match + assert_eq!(loaded_state.last_update_time, test_state.last_update_time); + assert_eq!(loaded_state.update_interval_hours, test_state.update_interval_hours); + + // Clean up + let _ = fs::remove_file(get_test_state_file(test_name)); + } + + #[test] + fn test_should_run_background_update_logic() { + // Note: This test uses the shared state file, so results may vary + // depending on previous test runs. This is expected behavior. + + // Test with recent update (should not update) + let recent_state = BackgroundUpdateState { + last_update_time: VersionUpdater::get_current_timestamp() - 60, // 1 minute ago + update_interval_hours: 3, + }; + VersionUpdater::save_background_update_state(&recent_state).unwrap(); + assert!(!VersionUpdater::should_run_background_update()); + + // Test with old update (should update) + let old_state = BackgroundUpdateState { + last_update_time: VersionUpdater::get_current_timestamp() - (4 * 60 * 60), // 4 hours ago + update_interval_hours: 3, + }; + VersionUpdater::save_background_update_state(&old_state).unwrap(); + assert!(VersionUpdater::should_run_background_update()); + } + + #[test] + fn test_cache_dir_creation() { + // This should not panic and should create the directory if it doesn't exist + let cache_dir = VersionUpdater::get_cache_dir().unwrap(); + assert!(cache_dir.exists()); + assert!(cache_dir.is_dir()); + } +} \ No newline at end of file diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json new file mode 100644 index 0000000..a14d29b --- /dev/null +++ b/src-tauri/tauri.conf.json @@ -0,0 +1,56 @@ +{ + "$schema": "https://schema.tauri.app/config/2", + "productName": "Donut Browser", + "version": "0.1.0", + "identifier": "com.donutbrowser", + "build": { + "beforeDevCommand": "pnpm dev", + "devUrl": "http://localhost:3000", + "beforeBuildCommand": "pnpm build", + "frontendDist": "../dist" + }, + "app": { + "windows": [ + { + "title": "Donut Browser", + "width": 900, + "height": 600, + "resizable": false, + "fullscreen": false + } + ], + "security": { + "csp": null + } + }, + "bundle": { + "active": true, + "targets": "all", + "externalBin": ["binaries/nodecar"], + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico", + "icons/icon.png" + ], + "macOS": { + "frameworks": [], + "minimumSystemVersion": "10.13", + "exceptionDomain": "", + "signingIdentity": "-", + "providerShortName": null, + "entitlements": "entitlements.plist", + "files": { + "Info.plist": "Info.plist" + } + } + }, + "plugins": { + "deep-link": { + "schemes": ["http", "https"], + "domains": [] + } + } +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx new file mode 100644 index 0000000..7a564a3 --- /dev/null +++ b/src/app/layout.tsx @@ -0,0 +1,35 @@ +"use client"; +import { Geist, Geist_Mono } from "next/font/google"; +import "@/styles/globals.css"; +import { CustomThemeProvider } from "@/components/theme-provider"; +import { Toaster } from "@/components/ui/sonner"; +import { TooltipProvider } from "@/components/ui/tooltip"; + +const geistSans = Geist({ + variable: "--font-geist-sans", + subsets: ["latin"], +}); + +const geistMono = Geist_Mono({ + variable: "--font-geist-mono", + subsets: ["latin"], +}); + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + + {children} + + + + + ); +} diff --git a/src/app/page.tsx b/src/app/page.tsx new file mode 100644 index 0000000..ff40778 --- /dev/null +++ b/src/app/page.tsx @@ -0,0 +1,563 @@ +"use client"; + +import { ChangeVersionDialog } from "@/components/change-version-dialog"; +import { CreateProfileDialog } from "@/components/create-profile-dialog"; +import { ProfilesDataTable } from "@/components/profile-data-table"; +import { ProfileSelectorDialog } from "@/components/profile-selector-dialog"; +import { ProxySettingsDialog } from "@/components/proxy-settings-dialog"; +import { SettingsDialog } from "@/components/settings-dialog"; +import { useUpdateNotifications } from "@/components/update-notification"; +import { Button } from "@/components/ui/button"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "@/components/ui/tooltip"; +import type { BrowserProfile, ProxySettings } from "@/types"; +import { invoke } from "@tauri-apps/api/core"; +import { listen } from "@tauri-apps/api/event"; +import { useCallback, useEffect, useRef, useState } from "react"; +import { GoGear, GoPlus } from "react-icons/go"; +import { showErrorToast } from "@/components/custom-toast"; + +type BrowserTypeString = + | "mullvad-browser" + | "firefox" + | "firefox-developer" + | "chromium" + | "brave" + | "zen" + | "tor-browser"; + +interface PendingUrl { + id: string; + url: string; +} + +export default function Home() { + const [profiles, setProfiles] = useState([]); + const [error, setError] = useState(null); + const [proxyDialogOpen, setProxyDialogOpen] = useState(false); + const [createProfileDialogOpen, setCreateProfileDialogOpen] = useState(false); + const [changeVersionDialogOpen, setChangeVersionDialogOpen] = useState(false); + const [settingsDialogOpen, setSettingsDialogOpen] = useState(false); + const [pendingUrls, setPendingUrls] = useState([]); + const [currentProfileForProxy, setCurrentProfileForProxy] = + useState(null); + const [currentProfileForVersionChange, setCurrentProfileForVersionChange] = + useState(null); + const [isClient, setIsClient] = useState(false); + + // Auto-update functionality - only initialize on client + const updateNotifications = useUpdateNotifications(); + const { checkForUpdates, isUpdating } = updateNotifications; + + // Ensure we're on the client side to prevent hydration mismatches + useEffect(() => { + setIsClient(true); + }, []); + + const loadProfiles = useCallback(async () => { + if (!isClient) return; // Only run on client side + + try { + const profileList = await invoke( + "list_browser_profiles" + ); + setProfiles(profileList); + + // Check for updates after loading profiles + await checkForUpdates(); + } catch (err: unknown) { + console.error("Failed to load profiles:", err); + setError(`Failed to load profiles: ${JSON.stringify(err)}`); + } + }, [checkForUpdates, isClient]); + + useEffect(() => { + if (!isClient) return; // Only run on client side + + void loadProfiles(); + + // Check for startup default browser prompt + void checkStartupPrompt(); + + // Listen for URL open events + void listenForUrlEvents(); + + // Check for startup URLs (when app was launched as default browser) + void checkStartupUrls(); + + // Set up periodic update checks (every 30 minutes) + const updateInterval = setInterval(() => { + void checkForUpdates(); + }, 30 * 60 * 1000); + + return () => { + clearInterval(updateInterval); + }; + }, [loadProfiles, checkForUpdates, isClient]); + + const checkStartupPrompt = async () => { + if (!isClient) return; // Only run on client side + + try { + const shouldShow = await invoke( + "should_show_settings_on_startup" + ); + if (shouldShow) { + setSettingsDialogOpen(true); + } + } catch (error) { + console.error("Failed to check startup prompt:", error); + } + }; + + const checkStartupUrls = async () => { + if (!isClient) return; // Only run on client side + + try { + const hasStartupUrl = await invoke( + "check_and_handle_startup_url" + ); + if (hasStartupUrl) { + console.log("Handled startup URL successfully"); + } + } catch (error) { + console.error("Failed to check startup URLs:", error); + } + }; + + const listenForUrlEvents = async () => { + if (!isClient) return; // Only run on client side + + try { + // Listen for URL open events from the deep link handler (when app is already running) + await listen("url-open-request", (event) => { + console.log("Received URL open request:", event.payload); + void handleUrlOpen(event.payload); + }); + + // Listen for show profile selector events + await listen("show-profile-selector", (event) => { + console.log("Received show profile selector request:", event.payload); + setPendingUrls((prev) => [ + ...prev, + { id: Date.now().toString(), url: event.payload }, + ]); + }); + + // Listen for show create profile dialog events + await listen("show-create-profile-dialog", (event) => { + console.log( + "Received show create profile dialog request:", + event.payload + ); + setError( + "No profiles available. Please create a profile first before opening URLs." + ); + setCreateProfileDialogOpen(true); + }); + } catch (error) { + console.error("Failed to setup URL listener:", error); + } + }; + + const handleUrlOpen = async (url: string) => { + if (!isClient) return; // Only run on client side + + try { + // Use smart profile selection + const result = await invoke("smart_open_url", { + url, + }); + console.log("Smart URL opening succeeded:", result); + // URL was handled successfully + } catch (error: any) { + console.log( + "Smart URL opening failed or requires profile selection:", + error + ); + + // Check if it's the special error cases + if (error === "show_selector") { + // Show profile selector + setPendingUrls((prev) => [...prev, { id: Date.now().toString(), url }]); + } else if (error === "no_profiles") { + // No profiles available, show error message + setError( + "No profiles available. Please create a profile first before opening URLs." + ); + } else { + // Some other error occurred + console.error("Failed to open URL:", error); + setError(`Failed to open URL: ${error}`); + } + } + }; + + const openProxyDialog = useCallback((profile: BrowserProfile | null) => { + setCurrentProfileForProxy(profile); + setProxyDialogOpen(true); + }, []); + + const openChangeVersionDialog = useCallback((profile: BrowserProfile) => { + setCurrentProfileForVersionChange(profile); + setChangeVersionDialogOpen(true); + }, []); + + const handleSaveProxy = useCallback( + async (proxySettings: ProxySettings) => { + setProxyDialogOpen(false); + setError(null); + + try { + if (currentProfileForProxy) { + await invoke("update_profile_proxy", { + profileName: currentProfileForProxy.name, + proxy: proxySettings, + }); + } + await loadProfiles(); + } catch (err: unknown) { + console.error("Failed to update proxy settings:", err); + setError(`Failed to update proxy settings: ${JSON.stringify(err)}`); + } + }, + [currentProfileForProxy, loadProfiles] + ); + + const handleCreateProfile = useCallback( + async (profileData: { + name: string; + browserStr: BrowserTypeString; + version: string; + proxy?: ProxySettings; + }) => { + setError(null); + + try { + const profile = await invoke( + "create_browser_profile_new", + { + name: profileData.name, + browserStr: profileData.browserStr, + version: profileData.version, + } + ); + + // Update proxy if provided + if (profileData.proxy) { + await invoke("update_profile_proxy", { + profileName: profile.name, + proxy: profileData.proxy, + }); + } + + await loadProfiles(); + } catch (error) { + setError(`Failed to create profile: ${error as any}`); + throw error; + } + }, + [loadProfiles] + ); + + const [runningProfiles, setRunningProfiles] = useState>( + new Set() + ); + + const runningProfilesRef = useRef>(new Set()); + + const checkBrowserStatus = useCallback( + async (profile: BrowserProfile) => { + if (!isClient) return; // Only run on client side + + try { + const isRunning = await invoke("check_browser_status", { + profile, + }); + + const currentRunning = runningProfilesRef.current.has(profile.name); + + if (isRunning !== currentRunning) { + setRunningProfiles((prev) => { + const next = new Set(prev); + if (isRunning) { + next.add(profile.name); + } else { + next.delete(profile.name); + } + runningProfilesRef.current = next; + return next; + }); + } + } catch (err) { + console.error("Failed to check browser status:", err); + } + }, + [isClient] + ); + + const launchProfile = useCallback( + async (profile: BrowserProfile) => { + if (!isClient) return; // Only run on client side + + setError(null); + + // Check if browser is disabled due to ongoing update + try { + const isDisabled = await invoke( + "is_browser_disabled_for_update", + { + browser: profile.browser, + } + ); + + if (isDisabled || isUpdating(profile.browser)) { + setError( + `${profile.browser} is currently being updated. Please wait for the update to complete.` + ); + return; + } + } catch (err) { + console.error("Failed to check browser update status:", err); + } + + try { + const updatedProfile = await invoke( + "launch_browser_profile", + { profile } + ); + await loadProfiles(); + await checkBrowserStatus(updatedProfile); + } catch (err: unknown) { + console.error("Failed to launch browser:", err); + setError(`Failed to launch browser: ${JSON.stringify(err)}`); + } + }, + [loadProfiles, checkBrowserStatus, isUpdating, isClient] + ); + + useEffect(() => { + if (profiles.length === 0 || !isClient) return; + + const interval = setInterval(() => { + profiles.forEach((profile) => { + void checkBrowserStatus(profile); + }); + }, 500); + + return () => { + clearInterval(interval); + }; + }, [profiles, checkBrowserStatus, isClient]); + + useEffect(() => { + runningProfilesRef.current = runningProfiles; + }, [runningProfiles]); + + useEffect(() => { + if (error) { + showErrorToast(error); + setError(null); + } + }, [error]); + + const handleDeleteProfile = useCallback( + async (profile: BrowserProfile) => { + setError(null); + try { + await invoke("delete_profile", { profileName: profile.name }); + await loadProfiles(); + } catch (err: unknown) { + console.error("Failed to delete profile:", err); + setError(`Failed to delete profile: ${JSON.stringify(err)}`); + } + }, + [loadProfiles] + ); + + const handleRenameProfile = useCallback( + async (oldName: string, newName: string) => { + setError(null); + try { + await invoke("rename_profile", { oldName, newName }); + await loadProfiles(); + } catch (err: unknown) { + console.error("Failed to rename profile:", err); + setError(`Failed to rename profile: ${JSON.stringify(err)}`); + throw err; + } + }, + [loadProfiles] + ); + + const handleKillProfile = useCallback( + async (profile: BrowserProfile) => { + setError(null); + try { + await invoke("kill_browser_profile", { profile }); + await loadProfiles(); + } catch (err: unknown) { + console.error("Failed to kill browser:", err); + setError(`Failed to kill browser: ${JSON.stringify(err)}`); + } + }, + [loadProfiles] + ); + + // Don't render anything until we're on the client side to prevent hydration issues + if (!isClient) { + return ( +
+
+ + +
+ Profiles +
+ + + + + Settings + + + + + + Create a new profile + +
+
+
+ +
Loading...
+
+
+
+
+ ); + } + + return ( +
+
+ + +
+ Profiles +
+ + + + + Settings + + + + + + Create a new profile + +
+
+
+ + + +
+
+ + { + setProxyDialogOpen(false); + }} + onSave={(proxy: ProxySettings) => void handleSaveProxy(proxy)} + initialSettings={currentProfileForProxy?.proxy} + browserType={currentProfileForProxy?.browser} + /> + + { + setCreateProfileDialogOpen(false); + }} + onCreateProfile={handleCreateProfile} + /> + + { + setSettingsDialogOpen(false); + }} + /> + + { + setChangeVersionDialogOpen(false); + }} + profile={currentProfileForVersionChange} + onVersionChanged={() => void loadProfiles()} + /> + + {pendingUrls.map((pendingUrl) => ( + { + setPendingUrls((prev) => + prev.filter((u) => u.id !== pendingUrl.id) + ); + }} + url={pendingUrl.url} + runningProfiles={runningProfiles} + /> + ))} +
+ ); +} diff --git a/src/components/change-version-dialog.tsx b/src/components/change-version-dialog.tsx new file mode 100644 index 0000000..d23d8a8 --- /dev/null +++ b/src/components/change-version-dialog.tsx @@ -0,0 +1,196 @@ +"use client"; + +import { LoadingButton } from "@/components/loading-button"; +import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; +import { Button } from "@/components/ui/button"; +import { Checkbox } from "@/components/ui/checkbox"; +import { + Dialog, + DialogContent, + DialogFooter, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { Label } from "@/components/ui/label"; +import { VersionSelector } from "@/components/version-selector"; +import { useBrowserDownload } from "@/hooks/use-browser-download"; +import type { BrowserProfile } from "@/types"; +import { invoke } from "@tauri-apps/api/core"; +import { LuTriangleAlert } from "react-icons/lu"; +import { useEffect, useState } from "react"; + +interface ChangeVersionDialogProps { + isOpen: boolean; + onClose: () => void; + profile: BrowserProfile | null; + onVersionChanged: () => void; +} + +export function ChangeVersionDialog({ + isOpen, + onClose, + profile, + onVersionChanged, +}: ChangeVersionDialogProps) { + const [selectedVersion, setSelectedVersion] = useState(null); + const [isUpdating, setIsUpdating] = useState(false); + const [showDowngradeWarning, setShowDowngradeWarning] = useState(false); + const [acknowledgeDowngrade, setAcknowledgeDowngrade] = useState(false); + + const { + availableVersions, + downloadedVersions, + isDownloading, + loadVersions, + loadDownloadedVersions, + downloadBrowser, + isVersionDownloaded, + } = useBrowserDownload(); + + useEffect(() => { + if (isOpen && profile) { + setSelectedVersion(profile.version); + setAcknowledgeDowngrade(false); + void loadVersions(profile.browser); + void loadDownloadedVersions(profile.browser); + } + }, [isOpen, profile, loadVersions, loadDownloadedVersions]); + + useEffect(() => { + if (profile && selectedVersion) { + // Check if this is a downgrade + const currentVersionIndex = availableVersions.findIndex( + (v) => v.tag_name === profile.version + ); + const selectedVersionIndex = availableVersions.findIndex( + (v) => v.tag_name === selectedVersion + ); + + // If selected version has a higher index, it's older (downgrade) + const isDowngrade = + currentVersionIndex !== -1 && + selectedVersionIndex !== -1 && + selectedVersionIndex > currentVersionIndex; + setShowDowngradeWarning(isDowngrade); + + if (!isDowngrade) { + setAcknowledgeDowngrade(false); + } + } + }, [selectedVersion, profile, availableVersions]); + + const handleDownload = async () => { + if (!profile || !selectedVersion) return; + await downloadBrowser(profile.browser, selectedVersion); + }; + + const handleVersionChange = async () => { + if (!profile || !selectedVersion) return; + + setIsUpdating(true); + try { + await invoke("update_profile_version", { + profileName: profile.name, + version: selectedVersion, + }); + onVersionChanged(); + onClose(); + } catch (error) { + console.error("Failed to update profile version:", error); + } finally { + setIsUpdating(false); + } + }; + + const canUpdate = + profile && + selectedVersion && + selectedVersion !== profile.version && + selectedVersion && + isVersionDownloaded(selectedVersion) && + (!showDowngradeWarning || acknowledgeDowngrade); + + if (!profile) return null; + + return ( + + + + Change Browser Version + + +
+
+ +
{profile.name}
+
+ +
+ +
+ {profile.version} +
+
+ + {/* Version Selection */} +
+ + { + void handleDownload(); + }} + placeholder="Select version..." + /> +
+ + {/* Downgrade Warning */} + {showDowngradeWarning && ( + + + + Downgrade Warning + + + You are about to downgrade from version {profile.version} to{" "} + {selectedVersion}. This may lead to compatibility issues, data + loss, or unexpected behavior. +
+ { + setAcknowledgeDowngrade(checked as boolean); + }} + /> + +
+
+
+ )} +
+ + + + { + void handleVersionChange(); + }} + disabled={!canUpdate} + > + {isUpdating ? "Updating..." : "Update Version"} + + +
+
+ ); +} diff --git a/src/components/create-profile-dialog.tsx b/src/components/create-profile-dialog.tsx new file mode 100644 index 0000000..f8927cc --- /dev/null +++ b/src/components/create-profile-dialog.tsx @@ -0,0 +1,401 @@ +"use client"; + +import { LoadingButton } from "@/components/loading-button"; +import { Button } from "@/components/ui/button"; +import { Checkbox } from "@/components/ui/checkbox"; +import { + Dialog, + DialogContent, + DialogFooter, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "@/components/ui/tooltip"; +import { VersionSelector } from "@/components/version-selector"; +import { useBrowserDownload } from "@/hooks/use-browser-download"; +import type { BrowserProfile, ProxySettings } from "@/types"; +import { invoke } from "@tauri-apps/api/core"; +import { useEffect, useState } from "react"; +import { toast } from "sonner"; + +type BrowserTypeString = + | "mullvad-browser" + | "firefox" + | "firefox-developer" + | "chromium" + | "brave" + | "zen" + | "tor-browser"; + +interface CreateProfileDialogProps { + isOpen: boolean; + onClose: () => void; + onCreateProfile: (profileData: { + name: string; + browserStr: BrowserTypeString; + version: string; + proxy?: ProxySettings; + }) => Promise; +} + +export function CreateProfileDialog({ + isOpen, + onClose, + onCreateProfile, +}: CreateProfileDialogProps) { + const [profileName, setProfileName] = useState(""); + const [selectedBrowser, setSelectedBrowser] = + useState("mullvad-browser"); + const [selectedVersion, setSelectedVersion] = useState(null); + const [supportedBrowsers, setSupportedBrowsers] = useState< + BrowserTypeString[] + >([]); + const [isCreating, setIsCreating] = useState(false); + const [existingProfiles, setExistingProfiles] = useState( + [] + ); + + // Proxy settings + const [proxyEnabled, setProxyEnabled] = useState(false); + const [proxyType, setProxyType] = useState("http"); + const [proxyHost, setProxyHost] = useState(""); + const [proxyPort, setProxyPort] = useState(8080); + + const { + availableVersions, + downloadedVersions, + isDownloading, + loadVersions, + loadDownloadedVersions, + downloadBrowser, + isVersionDownloaded, + } = useBrowserDownload(); + + useEffect(() => { + if (isOpen) { + void loadSupportedBrowsers(); + void loadExistingProfiles(); + } + }, [isOpen]); + + useEffect(() => { + if (isOpen && selectedBrowser) { + // Reset selected version when browser changes + setSelectedVersion(null); + void loadVersions(selectedBrowser); + void loadDownloadedVersions(selectedBrowser); + } + }, [isOpen, selectedBrowser, loadVersions, loadDownloadedVersions]); + + // Set default version when versions are loaded and no version is selected + useEffect(() => { + if (availableVersions.length > 0 && selectedBrowser) { + // Always reset version when browser changes or versions are loaded + // Find the latest stable version (not alpha/beta) + const stableVersions = availableVersions.filter((v) => !v.is_alpha); + + if (stableVersions.length > 0) { + // Select the first stable version (they're already sorted newest first) + setSelectedVersion(stableVersions[0].tag_name); + } else if (availableVersions.length > 0) { + // If no stable version found, select the first available version + setSelectedVersion(availableVersions[0].tag_name); + } + } + }, [availableVersions, selectedBrowser]); + + const loadSupportedBrowsers = async () => { + try { + const browsers = await invoke( + "get_supported_browsers" + ); + setSupportedBrowsers(browsers); + if (browsers.includes("mullvad-browser")) { + setSelectedBrowser("mullvad-browser"); + } else if (browsers.length > 0) { + setSelectedBrowser(browsers[0]); + } + } catch (error) { + console.error("Failed to load supported browsers:", error); + } + }; + + const loadExistingProfiles = async () => { + try { + const profiles = await invoke("list_browser_profiles"); + setExistingProfiles(profiles); + } catch (error) { + console.error("Failed to load existing profiles:", error); + } + }; + + const handleDownload = async () => { + if (!selectedBrowser || !selectedVersion) return; + await downloadBrowser(selectedBrowser, selectedVersion); + }; + + const validateProfileName = (name: string): string | null => { + const trimmedName = name.trim(); + + if (!trimmedName) { + return "Profile name cannot be empty"; + } + + // Check for duplicate names (case insensitive) + const isDuplicate = existingProfiles.some( + (profile) => profile.name.toLowerCase() === trimmedName.toLowerCase() + ); + + if (isDuplicate) { + return "A profile with this name already exists"; + } + + return null; + }; + + // Helper to determine if proxy should be disabled for the selected browser + const isProxyDisabled = selectedBrowser === "tor-browser"; + + // Update proxy enabled state when browser changes to tor-browser + useEffect(() => { + if (selectedBrowser === "tor-browser" && proxyEnabled) { + setProxyEnabled(false); + } + }, [selectedBrowser, proxyEnabled]); + + const handleCreate = async () => { + if (!profileName.trim() || !selectedBrowser || !selectedVersion) return; + + // Validate profile name + const nameError = validateProfileName(profileName); + if (nameError) { + toast.error(nameError); + return; + } + + setIsCreating(true); + try { + const proxy = + proxyEnabled && !isProxyDisabled + ? { + enabled: true, + proxy_type: proxyType, + host: proxyHost, + port: proxyPort, + } + : undefined; + + await onCreateProfile({ + name: profileName.trim(), + browserStr: selectedBrowser, + version: selectedVersion, + proxy, + }); + + // Reset form + setProfileName(""); + setSelectedVersion(null); + setProxyEnabled(false); + setProxyHost(""); + setProxyPort(8080); + onClose(); + } catch (error) { + console.error("Failed to create profile:", error); + } finally { + setIsCreating(false); + } + }; + + const nameError = profileName.trim() + ? validateProfileName(profileName) + : null; + const canCreate = + profileName.trim() && + selectedBrowser && + selectedVersion && + isVersionDownloaded(selectedVersion) && + (!proxyEnabled || isProxyDisabled || (proxyHost && proxyPort)) && + !nameError; + + return ( + + + + Create New Profile + + +
+ {/* Profile Name */} +
+ + { + setProfileName(e.target.value); + }} + placeholder="Enter profile name" + className={nameError ? "border-red-500" : ""} + /> + {nameError &&

{nameError}

} +
+ + {/* Browser Selection */} +
+ + +
+ + {/* Version Selection */} +
+ + { + void handleDownload(); + }} + placeholder="Select version..." + /> +
+ + {/* Proxy Settings */} +
+
+ {isProxyDisabled ? ( + + +
+ + +
+
+ +

+ Tor Browser has its own built-in proxy system and + doesn't support additional proxy configuration +

+
+
+ ) : ( + <> + { + setProxyEnabled(checked as boolean); + }} + /> + + + )} +
+ + {proxyEnabled && !isProxyDisabled && ( + <> +
+ + +
+ +
+ + { + setProxyHost(e.target.value); + }} + placeholder="e.g. 127.0.0.1" + /> +
+ +
+ + { + setProxyPort(Number.parseInt(e.target.value, 10) || 0); + }} + placeholder="e.g. 8080" + min="1" + max="65535" + /> +
+ + )} +
+
+ + + + void handleCreate()} + disabled={!canCreate} + > + Create Profile + + +
+
+ ); +} diff --git a/src/components/custom-toast.tsx b/src/components/custom-toast.tsx new file mode 100644 index 0000000..3ce0adf --- /dev/null +++ b/src/components/custom-toast.tsx @@ -0,0 +1,417 @@ +/** + * Unified Toast System + * + * This module provides a comprehensive toast system that solves styling issues + * and provides a single, flexible toast component for all use cases. + * + * Features: + * - Proper background styling (no transparency issues) + * - Loading states with spinners + * - Progress bars for downloads/updates + * - Success/error states + * - Customizable icons and content + * + * Usage Examples: + * + * Simple loading toast: + * ``` + * import { showToast } from "./custom-toast"; + * showToast({ + * type: "loading", + * title: "Loading...", + * description: "Please wait..." + * }); + * ``` + * + * Download progress toast: + * ``` + * showToast({ + * type: "download", + * title: "Downloading Firefox 123.0", + * progress: { percentage: 45, speed: "2.5", eta: "30s" } + * }); + * ``` + * + * Version update progress: + * ``` + * showToast({ + * type: "version-update", + * title: "Updating browser versions", + * progress: { current: 3, total: 5, found: 12 } + * }); + * ``` + */ + +import React from "react"; +import { toast as sonnerToast } from "sonner"; +import { + LuCheckCheck, + LuTriangleAlert, + LuDownload, + LuRefreshCw, +} from "react-icons/lu"; + +interface BaseToastProps { + id?: string; + title: string; + description?: string; + duration?: number; +} + +interface LoadingToastProps extends BaseToastProps { + type: "loading"; +} + +interface SuccessToastProps extends BaseToastProps { + type: "success"; +} + +interface ErrorToastProps extends BaseToastProps { + type: "error"; +} + +interface DownloadToastProps extends BaseToastProps { + type: "download"; + stage?: "downloading" | "extracting" | "verifying" | "completed"; + progress?: { + percentage: number; + speed?: string; + eta?: string; + }; +} + +interface VersionUpdateToastProps extends BaseToastProps { + type: "version-update"; + progress?: { + current: number; + total: number; + found: number; + }; +} + +interface FetchingToastProps extends BaseToastProps { + type: "fetching"; + browserName?: string; +} + +type ToastProps = + | LoadingToastProps + | SuccessToastProps + | ErrorToastProps + | DownloadToastProps + | VersionUpdateToastProps + | FetchingToastProps; + +function getToastIcon(type: ToastProps["type"], stage?: string) { + switch (type) { + case "success": + return ; + case "error": + return ; + case "download": + if (stage === "completed") { + return ( + + ); + } + return ; + case "version-update": + return ( + + ); + case "fetching": + return ( + + ); + case "loading": + default: + return ( +
+ ); + } +} + +export function UnifiedToast(props: ToastProps) { + const { title, description, type } = props; + const stage = "stage" in props ? props.stage : undefined; + const progress = "progress" in props ? props.progress : undefined; + + return ( +
+
{getToastIcon(type, stage)}
+
+

+ {title} +

+ + {/* Download progress */} + {type === "download" && + progress && + "percentage" in progress && + stage === "downloading" && ( +
+
+

+ {progress.percentage.toFixed(1)}% + {progress.speed && ` • ${progress.speed} MB/s`} + {progress.eta && ` • ${progress.eta} remaining`} +

+
+
+
+
+
+ )} + + {/* Version update progress */} + {type === "version-update" && progress && "found" in progress && ( +
+

+ {progress.found} new versions found so far +

+
+
+
+
+ + {progress.current}/{progress.total} + +
+
+ )} + + {/* Description */} + {description && ( +

+ {description} +

+ )} + + {/* Stage-specific descriptions for downloads */} + {type === "download" && !description && ( + <> + {stage === "extracting" && ( +

+ Extracting browser files... +

+ )} + {stage === "verifying" && ( +

+ Verifying installation... +

+ )} + + )} +
+
+ ); +} + +// Unified toast function +export function showToast(props: ToastProps & { id?: string }) { + const toastId = props.id ?? `toast-${props.type}-${Date.now()}`; + + // Improved duration logic - make toasts disappear more quickly + let duration: number; + if (props.duration !== undefined) { + duration = props.duration; + } else { + switch (props.type) { + case "loading": + case "fetching": + duration = 10000; // 10 seconds instead of infinite + break; + case "download": + // Only keep infinite for active downloading, others get shorter durations + if ("stage" in props && props.stage === "downloading") { + duration = Number.POSITIVE_INFINITY; + } else if ("stage" in props && props.stage === "completed") { + duration = 3000; // Shorter duration for completed downloads + } else { + duration = 8000; // 8 seconds for extracting/verifying + } + break; + case "version-update": + duration = 15000; // 15 seconds instead of infinite + break; + case "success": + duration = 3000; // Shorter success duration + break; + case "error": + duration = 5000; // Reasonable error duration + break; + default: + duration = 4000; + } + } + + if (props.type === "success") { + sonnerToast.success(, { + id: toastId, + duration, + style: { + background: "transparent", + border: "none", + boxShadow: "none", + padding: 0, + }, + }); + } else if (props.type === "error") { + sonnerToast.error(, { + id: toastId, + duration, + style: { + background: "transparent", + border: "none", + boxShadow: "none", + padding: 0, + }, + }); + } else { + sonnerToast.custom((id) => , { + id: toastId, + duration, + style: { + background: "transparent", + border: "none", + boxShadow: "none", + padding: 0, + }, + }); + } + + return toastId; +} + +// Convenience functions for common use cases +export function showLoadingToast( + title: string, + options?: { + id?: string; + description?: string; + duration?: number; + } +) { + return showToast({ + type: "loading", + title, + ...options, + }); +} + +export function showDownloadToast( + browserName: string, + version: string, + stage: "downloading" | "extracting" | "verifying" | "completed", + progress?: { percentage: number; speed?: string; eta?: string }, + options?: { suppressCompletionToast?: boolean } +) { + const title = + stage === "completed" + ? `${browserName} ${version} downloaded successfully!` + : stage === "downloading" + ? `Downloading ${browserName} ${version}` + : stage === "extracting" + ? `Extracting ${browserName} ${version}` + : `Verifying ${browserName} ${version}`; + + // Don't show completion toast if suppressed (for auto-update scenarios) + if (stage === "completed" && options?.suppressCompletionToast) { + dismissToast(`download-${browserName.toLowerCase()}-${version}`); + return; + } + + return showToast({ + type: "download", + title, + stage, + progress, + id: `download-${browserName.toLowerCase()}-${version}`, + }); +} + +export function showVersionUpdateToast( + title: string, + options?: { + id?: string; + description?: string; + progress?: { + current: number; + total: number; + found: number; + }; + duration?: number; + } +) { + return showToast({ + type: "version-update", + title, + ...options, + }); +} + +export function showFetchingToast( + browserName: string, + options?: { + id?: string; + description?: string; + duration?: number; + } +) { + return showToast({ + type: "fetching", + title: `Checking for new ${browserName} versions...`, + description: + options?.description ?? "Fetching latest release information...", + browserName, + ...options, + }); +} + +export function showSuccessToast( + title: string, + options?: { + id?: string; + description?: string; + duration?: number; + } +) { + return showToast({ + type: "success", + title, + ...options, + }); +} + +export function showErrorToast( + title: string, + options?: { + id?: string; + description?: string; + duration?: number; + } +) { + return showToast({ + type: "error", + title, + ...options, + }); +} + +// Generic helper for dismissing toasts +export function dismissToast(id: string) { + sonnerToast.dismiss(id); +} + +// Dismiss all toasts +export function dismissAllToasts() { + sonnerToast.dismiss(); +} diff --git a/src/components/loading-button.tsx b/src/components/loading-button.tsx new file mode 100644 index 0000000..2cbf71d --- /dev/null +++ b/src/components/loading-button.tsx @@ -0,0 +1,17 @@ +import { LuLoaderCircle } from "react-icons/lu"; +import { type ButtonProps, Button as UIButton } from "./ui/button"; +type Props = ButtonProps & { + isLoading: boolean; + "aria-label"?: string; +}; +export const LoadingButton = ({ isLoading, ...props }: Props) => { + return ( + + {isLoading ? ( + + ) : ( + props.children + )} + + ); +}; diff --git a/src/components/profile-data-table.tsx b/src/components/profile-data-table.tsx new file mode 100644 index 0000000..c742287 --- /dev/null +++ b/src/components/profile-data-table.tsx @@ -0,0 +1,509 @@ +"use client"; + +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@/components/ui/table"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "@/components/ui/tooltip"; +import type { BrowserProfile } from "@/types"; +import { + type ColumnDef, + type SortingState, + flexRender, + getCoreRowModel, + getSortedRowModel, + useReactTable, +} from "@tanstack/react-table"; +import { LuChevronDown, LuChevronUp } from "react-icons/lu"; +import { IoEllipsisHorizontal } from "react-icons/io5"; +import * as React from "react"; +import { CiCircleCheck } from "react-icons/ci"; +import { useTableSorting } from "@/hooks/use-table-sorting"; +import { Input } from "./ui/input"; +import { Label } from "./ui/label"; +import { getBrowserDisplayName, getBrowserIcon } from "@/lib/browser-utils"; + +interface ProfilesDataTableProps { + data: BrowserProfile[]; + onLaunchProfile: (profile: BrowserProfile) => void | Promise; + onKillProfile: (profile: BrowserProfile) => void | Promise; + onProxySettings: (profile: BrowserProfile) => void; + onDeleteProfile: (profile: BrowserProfile) => void | Promise; + onRenameProfile: (oldName: string, newName: string) => Promise; + onChangeVersion: (profile: BrowserProfile) => void; + runningProfiles: Set; + isUpdating?: (browser: string) => boolean; +} + +export function ProfilesDataTable({ + data, + onLaunchProfile, + onKillProfile, + onProxySettings, + onDeleteProfile, + onRenameProfile, + onChangeVersion, + runningProfiles, + isUpdating = () => false, +}: ProfilesDataTableProps) { + const { getTableSorting, updateSorting, isLoaded } = useTableSorting(); + const [sorting, setSorting] = React.useState([]); + const [profileToRename, setProfileToRename] = + React.useState(null); + const [newProfileName, setNewProfileName] = React.useState(""); + const [renameError, setRenameError] = React.useState(null); + const [isClient, setIsClient] = React.useState(false); + + // Ensure we're on the client side to prevent hydration mismatches + React.useEffect(() => { + setIsClient(true); + }, []); + + // Update local sorting state when settings are loaded + React.useEffect(() => { + if (isLoaded && isClient) { + setSorting(getTableSorting()); + } + }, [isLoaded, getTableSorting, isClient]); + + // Handle sorting changes + const handleSortingChange = React.useCallback( + (updater: React.SetStateAction) => { + if (!isClient) return; + const newSorting = + typeof updater === "function" ? updater(sorting) : updater; + setSorting(newSorting); + updateSorting(newSorting); + }, + [sorting, updateSorting, isClient] + ); + + const handleRename = async () => { + if (!profileToRename || !newProfileName.trim()) return; + + try { + await onRenameProfile(profileToRename.name, newProfileName.trim()); + setProfileToRename(null); + setNewProfileName(""); + setRenameError(null); + } catch (err) { + setRenameError(err as string); + } + }; + + const columns: ColumnDef[] = React.useMemo( + () => [ + { + id: "actions", + cell: ({ row }) => { + const profile = row.original; + const isRunning = isClient && runningProfiles.has(profile.name); + const isBrowserUpdating = isClient && isUpdating(profile.browser); + + // Check if any TOR browser profile is running + const isTorBrowser = profile.browser === "tor-browser"; + const anyTorRunning = + isClient && + data.some( + (p) => p.browser === "tor-browser" && runningProfiles.has(p.name) + ); + const shouldDisableTorStart = + isTorBrowser && !isRunning && anyTorRunning; + + const isDisabled = shouldDisableTorStart || isBrowserUpdating; + + return ( +
+ + + + + + {!isClient + ? "Loading..." + : isRunning + ? "Click to forcefully stop the browser" + : isBrowserUpdating + ? `${profile.browser} is being updated. Please wait for the update to complete.` + : shouldDisableTorStart + ? "Only one TOR browser instance can run at a time. Stop the running TOR browser first." + : "Click to launch the browser"} + + +
+ ); + }, + }, + { + accessorKey: "name", + header: ({ column }) => { + const isSorted = column.getIsSorted(); + return ( + + ); + }, + enableSorting: true, + sortingFn: "alphanumeric", + }, + { + accessorKey: "browser", + header: ({ column }) => { + const isSorted = column.getIsSorted(); + return ( + + ); + }, + cell: ({ row }) => { + const browser: string = row.getValue("browser"); + const IconComponent = getBrowserIcon(browser); + return ( +
+ {IconComponent && } + {getBrowserDisplayName(browser)} +
+ ); + }, + enableSorting: true, + sortingFn: (rowA, rowB, columnId) => { + const browserA = getBrowserDisplayName(rowA.getValue(columnId)); + const browserB = getBrowserDisplayName(rowB.getValue(columnId)); + return browserA.localeCompare(browserB); + }, + }, + { + accessorKey: "version", + header: "Version", + }, + { + id: "status", + header: ({ column }) => { + const isSorted = column.getIsSorted(); + return ( + + ); + }, + cell: ({ row }) => { + const profile = row.original; + const isRunning = isClient && runningProfiles.has(profile.name); + return ( +
+ + {isClient ? (isRunning ? "Running" : "Stopped") : "Loading..."} + + {isClient && isRunning && profile.process_id && ( + + PID: {profile.process_id} + + )} +
+ ); + }, + enableSorting: true, + sortingFn: (rowA, rowB) => { + // If not on client, sort by name only to ensure consistency + if (!isClient) { + return rowA.original.name.localeCompare(rowB.original.name); + } + + const isRunningA = runningProfiles.has(rowA.original.name); + const isRunningB = runningProfiles.has(rowB.original.name); + + // Running profiles come first, then stopped ones + // Secondary sort by profile name + if (isRunningA === isRunningB) { + return rowA.original.name.localeCompare(rowB.original.name); + } + return isRunningA ? -1 : 1; + }, + }, + { + id: "proxy", + header: "Proxy", + cell: ({ row }) => { + const profile = row.original; + const hasProxy = profile.proxy?.enabled; + return ( + + +
+ {hasProxy && ( + + )} + + {hasProxy ? profile.proxy?.proxy_type : "Disabled"} + +
+
+ + {hasProxy + ? `${profile.proxy?.proxy_type.toUpperCase()} proxy enabled (${ + profile.proxy?.host + }:${profile.proxy?.port})` + : "No proxy configured"} + +
+ ); + }, + }, + // Update the settings column to use the confirmation dialog + { + id: "settings", + cell: ({ row }) => { + const profile = row.original; + const isRunning = isClient && runningProfiles.has(profile.name); + const isBrowserUpdating = isClient && isUpdating(profile.browser); + return ( +
+ + + + + + Actions + + { + onProxySettings(profile); + }} + disabled={!isClient || isBrowserUpdating} + > + Configure proxy + + { + onChangeVersion(profile); + }} + disabled={!isClient || isRunning || isBrowserUpdating} + > + Change version + + { + setProfileToRename(profile); + setNewProfileName(profile.name); + }} + disabled={!isClient || isRunning || isBrowserUpdating} + > + Rename profile + + void onDeleteProfile(profile)} + className="text-red-600" + disabled={!isClient || isRunning || isBrowserUpdating} + > + Delete profile + + + +
+ ); + }, + }, + ], + [isClient, runningProfiles, isUpdating, data] + ); + + const table = useReactTable({ + data, + columns, + state: { + sorting, + }, + onSortingChange: handleSortingChange, + getSortedRowModel: getSortedRowModel(), + getCoreRowModel: getCoreRowModel(), + }); + + return ( + <> +
+ + + {table.getHeaderGroups().map((headerGroup) => ( + + {headerGroup.headers.map((header) => { + return ( + + {header.isPlaceholder + ? null + : flexRender( + header.column.columnDef.header, + header.getContext() + )} + + ); + })} + + ))} + + + {table.getRowModel().rows.length ? ( + table.getRowModel().rows.map((row) => ( + + {row.getVisibleCells().map((cell) => ( + + {flexRender( + cell.column.columnDef.cell, + cell.getContext() + )} + + ))} + + )) + ) : ( + + + No profiles found. + + + )} + +
+
+ + { + if (!open) { + setProfileToRename(null); + setNewProfileName(""); + setRenameError(null); + } + }} + > + + + Rename Profile + +
+
+ + { + setNewProfileName(e.target.value); + }} + className="col-span-3" + /> +
+ {renameError && ( +

{renameError}

+ )} +
+ + + + +
+
+ + ); +} diff --git a/src/components/profile-selector-dialog.tsx b/src/components/profile-selector-dialog.tsx new file mode 100644 index 0000000..e14782a --- /dev/null +++ b/src/components/profile-selector-dialog.tsx @@ -0,0 +1,366 @@ +"use client"; + +import { LoadingButton } from "@/components/loading-button"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { + Dialog, + DialogContent, + DialogFooter, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { Label } from "@/components/ui/label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "@/components/ui/tooltip"; +import type { BrowserProfile } from "@/types"; +import { invoke } from "@tauri-apps/api/core"; +import { LuCopy } from "react-icons/lu"; +import { useEffect, useState } from "react"; +import { toast } from "sonner"; +import { getBrowserDisplayName, getBrowserIcon } from "@/lib/browser-utils"; + +interface ProfileSelectorDialogProps { + isOpen: boolean; + onClose: () => void; + url?: string; + runningProfiles?: Set; +} + +export function ProfileSelectorDialog({ + isOpen, + onClose, + url, + runningProfiles = new Set(), +}: ProfileSelectorDialogProps) { + const [profiles, setProfiles] = useState([]); + const [selectedProfile, setSelectedProfile] = useState(null); + const [isLoading, setIsLoading] = useState(false); + const [isLaunching, setIsLaunching] = useState(false); + + useEffect(() => { + if (isOpen) { + void loadProfiles(); + } + }, [isOpen]); + + const loadProfiles = async () => { + setIsLoading(true); + try { + const profileList = await invoke( + "list_browser_profiles" + ); + + // Sort profiles by name + profileList.sort((a, b) => a.name.localeCompare(b.name)); + + // Don't filter any profiles, show all of them + setProfiles(profileList); + + // Auto-select first available profile for link opening + if (profileList.length > 0) { + // Find the first profile that can be used for opening links + const availableProfile = profileList.find((profile) => { + return canUseProfileForLinks(profile, profileList, runningProfiles); + }); + + if (availableProfile) { + setSelectedProfile(availableProfile.name); + } else { + // If no suitable profile found, still select the first one to show UI + setSelectedProfile(profileList[0].name); + } + } + } catch (error) { + console.error("Failed to load profiles:", error); + } finally { + setIsLoading(false); + } + }; + + // Helper function to determine if a profile can be used for opening links + const canUseProfileForLinks = ( + profile: BrowserProfile, + allProfiles: BrowserProfile[], + runningProfiles: Set + ): boolean => { + const isRunning = runningProfiles.has(profile.name); + + // For TOR browser: Check if any TOR browser is running + if (profile.browser === "tor-browser") { + const runningTorProfiles = allProfiles.filter( + (p) => p.browser === "tor-browser" && runningProfiles.has(p.name) + ); + + // If no TOR browser is running, allow any TOR profile + if (runningTorProfiles.length === 0) { + return true; + } + + // If TOR browser(s) are running, only allow the running one(s) + return isRunning; + } + + // For Mullvad browser: never allow if running + if (profile.browser === "mullvad-browser" && isRunning) { + return false; + } + + // For other browsers: always allow + return true; + }; + + // Helper function to get tooltip content for profiles + const getProfileTooltipContent = (profile: BrowserProfile): string => { + const isRunning = runningProfiles.has(profile.name); + + if (profile.browser === "tor-browser") { + const runningTorProfiles = profiles.filter( + (p) => p.browser === "tor-browser" && runningProfiles.has(p.name) + ); + + // If another TOR profile is running, this one is not available + return "Only 1 instance can run at a time"; + } + + if (profile.browser === "mullvad-browser") { + if (isRunning) { + return "Only launching the browser is supported, opening them in a running browser is not yet available"; + } + return "Only launching the browser is supported, opening them in a running browser is not yet available"; + } + + if (isRunning) { + return "URL will open in a new tab in the existing browser window"; + } + + return ""; + }; + + const handleOpenUrl = async () => { + if (!selectedProfile || !url) return; + + setIsLaunching(true); + try { + await invoke("open_url_with_profile", { + profileName: selectedProfile, + url, + }); + onClose(); + } catch (error) { + console.error("Failed to open URL with profile:", error); + } finally { + setIsLaunching(false); + } + }; + + const handleCancel = () => { + setSelectedProfile(null); + onClose(); + }; + + const handleCopyUrl = async () => { + if (!url) return; + + try { + await navigator.clipboard.writeText(url); + toast.success("URL copied to clipboard!"); + } catch (error) { + console.error("Failed to copy URL:", error); + toast.error("Failed to copy URL to clipboard"); + } + }; + + const selectedProfileData = profiles.find((p) => p.name === selectedProfile); + const isSelectedProfileRunning = selectedProfile + ? runningProfiles.has(selectedProfile) + : false; + + // Check if the selected profile can be used for opening links + const canOpenWithSelectedProfile = () => { + if (!selectedProfileData) return false; + return canUseProfileForLinks( + selectedProfileData, + profiles, + runningProfiles + ); + }; + + // Get tooltip content for disabled profiles + const getTooltipContent = () => { + if (!selectedProfileData) return ""; + return getProfileTooltipContent(selectedProfileData); + }; + + return ( + + + + Choose Profile + + +
+ {url && ( +
+
+ + +
+
+ {url} +
+
+ )} + +
+ + {isLoading ? ( +
+ Loading profiles... +
+ ) : profiles.length === 0 ? ( +
+
+ No profiles available. Please create a profile first. +
+
+ Close this dialog and create a profile from the main window to + get started. +
+
+ ) : ( + <> + + + )} +
+
+ + + + + +
+ void handleOpenUrl()} + disabled={ + !selectedProfile || + profiles.length === 0 || + !canOpenWithSelectedProfile() + } + > + Open + +
+
+ {getTooltipContent() && ( + {getTooltipContent()} + )} +
+
+
+
+ ); +} diff --git a/src/components/proxy-settings-dialog.tsx b/src/components/proxy-settings-dialog.tsx new file mode 100644 index 0000000..0aa542e --- /dev/null +++ b/src/components/proxy-settings-dialog.tsx @@ -0,0 +1,240 @@ +"use client"; + +import { Button } from "@/components/ui/button"; +import { Checkbox } from "@/components/ui/checkbox"; +import { + Dialog, + DialogContent, + DialogFooter, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "@/components/ui/tooltip"; +import { useEffect, useState } from "react"; + +interface ProxySettings { + enabled: boolean; + proxy_type: string; + host: string; + port: number; +} + +interface ProxySettingsDialogProps { + isOpen: boolean; + onClose: () => void; + onSave: (proxySettings: ProxySettings) => void; + initialSettings?: ProxySettings; + browserType?: string; +} + +export function ProxySettingsDialog({ + isOpen, + onClose, + onSave, + initialSettings, + browserType, +}: ProxySettingsDialogProps) { + const [settings, setSettings] = useState({ + enabled: initialSettings?.enabled ?? false, + proxy_type: initialSettings?.proxy_type ?? "http", + host: initialSettings?.host ?? "", + port: initialSettings?.port ?? 8080, + }); + + const [initialSettingsState, setInitialSettingsState] = + useState({ + enabled: false, + proxy_type: "http", + host: "", + port: 8080, + }); + + useEffect(() => { + if (isOpen && initialSettings) { + const newSettings = { + enabled: initialSettings.enabled, + proxy_type: initialSettings.proxy_type, + host: initialSettings.host, + port: initialSettings.port, + }; + setSettings(newSettings); + setInitialSettingsState(newSettings); + } else if (isOpen) { + const defaultSettings = { + enabled: false, + proxy_type: "http", + host: "", + port: 80, + }; + setSettings(defaultSettings); + setInitialSettingsState(defaultSettings); + } + }, [isOpen, initialSettings]); + + const handleSubmit = () => { + onSave(settings); + }; + + // Check if settings have changed + const hasChanged = () => { + return ( + settings.enabled !== initialSettingsState.enabled || + settings.proxy_type !== initialSettingsState.proxy_type || + settings.host !== initialSettingsState.host || + settings.port !== initialSettingsState.port + ); + }; + + // Helper to determine if proxy should be disabled for the selected browser + const isProxyDisabled = browserType === "tor-browser"; + + // Update proxy enabled state when browser is tor-browser + useEffect(() => { + if (browserType === "tor-browser" && settings.enabled) { + setSettings((prev) => ({ ...prev, enabled: false })); + } + }, [browserType, settings.enabled]); + + return ( + { + if (!open) { + onClose(); + } + }} + > + + + Proxy Settings + + +
+
+ {isProxyDisabled ? ( + + +
+ + +
+
+ +

+ Tor Browser has its own built-in proxy system and + doesn't support additional proxy configuration +

+
+
+ ) : ( + <> + { + setSettings({ ...settings, enabled: checked as boolean }); + }} + /> + + + )} +
+ + {settings.enabled && !isProxyDisabled && ( + <> +
+ + +
+ +
+ + { + setSettings({ ...settings, host: e.target.value }); + }} + placeholder="e.g. 127.0.0.1" + /> +
+ +
+ + { + setSettings({ + ...settings, + port: Number.parseInt(e.target.value, 10) || 0, + }); + }} + placeholder="e.g. 8080" + min="1" + max="65535" + /> +
+ + )} +
+ + + + + +
+
+ ); +} diff --git a/src/components/settings-dialog.tsx b/src/components/settings-dialog.tsx new file mode 100644 index 0000000..f6ad183 --- /dev/null +++ b/src/components/settings-dialog.tsx @@ -0,0 +1,266 @@ +"use client"; + +import { LoadingButton } from "@/components/loading-button"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { Checkbox } from "@/components/ui/checkbox"; +import { + Dialog, + DialogContent, + DialogFooter, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { Label } from "@/components/ui/label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { invoke } from "@tauri-apps/api/core"; +import { useTheme } from "next-themes"; +import { useEffect, useState } from "react"; + +interface AppSettings { + set_as_default_browser: boolean; + show_settings_on_startup: boolean; + theme: string; + auto_updates_enabled: boolean; +} + +interface SettingsDialogProps { + isOpen: boolean; + onClose: () => void; +} + +export function SettingsDialog({ isOpen, onClose }: SettingsDialogProps) { + const [settings, setSettings] = useState({ + set_as_default_browser: false, + show_settings_on_startup: true, + theme: "system", + auto_updates_enabled: true, + }); + const [originalSettings, setOriginalSettings] = useState({ + set_as_default_browser: false, + show_settings_on_startup: true, + theme: "system", + auto_updates_enabled: true, + }); + const [isDefaultBrowser, setIsDefaultBrowser] = useState(false); + const [isLoading, setIsLoading] = useState(false); + const [isSaving, setIsSaving] = useState(false); + const [isSettingDefault, setIsSettingDefault] = useState(false); + + const { setTheme } = useTheme(); + + useEffect(() => { + if (isOpen) { + void loadSettings(); + void checkDefaultBrowserStatus(); + + // Set up interval to check default browser status + const intervalId = setInterval(() => { + void checkDefaultBrowserStatus(); + }, 500); // Check every 2 seconds + + // Cleanup interval on component unmount or dialog close + return () => { + clearInterval(intervalId); + }; + } + }, [isOpen]); + + const loadSettings = async () => { + setIsLoading(true); + try { + const appSettings = await invoke("get_app_settings"); + setSettings(appSettings); + setOriginalSettings(appSettings); + } catch (error) { + console.error("Failed to load settings:", error); + } finally { + setIsLoading(false); + } + }; + + const checkDefaultBrowserStatus = async () => { + try { + const isDefault = await invoke("is_default_browser"); + setIsDefaultBrowser(isDefault); + } catch (error) { + console.error("Failed to check default browser status:", error); + } + }; + + const handleSetDefaultBrowser = async () => { + setIsSettingDefault(true); + try { + await invoke("set_as_default_browser"); + await checkDefaultBrowserStatus(); + } catch (error) { + console.error("Failed to set as default browser:", error); + } finally { + setIsSettingDefault(false); + } + }; + + const handleSave = async () => { + setIsSaving(true); + try { + await invoke("save_app_settings", { settings }); + // Apply theme change immediately + setTheme(settings.theme); + setOriginalSettings(settings); + onClose(); + } catch (error) { + console.error("Failed to save settings:", error); + } finally { + setIsSaving(false); + } + }; + + const updateSetting = (key: keyof AppSettings, value: boolean | string) => { + setSettings((prev) => ({ ...prev, [key]: value })); + }; + + // Check if settings have changed (excluding default browser setting) + const hasChanges = + settings.show_settings_on_startup !== + originalSettings.show_settings_on_startup || + settings.theme !== originalSettings.theme || + settings.auto_updates_enabled !== originalSettings.auto_updates_enabled; + + return ( + + + + Settings + + +
+ {/* Appearance Section */} +
+ + +
+ + +
+ +

+ Choose your preferred theme or follow your system settings. +

+
+ + {/* Default Browser Section */} +
+
+ + + {isDefaultBrowser ? "Active" : "Inactive"} + +
+ + { + void handleSetDefaultBrowser(); + }} + disabled={isDefaultBrowser} + variant={isDefaultBrowser ? "outline" : "default"} + className="w-full" + > + {isDefaultBrowser + ? "Already Default Browser" + : "Set as Default Browser"} + + +

+ When set as default, Donut Browser will handle web links and allow + you to choose which profile to use. +

+
+ + {/* Auto-Update Section */} +
+ + +
+ { + updateSetting("auto_updates_enabled", checked as boolean); + }} + /> + +
+ +

+ When enabled, Donut Browser will check for browser updates and + notify you when updates are available for your profiles. +

+
+ + {/* Startup Behavior Section */} +
+ + +
+ { + updateSetting("show_settings_on_startup", checked as boolean); + }} + /> + +
+ +

+ When enabled, the settings dialog will be shown when the app + starts. +

+
+
+ + + + { + void handleSave(); + }} + disabled={isLoading || !hasChanges} + > + Save Settings + + +
+
+ ); +} diff --git a/src/components/theme-provider.tsx b/src/components/theme-provider.tsx new file mode 100644 index 0000000..59821e5 --- /dev/null +++ b/src/components/theme-provider.tsx @@ -0,0 +1,95 @@ +"use client"; + +import { invoke } from "@tauri-apps/api/core"; +import { ThemeProvider } from "next-themes"; +import { useEffect, useState } from "react"; + +interface AppSettings { + show_settings_on_startup: boolean; + theme: string; +} + +interface CustomThemeProviderProps { + children: React.ReactNode; +} + +// Helper function to detect system dark mode preference +function getSystemTheme(): string { + if (typeof window !== "undefined") { + const isDarkMode = window.matchMedia( + "(prefers-color-scheme: dark)" + ).matches; + return isDarkMode ? "dark" : "light"; + } + return "light"; +} + +export function CustomThemeProvider({ children }: CustomThemeProviderProps) { + const [isLoading, setIsLoading] = useState(true); + const [defaultTheme, setDefaultTheme] = useState("system"); + + useEffect(() => { + const loadTheme = async () => { + try { + const settings = await invoke("get_app_settings"); + setDefaultTheme(settings.theme); + } catch (error) { + console.error("Failed to load theme settings:", error); + // For first-time users, detect system preference and apply it + const systemTheme = getSystemTheme(); + console.log( + "First-time user detected, applying system theme:", + systemTheme + ); + + // Save the detected theme as the default + try { + await invoke("save_app_settings", { + settings: { + show_settings_on_startup: true, + theme: "system", + auto_updates_enabled: true, + }, + }); + } catch (saveError) { + console.error("Failed to save initial theme settings:", saveError); + } + + setDefaultTheme("system"); + } finally { + setIsLoading(false); + } + }; + + void loadTheme(); + }, []); + + if (isLoading) { + // Detect system theme to show appropriate loading screen + const systemTheme = getSystemTheme(); + const loadingBgColor = systemTheme === "dark" ? "bg-gray-900" : "bg-white"; + const spinnerColor = + systemTheme === "dark" ? "border-white" : "border-gray-900"; + + return ( +
+
+
+ ); + } + + return ( + + {children} + + ); +} diff --git a/src/components/ui/alert.tsx b/src/components/ui/alert.tsx new file mode 100644 index 0000000..d4700bd --- /dev/null +++ b/src/components/ui/alert.tsx @@ -0,0 +1,66 @@ +import { type VariantProps, cva } from "class-variance-authority"; +import type * as React from "react"; + +import { cn } from "@/lib/utils"; + +const alertVariants = cva( + "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", + { + variants: { + variant: { + default: "bg-card text-card-foreground", + destructive: + "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +); + +function Alert({ + className, + variant, + ...props +}: React.ComponentProps<"div"> & VariantProps) { + return ( +
+ ); +} + +function AlertTitle({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ); +} + +function AlertDescription({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ); +} + +export { Alert, AlertTitle, AlertDescription }; diff --git a/src/components/ui/badge.tsx b/src/components/ui/badge.tsx new file mode 100644 index 0000000..dac19eb --- /dev/null +++ b/src/components/ui/badge.tsx @@ -0,0 +1,46 @@ +import { Slot } from "@radix-ui/react-slot"; +import { type VariantProps, cva } from "class-variance-authority"; +import type * as React from "react"; + +import { cn } from "@/lib/utils"; + +const badgeVariants = cva( + "inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90", + secondary: + "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90", + destructive: + "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", + outline: + "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +); + +function Badge({ + className, + variant, + asChild = false, + ...props +}: React.ComponentProps<"span"> & + VariantProps & { asChild?: boolean }) { + const Comp = asChild ? Slot : "span"; + + return ( + + ); +} + +export { Badge, badgeVariants }; diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx new file mode 100644 index 0000000..1d0f7c5 --- /dev/null +++ b/src/components/ui/button.tsx @@ -0,0 +1,61 @@ +import { Slot } from "@radix-ui/react-slot"; +import { type VariantProps, cva } from "class-variance-authority"; +import type * as React from "react"; + +import { cn } from "@/lib/utils"; + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", + { + variants: { + variant: { + default: + "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90", + destructive: + "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", + outline: + "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50", + secondary: + "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80", + ghost: + "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-9 px-4 py-2 has-[>svg]:px-3", + sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5", + lg: "h-10 rounded-md px-6 has-[>svg]:px-4", + icon: "size-9", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + }, +); + +export type ButtonProps = React.ComponentProps<"button"> & + VariantProps & { + asChild?: boolean; + }; + +function Button({ + className, + variant, + size, + asChild = false, + ...props +}: ButtonProps) { + const Comp = asChild ? Slot : "button"; + + return ( + + ); +} + +export { Button, buttonVariants }; diff --git a/src/components/ui/card.tsx b/src/components/ui/card.tsx new file mode 100644 index 0000000..13631ed --- /dev/null +++ b/src/components/ui/card.tsx @@ -0,0 +1,92 @@ +import type * as React from "react"; + +import { cn } from "@/lib/utils"; + +function Card({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ); +} + +function CardHeader({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ); +} + +function CardTitle({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ); +} + +function CardDescription({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ); +} + +function CardAction({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ); +} + +function CardContent({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ); +} + +function CardFooter({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ); +} + +export { + Card, + CardHeader, + CardFooter, + CardTitle, + CardAction, + CardDescription, + CardContent, +}; diff --git a/src/components/ui/checkbox.tsx b/src/components/ui/checkbox.tsx new file mode 100644 index 0000000..0a0105a --- /dev/null +++ b/src/components/ui/checkbox.tsx @@ -0,0 +1,32 @@ +"use client"; + +import * as CheckboxPrimitive from "@radix-ui/react-checkbox"; +import { LuCheck } from "react-icons/lu"; +import type * as React from "react"; + +import { cn } from "@/lib/utils"; + +function Checkbox({ + className, + ...props +}: React.ComponentProps) { + return ( + + + + + + ); +} + +export { Checkbox }; diff --git a/src/components/ui/combobox.tsx b/src/components/ui/combobox.tsx new file mode 100644 index 0000000..5ea9004 --- /dev/null +++ b/src/components/ui/combobox.tsx @@ -0,0 +1,94 @@ +"use client"; + +import * as React from "react"; +import { LuCheck, LuChevronsUpDown } from "react-icons/lu"; + +import { Button } from "@/components/ui/button"; +import { + Command, + CommandEmpty, + CommandGroup, + CommandInput, + CommandItem, + CommandList, +} from "@/components/ui/command"; +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "@/components/ui/popover"; +import { cn } from "@/lib/utils"; + +const frameworks = [ + { + value: "next.js", + label: "Next.js", + }, + { + value: "sveltekit", + label: "SvelteKit", + }, + { + value: "nuxt.js", + label: "Nuxt.js", + }, + { + value: "remix", + label: "Remix", + }, + { + value: "astro", + label: "Astro", + }, +]; + +export function ComboboxDemo() { + const [open, setOpen] = React.useState(false); + const [value, setValue] = React.useState(""); + + return ( + + + + + + + + + No framework found. + + {frameworks.map((framework) => ( + { + setValue(currentValue === value ? "" : currentValue); + setOpen(false); + }} + > + + {framework.label} + + ))} + + + + + + ); +} diff --git a/src/components/ui/command.tsx b/src/components/ui/command.tsx new file mode 100644 index 0000000..b4f9c26 --- /dev/null +++ b/src/components/ui/command.tsx @@ -0,0 +1,177 @@ +"use client"; + +import { Command as CommandPrimitive } from "cmdk"; +import type * as React from "react"; +import { LuSearch } from "react-icons/lu"; + +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { cn } from "@/lib/utils"; + +function Command({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function CommandDialog({ + title = "Command Palette", + description = "Search for a command to run...", + children, + ...props +}: React.ComponentProps & { + title?: string; + description?: string; +}) { + return ( + + + {title} + {description} + + + + {children} + + + + ); +} + +function CommandInput({ + className, + ...props +}: React.ComponentProps) { + return ( +
+ + +
+ ); +} + +function CommandList({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function CommandEmpty({ + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function CommandGroup({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function CommandSeparator({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function CommandItem({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function CommandShortcut({ + className, + ...props +}: React.ComponentProps<"span">) { + return ( + + ); +} + +export { + Command, + CommandDialog, + CommandInput, + CommandList, + CommandEmpty, + CommandGroup, + CommandItem, + CommandShortcut, + CommandSeparator, +}; diff --git a/src/components/ui/dialog.tsx b/src/components/ui/dialog.tsx new file mode 100644 index 0000000..ee2d460 --- /dev/null +++ b/src/components/ui/dialog.tsx @@ -0,0 +1,135 @@ +"use client"; + +import * as DialogPrimitive from "@radix-ui/react-dialog"; +import type * as React from "react"; +import { RxCross2 } from "react-icons/rx"; + +import { cn } from "@/lib/utils"; + +function Dialog({ + ...props +}: React.ComponentProps) { + return ; +} + +function DialogTrigger({ + ...props +}: React.ComponentProps) { + return ; +} + +function DialogPortal({ + ...props +}: React.ComponentProps) { + return ; +} + +function DialogClose({ + ...props +}: React.ComponentProps) { + return ; +} + +function DialogOverlay({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function DialogContent({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + + + + {children} + + + Close + + + + ); +} + +function DialogHeader({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ); +} + +function DialogFooter({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ); +} + +function DialogTitle({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function DialogDescription({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +export { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogOverlay, + DialogPortal, + DialogTitle, + DialogTrigger, +}; diff --git a/src/components/ui/dropdown-menu.tsx b/src/components/ui/dropdown-menu.tsx new file mode 100644 index 0000000..b446c7e --- /dev/null +++ b/src/components/ui/dropdown-menu.tsx @@ -0,0 +1,257 @@ +"use client"; + +import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; +import { LuCheck, LuChevronRight, LuCircle } from "react-icons/lu"; +import type * as React from "react"; + +import { cn } from "@/lib/utils"; + +function DropdownMenu({ + ...props +}: React.ComponentProps) { + return ; +} + +function DropdownMenuPortal({ + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function DropdownMenuTrigger({ + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function DropdownMenuContent({ + className, + sideOffset = 4, + ...props +}: React.ComponentProps) { + return ( + + + + ); +} + +function DropdownMenuGroup({ + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function DropdownMenuItem({ + className, + inset, + variant = "default", + ...props +}: React.ComponentProps & { + inset?: boolean; + variant?: "default" | "destructive"; +}) { + return ( + + ); +} + +function DropdownMenuCheckboxItem({ + className, + children, + checked, + ...props +}: React.ComponentProps) { + return ( + + + + + + + {children} + + ); +} + +function DropdownMenuRadioGroup({ + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function DropdownMenuRadioItem({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + + + + + + + {children} + + ); +} + +function DropdownMenuLabel({ + className, + inset, + ...props +}: React.ComponentProps & { + inset?: boolean; +}) { + return ( + + ); +} + +function DropdownMenuSeparator({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function DropdownMenuShortcut({ + className, + ...props +}: React.ComponentProps<"span">) { + return ( + + ); +} + +function DropdownMenuSub({ + ...props +}: React.ComponentProps) { + return ; +} + +function DropdownMenuSubTrigger({ + className, + inset, + children, + ...props +}: React.ComponentProps & { + inset?: boolean; +}) { + return ( + + {children} + + + ); +} + +function DropdownMenuSubContent({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +export { + DropdownMenu, + DropdownMenuPortal, + DropdownMenuTrigger, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuLabel, + DropdownMenuItem, + DropdownMenuCheckboxItem, + DropdownMenuRadioGroup, + DropdownMenuRadioItem, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuSub, + DropdownMenuSubTrigger, + DropdownMenuSubContent, +}; diff --git a/src/components/ui/input.tsx b/src/components/ui/input.tsx new file mode 100644 index 0000000..cb0e803 --- /dev/null +++ b/src/components/ui/input.tsx @@ -0,0 +1,21 @@ +import type * as React from "react"; + +import { cn } from "@/lib/utils"; + +function Input({ className, type, ...props }: React.ComponentProps<"input">) { + return ( + + ); +} + +export { Input }; diff --git a/src/components/ui/label.tsx b/src/components/ui/label.tsx new file mode 100644 index 0000000..a3661df --- /dev/null +++ b/src/components/ui/label.tsx @@ -0,0 +1,24 @@ +"use client"; + +import * as LabelPrimitive from "@radix-ui/react-label"; +import type * as React from "react"; + +import { cn } from "@/lib/utils"; + +function Label({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +export { Label }; diff --git a/src/components/ui/popover.tsx b/src/components/ui/popover.tsx new file mode 100644 index 0000000..d68b87a --- /dev/null +++ b/src/components/ui/popover.tsx @@ -0,0 +1,48 @@ +"use client"; + +import * as PopoverPrimitive from "@radix-ui/react-popover"; +import type * as React from "react"; + +import { cn } from "@/lib/utils"; + +function Popover({ + ...props +}: React.ComponentProps) { + return ; +} + +function PopoverTrigger({ + ...props +}: React.ComponentProps) { + return ; +} + +function PopoverContent({ + className, + align = "center", + sideOffset = 4, + ...props +}: React.ComponentProps) { + return ( + + + + ); +} + +function PopoverAnchor({ + ...props +}: React.ComponentProps) { + return ; +} + +export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }; diff --git a/src/components/ui/progress.tsx b/src/components/ui/progress.tsx new file mode 100644 index 0000000..d00d550 --- /dev/null +++ b/src/components/ui/progress.tsx @@ -0,0 +1,31 @@ +"use client"; + +import * as ProgressPrimitive from "@radix-ui/react-progress"; +import type * as React from "react"; + +import { cn } from "@/lib/utils"; + +function Progress({ + className, + value, + ...props +}: React.ComponentProps) { + return ( + + + + ); +} + +export { Progress }; diff --git a/src/components/ui/scroll-area.tsx b/src/components/ui/scroll-area.tsx new file mode 100644 index 0000000..554e349 --- /dev/null +++ b/src/components/ui/scroll-area.tsx @@ -0,0 +1,58 @@ +"use client"; + +import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area"; +import type * as React from "react"; + +import { cn } from "@/lib/utils"; + +function ScrollArea({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + + + {children} + + + + + ); +} + +function ScrollBar({ + className, + orientation = "vertical", + ...props +}: React.ComponentProps) { + return ( + + + + ); +} + +export { ScrollArea, ScrollBar }; diff --git a/src/components/ui/select.tsx b/src/components/ui/select.tsx new file mode 100644 index 0000000..5601a89 --- /dev/null +++ b/src/components/ui/select.tsx @@ -0,0 +1,185 @@ +"use client"; + +import * as SelectPrimitive from "@radix-ui/react-select"; +import { LuCheck, LuChevronDown, LuChevronUp } from "react-icons/lu"; +import type * as React from "react"; + +import { cn } from "@/lib/utils"; + +function Select({ + ...props +}: React.ComponentProps) { + return ; +} + +function SelectGroup({ + ...props +}: React.ComponentProps) { + return ; +} + +function SelectValue({ + ...props +}: React.ComponentProps) { + return ; +} + +function SelectTrigger({ + className, + size = "default", + children, + ...props +}: React.ComponentProps & { + size?: "sm" | "default"; +}) { + return ( + + {children} + + + + + ); +} + +function SelectContent({ + className, + children, + position = "popper", + ...props +}: React.ComponentProps) { + return ( + + + + + {children} + + + + + ); +} + +function SelectLabel({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function SelectItem({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + + + + + + + {children} + + ); +} + +function SelectSeparator({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function SelectScrollUpButton({ + className, + ...props +}: React.ComponentProps) { + return ( + + + + ); +} + +function SelectScrollDownButton({ + className, + ...props +}: React.ComponentProps) { + return ( + + + + ); +} + +export { + Select, + SelectContent, + SelectGroup, + SelectItem, + SelectLabel, + SelectScrollDownButton, + SelectScrollUpButton, + SelectSeparator, + SelectTrigger, + SelectValue, +}; diff --git a/src/components/ui/sonner.tsx b/src/components/ui/sonner.tsx new file mode 100644 index 0000000..f96a98d --- /dev/null +++ b/src/components/ui/sonner.tsx @@ -0,0 +1,25 @@ +"use client"; + +import { useTheme } from "next-themes"; +import { Toaster as Sonner, type ToasterProps } from "sonner"; + +const Toaster = ({ ...props }: ToasterProps) => { + const { theme = "system" } = useTheme(); + + return ( + + ); +}; + +export { Toaster }; diff --git a/src/components/ui/table.tsx b/src/components/ui/table.tsx new file mode 100644 index 0000000..430838f --- /dev/null +++ b/src/components/ui/table.tsx @@ -0,0 +1,116 @@ +"use client"; + +import type * as React from "react"; + +import { cn } from "@/lib/utils"; + +function Table({ className, ...props }: React.ComponentProps<"table">) { + return ( +
+ + + ); +} + +function TableHeader({ className, ...props }: React.ComponentProps<"thead">) { + return ( + + ); +} + +function TableBody({ className, ...props }: React.ComponentProps<"tbody">) { + return ( + + ); +} + +function TableFooter({ className, ...props }: React.ComponentProps<"tfoot">) { + return ( + tr]:last:border-b-0", + className, + )} + {...props} + /> + ); +} + +function TableRow({ className, ...props }: React.ComponentProps<"tr">) { + return ( + + ); +} + +function TableHead({ className, ...props }: React.ComponentProps<"th">) { + return ( +
[role=checkbox]]:translate-y-[2px]", + className, + )} + {...props} + /> + ); +} + +function TableCell({ className, ...props }: React.ComponentProps<"td">) { + return ( + [role=checkbox]]:translate-y-[2px]", + className, + )} + {...props} + /> + ); +} + +function TableCaption({ + className, + ...props +}: React.ComponentProps<"caption">) { + return ( +
+ ); +} + +export { + Table, + TableHeader, + TableBody, + TableFooter, + TableHead, + TableRow, + TableCell, + TableCaption, +}; diff --git a/src/components/ui/tooltip.tsx b/src/components/ui/tooltip.tsx new file mode 100644 index 0000000..35a9ba6 --- /dev/null +++ b/src/components/ui/tooltip.tsx @@ -0,0 +1,61 @@ +"use client"; + +import * as TooltipPrimitive from "@radix-ui/react-tooltip"; +import type * as React from "react"; + +import { cn } from "@/lib/utils"; + +function TooltipProvider({ + delayDuration = 0, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function Tooltip({ + ...props +}: React.ComponentProps) { + return ( + + + + ); +} + +function TooltipTrigger({ + ...props +}: React.ComponentProps) { + return ; +} + +function TooltipContent({ + className, + sideOffset = 0, + children, + ...props +}: React.ComponentProps) { + return ( + + + {children} + + + + ); +} + +export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }; diff --git a/src/components/update-notification.tsx b/src/components/update-notification.tsx new file mode 100644 index 0000000..102c391 --- /dev/null +++ b/src/components/update-notification.tsx @@ -0,0 +1,305 @@ +"use client"; + +/* eslint-disable @typescript-eslint/no-misused-promises */ + +import { Button } from "@/components/ui/button"; +import { Badge } from "@/components/ui/badge"; +import { invoke } from "@tauri-apps/api/core"; +import { toast } from "sonner"; +import { useCallback, useEffect, useState } from "react"; +import { FaDownload, FaTimes } from "react-icons/fa"; +import { showToast } from "@/components/custom-toast"; +import { getBrowserDisplayName } from "@/lib/browser-utils"; + +interface UpdateNotification { + id: string; + browser: string; + current_version: string; + new_version: string; + affected_profiles: string[]; + is_stable_update: boolean; + timestamp: number; +} + +interface UpdateNotificationProps { + notification: UpdateNotification; + onUpdate: (browser: string, newVersion: string) => Promise; + onDismiss: (notificationId: string) => Promise; + isUpdating?: boolean; +} + +function UpdateNotificationComponent({ + notification, + onUpdate, + onDismiss, + isUpdating = false, +}: UpdateNotificationProps) { + const browserDisplayName = getBrowserDisplayName(notification.browser); + + const profileText = + notification.affected_profiles.length === 1 + ? `profile "${notification.affected_profiles[0]}"` + : `${notification.affected_profiles.length} profiles`; + + const handleUpdateClick = async () => { + // Dismiss the notification immediately to close the modal + await onDismiss(notification.id); + // Then start the update process + await onUpdate(notification.browser, notification.new_version); + }; + + return ( +
+
+
+
+ + {browserDisplayName} Update Available + + + {notification.is_stable_update ? "Stable" : "Beta"} + +
+
+ Update {profileText} from {notification.current_version} to{" "} + {notification.new_version} +
+
+ +
+ +
+ + +
+ + {notification.affected_profiles.length > 1 && ( +
+ Affected profiles: {notification.affected_profiles.join(", ")} +
+ )} +
+ ); +} + +export function useUpdateNotifications() { + const [notifications, setNotifications] = useState([]); + const [updatingBrowsers, setUpdatingBrowsers] = useState>( + new Set() + ); + const [isClient, setIsClient] = useState(false); + + // Ensure we're on the client side to prevent hydration mismatches + useEffect(() => { + setIsClient(true); + }, []); + + const checkForUpdates = useCallback(async () => { + if (!isClient) return; // Only run on client side + + try { + const updates = await invoke( + "check_for_browser_updates" + ); + setNotifications(updates); + + // Show toasts for new notifications - we'll define handleUpdate and handleDismiss separately + // to avoid circular dependencies + } catch (error) { + console.error("Failed to check for updates:", error); + } + }, [isClient]); + + const handleUpdate = useCallback( + async (browser: string, newVersion: string) => { + try { + setUpdatingBrowsers((prev) => new Set(prev).add(browser)); + const browserDisplayName = getBrowserDisplayName(browser); + + // Dismiss all notifications for this browser first + const browserNotifications = notifications.filter( + (n) => n.browser === browser + ); + for (const notification of browserNotifications) { + toast.dismiss(notification.id); + await invoke("dismiss_update_notification", { + notificationId: notification.id, + }); + } + + try { + // Check if browser already exists before downloading + const isDownloaded = await invoke("check_browser_exists", { + browserStr: browser, + version: newVersion, + }); + + if (isDownloaded) { + // Browser already exists, skip download and go straight to profile update + console.log( + `${browserDisplayName} ${newVersion} already exists, skipping download` + ); + } else { + // Mark download as auto-update in the backend for toast suppression + await invoke("mark_auto_update_download", { + browser, + version: newVersion, + }); + + // Download the browser (progress will be handled by use-browser-download hook) + await invoke("download_browser", { + browserStr: browser, + version: newVersion, + }); + } + + // Complete the update with auto-update of profile versions + const updatedProfiles = await invoke( + "complete_browser_update_with_auto_update", + { + browser, + newVersion, + } + ); + + // Show success message based on whether profiles were updated + if (updatedProfiles.length > 0) { + const profileText = + updatedProfiles.length === 1 + ? `Profile "${updatedProfiles[0]}" has been updated` + : `${updatedProfiles.length} profiles have been updated`; + + showToast({ + type: "success", + title: `${browserDisplayName} update completed`, + description: `${profileText} to version ${newVersion}. Running profiles were not updated and can be updated manually.`, + duration: 5000, + }); + } else { + showToast({ + type: "success", + title: `${browserDisplayName} update ready`, + description: + "All affected profiles are currently running. Stop them and manually update their versions to use the new version.", + duration: 5000, + }); + } + } catch (downloadError) { + console.error("Failed to download browser:", downloadError); + + // Clean up auto-update tracking on error + try { + await invoke("remove_auto_update_download", { + browser, + version: newVersion, + }); + } catch (e) { + console.error("Failed to clean up auto-update tracking:", e); + } + + showToast({ + type: "error", + title: `Failed to download ${browserDisplayName} ${newVersion}`, + description: String(downloadError), + duration: 6000, + }); + throw downloadError; + } + + // Refresh notifications to clear any remaining ones + await checkForUpdates(); + } catch (error) { + console.error("Failed to start update:", error); + const browserDisplayName = getBrowserDisplayName(browser); + showToast({ + type: "error", + title: `Failed to update ${browserDisplayName}`, + description: String(error), + duration: 6000, + }); + } finally { + setUpdatingBrowsers((prev) => { + const next = new Set(prev); + next.delete(browser); + return next; + }); + } + }, + [notifications, checkForUpdates] + ); + + const handleDismiss = useCallback( + async (notificationId: string) => { + if (!isClient) return; // Only run on client side + + try { + toast.dismiss(notificationId); + await invoke("dismiss_update_notification", { notificationId }); + await checkForUpdates(); + } catch (error) { + console.error("Failed to dismiss notification:", error); + } + }, + [checkForUpdates, isClient] + ); + + // Separate effect to show toasts when notifications change + useEffect(() => { + if (!isClient) return; + + notifications.forEach((notification) => { + const isUpdating = updatingBrowsers.has(notification.browser); + + toast.custom( + () => ( + + ), + { + id: notification.id, + duration: Infinity, // Persistent until user action + position: "top-right", + // Remove transparent styling to fix background issue + style: undefined, + } + ); + }); + }, [notifications, updatingBrowsers, handleUpdate, handleDismiss, isClient]); + + return { + notifications, + checkForUpdates, + isUpdating: (browser: string) => updatingBrowsers.has(browser), + }; +} diff --git a/src/components/version-selector.tsx b/src/components/version-selector.tsx new file mode 100644 index 0000000..f3ac915 --- /dev/null +++ b/src/components/version-selector.tsx @@ -0,0 +1,156 @@ +"use client"; + +import { LoadingButton } from "@/components/loading-button"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { + Command, + CommandEmpty, + CommandGroup, + CommandInput, + CommandItem, + CommandList, +} from "@/components/ui/command"; +import { + Popover, + PopoverContent, + PopoverTrigger, +} from "@/components/ui/popover"; +import { cn } from "@/lib/utils"; +import { LuDownload } from "react-icons/lu"; +import { useState } from "react"; +import { LuCheck, LuChevronsUpDown } from "react-icons/lu"; +import { ScrollArea } from "./ui/scroll-area"; + +interface GithubRelease { + tag_name: string; + assets: Array<{ + name: string; + browser_download_url: string; + hash?: string; + }>; + published_at: string; + is_alpha: boolean; +} + +interface VersionSelectorProps { + selectedVersion: string | null; + onVersionSelect: (version: string | null) => void; + availableVersions: GithubRelease[]; + downloadedVersions: string[]; + isDownloading: boolean; + onDownload: () => void; + placeholder?: string; + showDownloadButton?: boolean; +} + +export function VersionSelector({ + selectedVersion, + onVersionSelect, + availableVersions, + downloadedVersions, + isDownloading, + onDownload, + placeholder = "Select version...", + showDownloadButton = true, +}: VersionSelectorProps) { + const [versionPopoverOpen, setVersionPopoverOpen] = useState(false); + + const isVersionDownloaded = selectedVersion + ? downloadedVersions.includes(selectedVersion) + : false; + + return ( +
+ + + + + + + + No versions found. + + [data-radix-scroll-area-viewport]]:max-h-[200px]" + } + > + + {availableVersions.map((version) => { + const isDownloaded = downloadedVersions.includes( + version.tag_name + ); + return ( + { + onVersionSelect( + currentValue === selectedVersion + ? null + : currentValue + ); + setVersionPopoverOpen(false); + }} + > + +
+ {version.tag_name} + {version.is_alpha && ( + + Alpha + + )} + {isDownloaded && ( + + Downloaded + + )} +
+
+ ); + })} +
+
+
+
+
+
+ + {/* Download Button */} + {showDownloadButton && selectedVersion && !isVersionDownloaded && ( + { + onDownload(); + }} + variant="outline" + className="w-full" + > + + {isDownloading ? "Downloading..." : "Download Browser"} + + )} +
+ ); +} diff --git a/src/components/version-update-settings.tsx b/src/components/version-update-settings.tsx new file mode 100644 index 0000000..08d47c7 --- /dev/null +++ b/src/components/version-update-settings.tsx @@ -0,0 +1,130 @@ +"use client"; + +import { LoadingButton } from "@/components/loading-button"; +import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; +import { + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from "@/components/ui/card"; +import { useVersionUpdater } from "@/hooks/use-version-updater"; +import { + LuRefreshCw, + LuClock, + LuCheckCheck, + LuCircleAlert, +} from "react-icons/lu"; + +export function VersionUpdateSettings() { + const { + isUpdating, + lastUpdateTime, + timeUntilNextUpdate, + updateProgress, + triggerManualUpdate, + formatTimeUntilUpdate, + formatLastUpdateTime, + } = useVersionUpdater(); + + return ( + + + + + Background Version Updates + + + Browser versions are automatically checked every 3 hours in the + background. New versions are cached and ready when you need them. + + + + {/* Current Status */} +
+
+
+ + Last Update +
+
+ {formatLastUpdateTime(lastUpdateTime)} +
+
+ +
+
+ + Next Update +
+
+ {timeUntilNextUpdate <= 0 + ? "Now" + : `In ${formatTimeUntilUpdate(timeUntilNextUpdate)}`} +
+
+
+ + {/* Progress indicator */} + {isUpdating && updateProgress && ( + + + Updating Browser Versions + + {updateProgress.current_browser ? ( + <> + Checking {updateProgress.current_browser} ( + {updateProgress.completed_browsers}/ + {updateProgress.total_browsers}) +
+ {updateProgress.new_versions_found} new versions found so far + + ) : ( + "Starting version update..." + )} +
+
+ )} + + {/* Manual update button */} +
+
+
Manual Update
+
+ Check for new browser versions now +
+
+ { + void triggerManualUpdate(); + }} + variant="outline" + size="sm" + disabled={isUpdating} + > + + {isUpdating ? "Updating..." : "Check Now"} + +
+ + {/* Information about background updates */} + + + How it works + + • Version information is checked automatically every 3 hours +
+ • New versions are added to the cache without removing old ones +
+ • When creating profiles or changing versions, you'll see how + many new versions were found +
• This keeps the app responsive while ensuring you have the + latest information +
+
+
+
+ ); +} diff --git a/src/hooks/use-browser-download.ts b/src/hooks/use-browser-download.ts new file mode 100644 index 0000000..8d9f2c5 --- /dev/null +++ b/src/hooks/use-browser-download.ts @@ -0,0 +1,372 @@ +import { invoke } from "@tauri-apps/api/core"; +import { listen } from "@tauri-apps/api/event"; +import { useCallback, useEffect, useState } from "react"; +import { toast } from "sonner"; +import { + showDownloadToast, + showFetchingToast, + showSuccessToast, + showErrorToast, + dismissToast, +} from "../components/custom-toast"; +import { getBrowserDisplayName } from "@/lib/browser-utils"; + +interface GithubRelease { + tag_name: string; + assets: Array<{ + name: string; + browser_download_url: string; + hash?: string; + }>; + published_at: string; + is_alpha: boolean; +} + +interface BrowserVersionInfo { + version: string; + is_prerelease: boolean; + date: string; +} + +interface DownloadProgress { + browser: string; + version: string; + downloaded_bytes: number; + total_bytes?: number; + percentage: number; + speed_bytes_per_sec: number; + eta_seconds?: number; + stage: string; +} + +interface BrowserVersionsResult { + versions: string[]; + new_versions_count?: number; + total_versions_count: number; +} + +interface VersionUpdateProgress { + current_browser: string; + total_browsers: number; + completed_browsers: number; + new_versions_found: number; + browser_new_versions: number; + status: string; +} + +const isAlphaVersion = (version: string): boolean => { + // Check for common alpha/beta/dev indicators + const lowerVersion = version.toLowerCase(); + return ( + lowerVersion.includes("a") || + lowerVersion.includes("b") || + lowerVersion.includes("alpha") || + lowerVersion.includes("beta") || + lowerVersion.includes("dev") || + lowerVersion.includes("rc") || + lowerVersion.includes("pre") || + // Check for patterns like "139.0b1" or "140.0a1" + /\d+\.\d+[ab]\d+/.test(lowerVersion) + ); +}; + +export function useBrowserDownload() { + const [availableVersions, setAvailableVersions] = useState( + [] + ); + const [downloadedVersions, setDownloadedVersions] = useState([]); + const [isDownloading, setIsDownloading] = useState(false); + const [downloadProgress, setDownloadProgress] = + useState(null); + const [isUpdatingVersions, setIsUpdatingVersions] = useState(false); + + // Listen for download progress events + useEffect(() => { + const unlisten = listen("download-progress", (event) => { + const progress = event.payload; + setDownloadProgress(progress); + + const browserName = getBrowserDisplayName(progress.browser); + + // Check if this is an auto-update download to suppress completion toast + const checkAutoUpdate = async () => { + let isAutoUpdate = false; + try { + isAutoUpdate = await invoke("is_auto_update_download", { + browser: progress.browser, + version: progress.version, + }); + } catch (error) { + console.error("Failed to check auto-update status:", error); + } + + // Show toast with progress + if (progress.stage === "downloading") { + const speedMBps = ( + progress.speed_bytes_per_sec / + (1024 * 1024) + ).toFixed(1); + const etaText = progress.eta_seconds + ? formatTime(progress.eta_seconds) + : "calculating..."; + + showDownloadToast(browserName, progress.version, "downloading", { + percentage: progress.percentage, + speed: speedMBps, + eta: etaText, + }); + } else if (progress.stage === "extracting") { + showDownloadToast(browserName, progress.version, "extracting"); + } else if (progress.stage === "verifying") { + showDownloadToast(browserName, progress.version, "verifying"); + } else if (progress.stage === "completed") { + // Suppress completion toast for auto-updates + showDownloadToast( + browserName, + progress.version, + "completed", + undefined, + { + suppressCompletionToast: isAutoUpdate, + } + ); + setDownloadProgress(null); + } + }; + + void checkAutoUpdate(); + }); + + return () => { + void unlisten.then((fn) => { + fn(); + }); + }; + }, []); + + // Listen for version update progress events + useEffect(() => { + const unlisten = listen( + "version-update-progress", + (event) => { + const progress = event.payload; + + if (progress.status === "updating") { + setIsUpdatingVersions(true); + if (progress.current_browser) { + const browserName = getBrowserDisplayName(progress.current_browser); + showFetchingToast(browserName, { + id: `version-update-${progress.current_browser}`, + description: "Fetching latest release information...", + }); + } + } else if (progress.status === "completed") { + setIsUpdatingVersions(false); + if (progress.new_versions_found > 0) { + showSuccessToast( + `Found ${progress.new_versions_found} new browser versions!`, + { + duration: 3000, + } + ); + } + // Dismiss any update toasts + toast.dismiss(); + } else if (progress.status === "error") { + setIsUpdatingVersions(false); + showErrorToast("Failed to check for new versions", { + duration: 4000, + }); + toast.dismiss(); + } + } + ); + + return () => { + void unlisten.then((fn) => { + fn(); + }); + }; + }, []); + + const formatTime = (seconds: number): string => { + if (seconds < 60) { + return `${Math.round(seconds)}s`; + } else if (seconds < 3600) { + const minutes = Math.floor(seconds / 60); + const remainingSeconds = Math.round(seconds % 60); + return `${minutes}m ${remainingSeconds}s`; + } else { + const hours = Math.floor(seconds / 3600); + const minutes = Math.floor((seconds % 3600) / 60); + return `${hours}h ${minutes}m`; + } + }; + + const formatBytes = (bytes: number): string => { + if (bytes === 0) return "0 B"; + const k = 1024; + const sizes = ["B", "KB", "MB", "GB"]; + const i = Math.floor(Math.log(bytes) / Math.log(k)); + return `${Number.parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${ + sizes[i] + }`; + }; + + const loadVersions = useCallback(async (browserStr: string) => { + const browserName = getBrowserDisplayName(browserStr); + + // Show fetching toast + const toastId = showFetchingToast(browserName, { + id: `fetch-${browserStr}`, + }); + + try { + const versionInfos = await invoke( + "fetch_browser_versions_cached_first", + { browserStr } + ); + + // Convert BrowserVersionInfo to GithubRelease format for compatibility + const githubReleases: GithubRelease[] = versionInfos.map( + (versionInfo) => ({ + tag_name: versionInfo.version, + assets: [], + published_at: versionInfo.date, + is_alpha: versionInfo.is_prerelease, + }) + ); + + setAvailableVersions(githubReleases); + dismissToast(toastId); + return githubReleases; + } catch (error) { + console.error("Failed to load versions:", error); + dismissToast(toastId); + showErrorToast(`Failed to fetch ${browserName} versions`, { + description: + error instanceof Error ? error.message : "Unknown error occurred", + duration: 4000, + }); + throw error; + } + }, []); + + const loadVersionsWithNewCount = useCallback(async (browserStr: string) => { + const browserName = getBrowserDisplayName(browserStr); + + try { + // Get versions with new count info and cached detailed info + const result = await invoke( + "fetch_browser_versions_with_count_cached_first", + { browserStr } + ); + + // Get detailed version info for compatibility + const versionInfos = await invoke( + "fetch_browser_versions_cached_first", + { browserStr } + ); + + // Convert BrowserVersionInfo to GithubRelease format for compatibility + const githubReleases: GithubRelease[] = versionInfos.map( + (versionInfo) => ({ + tag_name: versionInfo.version, + assets: [], + published_at: versionInfo.date, + is_alpha: versionInfo.is_prerelease, + }) + ); + + setAvailableVersions(githubReleases); + + // Show notification about new versions if any were found + if (result.new_versions_count && result.new_versions_count > 0) { + showSuccessToast( + `Found ${result.new_versions_count} new ${browserName} versions!`, + { + duration: 3000, + description: `Total available: ${result.total_versions_count} versions`, + } + ); + } + + return githubReleases; + } catch (error) { + console.error("Failed to load versions:", error); + showErrorToast(`Failed to fetch ${browserName} versions`, { + description: + error instanceof Error ? error.message : "Unknown error occurred", + duration: 4000, + }); + throw error; + } + }, []); + + const loadDownloadedVersions = useCallback(async (browserStr: string) => { + try { + const downloadedVersions = await invoke( + "get_downloaded_browser_versions", + { browserStr } + ); + setDownloadedVersions(downloadedVersions); + return downloadedVersions; + } catch (error) { + console.error("Failed to load downloaded versions:", error); + throw error; + } + }, []); + + const downloadBrowser = useCallback( + async ( + browserStr: string, + version: string, + suppressNotifications: boolean = false + ) => { + const browserName = getBrowserDisplayName(browserStr); + setIsDownloading(true); + + try { + await invoke("download_browser", { browserStr, version }); + await loadDownloadedVersions(browserStr); + } catch (error) { + console.error("Failed to download browser:", error); + + if (!suppressNotifications) { + // Dismiss any existing download toast and show error + dismissToast(`download-${browserStr}-${version}`); + showErrorToast(`Failed to download ${browserName} ${version}`, { + description: + error instanceof Error ? error.message : "Unknown error occurred", + }); + } + throw error; + } finally { + setIsDownloading(false); + } + }, + [loadDownloadedVersions] + ); + + const isVersionDownloaded = useCallback( + (version: string) => { + return downloadedVersions.includes(version); + }, + [downloadedVersions] + ); + + return { + availableVersions, + downloadedVersions, + isDownloading, + downloadProgress, + isUpdatingVersions, + loadVersions, + loadVersionsWithNewCount, + loadDownloadedVersions, + downloadBrowser, + isVersionDownloaded, + formatBytes, + formatTime, + }; +} diff --git a/src/hooks/use-table-sorting.ts b/src/hooks/use-table-sorting.ts new file mode 100644 index 0000000..7dfeeb8 --- /dev/null +++ b/src/hooks/use-table-sorting.ts @@ -0,0 +1,79 @@ +import { invoke } from "@tauri-apps/api/core"; +import { useCallback, useEffect, useState } from "react"; +import type { TableSortingSettings } from "@/types"; +import type { SortingState } from "@tanstack/react-table"; + +export function useTableSorting() { + const [sortingSettings, setSortingSettings] = useState({ + column: "name", + direction: "asc", + }); + const [isLoaded, setIsLoaded] = useState(false); + + // Load sorting settings on mount + useEffect(() => { + const loadSettings = async () => { + try { + const settings = await invoke( + "get_table_sorting_settings" + ); + setSortingSettings(settings); + } catch (error) { + console.error("Failed to load table sorting settings:", error); + // Keep default settings if loading fails + } finally { + setIsLoaded(true); + } + }; + + void loadSettings(); + }, []); + + // Save sorting settings to disk + const saveSortingSettings = useCallback( + async (settings: TableSortingSettings) => { + try { + await invoke("save_table_sorting_settings", { sorting: settings }); + setSortingSettings(settings); + } catch (error) { + console.error("Failed to save table sorting settings:", error); + } + }, + [] + ); + + // Convert our settings to tanstack table sorting format + const getTableSorting = useCallback((): SortingState => { + if (!isLoaded) return []; + + return [ + { + id: sortingSettings.column, + desc: sortingSettings.direction === "desc", + }, + ]; + }, [sortingSettings, isLoaded]); + + // Update sorting when table state changes + const updateSorting = useCallback( + (sorting: SortingState) => { + if (!isLoaded) return; + + if (sorting.length > 0) { + const newSettings: TableSortingSettings = { + column: sorting[0].id, + direction: sorting[0].desc ? "desc" : "asc", + }; + void saveSortingSettings(newSettings); + } + }, + [saveSortingSettings, isLoaded] + ); + + return { + sortingSettings, + isLoaded, + getTableSorting, + updateSorting, + }; +} diff --git a/src/hooks/use-version-updater.ts b/src/hooks/use-version-updater.ts new file mode 100644 index 0000000..e1edbe7 --- /dev/null +++ b/src/hooks/use-version-updater.ts @@ -0,0 +1,268 @@ +import { invoke } from "@tauri-apps/api/core"; +import { listen } from "@tauri-apps/api/event"; +import { useCallback, useEffect, useState } from "react"; +import { toast } from "sonner"; +import { + showVersionUpdateToast, + showLoadingToast, + dismissToast, +} from "../components/custom-toast"; +import { getBrowserDisplayName } from "@/lib/browser-utils"; + +interface VersionUpdateProgress { + current_browser: string; + total_browsers: number; + completed_browsers: number; + new_versions_found: number; + browser_new_versions: number; + status: string; // "updating", "completed", "error" +} + +interface BackgroundUpdateResult { + browser: string; + new_versions_count: number; + total_versions_count: number; + updated_successfully: boolean; + error?: string; +} + +interface BrowserVersionsResult { + versions: string[]; + new_versions_count?: number; + total_versions_count: number; +} + +export function useVersionUpdater() { + const [isUpdating, setIsUpdating] = useState(false); + const [lastUpdateTime, setLastUpdateTime] = useState(null); + const [timeUntilNextUpdate, setTimeUntilNextUpdate] = useState(0); + const [updateProgress, setUpdateProgress] = + useState(null); + + // Listen for version update progress events + useEffect(() => { + const unlisten = listen( + "version-update-progress", + (event) => { + const progress = event.payload; + setUpdateProgress(progress); + + if (progress.status === "updating") { + setIsUpdating(true); + + if (progress.current_browser) { + const browserName = getBrowserDisplayName(progress.current_browser); + showVersionUpdateToast( + `Downloading release information for ${browserName}`, + { + id: "version-update-progress", + progress: { + current: progress.completed_browsers + 1, + total: progress.total_browsers, + found: progress.new_versions_found, + }, + } + ); + } else { + showLoadingToast("Starting version update check...", { + id: "version-update-progress", + description: "Initializing browser version check...", + }); + } + } else if (progress.status === "completed") { + setIsUpdating(false); + setUpdateProgress(null); + + if (progress.new_versions_found > 0) { + toast.success( + `Found ${progress.new_versions_found} new browser versions!`, + { + id: "version-update-progress", + duration: 4000, + description: + "Version information has been updated in the background", + } + ); + } else { + toast.success("No new browser versions found", { + id: "version-update-progress", + duration: 3000, + description: "All browser versions are up to date", + }); + } + + // Refresh status + void loadUpdateStatus(); + } else if (progress.status === "error") { + setIsUpdating(false); + setUpdateProgress(null); + + toast.error("Failed to update browser versions", { + id: "version-update-progress", + duration: 4000, + description: "Check your internet connection and try again", + }); + } + } + ); + + return () => { + void unlisten.then((fn) => { + fn(); + }); + }; + }, []); + + // Load update status on mount and periodically + useEffect(() => { + void loadUpdateStatus(); + + // Update status every minute + const interval = setInterval(() => { + void loadUpdateStatus(); + }, 60000); + + return () => { + clearInterval(interval); + }; + }, []); + + const loadUpdateStatus = useCallback(async () => { + try { + const [lastUpdate, timeUntilNext] = await invoke<[number | null, number]>( + "get_version_update_status" + ); + setLastUpdateTime(lastUpdate); + setTimeUntilNextUpdate(timeUntilNext); + } catch (error) { + console.error("Failed to load version update status:", error); + } + }, []); + + const triggerManualUpdate = useCallback(async () => { + try { + setIsUpdating(true); + const results = await invoke( + "trigger_manual_version_update" + ); + + const totalNewVersions = results.reduce( + (sum, result) => sum + result.new_versions_count, + 0 + ); + const successfulUpdates = results.filter( + (r) => r.updated_successfully + ).length; + const failedUpdates = results.filter( + (r) => !r.updated_successfully + ).length; + + if (failedUpdates > 0) { + toast.warning(`Update completed with some errors`, { + description: `${totalNewVersions} new versions found, ${failedUpdates} browsers failed to update`, + duration: 5000, + }); + } else if (totalNewVersions > 0) { + toast.success(`Found ${totalNewVersions} new browser versions!`, { + description: `Updated ${successfulUpdates} browsers successfully`, + duration: 4000, + }); + } else { + toast.success("No new browser versions found", { + description: "All browser versions are up to date", + duration: 3000, + }); + } + + await loadUpdateStatus(); + return results; + } catch (error) { + console.error("Failed to trigger manual update:", error); + toast.error("Failed to update browser versions", { + description: + error instanceof Error ? error.message : "Unknown error occurred", + duration: 4000, + }); + throw error; + } finally { + setIsUpdating(false); + } + }, [loadUpdateStatus]); + + const fetchBrowserVersionsWithNewCount = useCallback( + async (browserStr: string) => { + try { + const result = await invoke( + "fetch_browser_versions_with_count", + { browserStr } + ); + + // Show notification about new versions if any were found + if (result.new_versions_count && result.new_versions_count > 0) { + const browserName = getBrowserDisplayName(browserStr); + toast.success( + `Found ${result.new_versions_count} new ${browserName} versions!`, + { + duration: 3000, + description: `Total available: ${result.total_versions_count} versions`, + } + ); + } + + return result; + } catch (error) { + console.error("Failed to fetch browser versions with count:", error); + throw error; + } + }, + [] + ); + + const formatTimeUntilUpdate = useCallback((seconds: number): string => { + if (seconds <= 0) return "Update overdue"; + + const hours = Math.floor(seconds / 3600); + const minutes = Math.floor((seconds % 3600) / 60); + + if (hours > 0) { + return `${hours}h ${minutes}m`; + } else if (minutes > 0) { + return `${minutes}m`; + } else { + return "< 1m"; + } + }, []); + + const formatLastUpdateTime = useCallback( + (timestamp: number | null): string => { + if (!timestamp) return "Never"; + + const date = new Date(timestamp * 1000); + const now = new Date(); + const diffMs = now.getTime() - date.getTime(); + const diffHours = Math.floor(diffMs / (1000 * 60 * 60)); + const diffMinutes = Math.floor((diffMs % (1000 * 60 * 60)) / (1000 * 60)); + + if (diffHours > 0) { + return `${diffHours}h ${diffMinutes}m ago`; + } else if (diffMinutes > 0) { + return `${diffMinutes}m ago`; + } else { + return "Just now"; + } + }, + [] + ); + + return { + isUpdating, + lastUpdateTime, + timeUntilNextUpdate, + updateProgress, + triggerManualUpdate, + fetchBrowserVersionsWithNewCount, + formatTimeUntilUpdate, + formatLastUpdateTime, + loadUpdateStatus, + }; +} diff --git a/src/lib/browser-utils.ts b/src/lib/browser-utils.ts new file mode 100644 index 0000000..ac3ca2b --- /dev/null +++ b/src/lib/browser-utils.ts @@ -0,0 +1,58 @@ +/** + * Browser utility functions + * Centralized helpers for browser name mapping, icons, etc. + */ + +import { SiMullvad, SiBrave, SiTorbrowser } from "react-icons/si"; +import { FaChrome, FaFirefox } from "react-icons/fa"; + +/** + * Map internal browser names to display names + */ +export function getBrowserDisplayName(browserType: string): string { + const browserNames: Record = { + firefox: "Firefox", + "firefox-developer": "Firefox Developer Edition", + "mullvad-browser": "Mullvad Browser", + zen: "Zen Browser", + brave: "Brave", + chromium: "Chromium", + "tor-browser": "Tor Browser", + }; + + return browserNames[browserType] || browserType; +} + +/** + * Get the appropriate icon component for a browser type + */ +export function getBrowserIcon(browserType: string) { + switch (browserType) { + case "mullvad-browser": + return SiMullvad; + case "chromium": + return FaChrome; + case "brave": + return SiBrave; + case "firefox": + case "firefox-developer": + return FaFirefox; + case "zen": + return FaFirefox; + case "tor-browser": + return SiTorbrowser; + default: + return null; + } +} + +/** + * Format browser name by capitalizing words and joining with spaces + * (fallback method for simple transformations) + */ +export function formatBrowserName(browserType: string): string { + return browserType + .split("-") + .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) + .join(" "); +} diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 0000000..365058c --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { type ClassValue, clsx } from "clsx"; +import { twMerge } from "tailwind-merge"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} diff --git a/src/styles/globals.css b/src/styles/globals.css new file mode 100644 index 0000000..76ca069 --- /dev/null +++ b/src/styles/globals.css @@ -0,0 +1,125 @@ +@import "tailwindcss"; +@import "tw-animate-css"; + +@custom-variant dark (&:is(.dark *)); + +@theme { + --font-sans: var(--font-geist-sans); + --font-mono: var(--font-geist-mono); +} + +@theme inline { + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} + +:root { + --radius: 0.625rem; + --background: oklch(1 0 0); + --foreground: oklch(0.141 0.005 285.823); + --card: oklch(1 0 0); + --card-foreground: oklch(0.141 0.005 285.823); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.141 0.005 285.823); + --primary: oklch(0.21 0.006 285.885); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.967 0.001 286.375); + --secondary-foreground: oklch(0.21 0.006 285.885); + --muted: oklch(0.967 0.001 286.375); + --muted-foreground: oklch(0.552 0.016 285.938); + --accent: oklch(0.967 0.001 286.375); + --accent-foreground: oklch(0.21 0.006 285.885); + --destructive: oklch(0.577 0.245 27.325); + --border: oklch(0.92 0.004 286.32); + --input: oklch(0.92 0.004 286.32); + --ring: oklch(0.705 0.015 286.067); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.141 0.005 285.823); + --sidebar-primary: oklch(0.21 0.006 285.885); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.967 0.001 286.375); + --sidebar-accent-foreground: oklch(0.21 0.006 285.885); + --sidebar-border: oklch(0.92 0.004 286.32); + --sidebar-ring: oklch(0.705 0.015 286.067); +} + +.dark { + --background: oklch(0.141 0.005 285.823); + --foreground: oklch(0.985 0 0); + --card: oklch(0.21 0.006 285.885); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.21 0.006 285.885); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.92 0.004 286.32); + --primary-foreground: oklch(0.21 0.006 285.885); + --secondary: oklch(0.274 0.006 286.033); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.274 0.006 286.033); + --muted-foreground: oklch(0.705 0.015 286.067); + --accent: oklch(0.274 0.006 286.033); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.704 0.191 22.216); + --border: oklch(1 0 0 / 10%); + --input: oklch(1 0 0 / 15%); + --ring: oklch(0.552 0.016 285.938); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.21 0.006 285.885); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.274 0.006 286.033); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.552 0.016 285.938); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..0d618ce --- /dev/null +++ b/src/types.ts @@ -0,0 +1,21 @@ +export interface ProxySettings { + enabled: boolean; + proxy_type: string; // "http", "https", "socks4", or "socks5" + host: string; + port: number; +} + +export interface TableSortingSettings { + column: string; // "name", "browser", "status" + direction: string; // "asc" or "desc" +} + +export interface BrowserProfile { + name: string; + browser: string; + version: string; + profile_path: string; + proxy?: ProxySettings; + process_id?: number; + last_launch?: number; +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..19e161f --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,35 @@ +{ + "compilerOptions": { + "forceConsistentCasingInFileNames": true, + "target": "ES2021", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "strictNullChecks": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + "next-env.d.ts", + "dist/types/**/*.ts" + ], + "exclude": ["node_modules"] +}

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 M07*qoM6N<$f_YwUbpQYW literal 0 HcmV?d00001 diff --git a/src-tauri/icons/ios/AppIcon-40x40@1x.png b/src-tauri/icons/ios/AppIcon-40x40@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..50d951a9edaf0a404eafd9f8d0606fbaafcd8982 GIT binary patch literal 2163 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%0AFZRAL^O53pV2r%oyl$?~9>fldvR2o$ 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%0AFZRAL^O53pV2r%oyl$?~9>fldvR2o$ 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

--Q(VH~Nx=>3c2ZR}1h?kGPztvNo^KE02+M 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 IJ?qf_0AX=2pa1{> literal 0 HcmV?d00001 diff --git a/public/vercel.svg b/public/vercel.svg new file mode 100644 index 0000000..7705396 --- /dev/null +++ b/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/window.svg b/public/window.svg new file mode 100644 index 0000000..b2b2a44 --- /dev/null +++ b/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src-tauri/.gitignore b/src-tauri/.gitignore new file mode 100644 index 0000000..12ab04f --- /dev/null +++ b/src-tauri/.gitignore @@ -0,0 +1,10 @@ +# Generated by Cargo +# will have compiled files and executables +/target/ + +# Generated by Tauri +# will have schema files for capabilities auto-completion +/gen/schemas + +/binaries/** +!**/.gitkeep \ No newline at end of file diff --git a/src-tauri/.rustfmt.toml b/src-tauri/.rustfmt.toml new file mode 100644 index 0000000..346c9d2 --- /dev/null +++ b/src-tauri/.rustfmt.toml @@ -0,0 +1,2 @@ +tab_spaces = 2 +max_width = 100 diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock new file mode 100644 index 0000000..dd96ff3 --- /dev/null +++ b/src-tauri/Cargo.lock @@ -0,0 +1,6097 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" + +[[package]] +name = "arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-io" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +dependencies = [ + "async-lock", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix 0.38.44", + "slab", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix 0.38.44", + "tracing", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "async-signal" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix 0.38.44", + "signal-hook-registry", + "slab", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "atk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" +dependencies = [ + "atk-sys", + "glib", + "libc", +] + +[[package]] +name = "atk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" +dependencies = [ + "serde", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2 0.5.2", +] + +[[package]] +name = "block2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d59b4c170e16f0405a2e95aff44432a0d41aa97675f3d52623effe95792a037" +dependencies = [ + "objc2 0.6.1", +] + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "brotli" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a334ef7c9e23abf0ce748e8cd309037da93e606ad52eb372e4ce327a0dcfbdfd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bumpalo" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + +[[package]] +name = "bytemuck" +version = "1.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +dependencies = [ + "serde", +] + +[[package]] +name = "bzip2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47" +dependencies = [ + "bzip2-sys", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "cairo-rs" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" +dependencies = [ + "bitflags 2.9.0", + "cairo-sys-rs", + "glib", + "libc", + "once_cell", + "thiserror 1.0.69", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "camino" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 2.0.11", +] + +[[package]] +name = "cargo_toml" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02260d489095346e5cafd04dea8e8cb54d1d74fcd759022a9b72986ebe9a1257" +dependencies = [ + "serde", + "toml", +] + +[[package]] +name = "cc" +version = "1.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04da6a0d40b948dfc4fa8f5bbf402b0fc1a64a28dbf7d12ffd683550f2c1b63a" +dependencies = [ + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfb" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +dependencies = [ + "byteorder", + "fnv", + "uuid", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-link", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.15", + "once_cell", + "tiny-keccak", +] + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "time", + "version_check", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" +dependencies = [ + "bitflags 2.9.0", + "core-foundation 0.10.0", + "core-graphics-types", + "foreign-types 0.5.0", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.9.0", + "core-foundation 0.10.0", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cssparser" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa 0.4.8", + "matches", + "phf 0.8.0", + "proc-macro2", + "quote", + "smallvec", + "syn 1.0.109", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn 2.0.98", +] + +[[package]] +name = "ctor" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" +dependencies = [ + "quote", + "syn 2.0.98", +] + +[[package]] +name = "darling" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.98", +] + +[[package]] +name = "darling_macro" +version = "0.20.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "deflate64" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da692b8d1080ea3045efaab14434d40468c3d8657e42abddfffca87b428f4c1b" + +[[package]] +name = "deranged" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cfac68e08048ae1883171632c2aef3ebc555621ae56fbccce1cbf22dd7f058" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derive_arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "derive_more" +version = "0.99.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.98", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "directories" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.59.0", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dispatch2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +dependencies = [ + "bitflags 2.9.0", + "objc2 0.6.1", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "dlopen2" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "dlv-list" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" +dependencies = [ + "const-random", +] + +[[package]] +name = "donutbrowser" +version = "0.1.0" +dependencies = [ + "async-trait", + "base64 0.22.1", + "core-foundation 0.10.0", + "directories", + "futures-util", + "lazy_static", + "reqwest", + "serde", + "serde_json", + "sysinfo", + "tauri", + "tauri-build", + "tauri-plugin-deep-link", + "tauri-plugin-fs", + "tauri-plugin-opener", + "tauri-plugin-shell", + "tempfile", + "tokio", + "tokio-test", + "zip", +] + +[[package]] +name = "dpi" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" +dependencies = [ + "serde", +] + +[[package]] +name = "dtoa" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" + +[[package]] +name = "embed-resource" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fbc6e0d8e0c03a655b53ca813f0463d2c956bc4db8138dbc89f120b066551e3" +dependencies = [ + "cc", + "memchr", + "rustc_version", + "toml", + "vswhom", + "winreg", +] + +[[package]] +name = "embed_plist" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + +[[package]] +name = "enumflags2" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "erased-serde" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" +dependencies = [ + "serde", + "typeid", +] + +[[package]] +name = "errno" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "event-listener" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "flate2" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" +dependencies = [ + "crc32fast", + "libz-rs-sys", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared 0.1.1", +] + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared 0.3.1", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gdk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" +dependencies = [ + "cairo-rs", + "gdk-pixbuf", + "gdk-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" +dependencies = [ + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", + "once_cell", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkwayland-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" +dependencies = [ + "gdk-sys", + "glib-sys", + "gobject-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkx11" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" +dependencies = [ + "gdk", + "gdkx11-sys", + "gio", + "glib", + "libc", + "x11", +] + +[[package]] +name = "gdkx11-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" +dependencies = [ + "gdk-sys", + "glib-sys", + "libc", + "system-deps", + "x11", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "wasm-bindgen", + "windows-targets 0.52.6", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "gio" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "pin-project-lite", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "gio-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" +dependencies = [ + "bitflags 2.9.0", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "memchr", + "once_cell", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "glib-macros" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" +dependencies = [ + "heck 0.4.1", + "proc-macro-crate 2.0.0", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "glib-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "glob" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" + +[[package]] +name = "gobject-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gtk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" +dependencies = [ + "atk", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk", + "gdk-pixbuf", + "gio", + "glib", + "gtk-sys", + "gtk3-macros", + "libc", + "pango", + "pkg-config", +] + +[[package]] +name = "gtk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk3-macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "h2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75249d144030531f8dee69fe9cea04d3edf809a017ae445e2abdff6629e86633" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap 2.7.1", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "html5ever" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" +dependencies = [ + "log", + "mac", + "markup5ever", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa 1.0.14", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "itoa 1.0.14", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +dependencies = [ + "futures-util", + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "libc", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core 0.61.0", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ico" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc50b891e4acf8fe0e71ef88ec43ad82ee07b3810ad09de10f1d01f072ed4b98" +dependencies = [ + "byteorder", + "png", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +dependencies = [ + "equivalent", + "hashbrown 0.15.2", + "serde", +] + +[[package]] +name = "infer" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" +dependencies = [ + "cfb", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + +[[package]] +name = "javascriptcore-rs" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" +dependencies = [ + "bitflags 1.3.2", + "glib", + "javascriptcore-rs-sys", +] + +[[package]] +name = "javascriptcore-rs-sys" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" +dependencies = [ + "jsonptr", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "jsonptr" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.9.0", + "serde", + "unicode-segmentation", +] + +[[package]] +name = "kuchikiki" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8" +dependencies = [ + "cssparser", + "html5ever", + "indexmap 1.9.3", + "matches", + "selectors", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libappindicator" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" +dependencies = [ + "glib", + "gtk", + "gtk-sys", + "libappindicator-sys", + "log", +] + +[[package]] +name = "libappindicator-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" +dependencies = [ + "gtk-sys", + "libloading", + "once_cell", +] + +[[package]] +name = "libc" +version = "0.2.172" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "liblzma" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66352d7a8ac12d4877b6e6ea5a9b7650ee094257dc40889955bea5bc5b08c1d0" +dependencies = [ + "liblzma-sys", +] + +[[package]] +name = "liblzma-sys" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5839bad90c3cc2e0b8c4ed8296b80e86040240f81d46b9c0e9bc8dd51ddd3af1" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.9.0", + "libc", +] + +[[package]] +name = "libz-rs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6489ca9bd760fe9642d7644e827b0c9add07df89857b0416ee15c1cc1a3b8c5a" +dependencies = [ + "zlib-rs", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db9c683daf087dc577b7506e9695b3d556a9f3849903fa28186283afd6809e9" + +[[package]] +name = "litemap" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "markup5ever" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" +dependencies = [ + "log", + "phf 0.10.1", + "phf_codegen 0.10.0", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", +] + +[[package]] +name = "muda" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4de14a9b5d569ca68d7c891d613b390cf5ab4f851c77aaa2f9e435555d3d9492" +dependencies = [ + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "objc2 0.6.1", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation 0.3.0", + "once_cell", + "png", + "serde", + "thiserror 2.0.11", + "windows-sys 0.59.0", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.9.0", + "jni-sys", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.9.0", + "cfg-if", + "cfg_aliases", + "libc", + "memoffset", +] + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551" +dependencies = [ + "objc2-encode", + "objc2-exception-helper", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5906f93257178e2f7ae069efb89fbd6ee94f0592740b5f8a1512ca498814d0fb" +dependencies = [ + "bitflags 2.9.0", + "block2 0.6.0", + "libc", + "objc2 0.6.1", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-image", + "objc2-foundation 0.3.0", + "objc2-quartz-core 0.3.0", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c1948a9be5f469deadbd6bcb86ad7ff9e47b4f632380139722f7d9840c0d42c" +dependencies = [ + "bitflags 2.9.0", + "objc2 0.6.1", + "objc2-foundation 0.3.0", +] + +[[package]] +name = "objc2-core-data" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f860f8e841f6d32f754836f51e6bc7777cd7e7053cf18528233f6811d3eceb4" +dependencies = [ + "bitflags 2.9.0", + "objc2 0.6.1", + "objc2-foundation 0.3.0", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" +dependencies = [ + "bitflags 2.9.0", + "dispatch2", + "objc2 0.6.1", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dca602628b65356b6513290a21a6405b4d4027b8b250f0b98dddbb28b7de02" +dependencies = [ + "bitflags 2.9.0", + "objc2 0.6.1", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-core-image" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ffa6bea72bf42c78b0b34e89c0bafac877d5f80bf91e159a5d96ea7f693ca56" +dependencies = [ + "objc2 0.6.1", + "objc2-foundation 0.3.0", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-exception-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" +dependencies = [ + "cc", +] + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.9.0", + "block2 0.5.1", + "libc", + "objc2 0.5.2", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a21c6c9014b82c39515db5b396f91645182611c97d24637cf56ac01e5f8d998" +dependencies = [ + "bitflags 2.9.0", + "block2 0.6.0", + "libc", + "objc2 0.6.1", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-kit" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71c1c64d6120e51cd86033f67176b1cb66780c2efe34dec55176f77befd93c0a" +dependencies = [ + "libc", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "161a8b87e32610086e1a7a9e9ec39f84459db7b3a0881c1f16ca5a2605581c19" +dependencies = [ + "bitflags 2.9.0", + "objc2 0.6.1", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.9.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.9.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fb3794501bb1bee12f08dcad8c61f2a5875791ad1c6f47faa71a0f033f20071" +dependencies = [ + "bitflags 2.9.0", + "objc2 0.6.1", + "objc2-foundation 0.3.0", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "777a571be14a42a3990d4ebedaeb8b54cd17377ec21b92e8200ac03797b3bee1" +dependencies = [ + "bitflags 2.9.0", + "objc2 0.6.1", + "objc2-core-foundation", + "objc2-foundation 0.3.0", +] + +[[package]] +name = "objc2-web-kit" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b717127e4014b0f9f3e8bba3d3f2acec81f1bde01f656823036e823ed2c94dce" +dependencies = [ + "bitflags 2.9.0", + "block2 0.6.0", + "objc2 0.6.1", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation 0.3.0", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "open" +version = "5.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2483562e62ea94312f3576a7aca397306df7990b8d89033e18766744377ef95" +dependencies = [ + "dunce", + "is-wsl", + "libc", + "pathdiff", +] + +[[package]] +name = "openssl" +version = "0.10.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" +dependencies = [ + "bitflags 2.9.0", + "cfg-if", + "foreign-types 0.3.2", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e145e1651e858e820e4860f7b9c5e169bc1d8ce1c86043be79fa7b7634821847" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "ordered-multimap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79" +dependencies = [ + "dlv-list", + "hashbrown 0.14.5", +] + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "os_pipe" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ffd2b0a5634335b135d5728d84c5e0fd726954b87111f7506a61c502280d982" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "pango" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" +dependencies = [ + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest", + "hmac", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "phf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" +dependencies = [ + "phf_macros 0.8.0", + "phf_shared 0.8.0", + "proc-macro-hack", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_shared 0.10.0", +] + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros 0.11.3", + "phf_shared 0.11.3", +] + +[[package]] +name = "phf_codegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", +] + +[[package]] +name = "phf_codegen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", +] + +[[package]] +name = "phf_generator" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" +dependencies = [ + "phf_shared 0.8.0", + "rand 0.7.3", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand 0.8.5", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared 0.11.3", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "phf_shared" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" +dependencies = [ + "siphasher 0.3.11", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher 0.3.11", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher 1.0.1", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "plist" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac26e981c03a6e53e0aee43c113e3202f5581d5360dae7bd2c70e800dd0451d" +dependencies = [ + "base64 0.22.1", + "indexmap 2.7.1", + "quick-xml", + "serde", + "time", +] + +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 0.38.44", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" +dependencies = [ + "toml_edit 0.20.7", +] + +[[package]] +name = "proc-macro-crate" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit 0.22.24", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-xml" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", + "rand_pcg", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.15", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_pcg" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "redox_syscall" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3" +dependencies = [ + "bitflags 2.9.0", +] + +[[package]] +name = "redox_users" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" +dependencies = [ + "getrandom 0.2.15", + "libredox", + "thiserror 2.0.11", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.12.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-native-tls", + "tokio-util", + "tower", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "windows-registry 0.4.0", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.15", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rust-ini" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e310ef0e1b6eeb79169a1171daf9abcb87a2e17c03bee2c4bb100b55c75409f" +dependencies = [ + "cfg-if", + "ordered-multimap", + "trim-in-place", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.9.0", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dade4812df5c384711475be5fcd8c162555352945401aed22a35bffeab61f657" +dependencies = [ + "bitflags 2.9.0", + "errno", + "libc", + "linux-raw-sys 0.9.2", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.23.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df51b5869f3a441595eac5e8ff14d486ff285f7b8c0df8770e49c3b56351f0f0" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" + +[[package]] +name = "rustls-webpki" +version = "0.103.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", + "serde", + "serde_json", + "url", + "uuid", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.98", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.9.0", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "selectors" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" +dependencies = [ + "bitflags 1.3.2", + "cssparser", + "derive_more", + "fxhash", + "log", + "matches", + "phf 0.8.0", + "phf_codegen 0.8.0", + "precomputed-hash", + "servo_arc", + "smallvec", + "thin-slice", +] + +[[package]] +name = "semver" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +dependencies = [ + "serde", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-untagged" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "299d9c19d7d466db4ab10addd5703e4c615dec2a5a16dbbafe191045e87ee66e" +dependencies = [ + "erased-serde", + "serde", + "typeid", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa 1.0.14", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa 1.0.14", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.7.1", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "serialize-to-javascript" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" +dependencies = [ + "serde", + "serde_json", + "serialize-to-javascript-impl", +] + +[[package]] +name = "serialize-to-javascript-impl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "servo_arc" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" +dependencies = [ + "nodrop", + "stable_deref_trait", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shared_child" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e297bd52991bbe0686c086957bee142f13df85d1e79b0b21630a99d374ae9dc" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" + +[[package]] +name = "socket2" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "softbuffer" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18051cdd562e792cad055119e0cdb2cfc137e44e3987532e0f9659a77931bb08" +dependencies = [ + "bytemuck", + "cfg_aliases", + "core-graphics", + "foreign-types 0.5.0", + "js-sys", + "log", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-quartz-core 0.2.2", + "raw-window-handle", + "redox_syscall", + "wasm-bindgen", + "web-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "soup3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared 0.11.3", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "swift-rs" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "sysinfo" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b897c8ea620e181c7955369a31be5f48d9a9121cb59fd33ecef9ff2a34323422" +dependencies = [ + "libc", + "memchr", + "ntapi", + "objc2-core-foundation", + "objc2-io-kit", + "windows 0.61.1", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.9.0", + "core-foundation 0.9.4", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck 0.5.0", + "pkg-config", + "toml", + "version-compare", +] + +[[package]] +name = "tao" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e59c1f38e657351a2e822eadf40d6a2ad4627b9c25557bc1180ec1b3295ef82" +dependencies = [ + "bitflags 2.9.0", + "core-foundation 0.10.0", + "core-graphics", + "crossbeam-channel", + "dispatch", + "dlopen2", + "dpi", + "gdkwayland-sys", + "gdkx11-sys", + "gtk", + "jni", + "lazy_static", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "objc2 0.6.1", + "objc2-app-kit", + "objc2-foundation 0.3.0", + "once_cell", + "parking_lot", + "raw-window-handle", + "scopeguard", + "tao-macros", + "unicode-segmentation", + "url", + "windows 0.61.1", + "windows-core 0.61.0", + "windows-version", + "x11-dl", +] + +[[package]] +name = "tao-macros" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tauri" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7b0bc1aec81bda6bc455ea98fcaed26b3c98c1648c627ad6ff1c704e8bf8cbc" +dependencies = [ + "anyhow", + "bytes", + "dirs", + "dunce", + "embed_plist", + "futures-util", + "getrandom 0.2.15", + "glob", + "gtk", + "heck 0.5.0", + "http", + "jni", + "libc", + "log", + "mime", + "muda", + "objc2 0.6.1", + "objc2-app-kit", + "objc2-foundation 0.3.0", + "objc2-ui-kit", + "percent-encoding", + "plist", + "raw-window-handle", + "reqwest", + "serde", + "serde_json", + "serde_repr", + "serialize-to-javascript", + "swift-rs", + "tauri-build", + "tauri-macros", + "tauri-runtime", + "tauri-runtime-wry", + "tauri-utils", + "thiserror 2.0.11", + "tokio", + "tray-icon", + "url", + "urlpattern", + "webkit2gtk", + "webview2-com", + "window-vibrancy", + "windows 0.61.1", +] + +[[package]] +name = "tauri-build" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a0350f0df1db385ca5c02888a83e0e66655c245b7443db8b78a70da7d7f8fc" +dependencies = [ + "anyhow", + "cargo_toml", + "dirs", + "glob", + "heck 0.5.0", + "json-patch", + "schemars", + "semver", + "serde", + "serde_json", + "tauri-utils", + "tauri-winres", + "toml", + "walkdir", +] + +[[package]] +name = "tauri-codegen" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93f035551bf7b11b3f51ad9bc231ebbe5e085565527991c16cf326aa38cdf47" +dependencies = [ + "base64 0.22.1", + "brotli", + "ico", + "json-patch", + "plist", + "png", + "proc-macro2", + "quote", + "semver", + "serde", + "serde_json", + "sha2", + "syn 2.0.98", + "tauri-utils", + "thiserror 2.0.11", + "time", + "url", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8db4df25e2d9d45de0c4c910da61cd5500190da14ae4830749fee3466dddd112" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.98", + "tauri-codegen", + "tauri-utils", +] + +[[package]] +name = "tauri-plugin" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37a5ebe6a610d1b78a94650896e6f7c9796323f408800cef436e0fa0539de601" +dependencies = [ + "anyhow", + "glob", + "plist", + "schemars", + "serde", + "serde_json", + "tauri-utils", + "toml", + "walkdir", +] + +[[package]] +name = "tauri-plugin-deep-link" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4976ac728ebc0487515aa956cfdf200abcc52b784e441493fc544bc6ce369c8" +dependencies = [ + "dunce", + "rust-ini", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "tauri-utils", + "thiserror 2.0.11", + "tracing", + "url", + "windows-registry 0.5.1", + "windows-result", +] + +[[package]] +name = "tauri-plugin-fs" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88371e340ad2f07409a3b68294abe73f20bc9c1bc1b631a31dc37a3d0161f682" +dependencies = [ + "anyhow", + "dunce", + "glob", + "percent-encoding", + "schemars", + "serde", + "serde_json", + "serde_repr", + "tauri", + "tauri-plugin", + "tauri-utils", + "thiserror 2.0.11", + "toml", + "url", + "uuid", +] + +[[package]] +name = "tauri-plugin-opener" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fdc6cb608e04b7d2b6d1f21e9444ad49245f6d03465ba53323d692d1ceb1a30" +dependencies = [ + "dunce", + "glob", + "objc2-app-kit", + "objc2-foundation 0.3.0", + "open", + "schemars", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror 2.0.11", + "url", + "windows 0.60.0", + "zbus", +] + +[[package]] +name = "tauri-plugin-shell" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d5eb3368b959937ad2aeaf6ef9a8f5d11e01ffe03629d3530707bbcb27ff5d" +dependencies = [ + "encoding_rs", + "log", + "open", + "os_pipe", + "regex", + "schemars", + "serde", + "serde_json", + "shared_child", + "tauri", + "tauri-plugin", + "thiserror 2.0.11", + "tokio", +] + +[[package]] +name = "tauri-runtime" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00f004905d549854069e6774533d742b03cacfd6f03deb08940a8677586cbe39" +dependencies = [ + "cookie", + "dpi", + "gtk", + "http", + "jni", + "objc2 0.6.1", + "objc2-ui-kit", + "raw-window-handle", + "serde", + "serde_json", + "tauri-utils", + "thiserror 2.0.11", + "url", + "windows 0.61.1", +] + +[[package]] +name = "tauri-runtime-wry" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f85d056f4d4b014fe874814034f3416d57114b617a493a4fe552580851a3f3a2" +dependencies = [ + "gtk", + "http", + "jni", + "log", + "objc2 0.6.1", + "objc2-app-kit", + "objc2-foundation 0.3.0", + "once_cell", + "percent-encoding", + "raw-window-handle", + "softbuffer", + "tao", + "tauri-runtime", + "tauri-utils", + "url", + "webkit2gtk", + "webview2-com", + "windows 0.61.1", + "wry", +] + +[[package]] +name = "tauri-utils" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2900399c239a471bcff7f15c4399eb1a8c4fe511ba2853e07c996d771a5e0a4" +dependencies = [ + "anyhow", + "brotli", + "cargo_metadata", + "ctor", + "dunce", + "glob", + "html5ever", + "http", + "infer", + "json-patch", + "kuchikiki", + "log", + "memchr", + "phf 0.11.3", + "proc-macro2", + "quote", + "regex", + "schemars", + "semver", + "serde", + "serde-untagged", + "serde_json", + "serde_with", + "swift-rs", + "thiserror 2.0.11", + "toml", + "url", + "urlpattern", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-winres" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8d321dbc6f998d825ab3f0d62673e810c861aac2d0de2cc2c395328f1d113b4" +dependencies = [ + "embed-resource", + "indexmap 2.7.1", + "toml", +] + +[[package]] +name = "tempfile" +version = "3.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" +dependencies = [ + "fastrand", + "getrandom 0.3.1", + "once_cell", + "rustix 1.0.1", + "windows-sys 0.59.0", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "thin-slice" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +dependencies = [ + "thiserror-impl 2.0.11", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "time" +version = "0.3.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +dependencies = [ + "deranged", + "itoa 1.0.14", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" + +[[package]] +name = "time-macros" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.44.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-test" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2468baabc3311435b55dd935f702f42cd1b8abb7e754fb7dfb16bd36aa88f9f7" +dependencies = [ + "async-stream", + "bytes", + "futures-core", + "tokio", + "tokio-stream", +] + +[[package]] +name = "tokio-util" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.24", +] + +[[package]] +name = "toml_datetime" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.7.1", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.20.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +dependencies = [ + "indexmap 2.7.1", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +dependencies = [ + "indexmap 2.7.1", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.7.3", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tray-icon" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7eee98ec5c90daf179d55c20a49d8c0d043054ce7c26336c09a24d31f14fa0" +dependencies = [ + "crossbeam-channel", + "dirs", + "libappindicator", + "muda", + "objc2 0.6.1", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.0", + "once_cell", + "png", + "serde", + "thiserror 2.0.11", + "windows-sys 0.59.0", +] + +[[package]] +name = "trim-in-place" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "343e926fc669bc8cde4fa3129ab681c63671bae288b1f1081ceee6d9d37904fc" + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "urlpattern" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +dependencies = [ + "regex", + "serde", + "unic-ucd-ident", + "url", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9" +dependencies = [ + "getrandom 0.3.1", + "serde", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version-compare" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vswhom" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" +dependencies = [ + "libc", + "vswhom-sys", +] + +[[package]] +name = "vswhom-sys" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.98", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-streams" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webkit2gtk" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a" +dependencies = [ + "bitflags 1.3.2", + "cairo-rs", + "gdk", + "gdk-sys", + "gio", + "gio-sys", + "glib", + "glib-sys", + "gobject-sys", + "gtk", + "gtk-sys", + "javascriptcore-rs", + "libc", + "once_cell", + "soup3", + "webkit2gtk-sys", +] + +[[package]] +name = "webkit2gtk-sys" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c" +dependencies = [ + "bitflags 1.3.2", + "cairo-sys-rs", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk-sys", + "javascriptcore-rs-sys", + "libc", + "pkg-config", + "soup3-sys", + "system-deps", +] + +[[package]] +name = "webview2-com" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b542b5cfbd9618c46c2784e4d41ba218c336ac70d44c55e47b251033e7d85601" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys", + "windows 0.61.1", + "windows-core 0.61.0", + "windows-implement 0.60.0", + "windows-interface", +] + +[[package]] +name = "webview2-com-macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "webview2-com-sys" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae2d11c4a686e4409659d7891791254cf9286d3cfe0eef54df1523533d22295" +dependencies = [ + "thiserror 2.0.11", + "windows 0.61.1", + "windows-core 0.61.0", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "window-vibrancy" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" +dependencies = [ + "objc2 0.6.1", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation 0.3.0", + "raw-window-handle", + "windows-sys 0.59.0", + "windows-version", +] + +[[package]] +name = "windows" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddf874e74c7a99773e62b1c671427abf01a425e77c3d3fb9fb1e4883ea934529" +dependencies = [ + "windows-collections 0.1.1", + "windows-core 0.60.1", + "windows-future 0.1.1", + "windows-link", + "windows-numerics 0.1.1", +] + +[[package]] +name = "windows" +version = "0.61.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" +dependencies = [ + "windows-collections 0.2.0", + "windows-core 0.61.0", + "windows-future 0.2.0", + "windows-link", + "windows-numerics 0.2.0", +] + +[[package]] +name = "windows-collections" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5467f79cc1ba3f52ebb2ed41dbb459b8e7db636cc3429458d9a852e15bc24dec" +dependencies = [ + "windows-core 0.60.1", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.0", +] + +[[package]] +name = "windows-core" +version = "0.60.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca21a92a9cae9bf4ccae5cf8368dce0837100ddf6e6d57936749e85f152f6247" +dependencies = [ + "windows-implement 0.59.0", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings 0.3.1", +] + +[[package]] +name = "windows-core" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +dependencies = [ + "windows-implement 0.60.0", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings 0.4.0", +] + +[[package]] +name = "windows-future" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a787db4595e7eb80239b74ce8babfb1363d8e343ab072f2ffe901400c03349f0" +dependencies = [ + "windows-core 0.60.1", + "windows-link", +] + +[[package]] +name = "windows-future" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a1d6bbefcb7b60acd19828e1bc965da6fcf18a7e39490c5f8be71e54a19ba32" +dependencies = [ + "windows-core 0.61.0", + "windows-link", +] + +[[package]] +name = "windows-implement" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83577b051e2f49a058c308f17f273b570a6a758386fc291b5f6a934dd84e48c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + +[[package]] +name = "windows-numerics" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "005dea54e2f6499f2cee279b8f703b3cf3b5734a2d8d21867c8f44003182eeed" +dependencies = [ + "windows-core 0.60.1", + "windows-link", +] + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.0", + "windows-link", +] + +[[package]] +name = "windows-registry" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" +dependencies = [ + "windows-result", + "windows-strings 0.3.1", + "windows-targets 0.53.0", +] + +[[package]] +name = "windows-registry" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad1da3e436dc7653dfdf3da67332e22bff09bb0e28b0239e1624499c7830842e" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings 0.4.0", +] + +[[package]] +name = "windows-result" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows-version" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e04a5c6627e310a23ad2358483286c7df260c964eb2d003d8efd6d0f4e79265c" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7f4ea97f6f78012141bcdb6a216b2609f0979ada50b20ca5b52dde2eac2bb1" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.9.0", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "wry" +version = "0.51.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c886a0a9d2a94fd90cfa1d929629b79cfefb1546e2c7430c63a47f0664c0e4e2" +dependencies = [ + "base64 0.22.1", + "block2 0.6.0", + "cookie", + "crossbeam-channel", + "dpi", + "dunce", + "gdkx11", + "gtk", + "html5ever", + "http", + "javascriptcore-rs", + "jni", + "kuchikiki", + "libc", + "ndk", + "objc2 0.6.1", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation 0.3.0", + "objc2-ui-kit", + "objc2-web-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "sha2", + "soup3", + "tao-macros", + "thiserror 2.0.11", + "url", + "webkit2gtk", + "webkit2gtk-sys", + "webview2-com", + "windows 0.61.1", + "windows-core 0.61.0", + "windows-version", + "x11-dl", +] + +[[package]] +name = "x11" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "xdg-home" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", + "synstructure", +] + +[[package]] +name = "zbus" +version = "5.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59c333f648ea1b647bc95dc1d34807c8e25ed7a6feff3394034dc4776054b236" +dependencies = [ + "async-broadcast", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener", + "futures-core", + "futures-lite", + "hex", + "nix", + "ordered-stream", + "serde", + "serde_repr", + "static_assertions", + "tracing", + "uds_windows", + "windows-sys 0.59.0", + "winnow 0.7.3", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "5.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f325ad10eb0d0a3eb060203494c3b7ec3162a01a59db75d2deee100339709fc0" +dependencies = [ + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.98", + "zbus_names", + "zvariant", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" +dependencies = [ + "serde", + "static_assertions", + "winnow 0.7.3", + "zvariant", +] + +[[package]] +name = "zerocopy" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "zip" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "153a6fff49d264c4babdcfa6b4d534747f520e56e8f0f384f3b808c4b64cc1fd" +dependencies = [ + "aes", + "arbitrary", + "bzip2", + "constant_time_eq", + "crc32fast", + "deflate64", + "flate2", + "getrandom 0.3.1", + "hmac", + "indexmap 2.7.1", + "liblzma", + "memchr", + "pbkdf2", + "sha1", + "time", + "zeroize", + "zopfli", + "zstd", +] + +[[package]] +name = "zlib-rs" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "868b928d7949e09af2f6086dfc1e01936064cc7a819253bce650d4e2a2d63ba8" + +[[package]] +name = "zopfli" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", +] + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.15+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "zvariant" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2df9ee044893fcffbdc25de30546edef3e32341466811ca18421e3cd6c5a3ac" +dependencies = [ + "endi", + "enumflags2", + "serde", + "static_assertions", + "winnow 0.7.3", + "zvariant_derive", + "zvariant_utils", +] + +[[package]] +name = "zvariant_derive" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74170caa85b8b84cc4935f2d56a57c7a15ea6185ccdd7eadb57e6edd90f94b2f" +dependencies = [ + "proc-macro-crate 3.2.0", + "proc-macro2", + "quote", + "syn 2.0.98", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "static_assertions", + "syn 2.0.98", + "winnow 0.7.3", +] diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml new file mode 100644 index 0000000..ce46ac0 --- /dev/null +++ b/src-tauri/Cargo.toml @@ -0,0 +1,49 @@ +[package] +name = "donutbrowser" +version = "0.1.0" +description = "A Tauri App" +authors = ["zhom@github"] +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +# The `_lib` suffix may seem redundant but it is necessary +# to make the lib name unique and wouldn't conflict with the bin name. +# This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519 +name = "donutbrowser" +crate-type = ["staticlib", "cdylib", "rlib"] + +[build-dependencies] +tauri-build = { version = "2", features = [] } + +[dependencies] +serde_json = "1" +serde = { version = "1", features = ["derive"] } +tauri = { version = "2", features = ["devtools"] } +tauri-plugin-opener = "2" +tauri-plugin-fs = "2" +tauri-plugin-shell = "2" +tauri-plugin-deep-link = "2" +directories = "6" +reqwest = { version = "0.12", features = ["json", "stream"] } +tokio = { version = "1", features = ["full"] } +sysinfo = "0.35" +lazy_static = "1.4" +base64 = "0.22" +zip = "4" +async-trait = "0.1" +core-foundation="0.10" +futures-util = "0.3" + +[dev-dependencies] +tempfile = "3.13.0" +tokio-test = "0.4.4" + +[features] +# by default Tauri runs in production mode +# when `tauri dev` runs it is executed with `cargo run --no-default-features` if `devPath` points to the filesystem +default = [ "custom-protocol" ] +# this feature is used used for production builds where `devPath` points to the filesystem +# DO NOT remove this +custom-protocol = [ "tauri/custom-protocol" ] diff --git a/src-tauri/Info.plist b/src-tauri/Info.plist new file mode 100644 index 0000000..11e1e46 --- /dev/null +++ b/src-tauri/Info.plist @@ -0,0 +1,48 @@ + + + + + CFBundleDisplayName + Donut Browser + CFBundleName + Donut Browser + CFBundleIdentifier + com.donutbrowser + CFBundleExecutable + donutbrowser + CFBundleVersion + 1 + CFBundleShortVersionString + 0.1.0 + CFBundlePackageType + APPL + CFBundleIconFile + icon.icns + CFBundleSignature + ???? + CFBundleIconFile + icon.icns + CFBundleURLTypes + + + CFBundleURLName + Web Browser + CFBundleURLSchemes + + http + https + + CFBundleURLIconFile + icon.icns + LSHandlerRank + Owner + + + LSApplicationCategoryType + public.app-category.productivity + NSHumanReadableCopyright + Copyright © 2025 Donut Browser + LSMinimumSystemVersion + 10.13 + + \ No newline at end of file diff --git a/src-tauri/assets/template.pac b/src-tauri/assets/template.pac new file mode 100644 index 0000000..6476447 --- /dev/null +++ b/src-tauri/assets/template.pac @@ -0,0 +1,14 @@ +function FindProxyForURL(url, host) { + const proxyString = "{{proxy_url}}"; + + // Split the proxy string to get the credentials part + const parts = proxyString.split(" ")[1].split("@"); + if (parts.length > 1) { + const credentials = parts[0]; + const encodedCredentials = encodeURIComponent(credentials); + // Replace the original credentials with encoded ones + return proxyString.replace(credentials, encodedCredentials); + } + + return proxyString; +} diff --git a/src-tauri/binaries/.gitkeep b/src-tauri/binaries/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src-tauri/build.rs b/src-tauri/build.rs new file mode 100644 index 0000000..e52f368 --- /dev/null +++ b/src-tauri/build.rs @@ -0,0 +1,9 @@ +fn main() { + #[cfg(target_os = "macos")] + { + println!("cargo:rustc-link-lib=framework=CoreFoundation"); + println!("cargo:rustc-link-lib=framework=CoreServices"); + } + + tauri_build::build() +} diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json new file mode 100644 index 0000000..2661420 --- /dev/null +++ b/src-tauri/capabilities/default.json @@ -0,0 +1,18 @@ +{ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "enables the default permissions", + "windows": ["main"], + "permissions": [ + "core:default", + "core:event:default", + "opener:default", + "fs:default", + "shell:allow-execute", + "shell:allow-kill", + "shell:allow-open", + "shell:allow-spawn", + "shell:allow-stdin-write", + "deep-link:default" + ] +} diff --git a/src-tauri/entitlements.plist b/src-tauri/entitlements.plist new file mode 100644 index 0000000..c514412 --- /dev/null +++ b/src-tauri/entitlements.plist @@ -0,0 +1,16 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.network.client + + com.apple.security.network.server + + com.apple.security.files.user-selected.read-write + + com.apple.security.files.downloads.read-write + + + \ No newline at end of file diff --git a/src-tauri/icons/128x128.png b/src-tauri/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..2dcf36edfb6684c6867bc6e91a417026a773fd05 GIT binary patch literal 9861 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/128x128@2x.png b/src-tauri/icons/128x128@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cff0582168460cdfc532df51d6e6f06bdfc833c7 GIT binary patch literal 23343 zcmb@NF)0CZusr{Km49- zd$7;_y5n=sxz4%XcZ9a45)LK>CIA4yQBjuH1pt7EpFjWz4e@2|gK8W&HF!f(D<1QR5DMi!6I$aG>!h z*MeB|dw%Za6$a5VmS|L3M~(yML)!&g2bFDg0XyR6<#w1?%tI7U*4sAkKPJCPU-rGw zsPwrxUQS?A3ra_heje-pfZsrY^vgN;hT3g^#c+IhB4JIK)3(wiw5<%4)AnX5VN2BQ zN%HAr`}K;-i+Y>wdF&#o0DQ5|@xw_Zck5{=F7>|O#gOo^iO|DN8J0%gCtm>9*}4DJ z8-ptfN=ow!`umTvuPz#xzJS`4VrepQ7~W0zE_PA140Sx>|Yh>ya-KUEV3J`5vej)B47hNPDLh^3wwGrpR>5fp zdz7&y772KqjQOPj)lMZZd3*4Ncsm_dc`m$7Es=iN3N?J-tdK)$=vZwx2>orHHgkiG zt1eiXIMh>_X4xp3PNk8XT*;;^UQ8ZdjuyvtChoC2I@;epUZ9o{W#zm-R*ilwG48|f zerOZJImFvbyNF%JvNvmBl9)36ODcCL8w@Ub}|gbs4$0j-do8ZB+lT31B0Kw8aH`d z%~wo%>d8H#r{XNkJw8y_t~j5!GWc?QhVpHYVM}P&|kYuX|uj!q4k!Gg9({kHF`G>z5BwR*cGCSJl6xU$E zH9}Fjwqtn;-|^uZgy98~_A?d6Wo4DEjor;cT_~a057JCf;qx8R}rRkmEeDB8N!8ea)Wfy0+vRoY2tk;pnf1$smM;0uYJ&cWbKn zq1?dGw&0`U)A{rV=N7+*s{^mMBUus;^O<(G??1INRerauO;<#$)tEIKwh3xYmTWgG&D5*Cp=gPjD-W>eh$ZHpon&_{1`^< zX~QcUFj}|Z(H8eeq4SYdfaAplVtwu=U*z(QNzSAS}Gn$**xb`%IM;%++R zb6#%tE|+}1-FRn%9A6i<)(CE^YBQ{C*iQdq(n9Sue+Cc6eZ5Q5g?&$EeaQDBUQUsa z|BS-^EgeTF7Fp4ZYPcm7htl&mFKVOY?P~CgK(={M9WRBf`(!OtnGgrwb}=memlvz4 z#(AaH7*BLFPFyjDN;EX!LexcfC{=o@1KeB?=CP}|lj*g5aqz2pn5Q~b?Y&JlGE1B^(J8U70}sWX z?$7e)RTincKJI0|nQOa;QQF`Zuu|DHdWG344dBVhKdbsRqYwA zOMx<4u3+!93-4u0g(cG?_(aE%FCHqtr3D#>3Q6Y!ENBJoCOwxLJrBN&NZh>sL={{o z#AK%q(Zz08_8(DxeyiwcCw4t+sU^0ZYRSc?+t&SxN-6K01&q~B)gGV_G!gZY9~rJ%Za(W*;!% zq^#QZ0-Eg~5y|=4=3YxZm1ivtM`$+Z>eu^fdVKmQ6l6%#$;F72Y25%^I5G~S!>ea4L*wpUvzrf;X{w5N<27nQnDyD&a1f7ysGQaSo8>xZ$aR7wo`{xt$} zdh~bY>%TEOyr*H<`<4phro3p>R>}1Ait=AWC~g%g#172#Jno}8GIFG^-kp|r_&uV$ zsYWfOcx%7XDxpF!z}0%YE+zfA{iLhUz#SL`sFLvjz`v^y1e|uDfB(Jbb(8(_*ptC; z9dk3LMC<*pZGFu*@B35rh-7tkqTvyVVR`HQ{xXIAFY`3Of^?r?G!G*9B_8^#w$ttB zJ?)!ECN-gNx;I*M3L5Cf@OKVAUY^_ zgYk9(a-c+d1zGhFf0kpV^+=XUcJ0HLp8*2%{4t!)N3}E0%THZkz9kJ=$RTx=?!Vs0ae2G z*09Wup#={gC7jIWTgMejDu^fesBU3+!T;f?#k?!D{M3O5ocWVRrnTarqUo4hiOLmj zn-`(FqSS4$LfbiJ0nYEbw4GSlTP(PsSPwU$mSwhmIUnHmxmohcwzl}UoW!Q5yWdPJ zSOsIW2-_Vm;N9trDLN9h`-&(#%_c2h=YAse(De-$ev^9818-s46<&^O>gg{fH3yS3 zY8P&B6V?yBa?O!;KUds4bca;p6j=(LevCu+5dHW3Qd*vP&%`U(n(6!^w?P!xqU&2&suOKDlm6mlkL3 zbqiMUvfuq>RZL?bGWz_@zg#nKK9bCGr zO1bXL0~)oUso5Az<6jZNEton`xwqE6VA1%ox#T-Aw2VmKwoF`rGl&k5EKu!IWL{|A zhQaxg`DY70Wz^}kv6peB*U7SI1ha$@S$<~i;Uxs6&+orNGA-}Doo0PlmW2v|7w-g; z?|P3aN3kr5@3sdw>rlq3`kBUbiJ751C;bU!>I%c7b@)-wpNm>8Nj!nX-q@-9mGPPO z<+jIi`1Qpg2OQW!5$4gkvpS(ARU0MkA4$&tDPMp>Hu4^4q__GaO6qI158vMKqU zR(ogzUK{xTQ8j9_cxNdT#~5C?Ls4-;}hxfEb>wYg! zH=GQ&3oFmxExu8Uc_{PZDo6?~y2y>dBFnqLF68#*P+b^{<_{6`jcDOzG|sfpykrna zAEm4~ve2M0-o-fTUTO-K_cn2VV+vef%0A~^l-%!0{}so` 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 Z>m?PSihah`nJ!MGy;~f(=9?!FWWl z9GKYkLfVB~%8_#Em5^Rc^4`sFvfr{vUh?AMz{_TLzi;OEP5I5Nm0XCXX~w_wed3Tm z4o8=Z+&VMr#==)Ohbs*(@LMbvEB`bFsKbKx4|uV~Znrzsh5-Wx;FBG82~=CrKP3C&R05eEUcEIoSk@MHiMR;mFAbnsPc=QRg_!Z5tX zS9?=aQ*A~@M&|3+ufxxrITOaZ4I3Q*=qI-i9z58CH~jA7x%$qmQzp=6Lo7IZ&Su{qh@&B@@uC9(^Vqz#WGn2~8%Ox~@`t+eu zqejuRY13%fuwk-}PfxtZfp9iAH{0Fa-Ftri{5fjQoH>524$~yPG~M-XY@}t?s#U>H zo;(Tr#?q4o?|3s5QA0xm-M@dIa&vQO^5n@hV#EmQ*RP+vgWJ>7({W0|wr$(C(a@no zjlB@1bM4x-A&(wC3gzcke&1{{yJ^LW6*d(Pv+>y2SlY8^4|#ig)7i6UiBCh*r%$J; zQ>O|T_7=^UF@sK>Iz@Bm&Lws=J$?FA_9E_Poy(Umx9R062`dj(JjRY4J5DWD#v>ym z>E6A2bougSTDWkbC@U)~qwMT#x_R@a+$Sd|%MZfglV5Ofu)Ie?1B3$LjZ>IxYDO?v z{$}}wh2v-E%(o;aCep22x9G-=8>0N;#fvn0^k`bWdNpx8<=O1nvkeb^`0znOgz)(J z`N^}#j~~;THER$8J4e8hnwt6#oA{Yc+F{#bDkFfDfGOAAzI~g{pFdBRE?uJN=x91{ z-~cUHu)r|PAZhE?t+apteyXjlC9WVEKYqNd*|%?>tlP3>3+3hIk)Bd=Vsr9a+m>=G z@8a_C;X|4~f4(Hz=FOXN0$G%ml|`>!y`q;dUs7mjsIfUJDoSz%5)lzW$BrEnAOQgZ zbo}^nx_kGo)ADSSgo^D@LWrr&W}||F0?NdlTwEMI zd-lx85tQh%Wy>U7$f2U5BGO~;8USMN<>e)wKwLR)qEHzC7$z%O_vOnMDZhymC(_ri zU*&yBNC=G_IZ{d&Yanmlym1P^>I?wWrznKr1P~}2GiHo<=FXivQV~iS68r7jx8iOH zfcEOuiz+KCDJ3OEo*_KU0o@A$8VEd4TwF|t4<8mqP{=Gs!-o&2B}A?iIigP&0QvVMNHJNt0Xy zP_CRZWs1~0Wdi;C^3`*gzD#@XSf*M z4;>D%9XN2HbVjt_2@@u$8Bh-3Xicsb%!9lymdn!@XH-LQhq0WK&5KX?oR#^|4-{s| zzqm&PFvI3`HkOm=MNjU6zw$f~$o2aZ*R_Xo8D6(LFCDn00YW^rIt8Gf>y?4^|NHw?Z`U$=;^Tyze4uLG j)APMw=56MSF46x7U7f*48pa-l00000NkvXXu0mjfR*_zV literal 0 HcmV?d00001 diff --git a/src-tauri/icons/64x64.png b/src-tauri/icons/64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..bcfb767db2d6bc2909ef4c69f9af8f906c3f6e66 GIT binary patch literal 4142 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 swf~$sx)TeNJQO8K0Wb*h7LI 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square142x142Logo.png b/src-tauri/icons/Square142x142Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..bee2506af6a59c3c9eb6649eaf0383efaabded98 GIT binary patch literal 11424 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 u8gOb<15S-I0000 zd-k`F2H2~&y?WWJkG)n0e-RLSB-~F+@Lfm3efB6|4$5(q@U!L7EB?9uW^R_+Yregf z*=v!#=Crl7%^fso(413FIi=&m3oneH9~GygSFc`%xpudF`SQZoxKLmLCODK$3OC-q z(@s12NtrWe4&QBM-wj*3bm`C`Lxv3AaKjBZvSS9>3t+9`niSHK2x$MEK7IOso_+S& z=T=*7wI_^2O*SAswboi|wT&G+)=io;$%D+O-N4mRB)|#*791*K&2X9JqehMD*m1`l z-L~6qyW<{v>@mtd`36{nu2ruHxt0FzN}Z%foxdyToNQ2l!e))p3-n<-PK-1o>MkGQL@y2=C0e&Z!W5hAiEj%D}Mqh;^C_ine{D@N*fG<8%6*3ss+Gdo{gqVo;>-dXP#n;f5?M zJAs>7fBp5_4nFwcZO4rp_uxhwZM2(x1$XL*ZnVjv8c$vYL0U5Ref##^@*^Ml$lH;q>R9fBw-~vu3s0cex`gcVMAYZL-NGZHF42amE?f@)@Gf z^r>FmV2d@T4Rkhdf8yx4m<3y{mc@% zI&v`}<5xOeO5#BtY)tz!Z}!R**Nh|v;;&=Gh!G#1H*el+=8~8ULomH7H*n>);Kq@9 znx)tF$xnWA*rk_VdPlS8^ewJ^r!3O;vd+f1)nkBdav4qwH?_GBw0U_EDiN{z30JGeg zm~f`#Vo?z>aJ_r?c6Oi6^hSp%KVZNB7n$@c5KdmMB|vt=4b_e`S-g1h+#Pn0Q#5zoLR_N4 z7$4|)?6Jol@{^zZ#XBBkNMx+h8t|?2CX;9z2hD4aAu;HKp^EE4hClfkT1XdvU~N_ zSN)66;Bq1L@892Tx7~KmxVhVR-+kTYn{OU+j8bsEt0;1!w%8m^v#|}HGiT0Xt!n)&*O`ks9J@w>M?%_usb`L)Ipck>B7zJb>{_uz0m%j8RXU@tJ z@VgpdQeP}Wa@=>m^PL}SZMy_m(eFE+eDcXhY+-ijN^TYBP;jQ7{`99_+!2?A(22;Z zfOA+t+;fp6<-MG1A&JuTCVp?mjQh)9{^I`hr$2e1p|6RC4jt;o9y8XB{=(>zKE_&h z#oiRxGJSLE;K75pG=;vc97x{KgRs7TH3&6HYk6 z9dX1FC14A%MN(V4>Bp@-Tld>g% zlqpl(M?d;e#!~_nmYFG|?(xSTC$qwXYPmU>`JH@DEPmWSRmYr^vSWG4t-VyQk28z4#-`}C(j?SAy5A9>5NNbco5rbed3zhX-K5L4pkWfg~+Mk{V* zdev5dDsloA0xC^3i*xV2_qwgO-rAja-gzEWI4{5X&2Ku3f4L)%JkoiOQF+b+w~a-*Weg*K7fTj2(b7+J~Fu0Hrs6DF1zfqLb(^~ zO46ViFzas%`+RH6nbtMikKW3qa^|fa7A;gEJX;P%0ASXO_Ypn!+;jdr{(k78hun9+ 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 DGyps_ literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square284x284Logo.png b/src-tauri/icons/Square284x284Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a5d634066120650927cf1149407f4cdc8d23237e GIT binary patch literal 26541 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 Q8Xg!0nUB&nlBU7`2d_6yv;Y7A literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square30x30Logo.png b/src-tauri/icons/Square30x30Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a8f23203a60a97814757864319dd67ca02052a66 GIT binary patch literal 1680 zcmV;B25!+bAxe;DU;XxbI%CbDlHbd;9L4du66MaJl!s-}|2JIp=xLXCfD3Fc|O= zq3@9SZ{l3Pvqd+Sxw$#~oTL9IP(^c^vIPwrjYc=C)hZj;uV3%EeED);K4)6UQGKAA zHA`P#-$+|q+k~S|r-nJJMox|O)TvW@@7=o>vv%#;pB61z9(appA+`V`taey=-01b|F(4L(jQGGlQ(a6=Vdc*G4WwUE}yZn zG1K()w8?BX+pSwH7W{YTb?+rhmIOscMnK6} zTem1aK3*b*aZSIEudlD4R>TIQDlRjsL<19FEiElnUS3XI98_6ZNdW-?G%+zD*lpjw zT^!)_QFC*%7$`0-rs3gX;%*RqFrJf>Bf5|sq!=}0Yg>H_>sbnzUcGvi{QdnU+GWd@ z(edNQiF;F0k0=>4+OlN}y?F70E?>S(t5&U|&6_tp-2fCDRV1<@J zb#kH0nu_lJ{rmLb!2{bFv=4Cn@Zp1`{_*3-bm`J1diwOKJV)PaHRL*C6b@30$o>5M zByD+ldGhSw!GrRB{`~pBIgxuD`;fw;M~@1*!06q(cWGc?K%hV%_&qv0YSZo1uy&o< zA_tbh6auzFWF8(Kw(Q`el!3kA4AX%WSX5M$jYOPXjsL(H8&QS85`Ed--7U`&6B9*o zW@e@xEN}*`bnMtM!5-Mg$HmjDSFfZP5h=H@WJZ6ro17IFutk-&wzf(UZQZ(+oXu= z`uqE-p`n3ZzI-WrpFMjfeGI{+q0-Ak0C{Xj42Se~0?1hNo2n?WSk^0ckPvduN+gHT`2uOe1OnRf7QTUn?dA z#x+!3-pX4P&W#&4sJgmZlzy7;Cl;5$1+*|M8J*z*W3 zoZm5&;UU(MeMNWRUEEA)A)dKp9legR=kVdfQb-^W)w38dG@^0iu_%(qsua7?M;~=e zOw1GR*l^RyORWOynI0IGQ}})#jBeR|ax4-n?c4 zB#0c72k?d?h}PZRU5sNL{S2e{@NX+)J;wZ9$Ax$M|dpyyo~{`THMPTxHKlW3&j_OD)H>|ZRt`<+dVI`fXi aq~tG1HmQX}IU7d+0000pOb@ literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square310x310Logo.png b/src-tauri/icons/Square310x310Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..cd37abaabd632a382782dbea7d004e3ce4868c5f GIT binary patch literal 29472 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 Z{|Avb%8jpWF#!Mo002ovPDHLkV1n8gngsv= literal 0 HcmV?d00001 diff --git a/src-tauri/icons/StoreLogo.png b/src-tauri/icons/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..464eaa77f2e0159b524af3cea0e366856f64a587 GIT binary patch literal 3196 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..62e10579130e89c49b105f878fb3d1fd162e7a5b GIT binary patch literal 18954 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