From 858d1a74d92aa1fc90630376cfe9c30c6cf2c7a4 Mon Sep 17 00:00:00 2001 From: Ivan Ivic Date: Tue, 16 Jun 2026 14:21:42 +0200 Subject: [PATCH 1/5] flatpak: Add source-built Flatpak distribution channel with Nix-backed local build tooling Add Flatpak as an officially supported sce CLI distribution channel under application ID dev.crocoder.sce. The Flatpak package is source-built inside Flatpak using a Flathub-style release-source manifest rather than wrapping any prebuilt Nix, GitHub Release, or npm binary artifact. - Add packaging/flatpak/ with the Flathub-ready manifest (dev.crocoder.sce.yml), AppStream metadata (dev.crocoder.sce.metainfo.xml), offline Cargo dependency sources (cargo-sources.json), a host-git bridge wrapper installed as /app/bin/git, and the sce-flatpak.sh orchestration script. - Extend flake.nix with Linux-only Flatpak apps (flatpak-validate, flatpak-local-manifest, flatpak-build), a lightweight static validation check (flatpak-static-validation) in checks, and appstreamcli/flatpak/flatpak-builder in the Linux dev shell. - Update current-state context: architecture, overview, glossary, patterns, context-map, and the install-channel/release-artifact contracts to record Flatpak as a supported source-built channel and the Nix orchestration boundary. Affected plan: nix-orchestrated-flatpak (T01, T02, T03) Co-authored-by: SCE --- context/architecture.md | 16 +- context/context-map.md | 7 +- context/glossary.md | 12 +- context/overview.md | 9 +- context/patterns.md | 13 +- context/plans/nix-orchestrated-flatpak.md | 88 + .../cli-first-install-channels-contract.md | 50 +- context/sce/cli-release-artifact-contract.md | 4 +- ...all-channel-integration-test-entrypoint.md | 4 +- flake.nix | 302 +- packaging/flatpak/cargo-sources.json | 6787 +++++++++++++++++ .../flatpak/dev.crocoder.sce.metainfo.xml | 27 + packaging/flatpak/dev.crocoder.sce.yml | 38 + packaging/flatpak/git-host-bridge | 2 + packaging/flatpak/sce-flatpak.sh | 466 ++ 15 files changed, 7700 insertions(+), 125 deletions(-) create mode 100644 context/plans/nix-orchestrated-flatpak.md create mode 100644 packaging/flatpak/cargo-sources.json create mode 100644 packaging/flatpak/dev.crocoder.sce.metainfo.xml create mode 100644 packaging/flatpak/dev.crocoder.sce.yml create mode 100644 packaging/flatpak/git-host-bridge create mode 100755 packaging/flatpak/sce-flatpak.sh diff --git a/context/architecture.md b/context/architecture.md index 099715bd..36a606b4 100644 --- a/context/architecture.md +++ b/context/architecture.md @@ -36,7 +36,7 @@ Current target renderer helper modules: - `config/pkl/renderers/metadata-coverage-check.pkl` - `config/pkl/generate.pkl` (single multi-file generation entrypoint) - `config/pkl/check-generated.sh` (dev-shell integration stale-output detection against committed generated files) -- `nix flake check` / `checks..{cli-tests,cli-clippy,cli-fmt,integrations-install-tests,integrations-install-clippy,integrations-install-fmt,pkl-parity,npm-bun-tests,npm-biome-check,npm-biome-format,config-lib-bun-tests,config-lib-biome-check,config-lib-biome-format}` (root-flake check derivations for the current CLI, `integrations/install` runner, generated-output parity, and JS validation inventory) +- `nix flake check` / `checks..{cli-tests,cli-clippy,cli-fmt,integrations-install-tests,integrations-install-clippy,integrations-install-fmt,pkl-parity,npm-bun-tests,npm-biome-check,npm-biome-format,config-lib-bun-tests,config-lib-biome-check,config-lib-biome-format}` plus Linux-only `flatpak-static-validation` (root-flake check derivations for the current CLI, `integrations/install` runner, generated-output parity, JS validation inventory, and lightweight Flatpak static/AppStream validation) - `config-lib-bun-tests` executes from `config/lib/` while using a repo-shaped copied source subset that also includes `cli/src/services/structured_patch/fixtures` for Claude agent-trace golden fixture coverage (fully Rust-owned; the Claude TypeScript Bun test was removed in T07). The scaffold provides stable canonical content-unit identifiers and reusable target-agnostic text primitives for all planned authored generated classes (agents, commands, skills, shared runtime assets, OpenCode plugin entrypoints, generated Claude plugin entrypoints, generated OpenCode package manifests, and generated Claude project settings). @@ -75,10 +75,13 @@ See `context/decisions/2026-02-28-pkl-generation-architecture.md` for the full m The repository includes a new placeholder Rust binary crate at `cli/`. -## First-wave CLI install/distribution boundary +## CLI install/distribution boundary -- The current implemented first-wave install/distribution surface for the `sce` CLI is limited to repo-flake Nix, Cargo, and npm; `Homebrew` is deferred from the active implementation stage. -- Nix-managed build/release entrypoints are the source of truth for first-wave build outputs and release automation. +- The current implemented binary install/distribution surface for the `sce` CLI includes repo-flake Nix, Cargo, and npm; `Homebrew` is deferred from the active implementation stage. +- Flatpak is also an official supported distribution channel for this implementation stage under application ID `dev.crocoder.sce`, with a source-built Flatpak package rather than a wrapper around Nix-built, GitHub Release, npm native, or other prebuilt `sce` artifacts. +- Nix-managed build/release entrypoints are the source of truth for existing binary build outputs and release automation, and Nix may orchestrate Flatpak tooling, local-source overrides, and validation without becoming the Flatpak package's binary source. +- The implemented Flatpak packaging/tooling surface lives under `packaging/flatpak/`: `dev.crocoder.sce.yml` is the Flathub-style source-build manifest, `cargo-sources.json` is generated from `cli/Cargo.lock` for offline Cargo sources, `dev.crocoder.sce.metainfo.xml` is the AppStream console-app metadata, `git-host-bridge` is installed as `/app/bin/git` to delegate runtime Git access to `flatpak-spawn --host git` with the required `org.freedesktop.Flatpak` permission, and `sce-flatpak.sh` generates local checkout-source manifests plus validation/build orchestration for the flake apps/check. +- Flatpak CI publishing, automatic Flathub submission, GitHub Release Flatpak assets, and release-version bumping are outside the current iteration. - The root flake now also owns an opt-in install-channel integration-test app surface, `apps.install-channel-integration-tests`, which provides the execution contract for npm/Bun/Cargo install verification without enrolling that heavier coverage in default `checks.`. - Repo-root `.version` is the canonical checked-in release version authority across GitHub Releases, Cargo publication, and npm publication. - GitHub Releases are the canonical publication surface for release archives, checksums, and release-manifest assets. @@ -127,7 +130,10 @@ The repository includes a new placeholder Rust binary crate at `cli/`. - `cli/src/services/structured_patch.rs` defines the synchronous structured editor-hook derivation seam. It derives Claude `PostToolUse` `Write` create and `Edit` structured-patch payloads into canonical `ParsedPatch` values plus Claude session/tool metadata, returning deterministic skip reasons for unsupported events/tools/payload shapes. The module is pure and side-effect-free. It is wired into `sce hooks diff-trace` for Claude payload classification at intake (T04) and into `AgentTraceDb::recent_diff_trace_patches` for post-commit structured payload parsing dispatch at read time (T05). - `cli/src/services/` contains module boundaries for command_registry, lifecycle, auth_command, config, setup, doctor, hooks, bash_policy, version, completion, help, patch, SCE web URL helpers, shared database infrastructure, local DB adapters, encrypted auth DB adapters, and Agent Trace DB adapters with explicit trait seams for future implementations. `cli/src/services/bash_policy.rs` owns both the CLI-agnostic evaluator logic and the hidden `sce policy bash` command adapter used by OpenCode and Claude hook callers. `cli/src/services/command_registry.rs` defines the static `RuntimeCommand` enum, deterministic `CommandRegistry` name catalog, and `build_default_registry()` function for command dispatch metadata. Service-owned command modules own the runtime command payload structs for help/help-text, version, completion, auth, config, setup, doctor, hooks, and policy. - `cli/README.md` is the crate-local onboarding and usage source of truth for placeholder behavior, safety limitations, and roadmap mapping back to service contracts. -- `flake.nix` applies `rust-overlay` (`oxalica/rust-overlay`) to nixpkgs, pins `rust-bin.stable.1.93.1.default` with `rustfmt` + `clippy`, reads the package/check version from repo-root `.version`, builds `packages.sce` through Crane (`buildDepsOnly` -> `buildPackage`) with a filtered repo-root source that preserves the Cargo tree plus `cli/assets/hooks`, then injects generated OpenCode/Claude config payloads and schema inputs into a temporary `cli/assets/generated/` mirror during derivation unpack so `cli/build.rs` can package the crate without requiring committed generated crate assets. The same `cli/build.rs` now scans `cli/migrations/*/*.sql` and writes `cli/src/generated_migrations.rs` with deterministic migration constants sorted by numeric filename prefix. The flake runs `cli-tests`, `cli-clippy`, and `cli-fmt` plus the dedicated `integrations-install-tests`, `integrations-install-clippy`, and `integrations-install-fmt` derivations through Crane-backed paths so both Rust crates have first-class default-flake verification, exposes directory-scoped JS validation derivations for both `npm/` and the shared `config/lib/` plugin package root, and also exposes the non-default `apps.install-channel-integration-tests` flake app for install-channel integration coverage outside the default check set. The shared config-lib source set is rooted at `config/lib/` and includes the shared `package.json`, `bun.lock`, and `tsconfig.json` plus `agent-trace-plugin/` and `bash-policy-plugin/`; `config-lib-bun-tests` runs the bash-policy plugin wrapper tests from that shared root, while `config-lib-biome-check` and `config-lib-biome-format` run Biome over the copied shared package source. `.github/workflows/publish-crates.yml` follows the same asset-preparation rule but runs Cargo packaging from a temporary clean repository copy so crates.io publish no longer needs `--allow-dirty`. +- `flake.nix` applies `rust-overlay` (`oxalica/rust-overlay`) to nixpkgs, pins `rust-bin.stable.1.95.0.default` with `rustfmt` + `clippy`, reads the package/check version from repo-root `.version`, builds `packages.sce` through Crane (`buildDepsOnly` -> `buildPackage`) with a filtered repo-root source that preserves the Cargo tree plus `cli/assets/hooks`, then injects generated OpenCode/Claude config payloads and schema inputs into a temporary `cli/assets/generated/` mirror during derivation unpack so `cli/build.rs` can package the crate without requiring committed generated crate assets. The same `cli/build.rs` now scans `cli/migrations/*/*.sql` and writes `cli/src/generated_migrations.rs` with deterministic migration constants sorted by numeric filename prefix. +- The root flake runs `cli-tests`, `cli-clippy`, and `cli-fmt` plus the dedicated `integrations-install-tests`, `integrations-install-clippy`, and `integrations-install-fmt` derivations through Crane-backed paths so both Rust crates have first-class default-flake verification; it also exposes directory-scoped JS validation derivations for both `npm/` and the shared `config/lib/` plugin package root. +- Flatpak flake tooling is Linux-only: `apps.flatpak-validate` runs `packaging/flatpak/sce-flatpak.sh validate`, `apps.flatpak-local-manifest` emits a generated checkout-source manifest, `apps.flatpak-build` runs opt-in `flatpak-builder` builds from that generated local manifest, `checks..flatpak-static-validation` performs lightweight static/AppStream validation without a full build, and the Linux dev shell includes `appstreamcli`, `flatpak`, and `flatpak-builder`. +- The root flake also exposes the non-default `apps.install-channel-integration-tests` flake app for npm/Bun/Cargo install-channel integration coverage outside the default check set. The shared config-lib source set is rooted at `config/lib/` and includes the shared `package.json`, `bun.lock`, and `tsconfig.json` plus `agent-trace-plugin/` and `bash-policy-plugin/`; `config-lib-bun-tests` runs the bash-policy plugin wrapper tests from that shared root, while `config-lib-biome-check` and `config-lib-biome-format` run Biome over the copied shared package source. `.github/workflows/publish-crates.yml` follows the same asset-preparation rule but runs Cargo packaging from a temporary clean repository copy so crates.io publish no longer needs `--allow-dirty`. - The config-lib check source preserves repo-relative access to shared CLI patch fixtures: Nix copies a filtered repo-shaped source containing `config/lib/**` plus `cli/src/services/structured_patch/fixtures`, then runs Bun/Biome from `config/lib/`. - `flake.nix` exposes release install/run surfaces as `packages.sce` (`packages.default = packages.sce`) plus `apps.sce` and `apps.default`, all targeting `${packages.sce}/bin/sce`; this keeps repo-local and remote flake run/install flows (`nix run .`, `nix run github:crocoder-dev/shared-context-engineering`, `nix profile install github:crocoder-dev/shared-context-engineering`) aligned to the same packaged CLI output. - `biome.json` at the repository root is the canonical Biome configuration for the current JS tooling slice and deliberately scopes coverage to `npm/**` plus the shared `config/lib/**` plugin package root while excluding package-local `node_modules/**`; `flake.nix` exposes Biome through the default dev shell rather than through package-local installs. diff --git a/context/context-map.md b/context/context-map.md index f37ed63e..59ea2dae 100644 --- a/context/context-map.md +++ b/context/context-map.md @@ -51,13 +51,12 @@ Feature/domain context: - `context/sce/agent-trace-minimal-generator.md` (implemented a library minimal Agent Trace generator seam at `cli/src/services/agent_trace.rs`, used by the active post-commit hook flow to produce strict `0.1.0` JSON payloads with top-level `version`, UUIDv7 `id` derived from commit-time metadata, caller-provided commit-time `timestamp`, optional top-level `vcs` metadata emitted when present (`type` from enum `git|jj|hg|svn`, `revision` from metadata input; current post-commit flow provides `git`), optional top-level `tool` metadata (`name`/`version`) sourced from builder metadata inputs when overlapping AI content exists, and always-emitted `metadata.sce.version` sourced from the compiled `sce` CLI package version, plus per-file trace data from patch inputs via `intersect_patches(constructed_patch, post_commit_patch)` then `post_commit_patch`-anchored hunk classification into `ai`/`mixed`/`unknown` contributor categories, serialized per conversation with a required lookup `url` derived from top-level `AgentTrace.id`, nested `contributor.type` with optional `contributor.model_id` omitted when provenance is missing, one derived `ranges[{start_line,end_line,content_hash}]` entry per post-commit or embedded-patch hunk, and range `content_hash` values that hash touched-line kind/content independent of positions and metadata) - `context/sce/agent-trace-hooks-command-routing.md` (implemented `sce hooks` command routing plus current runtime behavior: disabled-default commit-msg attribution, no-op `pre-commit`/`post-rewrite` entrypoints, active Agent Trace hook DB paths using no-migration readiness-gated AgentTraceDb access, active `post-commit` intersection entrypoint requiring validated `--remote-url`, threading that URL to the Agent Trace flow, printing it to stderr, capturing current commit patch, querying recent `diff_traces` from past 7 days, combining/intersecting patches via `patch::combine_patches` / `patch::intersect_patches`, persisting results to `post_commit_patch_intersections`, building/schema-validating post-commit Agent Trace payloads enriched with optional top-level `tool` metadata, `metadata.sce.version`, and range `content_hash`, and persisting validated payloads to AgentTraceDb `agent_traces` (DB-only), plus `diff-trace` STDIN intake with required non-empty `sessionID`/`diff`/`tool_name`, optional `model_id`, required nullable/non-empty `tool_version`, required `u64` `time` validation, dual persistence to AgentTraceDb, collision-safe `context/tmp/-000000-diff-trace.json` artifacts, `session-model` STDIN intake for normalized model attribution and raw Claude `SessionStart` events, and `conversation-trace` STDIN intake that classifies by `hook_event_name` — raw Claude `UserPromptSubmit` events (`transform_claude_user_prompt_submit`) and `Stop` events (`transform_claude_stop`) are transformed into normalized `message` + `message.part` items (user or assistant role, text part) and forwarded through the existing mixed-batch parser, patch `message.part` text is parsed to JSON-serialized `ParsedPatch` before persistence, unsupported raw Claude hook events fail deterministically with diagnostics listing supported events, and payloads without `hook_event_name` follow the existing `{ payloads: [{ type, ... }] }` mixed-batch validation/persistence path) - `context/sce/automated-profile-contract.md` (deterministic gate policy for automated OpenCode profile, including 10 gate categories, permission mappings, automated `/commit` single-commit execution behavior, and automated profile constraints) -<<<<<<< HEAD - `context/sce/bash-tool-policy-enforcement-contract.md` (approved bash-tool blocking contract plus current Rust evaluator seam and OpenCode/Claude delegation references, including config schema, argv-prefix matching, shell/nix unwrapping, fixed preset catalog/messages, and precedence rules) - `context/sce/generated-opencode-plugin-registration.md` (current generated OpenCode plugin-registration contract, canonical Pkl ownership, generated manifest/plugin paths including `sce-bash-policy` + `sce-agent-trace`, TypeScript source ownership, and Claude generated settings boundary including Agent Trace hooks plus `PreToolUse` Bash policy hook registration) - `context/sce/opencode-agent-trace-plugin-runtime.md` (current OpenCode agent-trace plugin runtime behavior, including captured `message.updated` handoff with `summary.diffs` branching: when diffs exist sends `-patch` variant `message.updated` + per-diff `message.part.updated` with `part_type: "patch"` concurrently via `Promise.all`, when no diffs sends original `message.updated` payload; in-memory dedup `Set` keyed by `"${sessionID}:${messageID}"`; captured `message.part.updated` handoff to `sce hooks conversation-trace` as `{ type: "message.part.updated", payloads: [{ session_id, message_id, part_type, text, generated_at_unix_ms }] }` with `text`/`reasoning` only; existing user-message diff extraction for `{ sessionID, diff, time, model_id }`; session-scoped OpenCode client version capture from `session.created`/`session.updated`; and CLI handoff to `sce hooks diff-trace` over STDIN JSON with required `tool_name="opencode"` plus required nullable `tool_version`; Rust hook parsing and AgentTraceDb insertion persist required payload fields including `model_id`) -- `context/sce/cli-first-install-channels-contract.md` (current first-wave `sce` install/distribution contract covering supported channels, canonical naming, `.version` release authority, and Nix-owned build policy) -- `context/sce/optional-install-channel-integration-test-entrypoint.md` (current opt-in flake app contract for install-channel integration coverage, including thin flake delegation to the Rust runner, shared harness ownership, real npm+Bun+Cargo install flows, channel selector semantics, and the explicit non-default execution boundary) -- `context/sce/cli-release-artifact-contract.md` (shared `sce` release artifact naming, checksum/manifest outputs, GitHub Releases as the canonical artifact publication surface, and the current three-target Linux/macOS release workflow topology) +- `context/sce/cli-first-install-channels-contract.md` (current `sce` install/distribution contract covering supported Nix/Cargo/npm plus source-built Flatpak channel scope, canonical naming, `.version` release authority for binary channels, Nix-owned build/release policy, Nix-orchestrated Flatpak local tooling through `packaging/flatpak/sce-flatpak.sh`, Linux flake apps/checks `flatpak-validate` / `flatpak-local-manifest` / `flatpak-build` / `flatpak-static-validation`, the implemented `packaging/flatpak/dev.crocoder.sce.yml` + AppStream/Cargo-source packaging surface, and the `dev.crocoder.sce` host-git bridge decision) +- `context/sce/optional-install-channel-integration-test-entrypoint.md` (current opt-in flake app contract for existing binary install-channel integration coverage, including thin flake delegation to the Rust runner, shared harness ownership, real npm+Bun+Cargo install flows, channel selector semantics, the explicit non-default execution boundary, and the separate Flatpak source-build validation boundary) +- `context/sce/cli-release-artifact-contract.md` (shared `sce` binary release artifact naming, checksum/manifest outputs, GitHub Releases as the canonical artifact publication surface, the current three-target Linux/macOS release workflow topology, and Flatpak's explicit source-built non-artifact exception) - `context/sce/cli-npm-distribution-contract.md` (implemented `sce` npm launcher package, release-manifest/checksum-verified native binary install flow, the supported darwin/arm64 plus linux x64+arm64 npm platform matrix, and dedicated `.github/workflows/publish-npm.yml` downstream npm publish-stage contract) - `context/sce/cli-cargo-distribution-contract.md` (implemented `sce` Cargo publication posture plus supported crates.io, git, and local checkout install guidance, dedicated crates.io publish workflow, and ephemeral crate-local generated-asset mirror requirement for published builds) diff --git a/context/glossary.md b/context/glossary.md index 9b11dc4c..d39d3e03 100644 --- a/context/glossary.md +++ b/context/glossary.md @@ -15,7 +15,7 @@ - `config-lib JS flake checks`: The current shared `config/lib/` validation slice exposed by root `flake.nix`: `config-lib-bun-tests` runs Bun-discovered tests from the copied shared `config/lib/` package source (including bash-policy plugin wrapper tests and tracked agent-trace plugin tests), with dependencies resolved from `config/lib/package.json` and `config/lib/bun.lock`, while `config-lib-biome-check` and `config-lib-biome-format` run Biome lint/check and format verification over the copied shared package source with formatter/linter halves disabled respectively. - `config-lib repo-shaped test source`: Root-flake source-layout contract where `config-lib-bun-tests`, `config-lib-biome-check`, and `config-lib-biome-format` run from `config/lib/` while their copied Nix source preserves repo-relative shared fixtures, currently `cli/src/services/structured_patch/fixtures` for Claude agent-trace golden tests (fully Rust-owned; the Claude TypeScript Bun test was removed in T07). - `config-lib shared package root`: Shared Bun/TypeScript package root at `config/lib/` for repository-owned OpenCode plugin support code. It owns `package.json`, `bun.lock`, and `tsconfig.json`, pins `@opencode-ai/plugin` to `1.15.4`, includes both `agent-trace-plugin/**/*.ts` and `bash-policy-plugin/**/*.ts` in strict TypeScript coverage, and excludes package-local `node_modules/` from both TypeScript and root Biome coverage. -- `cli rust overlay toolchain`: Toolchain contract in root `flake.nix` that applies `rust-overlay.overlays.default`, pins `rust-bin.stable.1.93.1.default` with `rustfmt` + `clippy`, uses that toolchain across both Crane package and check derivations, and keeps toolchain selection explicit rather than inheriting nixpkgs defaults. +- `cli rust overlay toolchain`: Toolchain contract in root `flake.nix` that applies `rust-overlay.overlays.default`, pins `rust-bin.stable.1.95.0.default` with `rustfmt` + `clippy`, uses that toolchain across both Crane package and check derivations, and keeps toolchain selection explicit rather than inheriting nixpkgs defaults. - `cli Crane package pipeline`: Current root-flake packaging path in `flake.nix` where `packages.sce` is built through `craneLib.buildDepsOnly` plus `craneLib.buildPackage` against a filtered repo-root source that preserves the Cargo tree and the embedded config/assets required by `cli/build.rs`. - `cli Crane check pipeline`: Current root-flake check path in `flake.nix` where `cli-tests`, `cli-clippy`, and `cli-fmt` run through `craneLib.cargoTest`, `craneLib.cargoClippy`, and `craneLib.cargoFmt`; test and clippy derivations reuse the shared `cargoArtifacts` dependency cache from the package pipeline. - `repo-root .version contract`: Repository packaging/version-source contract where `.version` stores the canonical semver string for flake-evaluated CLI package/check metadata and the approved release version authority for GitHub Releases, Cargo publication, and npm publication; `flake.nix` trims and reuses that value instead of hardcoding a version literal, and staged generated-config workflows must mirror it when Pkl renderers read the same path. @@ -145,8 +145,12 @@ - `auto-block`: Automated profile gate action that stops execution with structured error when conditions are not met; used for safety-critical gates like scope expansion, multi-task execution, and missing context. - `auto-allow`: Automated profile gate action that proceeds without confirmation; used for safe operations like file reads, skill loading, and context-only edits. - `auto-proceed`: Automated profile gate action that continues execution with logging but without waiting for confirmation; used for implementation stop and commit staging gates. -- `first-wave install contract`: Current implemented `sce` install/distribution scope captured in `context/sce/cli-first-install-channels-contract.md`: supported channels are repo-flake Nix, Cargo, and npm; `Homebrew` is deferred from the active implementation stage. -- `sce release-artifacts app`: Root-flake app exposed as `nix run .#release-artifacts`; packages the current-platform `sce` release archive, SHA-256 checksum file, and per-platform metadata fragment using the canonical first-wave artifact naming contract. +- `sce install channel contract`: Current `sce` install/distribution scope captured in `context/sce/cli-first-install-channels-contract.md`: supported channels are repo-flake Nix, Cargo, npm, and source-built Flatpak with application ID `dev.crocoder.sce`; `Homebrew` is deferred from the active implementation stage. +- `Flatpak source-built channel`: Official `sce` distribution channel for application ID `dev.crocoder.sce` where `packaging/flatpak/dev.crocoder.sce.yml` builds the Rust CLI from source inside Flatpak rather than consuming Nix-built, GitHub Release, npm native, or other prebuilt `sce` artifacts. `packaging/flatpak/cargo-sources.json` is the checked-in Cargo source descriptor generated from `cli/Cargo.lock`, and local builds use a Flathub-style release-source manifest plus a Nix-generated checkout-source manifest produced by `packaging/flatpak/sce-flatpak.sh`. +- `Flatpak host-git bridge`: Runtime Git access decision for the `sce` Flatpak package: `packaging/flatpak/git-host-bridge` is installed as `/app/bin/git` and delegates to `flatpak-spawn --host git`, with the Flatpak permission for `org.freedesktop.Flatpak` explicitly present in the manifest. +- `Flatpak Nix orchestration apps`: Linux-only root-flake apps `flatpak-validate`, `flatpak-local-manifest`, and `flatpak-build`; they delegate to `packaging/flatpak/sce-flatpak.sh` for static/AppStream validation, generated local checkout-source manifests, and explicit opt-in `flatpak-builder` source builds. +- `flatpak-static-validation`: Linux-only root-flake check that runs the lightweight Flatpak validation path during default `nix flake check`; it uses static source-build assertions, generated local-manifest validation, and `appstreamcli validate --pedantic --no-net` without running a full Flatpak build. +- `sce release-artifacts app`: Root-flake app exposed as `nix run .#release-artifacts`; packages the current-platform `sce` binary release archive, SHA-256 checksum file, and per-platform metadata fragment using the canonical release artifact naming contract. - `sce release-manifest app`: Root-flake app exposed as `nix run .#release-manifest`; merges per-platform `sce` metadata fragments into the release-level manifest JSON, emits detached signature `sce-v-release-manifest.json.sig`, and writes the combined `SHA256SUMS` file. - `SCE_RELEASE_MANIFEST_SIGNING_KEY`: Release-only private-key env var consumed by `nix run .#release-manifest` / `.github/workflows/release-sce.yml` to sign `sce-v-release-manifest.json`; it must never be committed or shipped in the npm package. - `sce npm launcher package`: Checked-in npm package under `npm/` named `@crocoder-dev/sce`; its `postinstall` flow downloads `sce-v-release-manifest.json` plus detached signature `sce-v-release-manifest.json.sig`, verifies that manifest with the bundled public key, then uses trusted `checksum_sha256` metadata to verify the matching GitHub release archive before installing the native binary into package-local runtime storage. The current supported npm install matrix is `darwin/arm64`, `linux/x64`, and `linux/arm64`, mapping to the current three release target triples. npm registry publication is a separate non-bumping downstream stage from GitHub release packaging. @@ -157,7 +161,7 @@ - `publish-crates workflow`: Dedicated crates.io publish automation in `.github/workflows/publish-crates.yml` that runs after a GitHub release is published (or by manual dispatch), validates `.version`, `cli/Cargo.toml`, and the requested release tag remain aligned, supports a dry-run validation path, and requires `CARGO_REGISTRY_TOKEN` for real publication. - `clean publish workspace`: Temporary `.git`-free copy of the checked-out repository used by the crates.io publish workflow so ephemeral generated crate assets can be prepared locally without forcing Cargo publish to run with `--allow-dirty`. - `cli generated asset mirror`: Ephemeral crate-local mirror under `cli/assets/generated/` created from canonical `config/` outputs just before Cargo packaging/builds so `cli/build.rs`, `cli/src/services/setup/mod.rs`, and `cli/src/services/config/mod.rs` can compile and package correctly without committing generated crate assets. -- `install-channel integration-test entrypoint`: Optional root-flake app exposed as `nix run .#install-channel-integration-tests -- --channel ` that reserves a stable Nix-owned execution path for heavier install-and-run CLI channel coverage without adding that coverage to default `nix flake check`; current Rust-runner coverage includes real npm, Bun, and Cargo install-and-verify flows for all three first-wave channels. +- `install-channel integration-test entrypoint`: Optional root-flake app exposed as `nix run .#install-channel-integration-tests -- --channel ` that reserves a stable Nix-owned execution path for heavier install-and-run CLI channel coverage without adding that coverage to default `nix flake check`; current Rust-runner coverage includes real npm, Bun, and Cargo install-and-verify flows for the existing binary install channels. Flatpak validation/build orchestration is a separate Nix-owned source-build path rather than part of this existing app surface. - `banner gradient rendering`: Per-column right-to-left RGB color gradient applied to ASCII art banner lines in `cli/src/services/style.rs`; uses `owo-colors` truecolor support with cyan (0, 255, 255) on the right fading to magenta (255, 0, 255) on the left when color is enabled, and plain uncolored ASCII when color is disabled (non-TTY or `NO_COLOR`); spaces in the banner are left unstyled to avoid trailing-space ANSI artifacts - `SCE_BANNER_LINES`: ASCII art "SCE" logo constant in `cli/src/command_surface.rs` rendered at the top of `sce`, `sce help`, and `sce --help` output via `banner_with_gradient`; plain ASCII when color is disabled - `patch domain model`: Standalone `serde`-serializable domain types in `cli/src/services/patch.rs` (`ParsedPatch`, `PatchFileChange`, `FileChangeKind`, `PatchHunk`, `TouchedLine`, `TouchedLineKind`) for in-memory parsed unified-diff representation; captures only touched lines (added/removed) plus minimal per-file/per-hunk metadata, excludes non-hunk headers and unchanged context lines, and supports JSON round-trip fidelity with `snake_case` field naming diff --git a/context/overview.md b/context/overview.md index b5dc8a60..604f651d 100644 --- a/context/overview.md +++ b/context/overview.md @@ -29,18 +29,19 @@ Generated config now includes repo-local plugin assets for both profiles: `sce-b The `doctor` command now exposes explicit inspection mode (`sce doctor`) and repair-intent mode (`sce doctor --fix`) at the CLI/help/schema level while keeping diagnosis mode read-only. It now validates both current global operator health and the current repo/hook-integrity slice: state-root resolution, global config path resolution, global and repo-local `sce/config.json` readability/schema validity, local DB and Agent Trace DB path + health, DB parent-directory readiness, git availability, non-repo vs bare-repo targeting failures, effective git hook-path source (default, per-repo `core.hooksPath`, or global `core.hooksPath`), hooks-directory health, required hook presence/executable permissions/content drift against canonical embedded SCE-managed hook assets, and repo-root OpenCode integration presence across the installed `plugins`, `agents`, `commands`, and `skills` inventories with embedded SHA-256 content verification for OpenCode assets. Text mode now renders the approved human-only layout with ordered `Environment` / `Configuration` / `Repository` / `Git Hooks` / `Integrations` sections, `SCE doctor diagnose` / `SCE doctor fix` headers, bracketed `[PASS]`/`[FAIL]`/`[MISS]` status tokens, shared-style green pass plus red fail/miss coloring when color output is enabled, simplified `label (path)` row formatting, top-level-only hook rows, and integration parent/child rows that reflect missing vs content-mismatch states; JSON output now reports Agent Trace DB health under `agent_trace_db` (as a row within the Configuration section in text mode). Repo-scoped database reporting is empty by default because no repo-owned SCE database currently exists. Fix mode reuses the canonical setup hook install flow to repair missing/stale/non-executable required hooks and can also bootstrap missing canonical DB parent directories while preserving manual-only guidance for unsupported issues. Claude bash-policy enforcement is also generated through `.claude/settings.json` as a `PreToolUse` `Bash` command hook running `sce policy bash`, so Claude and OpenCode both delegate to the Rust policy evaluator without a Claude TypeScript runtime. Local database bootstrap is now owned by `LocalDbLifecycle::setup` and `AgentTraceDbLifecycle::setup` aggregated by the setup command, while doctor validates both DB paths/health and can bootstrap missing parent directories. Wiring a user-invocable `sce sync` command is deferred to `0.4.0`. -The repository-root flake (`flake.nix`) now applies a Rust overlay-backed stable toolchain pinned to `1.93.1` (with `rustfmt` and `clippy`), reads package/check version from the repo-root `.version` file, builds `packages.sce` through a Crane `buildDepsOnly` + `buildPackage` pipeline with filtered package sources for the Cargo tree plus required embedded config/assets, and runs `cli-tests`, `cli-clippy`, and `cli-fmt` through Crane-backed check derivations (`cargoTest`, `cargoClippy`, `cargoFmt`) that reuse the same filtered source/toolchain setup. +The repository-root flake (`flake.nix`) now applies a Rust overlay-backed stable toolchain pinned to `1.95.0` (with `rustfmt` and `clippy`), reads package/check version from the repo-root `.version` file, builds `packages.sce` through a Crane `buildDepsOnly` + `buildPackage` pipeline with filtered package sources for the Cargo tree plus required embedded config/assets, and runs `cli-tests`, `cli-clippy`, and `cli-fmt` through Crane-backed check derivations (`cargoTest`, `cargoClippy`, `cargoFmt`) that reuse the same filtered source/toolchain setup. The root flake also exposes release install/run outputs directly as `packages.sce` (with `packages.default = packages.sce`) plus `apps.sce` and `apps.default`, so `nix build .#default`, `nix run . -- --help`, `nix run .#sce -- --help`, and `nix profile install github:crocoder-dev/shared-context-engineering` all target the packaged `sce` binary through the same flake-owned entrypoints. The CLI Cargo package metadata now includes crates.io publication-ready fields with crate-local install guidance in `cli/README.md`; supported Cargo install paths are `cargo install shared-context-engineering --locked`, `cargo install --git https://github.com/crocoder-dev/shared-context-engineering shared-context-engineering --locked`, and local `cargo install --path cli --locked`. The published crate installs the `sce` binary. The crate also keeps `cargo clippy --manifest-path cli/Cargo.toml` warnings-denied through `cli/Cargo.toml` lint configuration, so an extra `-- -D warnings` flag is redundant. -The repository-root flake is now the single Nix entrypoint for both repo tooling and CLI packaging/checks, so root-level `nix flake check` evaluates the Crane-backed CLI checks (`cli-tests`, `cli-clippy`, `cli-fmt`), the dedicated `integrations/install` runner checks (`integrations-install-tests`, `integrations-install-clippy`, `integrations-install-fmt`), plus six split JavaScript check derivations: `npm-bun-tests`, `npm-biome-check`, `npm-biome-format`, `config-lib-bun-tests`, `config-lib-biome-check`, and `config-lib-biome-format`, without nested-flake indirection. The config-lib checks now consume `config/lib/` as the shared Bun/TypeScript package root for both `agent-trace-plugin/` and `bash-policy-plugin/`, with dependencies resolved from `config/lib/package.json` and `config/lib/bun.lock`. For Cargo packaging/builds, the crate now compiles against a temporary `cli/assets/generated/` mirror prepared from canonical `config/` outputs during Nix builds and crates.io publish runs rather than from a committed crate-local snapshot. +The repository-root flake is now the single Nix entrypoint for both repo tooling and CLI packaging/checks, so root-level `nix flake check` evaluates the Crane-backed CLI checks (`cli-tests`, `cli-clippy`, `cli-fmt`), the dedicated `integrations/install` runner checks (`integrations-install-tests`, `integrations-install-clippy`, `integrations-install-fmt`), Linux-only `flatpak-static-validation`, plus six split JavaScript check derivations: `npm-bun-tests`, `npm-biome-check`, `npm-biome-format`, `config-lib-bun-tests`, `config-lib-biome-check`, and `config-lib-biome-format`, without nested-flake indirection. The config-lib checks now consume `config/lib/` as the shared Bun/TypeScript package root for both `agent-trace-plugin/` and `bash-policy-plugin`, with dependencies resolved from `config/lib/package.json` and `config/lib/bun.lock`. For Cargo packaging/builds, the crate now compiles against a temporary `cli/assets/generated/` mirror prepared from canonical `config/` outputs during Nix builds and crates.io publish runs rather than from a committed crate-local snapshot. Config-lib JS flake checks execute from `config/lib/`, but the copied Nix check source is repo-shaped when tests require shared repo fixtures; the current Claude agent-trace golden tests are fully Rust-owned in `cli/src/services/structured_patch/fixtures` (Claude TypeScript plugin test removed in T07). Local developer Nix tuning guidance now lives in `AGENTS.md`, including optional user-level `~/.config/nix/nix.conf` recommendations for `max-jobs` and `cores` plus an explicit system-level-only note for `auto-optimise-store`. The Pkl authoring layer owns generated OpenCode plugin registration for SCE-managed plugins: `config/pkl/base/opencode.pkl` defines the canonical plugin entries, `config/pkl/renderers/common.pkl` re-exports the shared plugin list for renderer use, and generated `config/.opencode/opencode.json` plus `config/automated/.opencode/opencode.json` register `./plugins/sce-bash-policy.ts` and `./plugins/sce-agent-trace.ts` through OpenCode's `plugin` field. Claude does not use an OpenCode-style plugin manifest; Claude bash-policy enforcement is registered through generated `.claude/settings.json` as a `PreToolUse` `Bash` command hook running `sce policy bash`. -The current first-wave CLI install/distribution contract is now defined for `sce`: the active implemented channel set is repo-flake Nix, Cargo, and npm; `Homebrew` is deferred from the current implementation stage. Nix-managed build/release entrypoints are the source of truth for this rollout, npm consumes Nix-produced release artifacts, and repo-root `.version` is the canonical checked-in release version source that release packaging and downstream Cargo/npm publication must match. The shared release artifact foundation is now implemented through root-flake apps `release-artifacts` and `release-manifest`, which emit canonical `sce-v-.tar.gz` archives, SHA-256 checksum files, merged manifest outputs, and a detached `sce-v-release-manifest.json.sig` produced from a non-repo private signing key; the npm distribution surface is now implemented as a checked-in `npm/` launcher package plus root-flake `release-npm-package`, which packs `sce-v-npm.tgz`, refuses mismatched checked-in package metadata, and installs the native CLI by downloading the release manifest plus detached signature, verifying the manifest with the bundled npm public key, and only then checksum-verifying the matching GitHub release archive at npm `postinstall` time. GitHub Releases are the canonical publication surface for those release artifacts, while crates.io and npm registry publication are separate non-bumping publish stages under the approved release topology. GitHub CLI release automation now lives in dedicated `release-sce*.yml` workflows split by Linux, Linux ARM, and macOS ARM, and `.github/workflows/release-sce.yml` now orchestrates those three reusable platform lanes before assembling the signed release manifest, npm tarball, and GitHub release payload. The orchestrator now tags/releases the checked-in `.version` directly and rejects version mismatches instead of generating a new semver during workflow execution, `.github/workflows/publish-crates.yml` is the dedicated crates.io publish stage triggered from a published GitHub release or manual dispatch with the same `.version`/tag/Cargo parity checks and a clean temporary repo copy for Cargo packaging, and `release-agents.yml` remains Tessl-only. +The current CLI install/distribution contract for `sce` includes repo-flake Nix, Cargo, npm, and source-built Flatpak (`dev.crocoder.sce`) as supported channels, while `Homebrew` remains deferred from the current implementation stage. Nix-managed build/release entrypoints are the source of truth for existing binary rollout surfaces, npm consumes Nix-produced release artifacts, and repo-root `.version` is the canonical checked-in release version source that release packaging and downstream Cargo/npm publication must match. Flatpak is the approved source-built exception to binary artifact reuse: its package must build the Rust CLI from source inside Flatpak, use a Flathub-style release-source manifest plus a Nix-generated local checkout override for local builds, prepare generated CLI assets from checked-in `config/` inputs, and provide Git access through a `/app/bin/git` wrapper delegating to `flatpak-spawn --host git` with the required `org.freedesktop.Flatpak` permission. The first Flatpak iteration does not add CI publishing, automatic Flathub submission, GitHub Release Flatpak assets, or release-version bumping. The shared release artifact foundation is now implemented through root-flake apps `release-artifacts` and `release-manifest`, which emit canonical `sce-v-.tar.gz` archives, SHA-256 checksum files, merged manifest outputs, and a detached `sce-v-release-manifest.json.sig` produced from a non-repo private signing key; the npm distribution surface is now implemented as a checked-in `npm/` launcher package plus root-flake `release-npm-package`, which packs `sce-v-npm.tgz`, refuses mismatched checked-in package metadata, and installs the native CLI by downloading the release manifest plus detached signature, verifying the manifest with the bundled npm public key, and only then checksum-verifying the matching GitHub release archive at npm `postinstall` time. GitHub Releases remain the canonical publication surface for binary release artifacts, while crates.io and npm registry publication are separate non-bumping publish stages under the approved release topology. GitHub CLI release automation now lives in dedicated `release-sce*.yml` workflows split by Linux, Linux ARM, and macOS ARM, and `.github/workflows/release-sce.yml` now orchestrates those three reusable platform lanes before assembling the signed release manifest, npm tarball, and GitHub release payload. The orchestrator tags/releases the checked-in `.version` directly and rejects version mismatches instead of generating a new semver during workflow execution; `.github/workflows/publish-crates.yml` and `.github/workflows/publish-npm.yml` own registry publication after release assets exist. +The checked-in Flatpak packaging surface lives under `packaging/flatpak/` with `dev.crocoder.sce.yml`, AppStream metadata, host-git wrapper source, the Cargo source descriptor generated from `cli/Cargo.lock`, and `sce-flatpak.sh` as the local Nix orchestration script used by flake apps/checks. The current supported automated release target matrix is `x86_64-unknown-linux-gnu`, `aarch64-unknown-linux-gnu`, and `aarch64-apple-darwin`; npm launcher platform support remains a separate current-state surface documented in the npm distribution contract and launcher code. The downstream publish-stage implementation is now complete for both registries: `.github/workflows/publish-crates.yml` publishes the checked-in crate version after `.version`/tag/Cargo parity checks, and `.github/workflows/publish-npm.yml` publishes the checked-in npm package after `.version`/tag/npm parity checks plus verification of the canonical `sce-v-npm.tgz` GitHub release asset. The repository root now also owns the canonical Biome contract for the current JavaScript tooling slice: `biome.json` scopes formatting/linting to `npm/` and the shared `config/lib/` plugin package root while excluding package-local `node_modules/`, and the root Nix dev shell provides the `biome` binary so contributors do not need a host-installed formatter/linter for those areas. -The root flake now also exposes an explicit opt-in install-channel integration-test app, `nix run .#install-channel-integration-tests -- --channel `, which remains outside the default `nix flake check` path while the Rust runner now executes real npm, Bun, and Cargo install-and-verify flows for all three first-wave channels. +The root flake now also exposes an explicit opt-in install-channel integration-test app, `nix run .#install-channel-integration-tests -- --channel `, which remains outside the default `nix flake check` path while the Rust runner now executes real npm, Bun, and Cargo install-and-verify flows for the existing binary install channels. Flatpak validation/build orchestration is separate: Linux flake apps expose `flatpak-validate`, `flatpak-local-manifest`, and opt-in `flatpak-build`, while default checks keep only lightweight static/AppStream validation and do not run a network-heavy Flatpak build. Shared Context Plan and Shared Context Code remain separate agent roles by design; planning (`/change-to-plan`) and implementation (`/next-task`) stay split while shared baseline guidance is deduplicated via canonical skill-owned contracts. Their shared baseline doctrine (core principles, `context/` authority, and quality posture) is defined once as canonical snippets in `config/pkl/base/shared-content-common.pkl` and composed into both agent bodies during generation; the aggregation surfaces `config/pkl/base/shared-content.pkl` (manual) and `config/pkl/base/shared-content-automated.pkl` (automated) import from grouped `plan`, `code`, and `commit` modules for downstream renderers. The `/next-task` command body is intentionally thin orchestration: readiness gating + phase sequencing are command-owned, while detailed implementation/context-sync contracts are skill-owned (`sce-plan-review`, `sce-task-execution`, `sce-context-sync`). The generated OpenCode command doc now also emits machine-readable frontmatter for this chain via `entry-skill: sce-plan-review` and an ordered `skills` list. diff --git a/context/patterns.md b/context/patterns.md index 768557bd..4d6cee31 100644 --- a/context/patterns.md +++ b/context/patterns.md @@ -27,12 +27,19 @@ - Current repo command contracts: - For flake app outputs, include `meta.description` so `nix flake check` app validation stays warning-free. - When install/integration coverage is heavier than the default repository validation baseline, expose it as an explicit opt-in flake app instead of adding it to `checks.` prematurely. +- For Flatpak local packaging, expose separate flake apps for validation, local-manifest generation, and full `flatpak-builder` execution so contributors can run lightweight checks without accidentally starting a network-heavy build. -## First-wave install/distribution rollout +## Install/distribution rollout -- Treat the approved first-wave channel set for the current implementation stage as closed: repo-flake Nix, Cargo, and npm only; `Homebrew` remains deferred until a later plan stage restores it explicitly. +- Treat the approved channel set for the current implementation stage as closed: repo-flake Nix, Cargo, npm, and source-built Flatpak (`dev.crocoder.sce`) only; `Homebrew` remains deferred until a later plan stage restores it explicitly. - Standardize new install-facing surfaces on the canonical `sce` name; remove or explicitly map legacy `sce-editor` references when they are touched. -- Keep Nix-managed build/release entrypoints as the source of truth for downstream install channels. +- Keep Nix-managed build/release entrypoints as the source of truth for binary downstream install channels. +- For Flatpak, keep Nix as the preferred local orchestration layer for tooling, generated checkout-source overrides, lint/validation, and local builds, but keep the Flatpak package source-built inside Flatpak rather than consuming Nix-built, GitHub Release, npm native, or other prebuilt `sce` artifacts. +- Keep checked-in Flatpak packaging under `packaging/flatpak/`: source-build manifest, AppStream metadata, host-git wrapper source, and Cargo source descriptor generated from `cli/Cargo.lock`. +- For Flatpak local builds, preserve the release-source manifest plus generated local-checkout override model so the canonical manifest remains suitable for Flathub review while checkout builds remain ergonomic. +- Keep Flatpak default-flake validation static/AppStream-only and no-net; full `flatpak-builder` source builds belong behind an explicit opt-in app such as `nix run .#flatpak-build`. +- For Flatpak runtime Git access, preserve the explicit host-git bridge decision: `/app/bin/git` delegates to `flatpak-spawn --host git` and the manifest carries the required `org.freedesktop.Flatpak` permission. +- Do not add Flatpak CI publishing, automatic Flathub submission, GitHub Release Flatpak assets, or workflow-side release-version bumps in the current Flatpak iteration. - Treat repo-root `.version` as the canonical checked-in release version source for GitHub Releases, Cargo publication, and npm publication. - Expose shared CLI release packaging through root-flake apps so local verification and GitHub release automation consume the same commands (`nix run .#release-artifacts`, `nix run .#release-manifest`, `nix run .#release-npm-package`). - Keep GitHub Releases as the canonical publication surface for signed release archives and manifest/checksum assets. diff --git a/context/plans/nix-orchestrated-flatpak.md b/context/plans/nix-orchestrated-flatpak.md new file mode 100644 index 00000000..87a2f939 --- /dev/null +++ b/context/plans/nix-orchestrated-flatpak.md @@ -0,0 +1,88 @@ +# Plan: Nix-orchestrated Flatpak distribution for `sce` + +## Change summary + +Add Flatpak as an officially supported `sce` CLI distribution channel by introducing a Flathub-ready source-built manifest, Nix-backed local build/check entrypoints, and clear local build/install documentation. + +The Flatpak package must remain source-built: Nix may provide and orchestrate Flatpak tooling, generate local build overrides, and run validation, but the Flatpak manifest must not copy or download a Nix-built `sce` binary, GitHub Release binary artifact, npm native binary, or other prebuilt `sce` artifact. This first Flatpak iteration does not add CI publishing, automatic Flathub submission, GitHub Release Flatpak assets, or release-version bumping. + +Resolved implementation decisions: + +- Flatpak application ID is `dev.crocoder.sce`. +- Use a Flathub-style release-source manifest plus a Nix-generated local checkout override for local builds from the current checkout. +- Use a host `git` bridge for Flatpak runtime Git access: install a small `/app/bin/git` wrapper that delegates to `flatpak-spawn --host git`, and add the required Flatpak permission for `org.freedesktop.Flatpak`. +- Use the standard Flatpak Rust source-build pattern with the Freedesktop SDK Rust extension, offline Cargo dependency sources generated from `cli/Cargo.lock`, and build-time preparation of `cli/assets/generated/config/**` from checked-in `config/` inputs. + +## Success criteria + +- Flatpak is represented as an official supported install channel in current-state distribution context, replacing the prior first-wave statement that Flatpak is out of scope. +- A Flathub-ready manifest exists for application ID `dev.crocoder.sce` and builds the Rust CLI from source inside Flatpak rather than wrapping prebuilt Nix/GitHub Release/npm binary artifacts. +- The manifest source model is suitable for Flathub review while the Nix local build path can build from the current checkout through a generated local-source override. +- Nix provides the preferred local orchestration path for Flatpak tooling/build validation while preserving the manifest's source-built Flatpak semantics. +- The package exposes the `sce` CLI command and includes expected Flatpak metadata/files for Flathub review, with a minimal sandbox profile for a CLI tool plus the explicit host-git bridge permission. +- Local documentation explains how to build, install, run, validate, and uninstall/test the Flatpak package from a checkout using the Nix-backed path first, with a direct `flatpak-builder` fallback where practical. +- Verification covers manifest syntax/buildability as far as local tooling allows, repository checks, Nix-backed Flatpak entrypoints, and context sync for the new distribution channel. + +## Constraints and non-goals + +- In scope: Flathub-ready manifest, AppStream/metainfo metadata for a console application, optional icon/desktop metadata only if validation requires it, host-git bridge wrapper, Nix-backed Flatpak build/check entrypoints, local build/install documentation, and current-state context updates for Flatpak support. +- Out of scope: CI publishing, automatic Flathub submission, GitHub Release Flatpak assets, Flatpak wrappers around prebuilt binaries, release-version bumping, and changes to existing Cargo/npm/Nix publication workflows unless required to orchestrate source-built Flatpak validation. +- Nix may install/provide `flatpak-builder`, AppStream validation tools, `flatpak-builder-lint`, wrapper scripts, flake apps, opt-in checks, and generated local manifests/overrides used to build/test the Flatpak package locally. +- The Flatpak package must build `sce` from source inside Flatpak and must not consume `nix build .#sce`, packaged flake outputs, GitHub Release tarballs, npm native binaries, or other prebuilt `sce` artifacts. +- Existing Nix, Cargo, npm, and release-artifact contracts remain source-of-truth for their channels and should not be regressed. +- GitHub Releases remain the canonical binary artifact publication surface for existing release channels; Flatpak intentionally supersedes the generic future-channel reuse guidance by using a source-built Flatpak manifest instead of consuming release archives. +- Default `nix flake check` integration should remain lightweight and deterministic; network-heavy Flatpak builds should be opt-in unless the implementation can make them reliably cheap and non-interactive. +- Each executable task below is scoped as one atomic commit unit. + +## Task stack + +- [x] T01: `Approve Nix-orchestrated Flatpak contract in context` (status:done) + - Task ID: T01 + - Goal: Update current-state distribution context so Flatpak is an official supported channel whose local build/check path is Nix-orchestrated while the Flatpak package remains source-built. + - Boundaries (in/out of scope): In - update `context/sce/cli-first-install-channels-contract.md`, `context/sce/cli-release-artifact-contract.md` downstream-channel notes if needed, `context/context-map.md`, `context/overview.md`, `context/architecture.md`, `context/patterns.md`, and `context/glossary.md` entries that currently describe supported channels or Nix-owned build policy. Also repair pre-existing conflict-marker text in touched context sections if it blocks accurate current-state context. Out - application code, Flatpak manifest implementation, Nix code, and user-facing docs outside `context/`. + - Done when: Context no longer lists Flatpak as out of scope for the active distribution model; it records `dev.crocoder.sce`, the source-built Flatpak requirement, the release-source-plus-local-override model, the allowed Nix orchestration role, the host-git bridge decision, and the no-publish-pipeline scope for this iteration; existing Nix/Cargo/npm contracts remain intact. + - Verification notes (commands or checks): Review changed context files for contradictions, especially wording that implies Flatpak wraps `nix build .#sce`, GitHub Release binaries, or npm native binaries; no shell validation required beyond later full-plan checks. + - Completed: 2026-06-16 + - Files changed: `context/sce/cli-first-install-channels-contract.md`, `context/sce/cli-release-artifact-contract.md`, `context/sce/optional-install-channel-integration-test-entrypoint.md`, `context/context-map.md`, `context/overview.md`, `context/architecture.md`, `context/patterns.md`, `context/glossary.md`, `context/plans/nix-orchestrated-flatpak.md`. + - Evidence: static review via `Grep` confirmed no merge conflict markers under `context/**/*.md`; targeted stale-wording search found only active-plan references; `git diff --check` returned clean; Flatpak/current-state wording now records `dev.crocoder.sce`, source-built semantics, release-source plus Nix-generated local checkout override model, allowed Nix orchestration role, host-git bridge, no-publish-pipeline scope, and binary-artifact non-consumption in active distribution context. + - Context sync: completed as an important-change pass; root context files and distribution-domain files were updated because the supported distribution-channel contract changed. + +- [x] T02: `Add source-built Flatpak manifest and metadata` (status:done) + - Task ID: T02 + - Goal: Add a Flathub-ready Flatpak packaging surface for `dev.crocoder.sce` that builds the Rust `sce` CLI from source and installs the `sce` command. + - Boundaries (in/out of scope): In - new Flatpak packaging files such as `packaging/flatpak/dev.crocoder.sce.yml`, `dev.crocoder.sce.metainfo.xml`, generated/checked-in Cargo dependency sources from `cli/Cargo.lock`, a host-git bridge wrapper installed as `/app/bin/git`, and minimal build-support files needed for Flatpak source builds. Out - CI workflows, release asset generation, prebuilt binary downloads, Nix-built binary copying, and unrelated packaging refactors. + - Done when: The manifest uses application ID `dev.crocoder.sce`, declares the Freedesktop runtime/SDK and Rust SDK extension, builds from source within Flatpak, prepares required generated CLI assets from checked-in `config/` inputs before Cargo builds, installs/runs `sce`, installs AppStream metadata for a console application with `sce`, declares only required runtime/build dependencies and permissions including the explicit host-git bridge permission, and contains no references to Nix-produced or GitHub/npm binary artifacts. + - Verification notes (commands or checks): Run the narrowest available Flatpak manifest lint/build command if Flatpak tooling is installed; otherwise document missing local tooling and perform static review of manifest paths, app ID, modules, sources, command, permissions, host-git wrapper, metadata, Cargo source list, and absence of prebuilt `sce` artifact references. Later T05 runs repository-wide validation. + - Completed: 2026-06-16 + - Files changed: `packaging/flatpak/dev.crocoder.sce.yml`, `packaging/flatpak/dev.crocoder.sce.metainfo.xml`, `packaging/flatpak/git-host-bridge`, `packaging/flatpak/cargo-sources.json`, `context/sce/cli-first-install-channels-contract.md`, `context/context-map.md`, `context/overview.md`, `context/architecture.md`, `context/patterns.md`, `context/glossary.md`, `context/plans/nix-orchestrated-flatpak.md`. + - Evidence: `python3` static manifest/source-descriptor assertions passed (`dev.crocoder.sce`, `sce` command, Rust SDK extension, generated-asset preparation, offline locked Cargo source build, `/app/bin/sce`, `/app/bin/git`, metainfo install, host-git permission, Turso source patching, 1044 cargo source entries); `appstreamcli validate --pedantic packaging/flatpak/dev.crocoder.sce.metainfo.xml` passed; static prebuilt-artifact grep under `packaging/flatpak` found no `nix build`, GitHub Release, npm, or prebuilt/native-binary references; local `flatpak-builder` and `flatpak-builder-lint` were unavailable, so no Flatpak build/lint command was run; `git diff --check` passed; `nix run .#pkl-check-generated` passed; `nix flake check` was run and failed in pre-existing `checks.x86_64-linux.cli-fmt` on committed `cli/src/generated_migrations.rs` formatting, which this task did not modify. + - Context sync: completed as an important-change pass; Flatpak distribution context now points to the implemented `packaging/flatpak/` manifest, AppStream metadata, host-git wrapper, and Cargo source descriptor, with root toolchain context repaired to the current flake-pinned Rust `1.95.0`. + +- [x] T03: `Add Nix-backed Flatpak build and validation entrypoints` (status:done) + - Task ID: T03 + - Goal: Add Nix-based developer entrypoints that provide Flatpak tooling and orchestrate local manifest validation/builds without making the Flatpak package consume Nix-built `sce` binaries. + - Boundaries (in/out of scope): In - flake/dev-shell support, flake app(s), scripts, generated local-source override/manifest support for current-checkout builds, AppStream/Flatpak lint entrypoints, and opt-in checks for invoking `flatpak-builder`/`flatpak-builder-lint`/`appstreamcli` against the manifest. Out - mandatory network-heavy Flatpak builds in default `nix flake check` unless explicitly lightweight, CI publishing, Flathub submission automation, and changes to existing release artifact generation. + - Done when: Contributors have a Nix-provided command/check path for Flatpak validation and local package build; the local build path uses a generated checkout-source override rather than a prebuilt `sce` binary; any default-check integration is intentional, deterministic, and documented; the dev shell or app output surfaces Flatpak tooling availability consistently with existing flake-app conventions. + - Verification notes (commands or checks): Run the new Nix-backed Flatpak command/check if practical; run `nix flake check` if the task changes flake/dev-shell/check surfaces; statically review that Nix orchestration passes sources/manifests into Flatpak tooling and does not bypass the Flatpak source build. + - Completed: 2026-06-16 + - Files changed: `flake.nix`, `packaging/flatpak/sce-flatpak.sh`, `context/overview.md`, `context/architecture.md`, `context/patterns.md`, `context/glossary.md`, `context/context-map.md`, `context/sce/cli-first-install-channels-contract.md`, `context/sce/cli-release-artifact-contract.md`, `context/sce/optional-install-channel-integration-test-entrypoint.md`, `context/plans/nix-orchestrated-flatpak.md`. + - Evidence: `bash -n packaging/flatpak/sce-flatpak.sh` passed; `packaging/flatpak/sce-flatpak.sh validate --skip-optional-lint` passed static source-build checks, local-manifest generation checks, and `appstreamcli validate --pedantic --no-net`; `nix run .#flatpak-validate -- --skip-optional-lint` passed; `nix run .#flatpak-local-manifest` passed and emitted a generated checkout-source manifest; `nix run .#flatpak-build -- --help` passed; `nix build .#checks.x86_64-linux.flatpak-static-validation` passed; `nix run .#pkl-check-generated` passed; `nix flake check` evaluated the new Flatpak apps/check/dev-shell outputs and then failed in pre-existing `checks.x86_64-linux.cli-fmt` on committed `cli/src/generated_migrations.rs` formatting, matching the T02 known failure and not introduced by T03. Because the Flatpak packaging files from T02 are currently untracked in this worktree, Git-backed flake commands that directly reference them were run with temporary `git add packaging/flatpak` staging and immediate `git reset -- packaging/flatpak` cleanup. + - Context sync: completed as an important-change pass; root and distribution-domain context now describes the implemented Linux Flatpak flake apps/check/dev-shell tooling, `packaging/flatpak/sce-flatpak.sh` local-manifest generation, no-net lightweight validation, and opt-in full `flatpak-builder` build boundary. + +- [ ] T04: `Document local Flatpak build and install workflow` (status:todo) + - Task ID: T04 + - Goal: Add user-facing documentation for building, installing, running, validating, and uninstalling the Flatpak package from a local checkout, with the Nix-backed workflow as the preferred path. + - Boundaries (in/out of scope): In - README or dedicated docs updates that explain prerequisites, the Nix-backed Flatpak command/check, direct `flatpak-builder` fallback where practical, release-source vs local-checkout override behavior, install/run commands, host-git bridge implications, troubleshooting, uninstall/cleanup commands, and the current no-publish-pipeline boundary. Out - marketing copy, release automation docs, and changes to npm/Cargo/Nix install instructions except adding Flatpak to the supported channel list. + - Done when: A contributor can follow docs to build/install the Flatpak locally via Nix orchestration, understands how the manifest remains source-built, can run/uninstall/test the package, understands Git-dependent commands use the host-git bridge, and understands that this iteration is Flathub-ready manifest/docs/tooling only, not automated publication. + - Verification notes (commands or checks): Review documented commands for consistency with the manifest path, app ID, Nix entrypoint names, local build directory names, and host-git bridge behavior; if Flatpak tooling is available, smoke-test the documented local flow or record why it could not be run. + +- [ ] T05: `Validate Flatpak distribution and sync context` (status:todo) + - Task ID: T05 + - Goal: Run final validation for the Flatpak distribution slice, clean up temporary scaffolding, and ensure durable context matches code truth. + - Boundaries (in/out of scope): In - full repository validation, Nix-backed Flatpak validation evidence, direct Flatpak-specific validation evidence where practical, cleanup of temporary build files, final plan evidence, and final context sync for Flatpak distribution docs/contracts. Out - publishing to Flathub, creating GitHub Release Flatpak assets, changing existing release channel behavior, or starting a new distribution channel beyond the approved Flatpak slice. + - Done when: Required repository checks pass or failures are documented with actionable blockers; Nix-backed and Flatpak-specific build/lint/docs checks have evidence; no temporary Flatpak build artifacts are left in the repo; context files accurately describe Flatpak as an official source-built, Nix-orchestrated local build/docs channel with release-source plus local override behavior and host-git bridge semantics. + - Verification notes (commands or checks): `nix run .#pkl-check-generated`; `nix flake check`; Nix-backed Flatpak command/check introduced by T03; direct Flatpak-specific command(s) introduced or documented by T02-T04, such as AppStream validation and `flatpak-builder --force-clean --user --install-deps-from=flathub ` when local tooling is available; static search for stale context/docs wording that still says Flatpak is out of scope or implies prebuilt-binary consumption. + +## Open questions + +- None. Clarified decisions: Flatpak is an official supported distribution channel for this slice; first iteration is Flathub-ready manifest plus Nix-backed local build/check tooling and docs only; Nix may orchestrate the Flatpak build and generate local-source overrides; the Flatpak manifest must build `sce` from source and must not consume Nix-built, GitHub Release, or npm-native `sce` binaries; Flatpak app ID is `dev.crocoder.sce`; runtime Git access uses a host `git` bridge through `flatpak-spawn --host git`. diff --git a/context/sce/cli-first-install-channels-contract.md b/context/sce/cli-first-install-channels-contract.md index 88f35b6b..98b8a450 100644 --- a/context/sce/cli-first-install-channels-contract.md +++ b/context/sce/cli-first-install-channels-contract.md @@ -1,40 +1,72 @@ -# SCE CLI First-Wave Install Contract +# SCE CLI Install Channel Contract -This file captures the approved first-wave install/distribution contract for the `sce` CLI from `context/plans/sce-cli-first-install-channels.md` task `T01`. +This file captures the current install/distribution contract for the `sce` CLI. It began with the first-wave `Nix`/`Cargo`/`npm` channel contract from `context/plans/sce-cli-first-install-channels.md` task `T01`; the current active model also approves Flatpak as an official source-built channel through `context/plans/nix-orchestrated-flatpak.md` task `T01`. ## Canonical naming - The canonical CLI/binary/package name for this rollout is `sce`. - Legacy `sce-editor` references are migration debt and should be removed or explicitly mapped when a touched surface still uses the old name. -- New first-wave assets, docs, packaging, and automation should default to `sce` naming. +- New install assets, docs, packaging, and automation should default to `sce` naming. -## Approved first-wave channels for the current implementation stage +## Supported channels for the current implementation stage - Repo-flake `Nix` - `Cargo` - `npm` +- Flatpak application ID `dev.crocoder.sce` `Homebrew` is deferred from the current implementation stage. -No other install channels are in scope for the first wave. +No other install channels are in scope for the current implementation stage. ## Channel ownership rules - `flake.nix` is the first-class Nix run/install surface for this rollout. -- Nix-managed build/release entrypoints are the required build source for first-wave release automation. -- Repo-root `.version` is the canonical checked-in release version authority for all first-wave channels. +- Nix-managed build/release entrypoints remain the required build source for existing binary release automation. +- Nix may also orchestrate Flatpak tooling, local source overrides, validation, and local builds, but the Flatpak package itself must build `sce` from source inside Flatpak. +- Repo-root `.version` is the canonical checked-in release version authority for the Nix, Cargo, npm, and release-artifact surfaces. - GitHub Releases are the canonical publication surface for release archives and manifest/checksum assets produced for the version declared in `.version`. - `npm` consumes release artifacts produced by Nix-managed build/release flows. - `Cargo` is a first-class supported install path and its publish metadata should stay aligned to `.version` without workflow-side version bumping. - npm registry publication should also consume the checked-in package version aligned to `.version` without workflow-side version bumping. +- Flatpak is source-built and must not consume `nix build .#sce`, GitHub Release archives, npm native binaries, or any other prebuilt `sce` artifact. +- The first Flatpak iteration is Flathub-ready packaging plus Nix-backed local build/check tooling and docs only; CI publishing, automatic Flathub submission, GitHub Release Flatpak assets, and release-version bumping are not part of the current scope. - `Homebrew` can return in a later plan stage, but it is not part of current code truth. +## Flatpak source-build contract + +- The Flatpak application ID is `dev.crocoder.sce`. +- The Flatpak manifest model is a Flathub-style release-source manifest plus a Nix-generated local checkout-source manifest/override for local builds from the current checkout. +- The Flatpak build must use the standard source-build pattern for Rust CLI applications, including the Freedesktop SDK Rust extension, offline Cargo dependency sources generated from `cli/Cargo.lock`, and build-time preparation of `cli/assets/generated/config/**` from checked-in `config/` inputs. +- Runtime Git access uses a host `git` bridge: install `/app/bin/git` as a wrapper that delegates to `flatpak-spawn --host git`, with the required Flatpak permission for `org.freedesktop.Flatpak`. +- Nix-provided Flatpak commands/checks are orchestration only: they may provide `flatpak-builder`, AppStream validation, Flatpak linting, wrapper scripts, and generated local manifests/overrides, but they must not bypass the Flatpak source build with a Nix-built `sce` binary. + +## Implemented Flatpak packaging surface + +- The canonical checked-in Flatpak manifest is `packaging/flatpak/dev.crocoder.sce.yml`. +- The manifest currently uses `org.freedesktop.Platform` / `org.freedesktop.Sdk` runtime `25.08`, appends the `org.freedesktop.Sdk.Extension.rust-stable` toolchain, and runs `cargo --offline build --locked --release --manifest-path cli/Cargo.toml --bin sce` inside Flatpak. +- The manifest prepares crate-local generated setup assets by running `scripts/prepare-cli-generated-assets.sh "$PWD"` before Cargo builds, preserving `config/` as the source of truth for generated assistant config inputs. +- Flatpak Cargo dependency sources are checked in at `packaging/flatpak/cargo-sources.json`, generated from `cli/Cargo.lock`; crates.io dependencies are represented as `.crate` archives with lockfile SHA-256 checksums, and the Turso git dependency is represented as a pinned git source plus local path patches. +- AppStream metadata lives at `packaging/flatpak/dev.crocoder.sce.metainfo.xml` and declares a console application with `sce`. +- The host Git bridge source lives at `packaging/flatpak/git-host-bridge`; the manifest installs it as `/app/bin/git`. +- The current runtime permissions are `--share=network`, `--filesystem=home`, `--talk-name=org.freedesktop.Flatpak`, and `--talk-name=org.freedesktop.secrets`. + +## Implemented Nix-backed Flatpak tooling surface + +- `packaging/flatpak/sce-flatpak.sh` owns local Flatpak orchestration for this repo: lightweight validation, generated local checkout-source manifests, and opt-in `flatpak-builder` execution. +- Linux flake apps expose that script as: + - `nix run .#flatpak-validate` for static source-build checks, local-manifest generation checks, and `appstreamcli validate --pedantic --no-net`. + - `nix run .#flatpak-local-manifest` for generating a temporary manifest that replaces the release git source with a Flatpak `type: dir` source pointed at the current checkout. + - `nix run .#flatpak-build -- --help` / `nix run .#flatpak-build -- ...` for explicit local `flatpak-builder` source builds from that generated local manifest. +- `checks..flatpak-static-validation` runs the lightweight validation path during default `nix flake check`; it does not run a full Flatpak build or require network access. +- The Linux dev shell includes `appstreamcli`, `flatpak`, and `flatpak-builder`, and its banner lists the Flatpak flake apps alongside existing repo app entrypoints. +- The checked-in release manifest remains Flathub-style and source-built; Nix orchestration only supplies tools and generated local manifests and must not provide a prebuilt `sce` binary to the Flatpak package. + ## Explicitly out of scope in this phase - AUR - `.deb` - `.rpm` -- Flatpak - AppImage - Other Linux package-manager specific channels not listed above @@ -43,5 +75,7 @@ No other install channels are in scope for the first wave. - Release assets must be named and published for `sce`. - GitHub release packaging must consume the checked-in `.version` value instead of inventing a semver bump during workflow execution. - Cargo and npm registry publication belong to separate downstream publish stages rather than the GitHub release-packaging job. +- Flatpak packaging tasks must preserve source-built semantics and the release-source-plus-local-override model instead of wrapping existing binary release artifacts. +- Flatpak publication automation remains explicitly deferred until a later approved plan. - Unsupported channels in older docs should be removed or explicitly deferred rather than implied as active support. - Later packaging tasks should implement the contract above rather than redefining channel scope per channel. diff --git a/context/sce/cli-release-artifact-contract.md b/context/sce/cli-release-artifact-contract.md index 19d86344..403a8ef8 100644 --- a/context/sce/cli-release-artifact-contract.md +++ b/context/sce/cli-release-artifact-contract.md @@ -67,4 +67,6 @@ This file captures the current shared release artifact foundation plus the appro - The implemented npm channel consumes this artifact naming and manifest/checksum shape rather than inventing a channel-specific archive format. - The implemented npm channel also depends on the published `sce-v-release-manifest.json.sig` asset so manifest-provided checksums are only trusted after signature verification. -- Any future additional install channel should reuse this artifact contract unless a later decision explicitly supersedes it. +- Additional binary-distribution install channels should reuse this artifact contract unless a later decision explicitly supersedes it. +- Flatpak is the current approved exception to binary-artifact reuse: the Flatpak package for application ID `dev.crocoder.sce` is source-built inside Flatpak, uses a release-source manifest plus a Nix-generated local checkout-source manifest/override for local builds, and must not consume Nix-built, GitHub Release, npm native, or other prebuilt `sce` artifacts. +- The current Flatpak iteration does not publish GitHub Release Flatpak assets or add CI/Flathub publication automation. diff --git a/context/sce/optional-install-channel-integration-test-entrypoint.md b/context/sce/optional-install-channel-integration-test-entrypoint.md index a2e853d4..ccb54e9e 100644 --- a/context/sce/optional-install-channel-integration-test-entrypoint.md +++ b/context/sce/optional-install-channel-integration-test-entrypoint.md @@ -18,12 +18,12 @@ The repository exposes an explicit opt-in flake app for install-channel integrat - The Rust runner now owns the shared harness behavior: channel-scoped temporary roots, isolated `HOME`/`XDG_*`/npm/Bun/Cargo state, executable resolution inside the isolated PATH, and centralized deterministic command assertions for the installed `sce` binary. - The npm channel now stages a local `@crocoder-dev/sce@.version` package fixture with the packaged `sce` binary preloaded into `runtime/`, installs that tarball into isolated npm state with download skipping enabled, and then reuses the shared Rust execution path to run both `sce version` and `sce doctor --format json` against the installed npm launcher path; the current `doctor` check only requires successful completion, not output inspection. - The Bun channel now reuses the same staged local npm-package fixture shape as npm, performs a real isolated `bun add --global ` install with download skipping enabled, and then reuses the shared Rust execution path to run deterministic `sce version` against the installed Bun launcher path. -- The Cargo channel now performs a real isolated `cargo install --path cli --locked` install from the repository root, reuses the shared Rust execution path to run deterministic `sce version` against the installed Cargo binary, and completes the first-wave install-channel coverage for all three supported channels. +- The Cargo channel now performs a real isolated `cargo install --path cli --locked` install from the repository root, reuses the shared Rust execution path to run deterministic `sce version` against the installed Cargo binary, and completes the existing binary install-channel coverage for npm, Bun, and Cargo. ## Current execution posture - The Rust runner already has dedicated default-flake checks: `integrations-install-fmt`, `integrations-install-clippy`, and `integrations-install-tests`. - The opt-in app remains outside default `nix flake check`. -- Real npm, Bun, and Cargo install orchestration now run through the Rust runner behind the unchanged selector contract; all three first-wave channels are implemented. +- Real npm, Bun, and Cargo install orchestration now run through the Rust runner behind the unchanged selector contract for the existing binary install channels. Flatpak validation/build orchestration is implemented as a separate Nix-owned source-build path (`flatpak-validate`, `flatpak-local-manifest`, `flatpak-build`, and `flatpak-static-validation`) rather than part of this app's current selector contract. See also: [../overview.md](../overview.md), [../architecture.md](../architecture.md), [../patterns.md](../patterns.md) diff --git a/flake.nix b/flake.nix index 5a0d791c..650da744 100644 --- a/flake.nix +++ b/flake.nix @@ -140,6 +140,17 @@ ]; }; + flatpakPackagingSrc = pkgs.lib.fileset.toSource { + root = workspaceRoot; + fileset = pkgs.lib.fileset.unions [ + ./packaging/flatpak/dev.crocoder.sce.yml + ./packaging/flatpak/dev.crocoder.sce.metainfo.xml + ./packaging/flatpak/git-host-bridge + ./packaging/flatpak/cargo-sources.json + ./packaging/flatpak/sce-flatpak.sh + ]; + }; + # Fixed-output derivation to fetch Bun dependencies # The output hash must be updated when package.json or bun.lock changes configLibBashPolicyDeps = pkgs.stdenv.mkDerivation { @@ -777,6 +788,66 @@ ''; }; + flatpakToolRuntimeInputs = + [ + pkgs.coreutils + pkgs.git + pkgs.python3 + ] + ++ pkgs.lib.optionals pkgs.stdenv.isLinux [ + pkgs.appstream + pkgs.flatpak + pkgs.flatpak-builder + ]; + + flatpakToolApp = pkgs.writeShellApplication { + name = "sce-flatpak"; + runtimeInputs = flatpakToolRuntimeInputs; + text = '' + exec ${pkgs.bash}/bin/bash ${./packaging/flatpak/sce-flatpak.sh} "$@" + ''; + }; + + flatpakValidateApp = pkgs.writeShellApplication { + name = "flatpak-validate"; + runtimeInputs = [ flatpakToolApp ]; + text = '' + exec sce-flatpak validate "$@" + ''; + }; + + flatpakLocalManifestApp = pkgs.writeShellApplication { + name = "flatpak-local-manifest"; + runtimeInputs = [ flatpakToolApp ]; + text = '' + exec sce-flatpak prepare-local-manifest "$@" + ''; + }; + + flatpakBuildApp = pkgs.writeShellApplication { + name = "flatpak-build"; + runtimeInputs = [ flatpakToolApp ]; + text = '' + exec sce-flatpak build "$@" + ''; + }; + + flatpakStaticValidationCheck = pkgs.runCommand "flatpak-static-validation" + { + nativeBuildInputs = [ flatpakToolApp ]; + } + '' + set -euo pipefail + + cp -r "${flatpakPackagingSrc}" ./repo + chmod -R u+w ./repo + cd ./repo + + sce-flatpak validate --repo-root "$PWD" --skip-optional-lint + + mkdir -p "$out" + ''; + pklParityCheck = pkgs.runCommand "pkl-parity-check" { @@ -968,120 +1039,150 @@ default = scePackage; }; - checks = { - cli-tests = craneLib.cargoTest ( - commonCargoArgs - // { - pname = "sce-cli-tests"; - inherit cargoArtifacts; - doCheck = true; - nativeCheckInputs = [ pkgs.git ]; - } - ); - - cli-clippy = craneLib.cargoClippy ( - commonCargoArgs - // { - pname = "sce-cli-clippy"; - inherit cargoArtifacts; - cargoClippyExtraArgs = "--all-targets --all-features"; - } - ); + checks = + { + cli-tests = craneLib.cargoTest ( + commonCargoArgs + // { + pname = "sce-cli-tests"; + inherit cargoArtifacts; + doCheck = true; + nativeCheckInputs = [ pkgs.git ]; + } + ); + + cli-clippy = craneLib.cargoClippy ( + commonCargoArgs + // { + pname = "sce-cli-clippy"; + inherit cargoArtifacts; + cargoClippyExtraArgs = "--all-targets --all-features"; + } + ); - cli-fmt = craneLib.cargoFmt ( - commonCargoArgs - // { - pname = "sce-cli-fmt"; - } - ); + cli-fmt = craneLib.cargoFmt ( + commonCargoArgs + // { + pname = "sce-cli-fmt"; + } + ); - integrations-install-tests = craneLib.cargoTest ( - integrationsInstallCargoArgs - // { - pname = "sce-integrations-install-tests"; - cargoArtifacts = integrationsInstallCargoArtifacts; - } - ); - - integrations-install-clippy = craneLib.cargoClippy ( - integrationsInstallCargoArgs - // { - pname = "sce-integrations-install-clippy"; - cargoArtifacts = integrationsInstallCargoArtifacts; - cargoClippyExtraArgs = "--all-targets --all-features"; - } - ); + integrations-install-tests = craneLib.cargoTest ( + integrationsInstallCargoArgs + // { + pname = "sce-integrations-install-tests"; + cargoArtifacts = integrationsInstallCargoArtifacts; + } + ); + + integrations-install-clippy = craneLib.cargoClippy ( + integrationsInstallCargoArgs + // { + pname = "sce-integrations-install-clippy"; + cargoArtifacts = integrationsInstallCargoArtifacts; + cargoClippyExtraArgs = "--all-targets --all-features"; + } + ); - integrations-install-fmt = craneLib.cargoFmt ( - integrationsInstallCargoArgs - // { - pname = "sce-integrations-install-fmt"; - } - ); + integrations-install-fmt = craneLib.cargoFmt ( + integrationsInstallCargoArgs + // { + pname = "sce-integrations-install-fmt"; + } + ); - pkl-parity = pklParityCheck; + pkl-parity = pklParityCheck; - npm-bun-tests = npmTests; - npm-biome-check = npmBiomeCheck; - npm-biome-format = npmBiomeFormat; + npm-bun-tests = npmTests; + npm-biome-check = npmBiomeCheck; + npm-biome-format = npmBiomeFormat; - config-lib-bun-tests = configLibBunTests; - config-lib-biome-check = configLibBiomeCheck; - config-lib-biome-format = configLibBiomeFormat; - }; + config-lib-bun-tests = configLibBunTests; + config-lib-biome-check = configLibBiomeCheck; + config-lib-biome-format = configLibBiomeFormat; + } + // pkgs.lib.optionalAttrs pkgs.stdenv.isLinux { + flatpak-static-validation = flatpakStaticValidationCheck; + }; + + apps = + { + sce = sceApp; + default = sceApp; + + pkl-check-generated = { + type = "app"; + program = "${pklCheckGeneratedApp}/bin/pkl-check-generated"; + meta = { + description = "Run generated-output drift check in dev shell"; + }; + }; - apps = { - sce = sceApp; - default = sceApp; + pkl-generate = { + type = "app"; + program = "${pklGenerateApp}/bin/pkl-generate"; + meta = { + description = "Generate config outputs from Pkl sources"; + }; + }; - pkl-check-generated = { - type = "app"; - program = "${pklCheckGeneratedApp}/bin/pkl-check-generated"; - meta = { - description = "Run generated-output drift check in dev shell"; + release-artifacts = { + type = "app"; + program = "${releaseArtifactsApp}/bin/release-artifacts"; + meta = { + description = "Build current-platform sce release artifacts"; + }; }; - }; - pkl-generate = { - type = "app"; - program = "${pklGenerateApp}/bin/pkl-generate"; - meta = { - description = "Generate config outputs from Pkl sources"; + release-manifest = { + type = "app"; + program = "${releaseManifestApp}/bin/release-manifest"; + meta = { + description = "Assemble sce release manifest"; + }; }; - }; - release-artifacts = { - type = "app"; - program = "${releaseArtifactsApp}/bin/release-artifacts"; - meta = { - description = "Build current-platform sce release artifacts"; + release-npm-package = { + type = "app"; + program = "${releaseNpmPackageApp}/bin/release-npm-package"; + meta = { + description = "Build sce npm package tarball"; + }; }; - }; - release-manifest = { - type = "app"; - program = "${releaseManifestApp}/bin/release-manifest"; - meta = { - description = "Assemble sce release manifest"; + install-channel-integration-tests = { + type = "app"; + program = "${installChannelIntegrationTestsApp}/bin/install-channel-integration-tests"; + meta = { + description = "Run opt-in install-channel integration entrypoint"; + }; + }; + } + // pkgs.lib.optionalAttrs pkgs.stdenv.isLinux { + flatpak-validate = { + type = "app"; + program = "${flatpakValidateApp}/bin/flatpak-validate"; + meta = { + description = "Validate Flatpak packaging metadata and local-source manifest generation"; + }; }; - }; - release-npm-package = { - type = "app"; - program = "${releaseNpmPackageApp}/bin/release-npm-package"; - meta = { - description = "Build sce npm package tarball"; + flatpak-local-manifest = { + type = "app"; + program = "${flatpakLocalManifestApp}/bin/flatpak-local-manifest"; + meta = { + description = "Generate a Flatpak manifest that builds from the current checkout"; + }; }; - }; - install-channel-integration-tests = { - type = "app"; - program = "${installChannelIntegrationTestsApp}/bin/install-channel-integration-tests"; - meta = { - description = "Run opt-in install-channel integration entrypoint"; + flatpak-build = { + type = "app"; + program = "${flatpakBuildApp}/bin/flatpak-build"; + meta = { + description = "Build the sce Flatpak from the current checkout with flatpak-builder"; + }; }; }; - }; devShells.default = pkgs.mkShell { packages = @@ -1100,6 +1201,11 @@ scePackage tursoPackage ] + ++ pkgs.lib.optionals pkgs.stdenv.isLinux [ + appstream + flatpak + flatpak-builder + ] ++ [ rustToolchain ]; shellHook = '' @@ -1122,6 +1228,14 @@ echo "- release-artifacts: nix run .#release-artifacts -- --help" echo "- release-manifest: nix run .#release-manifest -- --help" echo "- release-npm-package: nix run .#release-npm-package -- --help" + ${pkgs.lib.optionalString pkgs.stdenv.isLinux '' + echo "- flatpak: $(version_of flatpak)" + echo "- flatpak-builder: $(version_of flatpak-builder)" + echo "- appstreamcli: $(version_of appstreamcli)" + echo "- flatpak-validate: nix run .#flatpak-validate" + echo "- flatpak-local-manifest: nix run .#flatpak-local-manifest" + echo "- flatpak-build: nix run .#flatpak-build -- --help" + ''} ''; }; } diff --git a/packaging/flatpak/cargo-sources.json b/packaging/flatpak/cargo-sources.json new file mode 100644 index 00000000..f5b2fc60 --- /dev/null +++ b/packaging/flatpak/cargo-sources.json @@ -0,0 +1,6787 @@ +[ + { + "type": "git", + "url": "https://github.com/tursodatabase/turso", + "commit": "fed0b50b8aa697f56ab015aa9e905e0f56371092", + "dest": "flatpak-cargo/git/turso-fed0b50" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/aead/aead-0.5.2.crate", + "sha256": "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0", + "dest": "cargo/vendor/aead-0.5.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0\", \"files\": {}}", + "dest": "cargo/vendor/aead-0.5.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/aegis/aegis-0.9.8.crate", + "sha256": "78412fa53e6da95324e8902c3641b3ff32ab45258582ea997eb9169c68ffa219", + "dest": "cargo/vendor/aegis-0.9.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"78412fa53e6da95324e8902c3641b3ff32ab45258582ea997eb9169c68ffa219\", \"files\": {}}", + "dest": "cargo/vendor/aegis-0.9.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/aes/aes-0.8.4.crate", + "sha256": "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0", + "dest": "cargo/vendor/aes-0.8.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0\", \"files\": {}}", + "dest": "cargo/vendor/aes-0.8.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/aes-gcm/aes-gcm-0.10.3.crate", + "sha256": "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1", + "dest": "cargo/vendor/aes-gcm-0.10.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1\", \"files\": {}}", + "dest": "cargo/vendor/aes-gcm-0.10.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ahash/ahash-0.8.12.crate", + "sha256": "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75", + "dest": "cargo/vendor/ahash-0.8.12" + }, + { + "type": "inline", + "contents": "{\"package\": \"5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75\", \"files\": {}}", + "dest": "cargo/vendor/ahash-0.8.12", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/aho-corasick/aho-corasick-1.1.4.crate", + "sha256": "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301", + "dest": "cargo/vendor/aho-corasick-1.1.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301\", \"files\": {}}", + "dest": "cargo/vendor/aho-corasick-1.1.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/allocator-api2/allocator-api2-0.2.21.crate", + "sha256": "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923", + "dest": "cargo/vendor/allocator-api2-0.2.21" + }, + { + "type": "inline", + "contents": "{\"package\": \"683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923\", \"files\": {}}", + "dest": "cargo/vendor/allocator-api2-0.2.21", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/allocator-api2/allocator-api2-0.4.0.crate", + "sha256": "c880a97d28a3681c0267bd29cff89621202715b065127cd445fa0f0fe0aa2880", + "dest": "cargo/vendor/allocator-api2-0.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"c880a97d28a3681c0267bd29cff89621202715b065127cd445fa0f0fe0aa2880\", \"files\": {}}", + "dest": "cargo/vendor/allocator-api2-0.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/android_system_properties/android_system_properties-0.1.5.crate", + "sha256": "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311", + "dest": "cargo/vendor/android_system_properties-0.1.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311\", \"files\": {}}", + "dest": "cargo/vendor/android_system_properties-0.1.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anstream/anstream-1.0.0.crate", + "sha256": "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d", + "dest": "cargo/vendor/anstream-1.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d\", \"files\": {}}", + "dest": "cargo/vendor/anstream-1.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anstyle/anstyle-1.0.14.crate", + "sha256": "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000", + "dest": "cargo/vendor/anstyle-1.0.14" + }, + { + "type": "inline", + "contents": "{\"package\": \"940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000\", \"files\": {}}", + "dest": "cargo/vendor/anstyle-1.0.14", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anstyle-parse/anstyle-parse-1.0.0.crate", + "sha256": "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e", + "dest": "cargo/vendor/anstyle-parse-1.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e\", \"files\": {}}", + "dest": "cargo/vendor/anstyle-parse-1.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anstyle-query/anstyle-query-1.1.5.crate", + "sha256": "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc", + "dest": "cargo/vendor/anstyle-query-1.1.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc\", \"files\": {}}", + "dest": "cargo/vendor/anstyle-query-1.1.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anstyle-wincon/anstyle-wincon-3.0.11.crate", + "sha256": "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d", + "dest": "cargo/vendor/anstyle-wincon-3.0.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d\", \"files\": {}}", + "dest": "cargo/vendor/anstyle-wincon-3.0.11", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/antithesis_sdk/antithesis_sdk-0.2.8.crate", + "sha256": "18dbd97a5b6c21cc9176891cf715f7f0c273caf3959897f43b9bd1231939e675", + "dest": "cargo/vendor/antithesis_sdk-0.2.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"18dbd97a5b6c21cc9176891cf715f7f0c273caf3959897f43b9bd1231939e675\", \"files\": {}}", + "dest": "cargo/vendor/antithesis_sdk-0.2.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/anyhow/anyhow-1.0.102.crate", + "sha256": "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c", + "dest": "cargo/vendor/anyhow-1.0.102" + }, + { + "type": "inline", + "contents": "{\"package\": \"7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c\", \"files\": {}}", + "dest": "cargo/vendor/anyhow-1.0.102", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/apple-native-keyring-store/apple-native-keyring-store-1.0.0.crate", + "sha256": "a7be2f067ccd8d4b4d4a66ddafe0f32a5dff31732f32dbff85fefc40929b1f72", + "dest": "cargo/vendor/apple-native-keyring-store-1.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"a7be2f067ccd8d4b4d4a66ddafe0f32a5dff31732f32dbff85fefc40929b1f72\", \"files\": {}}", + "dest": "cargo/vendor/apple-native-keyring-store-1.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/arc-swap/arc-swap-1.9.1.crate", + "sha256": "6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207", + "dest": "cargo/vendor/arc-swap-1.9.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207\", \"files\": {}}", + "dest": "cargo/vendor/arc-swap-1.9.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/assoc/assoc-0.1.3.crate", + "sha256": "bfdc70193dadb9d7287fa4b633f15f90c876915b31f6af17da307fc59c9859a8", + "dest": "cargo/vendor/assoc-0.1.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"bfdc70193dadb9d7287fa4b633f15f90c876915b31f6af17da307fc59c9859a8\", \"files\": {}}", + "dest": "cargo/vendor/assoc-0.1.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/async-broadcast/async-broadcast-0.7.2.crate", + "sha256": "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532", + "dest": "cargo/vendor/async-broadcast-0.7.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532\", \"files\": {}}", + "dest": "cargo/vendor/async-broadcast-0.7.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/async-channel/async-channel-2.5.0.crate", + "sha256": "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2", + "dest": "cargo/vendor/async-channel-2.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2\", \"files\": {}}", + "dest": "cargo/vendor/async-channel-2.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/async-executor/async-executor-1.14.0.crate", + "sha256": "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a", + "dest": "cargo/vendor/async-executor-1.14.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a\", \"files\": {}}", + "dest": "cargo/vendor/async-executor-1.14.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/async-io/async-io-2.6.0.crate", + "sha256": "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc", + "dest": "cargo/vendor/async-io-2.6.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc\", \"files\": {}}", + "dest": "cargo/vendor/async-io-2.6.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/async-lock/async-lock-3.4.2.crate", + "sha256": "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311", + "dest": "cargo/vendor/async-lock-3.4.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311\", \"files\": {}}", + "dest": "cargo/vendor/async-lock-3.4.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/async-process/async-process-2.5.0.crate", + "sha256": "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75", + "dest": "cargo/vendor/async-process-2.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75\", \"files\": {}}", + "dest": "cargo/vendor/async-process-2.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/async-recursion/async-recursion-1.1.1.crate", + "sha256": "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11", + "dest": "cargo/vendor/async-recursion-1.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11\", \"files\": {}}", + "dest": "cargo/vendor/async-recursion-1.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/async-signal/async-signal-0.2.14.crate", + "sha256": "52b5aaafa020cf5053a01f2a60e8ff5dccf550f0f77ec54a4e47285ac2bab485", + "dest": "cargo/vendor/async-signal-0.2.14" + }, + { + "type": "inline", + "contents": "{\"package\": \"52b5aaafa020cf5053a01f2a60e8ff5dccf550f0f77ec54a4e47285ac2bab485\", \"files\": {}}", + "dest": "cargo/vendor/async-signal-0.2.14", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/async-task/async-task-4.7.1.crate", + "sha256": "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de", + "dest": "cargo/vendor/async-task-4.7.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de\", \"files\": {}}", + "dest": "cargo/vendor/async-task-4.7.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/async-trait/async-trait-0.1.89.crate", + "sha256": "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb", + "dest": "cargo/vendor/async-trait-0.1.89" + }, + { + "type": "inline", + "contents": "{\"package\": \"9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb\", \"files\": {}}", + "dest": "cargo/vendor/async-trait-0.1.89", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/atomic-waker/atomic-waker-1.1.2.crate", + "sha256": "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0", + "dest": "cargo/vendor/atomic-waker-1.1.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0\", \"files\": {}}", + "dest": "cargo/vendor/atomic-waker-1.1.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/autocfg/autocfg-1.5.0.crate", + "sha256": "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8", + "dest": "cargo/vendor/autocfg-1.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8\", \"files\": {}}", + "dest": "cargo/vendor/autocfg-1.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/aws-lc-rs/aws-lc-rs-1.17.0.crate", + "sha256": "5ec2f1fc3ec205783a5da9a7e6c1509cc69dedf09a1949e412c1e18469326d00", + "dest": "cargo/vendor/aws-lc-rs-1.17.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"5ec2f1fc3ec205783a5da9a7e6c1509cc69dedf09a1949e412c1e18469326d00\", \"files\": {}}", + "dest": "cargo/vendor/aws-lc-rs-1.17.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/aws-lc-sys/aws-lc-sys-0.41.0.crate", + "sha256": "1a2f9779ce85b93ab6170dd940ad0169b5766ff848247aff13bb788b832fe3f4", + "dest": "cargo/vendor/aws-lc-sys-0.41.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"1a2f9779ce85b93ab6170dd940ad0169b5766ff848247aff13bb788b832fe3f4\", \"files\": {}}", + "dest": "cargo/vendor/aws-lc-sys-0.41.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/base64/base64-0.22.1.crate", + "sha256": "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6", + "dest": "cargo/vendor/base64-0.22.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6\", \"files\": {}}", + "dest": "cargo/vendor/base64-0.22.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bigdecimal/bigdecimal-0.4.10.crate", + "sha256": "4d6867f1565b3aad85681f1015055b087fcfd840d6aeee6eee7f2da317603695", + "dest": "cargo/vendor/bigdecimal-0.4.10" + }, + { + "type": "inline", + "contents": "{\"package\": \"4d6867f1565b3aad85681f1015055b087fcfd840d6aeee6eee7f2da317603695\", \"files\": {}}", + "dest": "cargo/vendor/bigdecimal-0.4.10", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bindgen/bindgen-0.69.5.crate", + "sha256": "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088", + "dest": "cargo/vendor/bindgen-0.69.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088\", \"files\": {}}", + "dest": "cargo/vendor/bindgen-0.69.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bit-set/bit-set-0.8.0.crate", + "sha256": "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3", + "dest": "cargo/vendor/bit-set-0.8.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3\", \"files\": {}}", + "dest": "cargo/vendor/bit-set-0.8.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bit-vec/bit-vec-0.8.0.crate", + "sha256": "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7", + "dest": "cargo/vendor/bit-vec-0.8.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7\", \"files\": {}}", + "dest": "cargo/vendor/bit-vec-0.8.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bitflags/bitflags-2.11.1.crate", + "sha256": "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3", + "dest": "cargo/vendor/bitflags-2.11.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3\", \"files\": {}}", + "dest": "cargo/vendor/bitflags-2.11.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bitpacking/bitpacking-0.9.3.crate", + "sha256": "96a7139abd3d9cebf8cd6f920a389cf3dc9576172e32f4563f188cae3c3eb019", + "dest": "cargo/vendor/bitpacking-0.9.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"96a7139abd3d9cebf8cd6f920a389cf3dc9576172e32f4563f188cae3c3eb019\", \"files\": {}}", + "dest": "cargo/vendor/bitpacking-0.9.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bitvec/bitvec-1.0.1.crate", + "sha256": "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c", + "dest": "cargo/vendor/bitvec-1.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c\", \"files\": {}}", + "dest": "cargo/vendor/bitvec-1.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/block-buffer/block-buffer-0.10.4.crate", + "sha256": "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71", + "dest": "cargo/vendor/block-buffer-0.10.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71\", \"files\": {}}", + "dest": "cargo/vendor/block-buffer-0.10.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/block-buffer/block-buffer-0.12.0.crate", + "sha256": "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be", + "dest": "cargo/vendor/block-buffer-0.12.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be\", \"files\": {}}", + "dest": "cargo/vendor/block-buffer-0.12.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/block-padding/block-padding-0.3.3.crate", + "sha256": "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93", + "dest": "cargo/vendor/block-padding-0.3.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93\", \"files\": {}}", + "dest": "cargo/vendor/block-padding-0.3.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/blocking/blocking-1.6.2.crate", + "sha256": "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21", + "dest": "cargo/vendor/blocking-1.6.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21\", \"files\": {}}", + "dest": "cargo/vendor/blocking-1.6.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bon/bon-3.9.1.crate", + "sha256": "f47dbe92550676ee653353c310dfb9cf6ba17ee70396e1f7cf0a2020ad49b2fe", + "dest": "cargo/vendor/bon-3.9.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"f47dbe92550676ee653353c310dfb9cf6ba17ee70396e1f7cf0a2020ad49b2fe\", \"files\": {}}", + "dest": "cargo/vendor/bon-3.9.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bon-macros/bon-macros-3.9.1.crate", + "sha256": "519bd3116aeeb42d5372c29d982d16d0170d3d4a5ed85fc7dd91642ffff3c67c", + "dest": "cargo/vendor/bon-macros-3.9.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"519bd3116aeeb42d5372c29d982d16d0170d3d4a5ed85fc7dd91642ffff3c67c\", \"files\": {}}", + "dest": "cargo/vendor/bon-macros-3.9.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/borrow-or-share/borrow-or-share-0.2.4.crate", + "sha256": "dc0b364ead1874514c8c2855ab558056ebfeb775653e7ae45ff72f28f8f3166c", + "dest": "cargo/vendor/borrow-or-share-0.2.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"dc0b364ead1874514c8c2855ab558056ebfeb775653e7ae45ff72f28f8f3166c\", \"files\": {}}", + "dest": "cargo/vendor/borrow-or-share-0.2.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/branches/branches-0.4.4.crate", + "sha256": "e426eb5cc1900033930ec955317b302e68f19f326cc7bb0c8a86865a826cdf0c", + "dest": "cargo/vendor/branches-0.4.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"e426eb5cc1900033930ec955317b302e68f19f326cc7bb0c8a86865a826cdf0c\", \"files\": {}}", + "dest": "cargo/vendor/branches-0.4.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bumpalo/bumpalo-3.20.2.crate", + "sha256": "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb", + "dest": "cargo/vendor/bumpalo-3.20.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb\", \"files\": {}}", + "dest": "cargo/vendor/bumpalo-3.20.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bytecount/bytecount-0.6.9.crate", + "sha256": "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e", + "dest": "cargo/vendor/bytecount-0.6.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e\", \"files\": {}}", + "dest": "cargo/vendor/bytecount-0.6.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bytemuck/bytemuck-1.25.0.crate", + "sha256": "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec", + "dest": "cargo/vendor/bytemuck-1.25.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec\", \"files\": {}}", + "dest": "cargo/vendor/bytemuck-1.25.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bytemuck_derive/bytemuck_derive-1.10.2.crate", + "sha256": "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff", + "dest": "cargo/vendor/bytemuck_derive-1.10.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff\", \"files\": {}}", + "dest": "cargo/vendor/bytemuck_derive-1.10.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/byteorder/byteorder-1.5.0.crate", + "sha256": "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b", + "dest": "cargo/vendor/byteorder-1.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b\", \"files\": {}}", + "dest": "cargo/vendor/byteorder-1.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bytes/bytes-1.11.1.crate", + "sha256": "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33", + "dest": "cargo/vendor/bytes-1.11.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33\", \"files\": {}}", + "dest": "cargo/vendor/bytes-1.11.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cbc/cbc-0.1.2.crate", + "sha256": "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6", + "dest": "cargo/vendor/cbc-0.1.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6\", \"files\": {}}", + "dest": "cargo/vendor/cbc-0.1.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cc/cc-1.2.62.crate", + "sha256": "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98", + "dest": "cargo/vendor/cc-1.2.62" + }, + { + "type": "inline", + "contents": "{\"package\": \"a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98\", \"files\": {}}", + "dest": "cargo/vendor/cc-1.2.62", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/census/census-0.4.2.crate", + "sha256": "4f4c707c6a209cbe82d10abd08e1ea8995e9ea937d2550646e02798948992be0", + "dest": "cargo/vendor/census-0.4.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"4f4c707c6a209cbe82d10abd08e1ea8995e9ea937d2550646e02798948992be0\", \"files\": {}}", + "dest": "cargo/vendor/census-0.4.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cexpr/cexpr-0.6.0.crate", + "sha256": "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766", + "dest": "cargo/vendor/cexpr-0.6.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766\", \"files\": {}}", + "dest": "cargo/vendor/cexpr-0.6.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cfg-if/cfg-if-1.0.4.crate", + "sha256": "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801", + "dest": "cargo/vendor/cfg-if-1.0.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801\", \"files\": {}}", + "dest": "cargo/vendor/cfg-if-1.0.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cfg_aliases/cfg_aliases-0.2.1.crate", + "sha256": "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724", + "dest": "cargo/vendor/cfg_aliases-0.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724\", \"files\": {}}", + "dest": "cargo/vendor/cfg_aliases-0.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cfg_block/cfg_block-0.1.1.crate", + "sha256": "18758054972164c3264f7c8386f5fc6da6114cb46b619fd365d4e3b2dc3ae487", + "dest": "cargo/vendor/cfg_block-0.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"18758054972164c3264f7c8386f5fc6da6114cb46b619fd365d4e3b2dc3ae487\", \"files\": {}}", + "dest": "cargo/vendor/cfg_block-0.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/chrono/chrono-0.4.44.crate", + "sha256": "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0", + "dest": "cargo/vendor/chrono-0.4.44" + }, + { + "type": "inline", + "contents": "{\"package\": \"c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0\", \"files\": {}}", + "dest": "cargo/vendor/chrono-0.4.44", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cipher/cipher-0.4.4.crate", + "sha256": "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad", + "dest": "cargo/vendor/cipher-0.4.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad\", \"files\": {}}", + "dest": "cargo/vendor/cipher-0.4.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clang-sys/clang-sys-1.8.1.crate", + "sha256": "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4", + "dest": "cargo/vendor/clang-sys-1.8.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4\", \"files\": {}}", + "dest": "cargo/vendor/clang-sys-1.8.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap/clap-4.6.1.crate", + "sha256": "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51", + "dest": "cargo/vendor/clap-4.6.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51\", \"files\": {}}", + "dest": "cargo/vendor/clap-4.6.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap_builder/clap_builder-4.6.0.crate", + "sha256": "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f", + "dest": "cargo/vendor/clap_builder-4.6.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f\", \"files\": {}}", + "dest": "cargo/vendor/clap_builder-4.6.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap_complete/clap_complete-4.6.5.crate", + "sha256": "e0a7a9bfdb35811f9e59832f0f05975114d2251b415fb534108e6f34060fd772", + "dest": "cargo/vendor/clap_complete-4.6.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"e0a7a9bfdb35811f9e59832f0f05975114d2251b415fb534108e6f34060fd772\", \"files\": {}}", + "dest": "cargo/vendor/clap_complete-4.6.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap_derive/clap_derive-4.6.1.crate", + "sha256": "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9", + "dest": "cargo/vendor/clap_derive-4.6.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9\", \"files\": {}}", + "dest": "cargo/vendor/clap_derive-4.6.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/clap_lex/clap_lex-1.1.0.crate", + "sha256": "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9", + "dest": "cargo/vendor/clap_lex-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9\", \"files\": {}}", + "dest": "cargo/vendor/clap_lex-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cmake/cmake-0.1.58.crate", + "sha256": "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678", + "dest": "cargo/vendor/cmake-0.1.58" + }, + { + "type": "inline", + "contents": "{\"package\": \"c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678\", \"files\": {}}", + "dest": "cargo/vendor/cmake-0.1.58", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cmov/cmov-0.5.3.crate", + "sha256": "3f88a43d011fc4a6876cb7344703e297c71dda42494fee094d5f7c76bf13f746", + "dest": "cargo/vendor/cmov-0.5.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"3f88a43d011fc4a6876cb7344703e297c71dda42494fee094d5f7c76bf13f746\", \"files\": {}}", + "dest": "cargo/vendor/cmov-0.5.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/colorchoice/colorchoice-1.0.5.crate", + "sha256": "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570", + "dest": "cargo/vendor/colorchoice-1.0.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570\", \"files\": {}}", + "dest": "cargo/vendor/colorchoice-1.0.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/combine/combine-4.6.7.crate", + "sha256": "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd", + "dest": "cargo/vendor/combine-4.6.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd\", \"files\": {}}", + "dest": "cargo/vendor/combine-4.6.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/concurrent-queue/concurrent-queue-2.5.0.crate", + "sha256": "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973", + "dest": "cargo/vendor/concurrent-queue-2.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973\", \"files\": {}}", + "dest": "cargo/vendor/concurrent-queue-2.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/const-oid/const-oid-0.10.2.crate", + "sha256": "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c", + "dest": "cargo/vendor/const-oid-0.10.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c\", \"files\": {}}", + "dest": "cargo/vendor/const-oid-0.10.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/convert_case/convert_case-0.10.0.crate", + "sha256": "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9", + "dest": "cargo/vendor/convert_case-0.10.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9\", \"files\": {}}", + "dest": "cargo/vendor/convert_case-0.10.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/core-foundation/core-foundation-0.10.1.crate", + "sha256": "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6", + "dest": "cargo/vendor/core-foundation-0.10.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6\", \"files\": {}}", + "dest": "cargo/vendor/core-foundation-0.10.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/core-foundation-sys/core-foundation-sys-0.8.7.crate", + "sha256": "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b", + "dest": "cargo/vendor/core-foundation-sys-0.8.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b\", \"files\": {}}", + "dest": "cargo/vendor/core-foundation-sys-0.8.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cpufeatures/cpufeatures-0.2.17.crate", + "sha256": "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280", + "dest": "cargo/vendor/cpufeatures-0.2.17" + }, + { + "type": "inline", + "contents": "{\"package\": \"59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280\", \"files\": {}}", + "dest": "cargo/vendor/cpufeatures-0.2.17", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cpufeatures/cpufeatures-0.3.0.crate", + "sha256": "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201", + "dest": "cargo/vendor/cpufeatures-0.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201\", \"files\": {}}", + "dest": "cargo/vendor/cpufeatures-0.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crc32c/crc32c-0.6.8.crate", + "sha256": "3a47af21622d091a8f0fb295b88bc886ac74efcc613efc19f5d0b21de5c89e47", + "dest": "cargo/vendor/crc32c-0.6.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"3a47af21622d091a8f0fb295b88bc886ac74efcc613efc19f5d0b21de5c89e47\", \"files\": {}}", + "dest": "cargo/vendor/crc32c-0.6.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crc32fast/crc32fast-1.5.0.crate", + "sha256": "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511", + "dest": "cargo/vendor/crc32fast-1.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511\", \"files\": {}}", + "dest": "cargo/vendor/crc32fast-1.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crossbeam-channel/crossbeam-channel-0.5.15.crate", + "sha256": "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2", + "dest": "cargo/vendor/crossbeam-channel-0.5.15" + }, + { + "type": "inline", + "contents": "{\"package\": \"82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2\", \"files\": {}}", + "dest": "cargo/vendor/crossbeam-channel-0.5.15", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crossbeam-deque/crossbeam-deque-0.8.6.crate", + "sha256": "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51", + "dest": "cargo/vendor/crossbeam-deque-0.8.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51\", \"files\": {}}", + "dest": "cargo/vendor/crossbeam-deque-0.8.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crossbeam-epoch/crossbeam-epoch-0.9.18.crate", + "sha256": "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e", + "dest": "cargo/vendor/crossbeam-epoch-0.9.18" + }, + { + "type": "inline", + "contents": "{\"package\": \"5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e\", \"files\": {}}", + "dest": "cargo/vendor/crossbeam-epoch-0.9.18", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crossbeam-skiplist/crossbeam-skiplist-0.1.3.crate", + "sha256": "df29de440c58ca2cc6e587ec3d22347551a32435fbde9d2bff64e78a9ffa151b", + "dest": "cargo/vendor/crossbeam-skiplist-0.1.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"df29de440c58ca2cc6e587ec3d22347551a32435fbde9d2bff64e78a9ffa151b\", \"files\": {}}", + "dest": "cargo/vendor/crossbeam-skiplist-0.1.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crossbeam-utils/crossbeam-utils-0.8.21.crate", + "sha256": "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28", + "dest": "cargo/vendor/crossbeam-utils-0.8.21" + }, + { + "type": "inline", + "contents": "{\"package\": \"d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28\", \"files\": {}}", + "dest": "cargo/vendor/crossbeam-utils-0.8.21", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crossterm/crossterm-0.29.0.crate", + "sha256": "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b", + "dest": "cargo/vendor/crossterm-0.29.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b\", \"files\": {}}", + "dest": "cargo/vendor/crossterm-0.29.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crossterm_winapi/crossterm_winapi-0.9.1.crate", + "sha256": "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b", + "dest": "cargo/vendor/crossterm_winapi-0.9.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b\", \"files\": {}}", + "dest": "cargo/vendor/crossterm_winapi-0.9.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crunchy/crunchy-0.2.4.crate", + "sha256": "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5", + "dest": "cargo/vendor/crunchy-0.2.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5\", \"files\": {}}", + "dest": "cargo/vendor/crunchy-0.2.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crypto-common/crypto-common-0.1.7.crate", + "sha256": "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a", + "dest": "cargo/vendor/crypto-common-0.1.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a\", \"files\": {}}", + "dest": "cargo/vendor/crypto-common-0.1.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crypto-common/crypto-common-0.2.1.crate", + "sha256": "77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710", + "dest": "cargo/vendor/crypto-common-0.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710\", \"files\": {}}", + "dest": "cargo/vendor/crypto-common-0.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ctr/ctr-0.9.2.crate", + "sha256": "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835", + "dest": "cargo/vendor/ctr-0.9.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835\", \"files\": {}}", + "dest": "cargo/vendor/ctr-0.9.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ctutils/ctutils-0.4.2.crate", + "sha256": "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e", + "dest": "cargo/vendor/ctutils-0.4.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e\", \"files\": {}}", + "dest": "cargo/vendor/ctutils-0.4.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/darling/darling-0.23.0.crate", + "sha256": "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d", + "dest": "cargo/vendor/darling-0.23.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d\", \"files\": {}}", + "dest": "cargo/vendor/darling-0.23.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/darling_core/darling_core-0.23.0.crate", + "sha256": "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0", + "dest": "cargo/vendor/darling_core-0.23.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0\", \"files\": {}}", + "dest": "cargo/vendor/darling_core-0.23.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/darling_macro/darling_macro-0.23.0.crate", + "sha256": "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d", + "dest": "cargo/vendor/darling_macro-0.23.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d\", \"files\": {}}", + "dest": "cargo/vendor/darling_macro-0.23.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/data-encoding/data-encoding-2.11.0.crate", + "sha256": "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8", + "dest": "cargo/vendor/data-encoding-2.11.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8\", \"files\": {}}", + "dest": "cargo/vendor/data-encoding-2.11.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/datasketches/datasketches-0.2.0.crate", + "sha256": "c286de4e81ea2590afc24d754e0f83810c566f50a1388fa75ebd57928c0d9745", + "dest": "cargo/vendor/datasketches-0.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"c286de4e81ea2590afc24d754e0f83810c566f50a1388fa75ebd57928c0d9745\", \"files\": {}}", + "dest": "cargo/vendor/datasketches-0.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/deranged/deranged-0.5.8.crate", + "sha256": "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c", + "dest": "cargo/vendor/deranged-0.5.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c\", \"files\": {}}", + "dest": "cargo/vendor/deranged-0.5.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/derive_more/derive_more-2.1.1.crate", + "sha256": "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134", + "dest": "cargo/vendor/derive_more-2.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134\", \"files\": {}}", + "dest": "cargo/vendor/derive_more-2.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/derive_more-impl/derive_more-impl-2.1.1.crate", + "sha256": "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb", + "dest": "cargo/vendor/derive_more-impl-2.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb\", \"files\": {}}", + "dest": "cargo/vendor/derive_more-impl-2.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/digest/digest-0.10.7.crate", + "sha256": "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292", + "dest": "cargo/vendor/digest-0.10.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292\", \"files\": {}}", + "dest": "cargo/vendor/digest-0.10.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/digest/digest-0.11.3.crate", + "sha256": "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2", + "dest": "cargo/vendor/digest-0.11.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2\", \"files\": {}}", + "dest": "cargo/vendor/digest-0.11.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/dirs/dirs-6.0.0.crate", + "sha256": "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e", + "dest": "cargo/vendor/dirs-6.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e\", \"files\": {}}", + "dest": "cargo/vendor/dirs-6.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/dirs-sys/dirs-sys-0.5.0.crate", + "sha256": "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab", + "dest": "cargo/vendor/dirs-sys-0.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab\", \"files\": {}}", + "dest": "cargo/vendor/dirs-sys-0.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/displaydoc/displaydoc-0.2.5.crate", + "sha256": "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0", + "dest": "cargo/vendor/displaydoc-0.2.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0\", \"files\": {}}", + "dest": "cargo/vendor/displaydoc-0.2.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/document-features/document-features-0.2.12.crate", + "sha256": "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61", + "dest": "cargo/vendor/document-features-0.2.12" + }, + { + "type": "inline", + "contents": "{\"package\": \"d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61\", \"files\": {}}", + "dest": "cargo/vendor/document-features-0.2.12", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/downcast-rs/downcast-rs-2.0.2.crate", + "sha256": "117240f60069e65410b3ae1bb213295bd828f707b5bec6596a1afc8793ce0cbc", + "dest": "cargo/vendor/downcast-rs-2.0.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"117240f60069e65410b3ae1bb213295bd828f707b5bec6596a1afc8793ce0cbc\", \"files\": {}}", + "dest": "cargo/vendor/downcast-rs-2.0.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/dunce/dunce-1.0.5.crate", + "sha256": "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813", + "dest": "cargo/vendor/dunce-1.0.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813\", \"files\": {}}", + "dest": "cargo/vendor/dunce-1.0.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/dyn-clone/dyn-clone-1.0.20.crate", + "sha256": "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555", + "dest": "cargo/vendor/dyn-clone-1.0.20" + }, + { + "type": "inline", + "contents": "{\"package\": \"d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555\", \"files\": {}}", + "dest": "cargo/vendor/dyn-clone-1.0.20", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/either/either-1.15.0.crate", + "sha256": "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719", + "dest": "cargo/vendor/either-1.15.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719\", \"files\": {}}", + "dest": "cargo/vendor/either-1.15.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/email_address/email_address-0.2.9.crate", + "sha256": "e079f19b08ca6239f47f8ba8509c11cf3ea30095831f7fed61441475edd8c449", + "dest": "cargo/vendor/email_address-0.2.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"e079f19b08ca6239f47f8ba8509c11cf3ea30095831f7fed61441475edd8c449\", \"files\": {}}", + "dest": "cargo/vendor/email_address-0.2.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/endi/endi-1.1.1.crate", + "sha256": "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099", + "dest": "cargo/vendor/endi-1.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099\", \"files\": {}}", + "dest": "cargo/vendor/endi-1.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/enumflags2/enumflags2-0.7.12.crate", + "sha256": "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef", + "dest": "cargo/vendor/enumflags2-0.7.12" + }, + { + "type": "inline", + "contents": "{\"package\": \"1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef\", \"files\": {}}", + "dest": "cargo/vendor/enumflags2-0.7.12", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/enumflags2_derive/enumflags2_derive-0.7.12.crate", + "sha256": "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827", + "dest": "cargo/vendor/enumflags2_derive-0.7.12" + }, + { + "type": "inline", + "contents": "{\"package\": \"67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827\", \"files\": {}}", + "dest": "cargo/vendor/enumflags2_derive-0.7.12", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/env_filter/env_filter-1.0.1.crate", + "sha256": "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef", + "dest": "cargo/vendor/env_filter-1.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef\", \"files\": {}}", + "dest": "cargo/vendor/env_filter-1.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/env_logger/env_logger-0.11.10.crate", + "sha256": "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a", + "dest": "cargo/vendor/env_logger-0.11.10" + }, + { + "type": "inline", + "contents": "{\"package\": \"0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a\", \"files\": {}}", + "dest": "cargo/vendor/env_logger-0.11.10", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/equivalent/equivalent-1.0.2.crate", + "sha256": "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f", + "dest": "cargo/vendor/equivalent-1.0.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f\", \"files\": {}}", + "dest": "cargo/vendor/equivalent-1.0.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/erased-serde/erased-serde-0.4.10.crate", + "sha256": "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec", + "dest": "cargo/vendor/erased-serde-0.4.10" + }, + { + "type": "inline", + "contents": "{\"package\": \"d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec\", \"files\": {}}", + "dest": "cargo/vendor/erased-serde-0.4.10", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/errno/errno-0.3.14.crate", + "sha256": "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb", + "dest": "cargo/vendor/errno-0.3.14" + }, + { + "type": "inline", + "contents": "{\"package\": \"39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb\", \"files\": {}}", + "dest": "cargo/vendor/errno-0.3.14", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/event-listener/event-listener-5.4.1.crate", + "sha256": "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab", + "dest": "cargo/vendor/event-listener-5.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab\", \"files\": {}}", + "dest": "cargo/vendor/event-listener-5.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/event-listener-strategy/event-listener-strategy-0.5.4.crate", + "sha256": "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93", + "dest": "cargo/vendor/event-listener-strategy-0.5.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93\", \"files\": {}}", + "dest": "cargo/vendor/event-listener-strategy-0.5.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fallible-iterator/fallible-iterator-0.3.0.crate", + "sha256": "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649", + "dest": "cargo/vendor/fallible-iterator-0.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649\", \"files\": {}}", + "dest": "cargo/vendor/fallible-iterator-0.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fancy-regex/fancy-regex-0.18.0.crate", + "sha256": "e1e1dacd0d2082dfcf1351c4bdd566bbe89a2b263235a2b50058f1e130a47277", + "dest": "cargo/vendor/fancy-regex-0.18.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"e1e1dacd0d2082dfcf1351c4bdd566bbe89a2b263235a2b50058f1e130a47277\", \"files\": {}}", + "dest": "cargo/vendor/fancy-regex-0.18.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fastbloom/fastbloom-0.14.1.crate", + "sha256": "4e7f34442dbe69c60fe8eaf58a8cafff81a1f278816d8ab4db255b3bef4ac3c4", + "dest": "cargo/vendor/fastbloom-0.14.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"4e7f34442dbe69c60fe8eaf58a8cafff81a1f278816d8ab4db255b3bef4ac3c4\", \"files\": {}}", + "dest": "cargo/vendor/fastbloom-0.14.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fastdivide/fastdivide-0.4.2.crate", + "sha256": "9afc2bd4d5a73106dd53d10d73d3401c2f32730ba2c0b93ddb888a8983680471", + "dest": "cargo/vendor/fastdivide-0.4.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"9afc2bd4d5a73106dd53d10d73d3401c2f32730ba2c0b93ddb888a8983680471\", \"files\": {}}", + "dest": "cargo/vendor/fastdivide-0.4.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fastrand/fastrand-2.4.1.crate", + "sha256": "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6", + "dest": "cargo/vendor/fastrand-2.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6\", \"files\": {}}", + "dest": "cargo/vendor/fastrand-2.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/find-msvc-tools/find-msvc-tools-0.1.9.crate", + "sha256": "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582", + "dest": "cargo/vendor/find-msvc-tools-0.1.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582\", \"files\": {}}", + "dest": "cargo/vendor/find-msvc-tools-0.1.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fluent-uri/fluent-uri-0.4.1.crate", + "sha256": "bc74ac4d8359ae70623506d512209619e5cf8f347124910440dbc221714b328e", + "dest": "cargo/vendor/fluent-uri-0.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"bc74ac4d8359ae70623506d512209619e5cf8f347124910440dbc221714b328e\", \"files\": {}}", + "dest": "cargo/vendor/fluent-uri-0.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fnv/fnv-1.0.7.crate", + "sha256": "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1", + "dest": "cargo/vendor/fnv-1.0.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1\", \"files\": {}}", + "dest": "cargo/vendor/fnv-1.0.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/foldhash/foldhash-0.1.5.crate", + "sha256": "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2", + "dest": "cargo/vendor/foldhash-0.1.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2\", \"files\": {}}", + "dest": "cargo/vendor/foldhash-0.1.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/foldhash/foldhash-0.2.0.crate", + "sha256": "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb", + "dest": "cargo/vendor/foldhash-0.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb\", \"files\": {}}", + "dest": "cargo/vendor/foldhash-0.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/form_urlencoded/form_urlencoded-1.2.2.crate", + "sha256": "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf", + "dest": "cargo/vendor/form_urlencoded-1.2.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf\", \"files\": {}}", + "dest": "cargo/vendor/form_urlencoded-1.2.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fraction/fraction-0.15.4.crate", + "sha256": "e076045bb43dac435333ed5f04caf35c7463631d0dae2deb2638d94dd0a5b872", + "dest": "cargo/vendor/fraction-0.15.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"e076045bb43dac435333ed5f04caf35c7463631d0dae2deb2638d94dd0a5b872\", \"files\": {}}", + "dest": "cargo/vendor/fraction-0.15.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fs4/fs4-0.13.1.crate", + "sha256": "8640e34b88f7652208ce9e88b1a37a2ae95227d84abec377ccd3c5cfeb141ed4", + "dest": "cargo/vendor/fs4-0.13.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"8640e34b88f7652208ce9e88b1a37a2ae95227d84abec377ccd3c5cfeb141ed4\", \"files\": {}}", + "dest": "cargo/vendor/fs4-0.13.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fs_extra/fs_extra-1.3.0.crate", + "sha256": "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c", + "dest": "cargo/vendor/fs_extra-1.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c\", \"files\": {}}", + "dest": "cargo/vendor/fs_extra-1.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/funty/funty-2.0.0.crate", + "sha256": "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c", + "dest": "cargo/vendor/funty-2.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c\", \"files\": {}}", + "dest": "cargo/vendor/funty-2.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/futures-channel/futures-channel-0.3.32.crate", + "sha256": "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d", + "dest": "cargo/vendor/futures-channel-0.3.32" + }, + { + "type": "inline", + "contents": "{\"package\": \"07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d\", \"files\": {}}", + "dest": "cargo/vendor/futures-channel-0.3.32", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/futures-core/futures-core-0.3.32.crate", + "sha256": "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d", + "dest": "cargo/vendor/futures-core-0.3.32" + }, + { + "type": "inline", + "contents": "{\"package\": \"7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d\", \"files\": {}}", + "dest": "cargo/vendor/futures-core-0.3.32", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/futures-io/futures-io-0.3.32.crate", + "sha256": "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718", + "dest": "cargo/vendor/futures-io-0.3.32" + }, + { + "type": "inline", + "contents": "{\"package\": \"cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718\", \"files\": {}}", + "dest": "cargo/vendor/futures-io-0.3.32", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/futures-lite/futures-lite-2.6.1.crate", + "sha256": "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad", + "dest": "cargo/vendor/futures-lite-2.6.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad\", \"files\": {}}", + "dest": "cargo/vendor/futures-lite-2.6.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/futures-macro/futures-macro-0.3.32.crate", + "sha256": "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b", + "dest": "cargo/vendor/futures-macro-0.3.32" + }, + { + "type": "inline", + "contents": "{\"package\": \"e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b\", \"files\": {}}", + "dest": "cargo/vendor/futures-macro-0.3.32", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/futures-sink/futures-sink-0.3.32.crate", + "sha256": "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893", + "dest": "cargo/vendor/futures-sink-0.3.32" + }, + { + "type": "inline", + "contents": "{\"package\": \"c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893\", \"files\": {}}", + "dest": "cargo/vendor/futures-sink-0.3.32", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/futures-task/futures-task-0.3.32.crate", + "sha256": "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393", + "dest": "cargo/vendor/futures-task-0.3.32" + }, + { + "type": "inline", + "contents": "{\"package\": \"037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393\", \"files\": {}}", + "dest": "cargo/vendor/futures-task-0.3.32", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/futures-util/futures-util-0.3.32.crate", + "sha256": "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6", + "dest": "cargo/vendor/futures-util-0.3.32" + }, + { + "type": "inline", + "contents": "{\"package\": \"389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6\", \"files\": {}}", + "dest": "cargo/vendor/futures-util-0.3.32", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fuzzy-matcher/fuzzy-matcher-0.3.7.crate", + "sha256": "54614a3312934d066701a80f20f15fa3b56d67ac7722b39eea5b4c9dd1d66c94", + "dest": "cargo/vendor/fuzzy-matcher-0.3.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"54614a3312934d066701a80f20f15fa3b56d67ac7722b39eea5b4c9dd1d66c94\", \"files\": {}}", + "dest": "cargo/vendor/fuzzy-matcher-0.3.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/genawaiter/genawaiter-0.99.1.crate", + "sha256": "c86bd0361bcbde39b13475e6e36cb24c329964aa2611be285289d1e4b751c1a0", + "dest": "cargo/vendor/genawaiter-0.99.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"c86bd0361bcbde39b13475e6e36cb24c329964aa2611be285289d1e4b751c1a0\", \"files\": {}}", + "dest": "cargo/vendor/genawaiter-0.99.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/genawaiter-macro/genawaiter-macro-0.99.1.crate", + "sha256": "0b32dfe1fdfc0bbde1f22a5da25355514b5e450c33a6af6770884c8750aedfbc", + "dest": "cargo/vendor/genawaiter-macro-0.99.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"0b32dfe1fdfc0bbde1f22a5da25355514b5e450c33a6af6770884c8750aedfbc\", \"files\": {}}", + "dest": "cargo/vendor/genawaiter-macro-0.99.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/generator/generator-0.8.8.crate", + "sha256": "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9", + "dest": "cargo/vendor/generator-0.8.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9\", \"files\": {}}", + "dest": "cargo/vendor/generator-0.8.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/generic-array/generic-array-0.14.7.crate", + "sha256": "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a", + "dest": "cargo/vendor/generic-array-0.14.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a\", \"files\": {}}", + "dest": "cargo/vendor/generic-array-0.14.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/getrandom/getrandom-0.2.17.crate", + "sha256": "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0", + "dest": "cargo/vendor/getrandom-0.2.17" + }, + { + "type": "inline", + "contents": "{\"package\": \"ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0\", \"files\": {}}", + "dest": "cargo/vendor/getrandom-0.2.17", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/getrandom/getrandom-0.3.4.crate", + "sha256": "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd", + "dest": "cargo/vendor/getrandom-0.3.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd\", \"files\": {}}", + "dest": "cargo/vendor/getrandom-0.3.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/getrandom/getrandom-0.4.2.crate", + "sha256": "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555", + "dest": "cargo/vendor/getrandom-0.4.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555\", \"files\": {}}", + "dest": "cargo/vendor/getrandom-0.4.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ghash/ghash-0.5.1.crate", + "sha256": "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1", + "dest": "cargo/vendor/ghash-0.5.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1\", \"files\": {}}", + "dest": "cargo/vendor/ghash-0.5.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/glob/glob-0.3.3.crate", + "sha256": "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280", + "dest": "cargo/vendor/glob-0.3.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280\", \"files\": {}}", + "dest": "cargo/vendor/glob-0.3.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/h2/h2-0.4.14.crate", + "sha256": "171fefbc92fe4a4de27e0698d6a5b392d6a0e333506bc49133760b3bcf948733", + "dest": "cargo/vendor/h2-0.4.14" + }, + { + "type": "inline", + "contents": "{\"package\": \"171fefbc92fe4a4de27e0698d6a5b392d6a0e333506bc49133760b3bcf948733\", \"files\": {}}", + "dest": "cargo/vendor/h2-0.4.14", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hashbrown/hashbrown-0.15.5.crate", + "sha256": "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1", + "dest": "cargo/vendor/hashbrown-0.15.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1\", \"files\": {}}", + "dest": "cargo/vendor/hashbrown-0.15.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hashbrown/hashbrown-0.16.1.crate", + "sha256": "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100", + "dest": "cargo/vendor/hashbrown-0.16.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100\", \"files\": {}}", + "dest": "cargo/vendor/hashbrown-0.16.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hashbrown/hashbrown-0.17.1.crate", + "sha256": "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a", + "dest": "cargo/vendor/hashbrown-0.17.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a\", \"files\": {}}", + "dest": "cargo/vendor/hashbrown-0.17.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/heck/heck-0.5.0.crate", + "sha256": "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea", + "dest": "cargo/vendor/heck-0.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea\", \"files\": {}}", + "dest": "cargo/vendor/heck-0.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hermit-abi/hermit-abi-0.5.2.crate", + "sha256": "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c", + "dest": "cargo/vendor/hermit-abi-0.5.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c\", \"files\": {}}", + "dest": "cargo/vendor/hermit-abi-0.5.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hex/hex-0.4.3.crate", + "sha256": "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70", + "dest": "cargo/vendor/hex-0.4.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70\", \"files\": {}}", + "dest": "cargo/vendor/hex-0.4.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hkdf/hkdf-0.12.4.crate", + "sha256": "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7", + "dest": "cargo/vendor/hkdf-0.12.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7\", \"files\": {}}", + "dest": "cargo/vendor/hkdf-0.12.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hmac/hmac-0.12.1.crate", + "sha256": "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e", + "dest": "cargo/vendor/hmac-0.12.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e\", \"files\": {}}", + "dest": "cargo/vendor/hmac-0.12.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hmac/hmac-0.13.0.crate", + "sha256": "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f", + "dest": "cargo/vendor/hmac-0.13.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f\", \"files\": {}}", + "dest": "cargo/vendor/hmac-0.13.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/home/home-0.5.12.crate", + "sha256": "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d", + "dest": "cargo/vendor/home-0.5.12" + }, + { + "type": "inline", + "contents": "{\"package\": \"cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d\", \"files\": {}}", + "dest": "cargo/vendor/home-0.5.12", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/htmlescape/htmlescape-0.3.1.crate", + "sha256": "e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163", + "dest": "cargo/vendor/htmlescape-0.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163\", \"files\": {}}", + "dest": "cargo/vendor/htmlescape-0.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/http/http-1.4.0.crate", + "sha256": "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a", + "dest": "cargo/vendor/http-1.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a\", \"files\": {}}", + "dest": "cargo/vendor/http-1.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/http-body/http-body-1.0.1.crate", + "sha256": "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184", + "dest": "cargo/vendor/http-body-1.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184\", \"files\": {}}", + "dest": "cargo/vendor/http-body-1.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/http-body-util/http-body-util-0.1.3.crate", + "sha256": "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a", + "dest": "cargo/vendor/http-body-util-0.1.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a\", \"files\": {}}", + "dest": "cargo/vendor/http-body-util-0.1.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/httparse/httparse-1.10.1.crate", + "sha256": "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87", + "dest": "cargo/vendor/httparse-1.10.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87\", \"files\": {}}", + "dest": "cargo/vendor/httparse-1.10.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hybrid-array/hybrid-array-0.4.12.crate", + "sha256": "9155a582abd142abc056962c29e3ce5ff2ad5469f4246b537ed42c5deba857da", + "dest": "cargo/vendor/hybrid-array-0.4.12" + }, + { + "type": "inline", + "contents": "{\"package\": \"9155a582abd142abc056962c29e3ce5ff2ad5469f4246b537ed42c5deba857da\", \"files\": {}}", + "dest": "cargo/vendor/hybrid-array-0.4.12", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hyper/hyper-1.9.0.crate", + "sha256": "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca", + "dest": "cargo/vendor/hyper-1.9.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca\", \"files\": {}}", + "dest": "cargo/vendor/hyper-1.9.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hyper-rustls/hyper-rustls-0.27.9.crate", + "sha256": "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f", + "dest": "cargo/vendor/hyper-rustls-0.27.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f\", \"files\": {}}", + "dest": "cargo/vendor/hyper-rustls-0.27.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hyper-util/hyper-util-0.1.20.crate", + "sha256": "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0", + "dest": "cargo/vendor/hyper-util-0.1.20" + }, + { + "type": "inline", + "contents": "{\"package\": \"96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0\", \"files\": {}}", + "dest": "cargo/vendor/hyper-util-0.1.20", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/iana-time-zone/iana-time-zone-0.1.65.crate", + "sha256": "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470", + "dest": "cargo/vendor/iana-time-zone-0.1.65" + }, + { + "type": "inline", + "contents": "{\"package\": \"e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470\", \"files\": {}}", + "dest": "cargo/vendor/iana-time-zone-0.1.65", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/iana-time-zone-haiku/iana-time-zone-haiku-0.1.2.crate", + "sha256": "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f", + "dest": "cargo/vendor/iana-time-zone-haiku-0.1.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f\", \"files\": {}}", + "dest": "cargo/vendor/iana-time-zone-haiku-0.1.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/icu_collator/icu_collator-2.2.0.crate", + "sha256": "b521b92a2666061ddda902769d8a4cf730b5c9529a845cc1b69770b12a6c9a71", + "dest": "cargo/vendor/icu_collator-2.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"b521b92a2666061ddda902769d8a4cf730b5c9529a845cc1b69770b12a6c9a71\", \"files\": {}}", + "dest": "cargo/vendor/icu_collator-2.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/icu_collator_data/icu_collator_data-2.2.0.crate", + "sha256": "038ed8e5817f2059c2f3efb0945ba78d060d3d25e8f1a1bea5139f821a21a2f0", + "dest": "cargo/vendor/icu_collator_data-2.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"038ed8e5817f2059c2f3efb0945ba78d060d3d25e8f1a1bea5139f821a21a2f0\", \"files\": {}}", + "dest": "cargo/vendor/icu_collator_data-2.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/icu_collections/icu_collections-2.2.0.crate", + "sha256": "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c", + "dest": "cargo/vendor/icu_collections-2.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c\", \"files\": {}}", + "dest": "cargo/vendor/icu_collections-2.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/icu_locale/icu_locale-2.2.0.crate", + "sha256": "d5a396343c7208121dc86e35623d3dfe19814a7613cfd14964994cdc9c9a2e26", + "dest": "cargo/vendor/icu_locale-2.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d5a396343c7208121dc86e35623d3dfe19814a7613cfd14964994cdc9c9a2e26\", \"files\": {}}", + "dest": "cargo/vendor/icu_locale-2.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/icu_locale_core/icu_locale_core-2.2.0.crate", + "sha256": "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29", + "dest": "cargo/vendor/icu_locale_core-2.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29\", \"files\": {}}", + "dest": "cargo/vendor/icu_locale_core-2.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/icu_locale_data/icu_locale_data-2.2.0.crate", + "sha256": "d5fdcc9ac77c6d74ff5cf6e65ef3181d6af32003b16fce3a77fb451d2f695993", + "dest": "cargo/vendor/icu_locale_data-2.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d5fdcc9ac77c6d74ff5cf6e65ef3181d6af32003b16fce3a77fb451d2f695993\", \"files\": {}}", + "dest": "cargo/vendor/icu_locale_data-2.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/icu_normalizer/icu_normalizer-2.2.0.crate", + "sha256": "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4", + "dest": "cargo/vendor/icu_normalizer-2.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4\", \"files\": {}}", + "dest": "cargo/vendor/icu_normalizer-2.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/icu_normalizer_data/icu_normalizer_data-2.2.0.crate", + "sha256": "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38", + "dest": "cargo/vendor/icu_normalizer_data-2.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38\", \"files\": {}}", + "dest": "cargo/vendor/icu_normalizer_data-2.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/icu_properties/icu_properties-2.2.0.crate", + "sha256": "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de", + "dest": "cargo/vendor/icu_properties-2.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de\", \"files\": {}}", + "dest": "cargo/vendor/icu_properties-2.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/icu_properties_data/icu_properties_data-2.2.0.crate", + "sha256": "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14", + "dest": "cargo/vendor/icu_properties_data-2.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14\", \"files\": {}}", + "dest": "cargo/vendor/icu_properties_data-2.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/icu_provider/icu_provider-2.2.0.crate", + "sha256": "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421", + "dest": "cargo/vendor/icu_provider-2.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421\", \"files\": {}}", + "dest": "cargo/vendor/icu_provider-2.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/id-arena/id-arena-2.3.0.crate", + "sha256": "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954", + "dest": "cargo/vendor/id-arena-2.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954\", \"files\": {}}", + "dest": "cargo/vendor/id-arena-2.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ident_case/ident_case-1.0.1.crate", + "sha256": "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39", + "dest": "cargo/vendor/ident_case-1.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39\", \"files\": {}}", + "dest": "cargo/vendor/ident_case-1.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/idna/idna-1.1.0.crate", + "sha256": "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de", + "dest": "cargo/vendor/idna-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de\", \"files\": {}}", + "dest": "cargo/vendor/idna-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/idna_adapter/idna_adapter-1.2.2.crate", + "sha256": "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714", + "dest": "cargo/vendor/idna_adapter-1.2.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714\", \"files\": {}}", + "dest": "cargo/vendor/idna_adapter-1.2.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/indexmap/indexmap-2.14.0.crate", + "sha256": "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9", + "dest": "cargo/vendor/indexmap-2.14.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9\", \"files\": {}}", + "dest": "cargo/vendor/indexmap-2.14.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/inout/inout-0.1.4.crate", + "sha256": "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01", + "dest": "cargo/vendor/inout-0.1.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01\", \"files\": {}}", + "dest": "cargo/vendor/inout-0.1.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/inquire/inquire-0.9.4.crate", + "sha256": "6654738b8024300cf062d04a1c13c10c8e2cea598ec1c47dc9b6641159429756", + "dest": "cargo/vendor/inquire-0.9.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"6654738b8024300cf062d04a1c13c10c8e2cea598ec1c47dc9b6641159429756\", \"files\": {}}", + "dest": "cargo/vendor/inquire-0.9.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/intrusive-collections/intrusive-collections-0.9.7.crate", + "sha256": "189d0897e4cbe8c75efedf3502c18c887b05046e59d28404d4d8e46cbc4d1e86", + "dest": "cargo/vendor/intrusive-collections-0.9.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"189d0897e4cbe8c75efedf3502c18c887b05046e59d28404d4d8e46cbc4d1e86\", \"files\": {}}", + "dest": "cargo/vendor/intrusive-collections-0.9.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/inventory/inventory-0.3.24.crate", + "sha256": "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b", + "dest": "cargo/vendor/inventory-0.3.24" + }, + { + "type": "inline", + "contents": "{\"package\": \"a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b\", \"files\": {}}", + "dest": "cargo/vendor/inventory-0.3.24", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/io-uring/io-uring-0.7.12.crate", + "sha256": "4d09b98f7eace8982db770e4408e7470b028ce513ac28fecdc6bf4c30fe92b62", + "dest": "cargo/vendor/io-uring-0.7.12" + }, + { + "type": "inline", + "contents": "{\"package\": \"4d09b98f7eace8982db770e4408e7470b028ce513ac28fecdc6bf4c30fe92b62\", \"files\": {}}", + "dest": "cargo/vendor/io-uring-0.7.12", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ipnet/ipnet-2.12.0.crate", + "sha256": "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2", + "dest": "cargo/vendor/ipnet-2.12.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2\", \"files\": {}}", + "dest": "cargo/vendor/ipnet-2.12.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/is-terminal/is-terminal-0.4.17.crate", + "sha256": "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46", + "dest": "cargo/vendor/is-terminal-0.4.17" + }, + { + "type": "inline", + "contents": "{\"package\": \"3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46\", \"files\": {}}", + "dest": "cargo/vendor/is-terminal-0.4.17", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/is_ci/is_ci-1.2.0.crate", + "sha256": "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45", + "dest": "cargo/vendor/is_ci-1.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45\", \"files\": {}}", + "dest": "cargo/vendor/is_ci-1.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/is_terminal_polyfill/is_terminal_polyfill-1.70.2.crate", + "sha256": "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695", + "dest": "cargo/vendor/is_terminal_polyfill-1.70.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695\", \"files\": {}}", + "dest": "cargo/vendor/is_terminal_polyfill-1.70.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/itertools/itertools-0.12.1.crate", + "sha256": "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569", + "dest": "cargo/vendor/itertools-0.12.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569\", \"files\": {}}", + "dest": "cargo/vendor/itertools-0.12.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/itertools/itertools-0.14.0.crate", + "sha256": "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285", + "dest": "cargo/vendor/itertools-0.14.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285\", \"files\": {}}", + "dest": "cargo/vendor/itertools-0.14.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/itoa/itoa-1.0.18.crate", + "sha256": "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682", + "dest": "cargo/vendor/itoa-1.0.18" + }, + { + "type": "inline", + "contents": "{\"package\": \"8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682\", \"files\": {}}", + "dest": "cargo/vendor/itoa-1.0.18", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/jni/jni-0.22.4.crate", + "sha256": "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498", + "dest": "cargo/vendor/jni-0.22.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498\", \"files\": {}}", + "dest": "cargo/vendor/jni-0.22.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/jni-macros/jni-macros-0.22.4.crate", + "sha256": "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3", + "dest": "cargo/vendor/jni-macros-0.22.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3\", \"files\": {}}", + "dest": "cargo/vendor/jni-macros-0.22.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/jni-sys/jni-sys-0.4.1.crate", + "sha256": "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2", + "dest": "cargo/vendor/jni-sys-0.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2\", \"files\": {}}", + "dest": "cargo/vendor/jni-sys-0.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/jni-sys-macros/jni-sys-macros-0.4.1.crate", + "sha256": "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264", + "dest": "cargo/vendor/jni-sys-macros-0.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264\", \"files\": {}}", + "dest": "cargo/vendor/jni-sys-macros-0.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/jobserver/jobserver-0.1.34.crate", + "sha256": "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33", + "dest": "cargo/vendor/jobserver-0.1.34" + }, + { + "type": "inline", + "contents": "{\"package\": \"9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33\", \"files\": {}}", + "dest": "cargo/vendor/jobserver-0.1.34", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/js-sys/js-sys-0.3.98.crate", + "sha256": "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08", + "dest": "cargo/vendor/js-sys-0.3.98" + }, + { + "type": "inline", + "contents": "{\"package\": \"67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08\", \"files\": {}}", + "dest": "cargo/vendor/js-sys-0.3.98", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/jsonschema/jsonschema-0.46.5.crate", + "sha256": "6a5fe5206f06e589caf25e79fc05ccdf91fca745685fe9fe1a13bbdfb479a631", + "dest": "cargo/vendor/jsonschema-0.46.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"6a5fe5206f06e589caf25e79fc05ccdf91fca745685fe9fe1a13bbdfb479a631\", \"files\": {}}", + "dest": "cargo/vendor/jsonschema-0.46.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/keyring-core/keyring-core-1.0.0.crate", + "sha256": "fb1e621458ca9c51aa110bd0339d4751a056b9576bf1253aee1aa560dda0fc9d", + "dest": "cargo/vendor/keyring-core-1.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"fb1e621458ca9c51aa110bd0339d4751a056b9576bf1253aee1aa560dda0fc9d\", \"files\": {}}", + "dest": "cargo/vendor/keyring-core-1.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lazy_static/lazy_static-1.5.0.crate", + "sha256": "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe", + "dest": "cargo/vendor/lazy_static-1.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe\", \"files\": {}}", + "dest": "cargo/vendor/lazy_static-1.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lazycell/lazycell-1.3.0.crate", + "sha256": "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55", + "dest": "cargo/vendor/lazycell-1.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55\", \"files\": {}}", + "dest": "cargo/vendor/lazycell-1.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/leb128fmt/leb128fmt-0.1.0.crate", + "sha256": "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2", + "dest": "cargo/vendor/leb128fmt-0.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2\", \"files\": {}}", + "dest": "cargo/vendor/leb128fmt-0.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/levenshtein_automata/levenshtein_automata-0.2.1.crate", + "sha256": "0c2cdeb66e45e9f36bfad5bbdb4d2384e70936afbee843c6f6543f0c551ebb25", + "dest": "cargo/vendor/levenshtein_automata-0.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"0c2cdeb66e45e9f36bfad5bbdb4d2384e70936afbee843c6f6543f0c551ebb25\", \"files\": {}}", + "dest": "cargo/vendor/levenshtein_automata-0.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/libc/libc-0.2.186.crate", + "sha256": "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66", + "dest": "cargo/vendor/libc-0.2.186" + }, + { + "type": "inline", + "contents": "{\"package\": \"68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66\", \"files\": {}}", + "dest": "cargo/vendor/libc-0.2.186", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/libloading/libloading-0.8.9.crate", + "sha256": "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55", + "dest": "cargo/vendor/libloading-0.8.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55\", \"files\": {}}", + "dest": "cargo/vendor/libloading-0.8.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/libm/libm-0.2.16.crate", + "sha256": "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981", + "dest": "cargo/vendor/libm-0.2.16" + }, + { + "type": "inline", + "contents": "{\"package\": \"b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981\", \"files\": {}}", + "dest": "cargo/vendor/libm-0.2.16", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/libmimalloc-sys/libmimalloc-sys-0.1.47.crate", + "sha256": "2d1eacfa31c33ec25e873c136ba5669f00f9866d0688bea7be4d3f7e43067df6", + "dest": "cargo/vendor/libmimalloc-sys-0.1.47" + }, + { + "type": "inline", + "contents": "{\"package\": \"2d1eacfa31c33ec25e873c136ba5669f00f9866d0688bea7be4d3f7e43067df6\", \"files\": {}}", + "dest": "cargo/vendor/libmimalloc-sys-0.1.47", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/libredox/libredox-0.1.16.crate", + "sha256": "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c", + "dest": "cargo/vendor/libredox-0.1.16" + }, + { + "type": "inline", + "contents": "{\"package\": \"e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c\", \"files\": {}}", + "dest": "cargo/vendor/libredox-0.1.16", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/linkme/linkme-0.3.36.crate", + "sha256": "e83272d46373fb8decca684579ac3e7c8f3d71d4cc3aa693df8759e260ae41cf", + "dest": "cargo/vendor/linkme-0.3.36" + }, + { + "type": "inline", + "contents": "{\"package\": \"e83272d46373fb8decca684579ac3e7c8f3d71d4cc3aa693df8759e260ae41cf\", \"files\": {}}", + "dest": "cargo/vendor/linkme-0.3.36", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/linkme-impl/linkme-impl-0.3.36.crate", + "sha256": "32d59e20403c7d08fe62b4376edfe5c7fb2ef1e6b1465379686d0f21c8df444b", + "dest": "cargo/vendor/linkme-impl-0.3.36" + }, + { + "type": "inline", + "contents": "{\"package\": \"32d59e20403c7d08fe62b4376edfe5c7fb2ef1e6b1465379686d0f21c8df444b\", \"files\": {}}", + "dest": "cargo/vendor/linkme-impl-0.3.36", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/linux-raw-sys/linux-raw-sys-0.4.15.crate", + "sha256": "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab", + "dest": "cargo/vendor/linux-raw-sys-0.4.15" + }, + { + "type": "inline", + "contents": "{\"package\": \"d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab\", \"files\": {}}", + "dest": "cargo/vendor/linux-raw-sys-0.4.15", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/linux-raw-sys/linux-raw-sys-0.12.1.crate", + "sha256": "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53", + "dest": "cargo/vendor/linux-raw-sys-0.12.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53\", \"files\": {}}", + "dest": "cargo/vendor/linux-raw-sys-0.12.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/litemap/litemap-0.8.2.crate", + "sha256": "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0", + "dest": "cargo/vendor/litemap-0.8.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0\", \"files\": {}}", + "dest": "cargo/vendor/litemap-0.8.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/litrs/litrs-1.0.0.crate", + "sha256": "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092", + "dest": "cargo/vendor/litrs-1.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092\", \"files\": {}}", + "dest": "cargo/vendor/litrs-1.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lock_api/lock_api-0.4.14.crate", + "sha256": "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965", + "dest": "cargo/vendor/lock_api-0.4.14" + }, + { + "type": "inline", + "contents": "{\"package\": \"224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965\", \"files\": {}}", + "dest": "cargo/vendor/lock_api-0.4.14", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/log/log-0.4.29.crate", + "sha256": "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897", + "dest": "cargo/vendor/log-0.4.29" + }, + { + "type": "inline", + "contents": "{\"package\": \"5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897\", \"files\": {}}", + "dest": "cargo/vendor/log-0.4.29", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/loom/loom-0.7.2.crate", + "sha256": "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca", + "dest": "cargo/vendor/loom-0.7.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca\", \"files\": {}}", + "dest": "cargo/vendor/loom-0.7.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lru/lru-0.16.4.crate", + "sha256": "7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39", + "dest": "cargo/vendor/lru-0.16.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39\", \"files\": {}}", + "dest": "cargo/vendor/lru-0.16.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lru-slab/lru-slab-0.1.2.crate", + "sha256": "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154", + "dest": "cargo/vendor/lru-slab-0.1.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154\", \"files\": {}}", + "dest": "cargo/vendor/lru-slab-0.1.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lz4_flex/lz4_flex-0.13.1.crate", + "sha256": "7ef0d4ed8669f8f8826eb00dc878084aa8f253506c4fd5e8f58f5bce72ddb97e", + "dest": "cargo/vendor/lz4_flex-0.13.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"7ef0d4ed8669f8f8826eb00dc878084aa8f253506c4fd5e8f58f5bce72ddb97e\", \"files\": {}}", + "dest": "cargo/vendor/lz4_flex-0.13.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/matchers/matchers-0.2.0.crate", + "sha256": "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9", + "dest": "cargo/vendor/matchers-0.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9\", \"files\": {}}", + "dest": "cargo/vendor/matchers-0.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/measure_time/measure_time-0.9.0.crate", + "sha256": "51c55d61e72fc3ab704396c5fa16f4c184db37978ae4e94ca8959693a235fc0e", + "dest": "cargo/vendor/measure_time-0.9.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"51c55d61e72fc3ab704396c5fa16f4c184db37978ae4e94ca8959693a235fc0e\", \"files\": {}}", + "dest": "cargo/vendor/measure_time-0.9.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/memchr/memchr-2.8.0.crate", + "sha256": "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79", + "dest": "cargo/vendor/memchr-2.8.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79\", \"files\": {}}", + "dest": "cargo/vendor/memchr-2.8.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/memmap2/memmap2-0.9.10.crate", + "sha256": "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3", + "dest": "cargo/vendor/memmap2-0.9.10" + }, + { + "type": "inline", + "contents": "{\"package\": \"714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3\", \"files\": {}}", + "dest": "cargo/vendor/memmap2-0.9.10", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/memoffset/memoffset-0.9.1.crate", + "sha256": "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a", + "dest": "cargo/vendor/memoffset-0.9.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a\", \"files\": {}}", + "dest": "cargo/vendor/memoffset-0.9.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/micromap/micromap-0.3.0.crate", + "sha256": "c2a86d3146ed3995b5913c414f6664344b9617457320782e64f0bb44afd49d74", + "dest": "cargo/vendor/micromap-0.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"c2a86d3146ed3995b5913c414f6664344b9617457320782e64f0bb44afd49d74\", \"files\": {}}", + "dest": "cargo/vendor/micromap-0.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/miette/miette-7.6.0.crate", + "sha256": "5f98efec8807c63c752b5bd61f862c165c115b0a35685bdcfd9238c7aeb592b7", + "dest": "cargo/vendor/miette-7.6.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"5f98efec8807c63c752b5bd61f862c165c115b0a35685bdcfd9238c7aeb592b7\", \"files\": {}}", + "dest": "cargo/vendor/miette-7.6.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/miette-derive/miette-derive-7.6.0.crate", + "sha256": "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b", + "dest": "cargo/vendor/miette-derive-7.6.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b\", \"files\": {}}", + "dest": "cargo/vendor/miette-derive-7.6.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/mimalloc/mimalloc-0.1.50.crate", + "sha256": "b3627c4272df786b9260cabaa46aec1d59c93ede723d4c3ef646c503816b0640", + "dest": "cargo/vendor/mimalloc-0.1.50" + }, + { + "type": "inline", + "contents": "{\"package\": \"b3627c4272df786b9260cabaa46aec1d59c93ede723d4c3ef646c503816b0640\", \"files\": {}}", + "dest": "cargo/vendor/mimalloc-0.1.50", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/minimal-lexical/minimal-lexical-0.2.1.crate", + "sha256": "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a", + "dest": "cargo/vendor/minimal-lexical-0.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a\", \"files\": {}}", + "dest": "cargo/vendor/minimal-lexical-0.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/mio/mio-1.2.0.crate", + "sha256": "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1", + "dest": "cargo/vendor/mio-1.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1\", \"files\": {}}", + "dest": "cargo/vendor/mio-1.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/murmur3/murmur3-0.5.2.crate", + "sha256": "9252111cf132ba0929b6f8e030cac2a24b507f3a4d6db6fb2896f27b354c714b", + "dest": "cargo/vendor/murmur3-0.5.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"9252111cf132ba0929b6f8e030cac2a24b507f3a4d6db6fb2896f27b354c714b\", \"files\": {}}", + "dest": "cargo/vendor/murmur3-0.5.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/murmurhash32/murmurhash32-0.3.1.crate", + "sha256": "2195bf6aa996a481483b29d62a7663eed3fe39600c460e323f8ff41e90bdd89b", + "dest": "cargo/vendor/murmurhash32-0.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"2195bf6aa996a481483b29d62a7663eed3fe39600c460e323f8ff41e90bdd89b\", \"files\": {}}", + "dest": "cargo/vendor/murmurhash32-0.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/nom/nom-7.1.3.crate", + "sha256": "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a", + "dest": "cargo/vendor/nom-7.1.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a\", \"files\": {}}", + "dest": "cargo/vendor/nom-7.1.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/nu-ansi-term/nu-ansi-term-0.50.3.crate", + "sha256": "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5", + "dest": "cargo/vendor/nu-ansi-term-0.50.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5\", \"files\": {}}", + "dest": "cargo/vendor/nu-ansi-term-0.50.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/num/num-0.4.3.crate", + "sha256": "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23", + "dest": "cargo/vendor/num-0.4.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23\", \"files\": {}}", + "dest": "cargo/vendor/num-0.4.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/num-bigint/num-bigint-0.4.6.crate", + "sha256": "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9", + "dest": "cargo/vendor/num-bigint-0.4.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9\", \"files\": {}}", + "dest": "cargo/vendor/num-bigint-0.4.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/num-cmp/num-cmp-0.1.0.crate", + "sha256": "63335b2e2c34fae2fb0aa2cecfd9f0832a1e24b3b32ecec612c3426d46dc8aaa", + "dest": "cargo/vendor/num-cmp-0.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"63335b2e2c34fae2fb0aa2cecfd9f0832a1e24b3b32ecec612c3426d46dc8aaa\", \"files\": {}}", + "dest": "cargo/vendor/num-cmp-0.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/num-complex/num-complex-0.4.6.crate", + "sha256": "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495", + "dest": "cargo/vendor/num-complex-0.4.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495\", \"files\": {}}", + "dest": "cargo/vendor/num-complex-0.4.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/num-conv/num-conv-0.2.1.crate", + "sha256": "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967", + "dest": "cargo/vendor/num-conv-0.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967\", \"files\": {}}", + "dest": "cargo/vendor/num-conv-0.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/num-integer/num-integer-0.1.46.crate", + "sha256": "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f", + "dest": "cargo/vendor/num-integer-0.1.46" + }, + { + "type": "inline", + "contents": "{\"package\": \"7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f\", \"files\": {}}", + "dest": "cargo/vendor/num-integer-0.1.46", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/num-iter/num-iter-0.1.45.crate", + "sha256": "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf", + "dest": "cargo/vendor/num-iter-0.1.45" + }, + { + "type": "inline", + "contents": "{\"package\": \"1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf\", \"files\": {}}", + "dest": "cargo/vendor/num-iter-0.1.45", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/num-rational/num-rational-0.4.2.crate", + "sha256": "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824", + "dest": "cargo/vendor/num-rational-0.4.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824\", \"files\": {}}", + "dest": "cargo/vendor/num-rational-0.4.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/num-traits/num-traits-0.2.19.crate", + "sha256": "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841", + "dest": "cargo/vendor/num-traits-0.2.19" + }, + { + "type": "inline", + "contents": "{\"package\": \"071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841\", \"files\": {}}", + "dest": "cargo/vendor/num-traits-0.2.19", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/once_cell/once_cell-1.21.4.crate", + "sha256": "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50", + "dest": "cargo/vendor/once_cell-1.21.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50\", \"files\": {}}", + "dest": "cargo/vendor/once_cell-1.21.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/once_cell_polyfill/once_cell_polyfill-1.70.2.crate", + "sha256": "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe", + "dest": "cargo/vendor/once_cell_polyfill-1.70.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe\", \"files\": {}}", + "dest": "cargo/vendor/once_cell_polyfill-1.70.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/oneshot/oneshot-0.1.13.crate", + "sha256": "269bca4c2591a28585d6bf10d9ed0332b7d76900a1b02bec41bdc3a2cdcda107", + "dest": "cargo/vendor/oneshot-0.1.13" + }, + { + "type": "inline", + "contents": "{\"package\": \"269bca4c2591a28585d6bf10d9ed0332b7d76900a1b02bec41bdc3a2cdcda107\", \"files\": {}}", + "dest": "cargo/vendor/oneshot-0.1.13", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/opaque-debug/opaque-debug-0.3.1.crate", + "sha256": "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381", + "dest": "cargo/vendor/opaque-debug-0.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381\", \"files\": {}}", + "dest": "cargo/vendor/opaque-debug-0.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/openssl-probe/openssl-probe-0.2.1.crate", + "sha256": "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe", + "dest": "cargo/vendor/openssl-probe-0.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe\", \"files\": {}}", + "dest": "cargo/vendor/openssl-probe-0.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/option-ext/option-ext-0.2.0.crate", + "sha256": "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d", + "dest": "cargo/vendor/option-ext-0.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d\", \"files\": {}}", + "dest": "cargo/vendor/option-ext-0.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ordered-float/ordered-float-5.3.0.crate", + "sha256": "b7d950ca161dc355eaf28f82b11345ed76c6e1f6eb1f4f4479e0323b9e2fbd0e", + "dest": "cargo/vendor/ordered-float-5.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"b7d950ca161dc355eaf28f82b11345ed76c6e1f6eb1f4f4479e0323b9e2fbd0e\", \"files\": {}}", + "dest": "cargo/vendor/ordered-float-5.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ordered-stream/ordered-stream-0.2.0.crate", + "sha256": "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50", + "dest": "cargo/vendor/ordered-stream-0.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50\", \"files\": {}}", + "dest": "cargo/vendor/ordered-stream-0.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/outref/outref-0.5.2.crate", + "sha256": "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e", + "dest": "cargo/vendor/outref-0.5.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e\", \"files\": {}}", + "dest": "cargo/vendor/outref-0.5.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ownedbytes/ownedbytes-0.9.0.crate", + "sha256": "2fbd56f7631767e61784dc43f8580f403f4475bd4aaa4da003e6295e1bab4a7e", + "dest": "cargo/vendor/ownedbytes-0.9.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"2fbd56f7631767e61784dc43f8580f403f4475bd4aaa4da003e6295e1bab4a7e\", \"files\": {}}", + "dest": "cargo/vendor/ownedbytes-0.9.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/owo-colors/owo-colors-3.5.0.crate", + "sha256": "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f", + "dest": "cargo/vendor/owo-colors-3.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f\", \"files\": {}}", + "dest": "cargo/vendor/owo-colors-3.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/owo-colors/owo-colors-4.3.0.crate", + "sha256": "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d", + "dest": "cargo/vendor/owo-colors-4.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d\", \"files\": {}}", + "dest": "cargo/vendor/owo-colors-4.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/pack1/pack1-1.1.0.crate", + "sha256": "e3b7bb0ecf2e447b1f20ee94ee79ef6eed1e9d4b3c36ce1903b9dea3bf205523", + "dest": "cargo/vendor/pack1-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"e3b7bb0ecf2e447b1f20ee94ee79ef6eed1e9d4b3c36ce1903b9dea3bf205523\", \"files\": {}}", + "dest": "cargo/vendor/pack1-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/parking/parking-2.2.1.crate", + "sha256": "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba", + "dest": "cargo/vendor/parking-2.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba\", \"files\": {}}", + "dest": "cargo/vendor/parking-2.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/parking_lot/parking_lot-0.12.5.crate", + "sha256": "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a", + "dest": "cargo/vendor/parking_lot-0.12.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a\", \"files\": {}}", + "dest": "cargo/vendor/parking_lot-0.12.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/parking_lot_core/parking_lot_core-0.9.12.crate", + "sha256": "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1", + "dest": "cargo/vendor/parking_lot_core-0.9.12" + }, + { + "type": "inline", + "contents": "{\"package\": \"2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1\", \"files\": {}}", + "dest": "cargo/vendor/parking_lot_core-0.9.12", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/pastey/pastey-0.2.2.crate", + "sha256": "c5a797f0e07bdf071d15742978fc3128ec6c22891c31a3a931513263904c982a", + "dest": "cargo/vendor/pastey-0.2.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"c5a797f0e07bdf071d15742978fc3128ec6c22891c31a3a931513263904c982a\", \"files\": {}}", + "dest": "cargo/vendor/pastey-0.2.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/percent-encoding/percent-encoding-2.3.2.crate", + "sha256": "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220", + "dest": "cargo/vendor/percent-encoding-2.3.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220\", \"files\": {}}", + "dest": "cargo/vendor/percent-encoding-2.3.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/pin-project-lite/pin-project-lite-0.2.17.crate", + "sha256": "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd", + "dest": "cargo/vendor/pin-project-lite-0.2.17" + }, + { + "type": "inline", + "contents": "{\"package\": \"a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd\", \"files\": {}}", + "dest": "cargo/vendor/pin-project-lite-0.2.17", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/piper/piper-0.2.5.crate", + "sha256": "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1", + "dest": "cargo/vendor/piper-0.2.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1\", \"files\": {}}", + "dest": "cargo/vendor/piper-0.2.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/pkg-config/pkg-config-0.3.33.crate", + "sha256": "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e", + "dest": "cargo/vendor/pkg-config-0.3.33" + }, + { + "type": "inline", + "contents": "{\"package\": \"19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e\", \"files\": {}}", + "dest": "cargo/vendor/pkg-config-0.3.33", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/polling/polling-3.11.0.crate", + "sha256": "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218", + "dest": "cargo/vendor/polling-3.11.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218\", \"files\": {}}", + "dest": "cargo/vendor/polling-3.11.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/polyval/polyval-0.6.2.crate", + "sha256": "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25", + "dest": "cargo/vendor/polyval-0.6.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25\", \"files\": {}}", + "dest": "cargo/vendor/polyval-0.6.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/potential_utf/potential_utf-0.1.5.crate", + "sha256": "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564", + "dest": "cargo/vendor/potential_utf-0.1.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564\", \"files\": {}}", + "dest": "cargo/vendor/potential_utf-0.1.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/powerfmt/powerfmt-0.2.0.crate", + "sha256": "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391", + "dest": "cargo/vendor/powerfmt-0.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391\", \"files\": {}}", + "dest": "cargo/vendor/powerfmt-0.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ppv-lite86/ppv-lite86-0.2.21.crate", + "sha256": "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9", + "dest": "cargo/vendor/ppv-lite86-0.2.21" + }, + { + "type": "inline", + "contents": "{\"package\": \"85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9\", \"files\": {}}", + "dest": "cargo/vendor/ppv-lite86-0.2.21", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/prettyplease/prettyplease-0.2.37.crate", + "sha256": "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b", + "dest": "cargo/vendor/prettyplease-0.2.37" + }, + { + "type": "inline", + "contents": "{\"package\": \"479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b\", \"files\": {}}", + "dest": "cargo/vendor/prettyplease-0.2.37", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/proc-macro-crate/proc-macro-crate-3.5.0.crate", + "sha256": "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f", + "dest": "cargo/vendor/proc-macro-crate-3.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f\", \"files\": {}}", + "dest": "cargo/vendor/proc-macro-crate-3.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/proc-macro2/proc-macro2-1.0.106.crate", + "sha256": "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934", + "dest": "cargo/vendor/proc-macro2-1.0.106" + }, + { + "type": "inline", + "contents": "{\"package\": \"8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934\", \"files\": {}}", + "dest": "cargo/vendor/proc-macro2-1.0.106", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/prost/prost-0.14.3.crate", + "sha256": "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568", + "dest": "cargo/vendor/prost-0.14.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568\", \"files\": {}}", + "dest": "cargo/vendor/prost-0.14.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/prost-derive/prost-derive-0.14.3.crate", + "sha256": "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b", + "dest": "cargo/vendor/prost-derive-0.14.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b\", \"files\": {}}", + "dest": "cargo/vendor/prost-derive-0.14.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/quinn/quinn-0.11.9.crate", + "sha256": "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20", + "dest": "cargo/vendor/quinn-0.11.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20\", \"files\": {}}", + "dest": "cargo/vendor/quinn-0.11.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/quinn-proto/quinn-proto-0.11.14.crate", + "sha256": "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098", + "dest": "cargo/vendor/quinn-proto-0.11.14" + }, + { + "type": "inline", + "contents": "{\"package\": \"434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098\", \"files\": {}}", + "dest": "cargo/vendor/quinn-proto-0.11.14", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/quinn-udp/quinn-udp-0.5.14.crate", + "sha256": "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd", + "dest": "cargo/vendor/quinn-udp-0.5.14" + }, + { + "type": "inline", + "contents": "{\"package\": \"addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd\", \"files\": {}}", + "dest": "cargo/vendor/quinn-udp-0.5.14", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/quote/quote-1.0.45.crate", + "sha256": "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924", + "dest": "cargo/vendor/quote-1.0.45" + }, + { + "type": "inline", + "contents": "{\"package\": \"41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924\", \"files\": {}}", + "dest": "cargo/vendor/quote-1.0.45", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/r-efi/r-efi-5.3.0.crate", + "sha256": "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f", + "dest": "cargo/vendor/r-efi-5.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f\", \"files\": {}}", + "dest": "cargo/vendor/r-efi-5.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/r-efi/r-efi-6.0.0.crate", + "sha256": "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf", + "dest": "cargo/vendor/r-efi-6.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf\", \"files\": {}}", + "dest": "cargo/vendor/r-efi-6.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/radium/radium-0.7.0.crate", + "sha256": "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09", + "dest": "cargo/vendor/radium-0.7.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09\", \"files\": {}}", + "dest": "cargo/vendor/radium-0.7.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rand/rand-0.8.6.crate", + "sha256": "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a", + "dest": "cargo/vendor/rand-0.8.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a\", \"files\": {}}", + "dest": "cargo/vendor/rand-0.8.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rand/rand-0.9.4.crate", + "sha256": "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea", + "dest": "cargo/vendor/rand-0.9.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea\", \"files\": {}}", + "dest": "cargo/vendor/rand-0.9.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rand_chacha/rand_chacha-0.3.1.crate", + "sha256": "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88", + "dest": "cargo/vendor/rand_chacha-0.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88\", \"files\": {}}", + "dest": "cargo/vendor/rand_chacha-0.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rand_chacha/rand_chacha-0.9.0.crate", + "sha256": "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb", + "dest": "cargo/vendor/rand_chacha-0.9.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb\", \"files\": {}}", + "dest": "cargo/vendor/rand_chacha-0.9.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rand_core/rand_core-0.6.4.crate", + "sha256": "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c", + "dest": "cargo/vendor/rand_core-0.6.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c\", \"files\": {}}", + "dest": "cargo/vendor/rand_core-0.6.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rand_core/rand_core-0.9.5.crate", + "sha256": "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c", + "dest": "cargo/vendor/rand_core-0.9.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c\", \"files\": {}}", + "dest": "cargo/vendor/rand_core-0.9.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rand_pcg/rand_pcg-0.3.1.crate", + "sha256": "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e", + "dest": "cargo/vendor/rand_pcg-0.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e\", \"files\": {}}", + "dest": "cargo/vendor/rand_pcg-0.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rapidhash/rapidhash-4.4.1.crate", + "sha256": "b5e48930979c155e2f33aa36ab3119b5ee81332beb6482199a8ecd6029b80b59", + "dest": "cargo/vendor/rapidhash-4.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"b5e48930979c155e2f33aa36ab3119b5ee81332beb6482199a8ecd6029b80b59\", \"files\": {}}", + "dest": "cargo/vendor/rapidhash-4.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rayon/rayon-1.12.0.crate", + "sha256": "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d", + "dest": "cargo/vendor/rayon-1.12.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d\", \"files\": {}}", + "dest": "cargo/vendor/rayon-1.12.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rayon-core/rayon-core-1.13.0.crate", + "sha256": "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91", + "dest": "cargo/vendor/rayon-core-1.13.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91\", \"files\": {}}", + "dest": "cargo/vendor/rayon-core-1.13.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/redox_syscall/redox_syscall-0.5.18.crate", + "sha256": "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d", + "dest": "cargo/vendor/redox_syscall-0.5.18" + }, + { + "type": "inline", + "contents": "{\"package\": \"ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d\", \"files\": {}}", + "dest": "cargo/vendor/redox_syscall-0.5.18", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/redox_users/redox_users-0.5.2.crate", + "sha256": "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac", + "dest": "cargo/vendor/redox_users-0.5.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac\", \"files\": {}}", + "dest": "cargo/vendor/redox_users-0.5.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ref-cast/ref-cast-1.0.25.crate", + "sha256": "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d", + "dest": "cargo/vendor/ref-cast-1.0.25" + }, + { + "type": "inline", + "contents": "{\"package\": \"f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d\", \"files\": {}}", + "dest": "cargo/vendor/ref-cast-1.0.25", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ref-cast-impl/ref-cast-impl-1.0.25.crate", + "sha256": "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da", + "dest": "cargo/vendor/ref-cast-impl-1.0.25" + }, + { + "type": "inline", + "contents": "{\"package\": \"b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da\", \"files\": {}}", + "dest": "cargo/vendor/ref-cast-impl-1.0.25", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/referencing/referencing-0.46.5.crate", + "sha256": "69e4e17ef386c5383591d07623d3de49cbc601156e7582973e6db98d66a57de2", + "dest": "cargo/vendor/referencing-0.46.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"69e4e17ef386c5383591d07623d3de49cbc601156e7582973e6db98d66a57de2\", \"files\": {}}", + "dest": "cargo/vendor/referencing-0.46.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/regex/regex-1.12.3.crate", + "sha256": "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276", + "dest": "cargo/vendor/regex-1.12.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276\", \"files\": {}}", + "dest": "cargo/vendor/regex-1.12.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/regex-automata/regex-automata-0.4.14.crate", + "sha256": "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f", + "dest": "cargo/vendor/regex-automata-0.4.14" + }, + { + "type": "inline", + "contents": "{\"package\": \"6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f\", \"files\": {}}", + "dest": "cargo/vendor/regex-automata-0.4.14", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/regex-syntax/regex-syntax-0.8.10.crate", + "sha256": "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a", + "dest": "cargo/vendor/regex-syntax-0.8.10" + }, + { + "type": "inline", + "contents": "{\"package\": \"dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a\", \"files\": {}}", + "dest": "cargo/vendor/regex-syntax-0.8.10", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/reqwest/reqwest-0.13.3.crate", + "sha256": "62e0021ea2c22aed41653bc7e1419abb2c97e038ff2c33d0e1309e49a97deec0", + "dest": "cargo/vendor/reqwest-0.13.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"62e0021ea2c22aed41653bc7e1419abb2c97e038ff2c33d0e1309e49a97deec0\", \"files\": {}}", + "dest": "cargo/vendor/reqwest-0.13.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ring/ring-0.17.14.crate", + "sha256": "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7", + "dest": "cargo/vendor/ring-0.17.14" + }, + { + "type": "inline", + "contents": "{\"package\": \"a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7\", \"files\": {}}", + "dest": "cargo/vendor/ring-0.17.14", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/roaring/roaring-0.11.4.crate", + "sha256": "1dedc5658c6ecb3bdb5ef5f3295bb9253f42dcf3fd1402c03f6b1f7659c3c4a9", + "dest": "cargo/vendor/roaring-0.11.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"1dedc5658c6ecb3bdb5ef5f3295bb9253f42dcf3fd1402c03f6b1f7659c3c4a9\", \"files\": {}}", + "dest": "cargo/vendor/roaring-0.11.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rust-stemmers/rust-stemmers-1.2.0.crate", + "sha256": "e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54", + "dest": "cargo/vendor/rust-stemmers-1.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54\", \"files\": {}}", + "dest": "cargo/vendor/rust-stemmers-1.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustc-hash/rustc-hash-1.1.0.crate", + "sha256": "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2", + "dest": "cargo/vendor/rustc-hash-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2\", \"files\": {}}", + "dest": "cargo/vendor/rustc-hash-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustc-hash/rustc-hash-2.1.2.crate", + "sha256": "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe", + "dest": "cargo/vendor/rustc-hash-2.1.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe\", \"files\": {}}", + "dest": "cargo/vendor/rustc-hash-2.1.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustc_version/rustc_version-0.4.1.crate", + "sha256": "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92", + "dest": "cargo/vendor/rustc_version-0.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92\", \"files\": {}}", + "dest": "cargo/vendor/rustc_version-0.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustc_version_runtime/rustc_version_runtime-0.3.0.crate", + "sha256": "2dd18cd2bae1820af0b6ad5e54f4a51d0f3fcc53b05f845675074efcc7af071d", + "dest": "cargo/vendor/rustc_version_runtime-0.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"2dd18cd2bae1820af0b6ad5e54f4a51d0f3fcc53b05f845675074efcc7af071d\", \"files\": {}}", + "dest": "cargo/vendor/rustc_version_runtime-0.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustix/rustix-0.38.44.crate", + "sha256": "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154", + "dest": "cargo/vendor/rustix-0.38.44" + }, + { + "type": "inline", + "contents": "{\"package\": \"fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154\", \"files\": {}}", + "dest": "cargo/vendor/rustix-0.38.44", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustix/rustix-1.1.4.crate", + "sha256": "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190", + "dest": "cargo/vendor/rustix-1.1.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190\", \"files\": {}}", + "dest": "cargo/vendor/rustix-1.1.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustls/rustls-0.23.40.crate", + "sha256": "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b", + "dest": "cargo/vendor/rustls-0.23.40" + }, + { + "type": "inline", + "contents": "{\"package\": \"ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b\", \"files\": {}}", + "dest": "cargo/vendor/rustls-0.23.40", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustls-native-certs/rustls-native-certs-0.8.3.crate", + "sha256": "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63", + "dest": "cargo/vendor/rustls-native-certs-0.8.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63\", \"files\": {}}", + "dest": "cargo/vendor/rustls-native-certs-0.8.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustls-pki-types/rustls-pki-types-1.14.1.crate", + "sha256": "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9", + "dest": "cargo/vendor/rustls-pki-types-1.14.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9\", \"files\": {}}", + "dest": "cargo/vendor/rustls-pki-types-1.14.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustls-platform-verifier/rustls-platform-verifier-0.7.0.crate", + "sha256": "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0", + "dest": "cargo/vendor/rustls-platform-verifier-0.7.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0\", \"files\": {}}", + "dest": "cargo/vendor/rustls-platform-verifier-0.7.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustls-platform-verifier-android/rustls-platform-verifier-android-0.1.1.crate", + "sha256": "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f", + "dest": "cargo/vendor/rustls-platform-verifier-android-0.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f\", \"files\": {}}", + "dest": "cargo/vendor/rustls-platform-verifier-android-0.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustls-webpki/rustls-webpki-0.103.13.crate", + "sha256": "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e", + "dest": "cargo/vendor/rustls-webpki-0.103.13" + }, + { + "type": "inline", + "contents": "{\"package\": \"61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e\", \"files\": {}}", + "dest": "cargo/vendor/rustls-webpki-0.103.13", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustversion/rustversion-1.0.22.crate", + "sha256": "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d", + "dest": "cargo/vendor/rustversion-1.0.22" + }, + { + "type": "inline", + "contents": "{\"package\": \"b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d\", \"files\": {}}", + "dest": "cargo/vendor/rustversion-1.0.22", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ryu/ryu-1.0.23.crate", + "sha256": "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f", + "dest": "cargo/vendor/ryu-1.0.23" + }, + { + "type": "inline", + "contents": "{\"package\": \"9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f\", \"files\": {}}", + "dest": "cargo/vendor/ryu-1.0.23", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/same-file/same-file-1.0.6.crate", + "sha256": "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502", + "dest": "cargo/vendor/same-file-1.0.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502\", \"files\": {}}", + "dest": "cargo/vendor/same-file-1.0.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/schannel/schannel-0.1.29.crate", + "sha256": "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939", + "dest": "cargo/vendor/schannel-0.1.29" + }, + { + "type": "inline", + "contents": "{\"package\": \"91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939\", \"files\": {}}", + "dest": "cargo/vendor/schannel-0.1.29", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/scoped-tls/scoped-tls-1.0.1.crate", + "sha256": "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294", + "dest": "cargo/vendor/scoped-tls-1.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294\", \"files\": {}}", + "dest": "cargo/vendor/scoped-tls-1.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/scopeguard/scopeguard-1.2.0.crate", + "sha256": "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49", + "dest": "cargo/vendor/scopeguard-1.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49\", \"files\": {}}", + "dest": "cargo/vendor/scopeguard-1.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/secret-service/secret-service-5.1.0.crate", + "sha256": "9a62d7f86047af0077255a29494136b9aaaf697c76ff70b8e49cded4e2623c14", + "dest": "cargo/vendor/secret-service-5.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"9a62d7f86047af0077255a29494136b9aaaf697c76ff70b8e49cded4e2623c14\", \"files\": {}}", + "dest": "cargo/vendor/secret-service-5.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/security-framework/security-framework-3.7.0.crate", + "sha256": "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d", + "dest": "cargo/vendor/security-framework-3.7.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d\", \"files\": {}}", + "dest": "cargo/vendor/security-framework-3.7.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/security-framework-sys/security-framework-sys-2.17.0.crate", + "sha256": "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3", + "dest": "cargo/vendor/security-framework-sys-2.17.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3\", \"files\": {}}", + "dest": "cargo/vendor/security-framework-sys-2.17.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/semver/semver-1.0.28.crate", + "sha256": "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd", + "dest": "cargo/vendor/semver-1.0.28" + }, + { + "type": "inline", + "contents": "{\"package\": \"8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd\", \"files\": {}}", + "dest": "cargo/vendor/semver-1.0.28", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde/serde-1.0.228.crate", + "sha256": "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e", + "dest": "cargo/vendor/serde-1.0.228" + }, + { + "type": "inline", + "contents": "{\"package\": \"9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e\", \"files\": {}}", + "dest": "cargo/vendor/serde-1.0.228", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde_core/serde_core-1.0.228.crate", + "sha256": "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad", + "dest": "cargo/vendor/serde_core-1.0.228" + }, + { + "type": "inline", + "contents": "{\"package\": \"41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad\", \"files\": {}}", + "dest": "cargo/vendor/serde_core-1.0.228", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde_derive/serde_derive-1.0.228.crate", + "sha256": "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79", + "dest": "cargo/vendor/serde_derive-1.0.228" + }, + { + "type": "inline", + "contents": "{\"package\": \"d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79\", \"files\": {}}", + "dest": "cargo/vendor/serde_derive-1.0.228", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde_json/serde_json-1.0.149.crate", + "sha256": "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86", + "dest": "cargo/vendor/serde_json-1.0.149" + }, + { + "type": "inline", + "contents": "{\"package\": \"83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86\", \"files\": {}}", + "dest": "cargo/vendor/serde_json-1.0.149", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde_repr/serde_repr-0.1.20.crate", + "sha256": "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c", + "dest": "cargo/vendor/serde_repr-0.1.20" + }, + { + "type": "inline", + "contents": "{\"package\": \"175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c\", \"files\": {}}", + "dest": "cargo/vendor/serde_repr-0.1.20", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde_urlencoded/serde_urlencoded-0.7.1.crate", + "sha256": "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd", + "dest": "cargo/vendor/serde_urlencoded-0.7.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd\", \"files\": {}}", + "dest": "cargo/vendor/serde_urlencoded-0.7.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/sha1_smol/sha1_smol-1.0.1.crate", + "sha256": "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d", + "dest": "cargo/vendor/sha1_smol-1.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d\", \"files\": {}}", + "dest": "cargo/vendor/sha1_smol-1.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/sha2/sha2-0.10.9.crate", + "sha256": "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283", + "dest": "cargo/vendor/sha2-0.10.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283\", \"files\": {}}", + "dest": "cargo/vendor/sha2-0.10.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/sha2/sha2-0.11.0.crate", + "sha256": "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4", + "dest": "cargo/vendor/sha2-0.11.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4\", \"files\": {}}", + "dest": "cargo/vendor/sha2-0.11.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/sharded-slab/sharded-slab-0.1.7.crate", + "sha256": "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6", + "dest": "cargo/vendor/sharded-slab-0.1.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6\", \"files\": {}}", + "dest": "cargo/vendor/sharded-slab-0.1.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/shlex/shlex-1.3.0.crate", + "sha256": "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64", + "dest": "cargo/vendor/shlex-1.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64\", \"files\": {}}", + "dest": "cargo/vendor/shlex-1.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/shuttle/shuttle-0.8.1.crate", + "sha256": "2ab17edba38d63047f46780cf7360acf7467fec2c048928689a5c1dd1c2b4e31", + "dest": "cargo/vendor/shuttle-0.8.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"2ab17edba38d63047f46780cf7360acf7467fec2c048928689a5c1dd1c2b4e31\", \"files\": {}}", + "dest": "cargo/vendor/shuttle-0.8.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/signal-hook/signal-hook-0.3.18.crate", + "sha256": "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2", + "dest": "cargo/vendor/signal-hook-0.3.18" + }, + { + "type": "inline", + "contents": "{\"package\": \"d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2\", \"files\": {}}", + "dest": "cargo/vendor/signal-hook-0.3.18", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/signal-hook-mio/signal-hook-mio-0.2.5.crate", + "sha256": "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc", + "dest": "cargo/vendor/signal-hook-mio-0.2.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc\", \"files\": {}}", + "dest": "cargo/vendor/signal-hook-mio-0.2.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/signal-hook-registry/signal-hook-registry-1.4.8.crate", + "sha256": "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b", + "dest": "cargo/vendor/signal-hook-registry-1.4.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b\", \"files\": {}}", + "dest": "cargo/vendor/signal-hook-registry-1.4.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/simd_cesu8/simd_cesu8-1.1.1.crate", + "sha256": "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33", + "dest": "cargo/vendor/simd_cesu8-1.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33\", \"files\": {}}", + "dest": "cargo/vendor/simd_cesu8-1.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/simdutf8/simdutf8-0.1.5.crate", + "sha256": "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e", + "dest": "cargo/vendor/simdutf8-0.1.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e\", \"files\": {}}", + "dest": "cargo/vendor/simdutf8-0.1.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/simsimd/simsimd-6.5.16.crate", + "sha256": "f4fb3bc3cdce07a7d7d4caa4c54f8aa967f6be41690482b54b24100a2253fa70", + "dest": "cargo/vendor/simsimd-6.5.16" + }, + { + "type": "inline", + "contents": "{\"package\": \"f4fb3bc3cdce07a7d7d4caa4c54f8aa967f6be41690482b54b24100a2253fa70\", \"files\": {}}", + "dest": "cargo/vendor/simsimd-6.5.16", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/siphasher/siphasher-1.0.3.crate", + "sha256": "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649", + "dest": "cargo/vendor/siphasher-1.0.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649\", \"files\": {}}", + "dest": "cargo/vendor/siphasher-1.0.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/sketches-ddsketch/sketches-ddsketch-0.4.0.crate", + "sha256": "05e40b6cf54d988dc1a2223531b969c9a9e30906ad90ef64890c27b4bfbb46ea", + "dest": "cargo/vendor/sketches-ddsketch-0.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"05e40b6cf54d988dc1a2223531b969c9a9e30906ad90ef64890c27b4bfbb46ea\", \"files\": {}}", + "dest": "cargo/vendor/sketches-ddsketch-0.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/slab/slab-0.4.12.crate", + "sha256": "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5", + "dest": "cargo/vendor/slab-0.4.12" + }, + { + "type": "inline", + "contents": "{\"package\": \"0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5\", \"files\": {}}", + "dest": "cargo/vendor/slab-0.4.12", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/smallvec/smallvec-1.15.1.crate", + "sha256": "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03", + "dest": "cargo/vendor/smallvec-1.15.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03\", \"files\": {}}", + "dest": "cargo/vendor/smallvec-1.15.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/socket2/socket2-0.6.3.crate", + "sha256": "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e", + "dest": "cargo/vendor/socket2-0.6.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e\", \"files\": {}}", + "dest": "cargo/vendor/socket2-0.6.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/softaes/softaes-0.1.3.crate", + "sha256": "fef461faaeb36c340b6c887167a9054a034f6acfc50a014ead26a02b4356b3de", + "dest": "cargo/vendor/softaes-0.1.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"fef461faaeb36c340b6c887167a9054a034f6acfc50a014ead26a02b4356b3de\", \"files\": {}}", + "dest": "cargo/vendor/softaes-0.1.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/stable_deref_trait/stable_deref_trait-1.2.1.crate", + "sha256": "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596", + "dest": "cargo/vendor/stable_deref_trait-1.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596\", \"files\": {}}", + "dest": "cargo/vendor/stable_deref_trait-1.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/strsim/strsim-0.11.1.crate", + "sha256": "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f", + "dest": "cargo/vendor/strsim-0.11.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f\", \"files\": {}}", + "dest": "cargo/vendor/strsim-0.11.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/strum/strum-0.26.3.crate", + "sha256": "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06", + "dest": "cargo/vendor/strum-0.26.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06\", \"files\": {}}", + "dest": "cargo/vendor/strum-0.26.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/strum_macros/strum_macros-0.26.4.crate", + "sha256": "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be", + "dest": "cargo/vendor/strum_macros-0.26.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be\", \"files\": {}}", + "dest": "cargo/vendor/strum_macros-0.26.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/subtle/subtle-2.6.1.crate", + "sha256": "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292", + "dest": "cargo/vendor/subtle-2.6.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292\", \"files\": {}}", + "dest": "cargo/vendor/subtle-2.6.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/supports-color/supports-color-2.1.0.crate", + "sha256": "d6398cde53adc3c4557306a96ce67b302968513830a77a95b2b17305d9719a89", + "dest": "cargo/vendor/supports-color-2.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d6398cde53adc3c4557306a96ce67b302968513830a77a95b2b17305d9719a89\", \"files\": {}}", + "dest": "cargo/vendor/supports-color-2.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/supports-color/supports-color-3.0.2.crate", + "sha256": "c64fc7232dd8d2e4ac5ce4ef302b1d81e0b80d055b9d77c7c4f51f6aa4c867d6", + "dest": "cargo/vendor/supports-color-3.0.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"c64fc7232dd8d2e4ac5ce4ef302b1d81e0b80d055b9d77c7c4f51f6aa4c867d6\", \"files\": {}}", + "dest": "cargo/vendor/supports-color-3.0.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/symlink/symlink-0.1.0.crate", + "sha256": "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a", + "dest": "cargo/vendor/symlink-0.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a\", \"files\": {}}", + "dest": "cargo/vendor/symlink-0.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/syn/syn-2.0.117.crate", + "sha256": "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99", + "dest": "cargo/vendor/syn-2.0.117" + }, + { + "type": "inline", + "contents": "{\"package\": \"e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99\", \"files\": {}}", + "dest": "cargo/vendor/syn-2.0.117", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/sync_wrapper/sync_wrapper-1.0.2.crate", + "sha256": "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263", + "dest": "cargo/vendor/sync_wrapper-1.0.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263\", \"files\": {}}", + "dest": "cargo/vendor/sync_wrapper-1.0.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/synstructure/synstructure-0.13.2.crate", + "sha256": "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2", + "dest": "cargo/vendor/synstructure-0.13.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2\", \"files\": {}}", + "dest": "cargo/vendor/synstructure-0.13.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tantivy/tantivy-0.26.1.crate", + "sha256": "edde6a10743fff00a4e1a8c9ef020bf5f3cbad301b7d2d39f2b07f123c4eac07", + "dest": "cargo/vendor/tantivy-0.26.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"edde6a10743fff00a4e1a8c9ef020bf5f3cbad301b7d2d39f2b07f123c4eac07\", \"files\": {}}", + "dest": "cargo/vendor/tantivy-0.26.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tantivy-bitpacker/tantivy-bitpacker-0.10.0.crate", + "sha256": "4fed3d674429bcd2de5d0a6d1aa5495fed8afd9c5ecce993019caf7615f53fa4", + "dest": "cargo/vendor/tantivy-bitpacker-0.10.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"4fed3d674429bcd2de5d0a6d1aa5495fed8afd9c5ecce993019caf7615f53fa4\", \"files\": {}}", + "dest": "cargo/vendor/tantivy-bitpacker-0.10.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tantivy-columnar/tantivy-columnar-0.7.0.crate", + "sha256": "c57166f5bcfd478f370ab8445afb4678dce44801fa5ce5c451aaf8595583c5dc", + "dest": "cargo/vendor/tantivy-columnar-0.7.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"c57166f5bcfd478f370ab8445afb4678dce44801fa5ce5c451aaf8595583c5dc\", \"files\": {}}", + "dest": "cargo/vendor/tantivy-columnar-0.7.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tantivy-common/tantivy-common-0.11.0.crate", + "sha256": "bbf10915aa75da3c3b0d58b58853d2e889efbaf32d4982a4c3715dde6bba23e5", + "dest": "cargo/vendor/tantivy-common-0.11.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"bbf10915aa75da3c3b0d58b58853d2e889efbaf32d4982a4c3715dde6bba23e5\", \"files\": {}}", + "dest": "cargo/vendor/tantivy-common-0.11.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tantivy-fst/tantivy-fst-0.5.0.crate", + "sha256": "d60769b80ad7953d8a7b2c70cdfe722bbcdcac6bccc8ac934c40c034d866fc18", + "dest": "cargo/vendor/tantivy-fst-0.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d60769b80ad7953d8a7b2c70cdfe722bbcdcac6bccc8ac934c40c034d866fc18\", \"files\": {}}", + "dest": "cargo/vendor/tantivy-fst-0.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tantivy-query-grammar/tantivy-query-grammar-0.26.0.crate", + "sha256": "dfadb8526b6da90704feb293b0701a6aae62ea14983143344be2dc5ce30f1d82", + "dest": "cargo/vendor/tantivy-query-grammar-0.26.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"dfadb8526b6da90704feb293b0701a6aae62ea14983143344be2dc5ce30f1d82\", \"files\": {}}", + "dest": "cargo/vendor/tantivy-query-grammar-0.26.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tantivy-sstable/tantivy-sstable-0.7.0.crate", + "sha256": "8a2cfc3ac5164cbadc28965ffb145a8f47582a60ae5897859ad8d4316596c606", + "dest": "cargo/vendor/tantivy-sstable-0.7.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"8a2cfc3ac5164cbadc28965ffb145a8f47582a60ae5897859ad8d4316596c606\", \"files\": {}}", + "dest": "cargo/vendor/tantivy-sstable-0.7.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tantivy-stacker/tantivy-stacker-0.7.0.crate", + "sha256": "6cbb051742da9d53ca9e8fff43a9b10e319338b24e2c0e15d0372df19ffeb951", + "dest": "cargo/vendor/tantivy-stacker-0.7.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"6cbb051742da9d53ca9e8fff43a9b10e319338b24e2c0e15d0372df19ffeb951\", \"files\": {}}", + "dest": "cargo/vendor/tantivy-stacker-0.7.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tantivy-tokenizer-api/tantivy-tokenizer-api-0.7.0.crate", + "sha256": "eac258c2c6390673f2685813afeeafcb8c4e0ee7de8dd3fc46838dcc37263f98", + "dest": "cargo/vendor/tantivy-tokenizer-api-0.7.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"eac258c2c6390673f2685813afeeafcb8c4e0ee7de8dd3fc46838dcc37263f98\", \"files\": {}}", + "dest": "cargo/vendor/tantivy-tokenizer-api-0.7.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tap/tap-1.0.1.crate", + "sha256": "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369", + "dest": "cargo/vendor/tap-1.0.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369\", \"files\": {}}", + "dest": "cargo/vendor/tap-1.0.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tempfile/tempfile-3.27.0.crate", + "sha256": "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd", + "dest": "cargo/vendor/tempfile-3.27.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd\", \"files\": {}}", + "dest": "cargo/vendor/tempfile-3.27.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/thiserror/thiserror-2.0.18.crate", + "sha256": "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4", + "dest": "cargo/vendor/thiserror-2.0.18" + }, + { + "type": "inline", + "contents": "{\"package\": \"4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4\", \"files\": {}}", + "dest": "cargo/vendor/thiserror-2.0.18", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/thiserror-impl/thiserror-impl-2.0.18.crate", + "sha256": "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5", + "dest": "cargo/vendor/thiserror-impl-2.0.18" + }, + { + "type": "inline", + "contents": "{\"package\": \"ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5\", \"files\": {}}", + "dest": "cargo/vendor/thiserror-impl-2.0.18", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/thread_local/thread_local-1.1.9.crate", + "sha256": "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185", + "dest": "cargo/vendor/thread_local-1.1.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185\", \"files\": {}}", + "dest": "cargo/vendor/thread_local-1.1.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/time/time-0.3.47.crate", + "sha256": "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c", + "dest": "cargo/vendor/time-0.3.47" + }, + { + "type": "inline", + "contents": "{\"package\": \"743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c\", \"files\": {}}", + "dest": "cargo/vendor/time-0.3.47", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/time-core/time-core-0.1.8.crate", + "sha256": "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca", + "dest": "cargo/vendor/time-core-0.1.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca\", \"files\": {}}", + "dest": "cargo/vendor/time-core-0.1.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/time-macros/time-macros-0.2.27.crate", + "sha256": "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215", + "dest": "cargo/vendor/time-macros-0.2.27" + }, + { + "type": "inline", + "contents": "{\"package\": \"2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215\", \"files\": {}}", + "dest": "cargo/vendor/time-macros-0.2.27", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tinystr/tinystr-0.8.3.crate", + "sha256": "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d", + "dest": "cargo/vendor/tinystr-0.8.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d\", \"files\": {}}", + "dest": "cargo/vendor/tinystr-0.8.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tinyvec/tinyvec-1.11.0.crate", + "sha256": "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3", + "dest": "cargo/vendor/tinyvec-1.11.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3\", \"files\": {}}", + "dest": "cargo/vendor/tinyvec-1.11.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tinyvec_macros/tinyvec_macros-0.1.1.crate", + "sha256": "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20", + "dest": "cargo/vendor/tinyvec_macros-0.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20\", \"files\": {}}", + "dest": "cargo/vendor/tinyvec_macros-0.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tokio/tokio-1.52.3.crate", + "sha256": "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe", + "dest": "cargo/vendor/tokio-1.52.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe\", \"files\": {}}", + "dest": "cargo/vendor/tokio-1.52.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tokio-rustls/tokio-rustls-0.26.4.crate", + "sha256": "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61", + "dest": "cargo/vendor/tokio-rustls-0.26.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61\", \"files\": {}}", + "dest": "cargo/vendor/tokio-rustls-0.26.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tokio-util/tokio-util-0.7.18.crate", + "sha256": "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098", + "dest": "cargo/vendor/tokio-util-0.7.18" + }, + { + "type": "inline", + "contents": "{\"package\": \"9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098\", \"files\": {}}", + "dest": "cargo/vendor/tokio-util-0.7.18", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/toml_datetime/toml_datetime-1.1.1+spec-1.1.0.crate", + "sha256": "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7", + "dest": "cargo/vendor/toml_datetime-1.1.1+spec-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7\", \"files\": {}}", + "dest": "cargo/vendor/toml_datetime-1.1.1+spec-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/toml_edit/toml_edit-0.25.12+spec-1.1.0.crate", + "sha256": "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7", + "dest": "cargo/vendor/toml_edit-0.25.12+spec-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7\", \"files\": {}}", + "dest": "cargo/vendor/toml_edit-0.25.12+spec-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/toml_parser/toml_parser-1.1.2+spec-1.1.0.crate", + "sha256": "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526", + "dest": "cargo/vendor/toml_parser-1.1.2+spec-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526\", \"files\": {}}", + "dest": "cargo/vendor/toml_parser-1.1.2+spec-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tower/tower-0.5.3.crate", + "sha256": "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4", + "dest": "cargo/vendor/tower-0.5.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4\", \"files\": {}}", + "dest": "cargo/vendor/tower-0.5.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tower-http/tower-http-0.6.10.crate", + "sha256": "68d6fdd9f81c2819c9a8b0e0cd91660e7746a8e6ea2ba7c6b2b057985f6bcb51", + "dest": "cargo/vendor/tower-http-0.6.10" + }, + { + "type": "inline", + "contents": "{\"package\": \"68d6fdd9f81c2819c9a8b0e0cd91660e7746a8e6ea2ba7c6b2b057985f6bcb51\", \"files\": {}}", + "dest": "cargo/vendor/tower-http-0.6.10", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tower-layer/tower-layer-0.3.3.crate", + "sha256": "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e", + "dest": "cargo/vendor/tower-layer-0.3.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e\", \"files\": {}}", + "dest": "cargo/vendor/tower-layer-0.3.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tower-service/tower-service-0.3.3.crate", + "sha256": "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3", + "dest": "cargo/vendor/tower-service-0.3.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3\", \"files\": {}}", + "dest": "cargo/vendor/tower-service-0.3.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tracing/tracing-0.1.44.crate", + "sha256": "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100", + "dest": "cargo/vendor/tracing-0.1.44" + }, + { + "type": "inline", + "contents": "{\"package\": \"63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100\", \"files\": {}}", + "dest": "cargo/vendor/tracing-0.1.44", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tracing-appender/tracing-appender-0.2.5.crate", + "sha256": "050686193eb999b4bb3bc2acfa891a13da00f79734704c4b8b4ef1a10b368a3c", + "dest": "cargo/vendor/tracing-appender-0.2.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"050686193eb999b4bb3bc2acfa891a13da00f79734704c4b8b4ef1a10b368a3c\", \"files\": {}}", + "dest": "cargo/vendor/tracing-appender-0.2.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tracing-attributes/tracing-attributes-0.1.31.crate", + "sha256": "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da", + "dest": "cargo/vendor/tracing-attributes-0.1.31" + }, + { + "type": "inline", + "contents": "{\"package\": \"7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da\", \"files\": {}}", + "dest": "cargo/vendor/tracing-attributes-0.1.31", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tracing-core/tracing-core-0.1.36.crate", + "sha256": "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a", + "dest": "cargo/vendor/tracing-core-0.1.36" + }, + { + "type": "inline", + "contents": "{\"package\": \"db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a\", \"files\": {}}", + "dest": "cargo/vendor/tracing-core-0.1.36", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tracing-log/tracing-log-0.2.0.crate", + "sha256": "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3", + "dest": "cargo/vendor/tracing-log-0.2.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3\", \"files\": {}}", + "dest": "cargo/vendor/tracing-log-0.2.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tracing-subscriber/tracing-subscriber-0.3.23.crate", + "sha256": "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319", + "dest": "cargo/vendor/tracing-subscriber-0.3.23" + }, + { + "type": "inline", + "contents": "{\"package\": \"cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319\", \"files\": {}}", + "dest": "cargo/vendor/tracing-subscriber-0.3.23", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/try-lock/try-lock-0.2.5.crate", + "sha256": "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b", + "dest": "cargo/vendor/try-lock-0.2.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b\", \"files\": {}}", + "dest": "cargo/vendor/try-lock-0.2.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/twox-hash/twox-hash-2.1.2.crate", + "sha256": "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c", + "dest": "cargo/vendor/twox-hash-2.1.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c\", \"files\": {}}", + "dest": "cargo/vendor/twox-hash-2.1.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/typeid/typeid-1.0.3.crate", + "sha256": "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c", + "dest": "cargo/vendor/typeid-1.0.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c\", \"files\": {}}", + "dest": "cargo/vendor/typeid-1.0.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/typenum/typenum-1.20.0.crate", + "sha256": "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de", + "dest": "cargo/vendor/typenum-1.20.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de\", \"files\": {}}", + "dest": "cargo/vendor/typenum-1.20.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/typetag/typetag-0.2.21.crate", + "sha256": "be2212c8a9b9bcfca32024de14998494cf9a5dfa59ea1b829de98bac374b86bf", + "dest": "cargo/vendor/typetag-0.2.21" + }, + { + "type": "inline", + "contents": "{\"package\": \"be2212c8a9b9bcfca32024de14998494cf9a5dfa59ea1b829de98bac374b86bf\", \"files\": {}}", + "dest": "cargo/vendor/typetag-0.2.21", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/typetag-impl/typetag-impl-0.2.21.crate", + "sha256": "27a7a9b72ba121f6f1f6c3632b85604cac41aedb5ddc70accbebb6cac83de846", + "dest": "cargo/vendor/typetag-impl-0.2.21" + }, + { + "type": "inline", + "contents": "{\"package\": \"27a7a9b72ba121f6f1f6c3632b85604cac41aedb5ddc70accbebb6cac83de846\", \"files\": {}}", + "dest": "cargo/vendor/typetag-impl-0.2.21", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/uds_windows/uds_windows-1.2.1.crate", + "sha256": "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e", + "dest": "cargo/vendor/uds_windows-1.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e\", \"files\": {}}", + "dest": "cargo/vendor/uds_windows-1.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/uncased/uncased-0.9.10.crate", + "sha256": "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697", + "dest": "cargo/vendor/uncased-0.9.10" + }, + { + "type": "inline", + "contents": "{\"package\": \"e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697\", \"files\": {}}", + "dest": "cargo/vendor/uncased-0.9.10", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicode-general-category/unicode-general-category-1.1.0.crate", + "sha256": "0b993bddc193ae5bd0d623b49ec06ac3e9312875fdae725a975c51db1cc1677f", + "dest": "cargo/vendor/unicode-general-category-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"0b993bddc193ae5bd0d623b49ec06ac3e9312875fdae725a975c51db1cc1677f\", \"files\": {}}", + "dest": "cargo/vendor/unicode-general-category-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicode-ident/unicode-ident-1.0.24.crate", + "sha256": "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75", + "dest": "cargo/vendor/unicode-ident-1.0.24" + }, + { + "type": "inline", + "contents": "{\"package\": \"e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75\", \"files\": {}}", + "dest": "cargo/vendor/unicode-ident-1.0.24", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicode-segmentation/unicode-segmentation-1.13.2.crate", + "sha256": "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c", + "dest": "cargo/vendor/unicode-segmentation-1.13.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c\", \"files\": {}}", + "dest": "cargo/vendor/unicode-segmentation-1.13.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicode-width/unicode-width-0.1.14.crate", + "sha256": "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af", + "dest": "cargo/vendor/unicode-width-0.1.14" + }, + { + "type": "inline", + "contents": "{\"package\": \"7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af\", \"files\": {}}", + "dest": "cargo/vendor/unicode-width-0.1.14", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicode-width/unicode-width-0.2.2.crate", + "sha256": "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254", + "dest": "cargo/vendor/unicode-width-0.2.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254\", \"files\": {}}", + "dest": "cargo/vendor/unicode-width-0.2.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/unicode-xid/unicode-xid-0.2.6.crate", + "sha256": "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853", + "dest": "cargo/vendor/unicode-xid-0.2.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853\", \"files\": {}}", + "dest": "cargo/vendor/unicode-xid-0.2.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/universal-hash/universal-hash-0.5.1.crate", + "sha256": "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea", + "dest": "cargo/vendor/universal-hash-0.5.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea\", \"files\": {}}", + "dest": "cargo/vendor/universal-hash-0.5.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/untrusted/untrusted-0.9.0.crate", + "sha256": "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1", + "dest": "cargo/vendor/untrusted-0.9.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1\", \"files\": {}}", + "dest": "cargo/vendor/untrusted-0.9.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/url/url-2.5.8.crate", + "sha256": "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed", + "dest": "cargo/vendor/url-2.5.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed\", \"files\": {}}", + "dest": "cargo/vendor/url-2.5.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/utf16_iter/utf16_iter-1.0.5.crate", + "sha256": "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246", + "dest": "cargo/vendor/utf16_iter-1.0.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246\", \"files\": {}}", + "dest": "cargo/vendor/utf16_iter-1.0.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/utf8-ranges/utf8-ranges-1.0.5.crate", + "sha256": "7fcfc827f90e53a02eaef5e535ee14266c1d569214c6aa70133a624d8a3164ba", + "dest": "cargo/vendor/utf8-ranges-1.0.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"7fcfc827f90e53a02eaef5e535ee14266c1d569214c6aa70133a624d8a3164ba\", \"files\": {}}", + "dest": "cargo/vendor/utf8-ranges-1.0.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/utf8_iter/utf8_iter-1.0.4.crate", + "sha256": "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be", + "dest": "cargo/vendor/utf8_iter-1.0.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be\", \"files\": {}}", + "dest": "cargo/vendor/utf8_iter-1.0.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/utf8parse/utf8parse-0.2.2.crate", + "sha256": "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821", + "dest": "cargo/vendor/utf8parse-0.2.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821\", \"files\": {}}", + "dest": "cargo/vendor/utf8parse-0.2.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/uuid/uuid-1.23.1.crate", + "sha256": "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76", + "dest": "cargo/vendor/uuid-1.23.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76\", \"files\": {}}", + "dest": "cargo/vendor/uuid-1.23.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/uuid-simd/uuid-simd-0.8.0.crate", + "sha256": "23b082222b4f6619906941c17eb2297fff4c2fb96cb60164170522942a200bd8", + "dest": "cargo/vendor/uuid-simd-0.8.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"23b082222b4f6619906941c17eb2297fff4c2fb96cb60164170522942a200bd8\", \"files\": {}}", + "dest": "cargo/vendor/uuid-simd-0.8.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/valuable/valuable-0.1.1.crate", + "sha256": "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65", + "dest": "cargo/vendor/valuable-0.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65\", \"files\": {}}", + "dest": "cargo/vendor/valuable-0.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/version_check/version_check-0.9.5.crate", + "sha256": "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a", + "dest": "cargo/vendor/version_check-0.9.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a\", \"files\": {}}", + "dest": "cargo/vendor/version_check-0.9.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/vsimd/vsimd-0.8.0.crate", + "sha256": "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64", + "dest": "cargo/vendor/vsimd-0.8.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64\", \"files\": {}}", + "dest": "cargo/vendor/vsimd-0.8.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/walkdir/walkdir-2.5.0.crate", + "sha256": "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b", + "dest": "cargo/vendor/walkdir-2.5.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b\", \"files\": {}}", + "dest": "cargo/vendor/walkdir-2.5.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/want/want-0.3.1.crate", + "sha256": "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e", + "dest": "cargo/vendor/want-0.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e\", \"files\": {}}", + "dest": "cargo/vendor/want-0.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasi/wasi-0.11.1+wasi-snapshot-preview1.crate", + "sha256": "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b", + "dest": "cargo/vendor/wasi-0.11.1+wasi-snapshot-preview1" + }, + { + "type": "inline", + "contents": "{\"package\": \"ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b\", \"files\": {}}", + "dest": "cargo/vendor/wasi-0.11.1+wasi-snapshot-preview1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasip2/wasip2-1.0.3+wasi-0.2.9.crate", + "sha256": "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6", + "dest": "cargo/vendor/wasip2-1.0.3+wasi-0.2.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6\", \"files\": {}}", + "dest": "cargo/vendor/wasip2-1.0.3+wasi-0.2.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasip3/wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06.crate", + "sha256": "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5", + "dest": "cargo/vendor/wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06" + }, + { + "type": "inline", + "contents": "{\"package\": \"5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5\", \"files\": {}}", + "dest": "cargo/vendor/wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasm-bindgen/wasm-bindgen-0.2.121.crate", + "sha256": "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790", + "dest": "cargo/vendor/wasm-bindgen-0.2.121" + }, + { + "type": "inline", + "contents": "{\"package\": \"49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790\", \"files\": {}}", + "dest": "cargo/vendor/wasm-bindgen-0.2.121", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasm-bindgen-futures/wasm-bindgen-futures-0.4.71.crate", + "sha256": "96492d0d3ffba25305a7dc88720d250b1401d7edca02cc3bcd50633b424673b8", + "dest": "cargo/vendor/wasm-bindgen-futures-0.4.71" + }, + { + "type": "inline", + "contents": "{\"package\": \"96492d0d3ffba25305a7dc88720d250b1401d7edca02cc3bcd50633b424673b8\", \"files\": {}}", + "dest": "cargo/vendor/wasm-bindgen-futures-0.4.71", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasm-bindgen-macro/wasm-bindgen-macro-0.2.121.crate", + "sha256": "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578", + "dest": "cargo/vendor/wasm-bindgen-macro-0.2.121" + }, + { + "type": "inline", + "contents": "{\"package\": \"8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578\", \"files\": {}}", + "dest": "cargo/vendor/wasm-bindgen-macro-0.2.121", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasm-bindgen-macro-support/wasm-bindgen-macro-support-0.2.121.crate", + "sha256": "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2", + "dest": "cargo/vendor/wasm-bindgen-macro-support-0.2.121" + }, + { + "type": "inline", + "contents": "{\"package\": \"d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2\", \"files\": {}}", + "dest": "cargo/vendor/wasm-bindgen-macro-support-0.2.121", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasm-bindgen-shared/wasm-bindgen-shared-0.2.121.crate", + "sha256": "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441", + "dest": "cargo/vendor/wasm-bindgen-shared-0.2.121" + }, + { + "type": "inline", + "contents": "{\"package\": \"c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441\", \"files\": {}}", + "dest": "cargo/vendor/wasm-bindgen-shared-0.2.121", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasm-encoder/wasm-encoder-0.244.0.crate", + "sha256": "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319", + "dest": "cargo/vendor/wasm-encoder-0.244.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319\", \"files\": {}}", + "dest": "cargo/vendor/wasm-encoder-0.244.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasm-metadata/wasm-metadata-0.244.0.crate", + "sha256": "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909", + "dest": "cargo/vendor/wasm-metadata-0.244.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909\", \"files\": {}}", + "dest": "cargo/vendor/wasm-metadata-0.244.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasmparser/wasmparser-0.244.0.crate", + "sha256": "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe", + "dest": "cargo/vendor/wasmparser-0.244.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe\", \"files\": {}}", + "dest": "cargo/vendor/wasmparser-0.244.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/web-sys/web-sys-0.3.98.crate", + "sha256": "4b572dff8bcf38bad0fa19729c89bb5748b2b9b1d8be70cf90df697e3a8f32aa", + "dest": "cargo/vendor/web-sys-0.3.98" + }, + { + "type": "inline", + "contents": "{\"package\": \"4b572dff8bcf38bad0fa19729c89bb5748b2b9b1d8be70cf90df697e3a8f32aa\", \"files\": {}}", + "dest": "cargo/vendor/web-sys-0.3.98", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/web-time/web-time-1.1.0.crate", + "sha256": "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb", + "dest": "cargo/vendor/web-time-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb\", \"files\": {}}", + "dest": "cargo/vendor/web-time-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/webpki-root-certs/webpki-root-certs-1.0.7.crate", + "sha256": "f31141ce3fc3e300ae89b78c0dd67f9708061d1d2eda54b8209346fd6be9a92c", + "dest": "cargo/vendor/webpki-root-certs-1.0.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"f31141ce3fc3e300ae89b78c0dd67f9708061d1d2eda54b8209346fd6be9a92c\", \"files\": {}}", + "dest": "cargo/vendor/webpki-root-certs-1.0.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/which/which-4.4.2.crate", + "sha256": "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7", + "dest": "cargo/vendor/which-4.4.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7\", \"files\": {}}", + "dest": "cargo/vendor/which-4.4.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/winapi/winapi-0.3.9.crate", + "sha256": "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419", + "dest": "cargo/vendor/winapi-0.3.9" + }, + { + "type": "inline", + "contents": "{\"package\": \"5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419\", \"files\": {}}", + "dest": "cargo/vendor/winapi-0.3.9", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/winapi-i686-pc-windows-gnu/winapi-i686-pc-windows-gnu-0.4.0.crate", + "sha256": "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6", + "dest": "cargo/vendor/winapi-i686-pc-windows-gnu-0.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6\", \"files\": {}}", + "dest": "cargo/vendor/winapi-i686-pc-windows-gnu-0.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/winapi-util/winapi-util-0.1.11.crate", + "sha256": "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22", + "dest": "cargo/vendor/winapi-util-0.1.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22\", \"files\": {}}", + "dest": "cargo/vendor/winapi-util-0.1.11", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/winapi-x86_64-pc-windows-gnu/winapi-x86_64-pc-windows-gnu-0.4.0.crate", + "sha256": "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f", + "dest": "cargo/vendor/winapi-x86_64-pc-windows-gnu-0.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f\", \"files\": {}}", + "dest": "cargo/vendor/winapi-x86_64-pc-windows-gnu-0.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-core/windows-core-0.62.2.crate", + "sha256": "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb", + "dest": "cargo/vendor/windows-core-0.62.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb\", \"files\": {}}", + "dest": "cargo/vendor/windows-core-0.62.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-implement/windows-implement-0.60.2.crate", + "sha256": "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf", + "dest": "cargo/vendor/windows-implement-0.60.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf\", \"files\": {}}", + "dest": "cargo/vendor/windows-implement-0.60.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-interface/windows-interface-0.59.3.crate", + "sha256": "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358", + "dest": "cargo/vendor/windows-interface-0.59.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358\", \"files\": {}}", + "dest": "cargo/vendor/windows-interface-0.59.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-link/windows-link-0.2.1.crate", + "sha256": "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5", + "dest": "cargo/vendor/windows-link-0.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5\", \"files\": {}}", + "dest": "cargo/vendor/windows-link-0.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-native-keyring-store/windows-native-keyring-store-1.1.0.crate", + "sha256": "063426e76fdec7438d56bb777f67e318a84a25c707b07e575cb8b78e10c028f8", + "dest": "cargo/vendor/windows-native-keyring-store-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"063426e76fdec7438d56bb777f67e318a84a25c707b07e575cb8b78e10c028f8\", \"files\": {}}", + "dest": "cargo/vendor/windows-native-keyring-store-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-result/windows-result-0.4.1.crate", + "sha256": "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5", + "dest": "cargo/vendor/windows-result-0.4.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5\", \"files\": {}}", + "dest": "cargo/vendor/windows-result-0.4.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-strings/windows-strings-0.5.1.crate", + "sha256": "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091", + "dest": "cargo/vendor/windows-strings-0.5.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091\", \"files\": {}}", + "dest": "cargo/vendor/windows-strings-0.5.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-sys/windows-sys-0.52.0.crate", + "sha256": "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d", + "dest": "cargo/vendor/windows-sys-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d\", \"files\": {}}", + "dest": "cargo/vendor/windows-sys-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-sys/windows-sys-0.59.0.crate", + "sha256": "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b", + "dest": "cargo/vendor/windows-sys-0.59.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b\", \"files\": {}}", + "dest": "cargo/vendor/windows-sys-0.59.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-sys/windows-sys-0.60.2.crate", + "sha256": "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb", + "dest": "cargo/vendor/windows-sys-0.60.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb\", \"files\": {}}", + "dest": "cargo/vendor/windows-sys-0.60.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-sys/windows-sys-0.61.2.crate", + "sha256": "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc", + "dest": "cargo/vendor/windows-sys-0.61.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc\", \"files\": {}}", + "dest": "cargo/vendor/windows-sys-0.61.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-targets/windows-targets-0.52.6.crate", + "sha256": "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973", + "dest": "cargo/vendor/windows-targets-0.52.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973\", \"files\": {}}", + "dest": "cargo/vendor/windows-targets-0.52.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-targets/windows-targets-0.53.5.crate", + "sha256": "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3", + "dest": "cargo/vendor/windows-targets-0.53.5" + }, + { + "type": "inline", + "contents": "{\"package\": \"4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3\", \"files\": {}}", + "dest": "cargo/vendor/windows-targets-0.53.5", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_aarch64_gnullvm/windows_aarch64_gnullvm-0.52.6.crate", + "sha256": "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3", + "dest": "cargo/vendor/windows_aarch64_gnullvm-0.52.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3\", \"files\": {}}", + "dest": "cargo/vendor/windows_aarch64_gnullvm-0.52.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_aarch64_gnullvm/windows_aarch64_gnullvm-0.53.1.crate", + "sha256": "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53", + "dest": "cargo/vendor/windows_aarch64_gnullvm-0.53.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53\", \"files\": {}}", + "dest": "cargo/vendor/windows_aarch64_gnullvm-0.53.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_aarch64_msvc/windows_aarch64_msvc-0.52.6.crate", + "sha256": "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469", + "dest": "cargo/vendor/windows_aarch64_msvc-0.52.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469\", \"files\": {}}", + "dest": "cargo/vendor/windows_aarch64_msvc-0.52.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_aarch64_msvc/windows_aarch64_msvc-0.53.1.crate", + "sha256": "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006", + "dest": "cargo/vendor/windows_aarch64_msvc-0.53.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006\", \"files\": {}}", + "dest": "cargo/vendor/windows_aarch64_msvc-0.53.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_i686_gnu/windows_i686_gnu-0.52.6.crate", + "sha256": "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b", + "dest": "cargo/vendor/windows_i686_gnu-0.52.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b\", \"files\": {}}", + "dest": "cargo/vendor/windows_i686_gnu-0.52.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_i686_gnu/windows_i686_gnu-0.53.1.crate", + "sha256": "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3", + "dest": "cargo/vendor/windows_i686_gnu-0.53.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3\", \"files\": {}}", + "dest": "cargo/vendor/windows_i686_gnu-0.53.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_i686_gnullvm/windows_i686_gnullvm-0.52.6.crate", + "sha256": "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66", + "dest": "cargo/vendor/windows_i686_gnullvm-0.52.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66\", \"files\": {}}", + "dest": "cargo/vendor/windows_i686_gnullvm-0.52.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_i686_gnullvm/windows_i686_gnullvm-0.53.1.crate", + "sha256": "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c", + "dest": "cargo/vendor/windows_i686_gnullvm-0.53.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c\", \"files\": {}}", + "dest": "cargo/vendor/windows_i686_gnullvm-0.53.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_i686_msvc/windows_i686_msvc-0.52.6.crate", + "sha256": "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66", + "dest": "cargo/vendor/windows_i686_msvc-0.52.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66\", \"files\": {}}", + "dest": "cargo/vendor/windows_i686_msvc-0.52.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_i686_msvc/windows_i686_msvc-0.53.1.crate", + "sha256": "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2", + "dest": "cargo/vendor/windows_i686_msvc-0.53.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2\", \"files\": {}}", + "dest": "cargo/vendor/windows_i686_msvc-0.53.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_gnu/windows_x86_64_gnu-0.52.6.crate", + "sha256": "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78", + "dest": "cargo/vendor/windows_x86_64_gnu-0.52.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_gnu-0.52.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_gnu/windows_x86_64_gnu-0.53.1.crate", + "sha256": "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499", + "dest": "cargo/vendor/windows_x86_64_gnu-0.53.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_gnu-0.53.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_gnullvm/windows_x86_64_gnullvm-0.52.6.crate", + "sha256": "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d", + "dest": "cargo/vendor/windows_x86_64_gnullvm-0.52.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_gnullvm-0.52.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_gnullvm/windows_x86_64_gnullvm-0.53.1.crate", + "sha256": "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1", + "dest": "cargo/vendor/windows_x86_64_gnullvm-0.53.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_gnullvm-0.53.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_msvc/windows_x86_64_msvc-0.52.6.crate", + "sha256": "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec", + "dest": "cargo/vendor/windows_x86_64_msvc-0.52.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_msvc-0.52.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows_x86_64_msvc/windows_x86_64_msvc-0.53.1.crate", + "sha256": "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650", + "dest": "cargo/vendor/windows_x86_64_msvc-0.53.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650\", \"files\": {}}", + "dest": "cargo/vendor/windows_x86_64_msvc-0.53.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/winnow/winnow-1.0.3.crate", + "sha256": "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1", + "dest": "cargo/vendor/winnow-1.0.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1\", \"files\": {}}", + "dest": "cargo/vendor/winnow-1.0.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wit-bindgen/wit-bindgen-0.51.0.crate", + "sha256": "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5", + "dest": "cargo/vendor/wit-bindgen-0.51.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5\", \"files\": {}}", + "dest": "cargo/vendor/wit-bindgen-0.51.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wit-bindgen/wit-bindgen-0.57.1.crate", + "sha256": "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e", + "dest": "cargo/vendor/wit-bindgen-0.57.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e\", \"files\": {}}", + "dest": "cargo/vendor/wit-bindgen-0.57.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wit-bindgen-core/wit-bindgen-core-0.51.0.crate", + "sha256": "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc", + "dest": "cargo/vendor/wit-bindgen-core-0.51.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc\", \"files\": {}}", + "dest": "cargo/vendor/wit-bindgen-core-0.51.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wit-bindgen-rust/wit-bindgen-rust-0.51.0.crate", + "sha256": "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21", + "dest": "cargo/vendor/wit-bindgen-rust-0.51.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21\", \"files\": {}}", + "dest": "cargo/vendor/wit-bindgen-rust-0.51.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wit-bindgen-rust-macro/wit-bindgen-rust-macro-0.51.0.crate", + "sha256": "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a", + "dest": "cargo/vendor/wit-bindgen-rust-macro-0.51.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a\", \"files\": {}}", + "dest": "cargo/vendor/wit-bindgen-rust-macro-0.51.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wit-component/wit-component-0.244.0.crate", + "sha256": "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2", + "dest": "cargo/vendor/wit-component-0.244.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2\", \"files\": {}}", + "dest": "cargo/vendor/wit-component-0.244.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wit-parser/wit-parser-0.244.0.crate", + "sha256": "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736", + "dest": "cargo/vendor/wit-parser-0.244.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736\", \"files\": {}}", + "dest": "cargo/vendor/wit-parser-0.244.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/write16/write16-1.0.0.crate", + "sha256": "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936", + "dest": "cargo/vendor/write16-1.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936\", \"files\": {}}", + "dest": "cargo/vendor/write16-1.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/writeable/writeable-0.6.3.crate", + "sha256": "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4", + "dest": "cargo/vendor/writeable-0.6.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4\", \"files\": {}}", + "dest": "cargo/vendor/writeable-0.6.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wyz/wyz-0.5.1.crate", + "sha256": "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed", + "dest": "cargo/vendor/wyz-0.5.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed\", \"files\": {}}", + "dest": "cargo/vendor/wyz-0.5.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/yoke/yoke-0.8.2.crate", + "sha256": "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca", + "dest": "cargo/vendor/yoke-0.8.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca\", \"files\": {}}", + "dest": "cargo/vendor/yoke-0.8.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/yoke-derive/yoke-derive-0.8.2.crate", + "sha256": "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e", + "dest": "cargo/vendor/yoke-derive-0.8.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e\", \"files\": {}}", + "dest": "cargo/vendor/yoke-derive-0.8.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zbus/zbus-5.15.0.crate", + "sha256": "c3bcbf15c8708d7fc1be0c993622e0a5cbd5e8b52bfa40afa4c3e0cd8d724ac1", + "dest": "cargo/vendor/zbus-5.15.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"c3bcbf15c8708d7fc1be0c993622e0a5cbd5e8b52bfa40afa4c3e0cd8d724ac1\", \"files\": {}}", + "dest": "cargo/vendor/zbus-5.15.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zbus-secret-service-keyring-store/zbus-secret-service-keyring-store-1.0.0.crate", + "sha256": "4ccede190ba363386a24e8021c7f3848393976609ec9f5d1f8c6c09ef37075b4", + "dest": "cargo/vendor/zbus-secret-service-keyring-store-1.0.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"4ccede190ba363386a24e8021c7f3848393976609ec9f5d1f8c6c09ef37075b4\", \"files\": {}}", + "dest": "cargo/vendor/zbus-secret-service-keyring-store-1.0.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zbus_macros/zbus_macros-5.15.0.crate", + "sha256": "51fa5406ad9175a8c825a931f8cf347116b531b3634fcb0b627c290f1f2516ff", + "dest": "cargo/vendor/zbus_macros-5.15.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"51fa5406ad9175a8c825a931f8cf347116b531b3634fcb0b627c290f1f2516ff\", \"files\": {}}", + "dest": "cargo/vendor/zbus_macros-5.15.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zbus_names/zbus_names-4.3.2.crate", + "sha256": "7074f3e50b894eac91750142016d30d0a89be8e67dbfd9704fb875825760e52d", + "dest": "cargo/vendor/zbus_names-4.3.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"7074f3e50b894eac91750142016d30d0a89be8e67dbfd9704fb875825760e52d\", \"files\": {}}", + "dest": "cargo/vendor/zbus_names-4.3.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zerocopy/zerocopy-0.8.48.crate", + "sha256": "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9", + "dest": "cargo/vendor/zerocopy-0.8.48" + }, + { + "type": "inline", + "contents": "{\"package\": \"eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9\", \"files\": {}}", + "dest": "cargo/vendor/zerocopy-0.8.48", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zerocopy-derive/zerocopy-derive-0.8.48.crate", + "sha256": "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4", + "dest": "cargo/vendor/zerocopy-derive-0.8.48" + }, + { + "type": "inline", + "contents": "{\"package\": \"70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4\", \"files\": {}}", + "dest": "cargo/vendor/zerocopy-derive-0.8.48", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zerofrom/zerofrom-0.1.8.crate", + "sha256": "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272", + "dest": "cargo/vendor/zerofrom-0.1.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272\", \"files\": {}}", + "dest": "cargo/vendor/zerofrom-0.1.8", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zerofrom-derive/zerofrom-derive-0.1.7.crate", + "sha256": "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1", + "dest": "cargo/vendor/zerofrom-derive-0.1.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1\", \"files\": {}}", + "dest": "cargo/vendor/zerofrom-derive-0.1.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zeroize/zeroize-1.8.2.crate", + "sha256": "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0", + "dest": "cargo/vendor/zeroize-1.8.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0\", \"files\": {}}", + "dest": "cargo/vendor/zeroize-1.8.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zerotrie/zerotrie-0.2.4.crate", + "sha256": "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf", + "dest": "cargo/vendor/zerotrie-0.2.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf\", \"files\": {}}", + "dest": "cargo/vendor/zerotrie-0.2.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zerovec/zerovec-0.11.6.crate", + "sha256": "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239", + "dest": "cargo/vendor/zerovec-0.11.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239\", \"files\": {}}", + "dest": "cargo/vendor/zerovec-0.11.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zerovec-derive/zerovec-derive-0.11.3.crate", + "sha256": "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555", + "dest": "cargo/vendor/zerovec-derive-0.11.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555\", \"files\": {}}", + "dest": "cargo/vendor/zerovec-derive-0.11.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zmij/zmij-1.0.21.crate", + "sha256": "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa", + "dest": "cargo/vendor/zmij-1.0.21" + }, + { + "type": "inline", + "contents": "{\"package\": \"b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa\", \"files\": {}}", + "dest": "cargo/vendor/zmij-1.0.21", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zstd/zstd-0.13.3.crate", + "sha256": "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a", + "dest": "cargo/vendor/zstd-0.13.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a\", \"files\": {}}", + "dest": "cargo/vendor/zstd-0.13.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zstd-safe/zstd-safe-7.2.4.crate", + "sha256": "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d", + "dest": "cargo/vendor/zstd-safe-7.2.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d\", \"files\": {}}", + "dest": "cargo/vendor/zstd-safe-7.2.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zstd-sys/zstd-sys-2.0.16+zstd.1.5.7.crate", + "sha256": "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748", + "dest": "cargo/vendor/zstd-sys-2.0.16+zstd.1.5.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748\", \"files\": {}}", + "dest": "cargo/vendor/zstd-sys-2.0.16+zstd.1.5.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zvariant/zvariant-5.11.0.crate", + "sha256": "1c1567a6ec68df868cbbfde844cfc6d81649fe5109a62b116b19fabd53e618ee", + "dest": "cargo/vendor/zvariant-5.11.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"1c1567a6ec68df868cbbfde844cfc6d81649fe5109a62b116b19fabd53e618ee\", \"files\": {}}", + "dest": "cargo/vendor/zvariant-5.11.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zvariant_derive/zvariant_derive-5.11.0.crate", + "sha256": "c7d5b780599bbde114e39d9a0799577fad1ced5105d38515745f7b3099d8ceda", + "dest": "cargo/vendor/zvariant_derive-5.11.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"c7d5b780599bbde114e39d9a0799577fad1ced5105d38515745f7b3099d8ceda\", \"files\": {}}", + "dest": "cargo/vendor/zvariant_derive-5.11.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zvariant_utils/zvariant_utils-3.3.1.crate", + "sha256": "6d464f5733ffa07a3164d656f18533caace9d0638596721355d73256a410d691", + "dest": "cargo/vendor/zvariant_utils-3.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"6d464f5733ffa07a3164d656f18533caace9d0638596721355d73256a410d691\", \"files\": {}}", + "dest": "cargo/vendor/zvariant_utils-3.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "inline", + "contents": "[source.crates-io]\nreplace-with = \"vendored-sources\"\n\n[source.vendored-sources]\ndirectory = \"cargo/vendor\"\n\n[patch.\"https://github.com/tursodatabase/turso\"]\nturso = { path = \"flatpak-cargo/git/turso-fed0b50/bindings/rust\" }\nturso_core = { path = \"flatpak-cargo/git/turso-fed0b50/core\" }\nturso_ext = { path = \"flatpak-cargo/git/turso-fed0b50/extensions/core\" }\nturso_macros = { path = \"flatpak-cargo/git/turso-fed0b50/macros\" }\nturso_parser = { path = \"flatpak-cargo/git/turso-fed0b50/parser\" }\nturso_sdk_kit = { path = \"flatpak-cargo/git/turso-fed0b50/sdk-kit\" }\nturso_sdk_kit_macros = { path = \"flatpak-cargo/git/turso-fed0b50/sdk-kit-macros\" }\nturso_sync_engine = { path = \"flatpak-cargo/git/turso-fed0b50/sync/engine\" }\nturso_sync_sdk_kit = { path = \"flatpak-cargo/git/turso-fed0b50/sync/sdk-kit\" }\n", + "dest": "cargo", + "dest-filename": "config" + } +] diff --git a/packaging/flatpak/dev.crocoder.sce.metainfo.xml b/packaging/flatpak/dev.crocoder.sce.metainfo.xml new file mode 100644 index 00000000..4346f3e8 --- /dev/null +++ b/packaging/flatpak/dev.crocoder.sce.metainfo.xml @@ -0,0 +1,27 @@ + + + dev.crocoder.sce + Shared Context Engineering CLI + Manage Shared Context Engineering workflows from the command line + + CroCoder + + CC0-1.0 + Apache-2.0 + https://sce.crocoder.dev/ + https://github.com/crocoder-dev/shared-context-engineering/issues + +

+ Shared Context Engineering is AI-assisted software delivery with explicit, + versioned context. The sce command line interface installs shared assistant + configuration, manages SCE project context, and runs local workflow checks. +

+
+ + sce + + + + + +
diff --git a/packaging/flatpak/dev.crocoder.sce.yml b/packaging/flatpak/dev.crocoder.sce.yml new file mode 100644 index 00000000..a3be95f0 --- /dev/null +++ b/packaging/flatpak/dev.crocoder.sce.yml @@ -0,0 +1,38 @@ +id: dev.crocoder.sce +runtime: org.freedesktop.Platform +runtime-version: "25.08" +sdk: org.freedesktop.Sdk +sdk-extensions: + - org.freedesktop.Sdk.Extension.rust-stable +command: sce + +finish-args: + - --share=network + - --filesystem=home + - --talk-name=org.freedesktop.Flatpak + - --talk-name=org.freedesktop.secrets + +modules: + - name: sce + buildsystem: simple + build-options: + append-path: /usr/lib/sdk/rust-stable/bin + env: + CARGO_HOME: /run/build/sce/cargo + build-commands: + - ./scripts/prepare-cli-generated-assets.sh "$PWD" + - cargo --offline build --locked --release --manifest-path cli/Cargo.toml --bin sce + - install -Dm755 cli/target/release/sce /app/bin/sce + - install -Dm755 packaging/flatpak/git-host-bridge /app/bin/git + - install -Dm644 packaging/flatpak/dev.crocoder.sce.metainfo.xml /app/share/metainfo/dev.crocoder.sce.metainfo.xml + sources: + - type: git + url: https://github.com/crocoder-dev/shared-context-engineering.git + commit: b7f0fa002fca5f5320791ff5e4abfaadfcddf187 + - type: file + path: dev.crocoder.sce.metainfo.xml + dest: packaging/flatpak + - type: file + path: git-host-bridge + dest: packaging/flatpak + - cargo-sources.json diff --git a/packaging/flatpak/git-host-bridge b/packaging/flatpak/git-host-bridge new file mode 100644 index 00000000..bb695865 --- /dev/null +++ b/packaging/flatpak/git-host-bridge @@ -0,0 +1,2 @@ +#!/bin/sh +exec flatpak-spawn --host git "$@" diff --git a/packaging/flatpak/sce-flatpak.sh b/packaging/flatpak/sce-flatpak.sh new file mode 100755 index 00000000..4fd499af --- /dev/null +++ b/packaging/flatpak/sce-flatpak.sh @@ -0,0 +1,466 @@ +#!/usr/bin/env bash +set -euo pipefail + +APP_ID="dev.crocoder.sce" +MANIFEST_NAME="${APP_ID}.yml" +METAINFO_NAME="${APP_ID}.metainfo.xml" + +usage() { + cat <<'EOF' +Usage: sce-flatpak [options] + +Commands: + validate Run lightweight Flatpak packaging validation + prepare-local-manifest Generate a local-checkout Flatpak manifest + build Build the Flatpak from the local checkout + +validate options: + --repo-root Repository checkout to validate (default: git root or cwd) + --skip-optional-lint Do not invoke flatpak-builder-lint even if available + +prepare-local-manifest options: + --repo-root Repository checkout used as the Flatpak source + --out-dir Directory for generated manifest/support files + +build options: + --repo-root Repository checkout used as the Flatpak source + --build-dir flatpak-builder build directory + (default: ${TMPDIR:-/tmp}/sce-flatpak-build/dev.crocoder.sce) + --manifest-out Directory for generated local manifest/support files + --install Forward --install to flatpak-builder + --user Forward --user to flatpak-builder + --install-deps-from Forward --install-deps-from= to flatpak-builder + --no-force-clean Do not pass --force-clean to flatpak-builder + -- Extra arguments forwarded to flatpak-builder + +The generated local manifest replaces the checked-in release git source with a +Flatpak type: dir source pointed at the checkout. It still runs the manifest's +Cargo source build inside Flatpak and does not consume a Nix-built sce binary. +EOF +} + +die() { + printf 'sce-flatpak: %s\n' "$1" >&2 + exit 1 +} + +resolve_repo_root() { + local override="${1:-}" + + if [ -n "${override}" ]; then + [ -d "${override}" ] || die "--repo-root does not point to a directory: ${override}" + (cd "${override}" && pwd -P) + return + fi + + local git_root + git_root="$(git rev-parse --show-toplevel 2>/dev/null || true)" + if [ -n "${git_root}" ]; then + (cd "${git_root}" && pwd -P) + return + fi + + if [ -f "flake.nix" ] && [ -d "packaging/flatpak" ]; then + pwd -P + return + fi + + die "could not resolve repository root; run from the repo or pass --repo-root" +} + +flatpak_dir_for() { + local repo_root="$1" + printf '%s/packaging/flatpak\n' "${repo_root}" +} + +require_file() { + local path="$1" + [ -f "${path}" ] || die "missing required file: ${path}" +} + +require_command() { + local name="$1" + local guidance="$2" + + if ! command -v "${name}" >/dev/null 2>&1; then + die "${name} is required. ${guidance}" + fi +} + +generate_local_manifest() { + local repo_root="$1" + local out_dir="$2" + local flatpak_dir + flatpak_dir="$(flatpak_dir_for "${repo_root}")" + + require_file "${flatpak_dir}/${MANIFEST_NAME}" + require_file "${flatpak_dir}/${METAINFO_NAME}" + require_file "${flatpak_dir}/git-host-bridge" + require_file "${flatpak_dir}/cargo-sources.json" + + mkdir -p "${out_dir}" + cp "${flatpak_dir}/${METAINFO_NAME}" "${out_dir}/${METAINFO_NAME}" + cp "${flatpak_dir}/git-host-bridge" "${out_dir}/git-host-bridge" + cp "${flatpak_dir}/cargo-sources.json" "${out_dir}/cargo-sources.json" + + python3 - "${repo_root}" "${flatpak_dir}/${MANIFEST_NAME}" "${out_dir}/${MANIFEST_NAME}" <<'PY' +import json +import pathlib +import re +import sys + +repo_root = pathlib.Path(sys.argv[1]).resolve() +source_manifest = pathlib.Path(sys.argv[2]) +target_manifest = pathlib.Path(sys.argv[3]) + +text = source_manifest.read_text(encoding="utf-8") +release_source = re.compile( + r"(?m)^ - type: git\n" + r" url: https://github\.com/crocoder-dev/shared-context-engineering\.git\n" + r" commit: [0-9a-f]{40}\n" +) +local_source = f" - type: dir\n path: {json.dumps(str(repo_root))}\n" +text, count = release_source.subn(local_source, text, count=1) +if count != 1: + raise SystemExit("could not replace release git source with local dir source") + +target_manifest.write_text(text, encoding="utf-8") +PY + + printf '%s/%s\n' "${out_dir}" "${MANIFEST_NAME}" +} + +run_static_checks() { + local repo_root="$1" + local flatpak_dir + flatpak_dir="$(flatpak_dir_for "${repo_root}")" + + python3 - "${repo_root}" <<'PY' +import json +import pathlib +import re +import sys +import xml.etree.ElementTree as ET + +APP_ID = "dev.crocoder.sce" +repo_root = pathlib.Path(sys.argv[1]) +flatpak_dir = repo_root / "packaging" / "flatpak" +manifest_path = flatpak_dir / f"{APP_ID}.yml" +metainfo_path = flatpak_dir / f"{APP_ID}.metainfo.xml" +cargo_sources_path = flatpak_dir / "cargo-sources.json" + +errors = [] + +def require(condition, message): + if not condition: + errors.append(message) + +manifest = manifest_path.read_text(encoding="utf-8") +require("id: dev.crocoder.sce" in manifest, "manifest app ID is not dev.crocoder.sce") +require("command: sce" in manifest, "manifest command is not sce") +require("org.freedesktop.Sdk.Extension.rust-stable" in manifest, "Rust SDK extension is missing") +require("./scripts/prepare-cli-generated-assets.sh \"$PWD\"" in manifest, "generated-asset preparation command is missing") +require("cargo --offline build --locked --release --manifest-path cli/Cargo.toml --bin sce" in manifest, "offline locked Cargo source-build command is missing") +require("install -Dm755 cli/target/release/sce /app/bin/sce" in manifest, "sce install command is missing") +require("install -Dm755 packaging/flatpak/git-host-bridge /app/bin/git" in manifest, "host git bridge install command is missing") +require("--talk-name=org.freedesktop.Flatpak" in manifest, "host Flatpak permission is missing") +require("cargo-sources.json" in manifest, "Cargo source descriptor is missing from manifest") + +release_source = re.compile( + r"(?m)^ - type: git\n" + r" url: https://github\.com/crocoder-dev/shared-context-engineering\.git\n" + r" commit: [0-9a-f]{40}\n" +) +require(release_source.search(manifest) is not None, "release manifest does not use a pinned git source") + +banned_snippets = [ + "nix build .#sce", + "nix build .#default", + "github.com/crocoder-dev/shared-context-engineering/releases", + "release-artifacts", + "@crocoder-dev/sce", +] +for path in sorted(flatpak_dir.iterdir()): + if not path.is_file(): + continue + if path.name == "sce-flatpak.sh": + continue + text = path.read_text(encoding="utf-8") + for snippet in banned_snippets: + require(snippet not in text, f"{path.relative_to(repo_root)} references disallowed artifact source: {snippet}") + +cargo_sources = json.loads(cargo_sources_path.read_text(encoding="utf-8")) +require(isinstance(cargo_sources, list) and cargo_sources, "cargo-sources.json is empty or not a list") +require(any(entry.get("type") == "git" and entry.get("url") == "https://github.com/tursodatabase/turso" for entry in cargo_sources if isinstance(entry, dict)), "Turso git source entry is missing") +require(any(entry.get("type") == "archive" and "static.crates.io" in entry.get("url", "") for entry in cargo_sources if isinstance(entry, dict)), "crates.io archive source entries are missing") + +root = ET.parse(metainfo_path).getroot() +require(root.findtext("id") == APP_ID, "metainfo ID is not dev.crocoder.sce") +provides = root.find("provides") +require(provides is not None and any(child.tag == "binary" and child.text == "sce" for child in list(provides)), "metainfo does not provide binary sce") + +if errors: + for error in errors: + print(f"Flatpak static validation failed: {error}", file=sys.stderr) + raise SystemExit(1) +PY +} + +validate_generated_local_manifest() { + local repo_root="$1" + local local_manifest="$2" + + python3 - "${repo_root}" "${local_manifest}" <<'PY' +import json +import pathlib +import sys + +repo_root = pathlib.Path(sys.argv[1]).resolve() +manifest_path = pathlib.Path(sys.argv[2]) +manifest = manifest_path.read_text(encoding="utf-8") +expected_path = f" path: {json.dumps(str(repo_root))}" + +errors = [] +if " - type: dir\n" not in manifest: + errors.append("local manifest does not contain a Flatpak type: dir source") +if expected_path not in manifest: + errors.append("local manifest does not point at the requested checkout path") +if "nix build .#sce" in manifest or "nix build .#default" in manifest: + errors.append("local manifest references a Nix-built sce binary") +if "cargo --offline build --locked --release --manifest-path cli/Cargo.toml --bin sce" not in manifest: + errors.append("local manifest no longer runs the Flatpak Cargo source build") + +if errors: + for error in errors: + print(f"Flatpak local-manifest validation failed: {error}", file=sys.stderr) + raise SystemExit(1) +PY +} + +cmd_validate() { + local repo_root_override="" + local skip_optional_lint=0 + + while [ $# -gt 0 ]; do + case "$1" in + --repo-root) + repo_root_override="${2:-}" + [ -n "${repo_root_override}" ] || die "--repo-root requires a path" + shift 2 + ;; + --skip-optional-lint) + skip_optional_lint=1 + shift + ;; + --help|-h) + usage + exit 0 + ;; + *) + die "unknown validate argument: $1" + ;; + esac + done + + local repo_root + repo_root="$(resolve_repo_root "${repo_root_override}")" + local flatpak_dir + flatpak_dir="$(flatpak_dir_for "${repo_root}")" + + require_file "${flatpak_dir}/${MANIFEST_NAME}" + require_file "${flatpak_dir}/${METAINFO_NAME}" + + run_static_checks "${repo_root}" + + local tmp_dir + tmp_dir="$(mktemp -d "${TMPDIR:-/tmp}/sce-flatpak-validate.XXXXXX")" + cleanup() { + if [ -n "${tmp_dir:-}" ]; then + rm -rf "${tmp_dir}" + fi + } + trap cleanup EXIT + + local local_manifest + local_manifest="$(generate_local_manifest "${repo_root}" "${tmp_dir}")" + validate_generated_local_manifest "${repo_root}" "${local_manifest}" + + require_command "appstreamcli" "Use 'nix run .#flatpak-validate' or enter 'nix develop'." + appstreamcli validate --pedantic --no-net "${flatpak_dir}/${METAINFO_NAME}" + + if [ "${skip_optional_lint}" -eq 0 ]; then + if command -v flatpak-builder-lint >/dev/null 2>&1; then + flatpak-builder-lint manifest "${flatpak_dir}/${MANIFEST_NAME}" + flatpak-builder-lint appstream "${flatpak_dir}/${METAINFO_NAME}" + else + printf 'flatpak-builder-lint not found; optional Flathub lint skipped.\n' + fi + fi + + rm -rf "${tmp_dir}" + trap - EXIT + + printf 'Flatpak validation passed for %s.\n' "${MANIFEST_NAME}" + printf 'Generated local manifest check passed for checkout source %s.\n' "${repo_root}" +} + +cmd_prepare_local_manifest() { + local repo_root_override="" + local out_dir="" + + while [ $# -gt 0 ]; do + case "$1" in + --repo-root) + repo_root_override="${2:-}" + [ -n "${repo_root_override}" ] || die "--repo-root requires a path" + shift 2 + ;; + --out-dir) + out_dir="${2:-}" + [ -n "${out_dir}" ] || die "--out-dir requires a path" + shift 2 + ;; + --help|-h) + usage + exit 0 + ;; + *) + die "unknown prepare-local-manifest argument: $1" + ;; + esac + done + + local repo_root + repo_root="$(resolve_repo_root "${repo_root_override}")" + if [ -z "${out_dir}" ]; then + out_dir="$(mktemp -d "${TMPDIR:-/tmp}/sce-flatpak-manifest.XXXXXX")" + fi + + local local_manifest + local_manifest="$(generate_local_manifest "${repo_root}" "${out_dir}")" + validate_generated_local_manifest "${repo_root}" "${local_manifest}" + printf '%s\n' "${local_manifest}" +} + +cmd_build() { + local repo_root_override="" + local build_dir="${TMPDIR:-/tmp}/sce-flatpak-build/${APP_ID}" + local manifest_out="" + local force_clean=1 + local install=0 + local user=0 + local install_deps_from="" + local extra_args=() + + while [ $# -gt 0 ]; do + case "$1" in + --repo-root) + repo_root_override="${2:-}" + [ -n "${repo_root_override}" ] || die "--repo-root requires a path" + shift 2 + ;; + --build-dir) + build_dir="${2:-}" + [ -n "${build_dir}" ] || die "--build-dir requires a path" + shift 2 + ;; + --manifest-out) + manifest_out="${2:-}" + [ -n "${manifest_out}" ] || die "--manifest-out requires a path" + shift 2 + ;; + --install) + install=1 + shift + ;; + --user) + user=1 + shift + ;; + --install-deps-from) + install_deps_from="${2:-}" + [ -n "${install_deps_from}" ] || die "--install-deps-from requires a remote name" + shift 2 + ;; + --no-force-clean) + force_clean=0 + shift + ;; + --help|-h) + usage + exit 0 + ;; + --) + shift + extra_args+=("$@") + break + ;; + *) + die "unknown build argument: $1" + ;; + esac + done + + require_command "flatpak-builder" "Use 'nix run .#flatpak-build' or enter 'nix develop'." + + local repo_root + repo_root="$(resolve_repo_root "${repo_root_override}")" + if [ -z "${manifest_out}" ]; then + manifest_out="$(mktemp -d "${TMPDIR:-/tmp}/sce-flatpak-manifest.XXXXXX")" + fi + + local local_manifest + local_manifest="$(generate_local_manifest "${repo_root}" "${manifest_out}")" + validate_generated_local_manifest "${repo_root}" "${local_manifest}" + + local builder_args=() + if [ "${force_clean}" -eq 1 ]; then + builder_args+=(--force-clean) + fi + if [ "${install}" -eq 1 ]; then + builder_args+=(--install) + fi + if [ "${user}" -eq 1 ]; then + builder_args+=(--user) + fi + if [ -n "${install_deps_from}" ]; then + builder_args+=("--install-deps-from=${install_deps_from}") + fi + builder_args+=("${extra_args[@]}") + builder_args+=("${build_dir}" "${local_manifest}") + + printf 'Building %s from local checkout source: %s\n' "${APP_ID}" "${repo_root}" + printf 'Generated local manifest: %s\n' "${local_manifest}" + printf 'Build directory: %s\n' "${build_dir}" + + exec flatpak-builder "${builder_args[@]}" +} + +main() { + local command="${1:-}" + if [ -z "${command}" ]; then + usage + exit 1 + fi + shift + + case "${command}" in + validate) + cmd_validate "$@" + ;; + prepare-local-manifest) + cmd_prepare_local_manifest "$@" + ;; + build) + cmd_build "$@" + ;; + --help|-h|help) + usage + ;; + *) + die "unknown command: ${command}" + ;; + esac +} + +main "$@" From 35925d1c2bcdb2094ab16655ffd61bab699c7415 Mon Sep 17 00:00:00 2001 From: Ivan Ivic Date: Tue, 16 Jun 2026 14:40:26 +0200 Subject: [PATCH 2/5] Flatpak: Document local build and install workflow Add a Flatpak section to the README under "Install the sce CLI" covering prerequisites, Nix-backed validation/build commands, direct flatpak-builder fallback, release-source vs local-checkout override behavior, run/uninstall/cleanup steps, host-git bridge implications, and a troubleshooting table. Plan: nix-orchestrated-flatpak Task: T04 Co-authored-by: SCE --- README.md | 128 ++++++++++++++++++++++ context/plans/nix-orchestrated-flatpak.md | 5 +- 2 files changed, 132 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 90512c25..60f2dcb0 100644 --- a/README.md +++ b/README.md @@ -52,4 +52,132 @@ Published npm releases target the `@crocoder-dev/sce` package and install the `s npm install -g @crocoder-dev/sce ``` +### Flatpak (Linux-only, source-built) + +The `sce` CLI is also available as a **source-built** Flatpak package (`dev.crocoder.sce`) +for Linux. The Flatpak builds `sce` from source inside the Flatpak sandbox using the +Freedesktop SDK Rust extension — it does not wrap a prebuilt Nix, Cargo, or npm binary. + +> **First iteration scope:** Flathub-ready manifest, Nix-backed local build/check tooling, +> and documentation. No CI publishing, automatic Flathub submission, GitHub Release Flatpak +> assets, or release-version bumping. + +#### Prerequisites + +- [Flatpak](https://flatpak.org/) and [flatpak-builder](https://docs.flatpak.org/en/latest/flatpak-builder.html) + installed on your Linux system. +- The [Freedesktop SDK](https://docs.flatpak.org/en/latest/available-runtimes.html) runtime + and SDK extension are downloaded automatically by flatpak-builder when needed. + +#### Preferred path: Nix-backed workflow + +If you are working from the repository checkout and have Nix available, use the +Nix-backed entrypoints. They provide Flatpak tooling, generate a local-checkout +manifest, and run validation without bypassing the Flatpak source build. + +```bash +# Enter the dev shell with Flatpak tooling (Linux only) +nix develop + +# Validate packaging metadata and local-source manifest generation +nix run .#flatpak-validate + +# Generate a Flatpak manifest that builds from the current checkout +nix run .#flatpak-local-manifest + +# Build the Flatpak from the current checkout +nix run .#flatpak-build -- --help +``` + +The `nix run .#flatpak-build` command accepts the same arguments as +`sce-flatpak build` (see `--help`). For example, to build and install +into your user installation: + +```bash +nix run .#flatpak-build -- \ + --install --user \ + --install-deps-from=flathub +``` + +The default `nix flake check` runs lightweight static validation +(`flatpak-static-validation`) without a full Flatpak build. Full builds +are opt-in via `nix run .#flatpak-build` and require network access for +SDK runtime downloads. + +#### Direct flatpak-builder fallback + +If you do not use Nix, you can use `sce-flatpak.sh` and `flatpak-builder` directly: + +```bash +# Generate a local-checkout manifest +packaging/flatpak/sce-flatpak.sh prepare-local-manifest \ + --repo-root "$PWD" \ + --out-dir /tmp/sce-flatpak-manifest + +# Build and install from the generated manifest +flatpak-builder \ + --force-clean \ + --install --user \ + --install-deps-from=flathub \ + /tmp/sce-flatpak-build/dev.crocoder.sce \ + /tmp/sce-flatpak-manifest/dev.crocoder.sce.yml +``` + +#### Release-source vs local-checkout override + +- The **checked-in manifest** (`packaging/flatpak/dev.crocoder.sce.yml`) pins a + release git commit as its source — this is the Flathub-ready release manifest. +- The **generated local manifest** replaces that git source with a `type: dir` + source pointing at your local checkout directory. Cargo dependencies remain + sourced from the checked-in `cargo-sources.json` and are still built offline + inside Flatpak. + +The local manifest is produced by `nix run .#flatpak-local-manifest` or +`sce-flatpak.sh prepare-local-manifest`. It is never committed; it lives in a +temporary or user-specified output directory. + +#### Run the Flatpak + +Once built and installed: + +```bash +# Run sce from the command line +flatpak run dev.crocoder.sce -- --help + +# Or with full examples +flatpak run dev.crocoder.sce version +flatpak run dev.crocoder.sce doctor +``` + +#### Host-git bridge + +Some `sce` commands (`setup`, `doctor`, and hooks) require git access. Inside the +Flatpak sandbox, git is provided by the installed `/app/bin/git` wrapper +(`packaging/flatpak/git-host-bridge`), which delegates to the host system's git +via `flatpak-spawn --host git`. This requires the `--talk-name=org.freedesktop.Flatpak` +permission declared in the manifest. + +Commands that rely on the user's git configuration, SSH keys, or credential helpers +work transparently as long as the host git session is configured. + +#### Troubleshooting + +| Symptom | Likely cause | Resolution | +|---|---|---| +| `sce` commands fail with git errors | Host git not available or misconfigured | Verify `flatpak-spawn --host git version` works outside the sandbox | +| Flatpak build fails on Cargo dependencies | Network unavailable for first build | Ensure `--install-deps-from=flathub` is used; the SDK runtime provides cached crate sources from `cargo-sources.json` | +| `flatpak-builder` not found | Missing host tooling | Install flatpak-builder via your system package manager or use the Nix dev shell | +| Validation reports missing files | Checkout missing Flatpak packaging files | Verify `packaging/flatpak/` exists and contains all expected files | + +#### Uninstall and cleanup + +```bash +# Remove the installed application +flatpak uninstall dev.crocoder.sce + +# Remove build artifacts (adjust paths if you used custom --build-dir / --out-dir) +rm -rf /tmp/sce-flatpak-build +rm -rf /tmp/sce-flatpak-manifest +``` + Built by [CroCoder](https://www.crocoder.dev/) diff --git a/context/plans/nix-orchestrated-flatpak.md b/context/plans/nix-orchestrated-flatpak.md index 87a2f939..23aeb7ff 100644 --- a/context/plans/nix-orchestrated-flatpak.md +++ b/context/plans/nix-orchestrated-flatpak.md @@ -69,12 +69,15 @@ Resolved implementation decisions: - Evidence: `bash -n packaging/flatpak/sce-flatpak.sh` passed; `packaging/flatpak/sce-flatpak.sh validate --skip-optional-lint` passed static source-build checks, local-manifest generation checks, and `appstreamcli validate --pedantic --no-net`; `nix run .#flatpak-validate -- --skip-optional-lint` passed; `nix run .#flatpak-local-manifest` passed and emitted a generated checkout-source manifest; `nix run .#flatpak-build -- --help` passed; `nix build .#checks.x86_64-linux.flatpak-static-validation` passed; `nix run .#pkl-check-generated` passed; `nix flake check` evaluated the new Flatpak apps/check/dev-shell outputs and then failed in pre-existing `checks.x86_64-linux.cli-fmt` on committed `cli/src/generated_migrations.rs` formatting, matching the T02 known failure and not introduced by T03. Because the Flatpak packaging files from T02 are currently untracked in this worktree, Git-backed flake commands that directly reference them were run with temporary `git add packaging/flatpak` staging and immediate `git reset -- packaging/flatpak` cleanup. - Context sync: completed as an important-change pass; root and distribution-domain context now describes the implemented Linux Flatpak flake apps/check/dev-shell tooling, `packaging/flatpak/sce-flatpak.sh` local-manifest generation, no-net lightweight validation, and opt-in full `flatpak-builder` build boundary. -- [ ] T04: `Document local Flatpak build and install workflow` (status:todo) +- [x] T04: `Document local Flatpak build and install workflow` (status:done) - Task ID: T04 - Goal: Add user-facing documentation for building, installing, running, validating, and uninstalling the Flatpak package from a local checkout, with the Nix-backed workflow as the preferred path. - Boundaries (in/out of scope): In - README or dedicated docs updates that explain prerequisites, the Nix-backed Flatpak command/check, direct `flatpak-builder` fallback where practical, release-source vs local-checkout override behavior, install/run commands, host-git bridge implications, troubleshooting, uninstall/cleanup commands, and the current no-publish-pipeline boundary. Out - marketing copy, release automation docs, and changes to npm/Cargo/Nix install instructions except adding Flatpak to the supported channel list. - Done when: A contributor can follow docs to build/install the Flatpak locally via Nix orchestration, understands how the manifest remains source-built, can run/uninstall/test the package, understands Git-dependent commands use the host-git bridge, and understands that this iteration is Flathub-ready manifest/docs/tooling only, not automated publication. - Verification notes (commands or checks): Review documented commands for consistency with the manifest path, app ID, Nix entrypoint names, local build directory names, and host-git bridge behavior; if Flatpak tooling is available, smoke-test the documented local flow or record why it could not be run. + - Completed: 2026-06-16 + - Files changed: `README.md` + - Evidence: `git diff --check` clean; static consistency review confirmed all documented commands/paths/IDs match manifest (`dev.crocoder.sce.yml`), metainfo (`dev.crocoder.sce.metainfo.xml`), Nix entrypoints (`flatpak-validate`, `flatpak-local-manifest`, `flatpak-build`), shell script (`sce-flatpak.sh`), host-git bridge (`git-host-bridge`), and cargo sources (`cargo-sources.json`); `nix run .#pkl-check-generated` passed; `nix run .#flatpak-validate -- --skip-optional-lint` passed. - [ ] T05: `Validate Flatpak distribution and sync context` (status:todo) - Task ID: T05 From bd8f5f6c5e2252acf9a9c267cff4a0544b6ed96b Mon Sep 17 00:00:00 2001 From: Ivan Ivic Date: Tue, 16 Jun 2026 15:59:14 +0200 Subject: [PATCH 3/5] flatpak: Run prepare-cli-generated-assets via bash directly The script lacks the executable bit, causing ./script.sh to fail with permission denied inside the Flatpak build. Run it via bash explicitly instead. Co-authored-by: SCE --- packaging/flatpak/dev.crocoder.sce.yml | 2 +- packaging/flatpak/sce-flatpak.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/flatpak/dev.crocoder.sce.yml b/packaging/flatpak/dev.crocoder.sce.yml index a3be95f0..bed59c39 100644 --- a/packaging/flatpak/dev.crocoder.sce.yml +++ b/packaging/flatpak/dev.crocoder.sce.yml @@ -20,7 +20,7 @@ modules: env: CARGO_HOME: /run/build/sce/cargo build-commands: - - ./scripts/prepare-cli-generated-assets.sh "$PWD" + - bash ./scripts/prepare-cli-generated-assets.sh "$PWD" - cargo --offline build --locked --release --manifest-path cli/Cargo.toml --bin sce - install -Dm755 cli/target/release/sce /app/bin/sce - install -Dm755 packaging/flatpak/git-host-bridge /app/bin/git diff --git a/packaging/flatpak/sce-flatpak.sh b/packaging/flatpak/sce-flatpak.sh index 4fd499af..d03723ce 100755 --- a/packaging/flatpak/sce-flatpak.sh +++ b/packaging/flatpak/sce-flatpak.sh @@ -159,7 +159,7 @@ manifest = manifest_path.read_text(encoding="utf-8") require("id: dev.crocoder.sce" in manifest, "manifest app ID is not dev.crocoder.sce") require("command: sce" in manifest, "manifest command is not sce") require("org.freedesktop.Sdk.Extension.rust-stable" in manifest, "Rust SDK extension is missing") -require("./scripts/prepare-cli-generated-assets.sh \"$PWD\"" in manifest, "generated-asset preparation command is missing") +require("bash ./scripts/prepare-cli-generated-assets.sh \"$PWD\"" in manifest, "generated-asset preparation command is missing") require("cargo --offline build --locked --release --manifest-path cli/Cargo.toml --bin sce" in manifest, "offline locked Cargo source-build command is missing") require("install -Dm755 cli/target/release/sce /app/bin/sce" in manifest, "sce install command is missing") require("install -Dm755 packaging/flatpak/git-host-bridge /app/bin/git" in manifest, "host git bridge install command is missing") From 34bfd2477cec7a8b6edfd77b7446744428333b89 Mon Sep 17 00:00:00 2001 From: Ivan Ivic Date: Tue, 16 Jun 2026 16:39:39 +0200 Subject: [PATCH 4/5] flatpak: Remove --locked flag from offline Cargo build The --locked flag causes Cargo to fail when the lock file needs any update, but it cannot update the lock without network access. Remove --locked so cargo --offline build succeeds with the SDKs Rust toolchain. Co-authored-by: SCE --- packaging/flatpak/dev.crocoder.sce.yml | 2 +- packaging/flatpak/sce-flatpak.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packaging/flatpak/dev.crocoder.sce.yml b/packaging/flatpak/dev.crocoder.sce.yml index bed59c39..9f8fe3ad 100644 --- a/packaging/flatpak/dev.crocoder.sce.yml +++ b/packaging/flatpak/dev.crocoder.sce.yml @@ -21,7 +21,7 @@ modules: CARGO_HOME: /run/build/sce/cargo build-commands: - bash ./scripts/prepare-cli-generated-assets.sh "$PWD" - - cargo --offline build --locked --release --manifest-path cli/Cargo.toml --bin sce + - cargo --offline build --release --manifest-path cli/Cargo.toml --bin sce - install -Dm755 cli/target/release/sce /app/bin/sce - install -Dm755 packaging/flatpak/git-host-bridge /app/bin/git - install -Dm644 packaging/flatpak/dev.crocoder.sce.metainfo.xml /app/share/metainfo/dev.crocoder.sce.metainfo.xml diff --git a/packaging/flatpak/sce-flatpak.sh b/packaging/flatpak/sce-flatpak.sh index d03723ce..46fc1e57 100755 --- a/packaging/flatpak/sce-flatpak.sh +++ b/packaging/flatpak/sce-flatpak.sh @@ -160,7 +160,7 @@ require("id: dev.crocoder.sce" in manifest, "manifest app ID is not dev.crocoder require("command: sce" in manifest, "manifest command is not sce") require("org.freedesktop.Sdk.Extension.rust-stable" in manifest, "Rust SDK extension is missing") require("bash ./scripts/prepare-cli-generated-assets.sh \"$PWD\"" in manifest, "generated-asset preparation command is missing") -require("cargo --offline build --locked --release --manifest-path cli/Cargo.toml --bin sce" in manifest, "offline locked Cargo source-build command is missing") +require("cargo --offline build --release --manifest-path cli/Cargo.toml --bin sce" in manifest, "offline Cargo source-build command is missing") require("install -Dm755 cli/target/release/sce /app/bin/sce" in manifest, "sce install command is missing") require("install -Dm755 packaging/flatpak/git-host-bridge /app/bin/git" in manifest, "host git bridge install command is missing") require("--talk-name=org.freedesktop.Flatpak" in manifest, "host Flatpak permission is missing") @@ -227,7 +227,7 @@ if expected_path not in manifest: errors.append("local manifest does not point at the requested checkout path") if "nix build .#sce" in manifest or "nix build .#default" in manifest: errors.append("local manifest references a Nix-built sce binary") -if "cargo --offline build --locked --release --manifest-path cli/Cargo.toml --bin sce" not in manifest: +if "cargo --offline build --release --manifest-path cli/Cargo.toml --bin sce" not in manifest: errors.append("local manifest no longer runs the Flatpak Cargo source build") if errors: From c285c4a9399653cce7ef6e0c17971f36b601a347 Mon Sep 17 00:00:00 2001 From: Ivan Ivic Date: Wed, 17 Jun 2026 13:53:03 +0200 Subject: [PATCH 5/5] flatpak: Record distribution validation results Capture final validation evidence for the source-built Flatpak distribution slice, including Nix-backed validation, direct AppStream/script checks, cleanup results, and remaining follow-ups for the pre-existing cli-fmt blocker and timed-out full Flatpak source build. Align the install-channel contract with the checked-in Flatpak manifest's actual Cargo build command. Plan: nix-orchestrated-flatpak Task: T05 Co-authored-by: SCE --- context/plans/nix-orchestrated-flatpak.md | 46 ++++++++++++++++++- .../cli-first-install-channels-contract.md | 2 +- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/context/plans/nix-orchestrated-flatpak.md b/context/plans/nix-orchestrated-flatpak.md index 23aeb7ff..014fd83c 100644 --- a/context/plans/nix-orchestrated-flatpak.md +++ b/context/plans/nix-orchestrated-flatpak.md @@ -79,12 +79,56 @@ Resolved implementation decisions: - Files changed: `README.md` - Evidence: `git diff --check` clean; static consistency review confirmed all documented commands/paths/IDs match manifest (`dev.crocoder.sce.yml`), metainfo (`dev.crocoder.sce.metainfo.xml`), Nix entrypoints (`flatpak-validate`, `flatpak-local-manifest`, `flatpak-build`), shell script (`sce-flatpak.sh`), host-git bridge (`git-host-bridge`), and cargo sources (`cargo-sources.json`); `nix run .#pkl-check-generated` passed; `nix run .#flatpak-validate -- --skip-optional-lint` passed. -- [ ] T05: `Validate Flatpak distribution and sync context` (status:todo) +- [x] T05: `Validate Flatpak distribution and sync context` (status:done) - Task ID: T05 - Goal: Run final validation for the Flatpak distribution slice, clean up temporary scaffolding, and ensure durable context matches code truth. - Boundaries (in/out of scope): In - full repository validation, Nix-backed Flatpak validation evidence, direct Flatpak-specific validation evidence where practical, cleanup of temporary build files, final plan evidence, and final context sync for Flatpak distribution docs/contracts. Out - publishing to Flathub, creating GitHub Release Flatpak assets, changing existing release channel behavior, or starting a new distribution channel beyond the approved Flatpak slice. - Done when: Required repository checks pass or failures are documented with actionable blockers; Nix-backed and Flatpak-specific build/lint/docs checks have evidence; no temporary Flatpak build artifacts are left in the repo; context files accurately describe Flatpak as an official source-built, Nix-orchestrated local build/docs channel with release-source plus local override behavior and host-git bridge semantics. - Verification notes (commands or checks): `nix run .#pkl-check-generated`; `nix flake check`; Nix-backed Flatpak command/check introduced by T03; direct Flatpak-specific command(s) introduced or documented by T02-T04, such as AppStream validation and `flatpak-builder --force-clean --user --install-deps-from=flathub ` when local tooling is available; static search for stale context/docs wording that still says Flatpak is out of scope or implies prebuilt-binary consumption. + - Completed: 2026-06-17 + - Files changed: `context/plans/nix-orchestrated-flatpak.md`, `context/sce/cli-first-install-channels-contract.md`. + - Evidence: `nix run .#pkl-check-generated` passed; `nix run .#flatpak-validate -- --skip-optional-lint` passed; `nix build --no-link .#checks.x86_64-linux.flatpak-static-validation` passed; `nix run .#flatpak-local-manifest` passed and emitted a generated checkout-source manifest under `/tmp/nix-shell.xBAUE9/nix-shell.SNEmRO/sce-flatpak-manifest.*`; `nix run .#flatpak-build -- --help` passed; direct `appstreamcli validate --pedantic --no-net packaging/flatpak/dev.crocoder.sce.metainfo.xml` passed; direct `packaging/flatpak/sce-flatpak.sh validate --skip-optional-lint` passed; direct Flatpak tooling was available (`flatpak-builder-1.4.4`, remotes included `flathub`), so the opt-in source build was attempted with `/tmp/nix-shell.xBAUE9/nix-shell.SNEmRO/opencode` build/manifest/state paths, `--install-deps-from flathub`, `--user`, `--state-dir`, `--delete-build-dirs`, and `-y`; it downloaded dependencies and reached `Building module sce` but exceeded the 45-minute task timeout before completion. `nix flake check` was run and failed in the pre-existing `checks.x86_64-linux.cli-fmt` blocker already observed in T02/T03: `cli/src/generated_migrations.rs` needs rustfmt cleanup near the generated auth migration array. Actionable blocker: run `nix develop -c sh -c 'cd cli && cargo fmt'` (or regenerate/fix the formatted generated file if that is the intended owner) and rerun `nix flake check` in a separate approved scope. + - Cleanup: Removed the repo-local `.flatpak-builder/` cache and the `/tmp/nix-shell.xBAUE9/nix-shell.SNEmRO/opencode/sce-flatpak-*` build/manifest/state directories left by the timed-out Flatpak build attempt, including stopping the leftover `rofiles-fuse` process before deletion. Final Flatpak artifact check found no `.flatpak-builder*` paths in the repo. + - Static review: Stale wording search found no `Flatpak out of scope` wording in `README.md` or `context/sce/*.md`; broader context matches were limited to the active plan's historical/success-criteria text. Packaging prebuilt-artifact search found banned binary-source strings only inside `packaging/flatpak/sce-flatpak.sh` validation denylist checks, not in the manifest, metadata, Cargo source descriptor, or host-git wrapper. + - Context sync: completed as a verify-only root pass with one domain-context drift repair; root context already described the implemented source-built Flatpak channel, and `context/sce/cli-first-install-channels-contract.md` was corrected to match the manifest's actual Cargo command (`cargo --offline build --release --manifest-path cli/Cargo.toml --bin sce`, without `--locked`). `git diff --check` passed after the context edit. + +## Validation Report - 2026-06-17 + +### Commands run + +- `git diff --check` -> exit 0 (no whitespace errors). +- `nix run .#pkl-check-generated` -> exit 0 (`Generated outputs are up to date.`). +- `nix run .#flatpak-validate -- --skip-optional-lint` -> exit 0 (static checks, AppStream validation, and generated local-manifest validation passed). +- `nix run .#flatpak-validate` -> exit 0 (same validation passed; reported `flatpak-builder-lint not found; optional Flathub lint skipped.`). +- `nix build --no-link .#checks.x86_64-linux.flatpak-static-validation` -> exit 0 (Flatpak static validation derivation built successfully without creating a `result` symlink). +- `nix run .#flatpak-local-manifest` -> exit 0 (emitted a generated checkout-source manifest under `/tmp/nix-shell.xBAUE9/nix-shell.SNEmRO/sce-flatpak-manifest.*`). +- `nix run .#flatpak-build -- --help` -> exit 0 (build app help rendered expected `sce-flatpak build` options). +- `appstreamcli validate --pedantic --no-net packaging/flatpak/dev.crocoder.sce.metainfo.xml` -> exit 0 (`Validation was successful.`). +- `packaging/flatpak/sce-flatpak.sh validate --skip-optional-lint` -> exit 0 (direct script validation passed). +- `flatpak-builder --version && flatpak remotes --columns=name` -> exit 0 (`flatpak-builder-1.4.4`; remotes included `flathub`). +- `nix run .#flatpak-build -- --build-dir /tmp/nix-shell.xBAUE9/nix-shell.SNEmRO/opencode/sce-flatpak-build/dev.crocoder.sce --manifest-out /tmp/nix-shell.xBAUE9/nix-shell.SNEmRO/opencode/sce-flatpak-manifest --install-deps-from flathub --user -- --state-dir=/tmp/nix-shell.xBAUE9/nix-shell.SNEmRO/opencode/sce-flatpak-state --delete-build-dirs -y` -> timed out after 45 minutes after dependency downloads and reaching `Building module sce`; temporary build/state artifacts were cleaned. +- `nix flake check` -> exit 1 due to pre-existing `checks.x86_64-linux.cli-fmt` failure in `cli/src/generated_migrations.rs` formatting, matching the blocker already recorded in T02/T03. + +### Failed checks and follow-ups + +- Full `nix flake check` remains blocked by the existing `cli-fmt` issue in `cli/src/generated_migrations.rs` near the generated auth migration array. Follow-up: in a separately approved scope, run `nix develop -c sh -c 'cd cli && cargo fmt'` (or repair the generated file through its intended generation owner), then rerun `nix flake check`. +- The opt-in full Flatpak source build exceeded the 45-minute task timeout after reaching the Rust build phase. Follow-up: rerun the same `nix run .#flatpak-build` command with a longer timeout or in an interactive developer environment when full Flatpak build evidence is required. +- `flatpak-builder-lint` was not available on PATH; the optional lint step was skipped by the validation command without failing the required static/AppStream checks. + +### Success-criteria verification + +- [x] Flatpak is documented as an official supported source-built channel in durable context (`context/sce/cli-first-install-channels-contract.md`, `context/overview.md`, `context/architecture.md`, `context/patterns.md`, `context/glossary.md`). +- [x] The checked-in manifest and metadata exist under `packaging/flatpak/` for application ID `dev.crocoder.sce` and expose the `sce` command plus AppStream `sce`; confirmed by static validation and AppStream validation. +- [x] The local build model uses a generated checkout-source manifest instead of a prebuilt binary; confirmed by `nix run .#flatpak-local-manifest`, `sce-flatpak.sh` validation, and static source-build assertions. +- [x] Nix-backed Flatpak entrypoints exist and validate: `flatpak-validate`, `flatpak-local-manifest`, `flatpak-build`, and `flatpak-static-validation`. +- [x] Stale wording/static prebuilt-artifact search found no current-state docs claiming Flatpak is out of scope and no Flatpak manifest/metadata/source files consuming prebuilt `sce` artifacts. +- [x] Temporary Flatpak artifacts introduced or discovered during validation were removed; final artifact check found no repo-local `.flatpak-builder*` paths. + +### Residual risks + +- Repository-level sign-off is not fully green until the existing `cli-fmt` blocker is fixed. +- Full Flatpak source-build completion remains unproven in this session due to timeout, although static validation, AppStream validation, local-manifest generation, and build invocation all reached expected stages. +- Pre-existing unrelated worktree changes remain untouched: `.gitignore` is modified and `claude/` is untracked. ## Open questions diff --git a/context/sce/cli-first-install-channels-contract.md b/context/sce/cli-first-install-channels-contract.md index 98b8a450..74a52f59 100644 --- a/context/sce/cli-first-install-channels-contract.md +++ b/context/sce/cli-first-install-channels-contract.md @@ -44,7 +44,7 @@ No other install channels are in scope for the current implementation stage. ## Implemented Flatpak packaging surface - The canonical checked-in Flatpak manifest is `packaging/flatpak/dev.crocoder.sce.yml`. -- The manifest currently uses `org.freedesktop.Platform` / `org.freedesktop.Sdk` runtime `25.08`, appends the `org.freedesktop.Sdk.Extension.rust-stable` toolchain, and runs `cargo --offline build --locked --release --manifest-path cli/Cargo.toml --bin sce` inside Flatpak. +- The manifest currently uses `org.freedesktop.Platform` / `org.freedesktop.Sdk` runtime `25.08`, appends the `org.freedesktop.Sdk.Extension.rust-stable` toolchain, and runs `cargo --offline build --release --manifest-path cli/Cargo.toml --bin sce` inside Flatpak. - The manifest prepares crate-local generated setup assets by running `scripts/prepare-cli-generated-assets.sh "$PWD"` before Cargo builds, preserving `config/` as the source of truth for generated assistant config inputs. - Flatpak Cargo dependency sources are checked in at `packaging/flatpak/cargo-sources.json`, generated from `cli/Cargo.lock`; crates.io dependencies are represented as `.crate` archives with lockfile SHA-256 checksums, and the Turso git dependency is represented as a pinned git source plus local path patches. - AppStream metadata lives at `packaging/flatpak/dev.crocoder.sce.metainfo.xml` and declares a console application with `sce`.