soon
The next command, before you type it.
A local-first terminal agent that predicts, repairs, and suggests your next full command.
Beta status: v0.5.0 ships the opt-in Zsh ghost-suggestion loop, the measured contextual policy as the local default, and optional model-backed Rerank, Repair, and explicit Generate paths. Interactive integration is supported on native Linux and macOS; other shells and packaged platforms remain experimental unless listed in the release contract.
Try the beta
Install the same v0.5.0 release through Cargo or PyPI:
cargo install soon
# or: python -m pip install soon-bin
Enable the integration for the current Zsh session:
eval "$(soon init zsh)"
At an empty prompt, soon computes in the background and renders one dim full-command suggestion. Press Ctrl-F to place it in the editable buffer, then review, edit, or run it yourself. Start typing to ignore it. soon never presses Enter for you.
The default prediction path uses local history, not a model or network service. It can choose a Next-step suggestion after success, a Repair suggestion after failure, or predict on demand when you run soon.
The v0.5.0 package defaults to the local contextual policy after it passed the replay promotion gate. Model-backed candidates remain disabled unless explicitly configured or requested with soon generate.
The idea
Your shell already knows what you typed. soon asks a different question: given the workflow you just followed, what complete command are you likely to run next?
The agent is a small local feedback loop:
- Observe the completed command and its result.
- Remember only safe, useful local context.
- Rank complete commands from recurring transitions.
- Render one editable ghost suggestion without blocking the prompt.
- Learn whether it was accepted, executed, or dismissed.
Why another shell tool?
| Tool category | You provide | It returns |
|---|---|---|
| History search, including Atuin and McFly | A query or key chord | A past command matching the search |
| Prefix autosuggestions in Fish or Zsh | The beginning of a command | A completion for that prefix |
| Prompt-driven command generation | A natural-language request | A newly generated command |
| soon's target interaction | An empty prompt after a familiar workflow | One predicted full command, locally |
soon is not trying to replace search or completion. The product succeeds only if accepting a correct prediction is faster than recalling and typing the command yourself.
Keep it enabled
Add the same eval line to ~/.zshrc. When no suggestion is visible, Ctrl-F keeps its previous behavior. To remove the hooks and restore the previous binding in the current session, run:
soon-disable
The last background prediction latency is available without printing command content:
print -r -- "$SOON_LAST_LATENCY_MS ms"
Cargo and PyPI are published together from one versioned tag. AUR and standalone binaries remain unsupported until they have tested artifact workflows. To install the current development branch instead:
cargo install --git https://github.com/HsiangNianian/soon
The supported interactive beta surface is Zsh on Linux and macOS. Other history parsers and packaged platforms remain on-demand or experimental. Maintainer guarantees are documented in RELEASING.md.
Use the current prototype
# Predict one full command from the detected shell history
soon
# Inspect the matching evidence
soon --debug
# Confirm which shell and history source were detected
soon which
# Show the most common executables in local history
soon stats
# Measure the current policy against past local transitions
soon replay
# Compare both policies, or switch back to the v0.4 fallback
soon config set prediction.policy v0.4-baseline
# Export aggregate adoption metrics that are safe to share
soon report
soon report --json
# Explicitly ask a configured OpenAI-compatible provider; never auto-executes
soon generate
Override shell detection when needed:
soon --shell zsh
The current source can parse Bash, Zsh, Fish, Nushell, Elvish, PowerShell, and tcsh history. Parsing a format does not mean interactive integration for that shell is complete.
What v0.5 ships
| Shipped surface | Release evidence |
|---|---|
| On-demand command plus opt-in Zsh loop | Clean-session install-to-uninstall smoke test |
| Manual, successful-command Next-step, and failed-command Repair triggers | Native Linux and macOS lifecycle regression coverage |
| Retained events plus chronological quality and latency replay | Deterministic fixture with a 20 ms Zsh p95 budget |
| Sensitive-command filters plus idempotent Zsh history import | Documented privacy behavior and aggregate-only inspection |
| Contextual ranking plus opt-in model candidate sources | Baseline comparison, mock providers, and a documented 0.5B evaluation |
The implementation plan lives in RFC #4. Work is tracked in the public Personal Terminal Agent Project.
How the current predictors work
The v0.4 baseline matches recurring transitions, preserves complete historical commands including arguments, and deterministically ranks result, directory, frequency, and recency evidence.
The contextual policy separates candidate retrieval from ranking, then combines first- and second-order transitions, cwd, optional repository and branch, original time, result, duration, frequency, recency, and accepted/executed feedback. Missing metadata contributes no evidence. Its additive smoothing, weights, debug contract, and deterministic tie-breaking are documented in Contextual prediction policy.
Optional local and OpenAI-compatible sources can rerank safe history candidates, suggest a Repair after failure, or Generate only on explicit request. They have a hard deadline and silently retain the deterministic result on timeout, unavailability, or invalid output. The default is prediction.model_mode = "off". The exact provider payload, output filters, ranking feature, and fallback protocol are documented in Optional model candidate sources.
The small local model gate tested Qwen2.5-Coder 0.5B Q4_K_M on an Intel Mac. It added one exact cold-start Repair across eight public fixtures at 676.2 ms p95, which was enough to validate the optional path but not enough quality evidence to enable it by default.
The v0.5.0 release promotes contextual after it improved exact top-1 without reducing coverage or exceeding the 20 ms p95 budget in both the deterministic fixture and a local aggregate replay. v0.4-baseline remains an explicit offline fallback.
Agent roadmap
The v0.4 Local Agent MVP combines safe command lifecycle events, explicit soon, Next-step after success, Repair after failure, a private history-import path, and measured local replay.
The closed v0.4.1 Adoption Sprint added the public demo, launch assets, and privacy-safe report. The planned ten-user pilot and final timed launch measurements were explicitly closed as not planned rather than reported as completed.
The completed v0.5 Hybrid Prediction Engine promotes the contextual probabilistic ranker from #16 and adds the opt-in local-model/OpenAI-compatible layer from #17. Model output is never required for the default hot path.
Privacy
With the default prediction.model_mode = "off", soon, soon now, soon replay, soon report, soon init zsh, and the local learning commands read files on your machine and do not require a network service. The Zsh integration invokes the predictor in a background process and does not block the prompt while waiting for a result. An opt-in model mode or explicit soon generate may contact only the configured provider.
The current source rejects likely inline API keys, tokens, authorization headers, password flags, private-key material, and known credential prefixes before storing a command or suggestion. It applies the same filter again before ranking or rendering shell history, old event data, legacy learn data, provider context, and model output. Rejections report a category, not the command text.
Add exact case-sensitive exclusions or regular-expression exclusions without editing stored data:
soon config set privacy.excluded_literals 'company-deploy --production'
soon config set privacy.excluded_patterns '(?i)^kubectl .*--context production'
Comma-separated values configure more than one exclusion. Literal values are redacted from soon config, config get, and successful config set output. Invalid regular expressions are rejected before the configuration is saved.
The v0.5 model candidate path sends at most six filtered commands, the current command and result class, and at most five local candidates to an OpenAI-compatible endpoint. It omits paths, repository metadata, event IDs, timestamps, duration, feedback, stdout, and stderr. Model output is filtered again for control characters, credentials, configured exclusions, and dangerous commands before entering the contextual ranker. The older soon learn ask experiment remains separate and includes the filtered current directory.
Provider credentials are read at request time from an environment variable and are never stored or printed by soon. The default variable is SOON_LLM_API_KEY; configure a different variable name with llm.api_key_env. For example, this Zsh flow keeps the value out of shell history:
soon config set llm.provider openai-compatible
soon config set llm.api_url https://provider.example/v1
read -rs 'SOON_LLM_API_KEY?API key: '
print
export SOON_LLM_API_KEY
A local OpenAI-compatible endpoint can run without a credential. The legacy llm.api_key setting is rejected.
The Zsh lifecycle integration stores local command and suggestion events in a retained JSONL log under the operating system's application-data directory. When cwd is inside a Git worktree, the background recorder also reads the repository root and symbolic branch directly from .git/HEAD; it does not spawn git. Inspect the store's exact path, schema version, retention, and aggregate counts without printing command text:
soon events inspect
The default retention is 10,000 events. It is user-controlled, and clearing requires explicit confirmation:
soon config set events.retention 5000
soon events clear --yes
Give a fresh profile useful event memory by previewing a Zsh history import first:
# Uses ~/.zsh_history
soon events import-zsh --preview
soon events import-zsh
# Or pass current and rotated files explicitly, oldest first
soon events import-zsh --preview \
--path ~/.zsh_history.1 \
--path ~/.zsh_history
soon events import-zsh \
--path ~/.zsh_history.1 \
--path ~/.zsh_history
Plain command-per-line history and Zsh extended history (: <epoch>:<duration>;<command>) are supported. Extended timestamps and durations are preserved; unavailable cwd, exit status, and plain-history timestamps remain unknown. Preview and import summaries report importable, sensitive, malformed, duplicate, and already-imported counts without printing command text. Stable event IDs make repeated imports idempotent, including identical rotated files.
Compare the v0.4 baseline and contextual policy against that local event memory:
soon replay
Replay follows JSONL append order rather than event timestamps. For each linked command transition it predicts first, scores the result, and only then exposes that transition to later samples, so future observations cannot leak into training. Unknown exit status is classified as manual; exit status zero is next-step; any other status is repair.
Samples counts eligible linked transitions. Coverage is predictions divided by samples, and top-1 match is exact command matches divided by all samples. Overall and per-trigger rows preserve the v0.4 baseline metrics. The policy comparison runs both baseline and contextual prediction through the same production module and reports coverage, top-1, p50, and p95 for each. Candidate-source rows retain the computed deterministic-history baseline and separately score other suggestions that were actually recorded before the next command. Model attempts aligned to a later command also report timeout, invalid-output, and deterministic-fallback rates.
The report is aggregate-only: it prints no command text and performs no upload. The deterministic CI fixture has a Zsh hot-path p95 budget of 20 ms. Replay also prints a contextual promotion gate that requires strictly better top-1, no coverage regression, and contextual p95 at or below that budget.
Export the smaller adoption report when sharing beta feedback:
soon report
soon report --json
This is an explicit, offline read of the same local event store. Both forms contain aggregate counters and latency distributions only—never raw commands, arguments, paths, hostnames, usernames, event IDs, timestamps, or database rows. The human form is designed for an issue or discussion; --json is suitable for scripts and uses schema version 2:
| JSON field | Meaning |
|---|---|
schema_version |
Report schema version; currently 2 |
samples.eligible_transitions |
Linked command transitions eligible for chronological replay |
samples.predictions |
Eligible transitions for which the deterministic replay produced a prediction |
samples.prediction_coverage_percent |
predictions / eligible_transitions * 100 |
suggestions.shown |
Retained suggestion events with the shown outcome |
suggestions.accepted |
Retained suggestion events with the accepted outcome |
suggestions.acceptance_percent |
accepted / shown * 100 |
suggestions.executed |
Retained suggestion events with the executed outcome |
suggestions.execution_percent |
executed / shown * 100 |
latency_ms.replay.samples |
Eligible transitions benchmarked by chronological replay |
latency_ms.replay.p50, latency_ms.replay.p95 |
Offline replay-computation percentiles in milliseconds |
latency_ms.suggestion.samples |
Valid shell-observed latency samples from shown events |
latency_ms.suggestion.p50, latency_ms.suggestion.p95 |
Shell-observed suggestion-result percentiles in milliseconds |
A percentage is null when its denominator is zero. Each latency distribution has an explicit sample count and returns null percentiles when that count is zero. Suggestion latency counts only valid non-negative shown rows, so later accepted, executed, or dismissed outcomes do not duplicate one displayed suggestion. Human output prints n/a for unavailable distributions.
Schema version 2 replaces the version 1 latency_ms.p50 and latency_ms.p95 fields with latency_ms.replay and latency_ms.suggestion. Use the suggestion distribution for user-facing adoption studies and the replay distribution for policy benchmarking.
Config lives at ~/.config/soon/config.toml:
soon config init
soon config path
soon config get general.ngram
soon config set general.ngram 5
soon config get prediction.policy
soon config set prediction.policy v0.4-baseline # explicit fallback
soon config get prediction.model_mode # off by default
soon config set prediction.model_mode repair # opt-in model path
soon config set prediction.model_timeout_ms 1500
soon config set update.channel cargo # or pip
Commands
soon Predict the next full command
soon now Run the same prediction explicitly
soon generate Explicitly request a model candidate
soon init zsh Print the opt-in Zsh integration
soon stats Show the most-used executables
soon which Show shell and history diagnostics
soon config View or change local configuration
soon events Inspect, clear, or import local agent events
soon replay Measure local prediction quality and latency
soon report Export privacy-safe aggregate adoption metrics
soon learn Use the experimental learning tools
soon update Check the configured release channel
Contributing
The accepted direction is recorded in RFC #4. The completed v0.5 Hybrid Prediction Engine delivered the contextual ranker in #16 and the opt-in model candidate layer in #17.
For local verification:
cargo fmt --check
cargo test --locked
cargo clippy --locked --all-targets -- -D warnings
cargo run --locked -- --help
License
MIT © 2025-present HsiangNianian
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file soon_bin-0.5.0.tar.gz.
File metadata
- Download URL: soon_bin-0.5.0.tar.gz
- Upload date:
- Size: 992.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81458b0ce22c16c9d85e6f26ae4672a9eeeeaf8404bdf300fe4bdd319296d3cc
|
|
| MD5 |
a838bece0aa88efbf2f76222172bc1b6
|
|
| BLAKE2b-256 |
9cb7ee670feb5dff9ea767cf2bba7a7e24af0b8e2497f3b3466f383e9dd038a6
|
File details
Details for the file soon_bin-0.5.0-py3-none-win_amd64.whl.
File metadata
- Download URL: soon_bin-0.5.0-py3-none-win_amd64.whl
- Upload date:
- Size: 2.6 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ebb3853b2bda8bd263e5c326098760eea857ec0a4567031f961d9e6f6c3bde9
|
|
| MD5 |
83cb52833b2755f59f21129fe628021e
|
|
| BLAKE2b-256 |
0a1664c26c631ab7e64fa99a4c88e26b39ab0d324d55cc529b875e260b968bfb
|
File details
Details for the file soon_bin-0.5.0-py3-none-win32.whl.
File metadata
- Download URL: soon_bin-0.5.0-py3-none-win32.whl
- Upload date:
- Size: 2.1 MB
- Tags: Python 3, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3811091c8a5e4d7651e5b9834f7ff517375c8af084266555712773870257c988
|
|
| MD5 |
f121778b897779baf1efd0dad90702c5
|
|
| BLAKE2b-256 |
923e9f804b88d7e22c2726bb93eceaba69ee71c30c9c9e432c951816dffc9fae
|
File details
Details for the file soon_bin-0.5.0-py3-none-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: soon_bin-0.5.0-py3-none-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 3.1 MB
- Tags: Python 3, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf1deb025e973cd0396e4b27d61a19cba64007be443baf587519f17132933fef
|
|
| MD5 |
00927fdd98194f68c8d6de1e2b22d73f
|
|
| BLAKE2b-256 |
ebddd44fbddee17c1d665984e0a670c92f8ce383435d17a296d0c645dc2e3ca4
|
File details
Details for the file soon_bin-0.5.0-py3-none-musllinux_1_2_i686.whl.
File metadata
- Download URL: soon_bin-0.5.0-py3-none-musllinux_1_2_i686.whl
- Upload date:
- Size: 3.0 MB
- Tags: Python 3, musllinux: musl 1.2+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc8971f2d9f59f1a301b1827711b32f6ea29dbf0b5d9192021d521cf276204f0
|
|
| MD5 |
cb8d5baff6140e719d062ebd930c06ca
|
|
| BLAKE2b-256 |
9af22a77837264664d1867c3604077d9af60d23bd8458a195796bc9a615b41f4
|
File details
Details for the file soon_bin-0.5.0-py3-none-musllinux_1_2_armv7l.whl.
File metadata
- Download URL: soon_bin-0.5.0-py3-none-musllinux_1_2_armv7l.whl
- Upload date:
- Size: 2.8 MB
- Tags: Python 3, musllinux: musl 1.2+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6c1076b5abe2d77242561551707472bdd858a91a1948adce4470859a6b93f57
|
|
| MD5 |
5ca052edf445bca9a6efdc6a358f3639
|
|
| BLAKE2b-256 |
fcf4ad7fe05f698d54765b436e418e92540476e49ae24f2e0f7744d0f0618f1b
|
File details
Details for the file soon_bin-0.5.0-py3-none-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: soon_bin-0.5.0-py3-none-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 3.0 MB
- Tags: Python 3, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
652e65390cc5792591b139efc4bd7b70ac07329228f9ffd9da32b47d18edaf91
|
|
| MD5 |
c8097728772aad4b4a0007b4c9e6fa2d
|
|
| BLAKE2b-256 |
fed0db6d070662b1112aed05592c019607e6b6aa2478f184ef224d8c030b16b7
|
File details
Details for the file soon_bin-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: soon_bin-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 3.0 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a0a7bff6a8a08cc77274533b5a3b3e3e469aa91daacb3e7b16f682e8521b89d
|
|
| MD5 |
0d2b45ceaa8898a8f815deb43e69067b
|
|
| BLAKE2b-256 |
ac0114591a4b43f1fe14e88e8894ef1255f1ebe7d401163738027d7a9f229bf0
|
File details
Details for the file soon_bin-0.5.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl.
File metadata
- Download URL: soon_bin-0.5.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
- Upload date:
- Size: 3.0 MB
- Tags: Python 3, manylinux: glibc 2.17+ s390x
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d9a96a9bfa4b82dbc97cc299f3be25d6589b190c58ba282e4431c3fc636bb97a
|
|
| MD5 |
a3eb2835f16180d9baa11c281bc39c81
|
|
| BLAKE2b-256 |
60d152802c3e566bf6b7e0a1b4603b52586b008c40c88ed0b9dc02046eea5114
|
File details
Details for the file soon_bin-0.5.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.
File metadata
- Download URL: soon_bin-0.5.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
- Upload date:
- Size: 3.4 MB
- Tags: Python 3, manylinux: glibc 2.17+ ppc64le
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f699a23a8bde17b3453a12832444294ed918fb3b15794ead4d9e2c50c65f0fb5
|
|
| MD5 |
1386bc61c22e7d807dca09087ecc16af
|
|
| BLAKE2b-256 |
1d1ec6022efc7fa556a061d4fe2ec1c55a32607f0114b3e5b890540e1568c954
|
File details
Details for the file soon_bin-0.5.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl.
File metadata
- Download URL: soon_bin-0.5.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 3.1 MB
- Tags: Python 3, manylinux: glibc 2.17+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ed10ab5203eaee5698e2448937704888c5436e8482c464b9f7b2e41401f9b14
|
|
| MD5 |
3d43385fcb787b82281e210a88a69f2e
|
|
| BLAKE2b-256 |
252322d6f4642ee07fc76ad0ef4d7771c24574880dd93b098fd90e47d8cb158f
|
File details
Details for the file soon_bin-0.5.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.
File metadata
- Download URL: soon_bin-0.5.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
- Upload date:
- Size: 2.8 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f784c4f71e5925aa7f70d487bce0c65146ebbcd42b8725eaaa2a9e503d69a077
|
|
| MD5 |
63c613e6d88a30fe47877f85ae37be89
|
|
| BLAKE2b-256 |
46fafb7fd74ecf188f33b5cf76c963613839bbdb98a8cd42f85ba57ff7a2b619
|
File details
Details for the file soon_bin-0.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: soon_bin-0.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 3.0 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b2e2357f67458b4cc983815a22169406b467aefd3252f5d73c72e8f41dd8935
|
|
| MD5 |
94c656b55c62c181a2cbd33331621b3c
|
|
| BLAKE2b-256 |
73901851eab170012bdc8d20e4d1aa58405b3ecb6386c3ffde3b1e2bf31826e7
|
File details
Details for the file soon_bin-0.5.0-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: soon_bin-0.5.0-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 2.8 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d9feadb07f15f5ebba73e89664f2955c456ceaa5e297ee9a4d5ad1ce77519c1
|
|
| MD5 |
65cc63513b618f8d16e32b7a7a9d2f78
|
|
| BLAKE2b-256 |
9e1f044d7c00100b36fd02f198492455d6fc1ebfa55140889fdfa61482e954a6
|